diff --git a/static/js/custom.js b/static/js/custom.js index cc1edf8..991bb5b 100644 --- a/static/js/custom.js +++ b/static/js/custom.js @@ -109,18 +109,32 @@ window.onload = function () { ?.addEventListener("click", toggleMenu); // Theme toggle logic + function updateThemeIcons() { + const isDark = document.documentElement.classList.contains("dark"); + const toggles = document.querySelectorAll(".theme-toggle-btn"); + toggles.forEach((btn) => { + const lightIcon = btn.querySelector(".theme-toggle-light-icon"); + const darkIcon = btn.querySelector(".theme-toggle-dark-icon"); + if (!lightIcon || !darkIcon) return; + if (isDark) { + lightIcon.classList.add("hidden"); + darkIcon.classList.remove("hidden"); + } else { + lightIcon.classList.remove("hidden"); + darkIcon.classList.add("hidden"); + } + }); + } + function setTheme(theme) { if (theme === "dark") { document.documentElement.classList.add("dark"); localStorage.setItem("theme", "dark"); - if (document.getElementById("theme-toggle-icon")) document.getElementById("theme-toggle-icon").textContent = "🌙"; - if (document.getElementById("theme-toggle-icon-mobile")) document.getElementById("theme-toggle-icon-mobile").textContent = "🌙"; } else { document.documentElement.classList.remove("dark"); localStorage.setItem("theme", "light"); - if (document.getElementById("theme-toggle-icon")) document.getElementById("theme-toggle-icon").textContent = "☀️"; - if (document.getElementById("theme-toggle-icon-mobile")) document.getElementById("theme-toggle-icon-mobile").textContent = "☀️"; } + updateThemeIcons(); } // Initial theme @@ -133,17 +147,12 @@ window.onload = function () { setTheme("light"); } - // Toggle event listeners - const themeToggle = document.getElementById("theme-toggle"); - if (themeToggle) { - themeToggle.addEventListener("click", function () { - setTheme(document.documentElement.classList.contains("dark") ? "light" : "dark"); + // Toggle event listeners (support multiple buttons) + const themeToggleButtons = document.querySelectorAll(".theme-toggle-btn"); + themeToggleButtons.forEach((btn) => { + btn.addEventListener("click", function () { + const isDark = document.documentElement.classList.contains("dark"); + setTheme(isDark ? "light" : "dark"); }); - } - const themeToggleMobile = document.getElementById("theme-toggle-mobile"); - if (themeToggleMobile) { - themeToggleMobile.addEventListener("click", function () { - setTheme(document.documentElement.classList.contains("dark") ? "light" : "dark"); - }); - } + }); }; diff --git a/templates/partials/header.html b/templates/partials/header.html index a86cf05..e06ab81 100644 --- a/templates/partials/header.html +++ b/templates/partials/header.html @@ -18,9 +18,16 @@