"use client"; import { createContext, useContext, useEffect, useState, ReactNode } from "react"; type Theme = "light" | "dark"; interface ThemeContextType { theme: Theme; toggleTheme: () => void; setTheme: (t: Theme) => void; } const ThemeContext = createContext({ theme: "light", toggleTheme: () => {}, setTheme: () => {}, }); export function useTheme() { return useContext(ThemeContext); } export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setThemeState] = useState("light"); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); const saved = localStorage.getItem("theme") as Theme | null; if (saved === "dark" || saved === "light") { setThemeState(saved); document.documentElement.classList.toggle("dark", saved === "dark"); } }, []); const setTheme = (t: Theme) => { setThemeState(t); localStorage.setItem("theme", t); document.documentElement.classList.toggle("dark", t === "dark"); }; const toggleTheme = () => { setTheme(theme === "light" ? "dark" : "light"); }; if (!mounted) { return
{children}
; } return ( {children} ); }