/** * Darstellung (hell/dunkel). "system" folgt der Einstellung des Geraets * (prefers-color-scheme, siehe globals.css) und wird NICHT als Cookie * gespeichert — nur eine ausdrueckliche Wahl landet im Cookie, damit der * Server data-theme gleich richtig ausliefert und nichts hell aufblitzt. */ export type ThemeChoice = "light" | "dark" | "system"; export const THEME_COOKIE = "theme"; export const THEME_COOKIE_MAX_AGE = 60 * 60 * 24 * 365; const CYCLE: ThemeChoice[] = ["system", "light", "dark"]; /** Cookie-Wert pruefen: alles ausser "light"/"dark" gilt als "system". */ export function parseThemeChoice(value: string | undefined): ThemeChoice { return value === "light" || value === "dark" ? value : "system"; } export function nextThemeChoice(current: ThemeChoice): ThemeChoice { return CYCLE[(CYCLE.indexOf(current) + 1) % CYCLE.length]; }