import { useState, useEffect } from 'react'; type Theme = 'light' | 'dark' | 'system'; export function useTheme() { const [theme, setTheme] = useState(() => { if (typeof window === 'undefined') return 'dark'; return (localStorage.getItem('miokit-webui-theme') as Theme | null) ?? 'dark'; }); useEffect(() => { const root = document.documentElement; if (theme === 'dark') { root.classList.add('dark'); } else if (theme === 'light') { root.classList.remove('dark'); } else { const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)'); if (mediaQuery.matches) { root.classList.add('dark'); } else { root.classList.remove('dark'); } } localStorage.setItem('miokit-webui-theme', theme); }, [theme]); const toggleTheme = () => { setTheme((prev) => { if (prev === 'light') return 'dark'; if (prev === 'dark') return 'light'; return document.documentElement.classList.contains('dark') ? 'light' : 'dark'; }); }; const isDark = theme === 'dark' || (theme === 'system' && typeof window !== 'undefined' && window.matchMedia('(prefers-color-scheme: dark)').matches); return { theme, setTheme, toggleTheme, isDark }; }