import * as React from "react"; type Theme = "dark" | "light"; interface ThemeCtx { theme: Theme; toggle: () => void; } const ThemeContext = React.createContext({ theme: "dark", toggle: () => {} }); export function ThemeProvider({ children }: { children: React.ReactNode }) { const [theme, setTheme] = React.useState(() => { const saved = localStorage.getItem("gridlock-theme") as Theme | null; return saved ?? "dark"; }); React.useEffect(() => { const root = document.documentElement; root.classList.remove("dark", "light"); root.classList.add(theme); localStorage.setItem("gridlock-theme", theme); }, [theme]); const toggle = React.useCallback( () => setTheme((t) => (t === "dark" ? "light" : "dark")), [] ); return ( {children} ); } export const useTheme = () => React.useContext(ThemeContext);