import { useState, useCallback, useEffect } from 'react'; type Theme = 'dark' | 'light'; const STORAGE_KEY = 'kcg:theme'; const DEFAULT_THEME: Theme = 'dark'; function readStoredTheme(): Theme { try { const stored = localStorage.getItem(STORAGE_KEY); if (stored === 'dark' || stored === 'light') return stored; } catch { // localStorage unavailable } return DEFAULT_THEME; } function applyTheme(theme: Theme) { document.documentElement.dataset.theme = theme; } export function useTheme() { const [theme, setThemeState] = useState(() => { const t = readStoredTheme(); applyTheme(t); return t; }); useEffect(() => { applyTheme(theme); }, [theme]); const setTheme = useCallback((t: Theme) => { setThemeState(t); try { localStorage.setItem(STORAGE_KEY, t); } catch { // localStorage unavailable } }, []); const toggleTheme = useCallback(() => { setTheme(theme === 'dark' ? 'light' : 'dark'); }, [theme, setTheme]); return { theme, setTheme, toggleTheme } as const; }