'use client'; import { useEffect, useState } from 'react'; import { Moon, Sun } from 'lucide-react'; type Theme = 'light' | 'dark'; function applyTheme(t: Theme) { document.documentElement.setAttribute('data-theme', t); try { localStorage.setItem('ri-theme', t); } catch { /* ignore */ } } export function ThemeToggle({ className }: { className?: string }) { const [theme, setTheme] = useState('light'); useEffect(() => { const attr = document.documentElement.getAttribute('data-theme') as Theme | null; if (attr) setTheme(attr); else setTheme(window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'); }, []); return ( ); } /** Inline script: apply the stored theme before paint to avoid flashes. */ export const THEME_SCRIPT = `(function(){try{var t=localStorage.getItem('ri-theme');if(t==='dark'||t==='light'){document.documentElement.setAttribute('data-theme',t);}}catch(e){}})();`;