'use client'; import { createContext, useContext, useEffect, useState } from 'react'; const ThemeContext = createContext(null); export function ThemeProvider({ children }) { const [theme, setTheme] = useState('dark'); const [mounted, setMounted] = useState(false); // On mount: read saved preference, else fall back to system preference. useEffect(() => { const saved = window.localStorage.getItem('rm-theme'); if (saved === 'light' || saved === 'dark') { setTheme(saved); } else if (window.matchMedia('(prefers-color-scheme: light)').matches) { setTheme('light'); } setMounted(true); }, []); // Reflect theme on class + persist. useEffect(() => { const root = document.documentElement; root.classList.remove('light', 'dark'); root.classList.add(theme); window.localStorage.setItem('rm-theme', theme); }, [theme]); const toggleTheme = () => setTheme((t) => (t === 'dark' ? 'light' : 'dark')); return ( {children} ); } export function useTheme() { const ctx = useContext(ThemeContext); if (!ctx) throw new Error('useTheme must be used within ThemeProvider'); return ctx; }