| quartz/components/Darkmode.tsx | ●●●●● patch | view | raw | blame | history | |
| quartz/components/scripts/darkmode.inline.ts | ●●●●● patch | view | raw | blame | history | |
| quartz/plugins/emitters/contentPage.tsx | ●●●●● patch | view | raw | blame | history | |
| quartz/styles/syntax.scss | ●●●●● patch | view | raw | blame | history |
quartz/components/Darkmode.tsx
@@ -1,3 +1,6 @@ // @ts-ignore: this is safe, we don't want to actually make darkmode.inline.ts a module as // modules are automatically deferred and we don't want that to happen for critical beforeDOMLoads // see: https://v8.dev/features/modules#defer import darkmodeScript from "./scripts/darkmode.inline" import styles from '../styles/darkmode.scss' quartz/components/scripts/darkmode.inline.ts
@@ -1,25 +1,23 @@ export default "Darkmode" const userPref = window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark' const currentTheme = localStorage.getItem('theme') ?? userPref document.documentElement.setAttribute('saved-theme', currentTheme) const currentTheme = localStorage.getItem("theme") const theme = currentTheme ?? (window.matchMedia("(prefers-color-scheme: light)").matches ? "light" : "dark") document.documentElement.setAttribute("saved-theme", theme) window.addEventListener("DOMContentLoaded", () => { const toggleSwitch = document.querySelector("#darkmode-toggle") as HTMLInputElement toggleSwitch.addEventListener("change", (e: any) => { window.addEventListener('DOMContentLoaded', () => { const switchTheme = (e: any) => { if (e.target.checked) { document.documentElement.setAttribute("saved-theme", "dark") localStorage.setItem("theme", "dark") } else { document.documentElement.setAttribute("saved-theme", "light") localStorage.setItem("theme", "light") document.documentElement.setAttribute('saved-theme', 'dark') localStorage.setItem('theme', 'dark') } }) else { document.documentElement.setAttribute('saved-theme', 'light') localStorage.setItem('theme', 'light') } } if (theme === "dark") { // Darkmode toggle const toggleSwitch = document.querySelector('#darkmode-toggle') as HTMLInputElement toggleSwitch.addEventListener('change', switchTheme, false) if (currentTheme === 'dark') { toggleSwitch.checked = true } }) quartz/plugins/emitters/contentPage.tsx
@@ -40,9 +40,9 @@ const pageResources: StaticResources = { css: [baseDir + "/index.css", ...resources.css,], js: [ { src: baseDir + "/prescript.js", loadTime: "beforeDOMReady", type: 'module' }, { src: baseDir + "/prescript.js", loadTime: "beforeDOMReady" }, ...resources.js, { src: baseDir + "/postscript.js", loadTime: "afterDOMReady", type: 'module' } { src: baseDir + "/postscript.js", loadTime: "afterDOMReady" } ] } quartz/styles/syntax.scss
@@ -14,7 +14,7 @@ } // npx convert-sh-theme https://raw.githubusercontent.com/shikijs/shiki/main/packages/shiki/themes/github-dark.json :root[saved-theme="dark"] { [saved-theme="dark"] { --shiki-color-text: #e1e4e8 !important; --shiki-color-background: #24292e !important; --shiki-token-constant: #79b8ff !important;