feat: follow system color scheme by default
Some checks failed
Build and Publish Docker Image / build-and-push (push) Failing after 3s
Some checks failed
Build and Publish Docker Image / build-and-push (push) Failing after 3s
This commit is contained in:
@@ -1363,10 +1363,12 @@ function htmlPage(): string {
|
|||||||
return URL.createObjectURL(thumbnailBlob);
|
return URL.createObjectURL(thumbnailBlob);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTheme(theme) {
|
function setTheme(theme, persist = true) {
|
||||||
const resolvedTheme = theme === "light" ? "light" : "dark";
|
const resolvedTheme = theme === "light" ? "light" : "dark";
|
||||||
document.body.dataset.theme = resolvedTheme;
|
document.body.dataset.theme = resolvedTheme;
|
||||||
|
if (persist) {
|
||||||
localStorage.setItem("theme", resolvedTheme);
|
localStorage.setItem("theme", resolvedTheme);
|
||||||
|
}
|
||||||
setMapTheme(resolvedTheme);
|
setMapTheme(resolvedTheme);
|
||||||
|
|
||||||
if (resolvedTheme === "dark") {
|
if (resolvedTheme === "dark") {
|
||||||
@@ -1479,11 +1481,18 @@ function htmlPage(): string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const themeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
|
||||||
const storedTheme = localStorage.getItem("theme");
|
const storedTheme = localStorage.getItem("theme");
|
||||||
setTheme(storedTheme === "dark" ? "dark" : "light");
|
const initialTheme = storedTheme === "dark" || (storedTheme !== "light" && themeMediaQuery.matches) ? "dark" : "light";
|
||||||
|
setTheme(initialTheme, false);
|
||||||
themeToggle.addEventListener("click", () => {
|
themeToggle.addEventListener("click", () => {
|
||||||
setTheme(document.body.dataset.theme === "dark" ? "light" : "dark");
|
setTheme(document.body.dataset.theme === "dark" ? "light" : "dark");
|
||||||
});
|
});
|
||||||
|
if (storedTheme === null) {
|
||||||
|
themeMediaQuery.addEventListener("change", (event) => {
|
||||||
|
setTheme(event.matches ? "dark" : "light", false);
|
||||||
|
});
|
||||||
|
}
|
||||||
setRouteVisible(routeVisible);
|
setRouteVisible(routeVisible);
|
||||||
routeToggle.addEventListener("click", () => {
|
routeToggle.addEventListener("click", () => {
|
||||||
setRouteVisible(!routeVisible);
|
setRouteVisible(!routeVisible);
|
||||||
|
|||||||
Reference in New Issue
Block a user