flowgrid-sdk 1.7.1 → 1.7.2

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 (37) hide show
  1. package/README.md +94 -129
  2. package/dist/browser.d.ts +3 -0
  3. package/dist/browser.js +39 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/flowgrid.min.js +1 -1
  6. package/dist/flowgrid.min.js.map +1 -1
  7. package/dist/index.d.ts +4 -4
  8. package/dist/index.js +4 -2
  9. package/dist/index.js.map +1 -1
  10. package/dist/lib/consent/declarativeBanner.d.ts +71 -0
  11. package/dist/lib/consent/declarativeBanner.js +258 -0
  12. package/dist/lib/consent/declarativeBanner.js.map +1 -0
  13. package/dist/lib/consent/index.d.ts +2 -0
  14. package/dist/lib/consent/index.js +3 -1
  15. package/dist/lib/consent/index.js.map +1 -1
  16. package/dist/lib/consent/types.d.ts +24 -0
  17. package/dist/lib/features/core/activation.d.ts +10 -0
  18. package/dist/lib/features/core/activation.js +19 -0
  19. package/dist/lib/features/core/activation.js.map +1 -1
  20. package/dist/lib/features/core/declarativeExperiments.d.ts +4 -0
  21. package/dist/lib/features/core/declarativeExperiments.js +23 -1
  22. package/dist/lib/features/core/declarativeExperiments.js.map +1 -1
  23. package/dist/lib/flowgrid.d.ts +39 -1
  24. package/dist/lib/flowgrid.js +31 -4
  25. package/dist/lib/flowgrid.js.map +1 -1
  26. package/dist/lib/helpers/consent.d.ts +51 -2
  27. package/dist/lib/helpers/consent.js +337 -8
  28. package/dist/lib/helpers/consent.js.map +1 -1
  29. package/dist/lib/helpers/index.d.ts +2 -2
  30. package/dist/lib/helpers/index.js +2 -1
  31. package/dist/lib/helpers/index.js.map +1 -1
  32. package/dist/lib/tracking/core/activation.d.ts +2 -0
  33. package/dist/lib/tracking/core/activation.js +4 -0
  34. package/dist/lib/tracking/core/activation.js.map +1 -1
  35. package/dist/umd/index.js +1 -1
  36. package/dist/umd/index.js.map +1 -1
  37. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -46,7 +46,7 @@ export { getCookie, getVisitorId, getSessionId, getWebId, getUTM, getUTMHistory,
46
46
  export type { FlowGridUTM, FlowGridUTMHistoryEntry, } from "./lib/utils/storage";
47
47
  export { IdentityManager } from "./lib/utils/identity";
48
48
  export type { IdentityConfig, ServerCookieReader, } from "./lib/utils/identity";
49
- export { ConsentManager } from "./lib/consent";
50
- export type { ConsentConfig, ConsentPreferences, ConsentCategory as ConsentCategoryType, ConsentChangeEvent, CookieBannerConfig, CookieBannerTheme, } from "./lib/consent";
51
- export { getOrCreateAnonId, getOrCreateCartId, resetCartId, setupConsent, attachConsentBanner, } from "./lib/helpers";
52
- export type { ConsentBannerOptions, ConsentBannerHandle, } from "./lib/helpers";
49
+ export { ConsentManager, wireDeclarativeBanners } from "./lib/consent";
50
+ export type { ConsentConfig, ConsentPreferences, ConsentCategory as ConsentCategoryType, ConsentChangeEvent, CookieBannerConfig, CookieBannerTheme, WireDeclarativeBannersOptions, DeclarativeBannersHandle, } from "./lib/consent";
51
+ export { getOrCreateAnonId, getOrCreateCartId, resetCartId, setupConsent, attachConsentBanner, renderConsentBanner, } from "./lib/helpers";
52
+ export type { ConsentBannerOptions, ConsentBannerHandle, RenderConsentBannerOptions, } from "./lib/helpers";
package/dist/index.js CHANGED
@@ -31,8 +31,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.resetCartId = exports.getOrCreateCartId = exports.getOrCreateAnonId = exports.ConsentManager = exports.IdentityManager = exports.getUTMHistory = exports.getUTM = exports.getWebId = exports.getSessionId = exports.getVisitorId = exports.getCookie = exports.Forecasting = exports.SecurityAnalytics = exports.AlertsAnalytics = exports.PathAnalytics = exports.AcquisitionAnalytics = exports.SupportAnalytics = exports.MultiPathFunnels = exports.Monetization = exports.ChurnAnalytics = exports.Cohorts = exports.Engagement = exports.FlowGridTransport = exports.Subscriptions = exports.SearchAnalytics = exports.CustomerLTV = exports.WishlistTracking = exports.Promotions = exports.Refunds = exports.Purchases = exports.Checkout = exports.CartTracking = exports.Products = exports.SessionReplay = exports.Performance = exports.PerformanceTracking = exports.Heatmaps = exports.Attribution = exports.Retention = exports.Funnels = exports.Identify = exports.Events = exports.Sessions = exports.PageViews = exports.Experiment = exports.TrackPrompt = exports.TrackFeature = exports.Activation = exports.default = exports.FlowGrid = void 0;
35
- exports.attachConsentBanner = exports.setupConsent = void 0;
34
+ exports.getOrCreateCartId = exports.getOrCreateAnonId = exports.wireDeclarativeBanners = exports.ConsentManager = exports.IdentityManager = exports.getUTMHistory = exports.getUTM = exports.getWebId = exports.getSessionId = exports.getVisitorId = exports.getCookie = exports.Forecasting = exports.SecurityAnalytics = exports.AlertsAnalytics = exports.PathAnalytics = exports.AcquisitionAnalytics = exports.SupportAnalytics = exports.MultiPathFunnels = exports.Monetization = exports.ChurnAnalytics = exports.Cohorts = exports.Engagement = exports.FlowGridTransport = exports.Subscriptions = exports.SearchAnalytics = exports.CustomerLTV = exports.WishlistTracking = exports.Promotions = exports.Refunds = exports.Purchases = exports.Checkout = exports.CartTracking = exports.Products = exports.SessionReplay = exports.Performance = exports.PerformanceTracking = exports.Heatmaps = exports.Attribution = exports.Retention = exports.Funnels = exports.Identify = exports.Events = exports.Sessions = exports.PageViews = exports.Experiment = exports.TrackPrompt = exports.TrackFeature = exports.Activation = exports.default = exports.FlowGrid = void 0;
35
+ exports.renderConsentBanner = exports.attachConsentBanner = exports.setupConsent = exports.resetCartId = void 0;
36
36
  // ============================================================================
37
37
  // UNIFIED SDK CLASS
38
38
  // ============================================================================
@@ -116,6 +116,7 @@ Object.defineProperty(exports, "IdentityManager", { enumerable: true, get: funct
116
116
  // ============================================================================
117
117
  var consent_1 = require("./lib/consent");
118
118
  Object.defineProperty(exports, "ConsentManager", { enumerable: true, get: function () { return consent_1.ConsentManager; } });
119
+ Object.defineProperty(exports, "wireDeclarativeBanners", { enumerable: true, get: function () { return consent_1.wireDeclarativeBanners; } });
119
120
  // ============================================================================
120
121
  // DROP-IN HELPERS
121
122
  //
@@ -128,4 +129,5 @@ Object.defineProperty(exports, "getOrCreateCartId", { enumerable: true, get: fun
128
129
  Object.defineProperty(exports, "resetCartId", { enumerable: true, get: function () { return helpers_1.resetCartId; } });
129
130
  Object.defineProperty(exports, "setupConsent", { enumerable: true, get: function () { return helpers_1.setupConsent; } });
130
131
  Object.defineProperty(exports, "attachConsentBanner", { enumerable: true, get: function () { return helpers_1.attachConsentBanner; } });
132
+ Object.defineProperty(exports, "renderConsentBanner", { enumerable: true, get: function () { return helpers_1.renderConsentBanner; } });
131
133
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,2CAA0C;AAAjC,oGAAA,QAAQ,OAAA;AACjB,2CAAyC;AAAhC,oHAAA,OAAO,OAAA;AAGhB,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,4CAK6B;AAJ3B,kGAAA,UAAU,OAAA;AACV,oGAAA,YAAY,OAAA;AACZ,mGAAA,WAAW,OAAA;AACX,kGAAA,UAAU,OAAA;AA8BZ,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,sDAYkC;AAXhC,sGAAA,SAAS,OAAA;AACT,qGAAA,QAAQ,OAAA;AACR,mGAAA,MAAM,OAAA;AACN,qGAAA,QAAQ,OAAA;AACR,oGAAA,OAAO,OAAA;AACP,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AACX,qGAAA,QAAQ,OAAA;AACR,gHAAA,mBAAmB,OAAA;AACnB,wGAAA,mBAAmB,OAAe;AAClC,0GAAA,aAAa,OAAA;AAiEf,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,sDAWkC;AAVhC,qGAAA,QAAQ,OAAA;AACR,yGAAA,YAAY,OAAA;AACZ,qGAAA,QAAQ,OAAA;AACR,sGAAA,SAAS,OAAA;AACT,oGAAA,OAAO,OAAA;AACP,uGAAA,UAAU,OAAA;AACV,6GAAA,gBAAgB,OAAA;AAChB,wGAAA,WAAW,OAAA;AACX,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AAqDf,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,sDAAsD;AACtD,oDAA2D;AAAlD,8GAAA,iBAAiB,OAAA;AAG1B,wDAYmC;AAXjC,wGAAA,UAAU,OAAA;AACV,qGAAA,OAAO,OAAA;AACP,4GAAA,cAAc,OAAA;AACd,0GAAA,YAAY,OAAA;AACZ,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAChB,kHAAA,oBAAoB,OAAA;AACpB,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,yGAAA,WAAW,OAAA;AAwNb,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,kFAAkF;AAClF,+CAO6B;AAN3B,oGAAA,SAAS,OAAA;AACT,uGAAA,YAAY,OAAA;AACZ,uGAAA,YAAY,OAAA;AACZ,mGAAA,QAAQ,OAAA;AACR,iGAAA,MAAM,OAAA;AACN,wGAAA,aAAa,OAAA;AAQf,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,iDAAuD;AAA9C,2GAAA,eAAe,OAAA;AAOxB,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,yCAA+C;AAAtC,yGAAA,cAAc,OAAA;AAWvB,+EAA+E;AAC/E,kBAAkB;AAClB,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAE/E,yCAMuB;AALrB,4GAAA,iBAAiB,OAAA;AACjB,4GAAA,iBAAiB,OAAA;AACjB,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,8GAAA,mBAAmB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;;;;;;;AAEH,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,2CAA0C;AAAjC,oGAAA,QAAQ,OAAA;AACjB,2CAAyC;AAAhC,oHAAA,OAAO,OAAA;AAGhB,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,4CAK6B;AAJ3B,kGAAA,UAAU,OAAA;AACV,oGAAA,YAAY,OAAA;AACZ,mGAAA,WAAW,OAAA;AACX,kGAAA,UAAU,OAAA;AA8BZ,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,sDAYkC;AAXhC,sGAAA,SAAS,OAAA;AACT,qGAAA,QAAQ,OAAA;AACR,mGAAA,MAAM,OAAA;AACN,qGAAA,QAAQ,OAAA;AACR,oGAAA,OAAO,OAAA;AACP,sGAAA,SAAS,OAAA;AACT,wGAAA,WAAW,OAAA;AACX,qGAAA,QAAQ,OAAA;AACR,gHAAA,mBAAmB,OAAA;AACnB,wGAAA,mBAAmB,OAAe;AAClC,0GAAA,aAAa,OAAA;AAiEf,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,sDAWkC;AAVhC,qGAAA,QAAQ,OAAA;AACR,yGAAA,YAAY,OAAA;AACZ,qGAAA,QAAQ,OAAA;AACR,sGAAA,SAAS,OAAA;AACT,oGAAA,OAAO,OAAA;AACP,uGAAA,UAAU,OAAA;AACV,6GAAA,gBAAgB,OAAA;AAChB,wGAAA,WAAW,OAAA;AACX,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AAqDf,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,sDAAsD;AACtD,oDAA2D;AAAlD,8GAAA,iBAAiB,OAAA;AAG1B,wDAYmC;AAXjC,wGAAA,UAAU,OAAA;AACV,qGAAA,OAAO,OAAA;AACP,4GAAA,cAAc,OAAA;AACd,0GAAA,YAAY,OAAA;AACZ,8GAAA,gBAAgB,OAAA;AAChB,8GAAA,gBAAgB,OAAA;AAChB,kHAAA,oBAAoB,OAAA;AACpB,2GAAA,aAAa,OAAA;AACb,6GAAA,eAAe,OAAA;AACf,+GAAA,iBAAiB,OAAA;AACjB,yGAAA,WAAW,OAAA;AAwNb,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E,kFAAkF;AAClF,+CAO6B;AAN3B,oGAAA,SAAS,OAAA;AACT,uGAAA,YAAY,OAAA;AACZ,uGAAA,YAAY,OAAA;AACZ,mGAAA,QAAQ,OAAA;AACR,iGAAA,MAAM,OAAA;AACN,wGAAA,aAAa,OAAA;AAQf,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,iDAAuD;AAA9C,2GAAA,eAAe,OAAA;AAOxB,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,yCAAuE;AAA9D,yGAAA,cAAc,OAAA;AAAE,iHAAA,sBAAsB,OAAA;AAa/C,+EAA+E;AAC/E,kBAAkB;AAClB,EAAE;AACF,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAE/E,yCAOuB;AANrB,4GAAA,iBAAiB,OAAA;AACjB,4GAAA,iBAAiB,OAAA;AACjB,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,8GAAA,mBAAmB,OAAA;AACnB,8GAAA,mBAAmB,OAAA"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @fileoverview Declarative, attribute-driven cookie-consent banner (no-code).
3
+ * @module consent/declarativeBanner
4
+ *
5
+ * @description
6
+ * The no-code front door to the FlowGrid consent stack. A customer drops a
7
+ * single element on the page:
8
+ *
9
+ * ```html
10
+ * <div data-cookie-ccbanner></div>
11
+ * ```
12
+ *
13
+ * …and this layer initialises a fully styled, opt-in, GDPR/CCPA-friendly consent
14
+ * banner that blocks analytics, marketing and session-replay tracking until the
15
+ * visitor accepts — with zero JavaScript. It contains **no consent logic of its
16
+ * own**: it reads config off the page and delegates to the shipped engine
17
+ * ({@link renderConsentBanner} for the default styled banner, or
18
+ * {@link attachConsentBanner} when the customer supplied their own inner markup),
19
+ * mirroring how `declarativeExperiments.ts` wires `data-fg-*` experiments.
20
+ *
21
+ * @attributes
22
+ * data-cookie-ccbanner Marker. Presence = initialise a banner here.
23
+ * data-cc-mode "opt-in" (default) | "opt-out".
24
+ * data-cc-title / -description Copy overrides.
25
+ * data-cc-accept-label / ... Button label overrides.
26
+ * data-cc-privacy-url Adds a "Learn more" privacy link.
27
+ * data-cc-position / -primary / Theme: position, colours, radius, font, z.
28
+ * -bg / -text / -radius / -font / -z
29
+ * data-cc-categories Comma list of visible toggles (analytics,marketing).
30
+ * data-cc-cookie-name / -days / Cookie persistence overrides.
31
+ * -domain
32
+ * data-cc-respect-dnt="false" Ignore DNT/GPC (defaults to honouring it).
33
+ * data-cc-theme Named preset bundle: flowgrid | light | dark.
34
+ * data-cc-unstyled Drop default CSS (Tier 2 BYO-CSS).
35
+ * data-cc-manage-selector CSS selector whose clicks re-open the banner.
36
+ * data-cc-manual Skip auto-init for this element.
37
+ *
38
+ * Robust to dynamically-injected DOM: a MutationObserver re-scans on changes, so
39
+ * page builders and SPA route changes keep working with zero extra calls. Init
40
+ * is idempotent per element via a `data-cc-wired` marker.
41
+ */
42
+ import type { RenderConsentBannerOptions } from "../helpers/consent";
43
+ /** Options for {@link wireDeclarativeBanners}. */
44
+ export interface WireDeclarativeBannersOptions {
45
+ /**
46
+ * Global defaults, normally read from `window.FlowGridConfig.consentBanner`.
47
+ * Per-element `data-cc-*` attributes override these.
48
+ */
49
+ globalConfig?: RenderConsentBannerOptions;
50
+ }
51
+ /** Handle returned by {@link wireDeclarativeBanners}. */
52
+ export interface DeclarativeBannersHandle {
53
+ /** Re-scan the DOM for new `[data-cookie-ccbanner]` markers. Idempotent. */
54
+ rescan: () => void;
55
+ /** Stop the MutationObserver and tear down every wired banner. */
56
+ disconnect: () => void;
57
+ }
58
+ /**
59
+ * Scan the document for `[data-cookie-ccbanner]` markers and initialise a
60
+ * consent banner for each: the default styled banner via {@link renderConsentBanner}
61
+ * when the element is empty, or the customer's own markup via
62
+ * {@link attachConsentBanner} when it has children. Watches for late-mounted
63
+ * markers via a MutationObserver. Each element is marked `data-cc-wired` so
64
+ * re-scans never double-init.
65
+ *
66
+ * SSR-safe: a no-op (returns inert handle) when there's no `document`.
67
+ *
68
+ * @param options - Optional global defaults to layer beneath `data-cc-*`.
69
+ * @returns A {@link DeclarativeBannersHandle} for manual rescans / teardown.
70
+ */
71
+ export declare function wireDeclarativeBanners(options?: WireDeclarativeBannersOptions): DeclarativeBannersHandle;
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Declarative, attribute-driven cookie-consent banner (no-code).
4
+ * @module consent/declarativeBanner
5
+ *
6
+ * @description
7
+ * The no-code front door to the FlowGrid consent stack. A customer drops a
8
+ * single element on the page:
9
+ *
10
+ * ```html
11
+ * <div data-cookie-ccbanner></div>
12
+ * ```
13
+ *
14
+ * …and this layer initialises a fully styled, opt-in, GDPR/CCPA-friendly consent
15
+ * banner that blocks analytics, marketing and session-replay tracking until the
16
+ * visitor accepts — with zero JavaScript. It contains **no consent logic of its
17
+ * own**: it reads config off the page and delegates to the shipped engine
18
+ * ({@link renderConsentBanner} for the default styled banner, or
19
+ * {@link attachConsentBanner} when the customer supplied their own inner markup),
20
+ * mirroring how `declarativeExperiments.ts` wires `data-fg-*` experiments.
21
+ *
22
+ * @attributes
23
+ * data-cookie-ccbanner Marker. Presence = initialise a banner here.
24
+ * data-cc-mode "opt-in" (default) | "opt-out".
25
+ * data-cc-title / -description Copy overrides.
26
+ * data-cc-accept-label / ... Button label overrides.
27
+ * data-cc-privacy-url Adds a "Learn more" privacy link.
28
+ * data-cc-position / -primary / Theme: position, colours, radius, font, z.
29
+ * -bg / -text / -radius / -font / -z
30
+ * data-cc-categories Comma list of visible toggles (analytics,marketing).
31
+ * data-cc-cookie-name / -days / Cookie persistence overrides.
32
+ * -domain
33
+ * data-cc-respect-dnt="false" Ignore DNT/GPC (defaults to honouring it).
34
+ * data-cc-theme Named preset bundle: flowgrid | light | dark.
35
+ * data-cc-unstyled Drop default CSS (Tier 2 BYO-CSS).
36
+ * data-cc-manage-selector CSS selector whose clicks re-open the banner.
37
+ * data-cc-manual Skip auto-init for this element.
38
+ *
39
+ * Robust to dynamically-injected DOM: a MutationObserver re-scans on changes, so
40
+ * page builders and SPA route changes keep working with zero extra calls. Init
41
+ * is idempotent per element via a `data-cc-wired` marker.
42
+ */
43
+ Object.defineProperty(exports, "__esModule", { value: true });
44
+ exports.wireDeclarativeBanners = wireDeclarativeBanners;
45
+ const consent_1 = require("../helpers/consent");
46
+ const MARKER_ATTR = "data-cookie-ccbanner";
47
+ const WIRED_ATTR = "data-cc-wired";
48
+ const MANUAL_ATTR = "data-cc-manual";
49
+ /**
50
+ * Named theme presets reachable from `data-cc-theme` / `theme: "<name>"`.
51
+ * Explicit `data-cc-*` colour attributes still override the preset.
52
+ */
53
+ const THEME_PRESETS = {
54
+ flowgrid: { primaryColor: "#4F46E5", backgroundColor: "#FFFFFF", textColor: "#1F2937" },
55
+ light: { primaryColor: "#4F46E5", backgroundColor: "#FFFFFF", textColor: "#1F2937" },
56
+ dark: { primaryColor: "#818CF8", backgroundColor: "#111827", textColor: "#F9FAFB" },
57
+ };
58
+ /** Parse a numeric attribute, returning `undefined` when absent or invalid. */
59
+ function num(raw) {
60
+ if (raw == null || raw.trim() === "")
61
+ return undefined;
62
+ const n = Number(raw);
63
+ return Number.isFinite(n) ? n : undefined;
64
+ }
65
+ /**
66
+ * Read `data-cc-*` attributes off an element into a partial banner config.
67
+ * Only present attributes are emitted, so this object can be layered over
68
+ * `window.FlowGridConfig.consentBanner` without clobbering it with defaults.
69
+ */
70
+ function parseElementConfig(el) {
71
+ const attr = (name) => el.getAttribute(name);
72
+ const cfg = {};
73
+ const theme = {};
74
+ // Named preset first so explicit colour attributes below override it.
75
+ const preset = attr("data-cc-theme");
76
+ if (preset && THEME_PRESETS[preset])
77
+ Object.assign(theme, THEME_PRESETS[preset]);
78
+ const mode = attr("data-cc-mode");
79
+ if (mode === "opt-in" || mode === "opt-out")
80
+ cfg.mode = mode;
81
+ const title = attr("data-cc-title");
82
+ if (title != null)
83
+ cfg.title = title;
84
+ const description = attr("data-cc-description");
85
+ if (description != null)
86
+ cfg.description = description;
87
+ const acceptLabel = attr("data-cc-accept-label");
88
+ if (acceptLabel != null)
89
+ cfg.acceptAllLabel = acceptLabel;
90
+ const rejectLabel = attr("data-cc-reject-label");
91
+ if (rejectLabel != null)
92
+ cfg.rejectAllLabel = rejectLabel;
93
+ const customizeLabel = attr("data-cc-customize-label");
94
+ if (customizeLabel != null)
95
+ cfg.customizeLabel = customizeLabel;
96
+ const saveLabel = attr("data-cc-save-label");
97
+ if (saveLabel != null)
98
+ cfg.saveLabel = saveLabel;
99
+ const privacyUrl = attr("data-cc-privacy-url");
100
+ if (privacyUrl != null)
101
+ cfg.privacyPolicyUrl = privacyUrl;
102
+ // Theme appearance
103
+ const position = attr("data-cc-position");
104
+ if (position)
105
+ theme.position = position;
106
+ const primary = attr("data-cc-primary");
107
+ if (primary != null)
108
+ theme.primaryColor = primary;
109
+ const bg = attr("data-cc-bg");
110
+ if (bg != null)
111
+ theme.backgroundColor = bg;
112
+ const text = attr("data-cc-text");
113
+ if (text != null)
114
+ theme.textColor = text;
115
+ const radius = attr("data-cc-radius");
116
+ if (radius != null)
117
+ theme.borderRadius = radius;
118
+ const font = attr("data-cc-font");
119
+ if (font != null)
120
+ theme.fontFamily = font;
121
+ const z = num(attr("data-cc-z"));
122
+ if (z !== undefined)
123
+ theme.zIndex = z;
124
+ if (Object.keys(theme).length > 0)
125
+ cfg.theme = theme;
126
+ // Categories (comma list of visible non-essential toggles).
127
+ const categories = attr("data-cc-categories");
128
+ if (categories != null) {
129
+ cfg.categories = categories
130
+ .split(",")
131
+ .map((s) => s.trim())
132
+ .filter((s) => s.length > 0);
133
+ }
134
+ // Cookie persistence (ConsentConfig fields).
135
+ const cookieName = attr("data-cc-cookie-name");
136
+ if (cookieName != null)
137
+ cfg.cookieName = cookieName;
138
+ const cookieDays = num(attr("data-cc-cookie-days"));
139
+ if (cookieDays !== undefined)
140
+ cfg.cookieDays = cookieDays;
141
+ const cookieDomain = attr("data-cc-cookie-domain");
142
+ if (cookieDomain != null)
143
+ cfg.cookieDomain = cookieDomain;
144
+ const respectDNT = attr("data-cc-respect-dnt");
145
+ if (respectDNT != null)
146
+ cfg.respectDNT = respectDNT !== "false";
147
+ if (el.hasAttribute("data-cc-unstyled"))
148
+ cfg.unstyled = true;
149
+ const manageSelector = attr("data-cc-manage-selector");
150
+ if (manageSelector != null)
151
+ cfg.manageSelector = manageSelector;
152
+ return cfg;
153
+ }
154
+ /**
155
+ * Merge global config (`window.FlowGridConfig.consentBanner`) with the
156
+ * per-element `data-cc-*` config. Precedence (low → high, per the plan):
157
+ * 1. global object
158
+ * 2. element attributes
159
+ * `theme` is merged field-by-field so an element can tweak one colour without
160
+ * dropping the rest of the global theme.
161
+ */
162
+ function mergeConfig(global, element) {
163
+ if (!global)
164
+ return element;
165
+ return {
166
+ ...global,
167
+ ...element,
168
+ theme: global.theme || element.theme ? { ...global.theme, ...element.theme } : undefined,
169
+ };
170
+ }
171
+ /** Whether an element already contains author markup (Tier 3 BYO-markup). */
172
+ function hasChildMarkup(el) {
173
+ return el.children.length > 0;
174
+ }
175
+ /**
176
+ * Scan the document for `[data-cookie-ccbanner]` markers and initialise a
177
+ * consent banner for each: the default styled banner via {@link renderConsentBanner}
178
+ * when the element is empty, or the customer's own markup via
179
+ * {@link attachConsentBanner} when it has children. Watches for late-mounted
180
+ * markers via a MutationObserver. Each element is marked `data-cc-wired` so
181
+ * re-scans never double-init.
182
+ *
183
+ * SSR-safe: a no-op (returns inert handle) when there's no `document`.
184
+ *
185
+ * @param options - Optional global defaults to layer beneath `data-cc-*`.
186
+ * @returns A {@link DeclarativeBannersHandle} for manual rescans / teardown.
187
+ */
188
+ function wireDeclarativeBanners(options) {
189
+ if (typeof document === "undefined") {
190
+ return { rescan: () => { }, disconnect: () => { } };
191
+ }
192
+ const globalConfig = options?.globalConfig;
193
+ const handles = [];
194
+ const wireElement = (el) => {
195
+ if (el.hasAttribute(WIRED_ATTR) || el.hasAttribute(MANUAL_ATTR))
196
+ return;
197
+ el.setAttribute(WIRED_ATTR, "");
198
+ const config = mergeConfig(globalConfig, parseElementConfig(el));
199
+ let handle = null;
200
+ try {
201
+ if (hasChildMarkup(el)) {
202
+ // Tier 3 — bind the customer's own buttons by data-role, never inject DOM.
203
+ handle = (0, consent_1.attachConsentBanner)({ ...config, container: el });
204
+ }
205
+ else {
206
+ // Tiers 1 & 2 — render the default styled banner (the marker is just an
207
+ // anchor; the banner is position:fixed so DOM placement doesn't matter).
208
+ handle = (0, consent_1.renderConsentBanner)(config);
209
+ }
210
+ }
211
+ catch {
212
+ /* never throw from auto-init — leave the page untouched on failure */
213
+ }
214
+ if (handle)
215
+ handles.push(handle);
216
+ };
217
+ const scan = (root = document) => {
218
+ const sel = `[${MARKER_ATTR}]:not([${WIRED_ATTR}])`;
219
+ // The root node itself may be a marker (e.g. a single injected element).
220
+ if (root instanceof Element && root.matches(sel))
221
+ wireElement(root);
222
+ root.querySelectorAll(sel).forEach(wireElement);
223
+ };
224
+ scan();
225
+ // Re-scan when the DOM changes (page builders, SPA navigation, lazy content).
226
+ const observer = typeof MutationObserver !== "undefined"
227
+ ? new MutationObserver((mutations) => {
228
+ for (const m of mutations) {
229
+ m.addedNodes.forEach((node) => {
230
+ if (node.nodeType === 1)
231
+ scan(node);
232
+ });
233
+ }
234
+ })
235
+ : null;
236
+ observer?.observe(document.documentElement, { childList: true, subtree: true });
237
+ return {
238
+ rescan: () => scan(),
239
+ disconnect: () => {
240
+ try {
241
+ observer?.disconnect();
242
+ }
243
+ catch {
244
+ /* ignore */
245
+ }
246
+ for (const h of handles) {
247
+ try {
248
+ h.destroy();
249
+ }
250
+ catch {
251
+ /* ignore */
252
+ }
253
+ }
254
+ handles.length = 0;
255
+ },
256
+ };
257
+ }
258
+ //# sourceMappingURL=declarativeBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declarativeBanner.js","sourceRoot":"","sources":["../../../src/lib/consent/declarativeBanner.ts"],"names":[],"mappings":"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"}
@@ -29,4 +29,6 @@
29
29
  * @see {@link ConsentManager} for the core API.
30
30
  */
31
31
  export { ConsentManager } from './manager';
32
+ export { wireDeclarativeBanners } from './declarativeBanner';
33
+ export type { WireDeclarativeBannersOptions, DeclarativeBannersHandle, } from './declarativeBanner';
32
34
  export type { ConsentCategory, ConsentPreferences, ConsentConfig, ConsentChangeEvent, CookieBannerConfig, CookieBannerTheme, } from './types';
@@ -30,7 +30,9 @@
30
30
  * @see {@link ConsentManager} for the core API.
31
31
  */
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.ConsentManager = void 0;
33
+ exports.wireDeclarativeBanners = exports.ConsentManager = void 0;
34
34
  var manager_1 = require("./manager");
35
35
  Object.defineProperty(exports, "ConsentManager", { enumerable: true, get: function () { return manager_1.ConsentManager; } });
36
+ var declarativeBanner_1 = require("./declarativeBanner");
37
+ Object.defineProperty(exports, "wireDeclarativeBanners", { enumerable: true, get: function () { return declarativeBanner_1.wireDeclarativeBanners; } });
36
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/consent/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAEH,qCAA2C;AAAlC,yGAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/consent/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;;;AAEH,qCAA2C;AAAlC,yGAAA,cAAc,OAAA;AAEvB,yDAA6D;AAApD,2HAAA,sBAAsB,OAAA"}
@@ -122,6 +122,30 @@ export interface CookieBannerTheme {
122
122
  * framework-agnostic.
123
123
  */
124
124
  export interface CookieBannerConfig {
125
+ /**
126
+ * Consent mode. `'opt-in'` (default, GDPR-safe) blocks analytics/marketing —
127
+ * including session-replay chunks — until the visitor accepts. `'opt-out'`
128
+ * (CCPA-style) lets non-essential tracking run until the visitor declines.
129
+ * Maps to {@link ConsentConfig.requireExplicitConsent}.
130
+ */
131
+ mode?: 'opt-in' | 'opt-out';
132
+ /**
133
+ * Which non-essential categories to show as toggles in the customize panel.
134
+ * `necessary` is always shown locked-on and never listed here.
135
+ * Defaults to `['analytics', 'marketing']`.
136
+ */
137
+ categories?: ConsentCategory[];
138
+ /**
139
+ * Drop FlowGrid's default inline styling and emit only the stable `.fg-cc-*`
140
+ * class hooks + CSS variables, so the banner can be fully styled from the
141
+ * page's own stylesheet (Tier 2 "bring your own CSS").
142
+ */
143
+ unstyled?: boolean;
144
+ /**
145
+ * CSS selector for a "Manage cookies" re-open control (e.g. a footer link).
146
+ * Clicks on matching elements re-open the banner via the handle's `show()`.
147
+ */
148
+ manageSelector?: string;
125
149
  /** Banner title. Defaults to `"Cookie Preferences"`. */
126
150
  title?: string;
127
151
  /** Banner description text. */
@@ -212,5 +212,15 @@ export declare class Activation extends FlowGridTransport {
212
212
  * @returns Promise resolving to activation response
213
213
  */
214
214
  trackSignup(userId: string, method: 'email' | 'google' | 'github' | 'apple' | 'sso' | string, source?: string, properties?: Record<string, unknown>): Promise<ActivationResponse>;
215
+ /**
216
+ * Tracks a user login (returning-user signal — recorded as an event, not a
217
+ * funnel conversion).
218
+ *
219
+ * @param userId - User ID
220
+ * @param method - Login method (email, google, etc.)
221
+ * @param properties - Additional properties
222
+ * @returns Promise resolving to activation response
223
+ */
224
+ trackLogin(userId: string, method?: 'email' | 'google' | 'github' | 'apple' | 'sso' | string, properties?: Record<string, unknown>): Promise<ActivationResponse>;
215
225
  }
216
226
  export default Activation;
@@ -173,6 +173,25 @@ class Activation extends transport_1.FlowGridTransport {
173
173
  timestamp: new Date().toISOString()
174
174
  });
175
175
  }
176
+ /**
177
+ * Tracks a user login (returning-user signal — recorded as an event, not a
178
+ * funnel conversion).
179
+ *
180
+ * @param userId - User ID
181
+ * @param method - Login method (email, google, etc.)
182
+ * @param properties - Additional properties
183
+ * @returns Promise resolving to activation response
184
+ */
185
+ async trackLogin(userId, method, properties) {
186
+ return await this.init("login_completed", {
187
+ type: "activation",
188
+ subtype: "login",
189
+ userId,
190
+ method,
191
+ ...properties,
192
+ timestamp: new Date().toISOString()
193
+ });
194
+ }
176
195
  }
177
196
  exports.Activation = Activation;
178
197
  exports.default = Activation;
@@ -1 +1 @@
1
- {"version":3,"file":"activation.js","sourceRoot":"","sources":["../../../../src/lib/features/core/activation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"activation.js","sourceRoot":"","sources":["../../../../src/lib/features/core/activation.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,10 @@ export interface DeclarativeExperimentHost {
45
45
  getAssignments(): Record<string, string>;
46
46
  };
47
47
  track(eventName: string, properties?: Record<string, unknown>): unknown;
48
+ /** Record a signup (used by `data-fg-signup`). */
49
+ signup?(userId: string, method: string, source?: string, properties?: Record<string, unknown>): unknown;
50
+ /** Record a login (used by `data-fg-login`). */
51
+ login?(userId: string, method?: string, properties?: Record<string, unknown>): unknown;
48
52
  }
49
53
  /**
50
54
  * Wire every `[data-fg-goal]` / `[data-fg-event]` element under `root` that
@@ -44,6 +44,8 @@ exports.wireDeclarativeExperiments = wireDeclarativeExperiments;
44
44
  const WIRED_ATTR = "data-fg-wired";
45
45
  const GOAL_ATTR = "data-fg-goal";
46
46
  const EVENT_ATTR = "data-fg-event";
47
+ const SIGNUP_ATTR = "data-fg-signup";
48
+ const LOGIN_ATTR = "data-fg-login";
47
49
  function parseTrigger(raw) {
48
50
  switch ((raw || "").toLowerCase()) {
49
51
  case "load": return "load";
@@ -93,6 +95,26 @@ function fire(host, el) {
93
95
  }
94
96
  catch { /* ignore */ }
95
97
  }
98
+ // No-code signup/login: <button data-fg-signup="google">. The attribute
99
+ // value (or data-fg-method) is the method; data-fg-userid is optional (the
100
+ // funnel keys on the auto-attached visitor_id, so userId is just metadata).
101
+ if (el.hasAttribute(SIGNUP_ATTR) && host.signup) {
102
+ const method = el.getAttribute(SIGNUP_ATTR) || el.getAttribute("data-fg-method") || "unknown";
103
+ const userId = el.getAttribute("data-fg-userid") || "";
104
+ const source = el.getAttribute("data-fg-source") || undefined;
105
+ try {
106
+ void host.signup(userId, method, source, { source: "declarative" });
107
+ }
108
+ catch { /* ignore */ }
109
+ }
110
+ if (el.hasAttribute(LOGIN_ATTR) && host.login) {
111
+ const method = el.getAttribute(LOGIN_ATTR) || el.getAttribute("data-fg-method") || undefined;
112
+ const userId = el.getAttribute("data-fg-userid") || "";
113
+ try {
114
+ void host.login(userId, method, { source: "declarative" });
115
+ }
116
+ catch { /* ignore */ }
117
+ }
96
118
  }
97
119
  /**
98
120
  * Wire every `[data-fg-goal]` / `[data-fg-event]` element under `root` that
@@ -152,7 +174,7 @@ function wireDeclarativeExperiments(host) {
152
174
  }
153
175
  };
154
176
  const scan = (root = document) => {
155
- const sel = `[${GOAL_ATTR}]:not([${WIRED_ATTR}]),[${EVENT_ATTR}]:not([${WIRED_ATTR}])`;
177
+ const sel = `[${GOAL_ATTR}]:not([${WIRED_ATTR}]),[${EVENT_ATTR}]:not([${WIRED_ATTR}]),[${SIGNUP_ATTR}]:not([${WIRED_ATTR}]),[${LOGIN_ATTR}]:not([${WIRED_ATTR}])`;
156
178
  root.querySelectorAll(sel).forEach(wireElement);
157
179
  };
158
180
  scan();
@@ -1 +1 @@
1
- {"version":3,"file":"declarativeExperiments.js","sourceRoot":"","sources":["../../../../src/lib/features/core/declarativeExperiments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"declarativeExperiments.js","sourceRoot":"","sources":["../../../../src/lib/features/core/declarativeExperiments.ts"],"names":[],"mappings":"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"}