diff --git a/dist/components/index.js b/dist/components/index.js index 2698cfb..c9cb029 100644 --- a/dist/components/index.js +++ b/dist/components/index.js @@ -1,9 +1,7 @@ +import { classNames } from '@quartz-community/utils/lang'; import { jsxs, jsx } from 'preact/jsx-runtime'; // src/util/lang.ts -function classNames(...classes) { - return classes.filter(Boolean).join(" "); -} // src/i18n/locales/en-US.ts var en_US_default = { diff --git a/dist/components/index.js.map b/dist/components/index.js.map index 91e6dc8..c5950d3 100644 --- a/dist/components/index.js.map +++ b/dist/components/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../../src/util/lang.ts","../../src/i18n/locales/en-US.ts","../../src/i18n/index.ts","../../src/components/scripts/darkmode.inline.ts","../../src/components/styles/darkmode.scss","../../src/components/Darkmode.tsx"],"names":[],"mappings":";;;AAAO,SAAS,cAAc,OAAA,EAAwD;AACpF,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;;;ACFA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;;;ACLA,IAAM,OAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS;AACX,CAAA;AAEO,SAAS,KAAK,MAAA,EAAgB;AACnC,EAAA,OAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,aAAA;AAC5B;;;ACRA,IAAA,uBAAA,GAAA,w7BAAA;;;ACAA,IAAA,gBAAA,GAAA,wtBAAA;ACWA,IAAM,QAAA,GAA4B,CAAC,EAAE,YAAA,EAAc,KAAI,KAA4B;AACjF,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,EAAK,MAAA,IAAU,OAAO,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,QAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,SAAA;AAErD,EAAA,4BACG,QAAA,EAAA,EAAO,KAAA,EAAO,UAAA,CAAW,YAAA,EAAc,UAAU,CAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,SAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,iCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,aAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,0BACtB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,i7CAAA,EAAk7C;AAAA;AAAA;AAAA,KAC57C;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAM,mCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,cAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,0BACvB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6eAAA,EAA8e;AAAA;AAAA;AAAA;AACxf,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,QAAA,CAAS,eAAA,GAAkB,uBAAA;AAC3B,QAAA,CAAS,GAAA,GAAM,gBAAA;AAEf,IAAO,oBAAS,MAAM,QAAA","file":"index.js","sourcesContent":["export function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n themeToggle: {\n darkMode: \"Dark mode\",\n lightMode: \"Light mode\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","var c=window.matchMedia(\"(prefers-color-scheme: light)\").matches?\"light\":\"dark\",s=localStorage.getItem(\"theme\")??c;document.documentElement.setAttribute(\"saved-theme\",s);var o=t=>{let n=new CustomEvent(\"themechange\",{detail:{theme:t}});document.dispatchEvent(n)},a=()=>{let t=()=>{let e=document.documentElement.getAttribute(\"saved-theme\")===\"dark\"?\"light\":\"dark\";document.documentElement.setAttribute(\"saved-theme\",e),localStorage.setItem(\"theme\",e),o(e)},n=e=>{let m=e.matches?\"dark\":\"light\";document.documentElement.setAttribute(\"saved-theme\",m),localStorage.setItem(\"theme\",m),o(m)};for(let e of document.getElementsByClassName(\"darkmode\"))e.addEventListener(\"click\",t),window.addCleanup(()=>e.removeEventListener(\"click\",t));let d=window.matchMedia(\"(prefers-color-scheme: dark)\");d.addEventListener(\"change\",n),window.addCleanup(()=>d.removeEventListener(\"change\",n))};document.addEventListener(\"nav\",a);document.addEventListener(\"render\",a);\n",".darkmode {\n cursor: pointer;\n padding: 0;\n position: relative;\n background: none;\n border: none;\n width: 20px;\n height: 32px;\n margin: 0;\n text-align: inherit;\n flex-shrink: 0;\n}\n.darkmode svg {\n position: absolute;\n width: 20px;\n height: 20px;\n top: calc(50% - 10px);\n fill: var(--darkgray);\n transition: opacity 0.1s ease;\n}\n\n:root[saved-theme=dark] {\n color-scheme: dark;\n}\n\n:root[saved-theme=light] {\n color-scheme: light;\n}\n\n:root[saved-theme=dark] .darkmode > .dayIcon {\n display: none;\n}\n:root[saved-theme=dark] .darkmode > .nightIcon {\n display: inline;\n}\n\n:root .darkmode > .dayIcon {\n display: inline;\n}\n:root .darkmode > .nightIcon {\n display: none;\n}","import type {\n QuartzComponent,\n QuartzComponentProps,\n QuartzComponentConstructor,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\n// @ts-expect-error - inline script import handled by Quartz bundler\nimport darkmodeScript from \"./scripts/darkmode.inline.ts\";\nimport styles from \"./styles/darkmode.scss\";\n\nconst Darkmode: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const locale = i18n(cfg?.locale ?? \"en-US\");\n const darkModeLabel = locale.components.themeToggle.darkMode;\n const lightModeLabel = locale.components.themeToggle.lightMode;\n\n return (\n \n );\n};\n\nDarkmode.beforeDOMLoaded = darkmodeScript;\nDarkmode.css = styles;\n\nexport default (() => Darkmode) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file +{"version":3,"sources":["../../src/i18n/locales/en-US.ts","../../src/i18n/index.ts","../../src/components/scripts/darkmode.inline.ts","../../src/components/styles/darkmode.scss","../../src/components/Darkmode.tsx"],"names":[],"mappings":";;;;;;AAAA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;;;ACLA,IAAM,OAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS;AACX,CAAA;AAEO,SAAS,KAAK,MAAA,EAAgB;AACnC,EAAA,OAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,aAAA;AAC5B;;;ACRA,IAAA,uBAAA,GAAA,w7BAAA;;;ACAA,IAAA,gBAAA,GAAA,wtBAAA;ACWA,IAAM,QAAA,GAA4B,CAAC,EAAE,YAAA,EAAc,KAAI,KAA4B;AACjF,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,EAAK,MAAA,IAAU,OAAO,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,QAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,SAAA;AAErD,EAAA,4BACG,QAAA,EAAA,EAAO,KAAA,EAAO,UAAA,CAAW,YAAA,EAAc,UAAU,CAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,SAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,iCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,aAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,0BACtB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,i7CAAA,EAAk7C;AAAA;AAAA;AAAA,KAC57C;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAM,mCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,cAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,0BACvB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6eAAA,EAA8e;AAAA;AAAA;AAAA;AACxf,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,QAAA,CAAS,eAAA,GAAkB,uBAAA;AAC3B,QAAA,CAAS,GAAA,GAAM,gBAAA;AAEf,IAAO,oBAAS,MAAM,QAAA","file":"index.js","sourcesContent":["export default {\n components: {\n themeToggle: {\n darkMode: \"Dark mode\",\n lightMode: \"Light mode\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","var c=window.matchMedia(\"(prefers-color-scheme: light)\").matches?\"light\":\"dark\",s=localStorage.getItem(\"theme\")??c;document.documentElement.setAttribute(\"saved-theme\",s);var o=t=>{let n=new CustomEvent(\"themechange\",{detail:{theme:t}});document.dispatchEvent(n)},a=()=>{let t=()=>{let e=document.documentElement.getAttribute(\"saved-theme\")===\"dark\"?\"light\":\"dark\";document.documentElement.setAttribute(\"saved-theme\",e),localStorage.setItem(\"theme\",e),o(e)},n=e=>{let m=e.matches?\"dark\":\"light\";document.documentElement.setAttribute(\"saved-theme\",m),localStorage.setItem(\"theme\",m),o(m)};for(let e of document.getElementsByClassName(\"darkmode\"))e.addEventListener(\"click\",t),window.addCleanup(()=>e.removeEventListener(\"click\",t));let d=window.matchMedia(\"(prefers-color-scheme: dark)\");d.addEventListener(\"change\",n),window.addCleanup(()=>d.removeEventListener(\"change\",n))};document.addEventListener(\"nav\",a);document.addEventListener(\"render\",a);\n",".darkmode {\n cursor: pointer;\n padding: 0;\n position: relative;\n background: none;\n border: none;\n width: 20px;\n height: 32px;\n margin: 0;\n text-align: inherit;\n flex-shrink: 0;\n}\n.darkmode svg {\n position: absolute;\n width: 20px;\n height: 20px;\n top: calc(50% - 10px);\n fill: var(--darkgray);\n transition: opacity 0.1s ease;\n}\n\n:root[saved-theme=dark] {\n color-scheme: dark;\n}\n\n:root[saved-theme=light] {\n color-scheme: light;\n}\n\n:root[saved-theme=dark] .darkmode > .dayIcon {\n display: none;\n}\n:root[saved-theme=dark] .darkmode > .nightIcon {\n display: inline;\n}\n\n:root .darkmode > .dayIcon {\n display: inline;\n}\n:root .darkmode > .nightIcon {\n display: none;\n}","import type {\n QuartzComponent,\n QuartzComponentProps,\n QuartzComponentConstructor,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\n// @ts-expect-error - inline script import handled by Quartz bundler\nimport darkmodeScript from \"./scripts/darkmode.inline.ts\";\nimport styles from \"./styles/darkmode.scss\";\n\nconst Darkmode: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const locale = i18n(cfg?.locale ?? \"en-US\");\n const darkModeLabel = locale.components.themeToggle.darkMode;\n const lightModeLabel = locale.components.themeToggle.lightMode;\n\n return (\n \n );\n};\n\nDarkmode.beforeDOMLoaded = darkmodeScript;\nDarkmode.css = styles;\n\nexport default (() => Darkmode) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 2698cfb..c9cb029 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,9 +1,7 @@ +import { classNames } from '@quartz-community/utils/lang'; import { jsxs, jsx } from 'preact/jsx-runtime'; // src/util/lang.ts -function classNames(...classes) { - return classes.filter(Boolean).join(" "); -} // src/i18n/locales/en-US.ts var en_US_default = { diff --git a/dist/index.js.map b/dist/index.js.map index 769bef0..13556b3 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/util/lang.ts","../src/i18n/locales/en-US.ts","../src/i18n/index.ts","../src/components/scripts/darkmode.inline.ts","../src/components/styles/darkmode.scss","../src/components/Darkmode.tsx"],"names":[],"mappings":";;;AAAO,SAAS,cAAc,OAAA,EAAwD;AACpF,EAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACzC;;;ACFA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;;;ACLA,IAAM,OAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS;AACX,CAAA;AAEO,SAAS,KAAK,MAAA,EAAgB;AACnC,EAAA,OAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,aAAA;AAC5B;;;ACRA,IAAA,uBAAA,GAAA,w7BAAA;;;ACAA,IAAA,gBAAA,GAAA,wtBAAA;ACWA,IAAM,QAAA,GAA4B,CAAC,EAAE,YAAA,EAAc,KAAI,KAA4B;AACjF,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,EAAK,MAAA,IAAU,OAAO,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,QAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,SAAA;AAErD,EAAA,4BACG,QAAA,EAAA,EAAO,KAAA,EAAO,UAAA,CAAW,YAAA,EAAc,UAAU,CAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,SAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,iCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,aAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,0BACtB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,i7CAAA,EAAk7C;AAAA;AAAA;AAAA,KAC57C;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAM,mCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,cAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,0BACvB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6eAAA,EAA8e;AAAA;AAAA;AAAA;AACxf,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,QAAA,CAAS,eAAA,GAAkB,uBAAA;AAC3B,QAAA,CAAS,GAAA,GAAM,gBAAA;AAEf,IAAO,oBAAS,MAAM,QAAA","file":"index.js","sourcesContent":["export function classNames(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(\" \");\n}\n","export default {\n components: {\n themeToggle: {\n darkMode: \"Dark mode\",\n lightMode: \"Light mode\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","var c=window.matchMedia(\"(prefers-color-scheme: light)\").matches?\"light\":\"dark\",s=localStorage.getItem(\"theme\")??c;document.documentElement.setAttribute(\"saved-theme\",s);var o=t=>{let n=new CustomEvent(\"themechange\",{detail:{theme:t}});document.dispatchEvent(n)},a=()=>{let t=()=>{let e=document.documentElement.getAttribute(\"saved-theme\")===\"dark\"?\"light\":\"dark\";document.documentElement.setAttribute(\"saved-theme\",e),localStorage.setItem(\"theme\",e),o(e)},n=e=>{let m=e.matches?\"dark\":\"light\";document.documentElement.setAttribute(\"saved-theme\",m),localStorage.setItem(\"theme\",m),o(m)};for(let e of document.getElementsByClassName(\"darkmode\"))e.addEventListener(\"click\",t),window.addCleanup(()=>e.removeEventListener(\"click\",t));let d=window.matchMedia(\"(prefers-color-scheme: dark)\");d.addEventListener(\"change\",n),window.addCleanup(()=>d.removeEventListener(\"change\",n))};document.addEventListener(\"nav\",a);document.addEventListener(\"render\",a);\n",".darkmode {\n cursor: pointer;\n padding: 0;\n position: relative;\n background: none;\n border: none;\n width: 20px;\n height: 32px;\n margin: 0;\n text-align: inherit;\n flex-shrink: 0;\n}\n.darkmode svg {\n position: absolute;\n width: 20px;\n height: 20px;\n top: calc(50% - 10px);\n fill: var(--darkgray);\n transition: opacity 0.1s ease;\n}\n\n:root[saved-theme=dark] {\n color-scheme: dark;\n}\n\n:root[saved-theme=light] {\n color-scheme: light;\n}\n\n:root[saved-theme=dark] .darkmode > .dayIcon {\n display: none;\n}\n:root[saved-theme=dark] .darkmode > .nightIcon {\n display: inline;\n}\n\n:root .darkmode > .dayIcon {\n display: inline;\n}\n:root .darkmode > .nightIcon {\n display: none;\n}","import type {\n QuartzComponent,\n QuartzComponentProps,\n QuartzComponentConstructor,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\n// @ts-expect-error - inline script import handled by Quartz bundler\nimport darkmodeScript from \"./scripts/darkmode.inline.ts\";\nimport styles from \"./styles/darkmode.scss\";\n\nconst Darkmode: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const locale = i18n(cfg?.locale ?? \"en-US\");\n const darkModeLabel = locale.components.themeToggle.darkMode;\n const lightModeLabel = locale.components.themeToggle.lightMode;\n\n return (\n \n );\n};\n\nDarkmode.beforeDOMLoaded = darkmodeScript;\nDarkmode.css = styles;\n\nexport default (() => Darkmode) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file +{"version":3,"sources":["../src/i18n/locales/en-US.ts","../src/i18n/index.ts","../src/components/scripts/darkmode.inline.ts","../src/components/styles/darkmode.scss","../src/components/Darkmode.tsx"],"names":[],"mappings":";;;;;;AAAA,IAAO,aAAA,GAAQ;AAAA,EACb,UAAA,EAAY;AAAA,IACV,WAAA,EAAa;AAAA,MACX,QAAA,EAAU,WAAA;AAAA,MACV,SAAA,EAAW;AAAA;AACb;AAEJ,CAAA;;;ACLA,IAAM,OAAA,GAAuC;AAAA,EAC3C,OAAA,EAAS;AACX,CAAA;AAEO,SAAS,KAAK,MAAA,EAAgB;AACnC,EAAA,OAAO,OAAA,CAAQ,MAAM,CAAA,IAAK,aAAA;AAC5B;;;ACRA,IAAA,uBAAA,GAAA,w7BAAA;;;ACAA,IAAA,gBAAA,GAAA,wtBAAA;ACWA,IAAM,QAAA,GAA4B,CAAC,EAAE,YAAA,EAAc,KAAI,KAA4B;AACjF,EAAA,MAAM,MAAA,GAAS,IAAA,CAAK,GAAA,EAAK,MAAA,IAAU,OAAO,CAAA;AAC1C,EAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,QAAA;AACpD,EAAA,MAAM,cAAA,GAAiB,MAAA,CAAO,UAAA,CAAW,WAAA,CAAY,SAAA;AAErD,EAAA,4BACG,QAAA,EAAA,EAAO,KAAA,EAAO,UAAA,CAAW,YAAA,EAAc,UAAU,CAAA,EAChD,QAAA,EAAA;AAAA,oBAAA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,SAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,WAAA;AAAA,QACR,KAAA,EAAM,iCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,aAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,aAAA,EAAc,CAAA;AAAA,0BACtB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,i7CAAA,EAAk7C;AAAA;AAAA;AAAA,KAC57C;AAAA,oBACA,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,KAAA,EAAM,4BAAA;AAAA,QACN,UAAA,EAAW,8BAAA;AAAA,QACX,OAAA,EAAQ,KAAA;AAAA,QACR,KAAA,EAAM,WAAA;AAAA,QACN,CAAA,EAAE,KAAA;AAAA,QACF,CAAA,EAAE,KAAA;AAAA,QACF,OAAA,EAAQ,aAAA;AAAA,QACR,KAAA,EAAM,mCAAA;AAAA,QACN,QAAA,EAAS,UAAA;AAAA,QACT,YAAA,EAAY,cAAA;AAAA,QAEZ,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,WAAO,QAAA,EAAA,cAAA,EAAe,CAAA;AAAA,0BACvB,GAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,6eAAA,EAA8e;AAAA;AAAA;AAAA;AACxf,GAAA,EACF,CAAA;AAEJ,CAAA;AAEA,QAAA,CAAS,eAAA,GAAkB,uBAAA;AAC3B,QAAA,CAAS,GAAA,GAAM,gBAAA;AAEf,IAAO,oBAAS,MAAM,QAAA","file":"index.js","sourcesContent":["export default {\n components: {\n themeToggle: {\n darkMode: \"Dark mode\",\n lightMode: \"Light mode\",\n },\n },\n};\n","import enUS from \"./locales/en-US\";\n\nconst locales: Record = {\n \"en-US\": enUS,\n};\n\nexport function i18n(locale: string) {\n return locales[locale] || enUS;\n}\n","var c=window.matchMedia(\"(prefers-color-scheme: light)\").matches?\"light\":\"dark\",s=localStorage.getItem(\"theme\")??c;document.documentElement.setAttribute(\"saved-theme\",s);var o=t=>{let n=new CustomEvent(\"themechange\",{detail:{theme:t}});document.dispatchEvent(n)},a=()=>{let t=()=>{let e=document.documentElement.getAttribute(\"saved-theme\")===\"dark\"?\"light\":\"dark\";document.documentElement.setAttribute(\"saved-theme\",e),localStorage.setItem(\"theme\",e),o(e)},n=e=>{let m=e.matches?\"dark\":\"light\";document.documentElement.setAttribute(\"saved-theme\",m),localStorage.setItem(\"theme\",m),o(m)};for(let e of document.getElementsByClassName(\"darkmode\"))e.addEventListener(\"click\",t),window.addCleanup(()=>e.removeEventListener(\"click\",t));let d=window.matchMedia(\"(prefers-color-scheme: dark)\");d.addEventListener(\"change\",n),window.addCleanup(()=>d.removeEventListener(\"change\",n))};document.addEventListener(\"nav\",a);document.addEventListener(\"render\",a);\n",".darkmode {\n cursor: pointer;\n padding: 0;\n position: relative;\n background: none;\n border: none;\n width: 20px;\n height: 32px;\n margin: 0;\n text-align: inherit;\n flex-shrink: 0;\n}\n.darkmode svg {\n position: absolute;\n width: 20px;\n height: 20px;\n top: calc(50% - 10px);\n fill: var(--darkgray);\n transition: opacity 0.1s ease;\n}\n\n:root[saved-theme=dark] {\n color-scheme: dark;\n}\n\n:root[saved-theme=light] {\n color-scheme: light;\n}\n\n:root[saved-theme=dark] .darkmode > .dayIcon {\n display: none;\n}\n:root[saved-theme=dark] .darkmode > .nightIcon {\n display: inline;\n}\n\n:root .darkmode > .dayIcon {\n display: inline;\n}\n:root .darkmode > .nightIcon {\n display: none;\n}","import type {\n QuartzComponent,\n QuartzComponentProps,\n QuartzComponentConstructor,\n} from \"@quartz-community/types\";\nimport { classNames } from \"../util/lang\";\nimport { i18n } from \"../i18n\";\n// @ts-expect-error - inline script import handled by Quartz bundler\nimport darkmodeScript from \"./scripts/darkmode.inline.ts\";\nimport styles from \"./styles/darkmode.scss\";\n\nconst Darkmode: QuartzComponent = ({ displayClass, cfg }: QuartzComponentProps) => {\n const locale = i18n(cfg?.locale ?? \"en-US\");\n const darkModeLabel = locale.components.themeToggle.darkMode;\n const lightModeLabel = locale.components.themeToggle.lightMode;\n\n return (\n \n );\n};\n\nDarkmode.beforeDOMLoaded = darkmodeScript;\nDarkmode.css = styles;\n\nexport default (() => Darkmode) satisfies QuartzComponentConstructor;\n"]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 90bfaf2..caca952 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,8 @@ "version": "0.1.0", "license": "MIT", "dependencies": { - "@quartz-community/types": "github:quartz-community/types" + "@quartz-community/types": "github:quartz-community/types", + "@quartz-community/utils": "github:quartz-community/utils" }, "devDependencies": { "@types/hast": "^3.0.4", @@ -1056,6 +1057,31 @@ } } }, + "node_modules/@quartz-community/utils": { + "version": "0.1.0", + "resolved": "git+ssh://git@github.com/quartz-community/utils.git#cf1450b6f744755c16ca0d301db08c2ade6cfb67", + "license": "MIT", + "dependencies": { + "@quartz-community/types": "github:quartz-community/types" + }, + "engines": { + "node": ">=22", + "npm": ">=10.9.2" + }, + "peerDependencies": { + "github-slugger": "^2.0.0", + "hast-util-to-jsx-runtime": "^2.3.6", + "preact": "^10.0.0" + }, + "peerDependenciesMeta": { + "github-slugger": { + "optional": true + }, + "hast-util-to-jsx-runtime": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.57.1", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", @@ -1447,7 +1473,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "devOptional": true, + "dev": true, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { @@ -3302,7 +3328,6 @@ "version": "10.28.3", "resolved": "https://registry.npmjs.org/preact/-/preact-10.28.3.tgz", "integrity": "sha512-tCmoRkPQLpBeWzpmbhryairGnhW9tKV6c6gr/w+RhoRoKEJwsjzipwp//1oCpGPOchvSLaAPlpcJi9MwMmoPyA==", - "dev": true, "license": "MIT", "funding": { "type": "opencollective", diff --git a/package.json b/package.json index 78ee924..eb49b7d 100644 --- a/package.json +++ b/package.json @@ -59,7 +59,8 @@ } }, "dependencies": { - "@quartz-community/types": "github:quartz-community/types" + "@quartz-community/types": "github:quartz-community/types", + "@quartz-community/utils": "github:quartz-community/utils" }, "devDependencies": { "@types/hast": "^3.0.4",