mirror of
https://gitee.com/huanghongxun/HMCL-docs.git
synced 2025-12-14 03:12:40 +08:00
71 lines
2.2 KiB
JavaScript
71 lines
2.2 KiB
JavaScript
---
|
|
layout: null
|
|
---
|
|
window.addEventListener("DOMContentLoaded", function () {
|
|
var skinLink = document.getElementById("skin");
|
|
var darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
|
function applyDarkSkin() {
|
|
skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + settings.get("appearance_skin_dark", "dark") + ".css";
|
|
}
|
|
function applyLightSkin() {
|
|
skinLink.href = "{{ '/assets/css/skins/' | relative_url }}" + settings.get("appearance_skin_light", "default") + ".css";
|
|
}
|
|
function autoSchemeHandler() {
|
|
if (darkModeQuery.matches) {
|
|
applyDarkSkin();
|
|
} else {
|
|
applyLightSkin();
|
|
}
|
|
}
|
|
var activeModeIndex = 0;
|
|
var modeKeys = ["light", "dark", "auto"];
|
|
var modeLabels = ["亮色", "暗色", "自动"];
|
|
|
|
var menuList = document.querySelector(".masthead .visible-links");
|
|
var modeSwitcher = null;
|
|
if (menuList) {
|
|
modeSwitcher = document.createElement("a");
|
|
modeSwitcher.className = "masthead__menu-item";
|
|
modeSwitcher.textContent = modeLabels[activeModeIndex];
|
|
modeSwitcher.href = "javascript:;";
|
|
modeSwitcher.onclick = function () {
|
|
var nextIndex = (activeModeIndex + 1) % modeKeys.length;
|
|
settings.set("appearance_color", modeKeys[nextIndex]);
|
|
}
|
|
menuList.appendChild(modeSwitcher);
|
|
}
|
|
function applyTheme(mode) {
|
|
var newIndex = modeKeys.indexOf(mode);
|
|
if (newIndex < 0) newIndex = 0;
|
|
|
|
if (modeKeys[activeModeIndex] === "auto") {
|
|
darkModeQuery.removeEventListener("change", autoSchemeHandler);
|
|
}
|
|
|
|
activeModeIndex = newIndex;
|
|
var resolvedMode = modeKeys[activeModeIndex];
|
|
|
|
if (modeSwitcher) {
|
|
modeSwitcher.textContent = modeLabels[activeModeIndex];
|
|
}
|
|
|
|
if (resolvedMode === "light") {
|
|
applyLightSkin();
|
|
}
|
|
else if (resolvedMode === "dark") {
|
|
applyDarkSkin();
|
|
}
|
|
else {
|
|
darkModeQuery.addEventListener("change", autoSchemeHandler);
|
|
autoSchemeHandler();
|
|
}
|
|
}
|
|
settings.onChange("appearance_color", applyTheme);
|
|
settings.onChange("appearance_skin_dark", function () {
|
|
settings.refresh("appearance_color");
|
|
});
|
|
settings.onChange("appearance_skin_light", function () {
|
|
settings.refresh("appearance_color");
|
|
});
|
|
});
|