diff --git a/quartz.config.ts b/quartz.config.ts index c89a724ad704e..e21c8229c7bc1 100644 --- a/quartz.config.ts +++ b/quartz.config.ts @@ -7,7 +7,7 @@ const config: QuartzConfig = { enableSPA: true, enablePopovers: true, analytics: { - provider: "plausible", + provider: "postHog", }, baseUrl: "plasticlabs.ai", ignorePatterns: ["private", "templates"], diff --git a/quartz/cfg.ts b/quartz/cfg.ts index 8371b5e2be713..1a01334e042f8 100644 --- a/quartz/cfg.ts +++ b/quartz/cfg.ts @@ -6,16 +6,20 @@ import { Theme } from "./util/theme" export type Analytics = | null | { - provider: "plausible" - } + provider: "plausible" + } | { - provider: "google" - tagId: string - } + provider: "google" + tagId: string + } | { - provider: "umami" - websiteId: string - } + provider: "umami" + websiteId: string + } + | { + provider: "postHog" + } + export interface GlobalConfiguration { pageTitle: string diff --git a/quartz/plugins/emitters/componentResources.ts b/quartz/plugins/emitters/componentResources.ts index 116e4e3e0a92f..a27f1f977fc3f 100644 --- a/quartz/plugins/emitters/componentResources.ts +++ b/quartz/plugins/emitters/componentResources.ts @@ -105,6 +105,13 @@ function addGlobalPageResources( document.head.appendChild(umamiScript) `) + } else if (cfg.analytics?.provider === "postHog") { + componentResources.afterDOMLoaded.push( + ` + !function(t,e){var o,n,p,r;e.__SV||(window.posthog=e,e._i=[],e.init=function(i,s,a){function g(t,e){var o=e.split(".");2==o.length&&(t=t[o[0]],e=o[1]),t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}}(p=t.createElement("script")).type="text/javascript",p.async=!0,p.src=s.api_host+"/static/array.js",(r=t.getElementsByTagName("script")[0]).parentNode.insertBefore(p,r);var u=e;for(void 0!==a?u=e[a]=[]:a="posthog",u.people=u.people||[],u.toString=function(t){var e="posthog";return"posthog"!==a&&(e+="."+a),t||(e+=" (stub)"),e},u.people.toString=function(){return u.toString(1)+".people (stub)"},o="capture identify alias people.set people.set_once set_config register register_once unregister opt_out_capturing has_opted_out_capturing opt_in_capturing reset isFeatureEnabled onFeatureFlags getFeatureFlag getFeatureFlagPayload reloadFeatureFlags group updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures getActiveMatchingSurveys getSurveys onSessionId".split(" "),n=0;n