"use client"; import { createContext, useContext, useEffect, useState, type ReactNode } from "react"; type Theme = "light" | "dark"; interface ThemeCtx { theme: Theme; toggle: () => void; setTheme: (t: Theme) => void; } const Ctx = createContext(null); const KEY = "ip-theme"; export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState("light"); useEffect(() => { const saved = localStorage.getItem(KEY) as Theme | null; const initial = saved === "dark" || saved === "light" ? saved : "light"; setTheme(initial); document.documentElement.classList.toggle("dark", initial === "dark"); }, []); useEffect(() => { document.documentElement.classList.toggle("dark", theme === "dark"); localStorage.setItem(KEY, theme); }, [theme]); return ( setTheme((p) => (p === "light" ? "dark" : "light")), setTheme }}> {children} ); } export function useTheme() { const c = useContext(Ctx); if (!c) throw new Error("useTheme must be within ThemeProvider"); return c; }