diff --git a/packages/share-theme/src/scripts/modules/theme.ts b/packages/share-theme/src/scripts/modules/theme.ts index 4017f3b77..39f34341f 100644 --- a/packages/share-theme/src/scripts/modules/theme.ts +++ b/packages/share-theme/src/scripts/modules/theme.ts @@ -1,35 +1,29 @@ -const preference = localStorage.getItem("theme"); -if (preference) { - if (preference === "dark") { - document.body.classList.add("theme-dark"); - document.body.classList.remove("theme-light"); - } - else { - document.body.classList.remove("theme-dark"); - document.body.classList.add("theme-light"); - } +const prefersDark = localStorage.getItem("theme") === "dark" || (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches); +if (prefersDark) { + document.body.classList.add("theme-dark"); + document.body.classList.remove("theme-light"); +} else { + document.body.classList.remove("theme-dark"); + document.body.classList.add("theme-light"); } export default function setupThemeSelector() { const themeSwitch: HTMLInputElement = document.querySelector(".theme-selection input")!; - - if (preference) { - const themeSelection: HTMLDivElement = document.querySelector(".theme-selection")!; - themeSelection.classList.add("no-transition"); - themeSwitch.checked = preference === "dark"; - setTimeout(() => themeSelection.classList.remove("no-transition"), 400); - } + + const themeSelection: HTMLDivElement = document.querySelector(".theme-selection")!; + themeSelection.classList.add("no-transition"); + themeSwitch.checked = prefersDark; + setTimeout(() => themeSelection.classList.remove("no-transition"), 400); themeSwitch?.addEventListener("change", () => { if (themeSwitch.checked) { document.body.classList.add("theme-dark"); document.body.classList.remove("theme-light"); localStorage.setItem("theme", "dark"); - } - else { + } else { document.body.classList.remove("theme-dark"); document.body.classList.add("theme-light"); localStorage.setItem("theme", "light"); } }); -} \ No newline at end of file +} diff --git a/packages/share-theme/src/templates/page.ejs b/packages/share-theme/src/templates/page.ejs index de3e2941c..f112617ee 100644 --- a/packages/share-theme/src/templates/page.ejs +++ b/packages/share-theme/src/templates/page.ejs @@ -106,19 +106,6 @@ content = content.replaceAll(headingRe, (...match) => { }); %>
-