diff --git a/.github/workflows/docker-build-push.yaml b/.github/workflows/docker-build-push.yaml
index ee7efa7c1..b48381a6f 100644
--- a/.github/workflows/docker-build-push.yaml
+++ b/.github/workflows/docker-build-push.yaml
@@ -37,7 +37,7 @@ jobs:
network=host
- name: Install cosign
if: github.event_name != 'pull_request'
- uses: sigstore/cosign-installer@v3.8.2
+ uses: sigstore/cosign-installer@v3.9.1
- name: Login to GitHub Container Registry
uses: docker/login-action@v3
if: github.event_name != 'pull_request'
diff --git a/docs/advanced/creating components.md b/docs/advanced/creating components.md
index 369405b07..84e038012 100644
--- a/docs/advanced/creating components.md
+++ b/docs/advanced/creating components.md
@@ -226,9 +226,11 @@ Then, you can use it like any other component in `quartz.layout.ts` via `Compone
As Quartz components are just functions that return React components, you can compositionally use them in other Quartz components.
```tsx title="quartz/components/AnotherComponent.tsx"
-import YourComponent from "./YourComponent"
+import YourComponentConstructor from "./YourComponent"
export default (() => {
+ const YourComponent = YourComponentConstructor()
+
function AnotherComponent(props: QuartzComponentProps) {
return (
diff --git a/quartz/plugins/emitters/componentResources.ts b/quartz/plugins/emitters/componentResources.ts
index 5fdc5c27b..61e2ba858 100644
--- a/quartz/plugins/emitters/componentResources.ts
+++ b/quartz/plugins/emitters/componentResources.ts
@@ -135,15 +135,19 @@ function addGlobalPageResources(ctx: BuildCtx, componentResources: ComponentReso
`)
} else if (cfg.analytics?.provider === "goatcounter") {
componentResources.afterDOMLoaded.push(`
+ const goatcounterScriptPre = document.createElement('script');
+ goatcounterScriptPre.textContent = \`
+ window.goatcounter = { no_onload: true };
+ \`;
+ document.head.appendChild(goatcounterScriptPre);
+
+ const endpoint = "https://${cfg.analytics.websiteId}.${cfg.analytics.host ?? "goatcounter.com"}/count";
const goatcounterScript = document.createElement('script');
goatcounterScript.src = "${cfg.analytics.scriptSrc ?? "https://gc.zgo.at/count.js"}";
goatcounterScript.defer = true;
- goatcounterScript.setAttribute(
- 'data-goatcounter',
- "https://${cfg.analytics.websiteId}.${cfg.analytics.host ?? "goatcounter.com"}/count"
- );
+ goatcounterScript.setAttribute('data-goatcounter', endpoint);
goatcounterScript.onload = () => {
- window.goatcounter = { no_onload: true };
+ window.goatcounter.endpoint = endpoint;
goatcounter.count({ path: location.pathname });
document.addEventListener('nav', () => {
goatcounter.count({ path: location.pathname });