import type { Theme } from "./theme"; export type ResolvedTheme = "light" | "dark"; export type ThemeQueryMode = "light" | "dark" | "system"; export function parseThemeQuery(value: string | null | undefined): ThemeQueryMode | null { if (!value) { return null; } const normalized = value.toLowerCase(); if (normalized === "light" || normalized === "dark") { return normalized; } if (normalized === "auto" || normalized === "system") { return "system"; } return null; } export function resolveStoredTheme( theme: Theme, prefersDark: boolean, ): ResolvedTheme { if (theme === "system") { return prefersDark ? "dark" : "light"; } return theme; } export function resolveIncomingThemeMode( mode: unknown, prefersDark: boolean, ): ResolvedTheme | null { if (mode === "light" || mode === "dark") { return mode; } if (mode === "auto" || mode === "system") { return prefersDark ? "dark" : "light"; } return null; }