@burdenoff/fe-libs 2026.1007.4 → 2026.1007.5

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 (83) hide show
  1. package/dist/chrome/AutoBreadcrumbs.d.ts.map +1 -1
  2. package/dist/chrome/AutoBreadcrumbs.js +65 -76
  3. package/dist/chrome/Breadcrumb.d.ts.map +1 -1
  4. package/dist/chrome/Breadcrumbs.d.ts.map +1 -1
  5. package/dist/chrome/Breadcrumbs.js +47 -46
  6. package/dist/chrome/ContextSwitcher.js +86 -86
  7. package/dist/chrome/HeaderBar.d.ts.map +1 -1
  8. package/dist/chrome/HeaderBar.js +111 -107
  9. package/dist/chrome/HeaderThemeSwitcher.d.ts.map +1 -1
  10. package/dist/chrome/HeaderThemeSwitcher.js +46 -45
  11. package/dist/chrome/LanguageSwitcher.js +4 -4
  12. package/dist/chrome/MobileTabBar.js +4 -4
  13. package/dist/chrome/PageHeader.d.ts.map +1 -1
  14. package/dist/chrome/PageHeader.js +32 -30
  15. package/dist/chrome/PersonaSurfaceControls.js +8 -8
  16. package/dist/chrome/ProductSideNav.js +6 -6
  17. package/dist/chrome/ProfileSwitcher.d.ts.map +1 -1
  18. package/dist/chrome/ProfileSwitcher.js +89 -88
  19. package/dist/chrome/SideNavigation.js +4 -4
  20. package/dist/chrome/Tabs.d.ts.map +1 -1
  21. package/dist/chrome/Tabs.js +30 -29
  22. package/dist/chrome/breadcrumbLabel.d.ts +10 -0
  23. package/dist/chrome/breadcrumbLabel.d.ts.map +1 -0
  24. package/dist/chrome/breadcrumbLabel.js +31 -0
  25. package/dist/chrome/contextSwitcher/TriggerButton.d.ts.map +1 -1
  26. package/dist/chrome/contextSwitcher/TriggerButton.js +40 -36
  27. package/dist/chrome/notificationCenter/BellButton.d.ts.map +1 -1
  28. package/dist/chrome/notificationCenter/BellButton.js +29 -25
  29. package/dist/chrome/shellLabelManifest.d.ts +27 -0
  30. package/dist/chrome/shellLabelManifest.d.ts.map +1 -0
  31. package/dist/chrome/sideNavigation/SidebarHeader.d.ts.map +1 -1
  32. package/dist/chrome/sideNavigation/SidebarHeader.js +23 -22
  33. package/dist/shared/assistant/appControls/languageReply.d.ts +6 -1
  34. package/dist/shared/assistant/appControls/languageReply.d.ts.map +1 -1
  35. package/dist/shared/assistant/i18nManifest.d.ts +17 -5
  36. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  37. package/dist/shared/assistant/i18nManifest.js +27 -22
  38. package/dist/shared/assistant/index.d.ts +1 -0
  39. package/dist/shared/assistant/index.d.ts.map +1 -1
  40. package/dist/shared/assistant/productCopy.d.ts +78 -0
  41. package/dist/shared/assistant/productCopy.d.ts.map +1 -0
  42. package/dist/shared/assistant/productCopy.js +45 -0
  43. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  44. package/dist/shared/assistant/ui/AssistantChatArea.js +2 -2
  45. package/dist/shared/assistant/ui/AssistantEmptyState.d.ts.map +1 -1
  46. package/dist/shared/assistant/ui/AssistantEmptyState.js +30 -22
  47. package/dist/shared/assistant/ui/AssistantHeader.d.ts.map +1 -1
  48. package/dist/shared/assistant/ui/AssistantHeader.js +46 -45
  49. package/dist/shared/components/ContextConversationWidget.js +1 -1
  50. package/dist/shared/events/sinks/RybbitSink.d.ts.map +1 -1
  51. package/dist/shared/events/sinks/RybbitSink.js +66 -69
  52. package/dist/shared/providers/AppShellProvider.d.ts +17 -0
  53. package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
  54. package/dist/shared/providers/AppShellProvider.js +188 -180
  55. package/dist/shared/providers/shell/I18nProvider.d.ts +92 -4
  56. package/dist/shared/providers/shell/I18nProvider.d.ts.map +1 -1
  57. package/dist/shared/providers/shell/I18nProvider.js +187 -79
  58. package/dist/shared/providers/shell/ProfileI18nBridge.d.ts +18 -2
  59. package/dist/shared/providers/shell/ProfileI18nBridge.d.ts.map +1 -1
  60. package/dist/shared/providers/shell/ProfileI18nBridge.js +55 -41
  61. package/dist/shared/providers/shell/directionMode.d.ts +25 -0
  62. package/dist/shared/providers/shell/directionMode.d.ts.map +1 -0
  63. package/dist/shared/providers/shell/directionMode.js +34 -0
  64. package/dist/shared/providers/shell/index.d.ts +4 -2
  65. package/dist/shared/providers/shell/index.d.ts.map +1 -1
  66. package/dist/shared/providers/shell/translationLayers.d.ts +30 -0
  67. package/dist/shared/providers/shell/translationLayers.d.ts.map +1 -0
  68. package/dist/shared/providers/shell/translationLayers.js +35 -0
  69. package/dist/shared/providers/shell/translationStore.d.ts +55 -0
  70. package/dist/shared/providers/shell/translationStore.d.ts.map +1 -0
  71. package/dist/shared/providers/shell/translationStore.js +100 -0
  72. package/dist/shared/providers/shell/useShellLabel.d.ts +13 -1
  73. package/dist/shared/providers/shell/useShellLabel.d.ts.map +1 -1
  74. package/dist/shared/providers/shell/useShellLabel.js +10 -9
  75. package/dist/shared-assistant.js +163 -162
  76. package/dist/shared-providers-shell.js +20 -19
  77. package/dist/ui/boff-ui2.d.ts.map +1 -1
  78. package/dist/ui/cta-overflow-menu.d.ts.map +1 -1
  79. package/dist/ui/cta-overflow-menu.js +20 -18
  80. package/dist/ui/guidance.d.ts +1 -1
  81. package/dist/ui/guidance.d.ts.map +1 -1
  82. package/dist/ui/guidance.js +53 -52
  83. package/package.json +3 -2
@@ -1,82 +1,83 @@
1
1
  import { useAssistantTr as e } from "../i18n.js";
2
- import { useAssistantPreview as t } from "../preview/context.js";
3
- import { hasAssistantPreviewSurface as n } from "../preview/types.js";
4
- import { AssistantMoreMenu as r } from "./AssistantMoreMenu.js";
5
- import { Eye as i, History as a, PanelBottom as o, PanelRight as s, Plus as c, Sparkles as l, X as u } from "lucide-react";
6
- import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
2
+ import { assistantPageLabelKey as t, translateProductCopy as n } from "../productCopy.js";
3
+ import { useAssistantPreview as r } from "../preview/context.js";
4
+ import { hasAssistantPreviewSurface as i } from "../preview/types.js";
5
+ import { AssistantMoreMenu as a } from "./AssistantMoreMenu.js";
6
+ import { Eye as o, History as s, PanelBottom as c, PanelRight as l, Plus as u, Sparkles as d, X as f } from "lucide-react";
7
+ import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
7
8
  //#region src/shared/assistant/ui/AssistantHeader.tsx
8
- var m = ({ contextLabel: m, onNewConversation: h, onOpenHistory: g, historyOpen: _, onTogglePreview: v, previewOpen: y, onClose: b, docked: x, onToggleDock: S }) => {
9
- let C = e(), w = t();
10
- return /* @__PURE__ */ p("div", {
9
+ var g = ({ contextLabel: g, onNewConversation: _, onOpenHistory: v, historyOpen: y, onTogglePreview: b, previewOpen: x, onClose: S, docked: C, onToggleDock: w }) => {
10
+ let T = e(), E = r();
11
+ return /* @__PURE__ */ h("div", {
11
12
  className: "flex items-center gap-2 border-b border-border-default bg-bg-elevated px-3 py-2.5",
12
- children: [/* @__PURE__ */ p("div", {
13
+ children: [/* @__PURE__ */ h("div", {
13
14
  className: "flex min-w-0 flex-1 items-center gap-2",
14
- children: [/* @__PURE__ */ f("span", {
15
+ children: [/* @__PURE__ */ m("span", {
15
16
  className: "flex size-7 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-action-primary-bg/25 to-action-primary-bg/5 text-action-primary-bg",
16
- children: /* @__PURE__ */ f(l, { className: "size-4" })
17
- }), /* @__PURE__ */ p("span", {
17
+ children: /* @__PURE__ */ m(d, { className: "size-4" })
18
+ }), /* @__PURE__ */ h("span", {
18
19
  className: "min-w-0 flex-1",
19
- children: [/* @__PURE__ */ f("span", {
20
+ children: [/* @__PURE__ */ m("span", {
20
21
  className: "block truncate text-[14px] font-semibold leading-tight text-text-primary",
21
- children: C("header.title", "AI Assistant")
22
- }), /* @__PURE__ */ p("span", {
22
+ children: T("header.title", "AI Assistant")
23
+ }), /* @__PURE__ */ h("span", {
23
24
  className: "block truncate text-[11px] leading-tight text-text-muted",
24
- children: [C("header.ready", "Ready"), m && /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f("span", {
25
+ children: [T("header.ready", "Ready"), g && /* @__PURE__ */ h(p, { children: [/* @__PURE__ */ m("span", {
25
26
  "aria-hidden": "true",
26
27
  children: " · "
27
- }), C("header.context", "Context: {{page}}", { page: m })] })]
28
+ }), T("header.context", "Context: {{page}}", { page: n(T, t(g), g) })] })]
28
29
  })]
29
30
  })]
30
- }), /* @__PURE__ */ p("div", {
31
+ }), /* @__PURE__ */ h("div", {
31
32
  className: "flex flex-shrink-0 items-center gap-0.5",
32
33
  children: [
33
- /* @__PURE__ */ f("button", {
34
+ /* @__PURE__ */ m("button", {
34
35
  type: "button",
35
- onClick: h,
36
+ onClick: _,
36
37
  className: "rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
37
- "aria-label": C("header.newConversation", "New conversation"),
38
+ "aria-label": T("header.newConversation", "New conversation"),
38
39
  "data-testid": "assistant-new-conversation",
39
- children: /* @__PURE__ */ f(c, { className: "size-4" })
40
+ children: /* @__PURE__ */ m(u, { className: "size-4" })
40
41
  }),
41
- /* @__PURE__ */ f("button", {
42
+ /* @__PURE__ */ m("button", {
42
43
  type: "button",
43
- onClick: g,
44
- className: `rounded-lg p-1.5 transition-colors ${_ ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
45
- "aria-label": C("header.history", "Conversation history"),
46
- "aria-pressed": _,
44
+ onClick: v,
45
+ className: `rounded-lg p-1.5 transition-colors ${y ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
46
+ "aria-label": T("header.history", "Conversation history"),
47
+ "aria-pressed": y,
47
48
  "data-testid": "assistant-open-history",
48
- children: /* @__PURE__ */ f(a, { className: "size-4" })
49
+ children: /* @__PURE__ */ m(s, { className: "size-4" })
49
50
  }),
50
- n(w) && v && /* @__PURE__ */ f("button", {
51
+ i(E) && b && /* @__PURE__ */ m("button", {
51
52
  type: "button",
52
- onClick: v,
53
- className: `rounded-lg p-1.5 transition-colors ${y ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
54
- "aria-label": w.label ?? C("header.preview", "Preview"),
55
- "aria-pressed": !!y,
53
+ onClick: b,
54
+ className: `rounded-lg p-1.5 transition-colors ${x ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
55
+ "aria-label": E.label ?? T("header.preview", "Preview"),
56
+ "aria-pressed": !!x,
56
57
  "data-testid": "assistant-toggle-preview",
57
- children: /* @__PURE__ */ f(i, { className: "size-4" })
58
+ children: /* @__PURE__ */ m(o, { className: "size-4" })
58
59
  }),
59
- /* @__PURE__ */ f(r, {}),
60
- S && /* @__PURE__ */ f("button", {
60
+ /* @__PURE__ */ m(a, {}),
61
+ w && /* @__PURE__ */ m("button", {
61
62
  type: "button",
62
- onClick: S,
63
+ onClick: w,
63
64
  className: "hidden rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary sm:inline-flex",
64
- "aria-label": x ? C("header.float", "Float chat window") : C("header.dock", "Dock to side panel"),
65
- "aria-pressed": x,
65
+ "aria-label": C ? T("header.float", "Float chat window") : T("header.dock", "Dock to side panel"),
66
+ "aria-pressed": C,
66
67
  "data-testid": "assistant-toggle-dock",
67
- children: f(x ? o : s, { className: "size-4" })
68
+ children: m(C ? c : l, { className: "size-4" })
68
69
  }),
69
- /* @__PURE__ */ f("button", {
70
+ /* @__PURE__ */ m("button", {
70
71
  type: "button",
71
- onClick: b,
72
+ onClick: S,
72
73
  className: "rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
73
- "aria-label": C("header.close", "Close assistant"),
74
+ "aria-label": T("header.close", "Close assistant"),
74
75
  "data-testid": "assistant-close",
75
- children: /* @__PURE__ */ f(u, { className: "size-4" })
76
+ children: /* @__PURE__ */ m(f, { className: "size-4" })
76
77
  })
77
78
  ]
78
79
  })]
79
80
  });
80
81
  };
81
82
  //#endregion
82
- export { m as AssistantHeader };
83
+ export { g as AssistantHeader };
@@ -3,8 +3,8 @@ import "../../shared-graphql.js";
3
3
  import { useAuth as t } from "../providers/shell/AuthProvider.js";
4
4
  import { useActiveContext as n } from "../providers/shell/ActiveContextProvider.js";
5
5
  import { Card as r, CardContent as ee } from "../../ui/card.js";
6
- import "../../ui.js";
7
6
  import { useI18n as te } from "../providers/shell/I18nProvider.js";
7
+ import "../../ui.js";
8
8
  import { usePageConversationContext as ne } from "../providers/shell/PageConversationContextProvider.js";
9
9
  import "../../shared-providers-shell.js";
10
10
  import { Composer as i } from "./contextConversationWidget/Composer.js";
@@ -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,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,kDA4DhG"}
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;AAGhE;;;;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,kDAiEhG"}
@@ -1,16 +1,17 @@
1
1
  "use client";
2
- import { useEventBus as e } from "../../../shared-events.js";
3
- import { useEffect as t, useRef as n, useState as r } from "react";
4
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
2
+ import { useShellLabel as e } from "../../providers/shell/useShellLabel.js";
3
+ import { useEventBus as t } from "../../../shared-events.js";
4
+ import { useEffect as n, useRef as r, useState as i } from "react";
5
+ import { jsx as a, jsxs as o } from "react/jsx-runtime";
5
6
  //#region src/shared/events/sinks/RybbitSink.tsx
6
- var o = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,bigconsole.dashboard.import_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.share_clicked,bigconsole.dashboard.shared,bigconsole.data_sink.import_clicked,bigconsole.data_sink.imported,bigconsole.widget.create_clicked,bigconsole.widget.created,bigconsole.widget.duplicate_clicked,bigconsole.widget.duplicated,bigconsole.ai.generate_clicked,bigconsole.ai.dashboard_generated,bigconsole.ai.create_dashboard_clicked,bigconsole.ai.dashboard_created".split(","), s = /(token|password|secret|authorization|cookie|session|email|name|stack|message|subject|description|query|search|prompt|formula|reason|body|content)/i, c = /(^id$|Id$|_id$|_ID$)/, l = [
7
+ var s = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,bigconsole.dashboard.import_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.share_clicked,bigconsole.dashboard.shared,bigconsole.data_sink.import_clicked,bigconsole.data_sink.imported,bigconsole.widget.create_clicked,bigconsole.widget.created,bigconsole.widget.duplicate_clicked,bigconsole.widget.duplicated,bigconsole.ai.generate_clicked,bigconsole.ai.dashboard_generated,bigconsole.ai.create_dashboard_clicked,bigconsole.ai.dashboard_created".split(","), c = /(token|password|secret|authorization|cookie|session|email|name|stack|message|subject|description|query|search|prompt|formula|reason|body|content)/i, l = /(^id$|Id$|_id$|_ID$)/, u = [
7
8
  "ticketId",
8
9
  "categoryId",
9
10
  "workspaceId"
10
- ], u = ["workspaceId"], d = {
11
- "support.ticket.created": l,
12
- "support.ticket.closed": l,
13
- "support.ticket.reopened": l,
11
+ ], d = ["workspaceId"], f = {
12
+ "support.ticket.created": u,
13
+ "support.ticket.closed": u,
14
+ "support.ticket.reopened": u,
14
15
  "support.kb.article_rated": ["articleId"],
15
16
  "bigconsole.dashboard.imported": ["dashboardId"],
16
17
  "bigconsole.dashboard.share_clicked": ["dashboardId"],
@@ -36,54 +37,54 @@ var o = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,suppor
36
37
  "bigconsole.ai.dashboard_generated": ["generationId"],
37
38
  "bigconsole.ai.create_dashboard_clicked": ["generationId"],
38
39
  "bigconsole.ai.dashboard_created": ["dashboardId", "generationId"],
39
- "healthybowl.farm.created": u,
40
- "healthybowl.crop.created": u,
41
- "healthybowl.crop.updated": u,
42
- "healthybowl.harvest.recorded": u
43
- }, f = {
40
+ "healthybowl.farm.created": d,
41
+ "healthybowl.crop.created": d,
42
+ "healthybowl.crop.updated": d,
43
+ "healthybowl.harvest.recorded": d
44
+ }, p = {
44
45
  "auth.signed_out": ["reason"],
45
46
  "psw.search.performed": ["queryLength"]
46
- }, p = {}, m = "bf-analytics-consent", h = "burdenoff:analytics-consent";
47
- function g() {
47
+ }, m = {}, h = "bf-analytics-consent", g = "burdenoff:analytics-consent";
48
+ function _() {
48
49
  return navigator.globalPrivacyControl === !0;
49
50
  }
50
- function _() {
51
+ function v() {
51
52
  if (typeof window > "u") return null;
52
- let e = window.localStorage.getItem(m);
53
+ let e = window.localStorage.getItem(h);
53
54
  return e === "granted" || e === "denied" ? e : null;
54
55
  }
55
- function v() {
56
- return typeof window > "u" || g() ? !1 : _() === "granted";
56
+ function y() {
57
+ return typeof window > "u" || _() ? !1 : v() === "granted";
57
58
  }
58
- function y(e) {
59
- typeof window > "u" || (window.localStorage.setItem(m, e ? "granted" : "denied"), window.dispatchEvent(new CustomEvent(h, { detail: { granted: e } })));
59
+ function b(e) {
60
+ typeof window > "u" || (window.localStorage.setItem(h, e ? "granted" : "denied"), window.dispatchEvent(new CustomEvent(g, { detail: { granted: e } })));
60
61
  }
61
- function b() {
62
+ function x() {
62
63
  let e = window;
63
64
  return navigator.doNotTrack === "1" || e.doNotTrack === "1";
64
65
  }
65
- function x(e) {
66
+ function S(e) {
66
67
  let t = 2166136261;
67
68
  for (let n = 0; n < e.length; n += 1) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
68
69
  return `u_${(t >>> 0).toString(16).padStart(8, "0")}`;
69
70
  }
70
- async function S(e) {
71
+ async function C(e) {
71
72
  if (crypto.subtle) {
72
73
  let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t);
73
74
  return Array.from(new Uint8Array(n), (e) => e.toString(16).padStart(2, "0")).join("");
74
75
  }
75
- return x(e);
76
- }
77
- function C(e, t) {
78
- return s.test(e) ? !(f[t] ?? []).includes(e) : c.test(e) ? !(d[t] ?? []).includes(e) : !1;
76
+ return S(e);
79
77
  }
80
78
  function w(e, t) {
79
+ return c.test(e) ? !(p[t] ?? []).includes(e) : l.test(e) ? !(f[t] ?? []).includes(e) : !1;
80
+ }
81
+ function T(e, t) {
81
82
  if (!e || typeof e != "object" || Array.isArray(e)) return {};
82
83
  let n = {};
83
- for (let [r, i] of Object.entries(e)) C(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
84
+ for (let [r, i] of Object.entries(e)) w(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
84
85
  return n;
85
86
  }
86
- function T(e) {
87
+ function E(e) {
87
88
  let t = {};
88
89
  for (let [n, r] of Object.entries(e)) {
89
90
  let e = {
@@ -95,39 +96,39 @@ function T(e) {
95
96
  }
96
97
  return t;
97
98
  }
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);
100
- return t(() => {
101
- let e = () => _(v()), t = (t) => {
102
- t.key === m && e();
99
+ function D({ siteId: e, scriptUrl: a = "https://app.rybbit.io/api/script.js", rename: o = m, allowlist: c = s, identifyOn: l = "auth.signed_in" }) {
100
+ let u = t(), d = r(!1), [f, p] = i(y);
101
+ return n(() => {
102
+ let e = () => p(y()), t = (t) => {
103
+ t.key === h && e();
103
104
  };
104
- return window.addEventListener(h, e), window.addEventListener("storage", t), () => {
105
- window.removeEventListener(h, e), window.removeEventListener("storage", t);
105
+ return window.addEventListener(g, e), window.addEventListener("storage", t), () => {
106
+ window.removeEventListener(g, e), window.removeEventListener("storage", t);
106
107
  };
107
- }, []), t(() => {
108
- if (!i || !f || g() || d.current) return;
108
+ }, []), n(() => {
109
+ if (!e || !f || _() || d.current) return;
109
110
  d.current = !0;
110
- let e = document.createElement("script");
111
- return e.src = a, e.defer = !0, e.dataset.siteId = i, document.head.appendChild(e), () => {
112
- document.head.removeChild(e);
111
+ let t = document.createElement("script");
112
+ return t.src = a, t.defer = !0, t.dataset.siteId = e, document.head.appendChild(t), () => {
113
+ document.head.removeChild(t);
113
114
  };
114
115
  }, [
115
- i,
116
+ e,
116
117
  a,
117
118
  f
118
- ]), t(() => {
119
- if (!(!i || !f || g())) return u.onAny((e) => {
120
- if (b()) return;
119
+ ]), n(() => {
120
+ if (!(!e || !f || _())) return u.onAny((e) => {
121
+ if (x()) return;
121
122
  let t = window;
122
123
  if (!t.rybbit || !c.includes(e.name)) return;
123
- let n = T({
124
+ let n = E({
124
125
  route: e.metadata.route.pathname,
125
126
  env: e.metadata.app.env,
126
- ...w(e.payload, e.name)
127
+ ...T(e.payload, e.name)
127
128
  });
128
129
  if (e.name === l) {
129
130
  let r = e.payload, i = r?.userId ?? r?.actorId ?? r?.id;
130
- i && S(i).then((e) => {
131
+ i && C(i).then((e) => {
131
132
  t.rybbit?.identify(e, n);
132
133
  });
133
134
  }
@@ -135,50 +136,46 @@ function E({ siteId: i, scriptUrl: a = "https://app.rybbit.io/api/script.js", re
135
136
  t.rybbit.pageview();
136
137
  return;
137
138
  }
138
- let r = s[e.name] ?? e.name;
139
+ let r = o[e.name] ?? e.name;
139
140
  t.rybbit.event(r, n);
140
141
  });
141
142
  }, [
142
143
  u,
143
- i,
144
+ e,
144
145
  c,
145
146
  l,
146
- s,
147
+ o,
147
148
  f
148
149
  ]), null;
149
150
  }
150
- function D({ productName: e = "this product" }) {
151
- let [t, n] = r(() => _() === null);
152
- return !t || g() ? null : /* @__PURE__ */ a("aside", {
151
+ function O({ productName: t = "this product" }) {
152
+ let [n, r] = i(() => v() === null), s = e();
153
+ return !n || _() ? null : /* @__PURE__ */ o("aside", {
153
154
  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",
154
- "aria-label": "Privacy choices",
155
+ "aria-label": s("privacyConsent.ariaLabel", "Privacy choices"),
155
156
  "data-testid": "analytics-consent-banner",
156
157
  children: [/* @__PURE__ */ a("p", {
157
158
  className: "text-sm",
158
- children: [
159
- "Allow optional analytics to help improve ",
160
- e,
161
- "? Essential product operation works either way."
162
- ]
163
- }), /* @__PURE__ */ a("div", {
159
+ children: s("privacyConsent.message", "Allow optional analytics to help improve {{productName}}? Essential product operation works either way.", { productName: t })
160
+ }), /* @__PURE__ */ o("div", {
164
161
  className: "mt-3 flex gap-2",
165
- children: [/* @__PURE__ */ i("button", {
162
+ children: [/* @__PURE__ */ a("button", {
166
163
  type: "button",
167
164
  className: "rounded-md border border-border-seam px-3 py-2 text-sm",
168
165
  onClick: () => {
169
- y(!1), n(!1);
166
+ b(!1), r(!1);
170
167
  },
171
- children: "Reject optional"
172
- }), /* @__PURE__ */ i("button", {
168
+ children: s("privacyConsent.reject", "Reject optional")
169
+ }), /* @__PURE__ */ a("button", {
173
170
  type: "button",
174
171
  className: "rounded-md bg-action-primary-bg px-3 py-2 text-sm text-action-primary-text",
175
172
  onClick: () => {
176
- y(!0), n(!1);
173
+ b(!0), r(!1);
177
174
  },
178
- children: "Allow analytics"
175
+ children: s("privacyConsent.allow", "Allow analytics")
179
176
  })]
180
177
  })]
181
178
  });
182
179
  }
183
180
  //#endregion
184
- export { D as AnalyticsConsentBanner, E as RybbitSink, v as readAnalyticsConsent, _ as readAnalyticsConsentChoice, y as setAnalyticsConsent };
181
+ export { O as AnalyticsConsentBanner, D as RybbitSink, y as readAnalyticsConsent, v as readAnalyticsConsentChoice, b as setAnalyticsConsent };
@@ -13,6 +13,23 @@ export interface AppShellConfig {
13
13
  domain?: string;
14
14
  /** Product ID for i18n translations service */
15
15
  i18nProductId: string;
16
+ /**
17
+ * The platform dictionary layered UNDER the product's: fallback < platform <
18
+ * product (BOFF-8060). Default `workspaces`, where the platform screens and
19
+ * the shared chrome keep their keys. `null` loads the product dictionary
20
+ * alone. Ignored by the Workspaces app itself (same id).
21
+ */
22
+ platformI18nProductId?: string | null;
23
+ /**
24
+ * Right-to-left support (BOFF-8060, F6). `enabled` (default false) lets
25
+ * `dir` follow the locale (Arabic RTL); leave it off until the product's UI
26
+ * uses logical CSS properties. `preview` (default true) honours the QA
27
+ * override `?dir=rtl` / `?dir=locale` / `?dir=off`.
28
+ */
29
+ rtl?: {
30
+ enabled?: boolean;
31
+ preview?: boolean;
32
+ };
16
33
  /** Resolved gateway URLs */
17
34
  gatewayUrls: {
18
35
  workspaceBaseUrl: string;
@@ -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":"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"}