"use client" import { createContext, useContext, useEffect, useState } from "react" type Theme = "light" | "dark" interface ThemeContextValue { theme: Theme toggle: () => void } const ThemeContext = createContext({ theme: "dark", toggle: () => {}, }) export function useTheme() { return useContext(ThemeContext) } export default function ThemeProvider({ children }: { children: React.ReactNode }) { const [theme, setTheme] = useState("dark") const [mounted, setMounted] = useState(false) useEffect(() => { // Read from localStorage, fall back to system preference const stored = localStorage.getItem("food-theme") as Theme | null if (stored === "light" || stored === "dark") { setTheme(stored) } else { const prefersDark = window.matchMedia("(prefers-color-scheme: dark)").matches setTheme(prefersDark ? "dark" : "light") } setMounted(true) }, []) useEffect(() => { if (!mounted) return const root = document.documentElement if (theme === "dark") { root.classList.add("dark") } else { root.classList.remove("dark") } localStorage.setItem("food-theme", theme) }, [theme, mounted]) const toggle = () => setTheme((t) => (t === "dark" ? "light" : "dark")) return ( {children} ) }