@burdenoff/fe-libs 2026.814.3 → 2026.815.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.
@@ -1 +1 @@
1
- {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/images.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAU7C,QAAA,MAAM,2BAA2B,kCAAkC,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAUhD;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,OAAO,GACd,MAAM,CASR;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAeA;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,GAAG,aAAa,GAAG,IAAI,CAgBvB"}
1
+ {"version":3,"file":"images.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/images.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAY7C,QAAA,MAAM,2BAA2B,kCAAkC,CAAC;AAEpE;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAS/E;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CAI5E;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;CACrB,CAeA;AAED,OAAO,EAAE,2BAA2B,EAAE,CAAC;AAEvC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE;IACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,GAAG,aAAa,GAAG,IAAI,CAgBvB"}
@@ -1,5 +1,5 @@
1
1
  //#region src/shared/assistant/images.ts
2
- var e = "burdenoffregistry.azurecr.io", t = "sandbox-app-client-headers-v1";
2
+ var e = "028127330334.dkr.ecr.ap-south-1.amazonaws.com", t = "sandbox-app-client-headers-v1";
3
3
  function n() {
4
4
  try {
5
5
  let e = {
@@ -15,6 +15,19 @@ interface RybbitSinkProps {
15
15
  /** Which event triggers `rybbit.identify`. */
16
16
  identifyOn?: BurdenoffEventName;
17
17
  }
18
+ /** What the user actually chose. `null` means they have never been asked. */
19
+ export type AnalyticsConsentChoice = 'granted' | 'denied';
20
+ /**
21
+ * The recorded choice, or `null` when the user has never answered (BOFF-6373).
22
+ *
23
+ * The store used to be BOOLEAN: granting wrote `'granted'`, refusing called `removeItem`. So
24
+ * "I said no" and "I have not been asked" were the same absent key, and a refusal was
25
+ * unrepresentable. The banner keys its visibility off this, so refusing dismissed it only for
26
+ * the life of that page and it returned on the next full load, every time.
27
+ *
28
+ * A consent choice that is not recorded is not consent — a compliance defect, not an annoyance.
29
+ */
30
+ export declare function readAnalyticsConsentChoice(): AnalyticsConsentChoice | null;
18
31
  export declare function readAnalyticsConsent(): boolean;
19
32
  export declare function setAnalyticsConsent(granted: boolean): void;
20
33
  export declare function shouldDropAnalyticsKey(key: string, eventName: BurdenoffEventName): boolean;
@@ -23,6 +36,13 @@ export declare function shouldDropAnalyticsKey(key: string, eventName: Burdenoff
23
36
  * event bus emissions as Rybbit custom events.
24
37
  */
25
38
  export declare function RybbitSink({ siteId, scriptUrl, rename, allowlist, identifyOn, }: RybbitSinkProps): null;
39
+ /**
40
+ * The optional-analytics prompt.
41
+ *
42
+ * Deliberately router-agnostic: it is exported publicly, so a consumer may render it anywhere and
43
+ * calling `useLocation()` here would crash outside a Router. Route suppression is the MOUNT
44
+ * SITE's job — see `ShellTelemetrySinks` in AppShellProvider, a direct child of `<BrowserRouter>`.
45
+ */
26
46
  export declare function AnalyticsConsentBanner({ productName }: {
27
47
  productName?: string;
28
48
  }): import("react/jsx-runtime").JSX.Element | null;
@@ -1 +1 @@
1
- {"version":3,"file":"RybbitSink.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/RybbitSink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,EAiCxD,CAAC;AAqDF,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yFAAyF;IACzF,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAWD,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM1D;AA2BD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAM1F;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiD,EACjD,MAAqB,EACrB,SAAoC,EACpC,UAA6B,GAC9B,EAAE,eAAe,QAqEjB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,WAA4B,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,kDAqChG"}
1
+ {"version":3,"file":"RybbitSink.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/RybbitSink.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,kBAAkB,EAiCxD,CAAC;AAqDF,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD,yFAAyF;IACzF,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACjC,8CAA8C;IAC9C,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAWD,6EAA6E;AAC7E,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,IAAI,CAI1E;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAG9C;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAQ1D;AA2BD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,kBAAkB,GAAG,OAAO,CAM1F;AA6BD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,SAAiD,EACjD,MAAqB,EACrB,SAAoC,EACpC,UAA6B,GAC9B,EAAE,eAAe,QAqEjB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,WAA4B,EAAE,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,kDA6ChG"}
@@ -48,37 +48,42 @@ function g() {
48
48
  return navigator.globalPrivacyControl === !0;
49
49
  }
50
50
  function _() {
51
- return typeof window > "u" || g() ? !1 : window.localStorage.getItem(m) === "granted";
51
+ if (typeof window > "u") return null;
52
+ let e = window.localStorage.getItem(m);
53
+ return e === "granted" || e === "denied" ? e : null;
52
54
  }
53
- function v(e) {
54
- typeof window > "u" || (e && !g() ? window.localStorage.setItem(m, "granted") : window.localStorage.removeItem(m), window.dispatchEvent(new CustomEvent(h, { detail: { granted: e } })));
55
+ function v() {
56
+ return typeof window > "u" || g() ? !1 : _() === "granted";
55
57
  }
56
- function y() {
58
+ function y(e) {
59
+ typeof window > "u" || (window.localStorage.setItem(m, e ? "granted" : "denied"), window.dispatchEvent(new CustomEvent(h, { detail: { granted: e } })));
60
+ }
61
+ function b() {
57
62
  let e = window;
58
63
  return navigator.doNotTrack === "1" || e.doNotTrack === "1";
59
64
  }
60
- function b(e) {
65
+ function x(e) {
61
66
  let t = 2166136261;
62
67
  for (let n = 0; n < e.length; n += 1) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
63
68
  return `u_${(t >>> 0).toString(16).padStart(8, "0")}`;
64
69
  }
65
- async function x(e) {
70
+ async function S(e) {
66
71
  if (crypto.subtle) {
67
72
  let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t);
68
73
  return Array.from(new Uint8Array(n), (e) => e.toString(16).padStart(2, "0")).join("");
69
74
  }
70
- return b(e);
75
+ return x(e);
71
76
  }
72
- function S(e, t) {
77
+ function C(e, t) {
73
78
  return s.test(e) ? !(f[t] ?? []).includes(e) : c.test(e) ? !(d[t] ?? []).includes(e) : !1;
74
79
  }
75
- function C(e, t) {
80
+ function w(e, t) {
76
81
  if (!e || typeof e != "object" || Array.isArray(e)) return {};
77
82
  let n = {};
78
- for (let [r, i] of Object.entries(e)) S(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
83
+ for (let [r, i] of Object.entries(e)) C(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
79
84
  return n;
80
85
  }
81
- function w(e) {
86
+ function T(e) {
82
87
  let t = {};
83
88
  for (let [n, r] of Object.entries(e)) {
84
89
  let e = {
@@ -90,10 +95,10 @@ function w(e) {
90
95
  }
91
96
  return t;
92
97
  }
93
- function T({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", rename: s = p, allowlist: c = o, identifyOn: l = "auth.signed_in" }) {
94
- let u = e(), d = n(!1), [f, v] = r(_);
98
+ function E({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", rename: s = p, allowlist: c = o, identifyOn: l = "auth.signed_in" }) {
99
+ let u = e(), d = n(!1), [f, _] = r(v);
95
100
  return t(() => {
96
- let e = () => v(_()), t = (t) => {
101
+ let e = () => _(v()), t = (t) => {
97
102
  t.key === m && e();
98
103
  };
99
104
  return window.addEventListener(h, e), window.addEventListener("storage", t), () => {
@@ -112,17 +117,17 @@ function T({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", re
112
117
  f
113
118
  ]), t(() => {
114
119
  if (!(!i || !f || g())) return u.onAny((e) => {
115
- if (y()) return;
120
+ if (b()) return;
116
121
  let t = window;
117
122
  if (!t.rybbit || !c.includes(e.name)) return;
118
- let n = w({
123
+ let n = T({
119
124
  route: e.metadata.route.pathname,
120
125
  env: e.metadata.app.env,
121
- ...C(e.payload, e.name)
126
+ ...w(e.payload, e.name)
122
127
  });
123
128
  if (e.name === l) {
124
129
  let r = e.payload, i = r?.userId ?? r?.actorId ?? r?.id;
125
- i && x(i).then((e) => {
130
+ i && S(i).then((e) => {
126
131
  t.rybbit?.identify(e, n);
127
132
  });
128
133
  }
@@ -142,12 +147,13 @@ function T({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", re
142
147
  f
143
148
  ]), null;
144
149
  }
145
- function E({ productName: e = "this product" }) {
146
- let [t, n] = r(() => !_());
150
+ function D({ productName: e = "this product" }) {
151
+ let [t, n] = r(() => _() === null);
147
152
  return !t || g() ? null : /* @__PURE__ */ a("aside", {
148
- className: "fixed inset-x-4 bottom-4 z-[100] mx-auto max-w-xl rounded-xl border border-border-seam bg-bg-surface p-4 text-text-primary shadow-pop",
153
+ className: "fixed bottom-4 left-4 z-[100] w-[calc(100%-2rem)] max-w-sm rounded-xl border border-border-seam bg-bg-surface p-4 text-text-primary shadow-pop",
149
154
  role: "dialog",
150
155
  "aria-label": "Privacy choices",
156
+ "data-testid": "analytics-consent-banner",
151
157
  children: [/* @__PURE__ */ a("p", {
152
158
  className: "text-sm",
153
159
  children: [
@@ -161,14 +167,14 @@ function E({ productName: e = "this product" }) {
161
167
  type: "button",
162
168
  className: "rounded-md border border-border-seam px-3 py-2 text-sm",
163
169
  onClick: () => {
164
- v(!1), n(!1);
170
+ y(!1), n(!1);
165
171
  },
166
172
  children: "Reject optional"
167
173
  }), /* @__PURE__ */ i("button", {
168
174
  type: "button",
169
175
  className: "rounded-md bg-action-primary-bg px-3 py-2 text-sm text-action-primary-text",
170
176
  onClick: () => {
171
- v(!0), n(!1);
177
+ y(!0), n(!1);
172
178
  },
173
179
  children: "Allow analytics"
174
180
  })]
@@ -176,4 +182,4 @@ function E({ productName: e = "this product" }) {
176
182
  });
177
183
  }
178
184
  //#endregion
179
- export { E as AnalyticsConsentBanner, T as RybbitSink, _ as readAnalyticsConsent, v as setAnalyticsConsent };
185
+ export { D as AnalyticsConsentBanner, E as RybbitSink, v as readAnalyticsConsent, _ as readAnalyticsConsentChoice, y as setAnalyticsConsent };
@@ -1,6 +1,7 @@
1
1
  export { DevtoolsSink } from './DevtoolsSink';
2
2
  export { BroadcastChannelSink } from './BroadcastChannelSink';
3
3
  export { BackendAuditSink } from './BackendAuditSink';
4
- export { RybbitSink, AnalyticsConsentBanner, readAnalyticsConsent, setAnalyticsConsent, } from './RybbitSink';
4
+ export { RybbitSink, AnalyticsConsentBanner, readAnalyticsConsent, readAnalyticsConsentChoice, setAnalyticsConsent, } from './RybbitSink';
5
+ export type { AnalyticsConsentChoice } from './RybbitSink';
5
6
  export { OtelBrowserSink } from './OtelBrowserSink';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/events/sinks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,oBAAoB,EAGpB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -56,6 +56,17 @@ export interface AppShellConfig {
56
56
  observability?: AppShellObservabilityConfig;
57
57
  /** Require explicit opt-in before loading optional analytics in this shell. */
58
58
  privacyConsent?: boolean;
59
+ /**
60
+ * Extra routes on which the analytics-consent prompt must NOT render (BOFF-6373).
61
+ *
62
+ * Already suppressed on every COMMON_SHELL_LESS_ROUTES path (auth, OAuth callbacks,
63
+ * embed/print). This is the escape hatch for a shell's OWN public routes, which fe-libs cannot
64
+ * know about: HealthyBowl serves anonymous portals at `/b/:slug` and `/s/:slug`.
65
+ *
66
+ * Return true to suppress. A consent card is a login-form-sized obstacle on a page whose whole
67
+ * purpose is that a stranger can read it.
68
+ */
69
+ consentRouteDenylist?: (pathname: string) => boolean;
59
70
  /**
60
71
  * Maps a pathname to the tour `pageId` used when looking up tours.
61
72
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAqD,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAa1F,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAY/B,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EASL,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AA2BnB,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,WAAW,EAAE,MAAM,CAAC;IAEpB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;IAEtB,4BAA4B;IAC5B,WAAW,EAAE;QACX,gBAAgB,EAAE,MAAM,CAAC;QACzB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IAEF,gCAAgC;IAChC,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IAEF,+CAA+C;IAC/C,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,oFAAoF;IACpF,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,mCAAmC;IACnC,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAC/B,2CAA2C;IAC3C,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,mDAAmD;IACnD,cAAc,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAExC,mCAAmC;IACnC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAE9B,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAE7D,mCAAmC;IACnC,kBAAkB,CAAC,EAAE;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;QACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;IAEF,uBAAuB;IACvB,eAAe,CAAC,EACZ,UAAU,GACV,YAAY,GACZ,WAAW,GACX,aAAa,GACb,eAAe,GACf,cAAc,CAAC;IAEnB,uEAAuE;IACvE,aAAa,CAAC,EAAE,2BAA2B,CAAC;IAE5C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;;;;;OASG;IACH,oBAAoB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAErD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CAC/D;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,kBAAkB,EAAE,CAAC;QACjC,UAAU,CAAC,EAAE,kBAAkB,CAAC;QAChC,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;KACtD,CAAC;IACF,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2BAA2B,CAAC,EAAE,MAAM,CAAC;CACtC;AA8XD,wBAAgB,kCAAkC,CAChD,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,wBAAwB,GAC5B,2BAA2B,CAiC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,2FAA2F;IAC3F,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AA6gBD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,qBAAqB,2CA+V3F"}
@@ -19,8 +19,8 @@ import { ShellUiProvider as x } from "./shell/ShellUiProvider.js";
19
19
  import { ContextManagerProvider as ie } from "./shell/ContextManagerProvider.js";
20
20
  import { AuthTokenProvider as ae } from "./shell/AuthTokenProvider.js";
21
21
  import { MultiGatewayProvider as oe } from "./shell/MultiGatewayProvider.js";
22
- import { G as S, Q as C, j as w, w as se } from "../../node_modules/web-vitals/dist/web-vitals.js";
23
- import { ProfileI18nBridge as ce } from "./shell/ProfileI18nBridge.js";
22
+ import { G as S, Q as C, j as se, w as ce } from "../../node_modules/web-vitals/dist/web-vitals.js";
23
+ import { ProfileI18nBridge as w } from "./shell/ProfileI18nBridge.js";
24
24
  import { ProfileGeographyBridge as T } from "./shell/ProfileGeographyBridge.js";
25
25
  import { DevtoolsSink as E } from "../events/sinks/DevtoolsSink.js";
26
26
  import { BroadcastChannelSink as D } from "../events/sinks/BroadcastChannelSink.js";
@@ -255,7 +255,7 @@ function Ce({ children: e, i18nProductId: t, fallbackTranslations: n, defaultBra
255
255
  defaultDensity: a,
256
256
  defaultTypography: o,
257
257
  defaultGlass: s,
258
- children: [/* @__PURE__ */ W(we, {}), /* @__PURE__ */ W(ce, {
258
+ children: [/* @__PURE__ */ W(we, {}), /* @__PURE__ */ W(w, {
259
259
  i18nProductId: t,
260
260
  fallbackTranslations: n,
261
261
  children: m
@@ -336,14 +336,14 @@ function Ee() {
336
336
  id: t.id,
337
337
  rating: t.rating
338
338
  });
339
- }), se((t) => {
339
+ }), ce((t) => {
340
340
  e.emit("perf.cls.measured", {
341
341
  metric: "CLS",
342
342
  value: t.value,
343
343
  id: t.id,
344
344
  rating: t.rating
345
345
  });
346
- }), w((t) => {
346
+ }), se((t) => {
347
347
  e.emit("perf.inp.measured", {
348
348
  metric: "INP",
349
349
  value: t.value,
@@ -360,31 +360,32 @@ function Ee() {
360
360
  });
361
361
  }, [e]), null;
362
362
  }
363
- function De({ config: e, productSlug: t, privacyConsent: n }) {
363
+ function De({ config: t, productSlug: n, privacyConsent: r, consentRouteDenylist: i }) {
364
+ let { pathname: a } = K(), o = e(a) || i?.(a) === !0;
364
365
  return /* @__PURE__ */ G(U, { children: [
365
366
  /* @__PURE__ */ W(Ee, {}),
366
- n ? /* @__PURE__ */ W(k, { productName: t }) : null,
367
- e.enabled === !1 ? null : /* @__PURE__ */ G(U, { children: [
368
- e.devtools ? /* @__PURE__ */ W(E, { enabled: !0 }) : null,
369
- e.broadcast === !1 ? null : /* @__PURE__ */ W(D, {}),
370
- e.backendAudit?.enabled && e.backendAudit.endpoint ? /* @__PURE__ */ W(O, { endpoint: e.backendAudit.endpoint }) : null,
371
- e.rybbit?.enabled && e.rybbit.siteId ? /* @__PURE__ */ W(A, {
372
- siteId: e.rybbit.siteId,
373
- scriptUrl: e.rybbit.scriptUrl,
374
- allowlist: e.rybbit.allowlist,
375
- identifyOn: e.rybbit.identifyOn,
376
- rename: e.rybbit.rename
367
+ r && !o ? /* @__PURE__ */ W(k, { productName: n }) : null,
368
+ t.enabled === !1 ? null : /* @__PURE__ */ G(U, { children: [
369
+ t.devtools ? /* @__PURE__ */ W(E, { enabled: !0 }) : null,
370
+ t.broadcast === !1 ? null : /* @__PURE__ */ W(D, {}),
371
+ t.backendAudit?.enabled && t.backendAudit.endpoint ? /* @__PURE__ */ W(O, { endpoint: t.backendAudit.endpoint }) : null,
372
+ t.rybbit?.enabled && t.rybbit.siteId ? /* @__PURE__ */ W(A, {
373
+ siteId: t.rybbit.siteId,
374
+ scriptUrl: t.rybbit.scriptUrl,
375
+ allowlist: t.rybbit.allowlist,
376
+ identifyOn: t.rybbit.identifyOn,
377
+ rename: t.rybbit.rename
377
378
  }) : null,
378
- e.otel?.enabled && e.otel.endpoint ? /* @__PURE__ */ W(j, {
379
- endpoint: e.otel.endpoint,
380
- serviceName: e.otel.serviceName ?? `${t}-app`,
381
- flushInterval: e.otel.flushInterval
379
+ t.otel?.enabled && t.otel.endpoint ? /* @__PURE__ */ W(j, {
380
+ endpoint: t.otel.endpoint,
381
+ serviceName: t.otel.serviceName ?? `${n}-app`,
382
+ flushInterval: t.otel.flushInterval
382
383
  }) : null
383
384
  ] })
384
385
  ] });
385
386
  }
386
387
  function Oe({ config: n, children: r, clearAuthStore: a }) {
387
- let { productName: o, productSlug: h = o.toLowerCase().replace(/\s+/g, ""), tagline: _ = "", domain: v, i18nProductId: y, gatewayUrls: b, authBridge: x, defaultBrand: S = "default", defaultMode: C, defaultDensity: w, defaultTypography: se, defaultGlass: ce, enablePWA: T = !0, brandInitial: E = o.charAt(0), defaultGateway: D = "workspace", enableSubscriptions: O = !0, fallbackTranslations: k, queryClientOptions: A, toasterPosition: j = "bottom-right", observability: M, privacyConsent: N = !1, tourPageIdFromPath: P } = n, F = V(() => M ?? ve(h, _e()), [M, h]), I = V(() => ({
388
+ let { productName: o, productSlug: h = o.toLowerCase().replace(/\s+/g, ""), tagline: _ = "", domain: v, i18nProductId: y, gatewayUrls: b, authBridge: x, defaultBrand: S = "default", defaultMode: C, defaultDensity: se, defaultTypography: ce, defaultGlass: w, enablePWA: T = !0, brandInitial: E = o.charAt(0), defaultGateway: D = "workspace", enableSubscriptions: O = !0, fallbackTranslations: k, queryClientOptions: A, toasterPosition: j = "bottom-right", observability: M, privacyConsent: N = !1, consentRouteDenylist: P, tourPageIdFromPath: F } = n, I = V(() => M ?? ve(h, _e()), [M, h]), L = V(() => ({
388
389
  productName: o,
389
390
  productSlug: h,
390
391
  brandInitial: E,
@@ -396,7 +397,7 @@ function Oe({ config: n, children: r, clearAuthStore: a }) {
396
397
  E,
397
398
  _,
398
399
  v
399
- ]), L = H(!1), R = H(!!x?.url), U = z((t) => {
400
+ ]), R = H(!1), U = H(!!x?.url), K = z((t) => {
400
401
  if (!t?.force && (() => {
401
402
  try {
402
403
  let e = sessionStorage.getItem("bf-active-profile");
@@ -406,22 +407,22 @@ function Oe({ config: n, children: r, clearAuthStore: a }) {
406
407
  } catch {
407
408
  return !1;
408
409
  }
409
- })() || R.current || L.current) return;
410
- L.current = !0, u(a);
410
+ })() || U.current || R.current) return;
411
+ R.current = !0, u(a);
411
412
  let n = `${window.location.pathname}${window.location.search}`, r = `/auth/login?reason=session-expired&returnTo=${encodeURIComponent(n)}`, i = /^\/vibecontrols\/(share|deck)\//.test(window.location.pathname);
412
413
  if (window.location.pathname.startsWith("/auth/") || e(window.location.pathname) || i) {
413
- L.current = !1;
414
+ R.current = !1;
414
415
  return;
415
416
  }
416
417
  window.location.replace(r);
417
- }, [a]), K = V(() => ({
418
+ }, [a]), q = V(() => ({
418
419
  globalBaseUrl: b.globalBaseUrl,
419
420
  ...d()
420
- }), [b.globalBaseUrl]), q = z(async () => l(K), [K]), J = z(async () => {
421
- window.location.pathname.startsWith("/auth/") || await q() || U({ force: !0 });
422
- }, [q, U]), Y = z(async (e) => {
423
- f(e) ? await q() || U({ force: !0 }) : console.error("[Network] Backend unreachable:", e.message);
424
- }, [q, U]), X = z(async (e) => {
421
+ }), [b.globalBaseUrl]), J = z(async () => l(q), [q]), Y = z(async () => {
422
+ window.location.pathname.startsWith("/auth/") || await J() || K({ force: !0 });
423
+ }, [J, K]), X = z(async (e) => {
424
+ f(e) ? await J() || K({ force: !0 }) : console.error("[Network] Backend unreachable:", e.message);
425
+ }, [J, K]), Z = z(async (e) => {
425
426
  let t = await c({
426
427
  gateway: "global",
427
428
  baseUrl: b.globalBaseUrl,
@@ -436,7 +437,7 @@ function Oe({ config: n, children: r, clearAuthStore: a }) {
436
437
  refreshToken: n.refreshToken,
437
438
  expiresAt: n.expiresIn ? Date.now() + n.expiresIn * 1e3 : void 0
438
439
  };
439
- }, [b.globalBaseUrl]), Z = z(() => t("organization"), []), Q = V(() => {
440
+ }, [b.globalBaseUrl]), Q = z(() => t("organization"), []), he = V(() => {
440
441
  let e = new pe({
441
442
  queryCache: new fe({ onError: (e) => {
442
443
  i(e);
@@ -459,52 +460,53 @@ function Oe({ config: n, children: r, clearAuthStore: a }) {
459
460
  }, [A]);
460
461
  return B(() => {
461
462
  let e = () => {
462
- U({ force: !0 });
463
+ K({ force: !0 });
463
464
  };
464
465
  return window.addEventListener(s, e), () => {
465
466
  window.removeEventListener(s, e);
466
467
  };
467
- }, [U]), B(() => {
468
+ }, [K]), B(() => {
468
469
  let e = te.getInstance();
469
470
  e.getLogger("shell") || e.getLogger("shell").addTransport(new ne());
470
471
  }, []), /* @__PURE__ */ W(p, {
471
- value: I,
472
+ value: L,
472
473
  children: /* @__PURE__ */ W(le, {
473
474
  appName: h,
474
- appVersion: F.appVersion,
475
- appEnv: F.appEnv,
475
+ appVersion: I.appVersion,
476
+ appEnv: I.appEnv,
476
477
  sourceMfe: h,
477
478
  children: /* @__PURE__ */ W(g, {
478
479
  FallbackComponent: re,
479
480
  children: /* @__PURE__ */ G(ue, { children: [/* @__PURE__ */ W(De, {
480
- config: F,
481
+ config: I,
481
482
  productSlug: h,
482
- privacyConsent: N
483
+ privacyConsent: N,
484
+ consentRouteDenylist: P
483
485
  }), /* @__PURE__ */ W(me, {
484
- client: Q,
486
+ client: he,
485
487
  children: /* @__PURE__ */ W(ae, { children: /* @__PURE__ */ W(oe, {
486
488
  workspaceBaseUrl: b.workspaceBaseUrl,
487
489
  globalBaseUrl: b.globalBaseUrl,
488
- organizationId: Z,
490
+ organizationId: Q,
489
491
  productSlug: h,
490
492
  defaultGateway: D,
491
493
  enableSubscriptions: O,
492
- onAuthError: J,
493
- onNetworkError: Y,
494
- onRefreshToken: q,
494
+ onAuthError: Y,
495
+ onNetworkError: X,
496
+ onRefreshToken: J,
495
497
  children: /* @__PURE__ */ W(m, {
496
498
  bridgeUrl: x?.url,
497
499
  bridgeAllowedOrigins: x?.allowedOrigins,
498
500
  bridgeDebug: x?.debug,
499
- onRefreshToken: X,
501
+ onRefreshToken: Z,
500
502
  onBridgeReady: () => {
501
- R.current = !1;
503
+ U.current = !1;
502
504
  },
503
505
  onSessionExpiringSoon: () => {
504
506
  console.warn("[Auth] Session will expire in 5 minutes");
505
507
  },
506
508
  onTokenExpired: () => {
507
- U();
509
+ K();
508
510
  },
509
511
  children: /* @__PURE__ */ W(ee, {
510
512
  syncToUrl: !0,
@@ -513,14 +515,14 @@ function Oe({ config: n, children: r, clearAuthStore: a }) {
513
515
  fallbackTranslations: k,
514
516
  defaultBrand: S,
515
517
  defaultMode: C,
516
- defaultDensity: w,
517
- defaultTypography: se,
518
- defaultGlass: ce,
518
+ defaultDensity: se,
519
+ defaultTypography: ce,
520
+ defaultGlass: w,
519
521
  productName: o,
520
522
  brandInitial: E,
521
523
  enablePWA: T,
522
524
  toasterPosition: j,
523
- tourPageIdFromPath: P,
525
+ tourPageIdFromPath: F,
524
526
  children: r
525
527
  }) })
526
528
  })
@@ -2,13 +2,13 @@ import { createBrowserTraceContext as e } from "./shared/events/metadata.js";
2
2
  import { DevtoolsSink as t } from "./shared/events/sinks/DevtoolsSink.js";
3
3
  import { BroadcastChannelSink as n } from "./shared/events/sinks/BroadcastChannelSink.js";
4
4
  import { BackendAuditSink as r } from "./shared/events/sinks/BackendAuditSink.js";
5
- import { AnalyticsConsentBanner as i, RybbitSink as a, readAnalyticsConsent as o, setAnalyticsConsent as s } from "./shared/events/sinks/RybbitSink.js";
6
- import { OtelBrowserSink as c } from "./shared/events/sinks/OtelBrowserSink.js";
5
+ import { AnalyticsConsentBanner as i, RybbitSink as a, readAnalyticsConsent as o, readAnalyticsConsentChoice as s, setAnalyticsConsent as c } from "./shared/events/sinks/RybbitSink.js";
6
+ import { OtelBrowserSink as l } from "./shared/events/sinks/OtelBrowserSink.js";
7
7
  import "./shared/events/sinks/index.js";
8
- import { createContext as l, use as u, useCallback as d, useEffect as f, useMemo as p } from "react";
9
- import { jsx as m } from "react/jsx-runtime";
8
+ import { createContext as u, use as d, useCallback as f, useEffect as p, useMemo as m } from "react";
9
+ import { jsx as h } from "react/jsx-runtime";
10
10
  //#region src/shared/events/index.tsx
11
- var h = l({
11
+ var g = u({
12
12
  emit: () => {},
13
13
  emitCustom: () => {},
14
14
  on: () => () => {},
@@ -16,22 +16,22 @@ var h = l({
16
16
  getBuffer: () => [],
17
17
  onAny: () => () => {}
18
18
  });
19
- function g(e, t) {
20
- if (!e) return _();
19
+ function _(e, t) {
20
+ if (!e) return v();
21
21
  let n = e.getItem(t);
22
22
  if (n) return n;
23
- let r = _();
23
+ let r = v();
24
24
  return e.setItem(t, r), r;
25
25
  }
26
- function _() {
26
+ function v() {
27
27
  return typeof crypto < "u" && "randomUUID" in crypto ? crypto.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
28
28
  }
29
- function v() {
29
+ function y() {
30
30
  if (typeof document > "u") return "light";
31
31
  let e = document.documentElement;
32
32
  return e.classList.contains("hc") || e.dataset.theme === "hc" ? "hc" : e.classList.contains("dark") || e.dataset.theme === "dark" ? "dark" : "light";
33
33
  }
34
- function y(t, n, r) {
34
+ function b(t, n, r) {
35
35
  let i = typeof window < "u" ? window.location : void 0, a = e(), o = typeof navigator < "u" ? navigator : {
36
36
  userAgent: "",
37
37
  language: "en"
@@ -41,11 +41,11 @@ function y(t, n, r) {
41
41
  pathname: i?.pathname ?? "",
42
42
  search: i?.search ?? ""
43
43
  },
44
- sessionId: g(typeof sessionStorage < "u" ? sessionStorage : void 0, "bf-event-session-id"),
45
- deviceId: g(typeof localStorage < "u" ? localStorage : void 0, "bf-event-device-id"),
44
+ sessionId: _(typeof sessionStorage < "u" ? sessionStorage : void 0, "bf-event-session-id"),
45
+ deviceId: _(typeof localStorage < "u" ? localStorage : void 0, "bf-event-device-id"),
46
46
  userAgent: o.userAgent,
47
47
  locale: o.language || "en",
48
- theme: v(),
48
+ theme: y(),
49
49
  app: {
50
50
  name: t,
51
51
  version: n,
@@ -55,8 +55,8 @@ function y(t, n, r) {
55
55
  spanId: a.spanId
56
56
  };
57
57
  }
58
- function b({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe: r = e, children: i }) {
59
- let a = p(() => x({
58
+ function x({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe: r = e, children: i }) {
59
+ let a = m(() => S({
60
60
  appName: e,
61
61
  appVersion: t,
62
62
  appEnv: n,
@@ -67,16 +67,16 @@ function b({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe:
67
67
  t,
68
68
  r
69
69
  ]);
70
- return /* @__PURE__ */ m(h.Provider, {
70
+ return /* @__PURE__ */ h(g.Provider, {
71
71
  value: a,
72
72
  children: i
73
73
  });
74
74
  }
75
- function x({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe: r = e }) {
75
+ function S({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe: r = e }) {
76
76
  let i = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), o = [];
77
77
  function s(i, a, o) {
78
78
  return {
79
- id: _(),
79
+ id: v(),
80
80
  name: i,
81
81
  version: 1,
82
82
  source: {
@@ -86,7 +86,7 @@ function x({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe:
86
86
  timestamp: (/* @__PURE__ */ new Date()).toISOString(),
87
87
  monotonic: performance.now(),
88
88
  payload: a,
89
- metadata: y(e, t, n)
89
+ metadata: b(e, t, n)
90
90
  };
91
91
  }
92
92
  function c(e) {
@@ -121,24 +121,24 @@ function x({ appName: e, appVersion: t = "0.0.0", appEnv: n = "dev", sourceMfe:
121
121
  }
122
122
  };
123
123
  }
124
- function S() {
125
- return u(h);
124
+ function C() {
125
+ return d(g);
126
126
  }
127
- function C(e, t) {
128
- let n = S();
129
- f(() => n.on(e, t), [
127
+ function w(e, t) {
128
+ let n = C();
129
+ p(() => n.on(e, t), [
130
130
  n,
131
131
  t,
132
132
  e
133
133
  ]);
134
134
  }
135
- function w(e, t) {
136
- let n = S();
137
- return d((r) => n.emit(e, r, t), [
135
+ function T(e, t) {
136
+ let n = C();
137
+ return f((r) => n.emit(e, r, t), [
138
138
  n,
139
139
  e,
140
140
  t
141
141
  ]);
142
142
  }
143
143
  //#endregion
144
- export { i as AnalyticsConsentBanner, r as BackendAuditSink, n as BroadcastChannelSink, t as DevtoolsSink, b as EventBusProvider, c as OtelBrowserSink, a as RybbitSink, x as createEventBus, o as readAnalyticsConsent, s as setAnalyticsConsent, C as useEvent, S as useEventBus, w as useEventEmitter };
144
+ export { i as AnalyticsConsentBanner, r as BackendAuditSink, n as BroadcastChannelSink, t as DevtoolsSink, x as EventBusProvider, l as OtelBrowserSink, a as RybbitSink, S as createEventBus, o as readAnalyticsConsent, s as readAnalyticsConsentChoice, c as setAnalyticsConsent, w as useEvent, C as useEventBus, T as useEventEmitter };
package/dist/shared.js CHANGED
@@ -62,63 +62,63 @@ import "./shared-components.js";
62
62
  import { DevtoolsSink as Vn } from "./shared/events/sinks/DevtoolsSink.js";
63
63
  import { BroadcastChannelSink as Hn } from "./shared/events/sinks/BroadcastChannelSink.js";
64
64
  import { BackendAuditSink as Un } from "./shared/events/sinks/BackendAuditSink.js";
65
- import { AnalyticsConsentBanner as Wn, RybbitSink as Gn, readAnalyticsConsent as Kn, setAnalyticsConsent as qn } from "./shared/events/sinks/RybbitSink.js";
66
- import { OtelBrowserSink as Jn } from "./shared/events/sinks/OtelBrowserSink.js";
67
- import { EventBusProvider as Yn, createEventBus as Xn, useEvent as Zn, useEventBus as Qn, useEventEmitter as $n } from "./shared-events.js";
68
- import { useDebounce as er } from "./shared/hooks/useDebounce.js";
69
- import { useThrottle as tr } from "./shared/hooks/useThrottle.js";
70
- import { BREAKPOINTS as nr, useBreakpoint as rr, useMobileBreakpoint as ir } from "./shared/hooks/useBreakpoint.js";
71
- import { useOnClickOutside as ar, useOnClickOutsideWithRef as or } from "./shared/hooks/useOnClickOutside.js";
72
- import { useKeyPress as sr, useKeyboardShortcut as cr } from "./shared/hooks/useKeyPress.js";
73
- import { useExclusiveMenu as lr } from "./shared/hooks/useExclusiveMenu.js";
74
- import { useLocalStorage as ur } from "./shared/hooks/useLocalStorage.js";
75
- import { useSessionStorage as dr } from "./shared/hooks/useSessionStorage.js";
76
- import { usePrevious as fr, usePreviousDistinct as pr, usePreviousHistory as mr } from "./shared/hooks/usePrevious.js";
77
- import { useConditionalToggle as hr, useToggle as gr, useToggleObject as _r } from "./shared/hooks/useToggle.js";
78
- import { usePagination as vr } from "./shared/hooks/usePagination.js";
79
- import { useAsync as yr, useAsyncImmediate as br } from "./shared/hooks/useAsync.js";
80
- import { MODIFIER_KEYS as xr, PLATFORM_TYPES as Sr } from "./shared/keyboard/types.js";
81
- import { useKeyboardShortcuts as Cr } from "./shared/keyboard/useKeyboardShortcuts.js";
82
- import { useHotkeys as wr } from "./shared/keyboard/useHotkeys.js";
83
- import { useShortcutHelp as Tr } from "./shared/keyboard/useShortcutHelp.js";
84
- import { GLOBAL_SHORTCUT_CATEGORIES as Er, createGlobalShortcuts as Dr, getGlobalShortcutsByCategory as Or, mergeShortcuts as kr } from "./shared/keyboard/globalShortcuts.js";
85
- import { useLogger as Ar } from "./shared/logger/useLogger.js";
86
- import { useHasAnimated as jr } from "./shared/hooks/useHasAnimated.js";
87
- import { useReferralAttribution as Mr } from "./shared/hooks/useReferralAttribution.js";
88
- import { useRecordProductVisit as Nr } from "./shared/hooks/useRecordProductVisit.js";
89
- import { QUOTA_EXHAUSTED_EVENT as Pr, dispatchQuotaExhausted as Fr, useQuotaErrorToast as Ir } from "./shared/hooks/useQuotaErrorToast.js";
90
- import { PLAN_USAGE_SNAPSHOT_EVENT as Lr, publishPlanUsageSnapshot as Rr, useUpgradePrompt as zr } from "./shared/hooks/useUpgradePrompt.js";
91
- import { appendContextToPath as Br, useCurrentContextSearchParams as Vr } from "./shared/hooks/useCurrentContextSearchParams.js";
92
- import { MicrofrontendContext as Hr, useMicrofrontendContext as Ur } from "./shared-hooks.js";
93
- import { detectDeviceType as Wr, getResponsiveSelector as Gr } from "./shared/tours/types.js";
94
- import { useTourPlayer as Kr } from "./shared/tours/useTourPlayer.js";
95
- import { TourSpotlight as qr } from "./shared/tours/TourSpotlight.js";
96
- import { TourTooltip as Jr } from "./shared/tours/TourTooltip.js";
97
- import { TourPlayerProvider as Yr, useIsTourPlaying as Xr, useStartTour as Zr, useStopTour as Qr, useTourPlayerContext as $r } from "./shared/tours/TourPlayerProvider.js";
98
- import { TourPlayer as ei, TourTriggerButton as ti, usePlayTour as ni } from "./shared/tours/TourPlayer.js";
99
- import { getTourContextRank as ri, getTourRouteCatalog as ii, getTourRouteModules as ai, getTourRoutePages as oi, isTourVisibleForContext as si, normalizeTourPath as ci, registerTourRouteCatalog as li, resolveTourTargetPath as ui } from "./shared/tours/routeCatalog.js";
100
- import { withTourProgressStatus as di } from "./shared/tours/progress.js";
101
- import { ToursProvider as fi, useAutoStartTour as pi, useSafeToursContext as mi, useTours as hi, useToursContext as gi } from "./shared/tours/ToursContext.js";
102
- import { TourInitializer as _i } from "./shared/tours/TourInitializer.js";
103
- import { AppShellProvider as vi, resolveAppShellObservabilityConfig as yi } from "./shared/providers/AppShellProvider.js";
104
- import { MicrofrontendProvider as bi } from "./shared-providers.js";
105
- import { TourTrigger as xi } from "./shared/tours/TourTrigger.js";
65
+ import { AnalyticsConsentBanner as Wn, RybbitSink as Gn, readAnalyticsConsent as Kn, readAnalyticsConsentChoice as qn, setAnalyticsConsent as Jn } from "./shared/events/sinks/RybbitSink.js";
66
+ import { OtelBrowserSink as Yn } from "./shared/events/sinks/OtelBrowserSink.js";
67
+ import { EventBusProvider as Xn, createEventBus as Zn, useEvent as Qn, useEventBus as $n, useEventEmitter as er } from "./shared-events.js";
68
+ import { useDebounce as tr } from "./shared/hooks/useDebounce.js";
69
+ import { useThrottle as nr } from "./shared/hooks/useThrottle.js";
70
+ import { BREAKPOINTS as rr, useBreakpoint as ir, useMobileBreakpoint as ar } from "./shared/hooks/useBreakpoint.js";
71
+ import { useOnClickOutside as or, useOnClickOutsideWithRef as sr } from "./shared/hooks/useOnClickOutside.js";
72
+ import { useKeyPress as cr, useKeyboardShortcut as lr } from "./shared/hooks/useKeyPress.js";
73
+ import { useExclusiveMenu as ur } from "./shared/hooks/useExclusiveMenu.js";
74
+ import { useLocalStorage as dr } from "./shared/hooks/useLocalStorage.js";
75
+ import { useSessionStorage as fr } from "./shared/hooks/useSessionStorage.js";
76
+ import { usePrevious as pr, usePreviousDistinct as mr, usePreviousHistory as hr } from "./shared/hooks/usePrevious.js";
77
+ import { useConditionalToggle as gr, useToggle as _r, useToggleObject as vr } from "./shared/hooks/useToggle.js";
78
+ import { usePagination as yr } from "./shared/hooks/usePagination.js";
79
+ import { useAsync as br, useAsyncImmediate as xr } from "./shared/hooks/useAsync.js";
80
+ import { MODIFIER_KEYS as Sr, PLATFORM_TYPES as Cr } from "./shared/keyboard/types.js";
81
+ import { useKeyboardShortcuts as wr } from "./shared/keyboard/useKeyboardShortcuts.js";
82
+ import { useHotkeys as Tr } from "./shared/keyboard/useHotkeys.js";
83
+ import { useShortcutHelp as Er } from "./shared/keyboard/useShortcutHelp.js";
84
+ import { GLOBAL_SHORTCUT_CATEGORIES as Dr, createGlobalShortcuts as Or, getGlobalShortcutsByCategory as kr, mergeShortcuts as Ar } from "./shared/keyboard/globalShortcuts.js";
85
+ import { useLogger as jr } from "./shared/logger/useLogger.js";
86
+ import { useHasAnimated as Mr } from "./shared/hooks/useHasAnimated.js";
87
+ import { useReferralAttribution as Nr } from "./shared/hooks/useReferralAttribution.js";
88
+ import { useRecordProductVisit as Pr } from "./shared/hooks/useRecordProductVisit.js";
89
+ import { QUOTA_EXHAUSTED_EVENT as Fr, dispatchQuotaExhausted as Ir, useQuotaErrorToast as Lr } from "./shared/hooks/useQuotaErrorToast.js";
90
+ import { PLAN_USAGE_SNAPSHOT_EVENT as Rr, publishPlanUsageSnapshot as zr, useUpgradePrompt as Br } from "./shared/hooks/useUpgradePrompt.js";
91
+ import { appendContextToPath as Vr, useCurrentContextSearchParams as Hr } from "./shared/hooks/useCurrentContextSearchParams.js";
92
+ import { MicrofrontendContext as Ur, useMicrofrontendContext as Wr } from "./shared-hooks.js";
93
+ import { detectDeviceType as Gr, getResponsiveSelector as Kr } from "./shared/tours/types.js";
94
+ import { useTourPlayer as qr } from "./shared/tours/useTourPlayer.js";
95
+ import { TourSpotlight as Jr } from "./shared/tours/TourSpotlight.js";
96
+ import { TourTooltip as Yr } from "./shared/tours/TourTooltip.js";
97
+ import { TourPlayerProvider as Xr, useIsTourPlaying as Zr, useStartTour as Qr, useStopTour as $r, useTourPlayerContext as ei } from "./shared/tours/TourPlayerProvider.js";
98
+ import { TourPlayer as ti, TourTriggerButton as ni, usePlayTour as ri } from "./shared/tours/TourPlayer.js";
99
+ import { getTourContextRank as ii, getTourRouteCatalog as ai, getTourRouteModules as oi, getTourRoutePages as si, isTourVisibleForContext as ci, normalizeTourPath as li, registerTourRouteCatalog as ui, resolveTourTargetPath as di } from "./shared/tours/routeCatalog.js";
100
+ import { withTourProgressStatus as fi } from "./shared/tours/progress.js";
101
+ import { ToursProvider as pi, useAutoStartTour as mi, useSafeToursContext as hi, useTours as gi, useToursContext as _i } from "./shared/tours/ToursContext.js";
102
+ import { TourInitializer as vi } from "./shared/tours/TourInitializer.js";
103
+ import { AppShellProvider as yi, resolveAppShellObservabilityConfig as bi } from "./shared/providers/AppShellProvider.js";
104
+ import { MicrofrontendProvider as xi } from "./shared-providers.js";
105
+ import { TourTrigger as Si } from "./shared/tours/TourTrigger.js";
106
106
  import "./shared-tours.js";
107
- import { getNativeBridge as Si } from "./shared/native/bridge.js";
108
- import { getPlatform as Ci, isAndroid as wi, isElectron as Ti, isIOS as Ei, isInstalledApp as Di, isNative as Oi, isStandalonePWA as ki, isWeb as Ai, isWebBrowser as ji } from "./shared/native/platform.js";
109
- import { nativeConfirm as Mi, nativeCopyText as Ni, nativeImpact as Pi, nativeNotify as Fi, nativeOpenUrl as Ii, nativeShare as Li, nativeToast as Ri } from "./shared/native/consumers.js";
110
- import { SafeAreaView as zi } from "./shared/native/SafeAreaView.js";
111
- import { useNativePlatform as Bi } from "./shared/native/hooks/useNativePlatform.js";
112
- import { useSafeArea as Vi } from "./shared/native/hooks/useSafeArea.js";
113
- import { useNativeKeyboard as Hi } from "./shared/native/hooks/useNativeKeyboard.js";
114
- import { useAppState as Ui } from "./shared/native/hooks/useAppState.js";
115
- import { useDeviceInfo as Wi } from "./shared/native/hooks/useDeviceInfo.js";
116
- import { useHaptics as Gi } from "./shared/native/hooks/useHaptics.js";
117
- import { useStatusBar as Ki } from "./shared/native/hooks/useStatusBar.js";
118
- import { acknowledgeNativePurchase as qi, getNativeProducts as Ji, getNativePurchases as Yi, installNativeIAP as Xi, isNativeIAPAvailable as Zi, purchaseNativeProduct as Qi, restoreNativePurchases as $i } from "./shared/native/purchases.js";
107
+ import { getNativeBridge as Ci } from "./shared/native/bridge.js";
108
+ import { getPlatform as wi, isAndroid as Ti, isElectron as Ei, isIOS as Di, isInstalledApp as Oi, isNative as ki, isStandalonePWA as Ai, isWeb as ji, isWebBrowser as Mi } from "./shared/native/platform.js";
109
+ import { nativeConfirm as Ni, nativeCopyText as Pi, nativeImpact as Fi, nativeNotify as Ii, nativeOpenUrl as Li, nativeShare as Ri, nativeToast as zi } from "./shared/native/consumers.js";
110
+ import { SafeAreaView as Bi } from "./shared/native/SafeAreaView.js";
111
+ import { useNativePlatform as Vi } from "./shared/native/hooks/useNativePlatform.js";
112
+ import { useSafeArea as Hi } from "./shared/native/hooks/useSafeArea.js";
113
+ import { useNativeKeyboard as Ui } from "./shared/native/hooks/useNativeKeyboard.js";
114
+ import { useAppState as Wi } from "./shared/native/hooks/useAppState.js";
115
+ import { useDeviceInfo as Gi } from "./shared/native/hooks/useDeviceInfo.js";
116
+ import { useHaptics as Ki } from "./shared/native/hooks/useHaptics.js";
117
+ import { useStatusBar as qi } from "./shared/native/hooks/useStatusBar.js";
118
+ import { acknowledgeNativePurchase as Ji, getNativeProducts as Yi, getNativePurchases as Xi, installNativeIAP as Zi, isNativeIAPAvailable as Qi, purchaseNativeProduct as $i, restoreNativePurchases as ea } from "./shared/native/purchases.js";
119
119
  import "./shared-native.js";
120
120
  import "./shared/actors/index.js";
121
121
  //#region src/shared/index.ts
122
- var ea = "1.0.0";
122
+ var ta = "1.0.0";
123
123
  //#endregion
124
- export { Rn as ASSISTANT_WIDGET_TOGGLE_EVENT, $t as AccessDenied, Wt as ActorIdentity, Wn as AnalyticsConsentBanner, Fe as ApolloClient, Ie as ApolloProvider, un as AppErrorBoundary, xt as AppInitializer, vi as AppShellProvider, zn as AssistantWidget, ie as BACKEND_ERROR_EVENT, nr as BREAKPOINTS, Un as BackendAuditSink, Hn as BroadcastChannelSink, G as COMMON_SHELL_LESS_ROUTES, ae as CONNECTION_STATUS_EVENT, sn as ConditionalShell, Ot as ConsoleTransport, _n as ContextConversationWidget, Z as DEFAULT_PAGE_SIZE, K as DEFAULT_SHELL_CONFIG, Vn as DevtoolsSink, qt as ErrorBoundary, tn as ErrorFallback, Yn as EventBusProvider, ea as FE_SHARED_VERSION, dn as FeatureFlagProvider, gn as FeatureGate, Q as GATEWAYS, Er as GLOBAL_SHORTCUT_CATEGORIES, Oe as GatewayProvider, Le as InMemoryCache, jn as KeyboardHelpDialogWrapper, nn as LoadingFallback, wt as LogLevel, Et as LogManager, Tt as Logger, xr as MODIFIER_KEYS, Bn as Markdown, Hr as MicrofrontendContext, on as MicrofrontendErrorBoundary, bi as MicrofrontendProvider, Jn as OtelBrowserSink, Lr as PLAN_USAGE_SNAPSHOT_EVENT, Sr as PLATFORM_TYPES, V as PRODUCTS, H as PRODUCT_URLS, ln as PWAInstallBanner, rn as PageLoadingFallback, Xt as PermissionButton, en as PermissionDenied, Zt as PermissionGate, Qt as PermissionLink, Pt as QUOTA_EXHAUSTED_CODE, Pr as QUOTA_EXHAUSTED_EVENT, Mn as QuotaMeter, Ft as RESOURCE_CAP_EXCEEDED_CODE, Jt as RequireAuth, Yt as RequireGuest, Gn as RybbitSink, Se as SSELink, it as SSORedirectSpinner, lt as SSO_DEPOSITED_PARAM, It as STORAGE_QUOTA_EXCEEDED_CODE, zi as SafeAreaView, an as SectionLoadingFallback, _i as TourInitializer, ei as TourPlayer, Yr as TourPlayerProvider, qr as TourSpotlight, Jr as TourTooltip, xi as TourTrigger, ti as TourTriggerButton, fi as ToursProvider, Lt as UPGRADE_ERROR_CODES, Nn as UPGRADE_PROMPT_EVENT, In as UpgradeInlineBanner, Pn as UpgradePromptModal, Pe as WsLink, qi as acknowledgeNativePurchase, r as alertTokens, Br as appendContextToPath, We as attemptTokenRefresh, ut as beginSsoNavigation, Gt as buildActorFallback, Rt as buildQuotaExhaustedMessage, dt as buildSsoDepositUrl, m as capitalizeFirst, h as capitalizeWords, i as categoryTokens, at as checkRemoteSLO, ot as checkSLO, Ge as clearAuthSessionStorage, pe as clearGraphqlFetchResponseCache, st as clearLocalAuthState, Xe as clearSSoCookie, Ze as clearShellSsoCookies, ft as clearSsoDepositState, pt as clearSsoNavigation, kt as clearUserContext, Ut as cn, mt as consumeSsoDepositMarker, n as createApolloClient, Xn as createEventBus, Dr as createGlobalShortcuts, Ce as createGraphQLClient, Mt as createProfileScopedStorage, Wr as detectDeviceType, vn as detectPlatform, oe as dispatchBackendErrorEvent, Fr as dispatchQuotaExhausted, Fn as dispatchUpgradePrompt, se as extractBackendError, zt as extractQuotaExhaustedExtensions, Bt as extractUpgradeErrorExtensions, g as formatBytes, _ as formatCompactNumber, v as formatCurrency, y as formatCurrencyCompact, b as formatDate, x as formatDateTime, S as formatDuration, yn as formatKeyCombo, C as formatList, w as formatNumber, T as formatOrdinal, E as formatPercentage, D as formatRelativeTime, O as formatTime, a as getAlertTokens, o as getCategoryTokens, bn as getDisplayKeysForPlatform, $ as getGatewayConfig, ee as getGatewayUrl, we as getGlobalClient, Or as getGlobalShortcutsByCategory, te as getGraphQLEndpoint, Si as getNativeBridge, Ji as getNativeProducts, Yi as getNativePurchases, Ci as getPlatform, U as getProductUrl, W as getProductsWithUrls, Nt as getProfileScopedKey, s as getProgressTokens, Gr as getResponsiveSelector, ct as getSSORedirectUrl, Qe as getSSoCookie, q as getShellConfig, xn as getShortcutLabel, c as getStatusBadgeTokens, l as getStatusTokens, me as getStoredAuthToken, he as getStoredLocale, ge as getStoredOrganizationId, _e as getStoredProjectId, ve as getStoredWorkspaceId, ye as getStoredWorkspaceToken, ri as getTourContextRank, ii as getTourRouteCatalog, ai as getTourRouteModules, oi as getTourRoutePages, u as getTrendTokens, Te as getWorkspaceClient, ne as getWorkspaceTokenPayload, Re as gql, be as graphqlFetch, Ke as hasAuthGraphQLErrors, Ee as initializeAppClients, At as initializeLogger, L as installGatewayFetchRewrite, Xi as installNativeIAP, ce as isAbortError, wi as isAndroid, qe as isAuthGraphQLError, Je as isAuthNetworkError, le as isBackendErrorDisplay, P as isChunkLoadError, Ti as isElectron, Ei as isIOS, Di as isInstalledApp, Sn as isMac, Cn as isMobileDevice, Oi as isNative, Zi as isNativeIAPAvailable, Vt as isQuotaExhaustedError, $e as isSharedSsoCookieDomain, J as isShellLessRoute, ht as isSsoNavigationPending, ki as isStandalonePWA, wn as isTabletDevice, si as isTourVisibleForContext, ue as isTransportError, et as isTrustedSsoOrigin, Ht as isUpgradeError, Ai as isWeb, ji as isWebBrowser, re as isWorkspaceTokenValidForContext, F as lazyWithRetry, Dt as logManager, de as markConnectionHealthy, gt as markSsoDepositDone, _t as markSsoDepositPending, Tn as matchesKeyCombo, kr as mergeShortcuts, vt as mintSsoSessionTokens, Mi as nativeConfirm, Ni as nativeCopyText, Pi as nativeImpact, Fi as nativeNotify, Ii as nativeOpenUrl, Li as nativeShare, Ri as nativeToast, En as normalizeKey, Dn as normalizePlatformCombo, ci as normalizeTourPath, On as parseKeyCombo, k as pluralize, d as progressTokens, Rr as publishPlanUsageSnapshot, Qi as purchaseNativeProduct, Kn as readAnalyticsConsent, tt as readShellSsoCookie, yt as readSsoDepositState, Ye as redirectToLogin, li as registerTourRouteCatalog, De as resetAppClients, yi as resolveAppShellObservabilityConfig, B as resolveAuthBridgeConfig, R as resolveGatewayBases, xe as resolveGatewayUrl, I as resolveGatewayUrls, ui as resolveTourTargetPath, $i as restoreNativePurchases, qn as setAnalyticsConsent, nt as setSSoCookie, rt as setShellSsoCookies, jt as setUserContext, bt as shouldAttemptSsoDeposit, kn as shouldEnableKeyboardShortcuts, An as shouldIgnoreShortcut, Y as shouldShowBreadcrumb, X as shouldShowSidebar, fe as shouldToastBackendError, A as slugify, f as statusTokens, z as suppressConsole, j as toCamelCase, M as toPascalCase, p as trendTokens, N as truncateText, Kt as useActorProfiles, ze as useApolloClient, Ui as useAppState, yr as useAsync, br as useAsyncImmediate, pi as useAutoStartTour, rr as useBreakpoint, hr as useConditionalToggle, e as useCopyToClipboard, Vr as useCurrentContextSearchParams, er as useDebounce, Wi as useDeviceInfo, Zn as useEvent, Qn as useEventBus, $n as useEventEmitter, lr as useExclusiveMenu, pn as useFeatureFlag, mn as useFeatureFlagDetails, hn as useFeatureFlagValue, fn as useFeatureFlags, ke as useGateway, Ae as useGatewayClient, Gi as useHaptics, jr as useHasAnimated, Ne as useHasAuthToken, wr as useHotkeys, Xr as useIsTourPlaying, sr as useKeyPress, cr as useKeyboardShortcut, Cr as useKeyboardShortcuts, Be as useLazyQuery, ur as useLocalStorage, Ar as useLogger, t as useMediaQuery, Ur as useMicrofrontendContext, ir as useMobileBreakpoint, Ve as useMutation, Hi as useNativeKeyboard, Bi as useNativePlatform, ar as useOnClickOutside, or as useOnClickOutsideWithRef, cn as usePWA, vr as usePagination, ni as usePlayTour, fr as usePrevious, pr as usePreviousDistinct, mr as usePreviousHistory, He as useQuery, Ir as useQuotaErrorToast, Nr as useRecordProductVisit, Mr as useReferralAttribution, St as useRegistryHelpers, Vi as useSafeArea, je as useSafeGateway, Me as useSafeGatewayClient, mi as useSafeToursContext, dr as useSessionStorage, Ct as useShellNavigate, Tr as useShortcutHelp, Zr as useStartTour, Ki as useStatusBar, Qr as useStopTour, Ue as useSubscription, tr as useThrottle, gr as useToggle, _r as useToggleObject, Kr as useTourPlayer, $r as useTourPlayerContext, hi as useTours, gi as useToursContext, zr as useUpgradePrompt, Ln as useVoiceInput, di as withTourProgressStatus };
124
+ export { Rn as ASSISTANT_WIDGET_TOGGLE_EVENT, $t as AccessDenied, Wt as ActorIdentity, Wn as AnalyticsConsentBanner, Fe as ApolloClient, Ie as ApolloProvider, un as AppErrorBoundary, xt as AppInitializer, yi as AppShellProvider, zn as AssistantWidget, ie as BACKEND_ERROR_EVENT, rr as BREAKPOINTS, Un as BackendAuditSink, Hn as BroadcastChannelSink, G as COMMON_SHELL_LESS_ROUTES, ae as CONNECTION_STATUS_EVENT, sn as ConditionalShell, Ot as ConsoleTransport, _n as ContextConversationWidget, Z as DEFAULT_PAGE_SIZE, K as DEFAULT_SHELL_CONFIG, Vn as DevtoolsSink, qt as ErrorBoundary, tn as ErrorFallback, Xn as EventBusProvider, ta as FE_SHARED_VERSION, dn as FeatureFlagProvider, gn as FeatureGate, Q as GATEWAYS, Dr as GLOBAL_SHORTCUT_CATEGORIES, Oe as GatewayProvider, Le as InMemoryCache, jn as KeyboardHelpDialogWrapper, nn as LoadingFallback, wt as LogLevel, Et as LogManager, Tt as Logger, Sr as MODIFIER_KEYS, Bn as Markdown, Ur as MicrofrontendContext, on as MicrofrontendErrorBoundary, xi as MicrofrontendProvider, Yn as OtelBrowserSink, Rr as PLAN_USAGE_SNAPSHOT_EVENT, Cr as PLATFORM_TYPES, V as PRODUCTS, H as PRODUCT_URLS, ln as PWAInstallBanner, rn as PageLoadingFallback, Xt as PermissionButton, en as PermissionDenied, Zt as PermissionGate, Qt as PermissionLink, Pt as QUOTA_EXHAUSTED_CODE, Fr as QUOTA_EXHAUSTED_EVENT, Mn as QuotaMeter, Ft as RESOURCE_CAP_EXCEEDED_CODE, Jt as RequireAuth, Yt as RequireGuest, Gn as RybbitSink, Se as SSELink, it as SSORedirectSpinner, lt as SSO_DEPOSITED_PARAM, It as STORAGE_QUOTA_EXCEEDED_CODE, Bi as SafeAreaView, an as SectionLoadingFallback, vi as TourInitializer, ti as TourPlayer, Xr as TourPlayerProvider, Jr as TourSpotlight, Yr as TourTooltip, Si as TourTrigger, ni as TourTriggerButton, pi as ToursProvider, Lt as UPGRADE_ERROR_CODES, Nn as UPGRADE_PROMPT_EVENT, In as UpgradeInlineBanner, Pn as UpgradePromptModal, Pe as WsLink, Ji as acknowledgeNativePurchase, r as alertTokens, Vr as appendContextToPath, We as attemptTokenRefresh, ut as beginSsoNavigation, Gt as buildActorFallback, Rt as buildQuotaExhaustedMessage, dt as buildSsoDepositUrl, m as capitalizeFirst, h as capitalizeWords, i as categoryTokens, at as checkRemoteSLO, ot as checkSLO, Ge as clearAuthSessionStorage, pe as clearGraphqlFetchResponseCache, st as clearLocalAuthState, Xe as clearSSoCookie, Ze as clearShellSsoCookies, ft as clearSsoDepositState, pt as clearSsoNavigation, kt as clearUserContext, Ut as cn, mt as consumeSsoDepositMarker, n as createApolloClient, Zn as createEventBus, Or as createGlobalShortcuts, Ce as createGraphQLClient, Mt as createProfileScopedStorage, Gr as detectDeviceType, vn as detectPlatform, oe as dispatchBackendErrorEvent, Ir as dispatchQuotaExhausted, Fn as dispatchUpgradePrompt, se as extractBackendError, zt as extractQuotaExhaustedExtensions, Bt as extractUpgradeErrorExtensions, g as formatBytes, _ as formatCompactNumber, v as formatCurrency, y as formatCurrencyCompact, b as formatDate, x as formatDateTime, S as formatDuration, yn as formatKeyCombo, C as formatList, w as formatNumber, T as formatOrdinal, E as formatPercentage, D as formatRelativeTime, O as formatTime, a as getAlertTokens, o as getCategoryTokens, bn as getDisplayKeysForPlatform, $ as getGatewayConfig, ee as getGatewayUrl, we as getGlobalClient, kr as getGlobalShortcutsByCategory, te as getGraphQLEndpoint, Ci as getNativeBridge, Yi as getNativeProducts, Xi as getNativePurchases, wi as getPlatform, U as getProductUrl, W as getProductsWithUrls, Nt as getProfileScopedKey, s as getProgressTokens, Kr as getResponsiveSelector, ct as getSSORedirectUrl, Qe as getSSoCookie, q as getShellConfig, xn as getShortcutLabel, c as getStatusBadgeTokens, l as getStatusTokens, me as getStoredAuthToken, he as getStoredLocale, ge as getStoredOrganizationId, _e as getStoredProjectId, ve as getStoredWorkspaceId, ye as getStoredWorkspaceToken, ii as getTourContextRank, ai as getTourRouteCatalog, oi as getTourRouteModules, si as getTourRoutePages, u as getTrendTokens, Te as getWorkspaceClient, ne as getWorkspaceTokenPayload, Re as gql, be as graphqlFetch, Ke as hasAuthGraphQLErrors, Ee as initializeAppClients, At as initializeLogger, L as installGatewayFetchRewrite, Zi as installNativeIAP, ce as isAbortError, Ti as isAndroid, qe as isAuthGraphQLError, Je as isAuthNetworkError, le as isBackendErrorDisplay, P as isChunkLoadError, Ei as isElectron, Di as isIOS, Oi as isInstalledApp, Sn as isMac, Cn as isMobileDevice, ki as isNative, Qi as isNativeIAPAvailable, Vt as isQuotaExhaustedError, $e as isSharedSsoCookieDomain, J as isShellLessRoute, ht as isSsoNavigationPending, Ai as isStandalonePWA, wn as isTabletDevice, ci as isTourVisibleForContext, ue as isTransportError, et as isTrustedSsoOrigin, Ht as isUpgradeError, ji as isWeb, Mi as isWebBrowser, re as isWorkspaceTokenValidForContext, F as lazyWithRetry, Dt as logManager, de as markConnectionHealthy, gt as markSsoDepositDone, _t as markSsoDepositPending, Tn as matchesKeyCombo, Ar as mergeShortcuts, vt as mintSsoSessionTokens, Ni as nativeConfirm, Pi as nativeCopyText, Fi as nativeImpact, Ii as nativeNotify, Li as nativeOpenUrl, Ri as nativeShare, zi as nativeToast, En as normalizeKey, Dn as normalizePlatformCombo, li as normalizeTourPath, On as parseKeyCombo, k as pluralize, d as progressTokens, zr as publishPlanUsageSnapshot, $i as purchaseNativeProduct, Kn as readAnalyticsConsent, qn as readAnalyticsConsentChoice, tt as readShellSsoCookie, yt as readSsoDepositState, Ye as redirectToLogin, ui as registerTourRouteCatalog, De as resetAppClients, bi as resolveAppShellObservabilityConfig, B as resolveAuthBridgeConfig, R as resolveGatewayBases, xe as resolveGatewayUrl, I as resolveGatewayUrls, di as resolveTourTargetPath, ea as restoreNativePurchases, Jn as setAnalyticsConsent, nt as setSSoCookie, rt as setShellSsoCookies, jt as setUserContext, bt as shouldAttemptSsoDeposit, kn as shouldEnableKeyboardShortcuts, An as shouldIgnoreShortcut, Y as shouldShowBreadcrumb, X as shouldShowSidebar, fe as shouldToastBackendError, A as slugify, f as statusTokens, z as suppressConsole, j as toCamelCase, M as toPascalCase, p as trendTokens, N as truncateText, Kt as useActorProfiles, ze as useApolloClient, Wi as useAppState, br as useAsync, xr as useAsyncImmediate, mi as useAutoStartTour, ir as useBreakpoint, gr as useConditionalToggle, e as useCopyToClipboard, Hr as useCurrentContextSearchParams, tr as useDebounce, Gi as useDeviceInfo, Qn as useEvent, $n as useEventBus, er as useEventEmitter, ur as useExclusiveMenu, pn as useFeatureFlag, mn as useFeatureFlagDetails, hn as useFeatureFlagValue, fn as useFeatureFlags, ke as useGateway, Ae as useGatewayClient, Ki as useHaptics, Mr as useHasAnimated, Ne as useHasAuthToken, Tr as useHotkeys, Zr as useIsTourPlaying, cr as useKeyPress, lr as useKeyboardShortcut, wr as useKeyboardShortcuts, Be as useLazyQuery, dr as useLocalStorage, jr as useLogger, t as useMediaQuery, Wr as useMicrofrontendContext, ar as useMobileBreakpoint, Ve as useMutation, Ui as useNativeKeyboard, Vi as useNativePlatform, or as useOnClickOutside, sr as useOnClickOutsideWithRef, cn as usePWA, yr as usePagination, ri as usePlayTour, pr as usePrevious, mr as usePreviousDistinct, hr as usePreviousHistory, He as useQuery, Lr as useQuotaErrorToast, Pr as useRecordProductVisit, Nr as useReferralAttribution, St as useRegistryHelpers, Hi as useSafeArea, je as useSafeGateway, Me as useSafeGatewayClient, hi as useSafeToursContext, fr as useSessionStorage, Ct as useShellNavigate, Er as useShortcutHelp, Qr as useStartTour, qi as useStatusBar, $r as useStopTour, Ue as useSubscription, nr as useThrottle, _r as useToggle, vr as useToggleObject, qr as useTourPlayer, ei as useTourPlayerContext, gi as useTours, _i as useToursContext, Br as useUpgradePrompt, Ln as useVoiceInput, fi as withTourProgressStatus };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.814.3",
3
+ "version": "2026.815.2",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {
@@ -284,7 +284,7 @@
284
284
  "lint:sanity": "if [ \"${CI:-}\" = \"true\" ]; then bun run lint; else bun run lint -- --cache --cache-location .eslintcache; fi",
285
285
  "format": "prettier --config shared/config/prettier.config.mjs --write \"src/**/*.{ts,tsx}\" \"!src/config/*.config.ts\"",
286
286
  "type:check": "bash scripts/build-limits.sh tsc --noEmit",
287
- "test": "bun test scripts/graphql-schema-drift/__tests__ src/credentials src/storage src/shared/providers/AppShellProvider.test.ts src/shared/events/sinks/RybbitSink.test.ts",
287
+ "test": "bun test scripts/graphql-schema-drift/__tests__ src/credentials src/storage src/shared/assistant src/shared/providers/AppShellProvider.test.ts src/shared/events/sinks/RybbitSink.test.ts",
288
288
  "sanity": "bash scripts/build-limits.sh --gate bash -c 'bun run lint:sanity && bun run format && bun run type:check && bun run test && bun run build'",
289
289
  "switch:status": "bun scripts/deps-mode.ts status",
290
290
  "switch:remote": "bun scripts/deps-mode.ts remote",