@se-studio/core-ui 1.33.3 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/ANALYTICS.md +9 -3
  2. package/CHANGELOG.md +12 -0
  3. package/CONSENT.md +52 -0
  4. package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts +2 -1
  5. package/dist/analytics/adapters/CompositeAnalyticsAdapter.d.ts.map +1 -1
  6. package/dist/analytics/adapters/CompositeAnalyticsAdapter.js +6 -5
  7. package/dist/analytics/adapters/CompositeAnalyticsAdapter.js.map +1 -1
  8. package/dist/analytics/adapters/ConsentAwareAdapter.d.ts +29 -2
  9. package/dist/analytics/adapters/ConsentAwareAdapter.d.ts.map +1 -1
  10. package/dist/analytics/adapters/ConsentAwareAdapter.js +49 -5
  11. package/dist/analytics/adapters/ConsentAwareAdapter.js.map +1 -1
  12. package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts +18 -17
  13. package/dist/analytics/adapters/GoogleTagManagerAdapter.d.ts.map +1 -1
  14. package/dist/analytics/adapters/GoogleTagManagerAdapter.js +64 -35
  15. package/dist/analytics/adapters/GoogleTagManagerAdapter.js.map +1 -1
  16. package/dist/analytics/adapters/adapterMethods.d.ts +4 -0
  17. package/dist/analytics/adapters/adapterMethods.d.ts.map +1 -0
  18. package/dist/analytics/adapters/adapterMethods.js +11 -0
  19. package/dist/analytics/adapters/adapterMethods.js.map +1 -0
  20. package/dist/analytics/adapters/index.d.ts +1 -0
  21. package/dist/analytics/adapters/index.d.ts.map +1 -1
  22. package/dist/analytics/adapters/index.js.map +1 -1
  23. package/dist/analytics/consent/resolveAnalyticsConsent.d.ts +39 -0
  24. package/dist/analytics/consent/resolveAnalyticsConsent.d.ts.map +1 -0
  25. package/dist/analytics/consent/resolveAnalyticsConsent.js +53 -0
  26. package/dist/analytics/consent/resolveAnalyticsConsent.js.map +1 -0
  27. package/dist/analytics/types.d.ts +20 -0
  28. package/dist/analytics/types.d.ts.map +1 -1
  29. package/dist/index.d.ts +4 -1
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +1 -0
  32. package/dist/index.js.map +1 -1
  33. package/docs/llms.md +28 -8
  34. package/package.json +1 -1
package/ANALYTICS.md CHANGED
@@ -98,9 +98,12 @@ const adapter = new GoogleTagManagerAdapter({
98
98
  containerId: 'GTM-XXXXXXX', // Loads GTM script
99
99
  // OR
100
100
  measurementId: 'G-XXXXXXXX', // Loads gtag.js directly
101
+ consentDefault: 'granted', // omit unless the site (not the CMP) should set Consent Mode default
101
102
  });
102
103
  ```
103
104
 
105
+ Consent Mode v2: `initialize()` pushes `gtag('consent', 'default', {…})` **only when `consentDefault` is set**, before loading GTM (as an `arguments` object, not a dataLayer array). Omit `consentDefault` so the CMP decides (R7.7) — the adapter must not grant `ad_storage` / `ad_user_data` / `ad_personalization` by implication. Pass `consentDefault: 'granted'` for US opt-out sites without a CMP, or `'denied'` for adapter-owned opt-in. `updateConsent({ analytics, advertising })` pushes `gtag('consent', 'update', {…})`. If `updateConsent` runs before `initialize`, the update is stashed and flushed after any default command, before the container or gtag.js.
106
+
104
107
  ### GTM Data Layer Events
105
108
 
106
109
  The adapter pushes events to `window.dataLayer`:
@@ -147,10 +150,13 @@ import {
147
150
  import { HubSpotAnalyticsAdapter } from '@se-studio/hubspot';
148
151
 
149
152
  const composite = new CompositeAnalyticsAdapter([
150
- new GoogleTagManagerAdapter({ containerId: gtmId }),
151
- new HubSpotAnalyticsAdapter({ portalId: hubspotPortalId }),
153
+ new GoogleTagManagerAdapter({ containerId: gtmId, consentDefault: 'granted' }),
154
+ new HubSpotAnalyticsAdapter({ portalId: hubspotPortalId, getConsent: hasConsent }),
152
155
  ]);
153
- const adapter = new ConsentAwareAdapter(composite, 'analytics', hasConsent);
156
+ const adapter = new ConsentAwareAdapter(composite, 'analytics', hasConsent, {
157
+ syncConsent: true,
158
+ });
159
+ adapter.initialize();
154
160
  ```
155
161
 
156
162
  Add `AnalyticsPageTracker` inside the provider for soft-navigation page views (HubSpot SPA Mode B). Load HubSpot's bootstrap script in the root layout with `createHubSpotBootstrapScript()` (no args — uses `window.location.pathname` at script run time) from `@se-studio/hubspot`. Do not use `headers()` in the root layout for pathname; that forces dynamic rendering and breaks on-demand SSG pages in production.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @se-studio/core-ui
2
2
 
3
+ ## 1.34.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 7415484: Add a shared analytics consent helper and make GTM / HubSpot adapters consent-aware.
8
+
9
+ `resolveAnalyticsConsent` / `createConsentGetter` read a site-supplied source plus optional Global Privacy Control and Do Not Track (both off by default). `HubSpotAnalyticsAdapter` skips the tracking script and `_hsq` events while `getConsent` is false, and pushes `doNotTrack` on a mid-session deny. `ConsentAwareAdapter` vendor sync (`updateConsent` / late initialize) is **opt-in** via `{ syncConsent: true }` and forwards **analytics only** (never advertising).
10
+
11
+ **GTM Consent Mode (Array → Arguments):** `GoogleTagManagerAdapter` now issues real `gtag('consent', …)` commands (an Arguments object, flushed before `gtm.js` / gtag.js). GA4-only setups (`measurementId`) also send `gtag('js')` and `config` as Arguments. Consent Mode `default` is pushed **only when `consentDefault` is set**; otherwise the adapter does not grant `ad_*` keys, and denying or undecided visitors never get advertising `granted` from the adapter.
12
+
13
+ Sites using Orejime now have Google tags respect denied consent. Sites without a CMP integration are unchanged. GA4 and Ads volumes may drop where those denies start to apply. Sites that do not load GTM via this adapter are unaffected. HubSpot script gating does not change unless a site passes `getConsent` / `{ syncConsent: true }`.
14
+
3
15
  ## 1.33.3
4
16
 
5
17
  ### Patch Changes
package/CONSENT.md CHANGED
@@ -76,6 +76,58 @@ function AnalyticsSetup() {
76
76
  }
77
77
  ```
78
78
 
79
+ Call `adapter.initialize()` once on the client only if you need the inner adapters’ `initialize` (GTM script load). Vendor `updateConsent` / HubSpot script gating through the wrapper is **opt-in**: pass `{ syncConsent: true }`. The wrapper never sets GTM `advertising` from the analytics getter.
80
+
81
+ ### Consent state helper (no CMP)
82
+
83
+ Sites with a cookie or other source, plus optional Global Privacy Control / Do Not Track, should use `resolveAnalyticsConsent` / `createConsentGetter`. Unconfigured options keep tracking on (`opt-out`).
84
+
85
+ ```tsx
86
+ import {
87
+ ConsentAwareAdapter,
88
+ CompositeAnalyticsAdapter,
89
+ GoogleTagManagerAdapter,
90
+ createConsentGetter,
91
+ } from '@se-studio/core-ui';
92
+ import { HubSpotAnalyticsAdapter } from '@se-studio/hubspot';
93
+
94
+ const hasAnalyticsConsent = createConsentGetter({
95
+ model: 'opt-out', // US default: track until the visitor opts out
96
+ honorGlobalPrivacyControl: true,
97
+ honorDoNotTrack: true,
98
+ source: () => {
99
+ if (typeof document === 'undefined') return undefined;
100
+ const match = document.cookie.match(/(?:^|; )YOUR_OPT_OUT_COOKIE=([^;]*)/);
101
+ if (!match?.[1]) return undefined;
102
+ return decodeURIComponent(match[1]) !== 'true';
103
+ },
104
+ });
105
+
106
+ const gtm = new GoogleTagManagerAdapter({
107
+ containerId: process.env.NEXT_PUBLIC_GTM_ID!,
108
+ consentDefault: 'granted', // omit when a CMP owns Consent Mode defaults
109
+ });
110
+ const hubspot = new HubSpotAnalyticsAdapter({
111
+ portalId: process.env.NEXT_PUBLIC_HUBSPOT_PORTAL_ID!,
112
+ getConsent: hasAnalyticsConsent,
113
+ });
114
+ const adapter = new ConsentAwareAdapter(
115
+ new CompositeAnalyticsAdapter([gtm, hubspot]),
116
+ 'analytics',
117
+ () => hasAnalyticsConsent(),
118
+ { syncConsent: true },
119
+ );
120
+ adapter.initialize();
121
+ ```
122
+
123
+ `honorGlobalPrivacyControl` and `honorDoNotTrack` default to `false`. `model: 'opt-in'` denies tracking until `source` grants it.
124
+
125
+ After a mid-session opt-out, call `adapter.syncConsent()` so HubSpot receives `doNotTrack` and GTM receives `gtag('consent', 'update', …)` for **analytics** only. `track*` does not sync vendors unless `{ syncConsent: true }`.
126
+
127
+ ### Separate consent categories
128
+
129
+ `ConsentAwareAdapter` never writes GTM advertising flags. Distinct categories (analytics granted, advertising denied) stay on `GoogleTagManagerAdapter.updateConsent({ analytics, advertising })`.
130
+
79
131
  ## Styling
80
132
 
81
133
  Orejime styles can be customized via CSS variables or the `theme` prop.
@@ -1,4 +1,4 @@
1
- import type { AnalyticsAdapter, ClickTrackingProperties, PageTrackingProperties } from '../types';
1
+ import type { AnalyticsAdapter, AnalyticsConsentState, ClickTrackingProperties, PageTrackingProperties } from '../types';
2
2
  /**
3
3
  * Fans out analytics calls to multiple adapters (e.g. GTM + HubSpot).
4
4
  */
@@ -6,6 +6,7 @@ export declare class CompositeAnalyticsAdapter implements AnalyticsAdapter {
6
6
  private readonly adapters;
7
7
  constructor(adapters: AnalyticsAdapter[]);
8
8
  initialize(): void;
9
+ updateConsent(consent: AnalyticsConsentState): void;
9
10
  trackEvent(event: string, properties: Record<string, unknown>): void;
10
11
  trackPage(url: string, properties: PageTrackingProperties): void;
11
12
  trackClick(properties: ClickTrackingProperties): void;
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeAnalyticsAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/CompositeAnalyticsAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAQlG;;GAEG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,gBAAgB,EAAE,EAAI;IAE7D,UAAU,IAAI,IAAI,CAIjB;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAInE;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAI/D;IAED,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAIpD;CACF"}
1
+ {"version":3,"file":"CompositeAnalyticsAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/CompositeAnalyticsAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAGlB;;GAEG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,gBAAgB,EAAE,EAAI;IAE7D,UAAU,IAAI,IAAI,CAIjB;IAED,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAIlD;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAInE;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAI/D;IAED,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAIpD;CACF"}
@@ -1,8 +1,4 @@
1
- function callInitialize(adapter) {
2
- if ('initialize' in adapter && typeof adapter.initialize === 'function') {
3
- adapter.initialize();
4
- }
5
- }
1
+ import { callInitialize, callUpdateConsent } from './adapterMethods';
6
2
  /**
7
3
  * Fans out analytics calls to multiple adapters (e.g. GTM + HubSpot).
8
4
  */
@@ -16,6 +12,11 @@ export class CompositeAnalyticsAdapter {
16
12
  callInitialize(adapter);
17
13
  }
18
14
  }
15
+ updateConsent(consent) {
16
+ for (const adapter of this.adapters) {
17
+ callUpdateConsent(adapter, consent);
18
+ }
19
+ }
19
20
  trackEvent(event, properties) {
20
21
  for (const adapter of this.adapters) {
21
22
  adapter.trackEvent(event, properties);
@@ -1 +1 @@
1
- {"version":3,"file":"CompositeAnalyticsAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/CompositeAnalyticsAdapter.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,OAAyB;IAC/C,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACP,QAAQ;IAArC,YAA6B,QAA4B;wBAA5B,QAAQ;IAAuB,CAAC;IAE7D,UAAU;QACR,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,UAAmC;QAC3D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,UAAkC;QACvD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAmC;QAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"CompositeAnalyticsAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/CompositeAnalyticsAdapter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErE;;GAEG;AACH,MAAM,OAAO,yBAAyB;IACP,QAAQ;IAArC,YAA6B,QAA4B;wBAA5B,QAAQ;IAAuB,CAAC;IAE7D,UAAU;QACR,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,aAAa,CAAC,OAA8B;QAC1C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,UAAmC;QAC3D,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,UAAkC;QACvD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAmC;QAC5C,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACpC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;CACF"}
@@ -1,18 +1,45 @@
1
1
  import type { AnalyticsAdapter, ClickTrackingProperties, PageTrackingProperties } from '../types';
2
+ export interface ConsentAwareAdapterOptions {
3
+ /**
4
+ * When true, `initialize()` / `track*` / `syncConsent()` push
5
+ * `updateConsent({ analytics })` (never `advertising`) and re-init the inner
6
+ * adapter after a later grant. Default `false`: existing sites only gate
7
+ * events, matching the pre-consent-sync wrapper.
8
+ */
9
+ syncConsent?: boolean;
10
+ }
2
11
  /**
3
12
  * Adapter that wraps another analytics adapter and checks for consent before tracking.
4
13
  *
14
+ * Vendor sync (`updateConsent` / late `initialize`) is opt-in via
15
+ * `{ syncConsent: true }`. GTM Consent Mode advertising flags are never set
16
+ * from this wrapper — call `GoogleTagManagerAdapter.updateConsent` for ads.
17
+ *
5
18
  * @example
6
19
  * ```tsx
7
20
  * const gtmAdapter = new GoogleTagManagerAdapter(...);
8
- * const consentAwareAdapter = new ConsentAwareAdapter(gtmAdapter, 'google-tag-manager');
21
+ * const consentAwareAdapter = new ConsentAwareAdapter(
22
+ * gtmAdapter,
23
+ * 'google-tag-manager',
24
+ * hasConsent,
25
+ * );
9
26
  * ```
10
27
  */
11
28
  export declare class ConsentAwareAdapter implements AnalyticsAdapter {
12
29
  private adapter;
13
30
  private consentName;
14
31
  private getConsent;
15
- constructor(adapter: AnalyticsAdapter, consentName: string, getConsent: (name: string) => boolean);
32
+ private lastConsent;
33
+ private readonly syncConsentEnabled;
34
+ constructor(adapter: AnalyticsAdapter, consentName: string, getConsent: (name: string) => boolean, options?: ConsentAwareAdapterOptions);
35
+ private allowed;
36
+ /**
37
+ * Re-read the site consent source and, when `{ syncConsent: true }`, push
38
+ * `updateConsent({ analytics })` when it changes.
39
+ * Safe to call from a cookie-change listener. Returns whether tracking is allowed.
40
+ */
41
+ syncConsent(): boolean;
42
+ initialize(): void;
16
43
  trackEvent(event: string, properties: Record<string, unknown>): void;
17
44
  trackPage(url: string, properties: PageTrackingProperties): void;
18
45
  trackClick(properties: ClickTrackingProperties): void;
@@ -1 +1 @@
1
- {"version":3,"file":"ConsentAwareAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/ConsentAwareAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElG;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAExD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IAHpB,YACU,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAC3C;IAEJ,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAInE;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAI/D;IAED,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAIpD;CACF"}
1
+ {"version":3,"file":"ConsentAwareAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/ConsentAwareAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAGlG,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,mBAAoB,YAAW,gBAAgB;IAKxD,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,UAAU;IANpB,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,YACU,OAAO,EAAE,gBAAgB,EACzB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,EAC7C,OAAO,CAAC,EAAE,0BAA0B,EAGrC;IAED,OAAO,CAAC,OAAO;IAIf;;;;OAIG;IACH,WAAW,IAAI,OAAO,CAerB;IAED,UAAU,IAAI,IAAI,CAOjB;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAInE;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAI/D;IAED,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAIpD;CACF"}
@@ -1,33 +1,77 @@
1
+ import { callInitialize, callUpdateConsent } from './adapterMethods';
1
2
  /**
2
3
  * Adapter that wraps another analytics adapter and checks for consent before tracking.
3
4
  *
5
+ * Vendor sync (`updateConsent` / late `initialize`) is opt-in via
6
+ * `{ syncConsent: true }`. GTM Consent Mode advertising flags are never set
7
+ * from this wrapper — call `GoogleTagManagerAdapter.updateConsent` for ads.
8
+ *
4
9
  * @example
5
10
  * ```tsx
6
11
  * const gtmAdapter = new GoogleTagManagerAdapter(...);
7
- * const consentAwareAdapter = new ConsentAwareAdapter(gtmAdapter, 'google-tag-manager');
12
+ * const consentAwareAdapter = new ConsentAwareAdapter(
13
+ * gtmAdapter,
14
+ * 'google-tag-manager',
15
+ * hasConsent,
16
+ * );
8
17
  * ```
9
18
  */
10
19
  export class ConsentAwareAdapter {
11
20
  adapter;
12
21
  consentName;
13
22
  getConsent;
14
- constructor(adapter, consentName, getConsent) {
23
+ lastConsent;
24
+ syncConsentEnabled;
25
+ constructor(adapter, consentName, getConsent, options) {
15
26
  this.adapter = adapter;
16
27
  this.consentName = consentName;
17
28
  this.getConsent = getConsent;
29
+ this.syncConsentEnabled = options?.syncConsent === true;
30
+ }
31
+ allowed() {
32
+ return this.getConsent(this.consentName);
33
+ }
34
+ /**
35
+ * Re-read the site consent source and, when `{ syncConsent: true }`, push
36
+ * `updateConsent({ analytics })` when it changes.
37
+ * Safe to call from a cookie-change listener. Returns whether tracking is allowed.
38
+ */
39
+ syncConsent() {
40
+ const allowed = this.allowed();
41
+ if (!this.syncConsentEnabled) {
42
+ return allowed;
43
+ }
44
+ if (this.lastConsent === allowed) {
45
+ return allowed;
46
+ }
47
+ const previous = this.lastConsent;
48
+ this.lastConsent = allowed;
49
+ callUpdateConsent(this.adapter, { analytics: allowed });
50
+ if (allowed && previous === false) {
51
+ callInitialize(this.adapter);
52
+ }
53
+ return allowed;
54
+ }
55
+ initialize() {
56
+ if (this.syncConsentEnabled) {
57
+ const allowed = this.allowed();
58
+ callUpdateConsent(this.adapter, { analytics: allowed });
59
+ this.lastConsent = allowed;
60
+ }
61
+ callInitialize(this.adapter);
18
62
  }
19
63
  trackEvent(event, properties) {
20
- if (this.getConsent(this.consentName)) {
64
+ if (this.syncConsentEnabled ? this.syncConsent() : this.allowed()) {
21
65
  this.adapter.trackEvent(event, properties);
22
66
  }
23
67
  }
24
68
  trackPage(url, properties) {
25
- if (this.getConsent(this.consentName)) {
69
+ if (this.syncConsentEnabled ? this.syncConsent() : this.allowed()) {
26
70
  this.adapter.trackPage(url, properties);
27
71
  }
28
72
  }
29
73
  trackClick(properties) {
30
- if (this.getConsent(this.consentName)) {
74
+ if (this.syncConsentEnabled ? this.syncConsent() : this.allowed()) {
31
75
  this.adapter.trackClick(properties);
32
76
  }
33
77
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ConsentAwareAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/ConsentAwareAdapter.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAmB;IAEpB,OAAO;IACP,WAAW;IACX,UAAU;IAHpB,YACU,OAAyB,EACzB,WAAmB,EACnB,UAAqC;uBAFrC,OAAO;2BACP,WAAW;0BACX,UAAU;IACjB,CAAC;IAEJ,UAAU,CAAC,KAAa,EAAE,UAAmC;QAC3D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,UAAkC;QACvD,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAmC;QAC5C,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"ConsentAwareAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/ConsentAwareAdapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAYrE;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,mBAAmB;IAKpB,OAAO;IACP,WAAW;IACX,UAAU;IANZ,WAAW,CAAsB;IACxB,kBAAkB,CAAU;IAE7C,YACU,OAAyB,EACzB,WAAmB,EACnB,UAAqC,EAC7C,OAAoC;uBAH5B,OAAO;2BACP,WAAW;0BACX,UAAU;QAGlB,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1D,CAAC;IAEO,OAAO;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;QACxD,IAAI,OAAO,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC7B,CAAC;QACD,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,UAAmC;QAC3D,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,UAAkC;QACvD,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,UAAU,CAAC,UAAmC;QAC5C,IAAI,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAClE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF"}
@@ -1,18 +1,10 @@
1
- import type { AnalyticsAdapter, ClickTrackingProperties, PageTrackingProperties } from '../types';
1
+ import type { AnalyticsAdapter, AnalyticsConsentState, ClickTrackingProperties, PageTrackingProperties } from '../types';
2
2
  declare global {
3
3
  interface Window {
4
4
  dataLayer: unknown[];
5
5
  }
6
6
  }
7
- /**
8
- * Consent state for GTM Consent Mode v2
9
- */
10
- interface ConsentState {
11
- /** Controls analytics_storage */
12
- analytics?: boolean;
13
- /** Controls ad_storage, ad_user_data, ad_personalization */
14
- advertising?: boolean;
15
- }
7
+ type ConsentModeValue = 'granted' | 'denied';
16
8
  interface GoogleTagManagerConfig {
17
9
  /**
18
10
  * GTM Container ID (e.g., GTM-XXXXXXX)
@@ -24,27 +16,36 @@ interface GoogleTagManagerConfig {
24
16
  * or can be used alongside GTM if needed.
25
17
  */
26
18
  measurementId?: string;
19
+ /**
20
+ * Consent Mode v2 default, pushed via `gtag('consent', 'default', …)` before
21
+ * GTM/gtag.js loads. Omit this so the CMP (or Google’s own default) decides
22
+ * (R7.7). Set `'granted'` only for US opt-out sites without a CMP, or
23
+ * `'denied'` for GDPR opt-in sites that want the adapter to set the default.
24
+ */
25
+ consentDefault?: ConsentModeValue;
27
26
  }
28
27
  export declare class GoogleTagManagerAdapter implements AnalyticsAdapter {
29
28
  private initialized;
30
29
  private config;
30
+ private pendingConsent;
31
31
  constructor(config: GoogleTagManagerConfig);
32
32
  /**
33
- * Push gtag commands to dataLayer
34
- */
35
- private gtag;
36
- /**
37
- * Initialize consent mode with all consent types granted by default
33
+ * Push Consent Mode `default` only when the site set `consentDefault`.
34
+ * Unset means the CMP decides — do not grant advertising keys implicitly.
38
35
  */
39
36
  private initializeConsentMode;
37
+ private pushConsentUpdate;
38
+ /** Apply a stashed update immediately after `default`, before GTM/gtag.js. */
39
+ private flushPendingConsent;
40
40
  initialize(): void;
41
41
  /**
42
42
  * Update consent state for specific purposes.
43
43
  * Call this when user grants or revokes consent.
44
44
  *
45
- * @param consent - Object with analytics and/or advertising consent state
45
+ * If `initialize()` has not run yet, the update is stashed and flushed
46
+ * after any Consent Mode `default`, before GTM / gtag.js load.
46
47
  */
47
- updateConsent(consent: ConsentState): void;
48
+ updateConsent(consent: AnalyticsConsentState): void;
48
49
  trackEvent(event: string, properties: Record<string, unknown>): void;
49
50
  trackPage(url: string, properties: PageTrackingProperties): void;
50
51
  trackClick(properties: ClickTrackingProperties): void;
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleTagManagerAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElG,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,EAAE,OAAO,EAAE,CAAC;KACtB;CACF;AAED;;GAEG;AACH,UAAU,YAAY;IACpB,iCAAiC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAyB;IAEvC,YAAY,MAAM,EAAE,sBAAsB,EAEzC;IAED;;OAEG;IACH,OAAO,CAAC,IAAI;IAMZ;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAS7B,UAAU,SAyDT;IAED;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,QAgBlC;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWnE;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAe/D;IAED,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAYpD;CACF"}
1
+ {"version":3,"file":"GoogleTagManagerAdapter.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,UAAU,CAAC;AAElB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,SAAS,EAAE,OAAO,EAAE,CAAC;KACtB;CACF;AAED,KAAK,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE7C,UAAU,sBAAsB;IAC9B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAmBD,qBAAa,uBAAwB,YAAW,gBAAgB;IAC9D,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,cAAc,CAAoC;IAE1D,YAAY,MAAM,EAAE,sBAAsB,EAEzC;IAED;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,iBAAiB;IAgBzB,8EAA8E;IAC9E,OAAO,CAAC,mBAAmB;IAQ3B,UAAU,SAsDT;IAED;;;;;;OAMG;IACH,aAAa,CAAC,OAAO,EAAE,qBAAqB,QAc3C;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAWnE;IAED,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAe/D;IAED,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAYpD;CACF"}
@@ -1,30 +1,64 @@
1
1
  'use client';
2
+ function toConsentMode(allowed) {
3
+ return allowed ? 'granted' : 'denied';
4
+ }
5
+ /**
6
+ * Push a gtag command. Consent Mode only honours the `arguments` object
7
+ * (`function gtag(){ dataLayer.push(arguments); }`), not a real Array.
8
+ */
9
+ const gtag = function gtag() {
10
+ if (typeof window === 'undefined') {
11
+ return;
12
+ }
13
+ window.dataLayer = window.dataLayer || [];
14
+ // biome-ignore lint/complexity/noArguments: Google Consent Mode requires Arguments
15
+ window.dataLayer.push(arguments);
16
+ };
2
17
  export class GoogleTagManagerAdapter {
3
18
  initialized = false;
4
19
  config;
20
+ pendingConsent;
5
21
  constructor(config) {
6
22
  this.config = config;
7
23
  }
8
24
  /**
9
- * Push gtag commands to dataLayer
10
- */
11
- gtag(...args) {
12
- if (typeof window === 'undefined')
13
- return;
14
- window.dataLayer = window.dataLayer || [];
15
- window.dataLayer.push(args);
16
- }
17
- /**
18
- * Initialize consent mode with all consent types granted by default
25
+ * Push Consent Mode `default` only when the site set `consentDefault`.
26
+ * Unset means the CMP decides — do not grant advertising keys implicitly.
19
27
  */
20
28
  initializeConsentMode() {
21
- this.gtag('consent', 'default', {
22
- analytics_storage: 'granted',
23
- ad_storage: 'granted',
24
- ad_user_data: 'granted',
25
- ad_personalization: 'granted',
29
+ const value = this.config.consentDefault;
30
+ if (value === undefined) {
31
+ return;
32
+ }
33
+ gtag('consent', 'default', {
34
+ analytics_storage: value,
35
+ ad_storage: value,
36
+ ad_user_data: value,
37
+ ad_personalization: value,
26
38
  });
27
39
  }
40
+ pushConsentUpdate(consent) {
41
+ if (consent.analytics !== undefined) {
42
+ gtag('consent', 'update', {
43
+ analytics_storage: toConsentMode(consent.analytics),
44
+ });
45
+ }
46
+ if (consent.advertising !== undefined) {
47
+ gtag('consent', 'update', {
48
+ ad_storage: toConsentMode(consent.advertising),
49
+ ad_user_data: toConsentMode(consent.advertising),
50
+ ad_personalization: toConsentMode(consent.advertising),
51
+ });
52
+ }
53
+ }
54
+ /** Apply a stashed update immediately after `default`, before GTM/gtag.js. */
55
+ flushPendingConsent() {
56
+ if (!this.pendingConsent) {
57
+ return;
58
+ }
59
+ this.pushConsentUpdate(this.pendingConsent);
60
+ this.pendingConsent = undefined;
61
+ }
28
62
  initialize() {
29
63
  if (typeof window === 'undefined' || this.initialized)
30
64
  return;
@@ -33,19 +67,18 @@ export class GoogleTagManagerAdapter {
33
67
  console.warn('[GTM Adapter] No container ID or measurement ID provided');
34
68
  return;
35
69
  }
36
- // Initialize dataLayer
37
70
  window.dataLayer = window.dataLayer || [];
38
- // IMPORTANT: Initialize consent BEFORE loading GTM
71
+ // Optional Consent Mode `default` (only if `consentDefault` is set), then
72
+ // any stashed `update`, THEN GTM / gtag.js.
39
73
  this.initializeConsentMode();
74
+ this.flushPendingConsent();
40
75
  if (containerId) {
41
- // Check if GTM script already exists
42
76
  const existingScript = document.querySelector(`script[src*="googletagmanager.com/gtm.js?id=${containerId}"]`);
43
77
  if (existingScript) {
44
78
  console.warn(`[GTM Adapter] GTM script with ID ${containerId} already exists in document.`);
45
79
  this.initialized = true;
46
80
  return;
47
81
  }
48
- // Load GTM
49
82
  window.dataLayer.push({ 'gtm.start': Date.now(), event: 'gtm.js' });
50
83
  const script = document.createElement('script');
51
84
  script.async = true;
@@ -53,20 +86,18 @@ export class GoogleTagManagerAdapter {
53
86
  document.head.appendChild(script);
54
87
  }
55
88
  else if (measurementId) {
56
- // Check if GA4 script already exists
57
89
  const existingScript = document.querySelector(`script[src*="googletagmanager.com/gtag/js?id=${measurementId}"]`);
58
90
  if (existingScript) {
59
91
  console.warn(`[GTM Adapter] GA4 script with ID ${measurementId} already exists in document.`);
60
92
  this.initialized = true;
61
93
  return;
62
94
  }
63
- // Load GA4 directly (gtag.js)
64
95
  const script = document.createElement('script');
65
96
  script.async = true;
66
97
  script.src = `https://www.googletagmanager.com/gtag/js?id=${measurementId}`;
67
98
  document.head.appendChild(script);
68
- this.gtag('js', new Date());
69
- this.gtag('config', measurementId);
99
+ gtag('js', new Date());
100
+ gtag('config', measurementId);
70
101
  }
71
102
  this.initialized = true;
72
103
  }
@@ -74,23 +105,21 @@ export class GoogleTagManagerAdapter {
74
105
  * Update consent state for specific purposes.
75
106
  * Call this when user grants or revokes consent.
76
107
  *
77
- * @param consent - Object with analytics and/or advertising consent state
108
+ * If `initialize()` has not run yet, the update is stashed and flushed
109
+ * after any Consent Mode `default`, before GTM / gtag.js load.
78
110
  */
79
111
  updateConsent(consent) {
80
112
  if (typeof window === 'undefined')
81
113
  return;
82
- if (consent.analytics !== undefined) {
83
- this.gtag('consent', 'update', {
84
- analytics_storage: consent.analytics ? 'granted' : 'denied',
85
- });
86
- }
87
- if (consent.advertising !== undefined) {
88
- this.gtag('consent', 'update', {
89
- ad_storage: consent.advertising ? 'granted' : 'denied',
90
- ad_user_data: consent.advertising ? 'granted' : 'denied',
91
- ad_personalization: consent.advertising ? 'granted' : 'denied',
92
- });
114
+ this.pendingConsent = {
115
+ ...this.pendingConsent,
116
+ ...consent,
117
+ };
118
+ if (!this.initialized) {
119
+ return;
93
120
  }
121
+ this.pushConsentUpdate(consent);
122
+ this.pendingConsent = undefined;
94
123
  }
95
124
  trackEvent(event, properties) {
96
125
  if (typeof window === 'undefined')
@@ -1 +1 @@
1
- {"version":3,"file":"GoogleTagManagerAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GoogleTagManagerAdapter.js","sourceRoot":"","sources":["../../../src/analytics/adapters/GoogleTagManagerAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AnalyticsAdapter, AnalyticsConsentState } from '../types';
2
+ export declare function callInitialize(adapter: AnalyticsAdapter): void;
3
+ export declare function callUpdateConsent(adapter: AnalyticsAdapter, consent: AnalyticsConsentState): void;
4
+ //# sourceMappingURL=adapterMethods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapterMethods.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/adapterMethods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAExE,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAI9D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAIjG"}
@@ -0,0 +1,11 @@
1
+ export function callInitialize(adapter) {
2
+ if ('initialize' in adapter && typeof adapter.initialize === 'function') {
3
+ adapter.initialize();
4
+ }
5
+ }
6
+ export function callUpdateConsent(adapter, consent) {
7
+ if ('updateConsent' in adapter && typeof adapter.updateConsent === 'function') {
8
+ adapter.updateConsent(consent);
9
+ }
10
+ }
11
+ //# sourceMappingURL=adapterMethods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapterMethods.js","sourceRoot":"","sources":["../../../src/analytics/adapters/adapterMethods.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,OAAyB;IACtD,IAAI,YAAY,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;QACxE,OAAO,CAAC,UAAU,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAyB,EAAE,OAA8B;IACzF,IAAI,eAAe,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QAC9E,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { CompositeAnalyticsAdapter } from './CompositeAnalyticsAdapter';
2
+ export type { ConsentAwareAdapterOptions } from './ConsentAwareAdapter';
2
3
  export { ConsentAwareAdapter } from './ConsentAwareAdapter';
3
4
  export { ConsoleAnalyticsAdapter } from './ConsoleAnalyticsAdapter';
4
5
  export { GoogleTagManagerAdapter } from './GoogleTagManagerAdapter';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analytics/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analytics/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,39 @@
1
+ export type ConsentStatus = 'granted' | 'denied';
2
+ export type ConsentModel = 'opt-in' | 'opt-out';
3
+ /**
4
+ * Browser privacy-signal surface. `Navigator` plus GPC (`globalPrivacyControl`).
5
+ */
6
+ export interface PrivacySignalNavigator {
7
+ doNotTrack?: string | null;
8
+ msDoNotTrack?: string | null;
9
+ globalPrivacyControl?: boolean;
10
+ }
11
+ export interface ResolveAnalyticsConsentOptions {
12
+ /**
13
+ * Site-configured consent source (cookie, CMP, orejime, etc.).
14
+ * `true` / `'granted'` allow tracking; `false` / `'denied'` block it.
15
+ * `null` / `undefined` means unset — the `model` default applies.
16
+ */
17
+ source?: () => boolean | ConsentStatus | null | undefined;
18
+ /**
19
+ * When `source` is unset: `opt-out` grants tracking, `opt-in` denies it.
20
+ * Defaults to `opt-out` so sites that never configure consent keep tracking.
21
+ */
22
+ model?: ConsentModel;
23
+ /** Treat Global Privacy Control as an opt-out. Default `false`. */
24
+ honorGlobalPrivacyControl?: boolean;
25
+ /** Treat Do Not Track as an opt-out. Default `false`. */
26
+ honorDoNotTrack?: boolean;
27
+ /** Override `navigator` (tests). */
28
+ navigator?: PrivacySignalNavigator;
29
+ }
30
+ /**
31
+ * Resolve whether analytics tracking is allowed.
32
+ *
33
+ * Unconfigured sites (`{}` or omitted options) return `true` (opt-out / track).
34
+ * Honored GPC and DNT always deny, even if the site source would grant.
35
+ */
36
+ export declare function resolveAnalyticsConsent(options?: ResolveAnalyticsConsentOptions): boolean;
37
+ /** Stable getter for `ConsentAwareAdapter` / HubSpot `getConsent`. */
38
+ export declare function createConsentGetter(options?: ResolveAnalyticsConsentOptions): () => boolean;
39
+ //# sourceMappingURL=resolveAnalyticsConsent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAnalyticsConsent.d.ts","sourceRoot":"","sources":["../../../src/analytics/consent/resolveAnalyticsConsent.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;AACjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,8BAA8B;IAC7C;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,OAAO,GAAG,aAAa,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D;;;OAGG;IACH,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,mEAAmE;IACnE,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,yDAAyD;IACzD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oCAAoC;IACpC,SAAS,CAAC,EAAE,sBAAsB,CAAC;CACpC;AA+BD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,GAAE,8BAAmC,GAAG,OAAO,CAmB7F;AAED,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,8BAAmC,GAAG,MAAM,OAAO,CAE/F"}
@@ -0,0 +1,53 @@
1
+ function readSource(source) {
2
+ if (!source) {
3
+ return undefined;
4
+ }
5
+ const value = source();
6
+ if (value === null || value === undefined) {
7
+ return undefined;
8
+ }
9
+ if (value === 'granted' || value === true) {
10
+ return true;
11
+ }
12
+ if (value === 'denied' || value === false) {
13
+ return false;
14
+ }
15
+ return undefined;
16
+ }
17
+ function isDoNotTrackEnabled(nav) {
18
+ if (!nav) {
19
+ return false;
20
+ }
21
+ const signal = nav.doNotTrack ?? nav.msDoNotTrack;
22
+ return signal === '1' || signal === 'yes';
23
+ }
24
+ function isGlobalPrivacyControlEnabled(nav) {
25
+ return nav?.globalPrivacyControl === true;
26
+ }
27
+ /**
28
+ * Resolve whether analytics tracking is allowed.
29
+ *
30
+ * Unconfigured sites (`{}` or omitted options) return `true` (opt-out / track).
31
+ * Honored GPC and DNT always deny, even if the site source would grant.
32
+ */
33
+ export function resolveAnalyticsConsent(options = {}) {
34
+ const nav = options.navigator ??
35
+ (typeof navigator !== 'undefined' ? navigator : undefined);
36
+ if (options.honorGlobalPrivacyControl && isGlobalPrivacyControlEnabled(nav)) {
37
+ return false;
38
+ }
39
+ if (options.honorDoNotTrack && isDoNotTrackEnabled(nav)) {
40
+ return false;
41
+ }
42
+ const fromSource = readSource(options.source);
43
+ if (fromSource !== undefined) {
44
+ return fromSource;
45
+ }
46
+ const model = options.model ?? 'opt-out';
47
+ return model === 'opt-out';
48
+ }
49
+ /** Stable getter for `ConsentAwareAdapter` / HubSpot `getConsent`. */
50
+ export function createConsentGetter(options = {}) {
51
+ return () => resolveAnalyticsConsent(options);
52
+ }
53
+ //# sourceMappingURL=resolveAnalyticsConsent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAnalyticsConsent.js","sourceRoot":"","sources":["../../../src/analytics/consent/resolveAnalyticsConsent.ts"],"names":[],"mappings":"AAgCA,SAAS,UAAU,CAAC,MAAgD;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;IACvB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAuC;IAClE,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,YAAY,CAAC;IAClD,OAAO,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,KAAK,CAAC;AAC5C,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAuC;IAC5E,OAAO,GAAG,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAC5C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAO,GAAmC,EAAE;IAClF,MAAM,GAAG,GACP,OAAO,CAAC,SAAS;QACjB,CAAC,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAE,SAAoC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAEzF,IAAI,OAAO,CAAC,yBAAyB,IAAI,6BAA6B,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,IAAI,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC;IACzC,OAAO,KAAK,KAAK,SAAS,CAAC;AAC7B,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,mBAAmB,CAAC,OAAO,GAAmC,EAAE;IAC9E,OAAO,GAAG,EAAE,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAChD,CAAC"}
@@ -17,6 +17,15 @@ export interface PageTrackingProperties extends IAnalyticsContext {
17
17
  url: string;
18
18
  pathname: string;
19
19
  }
20
+ /**
21
+ * Consent Mode / adapter consent payload.
22
+ * `analytics` maps to analytics_storage (GTM) and HubSpot tracking.
23
+ * `advertising` maps to ad_storage / ad_user_data / ad_personalization (GTM).
24
+ */
25
+ export interface AnalyticsConsentState {
26
+ analytics?: boolean;
27
+ advertising?: boolean;
28
+ }
20
29
  /**
21
30
  * Interface that analytics adapters must implement
22
31
  */
@@ -38,5 +47,16 @@ export interface AnalyticsAdapter {
38
47
  * @param properties - Click tracking properties
39
48
  */
40
49
  trackClick(properties: ClickTrackingProperties): void;
50
+ /**
51
+ * Load vendor scripts. Optional — not all adapters need a script.
52
+ * `ConsentAwareAdapter` always forwards this; vendors that must not load
53
+ * while consent is denied (HubSpot) self-gate inside `initialize`.
54
+ */
55
+ initialize?(): void;
56
+ /**
57
+ * Apply a consent change (GTM Consent Mode update, HubSpot `doNotTrack`).
58
+ * Called by `ConsentAwareAdapter` on initialize and when consent flips.
59
+ */
60
+ updateConsent?(consent: AnalyticsConsentState): void;
41
61
  }
42
62
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAErE;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAEjE;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,iBAAiB,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;OAIG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAErE;;;;OAIG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAEjE;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAEtD;;;;OAIG;IACH,UAAU,CAAC,IAAI,IAAI,CAAC;IAEpB;;;OAGG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACtD"}
package/dist/index.d.ts CHANGED
@@ -37,8 +37,11 @@ export type { RenderMark, RenderNode, RenderText } from '@contentful/rich-text-r
37
37
  export type { AnalyticsPageTrackerProps } from './analytics/AnalyticsPageTracker';
38
38
  export { AnalyticsPageTracker } from './analytics/AnalyticsPageTracker';
39
39
  export { AnalyticsProvider, useAnalyticsContext } from './analytics/AnalyticsProvider';
40
+ export type { ConsentAwareAdapterOptions } from './analytics/adapters';
40
41
  export { CompositeAnalyticsAdapter, ConsentAwareAdapter, ConsoleAnalyticsAdapter, GoogleTagManagerAdapter, } from './analytics/adapters';
41
- export type { AnalyticsAdapter, ClickTrackingProperties, PageTrackingProperties, } from './analytics/types';
42
+ export type { ConsentModel, ConsentStatus, PrivacySignalNavigator, ResolveAnalyticsConsentOptions, } from './analytics/consent/resolveAnalyticsConsent';
43
+ export { createConsentGetter, resolveAnalyticsConsent, } from './analytics/consent/resolveAnalyticsConsent';
44
+ export type { AnalyticsAdapter, AnalyticsConsentState, ClickTrackingProperties, PageTrackingProperties, } from './analytics/types';
42
45
  export { useAnalytics } from './analytics/useAnalytics';
43
46
  export type { CreateVideoEngagementSessionOptions, UseVideoEngagementOptions, VideoEngagementEventName, VideoEngagementIdentity, VideoEngagementSession, VideoEngagementTrackFn, VideoProvider, } from './analytics/video';
44
47
  export { createVideoEngagementSession, useHtml5VideoEngagement, useVideoEngagement, VIDEO_ENGAGEMENT_EVENT_NAMES, VIDEO_ENGAGEMENT_EVENTS, VIDEO_ENGAGEMENT_THRESHOLDS, } from './analytics/video';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -38,6 +38,7 @@ export { AnalyticsPageTracker } from './analytics/AnalyticsPageTracker';
38
38
  export { AnalyticsProvider, useAnalyticsContext } from './analytics/AnalyticsProvider';
39
39
  // Analytics Adapters
40
40
  export { CompositeAnalyticsAdapter, ConsentAwareAdapter, ConsoleAnalyticsAdapter, GoogleTagManagerAdapter, } from './analytics/adapters';
41
+ export { createConsentGetter, resolveAnalyticsConsent, } from './analytics/consent/resolveAnalyticsConsent';
41
42
  export { useAnalytics } from './analytics/useAnalytics';
42
43
  export { createVideoEngagementSession, useHtml5VideoEngagement, useVideoEngagement, VIDEO_ENGAGEMENT_EVENT_NAMES, VIDEO_ENGAGEMENT_EVENTS, VIDEO_ENGAGEMENT_THRESHOLDS, } from './analytics/video';
43
44
  export { buildCollectionMaps, buildComponentMaps, buildExternalComponentMaps, buildMarkdownConverters, defineCollection, defineComponent, defineDataType, defineExternalComponent, } from './cmsRegistration';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/docs/llms.md CHANGED
@@ -144,19 +144,39 @@ import { RtfOrString } from '@se-studio/core-ui';
144
144
  ## Analytics
145
145
 
146
146
  ```tsx
147
- import { AnalyticsProvider, useAnalytics, useAnalyticsContext } from '@se-studio/core-ui';
148
- import { GoogleTagManagerAdapter, ConsentAwareAdapter } from '@se-studio/core-ui';
147
+ import {
148
+ AnalyticsProvider,
149
+ ConsentAwareAdapter,
150
+ GoogleTagManagerAdapter,
151
+ createConsentGetter,
152
+ resolveAnalyticsConsent,
153
+ useAnalytics,
154
+ } from '@se-studio/core-ui';
155
+
156
+ const hasConsent = createConsentGetter({
157
+ model: 'opt-out',
158
+ honorGlobalPrivacyControl: true,
159
+ honorDoNotTrack: true,
160
+ source: () => /* cookie / CMP */ undefined,
161
+ });
149
162
 
150
- // Wrap the app:
151
- <AnalyticsProvider adapters={[new GoogleTagManagerAdapter()]}>
152
- {children}
153
- </AnalyticsProvider>
163
+ const gtm = new GoogleTagManagerAdapter({
164
+ containerId: 'GTM-XXXX',
165
+ consentDefault: 'granted',
166
+ });
167
+ const adapter = new ConsentAwareAdapter(gtm, 'analytics', () => hasConsent(), {
168
+ syncConsent: true,
169
+ });
170
+ adapter.initialize();
171
+
172
+ <AnalyticsProvider adapter={adapter}>{children}</AnalyticsProvider>
154
173
 
155
- // Track clicks:
156
174
  const { trackClick } = useAnalytics();
157
- trackClick({ label: 'CTA Button', href: '/signup' });
175
+ trackClick('Button', 'CTA Button', { slug: 'home' });
158
176
  ```
159
177
 
178
+ `resolveAnalyticsConsent` defaults to granted (opt-out) when unconfigured. GTM Consent Mode uses `gtag('consent','default'| 'update')` via the `arguments` object before the container script **only when `consentDefault` is set**; omit it so the CMP decides (R7.7). The Arguments shape (not Array) lets a site’s own `updateConsent` calls take effect. HubSpot: pass `getConsent` so `initialize()` does not inject `js.hs-scripts.com` while denied. `ConsentAwareAdapter` vendor sync is opt-in `{ syncConsent: true }` and updates **analytics** only.
179
+
160
180
  ### Video engagement events
161
181
 
162
182
  Interactive (non-autoplay) Vimeo and YouTube videos fire `trackEvent` with:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@se-studio/core-ui",
3
- "version": "1.33.3",
3
+ "version": "1.34.0",
4
4
  "description": "Shared React UI component library with Tailwind CSS v4 for SE Studio applications",
5
5
  "repository": {
6
6
  "type": "git",