// https://web.dev/building-a-theme-switch-component/ const storageKey = 'theme-preference' const getColorPreference = () => { if (localStorage.getItem(storageKey)) return localStorage.getItem(storageKey) else return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light' } const setPreference = () => { localStorage.setItem(storageKey, theme.value) reflectPreference() } window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', ({matches:isDark}) => { theme.value = isDark ? 'dark' : 'light' setPreference() })