+ {
+ sidebar && (
+
+ )
+ }
+ {
+ sidebar && (
+
+ )
+ }
+
+ {/* OVERLAY — mobile pe sidebar ke bahar click karne par close */}
+
+
+
This is my fallback content, if there is no child passed into slot
+
+
+
+
+
+
diff --git a/src/layouts/common/Header.astro b/src/layouts/common/Header.astro
index fc810e4b..67ebd0c3 100755
--- a/src/layouts/common/Header.astro
+++ b/src/layouts/common/Header.astro
@@ -1,8 +1,104 @@
---
import "@/assets/styles/header.css";
-import { APP_NAME } from "@/utils/constants";
+import { APP_NAME, NavbarLinks } from "@/utils/constants";
+import { DATASET } from "@/mappers/dataset";
+import { gamesData } from "@/data/gamesData";
import { Picture } from "astro:assets";
import logoImage from "/public/assets/images/48x48.png";
+import stateData from "@/data/state.json";
+import glossaryData from "@/data/glossary.json";
+import numberData from "@/data/numbers.json";
+
+const navItems = NavbarLinks.filter((l) => l.isActive).map((l) => ({
+ name: l.name || l.title || "",
+ path: l.path,
+ type: "page",
+ sub: ""
+}));
+
+const alphabetItems = Object.keys(DATASET).map((key) => ({
+ name: key.charAt(0).toUpperCase() + key.slice(1),
+ path: `/alphabets/${key}/playground/`,
+ type: "alphabet",
+ sub: DATASET[key].description || ""
+}));
+
+const gameItems = Object.values(gamesData)
+ .flat()
+ .map((game) => ({
+ name: game.title,
+ path: game.link,
+ type: "game",
+ sub: game.description || ""
+ }));
+
+const stateItems = stateData
+ .filter((s) => s.isActive)
+ .flatMap((s) => [
+ { name: s.name, path: `/map/${s.id}`, type: "state", sub: s.capital ? `Capital: ${s.capital}` : "" },
+ { name: s.dance, path: `/map/${s.id}`, type: "dance", sub: `State: ${s.name}` },
+ ...(s.festival ? [{ name: s.festival, path: `/map/${s.id}`, type: "festival", sub: `State: ${s.name}` }] : []),
+ ...(s.capital ? [{ name: s.capital, path: `/map/${s.id}`, type: "capital", sub: `Capital of ${s.name}` }] : []),
+ ...(s.famous_food ? [{ name: s.famous_food, path: `/map/${s.id}`, type: "food", sub: `Food of ${s.name}` }] : []),
+ ...(s.famous_place
+ ? [{ name: s.famous_place, path: `/map/${s.id}`, type: "place", sub: `Place in ${s.name}` }]
+ : [])
+ ]);
+
+const glossaryItems = Object.entries(glossaryData).map(([key, val]) => ({
+ name: val.title || key.charAt(0).toUpperCase() + key.slice(1),
+ path: `/glossary/${key}`,
+ type: "glossary",
+ sub: val.description || ""
+}));
+
+const numberItems = Object.entries(numberData).map(([key, val]) => ({
+ name: val.title || key.charAt(0).toUpperCase() + key.slice(1),
+ path: `/numbers/${key}`,
+ type: "numbers",
+ sub: val.description || ""
+}));
+
+const varnmalaItems = [
+ { name: "Varnmala Hindi", path: "/varnmala/hindi", type: "varnmala", sub: "Hindi Varnmala" },
+ { name: "Varnmala English", path: "/varnmala/english", type: "varnmala", sub: "English Varnmala" },
+ { name: "Varnmala Listen", path: "/varnmala/listen", type: "varnmala", sub: "Listen & Learn" },
+ { name: "Varnmala Play", path: "/varnmala/play", type: "varnmala", sub: "Play & Learn" },
+ { name: "Varnmala Write", path: "/varnmala/write", type: "varnmala", sub: "Write Practice" },
+ { name: "Barahkhadi", path: "/varnmala/barahkhadi", type: "varnmala", sub: "Hindi Barahkhadi" }
+];
+
+const galleryItems = [
+ { name: "Gallery Queue", path: "/gallery/queue", type: "gallery", sub: "Queue Gallery" },
+ { name: "Gallery Slider", path: "/gallery/slider", type: "gallery", sub: "Slider Gallery" },
+ { name: "Gallery Stack", path: "/gallery/stack", type: "gallery", sub: "Stack Gallery" }
+];
+
+const canvasItems = [
+ { name: "Canvas Draw", path: "/canvas", type: "canvas", sub: "Drawing Canvas" },
+ { name: "Canvas Quote", path: "/canvas/quote", type: "canvas", sub: "Quote Canvas" },
+ { name: "Canvas Text", path: "/canvas/text", type: "canvas", sub: "Text Canvas" }
+];
+
+const hidenseekItems = [
+ { name: "Hide N Seek Grid", path: "/hidenseek", type: "hidenseek", sub: "Grid Game" },
+ { name: "Hide N Seek KBD", path: "/hidenseek/kbd", type: "hidenseek", sub: "Keyboard Game" }
+];
+
+const allSearchItems = [
+ ...gameItems,
+ ...alphabetItems,
+ ...stateItems,
+ ...glossaryItems,
+ ...numberItems,
+ ...varnmalaItems,
+ ...galleryItems,
+ ...canvasItems,
+ ...hidenseekItems,
+ ...navItems
+];
+
+const allSearchItemsJSON = JSON.stringify(allSearchItems);
---
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pages/contact.astro b/src/pages/contact.astro
index 407f98da..43f15ca0 100644
--- a/src/pages/contact.astro
+++ b/src/pages/contact.astro
@@ -3,66 +3,526 @@ import "@/assets/styles/contact.css";
import BaseLayout from "@/layouts/Base";
import TitleLayout from "@/layouts/TitleLayout";
import Back from "@/components/Back.astro";
-import CopyIcon from "@/assets/icons/copy.svg";
-import GitHubIcon from "@/assets/icons/github.svg";
-
-const meta = {
- title: "Contact Us",
- description:
- "Reach out to the abcdkbd team via email or connect with us on GitHub to collaborate or provide feedback."
-};
+import bannerImg from "@/assets/screenshots/light/contact-banner.png";
---
-
-
-
-
-