"use client"; import { createContext, useContext, useEffect, useState, ReactNode } from "react"; type Theme = "light" | "dark"; interface ThemeContextType { theme: Theme; toggleTheme: () => void; } const ThemeContext = createContext({ theme: "light", toggleTheme: () => {}, }); export function useTheme() { return useContext(ThemeContext); } export default function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState("light"); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); const stored = localStorage.getItem("taskteam_theme") as Theme | null; if (stored) { setTheme(stored); } else if (window.matchMedia("(prefers-color-scheme: dark)").matches) { setTheme("dark"); } }, []); useEffect(() => { if (!mounted) return; document.documentElement.classList.toggle("dark", theme === "dark"); localStorage.setItem("taskteam_theme", theme); }, [theme, mounted]); function toggleTheme() { setTheme((prev) => (prev === "light" ? "dark" : "light")); } if (!mounted) { return <>{children}; } return ( {children} ); }