/* Persisted dark / light switch. Honours the OS preference on first visit. */ function ThemeToggle() { const [dark, setDark] = React.useState(() => { try { const saved = localStorage.getItem('zavifx-theme'); if (saved) return saved === 'dark'; } catch (e) { /* storage blocked */ } return window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; }); React.useEffect(() => { const root = document.documentElement; if (dark) root.setAttribute('data-theme', 'dark'); else root.removeAttribute('data-theme'); try { localStorage.setItem('zavifx-theme', dark ? 'dark' : 'light'); } catch (e) { /* ignore */ } }, [dark]); return ( ); } Object.assign(window, { ThemeToggle });