From 7b74fee0125884af99255891895668b46a477cd3 Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 22:19:25 +0200 Subject: [PATCH 01/11] init posthog stats --- docs/eleventy.config.mjs | 4 ++++ preview/eleventy.config.mjs | 4 ++++ shared/includes/layout/analytics.html | 30 ++++++++++++++++++++++++++- turbo.json | 4 +++- 4 files changed, 40 insertions(+), 2 deletions(-) diff --git a/docs/eleventy.config.mjs b/docs/eleventy.config.mjs index 5a74b8bbe..37a83d640 100644 --- a/docs/eleventy.config.mjs +++ b/docs/eleventy.config.mjs @@ -264,6 +264,10 @@ export default function (eleventyConfig) { eleventyConfig.addGlobalData("environment", environment); eleventyConfig.addGlobalData("package", pkg); eleventyConfig.addGlobalData("cdnUrl", `https://cdn.jsdelivr.net/npm/@tabler/core@${pkg.version}`); + + // PostHog Analytics Environment Variables + eleventyConfig.addGlobalData("posthogApiKey", process.env.POSTHOG_API_KEY || ""); + eleventyConfig.addGlobalData("posthogHost", process.env.POSTHOG_HOST || "https://us.i.posthog.com"); const data = { iconsCount: () => 123, diff --git a/preview/eleventy.config.mjs b/preview/eleventy.config.mjs index 9595d3b9f..d78d20c54 100644 --- a/preview/eleventy.config.mjs +++ b/preview/eleventy.config.mjs @@ -36,6 +36,10 @@ export default function (eleventyConfig) { eleventyConfig.addGlobalData("environment", environment); eleventyConfig.addGlobalData("readme", readFileSync(join("..", "README.md"), "utf-8")); eleventyConfig.addGlobalData("license", readFileSync(join("..", "LICENSE"), "utf-8")); + + // PostHog Analytics Environment Variables + eleventyConfig.addGlobalData("posthogApiKey", process.env.NEXT_PUBLIC_POSTHOG_KEY); + eleventyConfig.addGlobalData("posthogHost", process.env.NEXT_PUBLIC_POSTHOG_HOST); eleventyConfig.addGlobalData("pages", () => { return sync('pages/**/*.html').filter((file) => { diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index a7e706972..38e5007c6 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -1 +1,29 @@ - \ No newline at end of file + + +{% if posthogApiKey %} + +{% endif %} \ No newline at end of file diff --git a/turbo.json b/turbo.json index db60ae947..b5c5f8042 100644 --- a/turbo.json +++ b/turbo.json @@ -1,7 +1,9 @@ { "$schema": "https://turbo.build/schema.json", "globalEnv": [ - "NODE_ENV" + "NODE_ENV", + "NEXT_PUBLIC_POSTHOG_KEY", + "NEXT_PUBLIC_POSTHOG_HOST" ], "tasks": { "build": { From 14418a1c088effbac980f137c413cbb5d845c1df Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 22:28:41 +0200 Subject: [PATCH 02/11] fix posthog --- preview/vercel.json | 8 ++++++++ shared/includes/layout/analytics.html | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/preview/vercel.json b/preview/vercel.json index 1acdbf2a5..683aa92d8 100644 --- a/preview/vercel.json +++ b/preview/vercel.json @@ -8,6 +8,14 @@ "source": "/stats/event", "destination": "https://plausible.io/api/event" }, + { + "source": "/eat/static/:path(.*)", + "destination": "https://eu-assets.i.posthog.com/static/:path*" + }, + { + "source": "/eat/:path(.*)", + "destination": "https://eu.i.posthog.com/:path*" + }, { "source": "/(.*)", "destination": "/error-404.html" diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index 38e5007c6..2d5d1e227 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -16,7 +16,7 @@ if (['docs.tabler.io', 'preview.tabler.io'].includes(currentDomain)) { posthog.init('{{ posthogApiKey }}', { - api_host: '{{ posthogHost }}', + api_host: `/eat`, person_profiles: 'identified_only', capture_pageview: true, capture_pageleave: true, From 0c0767760637642f2d219730872d5a7201fc5f5e Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 22:54:13 +0200 Subject: [PATCH 03/11] clean prettier comments --- preview/.build/remove-prettier-ignore.mjs | 25 +++++++++++++++++++++++ preview/package.json | 3 ++- shared/includes/layout/analytics.html | 4 +--- 3 files changed, 28 insertions(+), 4 deletions(-) create mode 100644 preview/.build/remove-prettier-ignore.mjs diff --git a/preview/.build/remove-prettier-ignore.mjs b/preview/.build/remove-prettier-ignore.mjs new file mode 100644 index 000000000..5de104a32 --- /dev/null +++ b/preview/.build/remove-prettier-ignore.mjs @@ -0,0 +1,25 @@ +// remove-prettier-ignore.js +import { readFileSync, writeFileSync } from 'fs'; +import { sync } from 'glob'; + +const patterns = [ + /\/\/ prettier-ignore[\s]*/g, +]; + +sync('dist/**/*.html').forEach(file => { + let content = readFileSync(file, 'utf8'); + let modified = false; + + patterns.forEach(pattern => { + const newContent = content.replace(pattern, ''); + if (newContent !== content) { + content = newContent; + modified = true; + } + }); + + if (modified) { + writeFileSync(file, content); + console.log(`Cleaned: ${file}`); + } +}); diff --git a/preview/package.json b/preview/package.json index 91be799fb..527e50551 100644 --- a/preview/package.json +++ b/preview/package.json @@ -18,9 +18,10 @@ "js-minify": "pnpm run js-minify-demo", "js-minify-demo": "terser --compress passes=2 --mangle --comments \"/^!/\" --source-map \"content=dist/preview/js/demo.js.map,includeSources,url=demo.min.js.map\" --output dist/preview/js/demo.min.js dist/preview/js/demo.js", "clean": "shx rm -rf dist demo", - "html": "pnpm run html-build && pnpm run html-prettify", + "html": "pnpm run html-build && pnpm run html-prettify && pnpm run html-remove-prettier-ignore", "html-build": "eleventy", "html-prettify": "prettier --write \"dist/**/*.html\" \"!dist/dist/**\"", + "html-remove-prettier-ignore": "node .build/remove-prettier-ignore.mjs", "svg-optimize": "svgo -f svg/brand --pretty", "unused-files": "node .build/unused-files.mjs", "download-images": "node .build/download-images.mjs", diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index 2d5d1e227..c90dc5da8 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -9,11 +9,9 @@ * It is only for demo purposes. Don't use it in production. * */ + // prettier-ignore !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []); - - // Only initialize PostHog on allowed domains const currentDomain = window.location.hostname; - if (['docs.tabler.io', 'preview.tabler.io'].includes(currentDomain)) { posthog.init('{{ posthogApiKey }}', { api_host: `/eat`, From d8077f438cbb8858c957c494526a69e985fbae3e Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 22:55:26 +0200 Subject: [PATCH 04/11] clean prettier comments --- shared/includes/layout/analytics.html | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index c90dc5da8..260b94a1e 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -10,18 +10,6 @@ * */ // prettier-ignore - !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []); - const currentDomain = window.location.hostname; - if (['docs.tabler.io', 'preview.tabler.io'].includes(currentDomain)) { - posthog.init('{{ posthogApiKey }}', { - api_host: `/eat`, - person_profiles: 'identified_only', - capture_pageview: true, - capture_pageleave: true, - loaded: function (posthog) { - console.log('PostHog initialized on', currentDomain); - } - }); - } + !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []);const currentDomain = window.location.hostname; if (["docs.tabler.io", "preview.tabler.io"].includes(currentDomain)) { posthog.init("lalalal", {api_host: `/eat`, person_profiles: "identified_only", capture_pageview: true, capture_pageleave: true, loaded: function (posthog) { console.log("PostHog initialized on", currentDomain);},}); } {% endif %} \ No newline at end of file From 6e2e4e3317ecb0793bf4e53c8af83e0020ab9a6d Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 22:57:04 +0200 Subject: [PATCH 05/11] add analytics to docs --- shared/includes/layout/analytics.html | 2 +- shared/layouts/docs/default.html | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index 260b94a1e..46b859360 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -10,6 +10,6 @@ * */ // prettier-ignore - !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []);const currentDomain = window.location.hostname; if (["docs.tabler.io", "preview.tabler.io"].includes(currentDomain)) { posthog.init("lalalal", {api_host: `/eat`, person_profiles: "identified_only", capture_pageview: true, capture_pageleave: true, loaded: function (posthog) { console.log("PostHog initialized on", currentDomain);},}); } + !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []);const currentDomain = window.location.hostname; if (["docs.tabler.io", "preview.tabler.io", "docs.tabler.io"].includes(currentDomain)) { posthog.init("lalalal", {api_host: `/eat`, person_profiles: "identified_only", capture_pageview: true, capture_pageleave: true, loaded: function (posthog) { console.log("PostHog initialized on", currentDomain);},}); } {% endif %} \ No newline at end of file diff --git a/shared/layouts/docs/default.html b/shared/layouts/docs/default.html index 1a268d610..4a495e0d8 100644 --- a/shared/layouts/docs/default.html +++ b/shared/layouts/docs/default.html @@ -55,6 +55,10 @@ {% endif %} + {% if environment == 'production' %} + {% include "layout/analytics.html" %} + {% endif %} + {% for plugin in site.cssPlugins %} Date: Tue, 23 Sep 2025 22:59:55 +0200 Subject: [PATCH 06/11] remove old analytics --- docs/vercel.json | 8 ++++++++ shared/includes/layout/analytics.html | 2 -- shared/layouts/docs/default.html | 2 -- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/vercel.json b/docs/vercel.json index 7ae6aa0cc..3c4ddefdd 100644 --- a/docs/vercel.json +++ b/docs/vercel.json @@ -9,6 +9,14 @@ "source": "/stats/event", "destination": "https://plausible.io/api/event" }, + { + "source": "/eat/static/:path(.*)", + "destination": "https://eu-assets.i.posthog.com/static/:path*" + }, + { + "source": "/eat/:path(.*)", + "destination": "https://eu.i.posthog.com/:path*" + }, { "source": "/(.*)", "destination": "/error-404.html" diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index 46b859360..12d351d44 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -1,5 +1,3 @@ - - {% if posthogApiKey %} - {% elsif environment == 'development' %} From b4ab1100eff60b028ff54c3a3315dd1c3fbf3ac6 Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 23:02:22 +0200 Subject: [PATCH 07/11] fix: update PostHog initialization to use dynamic API key --- shared/includes/layout/analytics.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index 12d351d44..d61c63720 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -8,6 +8,6 @@ * */ // prettier-ignore - !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []);const currentDomain = window.location.hostname; if (["docs.tabler.io", "preview.tabler.io", "docs.tabler.io"].includes(currentDomain)) { posthog.init("lalalal", {api_host: `/eat`, person_profiles: "identified_only", capture_pageview: true, capture_pageleave: true, loaded: function (posthog) { console.log("PostHog initialized on", currentDomain);},}); } + !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.crossOrigin = "anonymous", p.async = !0, p.src = s.api_host.replace(".i.posthog.com", "-assets.i.posthog.com") + "/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 = "init capture register register_once register_for_session unregister unregister_for_session getFeatureFlag getFeatureFlagPayload isFeatureEnabled reloadFeatureFlags updateEarlyAccessFeatureEnrollment getEarlyAccessFeatures on onFeatureFlags onSessionId getSurveys getActiveMatchingSurveys renderSurvey canRenderSurvey getNextSurveyStep identify setPersonProperties group resetGroups setPersonPropertiesForFlags resetPersonPropertiesForFlags setGroupPropertiesForFlags resetGroupPropertiesForFlags reset get_distinct_id getGroups get_session_id get_session_replay_url alias set_config startSessionRecording stopSessionRecording sessionRecordingStarted captureException loadToolbar get_property getSessionProperty createPersonProfile opt_in_capturing opt_out_capturing has_opted_in_capturing has_opted_out_capturing clear_opt_in_out_capturing debug".split(" "), n = 0; n < o.length; n++)g(u, o[n]); e._i.push([i, s, a]) }, e.__SV = 1) }(document, window.posthog || []);const currentDomain = window.location.hostname;if (['docs.tabler.io', 'preview.tabler.io'].includes(currentDomain)) {posthog.init('{{ posthogApiKey }}', {api_host: `/eat`,person_profiles: 'identified_only',capture_pageview: true,capture_pageleave: true,loaded: function (posthog) {console.log('PostHog initialized on', currentDomain);}});} {% endif %} \ No newline at end of file From 1cd1fcaf28d17e96e488d3bf0c35035e308fdc42 Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 23:03:57 +0200 Subject: [PATCH 08/11] refactor: clean up comments in analytics script --- shared/includes/layout/analytics.html | 3 --- 1 file changed, 3 deletions(-) diff --git a/shared/includes/layout/analytics.html b/shared/includes/layout/analytics.html index d61c63720..f119b72fc 100644 --- a/shared/includes/layout/analytics.html +++ b/shared/includes/layout/analytics.html @@ -1,11 +1,8 @@ {% if posthogApiKey %} {% endif %} \ No newline at end of file From dbb5e7d2edf040d9a775c4f23266585cfd406feb Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 23:07:40 +0200 Subject: [PATCH 10/11] fix: restore analytics environment variables in appData --- preview/eleventy.config.mjs | 4 ---- shared/e11ty/data.mjs | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/preview/eleventy.config.mjs b/preview/eleventy.config.mjs index d78d20c54..9595d3b9f 100644 --- a/preview/eleventy.config.mjs +++ b/preview/eleventy.config.mjs @@ -36,10 +36,6 @@ export default function (eleventyConfig) { eleventyConfig.addGlobalData("environment", environment); eleventyConfig.addGlobalData("readme", readFileSync(join("..", "README.md"), "utf-8")); eleventyConfig.addGlobalData("license", readFileSync(join("..", "LICENSE"), "utf-8")); - - // PostHog Analytics Environment Variables - eleventyConfig.addGlobalData("posthogApiKey", process.env.NEXT_PUBLIC_POSTHOG_KEY); - eleventyConfig.addGlobalData("posthogHost", process.env.NEXT_PUBLIC_POSTHOG_HOST); eleventyConfig.addGlobalData("pages", () => { return sync('pages/**/*.html').filter((file) => { diff --git a/shared/e11ty/data.mjs b/shared/e11ty/data.mjs index 79ca40f51..e4460d79c 100644 --- a/shared/e11ty/data.mjs +++ b/shared/e11ty/data.mjs @@ -5,4 +5,8 @@ export function appData(eleventyConfig) { eleventyConfig.addGlobalData("package", JSON.parse(readFileSync(join("..", "core", "package.json"), "utf-8"))); eleventyConfig.addGlobalData("changelog", readFileSync(join("..", "core", "CHANGELOG.md"), "utf-8")); eleventyConfig.addGlobalData("libs", JSON.parse(readFileSync(join("..", "core", "libs.json"), "utf-8"))); + + // Analytics Environment Variables + eleventyConfig.addGlobalData("posthogApiKey", process.env.NEXT_PUBLIC_POSTHOG_KEY); + eleventyConfig.addGlobalData("posthogHost", process.env.NEXT_PUBLIC_POSTHOG_HOST); } \ No newline at end of file From a7fccda74c1039e277507f9d50d3825da3a5d924 Mon Sep 17 00:00:00 2001 From: codecalm Date: Tue, 23 Sep 2025 23:15:32 +0200 Subject: [PATCH 11/11] fix: remove analytics environment variables and adjust layout inclusion --- docs/eleventy.config.mjs | 4 ---- shared/layouts/docs/default.html | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/eleventy.config.mjs b/docs/eleventy.config.mjs index 37a83d640..d1ca48740 100644 --- a/docs/eleventy.config.mjs +++ b/docs/eleventy.config.mjs @@ -265,10 +265,6 @@ export default function (eleventyConfig) { eleventyConfig.addGlobalData("package", pkg); eleventyConfig.addGlobalData("cdnUrl", `https://cdn.jsdelivr.net/npm/@tabler/core@${pkg.version}`); - // PostHog Analytics Environment Variables - eleventyConfig.addGlobalData("posthogApiKey", process.env.POSTHOG_API_KEY || ""); - eleventyConfig.addGlobalData("posthogHost", process.env.POSTHOG_HOST || "https://us.i.posthog.com"); - const data = { iconsCount: () => 123, emailsCount: () => 123, diff --git a/shared/layouts/docs/default.html b/shared/layouts/docs/default.html index cb482fca5..721f4423e 100644 --- a/shared/layouts/docs/default.html +++ b/shared/layouts/docs/default.html @@ -52,7 +52,7 @@ {% endif %} - + {% if environment == 'production' %} {% include "layout/analytics.html" %} {% endif %}