From d9b9afbf5c99dfb18f742810d2f6f3f1cd2b082e Mon Sep 17 00:00:00 2001 From: Mannu Date: Sun, 10 May 2026 11:34:00 +0530 Subject: [PATCH] Add menu navigation, sun/moon toggle, baby favicon --- public/icon.svg | 6 ++++ src/app/layout.tsx | 8 ++--- src/app/menu/page.tsx | 82 +++++++++++++++++++++++++++++++++++++++++++ src/app/page.tsx | 32 ++++++++++++++--- 4 files changed, 120 insertions(+), 8 deletions(-) create mode 100644 public/icon.svg create mode 100644 src/app/menu/page.tsx diff --git a/public/icon.svg b/public/icon.svg new file mode 100644 index 0000000..d9b4d36 --- /dev/null +++ b/public/icon.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 825896c..8971b6d 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -16,10 +16,10 @@ export const metadata: Metadata = { title: "Tia - Baby Tracking", description: "Your baby tracking companion", manifest: "/manifest.json", - icons: [ - { url: "/icon-192.png", sizes: "192x192", type: "image/png" }, - { url: "/icon-512.png", sizes: "512x512", type: "image/png" }, - ], + icons: { + icon: "/icon.svg", + apple: "/icon.svg", + }, }; export default function RootLayout({ diff --git a/src/app/menu/page.tsx b/src/app/menu/page.tsx new file mode 100644 index 0000000..1dbac2f --- /dev/null +++ b/src/app/menu/page.tsx @@ -0,0 +1,82 @@ +"use client"; + +import { useState, useEffect } from "react"; +import Link from "next/link"; +import { useRouter } from "next/navigation"; + +export default function MenuPage() { + const router = useRouter(); + const [darkMode, setDarkMode] = useState(false); + + useEffect(() => { + const saved = localStorage.getItem("tia_theme"); + if (saved === "dark") { + setDarkMode(true); + } + }, []); + + const toggleDarkMode = () => { + const next = !darkMode; + setDarkMode(next); + localStorage.setItem("tia_theme", next ? "dark" : "light"); + if (next) { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + }; + + const menuItems = [ + { icon: "🏠", label: "Home", href: "/" }, + { icon: "📊", label: "Activity", href: "/activity" }, + { icon: "📈", label: "Growth", href: "/growth" }, + { icon: "💊", label: "Medical", href: "/medical" }, + { icon: "📸", label: "Memories", href: "/memories" }, + { icon: "🤖", label: "AI Chat", href: "/ai" }, + ]; + + return ( +
+ {/* Header */} +
+

Menu

+ +
+ + {/* Menu Items */} +
+ {menuItems.map((item) => ( + + {item.icon} + {item.label} + + ))} +
+ + {/* Bottom Section */} +
+ {/* Dark Mode Toggle */} + + + {/* Settings */} + + ⚙️ + Settings + +
+
+ ); +} \ No newline at end of file diff --git a/src/app/page.tsx b/src/app/page.tsx index 936b634..8a23564 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -177,9 +177,29 @@ export default function HomePage() { const [childId] = useState("5ad3b16a-1e0d-45ab-bc91-038397d75d0a"); const [pendingCount, setPendingCount] = useState(0); const [lastLogs, setLastLogs] = useState([]); + const [darkMode, setDarkMode] = useState(false); const child = { name: "Baby Tia", birthDate: "2024-01-15" }; + useEffect(() => { + const saved = localStorage.getItem("tia_theme"); + if (saved === "dark") { + setDarkMode(true); + document.documentElement.classList.add("dark"); + } + }, []); + + const toggleDarkMode = () => { + const next = !darkMode; + setDarkMode(next); + localStorage.setItem("tia_theme", next ? "dark" : "light"); + if (next) { + document.documentElement.classList.add("dark"); + } else { + document.documentElement.classList.remove("dark"); + } + }; + useEffect(() => { const queue = getOfflineQueue(); setPendingCount(queue.length); @@ -217,12 +237,16 @@ export default function HomePage() { -