Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/MaxwellCohen/solid-free-chat.
Something went wrong. Try again.
1.2 kB · 35 lines
TypeScript
at main
123456789101112131415161718192021222324252627282930313233343536export const THEME_STORAGE_KEY = 'solid-free-chat-theme'
export type ThemePreference = 'light' | 'dark' | 'system'
export function readStoredPreference(): ThemePreference { if (typeof window === 'undefined') return 'system' try { const raw = localStorage.getItem(THEME_STORAGE_KEY) if (raw === 'light' || raw === 'dark' || raw === 'system') return raw } catch { /* ignore */ } return 'system'}
export function writeStoredPreference(pref: ThemePreference) { if (typeof window === 'undefined') return try { localStorage.setItem(THEME_STORAGE_KEY, pref) } catch { /* ignore */ }}
export function resolveEffectiveTheme( pref: ThemePreference, systemPrefersDark: boolean,): 'light' | 'dark' { if (pref === 'dark') return 'dark' if (pref === 'light') return 'light' return systemPrefersDark ? 'dark' : 'light'}
/** Runs before the app bundle; keep logic in sync with resolveEffectiveTheme. */export const THEME_INLINE_INIT_SCRIPT = `;(function(){try{var k=${JSON.stringify(THEME_STORAGE_KEY)};var t=localStorage.getItem(k);var d=t==="dark"||(t!=="light"&&window.matchMedia("(prefers-color-scheme: dark)").matches);document.documentElement.classList.toggle("dark",d);}catch(e){}})();`