Files
dyolink/frontend/src/lib/theme.ts

31 lines
760 B
TypeScript

export const THEME_STORAGE_KEY = 'dyolink-theme';
export type ThemeMode = 'light' | 'dark';
export function getStoredTheme(): ThemeMode {
if (typeof window === 'undefined') return 'dark';
try {
const v = localStorage.getItem(THEME_STORAGE_KEY);
if (v === 'light' || v === 'dark') return v;
} catch {
/* ignore */
}
return 'dark';
}
export function applyTheme(mode: ThemeMode) {
if (typeof document === 'undefined') return;
document.documentElement.setAttribute('data-theme', mode);
try {
localStorage.setItem(THEME_STORAGE_KEY, mode);
} catch {
/* ignore */
}
}
export function toggleTheme(): ThemeMode {
const next: ThemeMode = getStoredTheme() === 'dark' ? 'light' : 'dark';
applyTheme(next);
return next;
}