import { createContext, useContext, useState, useEffect, type ReactNode } from "react"; import { createElement } from "react"; type Theme = "dark" | "light"; interface ThemeCtx { theme: Theme; toggle: () => void; } const ThemeContext = createContext({ theme: "dark", toggle: () => {} }); export function ThemeProvider({ children }: { children: ReactNode }) { const [theme, setTheme] = useState(() => { return (localStorage.getItem("rh_theme") as Theme) ?? "dark"; }); useEffect(() => { document.documentElement.dataset.theme = theme; localStorage.setItem("rh_theme", theme); }, [theme]); const toggle = () => setTheme((t) => (t === "dark" ? "light" : "dark")); return createElement(ThemeContext.Provider, { value: { theme, toggle } }, children); } export function useTheme(): ThemeCtx { return useContext(ThemeContext); }