Add persistent dark theme toggle

This commit is contained in:
2026-08-05 13:15:03 +02:00
parent c1c63043c8
commit a88ca99697
5 changed files with 72 additions and 1 deletions
+16
View File
@@ -24,6 +24,7 @@ const sourceTitle = document.querySelector("#sourceTitle");
const sourceList = document.querySelector("#sourceList");
const sourceCloseButton = document.querySelector("#sourceCloseButton");
const settingsButton = document.querySelector("#settingsButton");
const themeToggle = document.querySelector("#themeToggle");
const settingsModal = document.querySelector("#settingsModal");
const settingsCloseButton = document.querySelector("#settingsCloseButton");
const databaseModeNote = document.querySelector("#databaseModeNote");
@@ -120,6 +121,7 @@ const productFieldMap = {
};
await loadStatus();
loadTheme();
renderFields();
renderTableHeader();
setTableWidth();
@@ -167,6 +169,7 @@ sourceModal.addEventListener("click", (event) => {
if (event.target === sourceModal) closeSourceCandidates();
});
settingsButton.addEventListener("click", openSettings);
themeToggle.addEventListener("click", toggleTheme);
settingsCloseButton.addEventListener("click", closeSettings);
settingsModal.addEventListener("click", (event) => {
if (event.target === settingsModal) closeSettings();
@@ -823,6 +826,19 @@ function openSettings() {
settingsModal.hidden = false;
}
function loadTheme() {
const isDark = localStorage.getItem("catalog-maker:theme") === "dark";
document.documentElement.classList.toggle("dark", isDark);
themeToggle.textContent = isDark ? "Light theme" : "Dark theme";
themeToggle.setAttribute("aria-pressed", String(isDark));
}
function toggleTheme() {
const isDark = !document.documentElement.classList.contains("dark");
localStorage.setItem("catalog-maker:theme", isDark ? "dark" : "light");
loadTheme();
}
function closeSettings() {
settingsModal.hidden = true;
}