diff --git a/quartz/components/Darkmode.tsx b/quartz/components/Darkmode.tsx
index 8ed7c99b0..f64aad636 100644
--- a/quartz/components/Darkmode.tsx
+++ b/quartz/components/Darkmode.tsx
@@ -9,41 +9,38 @@ import { classNames } from "../util/lang"
const Darkmode: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {
return (
-
-
-
-
-
+
)
}
diff --git a/quartz/components/scripts/darkmode.inline.ts b/quartz/components/scripts/darkmode.inline.ts
index 48e0aa1f5..038ae0fe5 100644
--- a/quartz/components/scripts/darkmode.inline.ts
+++ b/quartz/components/scripts/darkmode.inline.ts
@@ -11,7 +11,8 @@ const emitThemeChangeEvent = (theme: "light" | "dark") => {
document.addEventListener("nav", () => {
const switchTheme = (e: Event) => {
- const newTheme = (e.target as HTMLInputElement)?.checked ? "dark" : "light"
+ const newTheme =
+ document.documentElement.getAttribute("saved-theme") === "dark" ? "light" : "dark"
document.documentElement.setAttribute("saved-theme", newTheme)
localStorage.setItem("theme", newTheme)
emitThemeChangeEvent(newTheme)
@@ -21,17 +22,13 @@ document.addEventListener("nav", () => {
const newTheme = e.matches ? "dark" : "light"
document.documentElement.setAttribute("saved-theme", newTheme)
localStorage.setItem("theme", newTheme)
- toggleSwitch.checked = e.matches
emitThemeChangeEvent(newTheme)
}
// Darkmode toggle
- const toggleSwitch = document.querySelector("#darkmode-toggle") as HTMLInputElement
- toggleSwitch.addEventListener("change", switchTheme)
- window.addCleanup(() => toggleSwitch.removeEventListener("change", switchTheme))
- if (currentTheme === "dark") {
- toggleSwitch.checked = true
- }
+ const themeButton = document.querySelector("#darkmode") as HTMLButtonElement
+ themeButton.addEventListener("click", switchTheme)
+ window.addCleanup(() => themeButton.removeEventListener("click", switchTheme))
// Listen for changes in prefers-color-scheme
const colorSchemeMediaQuery = window.matchMedia("(prefers-color-scheme: dark)")
diff --git a/quartz/components/styles/darkmode.scss b/quartz/components/styles/darkmode.scss
index 348c6f793..edf4e61cf 100644
--- a/quartz/components/styles/darkmode.scss
+++ b/quartz/components/styles/darkmode.scss
@@ -1,17 +1,15 @@
.darkmode {
+ cursor: pointer;
+ padding: 0;
position: relative;
+ background: none;
+ border: none;
width: 20px;
height: 20px;
margin: 0 10px;
-
- & > .toggle {
- display: none;
- box-sizing: border-box;
- }
+ text-align: inherit;
& svg {
- cursor: pointer;
- opacity: 0;
position: absolute;
width: 20px;
height: 20px;
@@ -29,20 +27,20 @@
color-scheme: light;
}
-:root[saved-theme="dark"] .toggle ~ label {
+:root[saved-theme="dark"] .darkmode {
& > #dayIcon {
- opacity: 0;
+ display: none;
}
& > #nightIcon {
- opacity: 1;
+ display: inline;
}
}
-:root .toggle ~ label {
+:root .darkmode {
& > #dayIcon {
- opacity: 1;
+ display: inline;
}
& > #nightIcon {
- opacity: 0;
+ display: none;
}
}