"use client"; import type React from "react"; import { createContext, useContext, useEffect, useState } from "react"; type Theme = "light" | "dark"; type ThemeContextType = { theme: Theme; toggleTheme: () => void; }; const ThemeContext = createContext(undefined); export function ThemeProvider({ children }: { children: React.ReactNode }) { const [theme, setTheme] = useState("dark"); const [mounted, setMounted] = useState(false); useEffect(() => { setMounted(true); const savedTheme = localStorage.getItem("theme") as Theme | null; if (savedTheme) { setTheme(savedTheme); } }, []); useEffect(() => { if (mounted) { const root = document.documentElement; if (theme === "dark") { root.classList.add("dark"); } else { root.classList.remove("dark"); } localStorage.setItem("theme", theme); } }, [theme, mounted]); const toggleTheme = () => { setTheme((prev) => (prev === "dark" ? "light" : "dark")); }; return ( {children} ); } export function useTheme() { const context = useContext(ThemeContext); if (context === undefined) { throw new Error("useTheme must be used within a ThemeProvider"); } return context; }