From 84fbde268a940bda05b1faaf31fd0c795ed6c1ad Mon Sep 17 00:00:00 2001 From: Tony Dang Date: Tue, 14 Jul 2026 14:07:55 -0700 Subject: [PATCH] feat: add OneTrust cookie consent, GTM, and privacy choices footer link Co-authored-by: Isaac --- docusaurus.config.ts | 8 ++ plugins/gtm-noscript.ts | 20 +++++ .../perspectives/perspectives-shell.tsx | 4 + src/components/theme/footer.tsx | 35 +++----- .../theme/your-privacy-choices-link.tsx | 40 +++++++++ src/lib/gtm.ts | 41 +++++++++ src/lib/onetrust.ts | 85 ++++++++++++++++++ src/theme/Footer/index.tsx | 4 + static/img/gpc-icon.png | Bin 0 -> 1825 bytes tests/e2e/navigation.spec.ts | 1 + 10 files changed, 213 insertions(+), 25 deletions(-) create mode 100644 plugins/gtm-noscript.ts create mode 100644 src/components/theme/your-privacy-choices-link.tsx create mode 100644 src/lib/gtm.ts create mode 100644 src/lib/onetrust.ts create mode 100644 static/img/gpc-icon.png diff --git a/docusaurus.config.ts b/docusaurus.config.ts index e05b92a4..67035832 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -7,6 +7,7 @@ import aboutDevhubPlugin from "./plugins/about-devhub"; import chunkReloadPlugin from "./plugins/chunk-reload"; import contentEntriesPlugin from "./plugins/content-entries"; import cookbooksPlugin from "./plugins/cookbooks"; +import gtmNoscriptPlugin from "./plugins/gtm-noscript"; import llmsTxtPlugin from "./plugins/llms-txt"; import markdownStaticRoutesPlugin from "./plugins/markdown-static-routes"; import perspectivesPlugin from "./plugins/perspectives"; @@ -16,6 +17,8 @@ import robotsTxtPlugin from "./plugins/robots-txt"; import solutionRssFeedPlugin from "./plugins/solutions-rss-feed"; import { showDrafts } from "./src/lib/feature-flags-server"; import { getHackathonBannerConfig } from "./src/lib/hackathon-banner-server"; +import { gtmHeadTag } from "./src/lib/gtm"; +import { oneTrustHeadTags, resolveOneTrustEnv } from "./src/lib/onetrust"; import { resolveSiteBaseUrl, resolveSiteOrigin, @@ -28,6 +31,7 @@ const siteOrigin = resolveSiteOrigin(); const siteBaseUrl = resolveSiteBaseUrl(); const publicSiteUrl = siteUrlFromConfig(siteOrigin, siteBaseUrl); const hackathonBanner = getHackathonBannerConfig(); +const oneTrustEnv = resolveOneTrustEnv(); const config: Config = { title: "Databricks Developer", @@ -76,6 +80,9 @@ const config: Config = { }, headTags: [ + // OneTrust must stay first so its AutoBlocker can gate GTM's cookies. The + // GTM