Files
milkblogs-fuwari/src/utils/setting-utils.ts
T
ZyPLJ 4c0618b677 fix(utils): replace map with forEach to resolve biome lint error | 解决Github Action Biome 代码检查错误 (#601)
* fix(utils): replace map with forEach to resolve biome lint error

* fix(utils): replace map with forEach in getCategoryList for clarity

* fix(utils): specify radix parameter in Number.parseInt for clarity

---------

Co-authored-by: L4Ph <me@l4ph.moe>
2025-08-21 17:44:33 +09:00

62 lines
1.6 KiB
TypeScript

import {
AUTO_MODE,
DARK_MODE,
DEFAULT_THEME,
LIGHT_MODE,
} from "@constants/constants.ts";
import { expressiveCodeConfig } from "@/config";
import type { LIGHT_DARK_MODE } from "@/types/config";
export function getDefaultHue(): number {
const fallback = "250";
const configCarrier = document.getElementById("config-carrier");
return Number.parseInt(configCarrier?.dataset.hue || fallback, 10);
}
export function getHue(): number {
const stored = localStorage.getItem("hue");
return stored ? Number.parseInt(stored, 10) : getDefaultHue();
}
export function setHue(hue: number): void {
localStorage.setItem("hue", String(hue));
const r = document.querySelector(":root") as HTMLElement;
if (!r) {
return;
}
r.style.setProperty("--hue", String(hue));
}
export function applyThemeToDocument(theme: LIGHT_DARK_MODE) {
switch (theme) {
case LIGHT_MODE:
document.documentElement.classList.remove("dark");
break;
case DARK_MODE:
document.documentElement.classList.add("dark");
break;
case AUTO_MODE:
if (window.matchMedia("(prefers-color-scheme: dark)").matches) {
document.documentElement.classList.add("dark");
} else {
document.documentElement.classList.remove("dark");
}
break;
}
// Set the theme for Expressive Code
document.documentElement.setAttribute(
"data-theme",
expressiveCodeConfig.theme,
);
}
export function setTheme(theme: LIGHT_DARK_MODE): void {
localStorage.setItem("theme", theme);
applyThemeToDocument(theme);
}
export function getStoredTheme(): LIGHT_DARK_MODE {
return (localStorage.getItem("theme") as LIGHT_DARK_MODE) || DEFAULT_THEME;
}