16 lines
578 B
JavaScript
16 lines
578 B
JavaScript
/** 同一套规则用于首屏内联启动和运行时切换,避免两次绘制使用不同主题。 */
|
|
export function applyTheme(mode) {
|
|
if (mode === undefined) {
|
|
try {
|
|
mode = localStorage.getItem("theme");
|
|
} catch {}
|
|
}
|
|
if (mode !== "light" && mode !== "dark") mode = "auto";
|
|
const dark =
|
|
mode === "dark" ||
|
|
(mode === "auto" && matchMedia("(prefers-color-scheme: dark)").matches);
|
|
document.documentElement.classList.toggle("app-dark", dark);
|
|
document.documentElement.style.colorScheme = dark ? "dark" : "light";
|
|
return { mode, dark };
|
|
}
|