▍ humdrum codex / soft
579 B raw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
export const THEMES = ["flexoki", "uchu", "humdrum"] as const;
export const MODES = ["auto", "light", "dark", "eink"] as const;

export type Theme = (typeof THEMES)[number];
export type Mode = (typeof MODES)[number];

export function resolveTheme(theme: Theme, mode: Mode): string {
  const prefersDark =
    typeof window !== "undefined" &&
    window.matchMedia("(prefers-color-scheme: dark)").matches;

  if (mode === "eink") return "eink";
  if (mode === "dark") return `${theme}-dark`;
  if (mode === "light") return theme;
  return prefersDark ? `${theme}-dark` : theme;
}