30 lines
563 B
TypeScript
30 lines
563 B
TypeScript
import type { Theme } from "./theme";
|
|
|
|
export type ResolvedTheme = "light" | "dark";
|
|
|
|
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;
|
|
}
|