import { useEffect, useMemo, useState } from "preact/hooks"; import { applyThemeToDocument, DEFAULT_THEME, getStoredThemeName, THEME_OPTIONS, THEME_STORAGE_KEY, type ThemeName, } from "./themes"; export function useThemePreference() { const [themeName, setThemeName] = useState(() => { if (typeof window === "undefined") return DEFAULT_THEME; return getStoredThemeName(); }); useEffect(() => { applyThemeToDocument(themeName); window.localStorage.setItem(THEME_STORAGE_KEY, themeName); }, [themeName]); return useMemo( () => ({ themeName, themeOptions: THEME_OPTIONS, setThemeName, }), [themeName], ); }