'use client'; import { useCallback, useEffect, useState } from 'react'; type Theme = 'light' | 'dark'; function readTheme(): Theme { if (typeof window === 'undefined') return 'dark'; const stored = localStorage.getItem('theme'); if (stored === 'dark' || stored === 'light') return stored; return 'dark'; } export function useTheme() { const [theme, setThemeState] = useState('dark'); useEffect(() => { setThemeState(readTheme()); }, []); const setTheme = useCallback((next: Theme) => { setThemeState(next); try { localStorage.setItem('theme', next); } catch { /* ignore */ } const root = document.documentElement; if (next === 'dark') root.classList.add('dark'); else root.classList.remove('dark'); }, []); const toggle = useCallback(() => { setTheme(theme === 'dark' ? 'light' : 'dark'); }, [theme, setTheme]); return { theme, setTheme, toggle }; }