From 67e1beea7052ea515d47b881d4a30fa3ed847b0b Mon Sep 17 00:00:00 2001
From: Emile Bangma <github@emilebangma.com>
Date: Thu, 17 Oct 2024 22:30:16 +0000
Subject: [PATCH] feat(comments): support custom giscus themes (#1526)
---
quartz/components/scripts/comments.inline.ts | 28 ++++++++++++++++++++++++++--
1 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/quartz/components/scripts/comments.inline.ts b/quartz/components/scripts/comments.inline.ts
index 4ab29f0..c54230f 100644
--- a/quartz/components/scripts/comments.inline.ts
+++ b/quartz/components/scripts/comments.inline.ts
@@ -13,7 +13,7 @@
{
giscus: {
setConfig: {
- theme: theme,
+ theme: getThemeUrl(getThemeName(theme)),
},
},
},
@@ -21,12 +21,36 @@
)
}
+const getThemeName = (theme: string) => {
+ if (theme !== "dark" && theme !== "light") {
+ return theme
+ }
+ const giscusContainer = document.querySelector(".giscus") as GiscusElement
+ if (!giscusContainer) {
+ return theme
+ }
+ const darkGiscus = giscusContainer.dataset.darkTheme ?? "dark"
+ const lightGiscus = giscusContainer.dataset.lightTheme ?? "light"
+ return theme === "dark" ? darkGiscus : lightGiscus
+}
+
+const getThemeUrl = (theme: string) => {
+ const giscusContainer = document.querySelector(".giscus") as GiscusElement
+ if (!giscusContainer) {
+ return `https://giscus.app/themes/${theme}.css`
+ }
+ return `${giscusContainer.dataset.themeUrl ?? "https://giscus.app/themes"}/${theme}.css`
+}
+
type GiscusElement = Omit<HTMLElement, "dataset"> & {
dataset: DOMStringMap & {
repo: `${string}/${string}`
repoId: string
category: string
categoryId: string
+ themeUrl: string
+ lightTheme: string
+ darkTheme: string
mapping: "url" | "title" | "og:title" | "specific" | "number" | "pathname"
strict: string
reactionsEnabled: string
@@ -57,7 +81,7 @@
const theme = document.documentElement.getAttribute("saved-theme")
if (theme) {
- giscusScript.setAttribute("data-theme", theme)
+ giscusScript.setAttribute("data-theme", getThemeUrl(getThemeName(theme)))
}
giscusContainer.appendChild(giscusScript)
--
Gitblit v1.10.0