'use client' import {Capacitor} from '@capacitor/core' import {StatusBar, Style} from '@capacitor/status-bar' import {useEffect} from 'react' import {usePersistentLocalState} from './use-persistent-local-state' type theme_option = 'light' | 'dark' | 'auto' export const useTheme = () => { const [themeState, setThemeState] = usePersistentLocalState('auto', 'theme') const setTheme = (theme: theme_option) => { setThemeState(theme) reRenderTheme() } return {theme: themeState, setTheme} } export const useThemeManager = () => { useEffect(() => { reRenderTheme() const darkQuery = window.matchMedia('(prefers-color-scheme: dark)') darkQuery.addEventListener('change', reRenderTheme) return () => darkQuery.removeEventListener('change', reRenderTheme) }, []) } // NOTE: If you change anything about how this works, make sure init-theme.js is also changed. // Here is how the theme works on a fresh load. // 1. HTML is sent to the client. An inline