@flamingo-stack/openframe-frontend-core 0.0.212 → 0.0.213

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 (91) hide show
  1. package/dist/{chunk-ZFBLC5GV.cjs → chunk-35XIT2CF.cjs} +17 -17
  2. package/dist/{chunk-ZFBLC5GV.cjs.map → chunk-35XIT2CF.cjs.map} +1 -1
  3. package/dist/{chunk-QKFBZLIR.js → chunk-3JWIJJ44.js} +2 -2
  4. package/dist/chunk-CZR7ARBA.js +698 -0
  5. package/dist/chunk-CZR7ARBA.js.map +1 -0
  6. package/dist/{chunk-UYQOPC57.js → chunk-HICZPTRR.js} +4 -351
  7. package/dist/chunk-HICZPTRR.js.map +1 -0
  8. package/dist/{chunk-5BNWGK6D.js → chunk-IK2X5YJU.js} +3 -3
  9. package/dist/{chunk-VTUIMMHO.cjs → chunk-OTKJASSX.cjs} +26 -26
  10. package/dist/{chunk-VTUIMMHO.cjs.map → chunk-OTKJASSX.cjs.map} +1 -1
  11. package/dist/chunk-OZ3GH6OQ.cjs +698 -0
  12. package/dist/chunk-OZ3GH6OQ.cjs.map +1 -0
  13. package/dist/{chunk-EH3RWVF3.cjs → chunk-WT5JV2GS.cjs} +8 -355
  14. package/dist/chunk-WT5JV2GS.cjs.map +1 -0
  15. package/dist/{chunk-WI76ZUBE.cjs → chunk-ZDF6F7ED.cjs} +544 -678
  16. package/dist/chunk-ZDF6F7ED.cjs.map +1 -0
  17. package/dist/{chunk-3E5ANY55.js → chunk-ZTJVRSN5.js} +409 -543
  18. package/dist/{chunk-3E5ANY55.js.map → chunk-ZTJVRSN5.js.map} +1 -1
  19. package/dist/components/chat/hooks/use-jetstream-dialog-subscription.d.ts.map +1 -1
  20. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts +0 -9
  21. package/dist/components/chat/hooks/use-nats-dialog-subscription.d.ts.map +1 -1
  22. package/dist/components/chat/index.cjs +5 -4
  23. package/dist/components/chat/index.cjs.map +1 -1
  24. package/dist/components/chat/index.js +4 -3
  25. package/dist/components/contact/index.cjs +6 -5
  26. package/dist/components/contact/index.cjs.map +1 -1
  27. package/dist/components/contact/index.js +5 -4
  28. package/dist/components/features/index.cjs +5 -4
  29. package/dist/components/features/index.cjs.map +1 -1
  30. package/dist/components/features/index.js +4 -3
  31. package/dist/components/features/notifications/index.d.ts +2 -2
  32. package/dist/components/features/notifications/index.d.ts.map +1 -1
  33. package/dist/components/features/notifications/notifications-context.d.ts +16 -1
  34. package/dist/components/features/notifications/notifications-context.d.ts.map +1 -1
  35. package/dist/components/features/notifications/types.d.ts +4 -0
  36. package/dist/components/features/notifications/types.d.ts.map +1 -1
  37. package/dist/components/index.cjs +55 -54
  38. package/dist/components/index.cjs.map +1 -1
  39. package/dist/components/index.js +7 -6
  40. package/dist/components/index.js.map +1 -1
  41. package/dist/components/navigation/app-header.d.ts.map +1 -1
  42. package/dist/components/navigation/index.cjs +5 -4
  43. package/dist/components/navigation/index.cjs.map +1 -1
  44. package/dist/components/navigation/index.js +4 -3
  45. package/dist/components/tickets/index.cjs +66 -65
  46. package/dist/components/tickets/index.cjs.map +1 -1
  47. package/dist/components/tickets/index.js +6 -5
  48. package/dist/components/tickets/index.js.map +1 -1
  49. package/dist/components/ui/index.cjs +5 -4
  50. package/dist/components/ui/index.cjs.map +1 -1
  51. package/dist/components/ui/index.js +4 -3
  52. package/dist/embed-shims/index.cjs +3 -3
  53. package/dist/embed-shims/index.cjs.map +1 -1
  54. package/dist/embed-shims/index.js +4 -4
  55. package/dist/hooks/index.cjs +3 -2
  56. package/dist/hooks/index.cjs.map +1 -1
  57. package/dist/hooks/index.js +2 -1
  58. package/dist/index.cjs +5 -4
  59. package/dist/index.cjs.map +1 -1
  60. package/dist/index.js +4 -3
  61. package/dist/nats/index.cjs +28 -346
  62. package/dist/nats/index.cjs.map +1 -1
  63. package/dist/nats/index.d.ts +3 -0
  64. package/dist/nats/index.d.ts.map +1 -1
  65. package/dist/nats/index.js +30 -346
  66. package/dist/nats/index.js.map +1 -1
  67. package/dist/nats/nats-provider.d.ts +28 -0
  68. package/dist/nats/nats-provider.d.ts.map +1 -0
  69. package/dist/nats/nats.d.ts +1 -0
  70. package/dist/nats/nats.d.ts.map +1 -1
  71. package/dist/nats/shared-connection.d.ts +73 -0
  72. package/dist/nats/shared-connection.d.ts.map +1 -0
  73. package/dist/nats/use-nats-subscription.d.ts +18 -0
  74. package/dist/nats/use-nats-subscription.d.ts.map +1 -0
  75. package/package.json +1 -1
  76. package/src/components/chat/hooks/use-jetstream-dialog-subscription.ts +60 -207
  77. package/src/components/chat/hooks/use-nats-dialog-subscription.ts +71 -214
  78. package/src/components/features/notifications/index.ts +2 -1
  79. package/src/components/features/notifications/notifications-context.tsx +104 -6
  80. package/src/components/features/notifications/types.ts +5 -0
  81. package/src/components/navigation/app-header.tsx +7 -9
  82. package/src/nats/index.ts +3 -0
  83. package/src/nats/nats-provider.tsx +146 -0
  84. package/src/nats/nats.ts +2 -0
  85. package/src/nats/shared-connection.ts +285 -0
  86. package/src/nats/use-nats-subscription.ts +99 -0
  87. package/dist/chunk-EH3RWVF3.cjs.map +0 -1
  88. package/dist/chunk-UYQOPC57.js.map +0 -1
  89. package/dist/chunk-WI76ZUBE.cjs.map +0 -1
  90. /package/dist/{chunk-QKFBZLIR.js.map → chunk-3JWIJJ44.js.map} +0 -0
  91. /package/dist/{chunk-5BNWGK6D.js.map → chunk-IK2X5YJU.js.map} +0 -0
@@ -16,8 +16,7 @@
16
16
 
17
17
 
18
18
 
19
-
20
- var _chunkEH3RWVF3cjs = require('./chunk-EH3RWVF3.cjs');
19
+ var _chunkWT5JV2GScjs = require('./chunk-WT5JV2GS.cjs');
21
20
 
22
21
 
23
22
 
@@ -129,7 +128,6 @@ var _chunk24KCAECRcjs = require('./chunk-24KCAECR.cjs');
129
128
 
130
129
 
131
130
 
132
-
133
131
 
134
132
 
135
133
  var _chunk65CPJ4SXcjs = require('./chunk-65CPJ4SX.cjs');
@@ -142,6 +140,9 @@ var _chunkXQFFGR6Ucjs = require('./chunk-XQFFGR6U.cjs');
142
140
  var _chunkP5EE2VJXcjs = require('./chunk-P5EE2VJX.cjs');
143
141
 
144
142
 
143
+ var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
144
+
145
+
145
146
  var _chunkBZFW3FOFcjs = require('./chunk-BZFW3FOF.cjs');
146
147
 
147
148
 
@@ -151,7 +152,9 @@ var _chunkBZFW3FOFcjs = require('./chunk-BZFW3FOF.cjs');
151
152
  var _chunkG7UE6RKVcjs = require('./chunk-G7UE6RKV.cjs');
152
153
 
153
154
 
154
- var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
155
+
156
+
157
+ var _chunkOZ3GH6OQcjs = require('./chunk-OZ3GH6OQ.cjs');
155
158
 
156
159
 
157
160
 
@@ -772,7 +775,7 @@ function ToolCallRow({ call, expanded, onToggle, batchStatus, execution }) {
772
775
  onClick: onToggle,
773
776
  className: "flex gap-2 items-start w-full p-3 cursor-pointer text-left",
774
777
  children: [
775
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEH3RWVF3cjs.ToolIcon, { toolType, size: 16 }) }),
778
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5JV2GScjs.ToolIcon, { toolType, size: 16 }) }),
776
779
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
777
780
  "div",
778
781
  {
@@ -3175,7 +3178,7 @@ var ToolExecutionDisplay = _react.forwardRef.call(void 0,
3175
3178
  className: "flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] cursor-pointer text-left w-full",
3176
3179
  onClick: () => setExpanded((prev) => !prev),
3177
3180
  children: [
3178
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEH3RWVF3cjs.ToolIcon, { toolType: integratedToolType, size: 16 }) }),
3181
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center justify-center shrink-0 w-5 h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5JV2GScjs.ToolIcon, { toolType: integratedToolType, size: 16 }) }),
3179
3182
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3180
3183
  "div",
3181
3184
  {
@@ -5416,7 +5419,7 @@ function AdminContentCard({
5416
5419
  const [imageError, setImageError] = _react.useState.call(void 0, false);
5417
5420
  const [imageLoaded, setImageLoaded] = _react.useState.call(void 0, false);
5418
5421
  const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
5419
- const imageBgColor = _chunkEH3RWVF3cjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
5422
+ const imageBgColor = _chunkWT5JV2GScjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
5420
5423
  _react.useEffect.call(void 0, () => {
5421
5424
  setImageLoaded(false);
5422
5425
  }, [displayUrl]);
@@ -5975,7 +5978,7 @@ var RATIO_TO_CSS_ASPECT = {
5975
5978
  landscape: "16 / 9"
5976
5979
  };
5977
5980
  function LazyBite({ ratio, children }) {
5978
- const { ref, isNear } = _chunkEH3RWVF3cjs.useNearViewport.call(void 0, "500px");
5981
+ const { ref, isNear } = _chunkWT5JV2GScjs.useNearViewport.call(void 0, "500px");
5979
5982
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full h-full bg-ods-card rounded-md" }) });
5980
5983
  }
5981
5984
  function VideoBitesDisplay({
@@ -7718,7 +7721,7 @@ function AutocompleteInner(props, ref) {
7718
7721
  }, [valueArray, options]);
7719
7722
  const selectedOption = !multiple && selectedOptions.length > 0 ? selectedOptions[0] : null;
7720
7723
  const inputPlaceholder = multiple ? valueArray.length === 0 ? placeholder : "Add More..." : placeholder;
7721
- const autoLimitTags = _chunkEH3RWVF3cjs.useAutoLimitTags.call(void 0, {
7724
+ const autoLimitTags = _chunkWT5JV2GScjs.useAutoLimitTags.call(void 0, {
7722
7725
  count: multiple ? selectedOptions.length : 0,
7723
7726
  limitTags: multiple ? limitTagsProp : 0,
7724
7727
  placeholder: inputPlaceholder
@@ -9116,7 +9119,7 @@ var ProgressBar = ({
9116
9119
  mobileHeight = 8,
9117
9120
  inverted = false
9118
9121
  }) => {
9119
- const isMdUp = _nullishCoalesce(_chunkEH3RWVF3cjs.useMdUp.call(void 0, ), () => ( true));
9122
+ const isMdUp = _nullishCoalesce(_chunkWT5JV2GScjs.useMdUp.call(void 0, ), () => ( true));
9120
9123
  const effectiveSegmentWidth = isMdUp ? segmentWidth : mobileSegmentWidth;
9121
9124
  const effectiveHeight = isMdUp ? height : mobileHeight;
9122
9125
  const containerRef = _react.useRef.call(void 0, null);
@@ -9211,7 +9214,7 @@ function InfoCard({ data, className = "" }) {
9211
9214
  );
9212
9215
  }
9213
9216
  function InfoCardValueRow({ label, value, showLabel, copyable, copyAriaLabel }) {
9214
- const { copy, copied } = _chunkEH3RWVF3cjs.useCopyToClipboard.call(void 0, );
9217
+ const { copy, copied } = _chunkWT5JV2GScjs.useCopyToClipboard.call(void 0, );
9215
9218
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-6 items-center gap-[var(--spacing-system-xs)] self-stretch w-full", children: [
9216
9219
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h4 text-ods-text-primary whitespace-nowrap", children: showLabel ? label : "" }),
9217
9220
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1 h-px bg-ods-divider" }),
@@ -12940,7 +12943,7 @@ function ListPageLayout({
12940
12943
  }) {
12941
12944
  const [mobileFilterOpen, setMobileFilterOpen] = _react.useState.call(void 0, false);
12942
12945
  const [localSearchValue, setLocalSearchValue] = _react.useState.call(void 0, searchValue);
12943
- const debouncedSearchValue = _chunkEH3RWVF3cjs.useDebounce.call(void 0, localSearchValue, 500);
12946
+ const debouncedSearchValue = _chunkWT5JV2GScjs.useDebounce.call(void 0, localSearchValue, 500);
12944
12947
  _react.useEffect.call(void 0, () => {
12945
12948
  setLocalSearchValue(searchValue);
12946
12949
  }, [searchValue]);
@@ -13743,7 +13746,7 @@ function toToolLabel(input) {
13743
13746
  if (!input) return "";
13744
13747
  const toolType = normalizeToolType(input);
13745
13748
  if (toolType) {
13746
- return _chunkEH3RWVF3cjs.toolLabels[toolType];
13749
+ return _chunkWT5JV2GScjs.toolLabels[toolType];
13747
13750
  }
13748
13751
  return input;
13749
13752
  }
@@ -13754,7 +13757,7 @@ function getToolTypeAliases(toolType) {
13754
13757
  return Object.entries(toolAliasMap).filter(([_, value]) => value === toolType).map(([key]) => key);
13755
13758
  }
13756
13759
  function getToolLabel(toolType) {
13757
- return _chunkEH3RWVF3cjs.toolLabels[toolType] || toolType;
13760
+ return _chunkWT5JV2GScjs.toolLabels[toolType] || toolType;
13758
13761
  }
13759
13762
 
13760
13763
  // src/types/shell.types.ts
@@ -18729,7 +18732,7 @@ function PlatformFilterComponent({
18729
18732
  variant: selectedPlatform === platform.value ? "accent" : "outline",
18730
18733
  size,
18731
18734
  onClick: () => onPlatformChange(platform.value),
18732
- leftIcon: showIcons ? _chunkEH3RWVF3cjs.getSmallPlatformIcon.call(void 0, platform.value) : void 0,
18735
+ leftIcon: showIcons ? _chunkWT5JV2GScjs.getSmallPlatformIcon.call(void 0, platform.value) : void 0,
18733
18736
  className: "text-h3",
18734
18737
  children: platform.label
18735
18738
  },
@@ -21489,7 +21492,7 @@ var getApprovalLevelLabel = (level, editMode = false) => {
21489
21492
  };
21490
21493
  var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
21491
21494
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-bg border-b border-ods-border flex gap-4 items-center px-4 py-3", children: [
21492
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEH3RWVF3cjs.ToolIcon, { toolType: policy.toolName, size: 16 }) }),
21495
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-bg border border-ods-border rounded-md flex items-center justify-center w-8 h-8", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5JV2GScjs.ToolIcon, { toolType: policy.toolName, size: 16 }) }),
21493
21496
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 flex flex-col min-w-0", children: [
21494
21497
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-[16px] font-medium text-ods-text-primary truncate", title: policy.name, children: policy.name }),
21495
21498
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-[12px] text-ods-text-secondary break-all font-mono", children: policy.commandPattern })
@@ -21799,7 +21802,7 @@ function WaitlistForm({
21799
21802
  const [email, setEmail] = _react.useState.call(void 0, defaultEmail);
21800
21803
  const [phone, setPhone] = _react.useState.call(void 0, defaultPhone);
21801
21804
  const [countryCode, setCountryCode] = _react.useState.call(void 0, "US");
21802
- const { toast } = _chunkEH3RWVF3cjs.useToast.call(void 0, );
21805
+ const { toast } = _chunkWT5JV2GScjs.useToast.call(void 0, );
21803
21806
  const [smsConsent, setSmsConsent] = _react.useState.call(void 0, false);
21804
21807
  const [isClient, setIsClient] = _react.useState.call(void 0, false);
21805
21808
  const [isPhoneInvalid, setIsPhoneInvalid] = _react.useState.call(void 0, false);
@@ -21971,12 +21974,48 @@ function WaitlistForm({
21971
21974
 
21972
21975
 
21973
21976
  var NotificationsContext = React73.createContext(null);
21977
+ function mergeNotification(base, incoming) {
21978
+ const out = { ...base };
21979
+ for (const key of Object.keys(incoming)) {
21980
+ const value = incoming[key];
21981
+ if (value !== void 0) out[key] = value;
21982
+ }
21983
+ out.read = (_nullishCoalesce(incoming.read, () => ( false))) || (_nullishCoalesce(base.read, () => ( false))) || false;
21984
+ out.settled = (_nullishCoalesce(incoming.settled, () => ( false))) || (_nullishCoalesce(base.settled, () => ( false))) || false;
21985
+ return out;
21986
+ }
21974
21987
  function reducer(state, action) {
21975
21988
  switch (action.type) {
21976
21989
  case "add": {
21977
- const next = [action.notification, ...state.filter((n) => n.id !== action.notification.id)];
21990
+ const existing = state.find((n) => n.id === action.notification.id);
21991
+ if (existing) {
21992
+ const merged = mergeNotification(existing, action.notification);
21993
+ return [merged, ...state.filter((n) => n.id !== action.notification.id)];
21994
+ }
21995
+ const next = [action.notification, ...state];
21978
21996
  return next.length > action.max ? next.slice(0, action.max) : next;
21979
21997
  }
21998
+ case "upsert": {
21999
+ const existing = state.find((n) => n.id === action.notification.id);
22000
+ if (existing) {
22001
+ const merged = mergeNotification(existing, action.notification);
22002
+ return state.map((n) => n.id === action.notification.id ? merged : n);
22003
+ }
22004
+ const next = [action.notification, ...state];
22005
+ return next.length > action.max ? next.slice(0, action.max) : next;
22006
+ }
22007
+ case "set": {
22008
+ const existingById = new Map(state.map((n) => [n.id, n]));
22009
+ return action.notifications.map((incoming) => {
22010
+ const existing = existingById.get(incoming.id);
22011
+ if (!existing) return incoming;
22012
+ return {
22013
+ ...incoming,
22014
+ read: incoming.read || existing.read,
22015
+ settled: incoming.settled || existing.settled
22016
+ };
22017
+ });
22018
+ }
21980
22019
  case "markRead":
21981
22020
  return state.map((n) => n.id === action.id ? { ...n, read: true } : n);
21982
22021
  case "markAllRead":
@@ -22003,11 +22042,16 @@ function NotificationsProvider({
22003
22042
  maxNotifications = 50,
22004
22043
  defaultShowPopups = true,
22005
22044
  onShowPopupsChange,
22006
- onHistoryClick
22045
+ onHistoryClick,
22046
+ actions
22007
22047
  }) {
22008
22048
  const [notifications, dispatch] = React73.useReducer(reducer, initialNotifications);
22009
22049
  const [isOpen, setIsOpen] = React73.useState(false);
22010
22050
  const [showPopups, setShowPopupsState] = React73.useState(defaultShowPopups);
22051
+ const actionsRef = React73.useRef(actions);
22052
+ React73.useEffect(() => {
22053
+ actionsRef.current = actions;
22054
+ }, [actions]);
22011
22055
  const addNotification = React73.useCallback(
22012
22056
  (input) => {
22013
22057
  const id = _nullishCoalesce(input.id, () => ( generateId()));
@@ -22015,17 +22059,45 @@ function NotificationsProvider({
22015
22059
  ...input,
22016
22060
  id,
22017
22061
  createdAt: _nullishCoalesce(input.createdAt, () => ( Date.now())),
22018
- read: false
22062
+ read: _nullishCoalesce(input.read, () => ( false))
22019
22063
  };
22020
22064
  dispatch({ type: "add", notification, max: maxNotifications });
22021
22065
  return id;
22022
22066
  },
22023
22067
  [maxNotifications]
22024
22068
  );
22025
- const markRead = React73.useCallback((id) => dispatch({ type: "markRead", id }), []);
22026
- const markAllRead = React73.useCallback(() => dispatch({ type: "markAllRead" }), []);
22027
- const markSettled = React73.useCallback((id) => dispatch({ type: "markSettled", id }), []);
22028
- const remove = React73.useCallback((id) => dispatch({ type: "remove", id }), []);
22069
+ const upsertNotification = React73.useCallback(
22070
+ (input) => {
22071
+ const notification = {
22072
+ ...input,
22073
+ id: input.id,
22074
+ createdAt: _nullishCoalesce(input.createdAt, () => ( Date.now())),
22075
+ read: _nullishCoalesce(input.read, () => ( false))
22076
+ };
22077
+ dispatch({ type: "upsert", notification, max: maxNotifications });
22078
+ return input.id;
22079
+ },
22080
+ [maxNotifications]
22081
+ );
22082
+ const setNotifications = React73.useCallback((list) => {
22083
+ dispatch({ type: "set", notifications: list });
22084
+ }, []);
22085
+ const markRead = React73.useCallback((id) => {
22086
+ dispatch({ type: "markRead", id });
22087
+ void _optionalChain([actionsRef, 'access', _375 => _375.current, 'optionalAccess', _376 => _376.onMarkRead, 'optionalCall', _377 => _377(id)]);
22088
+ }, []);
22089
+ const markAllRead = React73.useCallback(() => {
22090
+ dispatch({ type: "markAllRead" });
22091
+ void _optionalChain([actionsRef, 'access', _378 => _378.current, 'optionalAccess', _379 => _379.onMarkAllRead, 'optionalCall', _380 => _380()]);
22092
+ }, []);
22093
+ const markSettled = React73.useCallback((id) => {
22094
+ dispatch({ type: "markSettled", id });
22095
+ void _optionalChain([actionsRef, 'access', _381 => _381.current, 'optionalAccess', _382 => _382.onMarkSettled, 'optionalCall', _383 => _383(id)]);
22096
+ }, []);
22097
+ const remove = React73.useCallback((id) => {
22098
+ dispatch({ type: "remove", id });
22099
+ void _optionalChain([actionsRef, 'access', _384 => _384.current, 'optionalAccess', _385 => _385.onRemove, 'optionalCall', _386 => _386(id)]);
22100
+ }, []);
22029
22101
  const clear = React73.useCallback(() => dispatch({ type: "clear" }), []);
22030
22102
  const open = React73.useCallback(() => setIsOpen(true), []);
22031
22103
  const close = React73.useCallback(() => setIsOpen(false), []);
@@ -22033,7 +22105,7 @@ function NotificationsProvider({
22033
22105
  const setShowPopups = React73.useCallback(
22034
22106
  (value2) => {
22035
22107
  setShowPopupsState(value2);
22036
- _optionalChain([onShowPopupsChange, 'optionalCall', _375 => _375(value2)]);
22108
+ _optionalChain([onShowPopupsChange, 'optionalCall', _387 => _387(value2)]);
22037
22109
  },
22038
22110
  [onShowPopupsChange]
22039
22111
  );
@@ -22048,6 +22120,8 @@ function NotificationsProvider({
22048
22120
  isOpen,
22049
22121
  showPopups,
22050
22122
  addNotification,
22123
+ upsertNotification,
22124
+ setNotifications,
22051
22125
  markRead,
22052
22126
  markAllRead,
22053
22127
  markSettled,
@@ -22065,6 +22139,8 @@ function NotificationsProvider({
22065
22139
  isOpen,
22066
22140
  showPopups,
22067
22141
  addNotification,
22142
+ upsertNotification,
22143
+ setNotifications,
22068
22144
  markRead,
22069
22145
  markAllRead,
22070
22146
  markSettled,
@@ -22114,7 +22190,7 @@ function NotificationTile({
22114
22190
  if (!isLive) return;
22115
22191
  const remaining = Math.max(0, liveDurationMs - initialElapsed);
22116
22192
  const timer = window.setTimeout(() => {
22117
- _optionalChain([onSettle, 'optionalCall', _376 => _376(id)]);
22193
+ _optionalChain([onSettle, 'optionalCall', _388 => _388(id)]);
22118
22194
  }, remaining);
22119
22195
  return () => window.clearTimeout(timer);
22120
22196
  }, [id, isLive, initialElapsed, liveDurationMs, onSettle]);
@@ -22127,7 +22203,7 @@ function NotificationTile({
22127
22203
  ),
22128
22204
  children: [
22129
22205
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-xs)] p-[var(--spacing-system-s)]", children: [
22130
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk664KA5FIcjs.cn.call(void 0, "size-1.5 rounded-full", _chunkEH3RWVF3cjs.dotColorByVariant[variant]) }) }),
22206
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex size-6 shrink-0 items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk664KA5FIcjs.cn.call(void 0, "size-1.5 rounded-full", _chunkWT5JV2GScjs.dotColorByVariant[variant]) }) }),
22131
22207
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
22132
22208
  title ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-h4 text-ods-text-primary", title: typeof title === "string" ? title : void 0, children: title }) : null,
22133
22209
  description ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 line-clamp-2 text-ods-text-secondary", title: typeof description === "string" ? description : void 0, children: description }) : null
@@ -22152,7 +22228,7 @@ function NotificationTile({
22152
22228
  "button",
22153
22229
  {
22154
22230
  type: "button",
22155
- onClick: () => _optionalChain([onSettle, 'optionalCall', _377 => _377(id)]),
22231
+ onClick: () => _optionalChain([onSettle, 'optionalCall', _389 => _389(id)]),
22156
22232
  "aria-label": "Dismiss notification",
22157
22233
  tabIndex: isLive ? 0 : -1,
22158
22234
  className: _chunk664KA5FIcjs.cn.call(void 0,
@@ -22168,7 +22244,7 @@ function NotificationTile({
22168
22244
  "aria-hidden": true,
22169
22245
  className: _chunk664KA5FIcjs.cn.call(void 0,
22170
22246
  "absolute inset-x-0 -bottom-px h-1 origin-left",
22171
- _chunkEH3RWVF3cjs.progressColorByVariant[variant]
22247
+ _chunkWT5JV2GScjs.progressColorByVariant[variant]
22172
22248
  ),
22173
22249
  style: {
22174
22250
  animation: `toast-progress ${liveDurationMs}ms linear forwards`,
@@ -22436,15 +22512,15 @@ function TicketCard({
22436
22512
  transform: _utilities.CSS.Transform.toString(sortable.transform),
22437
22513
  transition: sortable.transition
22438
22514
  };
22439
- const showDeviceRow = !!(_optionalChain([ticket, 'access', _378 => _378.deviceHostnames, 'optionalAccess', _379 => _379.length]) || ticket.organizationName);
22515
+ const showDeviceRow = !!(_optionalChain([ticket, 'access', _390 => _390.deviceHostnames, 'optionalAccess', _391 => _391.length]) || ticket.organizationName);
22440
22516
  const deviceText = [
22441
- _optionalChain([ticket, 'access', _380 => _380.deviceHostnames, 'optionalAccess', _381 => _381.join, 'call', _382 => _382(", ")]),
22517
+ _optionalChain([ticket, 'access', _392 => _392.deviceHostnames, 'optionalAccess', _393 => _393.join, 'call', _394 => _394(", ")]),
22442
22518
  ticket.organizationName
22443
22519
  ].filter(Boolean).join(", ");
22444
22520
  const handleClick = (e) => {
22445
22521
  if (sortable.isDragging) e.preventDefault();
22446
22522
  };
22447
- const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _383 => _383.assignees, 'optionalAccess', _384 => _384.length]) || renderAssignSlot);
22523
+ const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _395 => _395.assignees, 'optionalAccess', _396 => _396.length]) || renderAssignSlot);
22448
22524
  const rightSection = hasRightSection ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "pointer-events-auto flex shrink-0 items-center gap-[var(--spacing-system-xsf)]", children: [
22449
22525
  ticket.priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
22450
22526
  _chunk65CPJ4SXcjs.Flag02Icon,
@@ -22453,7 +22529,7 @@ function TicketCard({
22453
22529
  "aria-label": `Priority: ${ticket.priority}`
22454
22530
  }
22455
22531
  ),
22456
- renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access', _385 => _385.assignees, 'optionalAccess', _386 => _386.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex -space-x-2", children: [
22532
+ renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access', _397 => _397.assignees, 'optionalAccess', _398 => _398.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex -space-x-2", children: [
22457
22533
  ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
22458
22534
  SquareAvatar,
22459
22535
  {
@@ -22482,7 +22558,7 @@ function TicketCard({
22482
22558
  ] }),
22483
22559
  rightSection
22484
22560
  ] }),
22485
- _optionalChain([ticket, 'access', _387 => _387.tags, 'optionalAccess', _388 => _388.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketTagRow, { tags: ticket.tags }) : null
22561
+ _optionalChain([ticket, 'access', _399 => _399.tags, 'optionalAccess', _400 => _400.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketTagRow, { tags: ticket.tags }) : null
22486
22562
  ] });
22487
22563
  const cardClasses = _chunk664KA5FIcjs.cn.call(void 0,
22488
22564
  "relative flex flex-col gap-[var(--spacing-system-sf)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-sf)] select-none text-left",
@@ -22655,7 +22731,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
22655
22731
  const observer = new IntersectionObserver(
22656
22732
  (entries) => {
22657
22733
  if (entries.some((e) => e.isIntersecting)) {
22658
- _optionalChain([loadMoreRef, 'access', _389 => _389.current, 'optionalCall', _390 => _390(columnIdRef.current)]);
22734
+ _optionalChain([loadMoreRef, 'access', _401 => _401.current, 'optionalCall', _402 => _402(columnIdRef.current)]);
22659
22735
  }
22660
22736
  },
22661
22737
  { root, rootMargin: loadMoreRootMargin }
@@ -22684,7 +22760,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
22684
22760
  {
22685
22761
  ticket: t,
22686
22762
  columnId: column.id,
22687
- href: _optionalChain([getTicketHref, 'optionalCall', _391 => _391(t.id)]),
22763
+ href: _optionalChain([getTicketHref, 'optionalCall', _403 => _403(t.id)]),
22688
22764
  renderAssignSlot,
22689
22765
  dragDisabled: column.dragDisabled
22690
22766
  },
@@ -22716,7 +22792,7 @@ function EmptyState2() {
22716
22792
  // src/components/features/board/use-board-collapse.ts
22717
22793
 
22718
22794
  function useBoardCollapse(storageKey) {
22719
- const [persisted, setPersisted] = _chunkEH3RWVF3cjs.useLocalStorage.call(void 0,
22795
+ const [persisted, setPersisted] = _chunkWT5JV2GScjs.useLocalStorage.call(void 0,
22720
22796
  _nullishCoalesce(storageKey, () => ( "__board_collapse_unused__")),
22721
22797
  {}
22722
22798
  );
@@ -22763,7 +22839,7 @@ function Board({
22763
22839
  onThumbPointerDown,
22764
22840
  onThumbPointerMove,
22765
22841
  onThumbPointerUp
22766
- } = _chunkEH3RWVF3cjs.useHorizontalScrollbar.call(void 0, );
22842
+ } = _chunkWT5JV2GScjs.useHorizontalScrollbar.call(void 0, );
22767
22843
  const [items, setItems] = React77.useState(columns);
22768
22844
  const isDraggingRef = React77.useRef(false);
22769
22845
  React77.useEffect(() => {
@@ -22779,17 +22855,17 @@ function Board({
22779
22855
  const pointer = _core.pointerWithin.call(void 0, args);
22780
22856
  const intersections = pointer.length > 0 ? pointer : _core.rectIntersection.call(void 0, args);
22781
22857
  const ticketHit = intersections.find(
22782
- (c) => _optionalChain([c, 'access', _392 => _392.data, 'optionalAccess', _393 => _393.droppableContainer, 'optionalAccess', _394 => _394.data, 'optionalAccess', _395 => _395.current, 'optionalAccess', _396 => _396.type]) === "ticket"
22858
+ (c) => _optionalChain([c, 'access', _404 => _404.data, 'optionalAccess', _405 => _405.droppableContainer, 'optionalAccess', _406 => _406.data, 'optionalAccess', _407 => _407.current, 'optionalAccess', _408 => _408.type]) === "ticket"
22783
22859
  );
22784
22860
  if (ticketHit) return [ticketHit];
22785
22861
  const columnHit = intersections.find(
22786
- (c) => _optionalChain([c, 'access', _397 => _397.data, 'optionalAccess', _398 => _398.droppableContainer, 'optionalAccess', _399 => _399.data, 'optionalAccess', _400 => _400.current, 'optionalAccess', _401 => _401.type]) === "column"
22862
+ (c) => _optionalChain([c, 'access', _409 => _409.data, 'optionalAccess', _410 => _410.droppableContainer, 'optionalAccess', _411 => _411.data, 'optionalAccess', _412 => _412.current, 'optionalAccess', _413 => _413.type]) === "column"
22787
22863
  );
22788
22864
  if (columnHit) {
22789
- const columnId = _optionalChain([columnHit, 'access', _402 => _402.data, 'optionalAccess', _403 => _403.droppableContainer, 'optionalAccess', _404 => _404.data, 'optionalAccess', _405 => _405.current, 'optionalAccess', _406 => _406.columnId]);
22865
+ const columnId = _optionalChain([columnHit, 'access', _414 => _414.data, 'optionalAccess', _415 => _415.droppableContainer, 'optionalAccess', _416 => _416.data, 'optionalAccess', _417 => _417.current, 'optionalAccess', _418 => _418.columnId]);
22790
22866
  const ticketsInColumn = args.droppableContainers.filter((c) => {
22791
22867
  const d = c.data.current;
22792
- return _optionalChain([d, 'optionalAccess', _407 => _407.type]) === "ticket" && d.columnId === columnId;
22868
+ return _optionalChain([d, 'optionalAccess', _419 => _419.type]) === "ticket" && d.columnId === columnId;
22793
22869
  });
22794
22870
  if (ticketsInColumn.length > 0) {
22795
22871
  const closest = _core.closestCorners.call(void 0, { ...args, droppableContainers: ticketsInColumn });
@@ -22814,20 +22890,20 @@ function Board({
22814
22890
  const overId = String(over.id);
22815
22891
  if (activeId === overId) return;
22816
22892
  const overData = over.data.current;
22817
- const fromColumnId = _optionalChain([locate, 'call', _408 => _408(items, activeId), 'optionalAccess', _409 => _409.columnId]);
22818
- const toColumnId = _optionalChain([overData, 'optionalAccess', _410 => _410.columnId]);
22893
+ const fromColumnId = _optionalChain([locate, 'call', _420 => _420(items, activeId), 'optionalAccess', _421 => _421.columnId]);
22894
+ const toColumnId = _optionalChain([overData, 'optionalAccess', _422 => _422.columnId]);
22819
22895
  if (!fromColumnId || !toColumnId || fromColumnId === toColumnId) return;
22820
22896
  const origin = dragOriginRef.current;
22821
- const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _411 => _411.fromColumnId]) === toColumnId;
22897
+ const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _423 => _423.fromColumnId]) === toColumnId;
22822
22898
  const targetCol = items.find((c) => c.id === toColumnId);
22823
- const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess', _412 => _412.allowedFromColumns]) && !!origin && !targetCol.allowedFromColumns.includes(origin.fromColumnId);
22824
- if (_optionalChain([targetCol, 'optionalAccess', _413 => _413.dropDisabled]) && !isReturnToOrigin || blockedBySource) return;
22899
+ const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess', _424 => _424.allowedFromColumns]) && !!origin && !targetCol.allowedFromColumns.includes(origin.fromColumnId);
22900
+ if (_optionalChain([targetCol, 'optionalAccess', _425 => _425.dropDisabled]) && !isReturnToOrigin || blockedBySource) return;
22825
22901
  setItems((prev) => {
22826
22902
  const fromIndex = findIndexInColumn(prev, fromColumnId, activeId);
22827
22903
  const toCol = prev.find((c) => c.id === toColumnId);
22828
22904
  if (fromIndex < 0 || !toCol) return prev;
22829
22905
  let toIndex;
22830
- if (_optionalChain([overData, 'optionalAccess', _414 => _414.type]) === "column") {
22906
+ if (_optionalChain([overData, 'optionalAccess', _426 => _426.type]) === "column") {
22831
22907
  toIndex = toCol.tickets.length;
22832
22908
  } else {
22833
22909
  const overIndex = toCol.tickets.findIndex((t) => t.id === overId);
@@ -22869,14 +22945,14 @@ function Board({
22869
22945
  const toColumnId = located.columnId;
22870
22946
  const isCrossColumn = origin.fromColumnId !== toColumnId;
22871
22947
  const targetCol = items.find((c) => c.id === toColumnId);
22872
- if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess', _415 => _415.dropDisabled]) || _optionalChain([targetCol, 'optionalAccess', _416 => _416.allowedFromColumns]) && !targetCol.allowedFromColumns.includes(origin.fromColumnId))) {
22948
+ if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess', _427 => _427.dropDisabled]) || _optionalChain([targetCol, 'optionalAccess', _428 => _428.allowedFromColumns]) && !targetCol.allowedFromColumns.includes(origin.fromColumnId))) {
22873
22949
  setItems(columns);
22874
22950
  return;
22875
22951
  }
22876
22952
  let finalIndex = located.index;
22877
- let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access', _417 => _417.find, 'call', _418 => _418((c) => c.id === toColumnId), 'optionalAccess', _419 => _419.tickets]), () => ( []));
22953
+ let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access', _429 => _429.find, 'call', _430 => _430((c) => c.id === toColumnId), 'optionalAccess', _431 => _431.tickets]), () => ( []));
22878
22954
  const overData = over.data.current;
22879
- if (_optionalChain([overData, 'optionalAccess', _420 => _420.type]) === "ticket") {
22955
+ if (_optionalChain([overData, 'optionalAccess', _432 => _432.type]) === "ticket") {
22880
22956
  const overIndex = findIndexInColumn(items, toColumnId, String(over.id));
22881
22957
  if (overIndex >= 0 && overIndex !== located.index) {
22882
22958
  finalColumnTickets = _sortable.arrayMove.call(void 0, finalColumnTickets, located.index, overIndex);
@@ -22896,8 +22972,8 @@ function Board({
22896
22972
  ticketId: origin.ticketId,
22897
22973
  fromColumnId: origin.fromColumnId,
22898
22974
  toColumnId,
22899
- afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _421 => _421[finalIndex - 1], 'optionalAccess', _422 => _422.id]), () => ( null)),
22900
- beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _423 => _423[finalIndex + 1], 'optionalAccess', _424 => _424.id]), () => ( null))
22975
+ afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _433 => _433[finalIndex - 1], 'optionalAccess', _434 => _434.id]), () => ( null)),
22976
+ beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _435 => _435[finalIndex + 1], 'optionalAccess', _436 => _436.id]), () => ( null))
22901
22977
  });
22902
22978
  };
22903
22979
  const handleDragCancel = () => {
@@ -22926,8 +23002,8 @@ function Board({
22926
23002
  children: items.map((column, i) => {
22927
23003
  const prev = items[i - 1];
22928
23004
  const next = items[i + 1];
22929
- const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess', _425 => _425.system]));
22930
- const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess', _426 => _426.system]));
23005
+ const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess', _437 => _437.system]));
23006
+ const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess', _438 => _438.system]));
22931
23007
  const showGap = i > 0 && !joinLeft;
22932
23008
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React77.Fragment, { children: [
22933
23009
  showGap && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
@@ -22985,7 +23061,7 @@ function locate(cols, ticketId) {
22985
23061
  return null;
22986
23062
  }
22987
23063
  function findIndexInColumn(cols, columnId, ticketId) {
22988
- return _nullishCoalesce(_optionalChain([cols, 'access', _427 => _427.find, 'call', _428 => _428((c) => c.id === columnId), 'optionalAccess', _429 => _429.tickets, 'access', _430 => _430.findIndex, 'call', _431 => _431((t) => t.id === ticketId)]), () => ( -1));
23064
+ return _nullishCoalesce(_optionalChain([cols, 'access', _439 => _439.find, 'call', _440 => _440((c) => c.id === columnId), 'optionalAccess', _441 => _441.tickets, 'access', _442 => _442.findIndex, 'call', _443 => _443((t) => t.id === ticketId)]), () => ( -1));
22989
23065
  }
22990
23066
 
22991
23067
  // src/components/features/board/types.ts
@@ -23174,7 +23250,7 @@ function Header2({ config, platform }) {
23174
23250
  className: _chunk664KA5FIcjs.cn.call(void 0,
23175
23251
  "flex justify-start w-full",
23176
23252
  "font-bold text-[16px] leading-none tracking-[-0.32px]",
23177
- index < (_nullishCoalesce(_optionalChain([item, 'access', _432 => _432.children, 'optionalAccess', _433 => _433.length]), () => ( 0))) - 1 && "mb-1",
23253
+ index < (_nullishCoalesce(_optionalChain([item, 'access', _444 => _444.children, 'optionalAccess', _445 => _445.length]), () => ( 0))) - 1 && "mb-1",
23178
23254
  "text-ods-text-primary",
23179
23255
  // All dropdown items use primary text color
23180
23256
  child.isActive && "bg-ods-bg-hover"
@@ -23266,7 +23342,7 @@ function Header2({ config, platform }) {
23266
23342
  style: config.style,
23267
23343
  children: [
23268
23344
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-start flex-shrink-0", children: [
23269
- _optionalChain([config, 'access', _434 => _434.actions, 'optionalAccess', _435 => _435.left]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center", children: config.actions.left }),
23345
+ _optionalChain([config, 'access', _446 => _446.actions, 'optionalAccess', _447 => _447.left]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center", children: config.actions.left }),
23270
23346
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWBR7H6E3cjs.next_link_default, { href: config.logo.href, className: "transition-opacity duration-200 hover:opacity-80", children: config.logo.element })
23271
23347
  ] }),
23272
23348
  config.navigation && config.navigation.items.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -23283,7 +23359,7 @@ function Header2({ config, platform }) {
23283
23359
  }
23284
23360
  ),
23285
23361
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-end gap-4 flex-shrink-0", children: [
23286
- _optionalChain([config, 'access', _436 => _436.actions, 'optionalAccess', _437 => _437.right]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:flex items-center gap-4", children: config.actions.right }),
23362
+ _optionalChain([config, 'access', _448 => _448.actions, 'optionalAccess', _449 => _449.right]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden md:flex items-center gap-4", children: config.actions.right }),
23287
23363
  config.mobile && config.mobile.enabled && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
23288
23364
  _chunkUXZ3ZJ3Mcjs.Button,
23289
23365
  {
@@ -23291,10 +23367,10 @@ function Header2({ config, platform }) {
23291
23367
  size: "icon",
23292
23368
  className: "flex md:hidden",
23293
23369
  onClick: () => {
23294
- _optionalChain([config, 'access', _438 => _438.mobile, 'optionalAccess', _439 => _439.onToggle, 'optionalCall', _440 => _440()]);
23370
+ _optionalChain([config, 'access', _450 => _450.mobile, 'optionalAccess', _451 => _451.onToggle, 'optionalCall', _452 => _452()]);
23295
23371
  },
23296
- "aria-label": _optionalChain([config, 'access', _441 => _441.mobile, 'optionalAccess', _442 => _442.isOpen]) ? "Close menu" : "Open menu",
23297
- leftIcon: _optionalChain([config, 'access', _443 => _443.mobile, 'optionalAccess', _444 => _444.menuIcon]) || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.Menu01Icon, {})
23372
+ "aria-label": _optionalChain([config, 'access', _453 => _453.mobile, 'optionalAccess', _454 => _454.isOpen]) ? "Close menu" : "Open menu",
23373
+ leftIcon: _optionalChain([config, 'access', _455 => _455.mobile, 'optionalAccess', _456 => _456.menuIcon]) || /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.Menu01Icon, {})
23298
23374
  }
23299
23375
  )
23300
23376
  ] })
@@ -23311,10 +23387,10 @@ function Header2({ config, platform }) {
23311
23387
  // src/components/navigation/header-skeleton.tsx
23312
23388
 
23313
23389
  function HeaderSkeleton({ config }) {
23314
- const showNavigation = _optionalChain([config, 'optionalAccess', _445 => _445.navigation]) && config.navigation.items.length > 0;
23315
- const showActions = _optionalChain([config, 'optionalAccess', _446 => _446.actions, 'optionalAccess', _447 => _447.right]) && config.actions.right.length > 0;
23316
- const showMobileMenu = _optionalChain([config, 'optionalAccess', _448 => _448.mobile, 'optionalAccess', _449 => _449.enabled]);
23317
- const isAdminHeader = _optionalChain([config, 'optionalAccess', _450 => _450.className, 'optionalAccess', _451 => _451.includes, 'call', _452 => _452("admin")]);
23390
+ const showNavigation = _optionalChain([config, 'optionalAccess', _457 => _457.navigation]) && config.navigation.items.length > 0;
23391
+ const showActions = _optionalChain([config, 'optionalAccess', _458 => _458.actions, 'optionalAccess', _459 => _459.right]) && config.actions.right.length > 0;
23392
+ const showMobileMenu = _optionalChain([config, 'optionalAccess', _460 => _460.mobile, 'optionalAccess', _461 => _461.enabled]);
23393
+ const isAdminHeader = _optionalChain([config, 'optionalAccess', _462 => _462.className, 'optionalAccess', _463 => _463.includes, 'call', _464 => _464("admin")]);
23318
23394
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "sticky top-0 z-40 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
23319
23395
  "header",
23320
23396
  {
@@ -23323,11 +23399,11 @@ function HeaderSkeleton({ config }) {
23323
23399
  "bg-ods-card border-b border-ods-border backdrop-blur-sm",
23324
23400
  "px-6 py-3",
23325
23401
  "transition-opacity duration-300 ease-in-out",
23326
- _optionalChain([config, 'optionalAccess', _453 => _453.className])
23402
+ _optionalChain([config, 'optionalAccess', _465 => _465.className])
23327
23403
  ),
23328
23404
  children: [
23329
23405
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-start flex-shrink-0", children: [
23330
- isAdminHeader && _optionalChain([config, 'optionalAccess', _454 => _454.actions, 'optionalAccess', _455 => _455.left]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 w-10 bg-ods-border rounded animate-pulse" }) }),
23406
+ isAdminHeader && _optionalChain([config, 'optionalAccess', _466 => _466.actions, 'optionalAccess', _467 => _467.left]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mr-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 w-10 bg-ods-border rounded animate-pulse" }) }),
23331
23407
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
23332
23408
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-8 w-8 bg-ods-border rounded animate-pulse" }),
23333
23409
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 w-24 bg-ods-border rounded animate-pulse" })
@@ -23335,8 +23411,8 @@ function HeaderSkeleton({ config }) {
23335
23411
  ] }),
23336
23412
  showNavigation && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "nav", { className: _chunk664KA5FIcjs.cn.call(void 0,
23337
23413
  "hidden md:flex items-center gap-2",
23338
- _optionalChain([config, 'optionalAccess', _456 => _456.navigation, 'optionalAccess', _457 => _457.position]) === "center" && "absolute left-1/2 transform -translate-x-1/2",
23339
- _optionalChain([config, 'optionalAccess', _458 => _458.navigation, 'optionalAccess', _459 => _459.position]) === "right" && "ml-auto mr-4"
23414
+ _optionalChain([config, 'optionalAccess', _468 => _468.navigation, 'optionalAccess', _469 => _469.position]) === "center" && "absolute left-1/2 transform -translate-x-1/2",
23415
+ _optionalChain([config, 'optionalAccess', _470 => _470.navigation, 'optionalAccess', _471 => _471.position]) === "right" && "ml-auto mr-4"
23340
23416
  ), children: [
23341
23417
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 w-20 bg-ods-border rounded animate-pulse" }),
23342
23418
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 w-28 bg-ods-border rounded animate-pulse" }),
@@ -23384,7 +23460,7 @@ function MobileNavPanel({ isOpen, config }) {
23384
23460
  _react.useEffect.call(void 0, () => {
23385
23461
  const handleKeyDown = (e) => {
23386
23462
  if (e.key === "Escape" && isOpen) {
23387
- _optionalChain([config, 'access', _460 => _460.onClose, 'optionalCall', _461 => _461()]);
23463
+ _optionalChain([config, 'access', _472 => _472.onClose, 'optionalCall', _473 => _473()]);
23388
23464
  }
23389
23465
  };
23390
23466
  if (isOpen) {
@@ -23401,7 +23477,7 @@ function MobileNavPanel({ isOpen, config }) {
23401
23477
  if (item.onClick) {
23402
23478
  item.onClick();
23403
23479
  }
23404
- _optionalChain([config, 'access', _462 => _462.onClose, 'optionalCall', _463 => _463()]);
23480
+ _optionalChain([config, 'access', _474 => _474.onClose, 'optionalCall', _475 => _475()]);
23405
23481
  };
23406
23482
  if (item.href) {
23407
23483
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -23619,7 +23695,7 @@ function SlidingSidebar({ config }) {
23619
23695
  variant: "transparent",
23620
23696
  size: "default",
23621
23697
  onClick: () => {
23622
- _optionalChain([item, 'access', _464 => _464.onClick, 'optionalCall', _465 => _465()]);
23698
+ _optionalChain([item, 'access', _476 => _476.onClick, 'optionalCall', _477 => _477()]);
23623
23699
  config.onClose();
23624
23700
  },
23625
23701
  leftIcon: item.icon,
@@ -23642,7 +23718,7 @@ function SlidingSidebar({ config }) {
23642
23718
  variant: "transparent",
23643
23719
  size: "default",
23644
23720
  onClick: () => {
23645
- _optionalChain([item, 'access', _466 => _466.onClick, 'optionalCall', _467 => _467()]);
23721
+ _optionalChain([item, 'access', _478 => _478.onClick, 'optionalCall', _479 => _479()]);
23646
23722
  config.onClose();
23647
23723
  },
23648
23724
  leftIcon: item.icon,
@@ -23769,7 +23845,7 @@ function StickySectionNav({
23769
23845
  ] });
23770
23846
  }
23771
23847
  function useSectionNavigation(sections, options) {
23772
- const [activeSection, setActiveSection] = _react.useState.call(void 0, _optionalChain([sections, 'access', _468 => _468[0], 'optionalAccess', _469 => _469.id]) || "");
23848
+ const [activeSection, setActiveSection] = _react.useState.call(void 0, _optionalChain([sections, 'access', _480 => _480[0], 'optionalAccess', _481 => _481.id]) || "");
23773
23849
  const isScrollingFromClick = _react.useRef.call(void 0, false);
23774
23850
  const { offset: offset2 = 100 } = options || {};
23775
23851
  const handleSectionClick = _react.useCallback.call(void 0, (sectionId) => {
@@ -23793,7 +23869,7 @@ function useSectionNavigation(sections, options) {
23793
23869
  const handleScroll = () => {
23794
23870
  if (isScrollingFromClick.current) return;
23795
23871
  const scrollPosition = window.scrollY + offset2 + 50;
23796
- let currentSection = _optionalChain([sections, 'access', _470 => _470[0], 'optionalAccess', _471 => _471.id]) || "";
23872
+ let currentSection = _optionalChain([sections, 'access', _482 => _482[0], 'optionalAccess', _483 => _483.id]) || "";
23797
23873
  for (let i = sections.length - 1; i >= 0; i--) {
23798
23874
  const element = document.getElementById(sections[i].id);
23799
23875
  if (element && scrollPosition >= element.offsetTop) {
@@ -23967,10 +24043,10 @@ var MINIMIZED_WIDTH = 56;
23967
24043
  var EXPANDED_WIDTH = 224;
23968
24044
  var STORAGE_KEY = "of.navigationSidebar.minimized";
23969
24045
  function NavigationSidebar({ config, disabled = false }) {
23970
- const isMdUp = _nullishCoalesce(_chunkEH3RWVF3cjs.useMdUp.call(void 0, ), () => ( false));
23971
- const isLgUp = _nullishCoalesce(_chunkEH3RWVF3cjs.useLgUp.call(void 0, ), () => ( false));
24046
+ const isMdUp = _nullishCoalesce(_chunkWT5JV2GScjs.useMdUp.call(void 0, ), () => ( false));
24047
+ const isLgUp = _nullishCoalesce(_chunkWT5JV2GScjs.useLgUp.call(void 0, ), () => ( false));
23972
24048
  const isTablet = isMdUp && !isLgUp;
23973
- const [desktopMinimized, setDesktopMinimized] = _chunkEH3RWVF3cjs.useLocalStorage.call(void 0,
24049
+ const [desktopMinimized, setDesktopMinimized] = _chunkWT5JV2GScjs.useLocalStorage.call(void 0,
23974
24050
  STORAGE_KEY,
23975
24051
  _nullishCoalesce(config.minimized, () => ( false))
23976
24052
  );
@@ -23988,7 +24064,7 @@ function NavigationSidebar({ config, disabled = false }) {
23988
24064
  } else {
23989
24065
  setDesktopMinimized((prev) => !prev);
23990
24066
  }
23991
- _optionalChain([config, 'access', _472 => _472.onToggleMinimized, 'optionalCall', _473 => _473()]);
24067
+ _optionalChain([config, 'access', _484 => _484.onToggleMinimized, 'optionalCall', _485 => _485()]);
23992
24068
  }, [isTablet, setDesktopMinimized, config]);
23993
24069
  const closeOverlay = _react.useCallback.call(void 0, () => {
23994
24070
  setTabletMinimized(true);
@@ -24002,11 +24078,11 @@ function NavigationSidebar({ config, disabled = false }) {
24002
24078
  return () => document.removeEventListener("keydown", handleKeyDown);
24003
24079
  }, [isOverlayOpen, closeOverlay]);
24004
24080
  const handleItemClick = _react.useCallback.call(void 0, (item, event) => {
24005
- _optionalChain([event, 'optionalAccess', _474 => _474.stopPropagation, 'call', _475 => _475()]);
24081
+ _optionalChain([event, 'optionalAccess', _486 => _486.stopPropagation, 'call', _487 => _487()]);
24006
24082
  if (item.onClick) {
24007
24083
  item.onClick();
24008
24084
  } else if (item.path) {
24009
- _optionalChain([config, 'access', _476 => _476.onNavigate, 'optionalCall', _477 => _477(item.path)]);
24085
+ _optionalChain([config, 'access', _488 => _488.onNavigate, 'optionalCall', _489 => _489(item.path)]);
24010
24086
  }
24011
24087
  if (isTablet) setTabletMinimized(true);
24012
24088
  }, [config, isTablet]);
@@ -24151,11 +24227,11 @@ function HeaderGlobalSearch({
24151
24227
  };
24152
24228
  const handleSubmit = (e) => {
24153
24229
  e.preventDefault();
24154
- _optionalChain([onSubmit, 'optionalCall', _478 => _478(currentValue)]);
24230
+ _optionalChain([onSubmit, 'optionalCall', _490 => _490(currentValue)]);
24155
24231
  };
24156
24232
  const handleKeyDown = (e) => {
24157
24233
  if (e.key === "Enter") {
24158
- _optionalChain([onSubmit, 'optionalCall', _479 => _479(currentValue)]);
24234
+ _optionalChain([onSubmit, 'optionalCall', _491 => _491(currentValue)]);
24159
24235
  }
24160
24236
  };
24161
24237
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -24201,8 +24277,8 @@ function HeaderOrganizationFilter({
24201
24277
  className
24202
24278
  }) {
24203
24279
  const selectedOrg = organizations.find((o) => o.id === selectedOrgId);
24204
- const displayName = _optionalChain([selectedOrg, 'optionalAccess', _480 => _480.name]) || "All Organizations";
24205
- const deviceCount = _nullishCoalesce(_optionalChain([selectedOrg, 'optionalAccess', _481 => _481.deviceCount]), () => ( totalDeviceCount));
24280
+ const displayName = _optionalChain([selectedOrg, 'optionalAccess', _492 => _492.name]) || "All Organizations";
24281
+ const deviceCount = _nullishCoalesce(_optionalChain([selectedOrg, 'optionalAccess', _493 => _493.deviceCount]), () => ( totalDeviceCount));
24206
24282
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkUXZ3ZJ3Mcjs.DropdownMenu, { children: [
24207
24283
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24208
24284
  "button",
@@ -24227,11 +24303,11 @@ function HeaderOrganizationFilter({
24227
24303
  }
24228
24304
  ) }),
24229
24305
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkUXZ3ZJ3Mcjs.DropdownMenuContent, { align: "end", className: "min-w-[240px]", children: [
24230
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.DropdownMenuItem, { onClick: () => _optionalChain([onOrgChange, 'optionalCall', _482 => _482("")]), children: "All Organizations" }),
24306
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUXZ3ZJ3Mcjs.DropdownMenuItem, { onClick: () => _optionalChain([onOrgChange, 'optionalCall', _494 => _494("")]), children: "All Organizations" }),
24231
24307
  organizations.map((org) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24232
24308
  _chunkUXZ3ZJ3Mcjs.DropdownMenuItem,
24233
24309
  {
24234
- onClick: () => _optionalChain([onOrgChange, 'optionalCall', _483 => _483(org.id)]),
24310
+ onClick: () => _optionalChain([onOrgChange, 'optionalCall', _495 => _495(org.id)]),
24235
24311
  children: org.name
24236
24312
  },
24237
24313
  org.id
@@ -24262,7 +24338,7 @@ var AppHeader = React92.default.memo(function AppHeader2({
24262
24338
  onToggleMobileMenu,
24263
24339
  disabled = false
24264
24340
  }) {
24265
- const isMdUp = _nullishCoalesce(_chunkEH3RWVF3cjs.useMdUp.call(void 0, ), () => ( false));
24341
+ const isMdUp = _nullishCoalesce(_chunkWT5JV2GScjs.useMdUp.call(void 0, ), () => ( false));
24266
24342
  const dimmedClass = disabled ? "pointer-events-none opacity-50" : "";
24267
24343
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24268
24344
  "header",
@@ -24403,16 +24479,20 @@ function NotificationsHeaderButton({
24403
24479
  dimmedClass
24404
24480
  }) {
24405
24481
  const ctx = useOptionalNotifications();
24406
- const unreadCount = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _484 => _484.unreadCount]), () => ( fallbackUnreadCount));
24407
- const isActive = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _485 => _485.isOpen]), () => ( false));
24408
- const onClick = _optionalChain([ctx, 'optionalAccess', _486 => _486.toggle]);
24409
- const Icon2 = unreadCount > 0 ? _chunk65CPJ4SXcjs.BellRingingIcon : _chunk65CPJ4SXcjs.BellIcon;
24482
+ const hasUnread = (_nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _496 => _496.unreadCount]), () => ( fallbackUnreadCount))) > 0;
24483
+ const isActive = _nullishCoalesce(_optionalChain([ctx, 'optionalAccess', _497 => _497.isOpen]), () => ( false));
24484
+ const onClick = _optionalChain([ctx, 'optionalAccess', _498 => _498.toggle]);
24410
24485
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24411
24486
  HeaderButton,
24412
24487
  {
24413
- icon: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative w-full h-full flex items-center justify-center", children: [
24414
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon2, { className: "h-4 w-4 md:w-6 md:h-6" }),
24415
- unreadCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "absolute top-2 right-2 bg-ods-accent text-ods-text-on-accent text-[8px] rounded-full w-3 h-3 md:w-4 md:h-4 flex items-center justify-center", children: unreadCount > 9 ? "9+" : unreadCount })
24488
+ icon: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative w-4 h-4 md:w-6 md:h-6", children: [
24489
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.BellIcon, { className: "w-full h-full" }),
24490
+ hasUnread && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24491
+ "span",
24492
+ {
24493
+ className: "absolute top-0 right-0 bg-ods-warning rounded-full w-1.5 h-1.5 md:w-2 md:h-2"
24494
+ }
24495
+ )
24416
24496
  ] }),
24417
24497
  "aria-label": "Notifications",
24418
24498
  onClick,
@@ -24465,7 +24545,7 @@ var MobileBurgerMenu = React92.default.memo(function MobileBurgerMenu2({
24465
24545
  if (item.onClick) {
24466
24546
  item.onClick();
24467
24547
  } else if (item.path) {
24468
- _optionalChain([config, 'access', _487 => _487.onNavigate, 'optionalCall', _488 => _488(item.path)]);
24548
+ _optionalChain([config, 'access', _499 => _499.onNavigate, 'optionalCall', _500 => _500(item.path)]);
24469
24549
  }
24470
24550
  onClose();
24471
24551
  }, [config, onClose]);
@@ -24761,7 +24841,7 @@ var ToolBadge = ({
24761
24841
  }) => {
24762
24842
  const label = getToolLabel(toolType);
24763
24843
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex items-center gap-1 text-ods-text-secondary", className), children: [
24764
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEH3RWVF3cjs.ToolIcon, { toolType, className: iconClassName, size: 16 }),
24844
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5JV2GScjs.ToolIcon, { toolType, className: iconClassName, size: 16 }),
24765
24845
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: label })
24766
24846
  ] });
24767
24847
  };
@@ -24809,7 +24889,7 @@ var ShellTypeBadge = ({
24809
24889
  className,
24810
24890
  iconClassName
24811
24891
  }) => {
24812
- const normalizedType = _optionalChain([shellType, 'optionalAccess', _489 => _489.toUpperCase, 'call', _490 => _490()]);
24892
+ const normalizedType = _optionalChain([shellType, 'optionalAccess', _501 => _501.toUpperCase, 'call', _502 => _502()]);
24813
24893
  const label = getShellLabel(normalizedType);
24814
24894
  const { icon: IconComponent, props: iconProps } = _nullishCoalesce(shellIconMap[normalizedType], () => ( defaultIconConfig));
24815
24895
  const defaultIconClassName = "className" in iconProps ? iconProps.className : void 0;
@@ -25133,7 +25213,7 @@ function OnboardingWalkthrough({
25133
25213
  isStepSkipped,
25134
25214
  allStepsComplete,
25135
25215
  markMultipleComplete
25136
- } = _chunkEH3RWVF3cjs.useOnboardingState.call(void 0, storageKey);
25216
+ } = _chunkWT5JV2GScjs.useOnboardingState.call(void 0, storageKey);
25137
25217
  const hasAutoMarkedRef = _react.useRef.call(void 0, false);
25138
25218
  const autoMarkingInProgressRef = _react.useRef.call(void 0, false);
25139
25219
  const lastCompletionStatusRef = _react.useRef.call(void 0, null);
@@ -25196,12 +25276,12 @@ function OnboardingWalkthrough({
25196
25276
  }
25197
25277
  }, [state.completedSteps, markComplete]);
25198
25278
  const handleStepSkip = (step) => {
25199
- _optionalChain([step, 'access', _491 => _491.onSkip, 'optionalCall', _492 => _492()]);
25279
+ _optionalChain([step, 'access', _503 => _503.onSkip, 'optionalCall', _504 => _504()]);
25200
25280
  markSkipped(step.id);
25201
25281
  };
25202
25282
  const handleDismiss = () => {
25203
25283
  dismissOnboarding();
25204
- _optionalChain([onDismiss, 'optionalCall', _493 => _493()]);
25284
+ _optionalChain([onDismiss, 'optionalCall', _505 => _505()]);
25205
25285
  };
25206
25286
  if (state.dismissed) {
25207
25287
  return null;
@@ -25331,7 +25411,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
25331
25411
  onKeyDown: (e) => {
25332
25412
  if (e.key === "Enter" || e.key === " ") {
25333
25413
  e.preventDefault();
25334
- _optionalChain([onClick, 'optionalCall', _494 => _494()]);
25414
+ _optionalChain([onClick, 'optionalCall', _506 => _506()]);
25335
25415
  }
25336
25416
  },
25337
25417
  children: [
@@ -25340,7 +25420,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
25340
25420
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-5 text-white", children: log.title }),
25341
25421
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2", children: [
25342
25422
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['Azeret_Mono'] font-normal text-[13px] leading-4 text-[#888888] uppercase tracking-wider", children: formatTimestamp(log.timestamp) }),
25343
- log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEH3RWVF3cjs.ToolIcon, { toolType: log.toolType, size: 16 })
25423
+ log.toolType && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWT5JV2GScjs.ToolIcon, { toolType: log.toolType, size: 16 })
25344
25424
  ] })
25345
25425
  ] })
25346
25426
  ]
@@ -25432,7 +25512,7 @@ var LogsList = React88.forwardRef(({
25432
25512
  log,
25433
25513
  isLast: index === logs.length - 1,
25434
25514
  showConnector,
25435
- onClick: () => _optionalChain([onLogClick, 'optionalCall', _495 => _495(log)])
25515
+ onClick: () => _optionalChain([onLogClick, 'optionalCall', _507 => _507(log)])
25436
25516
  },
25437
25517
  log.id
25438
25518
  ))
@@ -25477,7 +25557,7 @@ function ServiceCard({ title, subtitle, icon, tag, rows, className }) {
25477
25557
  }
25478
25558
  function ServiceCardRowItem({ row }) {
25479
25559
  const [revealed, setRevealed] = _react.useState.call(void 0, false);
25480
- const { copy, copied } = _chunkEH3RWVF3cjs.useCopyToClipboard.call(void 0, );
25560
+ const { copy, copied } = _chunkWT5JV2GScjs.useCopyToClipboard.call(void 0, );
25481
25561
  const actions = _react.useMemo.call(void 0, () => ({ copy: true, open: !!row.href, reveal: !!row.isSecret, ...row.actions }), [row]);
25482
25562
  const displayValue = row.isSecret ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MaskedValue, { value: row.value, isRevealed: revealed }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: row.value });
25483
25563
  const handleCopy = () => copy(_nullishCoalesce(row.copyValue, () => ( row.value)));
@@ -25533,7 +25613,7 @@ var Slider = React90.forwardRef(
25533
25613
  ({ className, value = [0], onValueChange, min = 0, max = 100, step = 1, ...props }, ref) => {
25534
25614
  const handleChange = (e) => {
25535
25615
  const newValue = [Number(e.target.value)];
25536
- _optionalChain([onValueChange, 'optionalCall', _496 => _496(newValue)]);
25616
+ _optionalChain([onValueChange, 'optionalCall', _508 => _508(newValue)]);
25537
25617
  };
25538
25618
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
25539
25619
  "input",
@@ -25986,7 +26066,7 @@ function CursorPaginationSimple({
25986
26066
  {
25987
26067
  variant: "transparent",
25988
26068
  size: "icon",
25989
- onClick: () => _optionalChain([onPrevious, 'optionalCall', _497 => _497("")]),
26069
+ onClick: () => _optionalChain([onPrevious, 'optionalCall', _509 => _509("")]),
25990
26070
  disabled: !hasPreviousPage || loading,
25991
26071
  className: "h-8 w-8",
25992
26072
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
@@ -25998,7 +26078,7 @@ function CursorPaginationSimple({
25998
26078
  {
25999
26079
  variant: "transparent",
26000
26080
  size: "icon",
26001
- onClick: () => _optionalChain([onNext, 'optionalCall', _498 => _498("")]),
26081
+ onClick: () => _optionalChain([onNext, 'optionalCall', _510 => _510("")]),
26002
26082
  disabled: !hasNextPage || loading,
26003
26083
  className: "h-8 w-8",
26004
26084
  rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
@@ -26058,7 +26138,7 @@ function TableColumnFilterDropdown({
26058
26138
  placement = "bottom-start",
26059
26139
  dropdownClassName = "min-w-[240px]"
26060
26140
  }) {
26061
- const activeCount = _optionalChain([filters, 'optionalAccess', _499 => _499[columnKey], 'optionalAccess', _500 => _500.length]) || 0;
26141
+ const activeCount = _optionalChain([filters, 'optionalAccess', _511 => _511[columnKey], 'optionalAccess', _512 => _512.length]) || 0;
26062
26142
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26063
26143
  FiltersDropdown,
26064
26144
  {
@@ -26101,7 +26181,7 @@ function TableColumnFilterDropdown({
26101
26181
  delete newFilters[columnKey];
26102
26182
  onFilterChange(newFilters);
26103
26183
  },
26104
- currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _501 => _501[columnKey]]) || [] },
26184
+ currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _513 => _513[columnKey]]) || [] },
26105
26185
  placement,
26106
26186
  dropdownClassName
26107
26187
  }
@@ -26176,7 +26256,7 @@ function TableHeader({
26176
26256
  }
26177
26257
  return sortDirection === "asc" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.Arrow01UpIcon, { className: "w-4 h-4 text-ods-accent" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.Arrow01DownIcon, { className: "w-4 h-4 text-ods-accent" });
26178
26258
  };
26179
- const isLgUp = _nullishCoalesce(_chunkEH3RWVF3cjs.useLgUp.call(void 0, ), () => ( false));
26259
+ const isLgUp = _nullishCoalesce(_chunkWT5JV2GScjs.useLgUp.call(void 0, ), () => ( false));
26180
26260
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
26181
26261
  "div",
26182
26262
  {
@@ -26398,7 +26478,7 @@ function TableRow({
26398
26478
  const keys = column.key.split(".");
26399
26479
  let value = item;
26400
26480
  for (const key of keys) {
26401
- value = _optionalChain([value, 'optionalAccess', _502 => _502[key]]);
26481
+ value = _optionalChain([value, 'optionalAccess', _514 => _514[key]]);
26402
26482
  }
26403
26483
  if (value === null || value === void 0) {
26404
26484
  return "-";
@@ -26468,7 +26548,7 @@ function TableRow({
26468
26548
  // src/components/ui/table/table.tsx
26469
26549
 
26470
26550
  function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
26471
- const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _503 => _503.length])) || Boolean(renderRowActions);
26551
+ const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _515 => _515.length])) || Boolean(renderRowActions);
26472
26552
  const result = [...columns];
26473
26553
  if (hasActions) {
26474
26554
  const actionsColumn = {
@@ -26562,7 +26642,7 @@ function Table({
26562
26642
  return rowKey(item);
26563
26643
  }
26564
26644
  const key = item[rowKey];
26565
- return _optionalChain([key, 'optionalAccess', _504 => _504.toString, 'call', _505 => _505()]) || index.toString();
26645
+ return _optionalChain([key, 'optionalAccess', _516 => _516.toString, 'call', _517 => _517()]) || index.toString();
26566
26646
  };
26567
26647
  const getRowClassName = (item, index) => {
26568
26648
  if (typeof rowClassName === "function") {
@@ -26596,23 +26676,23 @@ function Table({
26596
26676
  const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
26597
26677
  const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
26598
26678
  const sentinelRef = _react.useRef.call(void 0, null);
26599
- const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _506 => _506.onLoadMore]));
26600
- onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _507 => _507.onLoadMore]);
26679
+ const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _518 => _518.onLoadMore]));
26680
+ onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _519 => _519.onLoadMore]);
26601
26681
  _react.useEffect.call(void 0, () => {
26602
- if (!_optionalChain([infiniteScroll, 'optionalAccess', _508 => _508.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
26682
+ if (!_optionalChain([infiniteScroll, 'optionalAccess', _520 => _520.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
26603
26683
  const sentinel = sentinelRef.current;
26604
26684
  if (!sentinel) return;
26605
26685
  const observer = new IntersectionObserver(
26606
26686
  (entries) => {
26607
- if (_optionalChain([entries, 'access', _509 => _509[0], 'optionalAccess', _510 => _510.isIntersecting])) {
26608
- _optionalChain([onLoadMoreRef, 'access', _511 => _511.current, 'optionalCall', _512 => _512()]);
26687
+ if (_optionalChain([entries, 'access', _521 => _521[0], 'optionalAccess', _522 => _522.isIntersecting])) {
26688
+ _optionalChain([onLoadMoreRef, 'access', _523 => _523.current, 'optionalCall', _524 => _524()]);
26609
26689
  }
26610
26690
  },
26611
26691
  { rootMargin: "200px" }
26612
26692
  );
26613
26693
  observer.observe(sentinel);
26614
26694
  return () => observer.disconnect();
26615
- }, [_optionalChain([infiniteScroll, 'optionalAccess', _513 => _513.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _514 => _514.isFetchingNextPage])]);
26695
+ }, [_optionalChain([infiniteScroll, 'optionalAccess', _525 => _525.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _526 => _526.isFetchingNextPage])]);
26616
26696
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
26617
26697
  showToolbar && bulkActions && selectedRows.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2", children: [
26618
26698
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
@@ -26683,7 +26763,7 @@ function Table({
26683
26763
  },
26684
26764
  getRowKey(item, index)
26685
26765
  )),
26686
- _optionalChain([infiniteScroll, 'optionalAccess', _515 => _515.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26766
+ _optionalChain([infiniteScroll, 'optionalAccess', _527 => _527.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
26687
26767
  TableCardSkeleton,
26688
26768
  {
26689
26769
  columns,
@@ -26692,7 +26772,7 @@ function Table({
26692
26772
  hasChevron: Boolean(rowHref)
26693
26773
  }
26694
26774
  ),
26695
- _optionalChain([infiniteScroll, 'optionalAccess', _516 => _516.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
26775
+ _optionalChain([infiniteScroll, 'optionalAccess', _528 => _528.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
26696
26776
  !infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
26697
26777
  "div",
26698
26778
  {
@@ -27050,7 +27130,7 @@ function QueryReportTable({
27050
27130
  );
27051
27131
  const handleExport = () => {
27052
27132
  exportToCSV(data, columns, exportFilename);
27053
- _optionalChain([onExport, 'optionalCall', _517 => _517()]);
27133
+ _optionalChain([onExport, 'optionalCall', _529 => _529()]);
27054
27134
  };
27055
27135
  const tableMinWidth = columns.length * (columnWidth + 16);
27056
27136
  const {
@@ -27066,7 +27146,7 @@ function QueryReportTable({
27066
27146
  onThumbPointerDown,
27067
27147
  onThumbPointerMove,
27068
27148
  onThumbPointerUp
27069
- } = _chunkEH3RWVF3cjs.useHorizontalScrollbar.call(void 0, );
27149
+ } = _chunkWT5JV2GScjs.useHorizontalScrollbar.call(void 0, );
27070
27150
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex flex-col w-full", isCompact ? "gap-0" : "gap-6", className), children: [
27071
27151
  !isCompact && (title || headerActions || showExport && data.length > 0) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-end justify-between pt-6", children: [
27072
27152
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "font-mono font-semibold text-[32px] leading-[40px] text-ods-text-primary", children: title }),
@@ -27223,7 +27303,7 @@ function DataTableColumnFilter({
27223
27303
  align = "left"
27224
27304
  }) {
27225
27305
  const currentValue = column.getFilterValue();
27226
- const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _518 => _518.length]), () => ( 0));
27306
+ const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _530 => _530.length]), () => ( 0));
27227
27307
  const sections = _react.useMemo.call(void 0,
27228
27308
  () => [
27229
27309
  {
@@ -27297,13 +27377,13 @@ function DataTableHeader({
27297
27377
  onSortChange
27298
27378
  }) {
27299
27379
  const table = useDataTableContext();
27300
- const isLgUp = _nullishCoalesce(_chunkEH3RWVF3cjs.useLgUp.call(void 0, ), () => ( false));
27380
+ const isLgUp = _nullishCoalesce(_chunkWT5JV2GScjs.useLgUp.call(void 0, ), () => ( false));
27301
27381
  const headerGroup = table.getHeaderGroups()[0];
27302
27382
  if (!headerGroup) return null;
27303
27383
  const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
27304
27384
  if (header.isPlaceholder) return false;
27305
27385
  if (isLgUp) return true;
27306
- return Boolean(_optionalChain([header, 'access', _519 => _519.column, 'access', _520 => _520.columnDef, 'access', _521 => _521.meta, 'optionalAccess', _522 => _522.filter]));
27386
+ return Boolean(_optionalChain([header, 'access', _531 => _531.column, 'access', _532 => _532.columnDef, 'access', _533 => _533.meta, 'optionalAccess', _534 => _534.filter]));
27307
27387
  });
27308
27388
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27309
27389
  "div",
@@ -27333,20 +27413,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
27333
27413
  if (header.isPlaceholder) return null;
27334
27414
  const column = header.column;
27335
27415
  const meta = column.columnDef.meta;
27336
- const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _523 => _523.filter]));
27337
- const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _524 => _524.align]), () => ( "left"));
27338
- const canSort = _optionalChain([meta, 'optionalAccess', _525 => _525.sortable]) === true;
27339
- const sortDir = _optionalChain([sort, 'optionalAccess', _526 => _526.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
27416
+ const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _535 => _535.filter]));
27417
+ const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _536 => _536.align]), () => ( "left"));
27418
+ const canSort = _optionalChain([meta, 'optionalAccess', _537 => _537.sortable]) === true;
27419
+ const sortDir = _optionalChain([sort, 'optionalAccess', _538 => _538.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
27340
27420
  if (!isLgUp && !hasFilter) return null;
27341
27421
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27342
27422
  "div",
27343
27423
  {
27344
27424
  className: _chunk664KA5FIcjs.cn.call(void 0,
27345
27425
  "flex items-stretch",
27346
- isLgUp && (_optionalChain([meta, 'optionalAccess', _527 => _527.width]) || "flex-1 min-w-0"),
27347
- _optionalChain([meta, 'optionalAccess', _528 => _528.headerClassName]),
27426
+ isLgUp && (_optionalChain([meta, 'optionalAccess', _539 => _539.width]) || "flex-1 min-w-0"),
27427
+ _optionalChain([meta, 'optionalAccess', _540 => _540.headerClassName]),
27348
27428
  // Don't apply hide classes if column is filterable on tablet (keep filter accessible)
27349
- !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _529 => _529.hideAt]))
27429
+ !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _541 => _541.hideAt]))
27350
27430
  ),
27351
27431
  children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27352
27432
  DataTableColumnFilter,
@@ -27365,7 +27445,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
27365
27445
  isLgUp && alignJustify(align),
27366
27446
  canSort && "group cursor-pointer"
27367
27447
  ),
27368
- onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _530 => _530(column.id)]) : void 0,
27448
+ onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _542 => _542(column.id)]) : void 0,
27369
27449
  children: [
27370
27450
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
27371
27451
  canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
@@ -27449,7 +27529,7 @@ function DataTableSkeleton({
27449
27529
  }) {
27450
27530
  const table = useDataTableContext();
27451
27531
  const columns = table.getVisibleFlatColumns();
27452
- const firstColumnId = _optionalChain([columns, 'access', _531 => _531[0], 'optionalAccess', _532 => _532.id]);
27532
+ const firstColumnId = _optionalChain([columns, 'access', _543 => _543[0], 'optionalAccess', _544 => _544.id]);
27453
27533
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
27454
27534
  "div",
27455
27535
  {
@@ -27473,7 +27553,7 @@ function DataTableSkeleton({
27473
27553
  {
27474
27554
  className: _chunk664KA5FIcjs.cn.call(void 0,
27475
27555
  "flex flex-col justify-center shrink-0",
27476
- _optionalChain([meta, 'optionalAccess', _533 => _533.width]) || "flex-1"
27556
+ _optionalChain([meta, 'optionalAccess', _545 => _545.width]) || "flex-1"
27477
27557
  ),
27478
27558
  children: [
27479
27559
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-ods-bg-surface rounded-sm w-3/4 mb-[var(--spacing-system-xxs)]" }),
@@ -27519,7 +27599,7 @@ function DataTableRowImpl({
27519
27599
  const handleClick = _react.useCallback.call(void 0,
27520
27600
  (e) => {
27521
27601
  const target = e.target;
27522
- if (!_optionalChain([containerRef, 'access', _534 => _534.current, 'optionalAccess', _535 => _535.contains, 'call', _536 => _536(target)])) {
27602
+ if (!_optionalChain([containerRef, 'access', _546 => _546.current, 'optionalAccess', _547 => _547.contains, 'call', _548 => _548(target)])) {
27523
27603
  if (isLinkMode) e.preventDefault();
27524
27604
  return;
27525
27605
  }
@@ -27527,7 +27607,7 @@ function DataTableRowImpl({
27527
27607
  if (isLinkMode) e.preventDefault();
27528
27608
  return;
27529
27609
  }
27530
- _optionalChain([onClick, 'optionalCall', _537 => _537(row.original)]);
27610
+ _optionalChain([onClick, 'optionalCall', _549 => _549(row.original)]);
27531
27611
  },
27532
27612
  [onClick, row.original, isLinkMode]
27533
27613
  );
@@ -27550,10 +27630,10 @@ function DataTableRowImpl({
27550
27630
  {
27551
27631
  className: _chunk664KA5FIcjs.cn.call(void 0,
27552
27632
  "flex flex-col overflow-hidden",
27553
- alignJustify(_optionalChain([meta, 'optionalAccess', _538 => _538.align])),
27554
- _optionalChain([meta, 'optionalAccess', _539 => _539.width]) || "flex-1 min-w-0",
27555
- _optionalChain([meta, 'optionalAccess', _540 => _540.cellClassName]),
27556
- getHideClasses2(_optionalChain([meta, 'optionalAccess', _541 => _541.hideAt]))
27633
+ alignJustify(_optionalChain([meta, 'optionalAccess', _550 => _550.align])),
27634
+ _optionalChain([meta, 'optionalAccess', _551 => _551.width]) || "flex-1 min-w-0",
27635
+ _optionalChain([meta, 'optionalAccess', _552 => _552.cellClassName]),
27636
+ getHideClasses2(_optionalChain([meta, 'optionalAccess', _553 => _553.hideAt]))
27557
27637
  ),
27558
27638
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
27559
27639
  },
@@ -27618,7 +27698,7 @@ function DataTableBody({
27618
27698
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex flex-col gap-[var(--spacing-system-xsf)] w-full", className), children: [
27619
27699
  rows.map((row, index) => {
27620
27700
  const item = row.original;
27621
- const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _542 => _542(item)]), () => ( void 0));
27701
+ const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _554 => _554(item)]), () => ( void 0));
27622
27702
  const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
27623
27703
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27624
27704
  DataTableRow,
@@ -27682,7 +27762,7 @@ function DataTableInfiniteFooter({
27682
27762
  if (!sentinel) return;
27683
27763
  const observer = new IntersectionObserver(
27684
27764
  (entries) => {
27685
- if (_optionalChain([entries, 'access', _543 => _543[0], 'optionalAccess', _544 => _544.isIntersecting])) onLoadMoreRef.current();
27765
+ if (_optionalChain([entries, 'access', _555 => _555[0], 'optionalAccess', _556 => _556.isIntersecting])) onLoadMoreRef.current();
27686
27766
  },
27687
27767
  { rootMargin }
27688
27768
  );
@@ -27730,7 +27810,7 @@ function DataTableRowCount({
27730
27810
  const table = useDataTableContext();
27731
27811
  const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
27732
27812
  if (hideWhenEmpty && count === 0) return null;
27733
- const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _545 => _545(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
27813
+ const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _557 => _557(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
27734
27814
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
27735
27815
  "span",
27736
27816
  {
@@ -27859,7 +27939,7 @@ function SearchInput({
27859
27939
  }) {
27860
27940
  const [internalValue, setInternalValue] = React94.useState(defaultValue);
27861
27941
  const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
27862
- const debouncedValue = _chunkEH3RWVF3cjs.useDebounce.call(void 0, currentValue, debounceMs);
27942
+ const debouncedValue = _chunkWT5JV2GScjs.useDebounce.call(void 0, currentValue, debounceMs);
27863
27943
  const [isOpen, setIsOpen] = React94.useState(false);
27864
27944
  const [highlightedIndex, setHighlightedIndex] = React94.useState(-1);
27865
27945
  const containerRef = React94.useRef(null);
@@ -27871,7 +27951,7 @@ function SearchInput({
27871
27951
  textMeasureRef,
27872
27952
  badgeRef,
27873
27953
  inputRef
27874
- } = _chunkEH3RWVF3cjs.useAutoLimitTags.call(void 0, {
27954
+ } = _chunkWT5JV2GScjs.useAutoLimitTags.call(void 0, {
27875
27955
  count: filterChips.length,
27876
27956
  limitTags,
27877
27957
  // When chips exist, pass empty placeholder so the hook only reserves input minWidth,
@@ -27886,7 +27966,7 @@ function SearchInput({
27886
27966
  if (!showHiddenTags) return;
27887
27967
  const handleClick = (e) => {
27888
27968
  const target = e.target;
27889
- if (!_optionalChain([hiddenTagsRef, 'access', _546 => _546.current, 'optionalAccess', _547 => _547.contains, 'call', _548 => _548(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _549 => _549.current, 'optionalAccess', _550 => _550.contains, 'call', _551 => _551(target)])) {
27969
+ if (!_optionalChain([hiddenTagsRef, 'access', _558 => _558.current, 'optionalAccess', _559 => _559.contains, 'call', _560 => _560(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _561 => _561.current, 'optionalAccess', _562 => _562.contains, 'call', _563 => _563(target)])) {
27890
27970
  setShowHiddenTags(false);
27891
27971
  }
27892
27972
  };
@@ -27934,10 +28014,10 @@ function SearchInput({
27934
28014
  } else {
27935
28015
  setInternalValue("");
27936
28016
  }
27937
- _optionalChain([inputRef, 'access', _552 => _552.current, 'optionalAccess', _553 => _553.focus, 'call', _554 => _554()]);
28017
+ _optionalChain([inputRef, 'access', _564 => _564.current, 'optionalAccess', _565 => _565.focus, 'call', _566 => _566()]);
27938
28018
  };
27939
28019
  const handleResultClick = (result, e) => {
27940
- _optionalChain([onResultSelect, 'optionalCall', _555 => _555(
28020
+ _optionalChain([onResultSelect, 'optionalCall', _567 => _567(
27941
28021
  result,
27942
28022
  e ? {
27943
28023
  metaKey: e.metaKey,
@@ -27969,7 +28049,7 @@ function SearchInput({
27969
28049
  if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
27970
28050
  handleResultClick(flatResults[highlightedIndex]);
27971
28051
  } else {
27972
- _optionalChain([onSubmit, 'optionalCall', _556 => _556(currentValue)]);
28052
+ _optionalChain([onSubmit, 'optionalCall', _568 => _568(currentValue)]);
27973
28053
  }
27974
28054
  break;
27975
28055
  case "Escape":
@@ -28047,7 +28127,7 @@ function SearchInput({
28047
28127
  dropdownVisible && "!border-ods-accent"
28048
28128
  ),
28049
28129
  onClick: () => {
28050
- _optionalChain([inputRef, 'access', _557 => _557.current, 'optionalAccess', _558 => _558.focus, 'call', _559 => _559()]);
28130
+ _optionalChain([inputRef, 'access', _569 => _569.current, 'optionalAccess', _570 => _570.focus, 'call', _571 => _571()]);
28051
28131
  setIsOpen(true);
28052
28132
  },
28053
28133
  children: [
@@ -28131,10 +28211,10 @@ function SearchInput({
28131
28211
  align: "start",
28132
28212
  onOpenAutoFocus: (e) => {
28133
28213
  e.preventDefault();
28134
- _optionalChain([inputRef, 'access', _560 => _560.current, 'optionalAccess', _561 => _561.focus, 'call', _562 => _562()]);
28214
+ _optionalChain([inputRef, 'access', _572 => _572.current, 'optionalAccess', _573 => _573.focus, 'call', _574 => _574()]);
28135
28215
  },
28136
28216
  onInteractOutside: (e) => {
28137
- if (_optionalChain([containerRef, 'access', _563 => _563.current, 'optionalAccess', _564 => _564.contains, 'call', _565 => _565(e.target)])) {
28217
+ if (_optionalChain([containerRef, 'access', _575 => _575.current, 'optionalAccess', _576 => _576.contains, 'call', _577 => _577(e.target)])) {
28138
28218
  e.preventDefault();
28139
28219
  }
28140
28220
  },
@@ -28151,10 +28231,10 @@ function SearchInput({
28151
28231
  ref: hiddenTagsPopupRef,
28152
28232
  items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
28153
28233
  style: {
28154
- left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _566 => _566.current, 'optionalAccess', _567 => _567.getBoundingClientRect, 'call', _568 => _568(), 'access', _569 => _569.left]), () => ( 0))) : 0
28234
+ left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _578 => _578.current, 'optionalAccess', _579 => _579.getBoundingClientRect, 'call', _580 => _580(), 'access', _581 => _581.left]), () => ( 0))) : 0
28155
28235
  },
28156
28236
  onRemove: (value2) => {
28157
- _optionalChain([onFilterRemove, 'optionalCall', _570 => _570(value2)]);
28237
+ _optionalChain([onFilterRemove, 'optionalCall', _582 => _582(value2)]);
28158
28238
  if (hiddenCount <= 1) setShowHiddenTags(false);
28159
28239
  }
28160
28240
  }
@@ -28205,7 +28285,7 @@ function FilterListItem({
28205
28285
  }) {
28206
28286
  const handleToggle = () => {
28207
28287
  if (disabled) return;
28208
- _optionalChain([onToggle, 'optionalCall', _571 => _571(!selected)]);
28288
+ _optionalChain([onToggle, 'optionalCall', _583 => _583(!selected)]);
28209
28289
  };
28210
28290
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
28211
28291
  "div",
@@ -28252,7 +28332,7 @@ function FilterListItem({
28252
28332
  CheckboxPrimitive4.Root,
28253
28333
  {
28254
28334
  checked: selected,
28255
- onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _572 => _572(c === true)]),
28335
+ onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _584 => _584(c === true)]),
28256
28336
  onClick: (e) => e.stopPropagation(),
28257
28337
  disabled,
28258
28338
  "aria-label": title,
@@ -28338,7 +28418,7 @@ function TagSearchInput({
28338
28418
  textMeasureRef,
28339
28419
  badgeRef,
28340
28420
  inputRef
28341
- } = _chunkEH3RWVF3cjs.useAutoLimitTags.call(void 0, {
28421
+ } = _chunkWT5JV2GScjs.useAutoLimitTags.call(void 0, {
28342
28422
  count: tags.length,
28343
28423
  limitTags,
28344
28424
  placeholder: currentPlaceholder
@@ -28351,7 +28431,7 @@ function TagSearchInput({
28351
28431
  if (!showHiddenTags) return;
28352
28432
  const handleClick = (e) => {
28353
28433
  const target = e.target;
28354
- if (!_optionalChain([hiddenTagsRef, 'access', _573 => _573.current, 'optionalAccess', _574 => _574.contains, 'call', _575 => _575(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _576 => _576.current, 'optionalAccess', _577 => _577.contains, 'call', _578 => _578(target)])) {
28434
+ if (!_optionalChain([hiddenTagsRef, 'access', _585 => _585.current, 'optionalAccess', _586 => _586.contains, 'call', _587 => _587(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _588 => _588.current, 'optionalAccess', _589 => _589.contains, 'call', _590 => _590(target)])) {
28355
28435
  setShowHiddenTags(false);
28356
28436
  }
28357
28437
  };
@@ -28367,13 +28447,13 @@ function TagSearchInput({
28367
28447
  e.preventDefault();
28368
28448
  onSubmit(searchValue);
28369
28449
  }
28370
- _optionalChain([onKeyDown, 'optionalCall', _579 => _579(e)]);
28450
+ _optionalChain([onKeyDown, 'optionalCall', _591 => _591(e)]);
28371
28451
  };
28372
28452
  const handleClearAll = (e) => {
28373
28453
  e.stopPropagation();
28374
28454
  e.preventDefault();
28375
- _optionalChain([onClearAll, 'optionalCall', _580 => _580()]);
28376
- _optionalChain([inputRef, 'access', _581 => _581.current, 'optionalAccess', _582 => _582.focus, 'call', _583 => _583()]);
28455
+ _optionalChain([onClearAll, 'optionalCall', _592 => _592()]);
28456
+ _optionalChain([inputRef, 'access', _593 => _593.current, 'optionalAccess', _594 => _594.focus, 'call', _595 => _595()]);
28377
28457
  };
28378
28458
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
28379
28459
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -28390,7 +28470,7 @@ function TagSearchInput({
28390
28470
  className
28391
28471
  ),
28392
28472
  onClick: () => {
28393
- if (!disabled) _optionalChain([inputRef, 'access', _584 => _584.current, 'optionalAccess', _585 => _585.focus, 'call', _586 => _586()]);
28473
+ if (!disabled) _optionalChain([inputRef, 'access', _596 => _596.current, 'optionalAccess', _597 => _597.focus, 'call', _598 => _598()]);
28394
28474
  },
28395
28475
  children: [
28396
28476
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 flex items-center pl-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.SearchIcon, { className: "text-ods-text-secondary size-4 md:size-6" }) }),
@@ -28462,7 +28542,7 @@ function TagSearchInput({
28462
28542
  items: hiddenTags,
28463
28543
  disabled,
28464
28544
  style: {
28465
- left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _587 => _587.current, 'optionalAccess', _588 => _588.getBoundingClientRect, 'call', _589 => _589(), 'access', _590 => _590.left]), () => ( 0))) : 0
28545
+ left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _599 => _599.current, 'optionalAccess', _600 => _600.getBoundingClientRect, 'call', _601 => _601(), 'access', _602 => _602.left]), () => ( 0))) : 0
28466
28546
  },
28467
28547
  onRemove: (value) => {
28468
28548
  onTagRemove(value);
@@ -28563,7 +28643,7 @@ function MarkdownEditor({
28563
28643
  const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
28564
28644
  _react.useEffect.call(void 0, () => {
28565
28645
  Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
28566
- if (_optionalChain([mod, 'access', _591 => _591.commands, 'optionalAccess', _592 => _592.getExtraCommands])) {
28646
+ if (_optionalChain([mod, 'access', _603 => _603.commands, 'optionalAccess', _604 => _604.getExtraCommands])) {
28567
28647
  setDefaultExtraCommands(mod.commands.getExtraCommands());
28568
28648
  }
28569
28649
  });
@@ -28597,7 +28677,7 @@ function MarkdownEditor({
28597
28677
  const isImage = file.type.startsWith("image/");
28598
28678
  const markdown = isImage ? `![${file.name}](${url})` : `[${file.name}](${url})`;
28599
28679
  insertTextAtCursor(markdown);
28600
- _optionalChain([onFileUploaded, 'optionalCall', _593 => _593(url, file.name)]);
28680
+ _optionalChain([onFileUploaded, 'optionalCall', _605 => _605(url, file.name)]);
28601
28681
  } catch (error) {
28602
28682
  console.error("File upload failed:", error);
28603
28683
  setUploadProgress("Upload failed. Please try again.");
@@ -28610,7 +28690,7 @@ function MarkdownEditor({
28610
28690
  );
28611
28691
  const handleFileInputChange = _react.useCallback.call(void 0,
28612
28692
  (e) => {
28613
- const file = _optionalChain([e, 'access', _594 => _594.target, 'access', _595 => _595.files, 'optionalAccess', _596 => _596[0]]);
28693
+ const file = _optionalChain([e, 'access', _606 => _606.target, 'access', _607 => _607.files, 'optionalAccess', _608 => _608[0]]);
28614
28694
  if (file) {
28615
28695
  handleFileUpload(file);
28616
28696
  e.target.value = "";
@@ -28621,7 +28701,7 @@ function MarkdownEditor({
28621
28701
  const handlePaste = _react.useCallback.call(void 0,
28622
28702
  (e) => {
28623
28703
  if (!onUploadFile) return;
28624
- const items = _optionalChain([e, 'access', _597 => _597.clipboardData, 'optionalAccess', _598 => _598.items]);
28704
+ const items = _optionalChain([e, 'access', _609 => _609.clipboardData, 'optionalAccess', _610 => _610.items]);
28625
28705
  if (!items) return;
28626
28706
  for (const item of items) {
28627
28707
  if (item.type.startsWith("image/")) {
@@ -28646,7 +28726,7 @@ function MarkdownEditor({
28646
28726
  buttonProps: { "aria-label": "Upload file", title: "Upload file" },
28647
28727
  icon: isUploading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "w-3 h-3" }),
28648
28728
  execute: () => {
28649
- _optionalChain([fileInputRef, 'access', _599 => _599.current, 'optionalAccess', _600 => _600.click, 'call', _601 => _601()]);
28729
+ _optionalChain([fileInputRef, 'access', _611 => _611.current, 'optionalAccess', _612 => _612.click, 'call', _613 => _613()]);
28650
28730
  }
28651
28731
  } : null;
28652
28732
  const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
@@ -28658,7 +28738,7 @@ function MarkdownEditor({
28658
28738
  const EDGE_ZONE = 60;
28659
28739
  const MAX_SCROLL_SPEED = 15;
28660
28740
  const findScrollParent = _react.useCallback.call(void 0, (el) => {
28661
- let node = _optionalChain([el, 'optionalAccess', _602 => _602.parentElement]);
28741
+ let node = _optionalChain([el, 'optionalAccess', _614 => _614.parentElement]);
28662
28742
  while (node && node !== document.documentElement) {
28663
28743
  const { overflowY } = window.getComputedStyle(node);
28664
28744
  if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
@@ -28801,7 +28881,7 @@ function matchesAccept(file, accept) {
28801
28881
  });
28802
28882
  }
28803
28883
  function dragHasFiles(e) {
28804
- const types = _optionalChain([e, 'access', _603 => _603.dataTransfer, 'optionalAccess', _604 => _604.types]);
28884
+ const types = _optionalChain([e, 'access', _615 => _615.dataTransfer, 'optionalAccess', _616 => _616.types]);
28805
28885
  if (!types) return false;
28806
28886
  for (let i = 0; i < types.length; i++) {
28807
28887
  if (types[i] === "Files") return true;
@@ -28896,7 +28976,7 @@ function FileUpload({
28896
28976
  e.stopPropagation();
28897
28977
  setDragActive(false);
28898
28978
  if (disabled) return;
28899
- if (_optionalChain([e, 'access', _605 => _605.dataTransfer, 'access', _606 => _606.files, 'optionalAccess', _607 => _607.length])) {
28979
+ if (_optionalChain([e, 'access', _617 => _617.dataTransfer, 'access', _618 => _618.files, 'optionalAccess', _619 => _619.length])) {
28900
28980
  handleFiles(e.dataTransfer.files);
28901
28981
  }
28902
28982
  };
@@ -28924,7 +29004,7 @@ function FileUpload({
28924
29004
  e.preventDefault();
28925
29005
  dragCounter = 0;
28926
29006
  setDragActive(false);
28927
- if (_optionalChain([e, 'access', _608 => _608.dataTransfer, 'optionalAccess', _609 => _609.files, 'optionalAccess', _610 => _610.length])) {
29007
+ if (_optionalChain([e, 'access', _620 => _620.dataTransfer, 'optionalAccess', _621 => _621.files, 'optionalAccess', _622 => _622.length])) {
28928
29008
  handleFilesRef.current(e.dataTransfer.files);
28929
29009
  }
28930
29010
  };
@@ -28946,7 +29026,7 @@ function FileUpload({
28946
29026
  };
28947
29027
  }, [acceptWindowDrops, disabled]);
28948
29028
  const handleFileSelect = (e) => {
28949
- if (_optionalChain([e, 'access', _611 => _611.target, 'access', _612 => _612.files, 'optionalAccess', _613 => _613.length])) {
29029
+ if (_optionalChain([e, 'access', _623 => _623.target, 'access', _624 => _624.files, 'optionalAccess', _625 => _625.length])) {
28950
29030
  handleFiles(e.target.files);
28951
29031
  }
28952
29032
  };
@@ -28963,7 +29043,7 @@ function FileUpload({
28963
29043
  };
28964
29044
  const openDialog = async () => {
28965
29045
  if (disabled) return;
28966
- _optionalChain([fileInputRef, 'access', _614 => _614.current, 'optionalAccess', _615 => _615.click, 'call', _616 => _616()]);
29046
+ _optionalChain([fileInputRef, 'access', _626 => _626.current, 'optionalAccess', _627 => _627.click, 'call', _628 => _628()]);
28967
29047
  };
28968
29048
  const displayError = error || validationError || void 0;
28969
29049
  const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
@@ -29041,7 +29121,7 @@ function FileUpload({
29041
29121
  "button",
29042
29122
  {
29043
29123
  type: "button",
29044
- onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _617 => _617(entry.id)]),
29124
+ onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _629 => _629(entry.id)]),
29045
29125
  className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
29046
29126
  "aria-label": `Remove ${entry.fileName}`,
29047
29127
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
@@ -29164,7 +29244,7 @@ function ImageUploader({
29164
29244
  onChange(file);
29165
29245
  };
29166
29246
  const handleFileSelect = (e) => {
29167
- validateAndEmit(_optionalChain([e, 'access', _618 => _618.target, 'access', _619 => _619.files, 'optionalAccess', _620 => _620[0]]));
29247
+ validateAndEmit(_optionalChain([e, 'access', _630 => _630.target, 'access', _631 => _631.files, 'optionalAccess', _632 => _632[0]]));
29168
29248
  if (inputRef.current) inputRef.current.value = "";
29169
29249
  };
29170
29250
  const handleDrag = (e) => {
@@ -29179,11 +29259,11 @@ function ImageUploader({
29179
29259
  e.stopPropagation();
29180
29260
  setDragActive(false);
29181
29261
  if (!interactive) return;
29182
- validateAndEmit(_optionalChain([e, 'access', _621 => _621.dataTransfer, 'access', _622 => _622.files, 'optionalAccess', _623 => _623[0]]));
29262
+ validateAndEmit(_optionalChain([e, 'access', _633 => _633.dataTransfer, 'access', _634 => _634.files, 'optionalAccess', _635 => _635[0]]));
29183
29263
  };
29184
29264
  const openDialog = () => {
29185
29265
  if (!interactive) return;
29186
- _optionalChain([inputRef, 'access', _624 => _624.current, 'optionalAccess', _625 => _625.click, 'call', _626 => _626()]);
29266
+ _optionalChain([inputRef, 'access', _636 => _636.current, 'optionalAccess', _637 => _637.click, 'call', _638 => _638()]);
29187
29267
  };
29188
29268
  const handleRootKeyDown = (e) => {
29189
29269
  if (hasImage || !interactive) return;
@@ -29340,7 +29420,7 @@ function CompactAssigneeDropdown({
29340
29420
  return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
29341
29421
  }, [filtered, currentAssignee]);
29342
29422
  const handleSelect = (userId) => {
29343
- const next = _optionalChain([currentAssignee, 'optionalAccess', _627 => _627.id]) === userId ? null : userId;
29423
+ const next = _optionalChain([currentAssignee, 'optionalAccess', _639 => _639.id]) === userId ? null : userId;
29344
29424
  onAssign(next);
29345
29425
  setIsOpen(false);
29346
29426
  };
@@ -29405,7 +29485,7 @@ function CompactAssigneeDropdown({
29405
29485
  }
29406
29486
  ) }),
29407
29487
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-h-80 overflow-y-auto py-[var(--spacing-system-xs)]", role: "listbox", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "Loading\u2026" }) : orderedOptions.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "No users found" }) : orderedOptions.map((opt) => {
29408
- const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _628 => _628.id]) === opt.value;
29488
+ const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _640 => _640.id]) === opt.value;
29409
29489
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
29410
29490
  "button",
29411
29491
  {
@@ -29474,7 +29554,7 @@ function DefaultAssigneeDropdown({
29474
29554
  Autocomplete,
29475
29555
  {
29476
29556
  options,
29477
- value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _629 => _629.id]), () => ( null)),
29557
+ value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _641 => _641.id]), () => ( null)),
29478
29558
  onChange: (val) => {
29479
29559
  onAssign(val);
29480
29560
  setIsEditing(false);
@@ -29840,14 +29920,14 @@ function TicketInfoSection({
29840
29920
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29841
29921
  SquareAvatar,
29842
29922
  {
29843
- src: _optionalChain([organization, 'optionalAccess', _630 => _630.imageSrc]),
29844
- alt: _optionalChain([organization, 'optionalAccess', _631 => _631.name]),
29845
- fallback: _optionalChain([organization, 'optionalAccess', _632 => _632.name]) || "Org",
29923
+ src: _optionalChain([organization, 'optionalAccess', _642 => _642.imageSrc]),
29924
+ alt: _optionalChain([organization, 'optionalAccess', _643 => _643.name]),
29925
+ fallback: _optionalChain([organization, 'optionalAccess', _644 => _644.name]) || "Org",
29846
29926
  size: "md",
29847
29927
  className: "shrink-0"
29848
29928
  }
29849
29929
  ),
29850
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _633 => _633.name]) || "Unassigned", label: "Organization" })
29930
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _645 => _645.name]) || "Unassigned", label: "Organization" })
29851
29931
  ] }),
29852
29932
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29853
29933
  AssigneeDropdown,
@@ -29868,10 +29948,10 @@ function TicketInfoSection({
29868
29948
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
29869
29949
  InfoCell2,
29870
29950
  {
29871
- value: _optionalChain([device, 'optionalAccess', _634 => _634.name]) || "Unassigned",
29951
+ value: _optionalChain([device, 'optionalAccess', _646 => _646.name]) || "Unassigned",
29872
29952
  label: "Device",
29873
- icon: _optionalChain([device, 'optionalAccess', _635 => _635.icon]),
29874
- onClick: _optionalChain([device, 'optionalAccess', _636 => _636.onClick])
29953
+ icon: _optionalChain([device, 'optionalAccess', _647 => _647.icon]),
29954
+ onClick: _optionalChain([device, 'optionalAccess', _648 => _648.onClick])
29875
29955
  }
29876
29956
  ),
29877
29957
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
@@ -30157,7 +30237,7 @@ function RoadmapCard({
30157
30237
  const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
30158
30238
  const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
30159
30239
  const hasFigma = !!item.figmaUrl;
30160
- const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _637 => _637.screenshots, 'optionalAccess', _638 => _638.length]), () => ( 0))) > 0;
30240
+ const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _649 => _649.screenshots, 'optionalAccess', _650 => _650.length]), () => ( 0))) > 0;
30161
30241
  const typeLabel = getTaskTypeLabel(item.customItemId);
30162
30242
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
30163
30243
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -30176,7 +30256,7 @@ function RoadmapCard({
30176
30256
  unoptimized: true,
30177
30257
  className: "h-8 w-8 object-contain"
30178
30258
  }
30179
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[10px] font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _639 => _639.title, 'optionalAccess', _640 => _640.substring, 'call', _641 => _641(0, 2)]) || "??" })
30259
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[10px] font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _651 => _651.title, 'optionalAccess', _652 => _652.substring, 'call', _653 => _653(0, 2)]) || "??" })
30180
30260
  }
30181
30261
  ),
30182
30262
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -30251,7 +30331,7 @@ function RoadmapCard({
30251
30331
  unoptimized: true,
30252
30332
  className: "object-contain p-1"
30253
30333
  }
30254
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _642 => _642.title, 'optionalAccess', _643 => _643.substring, 'call', _644 => _644(0, 2)]) || "??" }) }),
30334
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _654 => _654.title, 'optionalAccess', _655 => _655.substring, 'call', _656 => _656(0, 2)]) || "??" }) }),
30255
30335
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 flex flex-col", children: [
30256
30336
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[48px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h3 text-ods-text-primary tracking-[-0.36px] flex-1 line-clamp-2", children: item.title }) }),
30257
30337
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[20px] flex items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-h5 text-ods-text-secondary uppercase tracking-[-0.28px] truncate", children: [
@@ -30758,7 +30838,7 @@ function DataRoomDocCard({ item, className, badgeText, anchorProps }) {
30758
30838
  ] }) : null,
30759
30839
  item.preview ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 whitespace-pre-wrap break-words text-[13px] leading-5 text-ods-text-secondary", children: item.preview }) }) : null
30760
30840
  ] }),
30761
- _optionalChain([anchorProps, 'optionalAccess', _645 => _645.href]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-3.5 h-3.5" }) }) : null
30841
+ _optionalChain([anchorProps, 'optionalAccess', _657 => _657.href]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-3.5 h-3.5" }) }) : null
30762
30842
  ] });
30763
30843
  if (!anchorProps) {
30764
30844
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${COMPACT_CARD_OUTER_STATIC} ${_nullishCoalesce(className, () => ( ""))}`, "aria-label": "No link available", children: body });
@@ -30828,7 +30908,7 @@ function getDefaultOptions() {
30828
30908
  // node_modules/date-fns/startOfWeek.mjs
30829
30909
  function startOfWeek(date, options) {
30830
30910
  const defaultOptions2 = getDefaultOptions();
30831
- const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _646 => _646.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _647 => _647.locale, 'optionalAccess', _648 => _648.options, 'optionalAccess', _649 => _649.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _650 => _650.locale, 'optionalAccess', _651 => _651.options, 'optionalAccess', _652 => _652.weekStartsOn]))), () => ( 0));
30911
+ const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _658 => _658.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _659 => _659.locale, 'optionalAccess', _660 => _660.options, 'optionalAccess', _661 => _661.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _662 => _662.locale, 'optionalAccess', _663 => _663.options, 'optionalAccess', _664 => _664.weekStartsOn]))), () => ( 0));
30832
30912
  const _date = toDate(date);
30833
30913
  const day = _date.getDay();
30834
30914
  const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;
@@ -31003,7 +31083,7 @@ var formatDistance = (token, count, options) => {
31003
31083
  } else {
31004
31084
  result = tokenValue.other.replace("{{count}}", count.toString());
31005
31085
  }
31006
- if (_optionalChain([options, 'optionalAccess', _653 => _653.addSuffix])) {
31086
+ if (_optionalChain([options, 'optionalAccess', _665 => _665.addSuffix])) {
31007
31087
  if (options.comparison && options.comparison > 0) {
31008
31088
  return "in " + result;
31009
31089
  } else {
@@ -31070,15 +31150,15 @@ var formatRelative = (token, _date, _baseDate, _options) => formatRelativeLocale
31070
31150
  // node_modules/date-fns/locale/_lib/buildLocalizeFn.mjs
31071
31151
  function buildLocalizeFn(args) {
31072
31152
  return (value, options) => {
31073
- const context = _optionalChain([options, 'optionalAccess', _654 => _654.context]) ? String(options.context) : "standalone";
31153
+ const context = _optionalChain([options, 'optionalAccess', _666 => _666.context]) ? String(options.context) : "standalone";
31074
31154
  let valuesArray;
31075
31155
  if (context === "formatting" && args.formattingValues) {
31076
31156
  const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;
31077
- const width = _optionalChain([options, 'optionalAccess', _655 => _655.width]) ? String(options.width) : defaultWidth;
31157
+ const width = _optionalChain([options, 'optionalAccess', _667 => _667.width]) ? String(options.width) : defaultWidth;
31078
31158
  valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];
31079
31159
  } else {
31080
31160
  const defaultWidth = args.defaultWidth;
31081
- const width = _optionalChain([options, 'optionalAccess', _656 => _656.width]) ? String(options.width) : args.defaultWidth;
31161
+ const width = _optionalChain([options, 'optionalAccess', _668 => _668.width]) ? String(options.width) : args.defaultWidth;
31082
31162
  valuesArray = args.values[width] || args.values[defaultWidth];
31083
31163
  }
31084
31164
  const index = args.argumentCallback ? args.argumentCallback(value) : value;
@@ -31458,7 +31538,7 @@ function getWeekYear(date, options) {
31458
31538
  const _date = toDate(date);
31459
31539
  const year = _date.getFullYear();
31460
31540
  const defaultOptions2 = getDefaultOptions();
31461
- const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _657 => _657.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _658 => _658.locale, 'optionalAccess', _659 => _659.options, 'optionalAccess', _660 => _660.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _661 => _661.locale, 'optionalAccess', _662 => _662.options, 'optionalAccess', _663 => _663.firstWeekContainsDate]))), () => ( 1));
31541
+ const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _669 => _669.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _670 => _670.locale, 'optionalAccess', _671 => _671.options, 'optionalAccess', _672 => _672.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _673 => _673.locale, 'optionalAccess', _674 => _674.options, 'optionalAccess', _675 => _675.firstWeekContainsDate]))), () => ( 1));
31462
31542
  const firstWeekOfNextYear = constructFrom(date, 0);
31463
31543
  firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);
31464
31544
  firstWeekOfNextYear.setHours(0, 0, 0, 0);
@@ -31479,7 +31559,7 @@ function getWeekYear(date, options) {
31479
31559
  // node_modules/date-fns/startOfWeekYear.mjs
31480
31560
  function startOfWeekYear(date, options) {
31481
31561
  const defaultOptions2 = getDefaultOptions();
31482
- const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _664 => _664.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _665 => _665.locale, 'optionalAccess', _666 => _666.options, 'optionalAccess', _667 => _667.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _668 => _668.locale, 'optionalAccess', _669 => _669.options, 'optionalAccess', _670 => _670.firstWeekContainsDate]))), () => ( 1));
31562
+ const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _676 => _676.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _677 => _677.locale, 'optionalAccess', _678 => _678.options, 'optionalAccess', _679 => _679.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _680 => _680.locale, 'optionalAccess', _681 => _681.options, 'optionalAccess', _682 => _682.firstWeekContainsDate]))), () => ( 1));
31483
31563
  const year = getWeekYear(date, options);
31484
31564
  const firstWeek = constructFrom(date, 0);
31485
31565
  firstWeek.setFullYear(year, 0, firstWeekContainsDate);
@@ -32294,9 +32374,9 @@ var doubleQuoteRegExp = /''/g;
32294
32374
  var unescapedLatinCharacterRegExp = /[a-zA-Z]/;
32295
32375
  function format(date, formatStr, options) {
32296
32376
  const defaultOptions2 = getDefaultOptions();
32297
- const locale = _nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _671 => _671.locale]), () => ( defaultOptions2.locale)), () => ( enUS));
32298
- const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _672 => _672.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _673 => _673.locale, 'optionalAccess', _674 => _674.options, 'optionalAccess', _675 => _675.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _676 => _676.locale, 'optionalAccess', _677 => _677.options, 'optionalAccess', _678 => _678.firstWeekContainsDate]))), () => ( 1));
32299
- const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _679 => _679.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _680 => _680.locale, 'optionalAccess', _681 => _681.options, 'optionalAccess', _682 => _682.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _683 => _683.locale, 'optionalAccess', _684 => _684.options, 'optionalAccess', _685 => _685.weekStartsOn]))), () => ( 0));
32377
+ const locale = _nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _683 => _683.locale]), () => ( defaultOptions2.locale)), () => ( enUS));
32378
+ const firstWeekContainsDate = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _684 => _684.firstWeekContainsDate]), () => ( _optionalChain([options, 'optionalAccess', _685 => _685.locale, 'optionalAccess', _686 => _686.options, 'optionalAccess', _687 => _687.firstWeekContainsDate]))), () => ( defaultOptions2.firstWeekContainsDate)), () => ( _optionalChain([defaultOptions2, 'access', _688 => _688.locale, 'optionalAccess', _689 => _689.options, 'optionalAccess', _690 => _690.firstWeekContainsDate]))), () => ( 1));
32379
+ const weekStartsOn = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_nullishCoalesce(_optionalChain([options, 'optionalAccess', _691 => _691.weekStartsOn]), () => ( _optionalChain([options, 'optionalAccess', _692 => _692.locale, 'optionalAccess', _693 => _693.options, 'optionalAccess', _694 => _694.weekStartsOn]))), () => ( defaultOptions2.weekStartsOn)), () => ( _optionalChain([defaultOptions2, 'access', _695 => _695.locale, 'optionalAccess', _696 => _696.options, 'optionalAccess', _697 => _697.weekStartsOn]))), () => ( 0));
32300
32380
  const originalDate = toDate(date);
32301
32381
  if (!isValid(originalDate)) {
32302
32382
  throw new RangeError("Invalid time value");
@@ -32337,7 +32417,7 @@ function format(date, formatStr, options) {
32337
32417
  return parts.map((part) => {
32338
32418
  if (!part.isToken) return part.value;
32339
32419
  const token = part.value;
32340
- if (!_optionalChain([options, 'optionalAccess', _686 => _686.useAdditionalWeekYearTokens]) && isProtectedWeekYearToken(token) || !_optionalChain([options, 'optionalAccess', _687 => _687.useAdditionalDayOfYearTokens]) && isProtectedDayOfYearToken(token)) {
32420
+ if (!_optionalChain([options, 'optionalAccess', _698 => _698.useAdditionalWeekYearTokens]) && isProtectedWeekYearToken(token) || !_optionalChain([options, 'optionalAccess', _699 => _699.useAdditionalDayOfYearTokens]) && isProtectedDayOfYearToken(token)) {
32341
32421
  warnOrThrowProtectedError(token, formatStr, String(date));
32342
32422
  }
32343
32423
  const formatter = formatters[token[0]];
@@ -32503,7 +32583,7 @@ function ProgramCard({
32503
32583
  const dur = formatDurationFromRange(w.start_at, w.end_at);
32504
32584
  typeMeta = dur ? `${time} \xB7 ${dur}` : time;
32505
32585
  }
32506
- const subtitleParts = [itemDate2, typeMeta, _optionalChain([config, 'access', _688 => _688.labels, 'optionalAccess', _689 => _689.singular])].filter(
32586
+ const subtitleParts = [itemDate2, typeMeta, _optionalChain([config, 'access', _700 => _700.labels, 'optionalAccess', _701 => _701.singular])].filter(
32507
32587
  (s) => typeof s === "string" && s.length > 0
32508
32588
  );
32509
32589
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "a", { href, target, rel, className: _chunk664KA5FIcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
@@ -32660,7 +32740,7 @@ function ProgramCard({
32660
32740
 
32661
32741
 
32662
32742
  function CampaignCardAdmin({ campaign, className, anchorProps }) {
32663
- const goalsCount = _optionalChain([campaign, 'access', _690 => _690.goals, 'optionalAccess', _691 => _691.length]) || 0;
32743
+ const goalsCount = _optionalChain([campaign, 'access', _702 => _702.goals, 'optionalAccess', _703 => _703.length]) || 0;
32664
32744
  const innerChildren = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
32665
32745
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_ICON_SLOT, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Megaphone, { className: "h-5 w-5" }) }),
32666
32746
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -32955,11 +33035,11 @@ function HubspotTicketChatCard({
32955
33035
  chatRef,
32956
33036
  isNewTab
32957
33037
  }) {
32958
- const status = typeof _optionalChain([chatRef, 'access', _692 => _692.metadata, 'optionalAccess', _693 => _693.status]) === "string" ? chatRef.metadata.status : void 0;
32959
- const statusLabel = typeof _optionalChain([chatRef, 'access', _694 => _694.metadata, 'optionalAccess', _695 => _695.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
32960
- const priority = typeof _optionalChain([chatRef, 'access', _696 => _696.metadata, 'optionalAccess', _697 => _697.priority]) === "string" ? chatRef.metadata.priority : void 0;
32961
- const customerCompany = typeof _optionalChain([chatRef, 'access', _698 => _698.metadata, 'optionalAccess', _699 => _699.customerCompany]) === "string" ? chatRef.metadata.customerCompany : void 0;
32962
- const customerEmail = typeof _optionalChain([chatRef, 'access', _700 => _700.metadata, 'optionalAccess', _701 => _701.customerEmail]) === "string" ? chatRef.metadata.customerEmail : void 0;
33038
+ const status = typeof _optionalChain([chatRef, 'access', _704 => _704.metadata, 'optionalAccess', _705 => _705.status]) === "string" ? chatRef.metadata.status : void 0;
33039
+ const statusLabel = typeof _optionalChain([chatRef, 'access', _706 => _706.metadata, 'optionalAccess', _707 => _707.statusLabel]) === "string" ? chatRef.metadata.statusLabel : void 0;
33040
+ const priority = typeof _optionalChain([chatRef, 'access', _708 => _708.metadata, 'optionalAccess', _709 => _709.priority]) === "string" ? chatRef.metadata.priority : void 0;
33041
+ const customerCompany = typeof _optionalChain([chatRef, 'access', _710 => _710.metadata, 'optionalAccess', _711 => _711.customerCompany]) === "string" ? chatRef.metadata.customerCompany : void 0;
33042
+ const customerEmail = typeof _optionalChain([chatRef, 'access', _712 => _712.metadata, 'optionalAccess', _713 => _713.customerEmail]) === "string" ? chatRef.metadata.customerEmail : void 0;
32963
33043
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32964
33044
  HubspotTicketCard,
32965
33045
  {
@@ -32981,7 +33061,7 @@ function HubspotTicketChatCard({
32981
33061
  );
32982
33062
  }
32983
33063
  function SlackChatCard({ chatRef, isNewTab }) {
32984
- const channelName = typeof _optionalChain([chatRef, 'access', _702 => _702.metadata, 'optionalAccess', _703 => _703.channelName]) === "string" ? chatRef.metadata.channelName : void 0;
33064
+ const channelName = typeof _optionalChain([chatRef, 'access', _714 => _714.metadata, 'optionalAccess', _715 => _715.channelName]) === "string" ? chatRef.metadata.channelName : void 0;
32985
33065
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
32986
33066
  SlackMessageCard,
32987
33067
  {
@@ -33004,7 +33084,7 @@ function DataRoomDocChatCard({
33004
33084
  chipBasePlatform,
33005
33085
  isNewTab
33006
33086
  }) {
33007
- const path = typeof _optionalChain([chatRef, 'access', _704 => _704.metadata, 'optionalAccess', _705 => _705.path]) === "string" ? chatRef.metadata.path : void 0;
33087
+ const path = typeof _optionalChain([chatRef, 'access', _716 => _716.metadata, 'optionalAccess', _717 => _717.path]) === "string" ? chatRef.metadata.path : void 0;
33008
33088
  const badgeText = chatRef.sourceRepo ? getSourceLabel(chatRef.sourceRepo) : "Document";
33009
33089
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33010
33090
  DataRoomDocCard,
@@ -33030,8 +33110,8 @@ function GenericFinancialChatCard({
33030
33110
  scheme,
33031
33111
  isNewTab
33032
33112
  }) {
33033
- const facts = Array.isArray(_optionalChain([chatRef, 'access', _706 => _706.metadata, 'optionalAccess', _707 => _707.facts])) ? chatRef.metadata.facts : null;
33034
- const subtitle = typeof _optionalChain([chatRef, 'access', _708 => _708.metadata, 'optionalAccess', _709 => _709.subtitle]) === "string" ? chatRef.metadata.subtitle : null;
33113
+ const facts = Array.isArray(_optionalChain([chatRef, 'access', _718 => _718.metadata, 'optionalAccess', _719 => _719.facts])) ? chatRef.metadata.facts : null;
33114
+ const subtitle = typeof _optionalChain([chatRef, 'access', _720 => _720.metadata, 'optionalAccess', _721 => _721.subtitle]) === "string" ? chatRef.metadata.subtitle : null;
33035
33115
  const anchorProps = buildAnchorProps(
33036
33116
  chatRef.url,
33037
33117
  isNewTab
@@ -33193,7 +33273,7 @@ function programRegistryEntries() {
33193
33273
  contentRefType: cfg.contentRefType,
33194
33274
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProgramCardSkeleton, { size: "sm" }),
33195
33275
  render: (item, chatRef, opts) => {
33196
- const config = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _710 => _710.extras, 'optionalAccess', _711 => _711.programConfigs, 'optionalAccess', _712 => _712[cfg.configKey]]), () => ( DEFAULT_PROGRAM_CONFIGS[cfg.configKey]));
33276
+ const config = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _722 => _722.extras, 'optionalAccess', _723 => _723.programConfigs, 'optionalAccess', _724 => _724[cfg.configKey]]), () => ( DEFAULT_PROGRAM_CONFIGS[cfg.configKey]));
33197
33277
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33198
33278
  ProgramCard,
33199
33279
  {
@@ -33279,8 +33359,8 @@ var CHAT_CARD_REGISTRY = {
33279
33359
  DataRoomDocChatCard,
33280
33360
  {
33281
33361
  chatRef,
33282
- baseRoute: _optionalChain([opts, 'optionalAccess', _713 => _713.baseRoute]),
33283
- chipBasePlatform: _optionalChain([opts, 'optionalAccess', _714 => _714.chipBasePlatform]),
33362
+ baseRoute: _optionalChain([opts, 'optionalAccess', _725 => _725.baseRoute]),
33363
+ chipBasePlatform: _optionalChain([opts, 'optionalAccess', _726 => _726.chipBasePlatform]),
33284
33364
  isNewTab: opts.isNewTab
33285
33365
  }
33286
33366
  )
@@ -33292,8 +33372,8 @@ var CHAT_CARD_REGISTRY = {
33292
33372
  DataRoomDocChatCard,
33293
33373
  {
33294
33374
  chatRef,
33295
- baseRoute: _optionalChain([opts, 'optionalAccess', _715 => _715.baseRoute]),
33296
- chipBasePlatform: _optionalChain([opts, 'optionalAccess', _716 => _716.chipBasePlatform]),
33375
+ baseRoute: _optionalChain([opts, 'optionalAccess', _727 => _727.baseRoute]),
33376
+ chipBasePlatform: _optionalChain([opts, 'optionalAccess', _728 => _728.chipBasePlatform]),
33297
33377
  isNewTab: opts.isNewTab
33298
33378
  }
33299
33379
  )
@@ -33318,9 +33398,9 @@ var CHAT_CARD_REGISTRY = {
33318
33398
  size: "sm",
33319
33399
  href: _nullishCoalesce(chatRef.url, () => ( "")),
33320
33400
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
33321
- placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _717 => _717.extras, 'optionalAccess', _718 => _718.buildOgPlaceholderUrl, 'optionalCall', _719 => _719(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _720 => _720.title]), () => ( "")))]), () => ( null)),
33401
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _729 => _729.extras, 'optionalAccess', _730 => _730.buildOgPlaceholderUrl, 'optionalCall', _731 => _731(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _732 => _732.title]), () => ( "")))]), () => ( null)),
33322
33402
  ...newTabAnchorAttrs(opts.isNewTab),
33323
- hasEmbeddedVideo: _optionalChain([chatRef, 'access', _721 => _721.metadata, 'optionalAccess', _722 => _722.hasEmbeddedVideo]) === true
33403
+ hasEmbeddedVideo: _optionalChain([chatRef, 'access', _733 => _733.metadata, 'optionalAccess', _734 => _734.hasEmbeddedVideo]) === true
33324
33404
  }
33325
33405
  )
33326
33406
  },
@@ -33336,7 +33416,7 @@ var CHAT_CARD_REGISTRY = {
33336
33416
  size: "sm",
33337
33417
  href: _nullishCoalesce(chatRef.url, () => ( "")),
33338
33418
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
33339
- placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _723 => _723.extras, 'optionalAccess', _724 => _724.buildOgPlaceholderUrl, 'optionalCall', _725 => _725(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _726 => _726.title]), () => ( "")))]), () => ( null)),
33419
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _735 => _735.extras, 'optionalAccess', _736 => _736.buildOgPlaceholderUrl, 'optionalCall', _737 => _737(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _738 => _738.title]), () => ( "")))]), () => ( null)),
33340
33420
  ...newTabAnchorAttrs(opts.isNewTab)
33341
33421
  }
33342
33422
  )
@@ -33353,7 +33433,7 @@ var CHAT_CARD_REGISTRY = {
33353
33433
  size: "sm",
33354
33434
  href: _nullishCoalesce(chatRef.url, () => ( "")),
33355
33435
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
33356
- placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _727 => _727.extras, 'optionalAccess', _728 => _728.buildOgPlaceholderUrl, 'optionalCall', _729 => _729(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _730 => _730.title]), () => ( "")))]), () => ( null)),
33436
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _739 => _739.extras, 'optionalAccess', _740 => _740.buildOgPlaceholderUrl, 'optionalCall', _741 => _741(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _742 => _742.title]), () => ( "")))]), () => ( null)),
33357
33437
  ...newTabAnchorAttrs(opts.isNewTab)
33358
33438
  }
33359
33439
  )
@@ -33364,7 +33444,7 @@ var CHAT_CARD_REGISTRY = {
33364
33444
  contentRefType: "product_release",
33365
33445
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ProductReleaseCardSkeleton, { size: "sm" }),
33366
33446
  render: (item, chatRef, opts) => {
33367
- const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _731 => _731.extras, 'optionalAccess', _732 => _732.buildProductReleaseCardProps]), () => ( defaultBuildProductReleaseCardProps));
33447
+ const builder = _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _743 => _743.extras, 'optionalAccess', _744 => _744.buildProductReleaseCardProps]), () => ( defaultBuildProductReleaseCardProps));
33368
33448
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33369
33449
  ProductReleaseChatCard,
33370
33450
  {
@@ -33389,7 +33469,7 @@ var CHAT_CARD_REGISTRY = {
33389
33469
  size: "sm",
33390
33470
  href: _nullishCoalesce(chatRef.url, () => ( "")),
33391
33471
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
33392
- placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _733 => _733.extras, 'optionalAccess', _734 => _734.buildOgPlaceholderUrl, 'optionalCall', _735 => _735(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _736 => _736.title]), () => ( "")))]), () => ( null)),
33472
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _745 => _745.extras, 'optionalAccess', _746 => _746.buildOgPlaceholderUrl, 'optionalCall', _747 => _747(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _748 => _748.title]), () => ( "")))]), () => ( null)),
33393
33473
  ...newTabAnchorAttrs(opts.isNewTab)
33394
33474
  }
33395
33475
  )
@@ -33407,7 +33487,7 @@ var CHAT_CARD_REGISTRY = {
33407
33487
  size: "sm",
33408
33488
  href: _nullishCoalesce(chatRef.url, () => ( "")),
33409
33489
  targetPlatform: _nullishCoalesce(chatRef.targetPlatform, () => ( null)),
33410
- placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _737 => _737.extras, 'optionalAccess', _738 => _738.buildOgPlaceholderUrl, 'optionalCall', _739 => _739(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _740 => _740.title]), () => ( "")))]), () => ( null)),
33490
+ placeholderUrl: _nullishCoalesce(_optionalChain([opts, 'optionalAccess', _749 => _749.extras, 'optionalAccess', _750 => _750.buildOgPlaceholderUrl, 'optionalCall', _751 => _751(_nullishCoalesce(_optionalChain([item, 'optionalAccess', _752 => _752.title]), () => ( "")))]), () => ( null)),
33411
33491
  ...newTabAnchorAttrs(opts.isNewTab)
33412
33492
  }
33413
33493
  )
@@ -33419,7 +33499,7 @@ var CHAT_CARD_REGISTRY = {
33419
33499
  skeleton: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CampaignCardAdminSkeleton, {}),
33420
33500
  // No public viewer — synthesize the hub-internal admin URL post-fetch
33421
33501
  // so the wrapper + isNewTab computation see the actual destination.
33422
- fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _741 => _741.id]) ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
33502
+ fallbackHref: (item) => _optionalChain([item, 'optionalAccess', _753 => _753.id]) ? `/admin/campaigns/${encodeURIComponent(item.id)}` : null,
33423
33503
  render: (item, chatRef, opts) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33424
33504
  CampaignChatCard,
33425
33505
  {
@@ -33443,12 +33523,12 @@ function ChatCardNavWrap({
33443
33523
  const onClickCapture = (e) => {
33444
33524
  if (!href) return;
33445
33525
  const targetEl = e.target;
33446
- if (_optionalChain([targetEl, 'optionalAccess', _742 => _742.closest, 'optionalCall', _743 => _743("button")])) return;
33447
- if (!_optionalChain([targetEl, 'optionalAccess', _744 => _744.closest, 'optionalCall', _745 => _745("a")])) return;
33526
+ if (_optionalChain([targetEl, 'optionalAccess', _754 => _754.closest, 'optionalCall', _755 => _755("button")])) return;
33527
+ if (!_optionalChain([targetEl, 'optionalAccess', _756 => _756.closest, 'optionalCall', _757 => _757("a")])) return;
33448
33528
  const handled = handleChatNavClick(e, runtime, { href, path, targetPlatform });
33449
33529
  if (!handled) return;
33450
33530
  e.stopPropagation();
33451
- if (!isNewTab && _optionalChain([panel, 'optionalAccess', _746 => _746.closeChat])) panel.closeChat();
33531
+ if (!isNewTab && _optionalChain([panel, 'optionalAccess', _758 => _758.closeChat])) panel.closeChat();
33452
33532
  };
33453
33533
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "contents", onClickCapture, children });
33454
33534
  }
@@ -33470,7 +33550,7 @@ function ChatCardLoader({
33470
33550
  title: chatRef.title,
33471
33551
  externalUrl: chatRef.url,
33472
33552
  targetPlatform: chatRef.targetPlatform,
33473
- path: typeof _optionalChain([chatRef, 'access', _747 => _747.metadata, 'optionalAccess', _748 => _748.path]) === "string" ? chatRef.metadata.path : null
33553
+ path: typeof _optionalChain([chatRef, 'access', _759 => _759.metadata, 'optionalAccess', _760 => _760.path]) === "string" ? chatRef.metadata.path : null
33474
33554
  },
33475
33555
  {
33476
33556
  baseRoute,
@@ -33488,7 +33568,7 @@ function ChatCardLoader({
33488
33568
  const entry = CHAT_CARD_REGISTRY[resolvedChatRef.type];
33489
33569
  const fetchEntry = entry && entry.mode === "fetch" ? entry : null;
33490
33570
  const { item, isLoading } = useChatCardItem(
33491
- _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _749 => _749.contentRefType]), () => ( "")),
33571
+ _nullishCoalesce(_optionalChain([fetchEntry, 'optionalAccess', _761 => _761.contentRefType]), () => ( "")),
33492
33572
  fetchEntry ? resolvedChatRef.id : ""
33493
33573
  );
33494
33574
  if (!entry) return null;
@@ -33498,7 +33578,7 @@ function ChatCardLoader({
33498
33578
  } : resolvedChatRef;
33499
33579
  const isNewTab = computeIsNewTab(runtime, finalChatRef.url, _nullishCoalesce(finalChatRef.targetPlatform, () => ( null)));
33500
33580
  const renderOpts = { baseRoute, chipBasePlatform, extras, isNewTab };
33501
- const path = typeof _optionalChain([finalChatRef, 'access', _750 => _750.metadata, 'optionalAccess', _751 => _751.path]) === "string" ? finalChatRef.metadata.path : null;
33581
+ const path = typeof _optionalChain([finalChatRef, 'access', _762 => _762.metadata, 'optionalAccess', _763 => _763.path]) === "string" ? finalChatRef.metadata.path : null;
33502
33582
  const navWrap = (children) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33503
33583
  ChatCardNavWrap,
33504
33584
  {
@@ -33915,7 +33995,6 @@ function useChunkCatchup({
33915
33995
 
33916
33996
  // src/components/chat/hooks/use-jetstream-dialog-subscription.ts
33917
33997
 
33918
- var shared = null;
33919
33998
  var DEFAULT_INACTIVE_THRESHOLD_MS = 5 * 6e4;
33920
33999
  var DEFAULT_STREAM_NAME = "CHAT_CHUNKS";
33921
34000
  function useJetStreamDialogSubscription({
@@ -33978,68 +34057,16 @@ function useJetStreamDialogSubscription({
33978
34057
  inactiveThresholdRef.current = inactiveThresholdMs;
33979
34058
  }, [inactiveThresholdMs]);
33980
34059
  const hadConnectionBeforeRef = _react.useRef.call(void 0, false);
33981
- const acquireClient = _react.useCallback.call(void 0,
33982
- (url) => {
33983
- if (_optionalChain([shared, 'optionalAccess', _752 => _752.wsUrl]) !== url) {
33984
- if (shared) {
33985
- if (shared.closeTimer) clearTimeout(shared.closeTimer);
33986
- const old = shared;
33987
- shared = null;
33988
- void old.client.close().catch(() => {
33989
- });
33990
- }
33991
- const { name = "openframe-frontend-jetstream", user = "machine", pass = "" } = clientConfig;
33992
- const client = _chunkEH3RWVF3cjs.createNatsClient.call(void 0, {
33993
- servers: url,
33994
- name,
33995
- user,
33996
- pass,
33997
- connectTimeoutMs: NETWORK_CONFIG.CONNECT_TIMEOUT_MS,
33998
- reconnect: false,
33999
- pingIntervalMs: NETWORK_CONFIG.PING_INTERVAL_MS,
34000
- maxPingOut: NETWORK_CONFIG.MAX_PING_OUT
34001
- });
34002
- shared = {
34003
- wsUrl: url,
34004
- client,
34005
- connectPromise: null,
34006
- refCount: 0,
34007
- closeTimer: null,
34008
- retryTimer: null
34009
- };
34010
- }
34011
- shared.refCount += 1;
34012
- if (shared.closeTimer) {
34013
- clearTimeout(shared.closeTimer);
34014
- shared.closeTimer = null;
34015
- }
34016
- return shared;
34017
- },
34018
- [clientConfig]
34019
- );
34020
- const releaseClient = _react.useCallback.call(void 0, (url) => {
34021
- if (!shared || shared.wsUrl !== url) return;
34022
- shared.refCount = Math.max(0, shared.refCount - 1);
34023
- if (shared.refCount > 0) return;
34024
- shared.closeTimer = setTimeout(() => {
34025
- const s = shared;
34026
- shared = null;
34027
- if (s) {
34028
- if (s.retryTimer) {
34029
- clearTimeout(s.retryTimer);
34030
- s.retryTimer = null;
34031
- }
34032
- void s.client.close().catch(() => {
34033
- });
34034
- }
34035
- }, NETWORK_CONFIG.SHARED_CLOSE_DELAY_MS);
34036
- }, []);
34060
+ const clientConfigRef = _react.useRef.call(void 0, clientConfig);
34061
+ _react.useEffect.call(void 0, () => {
34062
+ clientConfigRef.current = clientConfig;
34063
+ }, [clientConfig]);
34037
34064
  const currentWsUrlRef = _react.useRef.call(void 0, "");
34065
+ const wsUrl = getNatsWsUrl();
34038
34066
  _react.useEffect.call(void 0, () => {
34039
- const wsUrl = getNatsWsUrl();
34040
34067
  if (!enabled || !wsUrl) {
34041
34068
  if (currentWsUrlRef.current && clientRef.current) {
34042
- releaseClient(currentWsUrlRef.current);
34069
+ _chunkOZ3GH6OQcjs.releaseClient.call(void 0, currentWsUrlRef.current);
34043
34070
  clientRef.current = null;
34044
34071
  currentWsUrlRef.current = "";
34045
34072
  setIsConnected(false);
@@ -34050,137 +34077,79 @@ function useJetStreamDialogSubscription({
34050
34077
  return;
34051
34078
  }
34052
34079
  if (currentWsUrlRef.current && currentWsUrlRef.current !== wsUrl && clientRef.current) {
34053
- releaseClient(currentWsUrlRef.current);
34080
+ _chunkOZ3GH6OQcjs.releaseClient.call(void 0, currentWsUrlRef.current);
34054
34081
  clientRef.current = null;
34055
34082
  setIsConnected(false);
34056
34083
  }
34057
34084
  currentWsUrlRef.current = wsUrl;
34058
- const sharedConn = acquireClient(wsUrl);
34085
+ const cfg = clientConfigRef.current;
34086
+ const sharedConn = _chunkOZ3GH6OQcjs.acquireClient.call(void 0, wsUrl, {
34087
+ name: _nullishCoalesce(cfg.name, () => ( "openframe-frontend-jetstream")),
34088
+ user: _nullishCoalesce(cfg.user, () => ( "machine")),
34089
+ pass: _nullishCoalesce(cfg.pass, () => ( ""))
34090
+ });
34059
34091
  const client = sharedConn.client;
34060
34092
  clientRef.current = client;
34061
- setIsConnected(false);
34062
- let closed = false;
34063
- let retryAttempt = 0;
34064
- function scheduleRetry() {
34065
- if (closed) return;
34066
- if (shared !== sharedConn) return;
34067
- if (sharedConn.retryTimer) {
34068
- clearTimeout(sharedConn.retryTimer);
34069
- sharedConn.retryTimer = null;
34070
- }
34071
- const cfg = _nullishCoalesce(reconnectionBackoffRef.current, () => ( {}));
34072
- const fastRetries = _nullishCoalesce(cfg.fastRetries, () => ( 0));
34073
- const fastDelay = _nullishCoalesce(cfg.fastRetryDelayMs, () => ( NETWORK_CONFIG.RETRY_INITIAL_DELAY_MS));
34074
- const baseDelay = _nullishCoalesce(cfg.initialDelayMs, () => ( NETWORK_CONFIG.RETRY_INITIAL_DELAY_MS));
34075
- const maxDelay = _nullishCoalesce(cfg.maxDelayMs, () => ( NETWORK_CONFIG.RETRY_MAX_DELAY_MS));
34076
- const multiplier = _nullishCoalesce(cfg.multiplier, () => ( NETWORK_CONFIG.RETRY_BACKOFF_MULTIPLIER));
34077
- const delay2 = retryAttempt < fastRetries ? fastDelay : Math.min(baseDelay * multiplier ** (retryAttempt - fastRetries), maxDelay);
34078
- const jitteredDelay = delay2 * (0.5 + Math.random() * 0.5);
34079
- retryAttempt++;
34080
- sharedConn.retryTimer = setTimeout(async () => {
34081
- sharedConn.retryTimer = null;
34082
- if (closed) return;
34083
- if (shared !== sharedConn) return;
34093
+ setIsConnected(client.isConnected());
34094
+ const tearDownSubscription = () => {
34095
+ if (subscriptionRef.current) {
34084
34096
  try {
34085
- await _optionalChain([onBeforeReconnectRef, 'access', _753 => _753.current, 'optionalCall', _754 => _754()]);
34097
+ subscriptionRef.current.unsubscribe();
34086
34098
  } catch (e24) {
34087
34099
  }
34088
- if (closed) return;
34089
- if (shared !== sharedConn) return;
34090
- const freshUrl = getNatsWsUrlRef.current();
34091
- if (freshUrl !== wsUrl) return;
34092
- try {
34093
- sharedConn.connectPromise = null;
34094
- sharedConn.connectPromise = client.connect();
34095
- await sharedConn.connectPromise;
34096
- if (!closed && shared === sharedConn) {
34097
- retryAttempt = 0;
34098
- setIsConnected(true);
34099
- }
34100
- } catch (e25) {
34101
- sharedConn.connectPromise = null;
34102
- if (!closed && shared === sharedConn) {
34103
- scheduleRetry();
34104
- }
34105
- }
34106
- }, jitteredDelay);
34107
- }
34108
- const unsubscribeStatus = client.onStatus((event) => {
34109
- const connected = event.status === "connected";
34110
- const disconnected = event.status === "closed" || event.status === "disconnected";
34111
- if (connected) {
34112
- setIsConnected(true);
34113
- if (hadConnectionBeforeRef.current) {
34114
- setReconnectionCount((c) => c + 1);
34115
- }
34116
- hadConnectionBeforeRef.current = true;
34117
- retryAttempt = 0;
34118
- _optionalChain([onConnectRef, 'access', _755 => _755.current, 'optionalCall', _756 => _756()]);
34119
- }
34120
- if (event.status === "error") {
34121
- console.warn("[JetStream] NATS protocol error:", event.data);
34122
- return;
34123
- }
34124
- if (disconnected) {
34125
- setIsConnected(false);
34126
- setIsSubscribed(false);
34127
- if (subscriptionRef.current) {
34128
- try {
34129
- subscriptionRef.current.unsubscribe();
34130
- } catch (e26) {
34131
- }
34132
- subscriptionRef.current = null;
34133
- }
34134
- _optionalChain([onDisconnectRef, 'access', _757 => _757.current, 'optionalCall', _758 => _758()]);
34135
- scheduleRetry();
34100
+ subscriptionRef.current = null;
34136
34101
  }
34137
- });
34138
- (async () => {
34139
- try {
34140
- sharedConn.connectPromise || (sharedConn.connectPromise = client.connect());
34141
- await sharedConn.connectPromise;
34142
- if (!closed) {
34102
+ };
34103
+ const lifecycle = _chunkOZ3GH6OQcjs.startConnectionLifecycle.call(void 0, {
34104
+ conn: sharedConn,
34105
+ wsUrl,
34106
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _764 => _764.current, 'optionalCall', _765 => _765()]),
34107
+ backoff: reconnectionBackoffRef.current,
34108
+ getFreshUrl: () => getNatsWsUrlRef.current(),
34109
+ // JetStream emits 'error' for protocol-level failures (e.g. -ERR Permissions
34110
+ // Violation when CONSUMER.CREATE is denied) without closing the WebSocket.
34111
+ // Retrying on 'error' would loop onBeforeReconnect on every -ERR; let the
34112
+ // subscribe effect surface those via its own rejected promise instead.
34113
+ shouldRetryOn: (status) => status === "closed" || status === "disconnected",
34114
+ onStatusChange: (status, evt) => {
34115
+ if (status === "connected") {
34143
34116
  setIsConnected(true);
34117
+ if (hadConnectionBeforeRef.current) {
34118
+ setReconnectionCount((c) => c + 1);
34119
+ }
34144
34120
  hadConnectionBeforeRef.current = true;
34121
+ _optionalChain([onConnectRef, 'access', _766 => _766.current, 'optionalCall', _767 => _767()]);
34122
+ }
34123
+ if (status === "error") {
34124
+ console.warn("[JetStream] NATS protocol error:", evt.data);
34125
+ return;
34145
34126
  }
34146
- } catch (e27) {
34147
- sharedConn.connectPromise = null;
34148
- if (!closed) {
34127
+ if (status === "closed" || status === "disconnected") {
34149
34128
  setIsConnected(false);
34150
- _optionalChain([onDisconnectRef, 'access', _759 => _759.current, 'optionalCall', _760 => _760()]);
34151
- scheduleRetry();
34129
+ setIsSubscribed(false);
34130
+ tearDownSubscription();
34131
+ _optionalChain([onDisconnectRef, 'access', _768 => _768.current, 'optionalCall', _769 => _769()]);
34152
34132
  }
34153
34133
  }
34154
- })();
34134
+ });
34155
34135
  return () => {
34156
- closed = true;
34136
+ lifecycle.stop();
34157
34137
  setIsConnected(false);
34158
34138
  setIsSubscribed(false);
34159
- unsubscribeStatus();
34160
- if (sharedConn.retryTimer) {
34161
- clearTimeout(sharedConn.retryTimer);
34162
- sharedConn.retryTimer = null;
34163
- }
34164
- if (subscriptionRef.current) {
34165
- try {
34166
- subscriptionRef.current.unsubscribe();
34167
- } catch (e28) {
34168
- }
34169
- subscriptionRef.current = null;
34170
- }
34139
+ tearDownSubscription();
34171
34140
  if (clientRef.current && currentWsUrlRef.current) {
34172
- releaseClient(currentWsUrlRef.current);
34141
+ _chunkOZ3GH6OQcjs.releaseClient.call(void 0, currentWsUrlRef.current);
34173
34142
  clientRef.current = null;
34174
34143
  currentWsUrlRef.current = "";
34175
34144
  }
34176
34145
  };
34177
- }, [enabled, getNatsWsUrl, acquireClient, releaseClient]);
34146
+ }, [enabled, wsUrl]);
34178
34147
  _react.useEffect.call(void 0, () => {
34179
34148
  if (!enabled || !dialogId || !isConnected) {
34180
34149
  if (subscriptionRef.current) {
34181
34150
  try {
34182
34151
  subscriptionRef.current.unsubscribe();
34183
- } catch (e29) {
34152
+ } catch (e25) {
34184
34153
  }
34185
34154
  subscriptionRef.current = null;
34186
34155
  }
@@ -34217,7 +34186,7 @@ function useJetStreamDialogSubscription({
34217
34186
  parsed.streamSeq = streamSeq;
34218
34187
  }
34219
34188
  cb(parsed, topic);
34220
- } catch (e30) {
34189
+ } catch (e26) {
34221
34190
  }
34222
34191
  },
34223
34192
  {
@@ -34232,14 +34201,14 @@ function useJetStreamDialogSubscription({
34232
34201
  if (cancelled) {
34233
34202
  try {
34234
34203
  handle.unsubscribe();
34235
- } catch (e31) {
34204
+ } catch (e27) {
34236
34205
  }
34237
34206
  return;
34238
34207
  }
34239
34208
  subscriptionRef.current = handle;
34240
34209
  setIsSubscribed(true);
34241
- _optionalChain([onSubscribedRef, 'access', _761 => _761.current, 'optionalCall', _762 => _762()]);
34242
- } catch (e32) {
34210
+ _optionalChain([onSubscribedRef, 'access', _770 => _770.current, 'optionalCall', _771 => _771()]);
34211
+ } catch (e28) {
34243
34212
  if (!cancelled) {
34244
34213
  setIsSubscribed(false);
34245
34214
  }
@@ -34251,7 +34220,7 @@ function useJetStreamDialogSubscription({
34251
34220
  if (subscriptionRef.current) {
34252
34221
  try {
34253
34222
  subscriptionRef.current.unsubscribe();
34254
- } catch (e33) {
34223
+ } catch (e29) {
34255
34224
  }
34256
34225
  subscriptionRef.current = null;
34257
34226
  }
@@ -34267,7 +34236,6 @@ function useJetStreamDialogSubscription({
34267
34236
 
34268
34237
  // src/components/chat/hooks/use-nats-dialog-subscription.ts
34269
34238
 
34270
- var shared2 = null;
34271
34239
  function useNatsDialogSubscription({
34272
34240
  enabled,
34273
34241
  dialogId,
@@ -34315,56 +34283,16 @@ function useNatsDialogSubscription({
34315
34283
  _react.useEffect.call(void 0, () => {
34316
34284
  reconnectionBackoffRef.current = reconnectionBackoff;
34317
34285
  }, [reconnectionBackoff]);
34318
- const acquireClient = _react.useCallback.call(void 0, (url) => {
34319
- if (_optionalChain([shared2, 'optionalAccess', _763 => _763.wsUrl]) !== url) {
34320
- if (shared2) {
34321
- shared2.closeTimer && clearTimeout(shared2.closeTimer);
34322
- const old = shared2;
34323
- shared2 = null;
34324
- void old.client.close().catch(() => {
34325
- });
34326
- }
34327
- const { name = "openframe-frontend", user = "machine", pass = "" } = clientConfig;
34328
- const client = _chunkEH3RWVF3cjs.createNatsClient.call(void 0, {
34329
- servers: url,
34330
- name,
34331
- user,
34332
- pass,
34333
- connectTimeoutMs: NETWORK_CONFIG.CONNECT_TIMEOUT_MS,
34334
- reconnect: false,
34335
- pingIntervalMs: NETWORK_CONFIG.PING_INTERVAL_MS,
34336
- maxPingOut: NETWORK_CONFIG.MAX_PING_OUT
34337
- });
34338
- shared2 = { wsUrl: url, client, connectPromise: null, refCount: 0, closeTimer: null, retryTimer: null };
34339
- }
34340
- shared2.refCount += 1;
34341
- shared2.closeTimer && clearTimeout(shared2.closeTimer);
34342
- shared2.closeTimer = null;
34343
- return shared2;
34286
+ const clientConfigRef = _react.useRef.call(void 0, clientConfig);
34287
+ _react.useEffect.call(void 0, () => {
34288
+ clientConfigRef.current = clientConfig;
34344
34289
  }, [clientConfig]);
34345
- const releaseClient = _react.useCallback.call(void 0, (url) => {
34346
- if (!shared2 || shared2.wsUrl !== url) return;
34347
- shared2.refCount = Math.max(0, shared2.refCount - 1);
34348
- if (shared2.refCount > 0) return;
34349
- shared2.closeTimer = setTimeout(() => {
34350
- const s = shared2;
34351
- shared2 = null;
34352
- if (s) {
34353
- if (s.retryTimer) {
34354
- clearTimeout(s.retryTimer);
34355
- s.retryTimer = null;
34356
- }
34357
- void s.client.close().catch(() => {
34358
- });
34359
- }
34360
- }, NETWORK_CONFIG.SHARED_CLOSE_DELAY_MS);
34361
- }, []);
34362
34290
  const currentWsUrlRef = _react.useRef.call(void 0, "");
34291
+ const wsUrl = getNatsWsUrl();
34363
34292
  _react.useEffect.call(void 0, () => {
34364
- const wsUrl = getNatsWsUrl();
34365
34293
  if (!enabled || !wsUrl) {
34366
34294
  if (currentWsUrlRef.current && clientRef.current) {
34367
- releaseClient(currentWsUrlRef.current);
34295
+ _chunkOZ3GH6OQcjs.releaseClient.call(void 0, currentWsUrlRef.current);
34368
34296
  clientRef.current = null;
34369
34297
  currentWsUrlRef.current = "";
34370
34298
  setIsConnected(false);
@@ -34375,131 +34303,69 @@ function useNatsDialogSubscription({
34375
34303
  return;
34376
34304
  }
34377
34305
  if (currentWsUrlRef.current && currentWsUrlRef.current !== wsUrl && clientRef.current) {
34378
- releaseClient(currentWsUrlRef.current);
34306
+ _chunkOZ3GH6OQcjs.releaseClient.call(void 0, currentWsUrlRef.current);
34379
34307
  clientRef.current = null;
34380
34308
  setIsConnected(false);
34381
34309
  }
34382
34310
  currentWsUrlRef.current = wsUrl;
34383
- const sharedConn = acquireClient(wsUrl);
34311
+ const cfg = clientConfigRef.current;
34312
+ const sharedConn = _chunkOZ3GH6OQcjs.acquireClient.call(void 0, wsUrl, {
34313
+ name: _nullishCoalesce(cfg.name, () => ( "openframe-frontend")),
34314
+ user: _nullishCoalesce(cfg.user, () => ( "machine")),
34315
+ pass: _nullishCoalesce(cfg.pass, () => ( ""))
34316
+ });
34384
34317
  const client = sharedConn.client;
34385
34318
  clientRef.current = client;
34386
- setIsConnected(false);
34387
- let closed = false;
34388
- let retryAttempt = 0;
34389
- function scheduleRetry() {
34390
- if (closed) return;
34391
- if (shared2 !== sharedConn) return;
34392
- if (sharedConn.retryTimer) {
34393
- clearTimeout(sharedConn.retryTimer);
34394
- sharedConn.retryTimer = null;
34395
- }
34396
- const cfg = _nullishCoalesce(reconnectionBackoffRef.current, () => ( {}));
34397
- const fastRetries = _nullishCoalesce(cfg.fastRetries, () => ( 0));
34398
- const fastDelay = _nullishCoalesce(cfg.fastRetryDelayMs, () => ( NETWORK_CONFIG.RETRY_INITIAL_DELAY_MS));
34399
- const baseDelay = _nullishCoalesce(cfg.initialDelayMs, () => ( NETWORK_CONFIG.RETRY_INITIAL_DELAY_MS));
34400
- const maxDelay = _nullishCoalesce(cfg.maxDelayMs, () => ( NETWORK_CONFIG.RETRY_MAX_DELAY_MS));
34401
- const multiplier = _nullishCoalesce(cfg.multiplier, () => ( NETWORK_CONFIG.RETRY_BACKOFF_MULTIPLIER));
34402
- const delay2 = retryAttempt < fastRetries ? fastDelay : Math.min(baseDelay * multiplier ** (retryAttempt - fastRetries), maxDelay);
34403
- const jitteredDelay = delay2 * (0.5 + Math.random() * 0.5);
34404
- retryAttempt++;
34405
- sharedConn.retryTimer = setTimeout(async () => {
34406
- sharedConn.retryTimer = null;
34407
- if (closed) return;
34408
- if (shared2 !== sharedConn) return;
34409
- try {
34410
- await _optionalChain([onBeforeReconnectRef, 'access', _764 => _764.current, 'optionalCall', _765 => _765()]);
34411
- } catch (e34) {
34412
- }
34413
- if (closed) return;
34414
- if (shared2 !== sharedConn) return;
34415
- const freshUrl = getNatsWsUrlRef.current();
34416
- if (freshUrl !== wsUrl) return;
34319
+ setIsConnected(client.isConnected());
34320
+ const tearDownSubscriptions = () => {
34321
+ subscriptionRefs.current.forEach((sub) => {
34417
34322
  try {
34418
- sharedConn.connectPromise = null;
34419
- sharedConn.connectPromise = client.connect();
34420
- await sharedConn.connectPromise;
34421
- if (!closed && shared2 === sharedConn) {
34422
- retryAttempt = 0;
34423
- setIsConnected(true);
34424
- }
34425
- } catch (e35) {
34426
- sharedConn.connectPromise = null;
34427
- if (!closed && shared2 === sharedConn) {
34428
- scheduleRetry();
34429
- }
34323
+ _optionalChain([sub, 'optionalAccess', _772 => _772.unsubscribe, 'call', _773 => _773()]);
34324
+ } catch (e30) {
34430
34325
  }
34431
- }, jitteredDelay);
34432
- }
34433
- const unsubscribeStatus = client.onStatus((event) => {
34434
- const connected = event.status === "connected";
34435
- const disconnected = ["closed", "disconnected", "error"].includes(event.status);
34436
- if (connected) {
34437
- setIsConnected(true);
34438
- if (hadConnectionBeforeRef.current) {
34439
- setReconnectionCount((c) => c + 1);
34440
- }
34441
- hadConnectionBeforeRef.current = true;
34442
- retryAttempt = 0;
34443
- _optionalChain([onConnectRef, 'access', _766 => _766.current, 'optionalCall', _767 => _767()]);
34444
- }
34445
- if (disconnected) {
34446
- setIsConnected(false);
34447
- setIsSubscribed(false);
34448
- subscriptionRefs.current.forEach((sub) => {
34449
- try {
34450
- _optionalChain([sub, 'optionalAccess', _768 => _768.unsubscribe, 'call', _769 => _769()]);
34451
- } catch (e36) {
34452
- }
34453
- });
34454
- subscriptionRefs.current.clear();
34455
- lastSubscribedDialogIdRef.current = null;
34456
- _optionalChain([abortControllerRef, 'access', _770 => _770.current, 'optionalAccess', _771 => _771.abort, 'call', _772 => _772()]);
34457
- abortControllerRef.current = null;
34458
- _optionalChain([onDisconnectRef, 'access', _773 => _773.current, 'optionalCall', _774 => _774()]);
34459
- scheduleRetry();
34460
- }
34461
- });
34462
- (async () => {
34463
- try {
34464
- sharedConn.connectPromise || (sharedConn.connectPromise = client.connect());
34465
- await sharedConn.connectPromise;
34466
- if (!closed) {
34326
+ });
34327
+ subscriptionRefs.current.clear();
34328
+ lastSubscribedDialogIdRef.current = null;
34329
+ _optionalChain([abortControllerRef, 'access', _774 => _774.current, 'optionalAccess', _775 => _775.abort, 'call', _776 => _776()]);
34330
+ abortControllerRef.current = null;
34331
+ };
34332
+ const isDisconnectStatus = (status) => status === "closed" || status === "disconnected" || status === "error";
34333
+ const lifecycle = _chunkOZ3GH6OQcjs.startConnectionLifecycle.call(void 0, {
34334
+ conn: sharedConn,
34335
+ wsUrl,
34336
+ onBeforeReconnect: () => _optionalChain([onBeforeReconnectRef, 'access', _777 => _777.current, 'optionalCall', _778 => _778()]),
34337
+ backoff: reconnectionBackoffRef.current,
34338
+ getFreshUrl: () => getNatsWsUrlRef.current(),
34339
+ shouldRetryOn: isDisconnectStatus,
34340
+ onStatusChange: (status) => {
34341
+ if (status === "connected") {
34467
34342
  setIsConnected(true);
34343
+ if (hadConnectionBeforeRef.current) {
34344
+ setReconnectionCount((c) => c + 1);
34345
+ }
34468
34346
  hadConnectionBeforeRef.current = true;
34347
+ _optionalChain([onConnectRef, 'access', _779 => _779.current, 'optionalCall', _780 => _780()]);
34469
34348
  }
34470
- } catch (e37) {
34471
- sharedConn.connectPromise = null;
34472
- if (!closed) {
34349
+ if (isDisconnectStatus(status)) {
34473
34350
  setIsConnected(false);
34474
- _optionalChain([onDisconnectRef, 'access', _775 => _775.current, 'optionalCall', _776 => _776()]);
34475
- scheduleRetry();
34351
+ setIsSubscribed(false);
34352
+ tearDownSubscriptions();
34353
+ _optionalChain([onDisconnectRef, 'access', _781 => _781.current, 'optionalCall', _782 => _782()]);
34476
34354
  }
34477
34355
  }
34478
- })();
34356
+ });
34479
34357
  return () => {
34480
- closed = true;
34358
+ lifecycle.stop();
34481
34359
  setIsConnected(false);
34482
34360
  setIsSubscribed(false);
34483
- unsubscribeStatus();
34484
- if (sharedConn.retryTimer) {
34485
- clearTimeout(sharedConn.retryTimer);
34486
- sharedConn.retryTimer = null;
34487
- }
34488
- subscriptionRefs.current.forEach((sub) => {
34489
- try {
34490
- _optionalChain([sub, 'optionalAccess', _777 => _777.unsubscribe, 'call', _778 => _778()]);
34491
- } catch (e38) {
34492
- }
34493
- });
34494
- subscriptionRefs.current.clear();
34495
- lastSubscribedDialogIdRef.current = null;
34361
+ tearDownSubscriptions();
34496
34362
  if (clientRef.current && currentWsUrlRef.current) {
34497
- releaseClient(currentWsUrlRef.current);
34363
+ _chunkOZ3GH6OQcjs.releaseClient.call(void 0, currentWsUrlRef.current);
34498
34364
  clientRef.current = null;
34499
34365
  currentWsUrlRef.current = "";
34500
34366
  }
34501
34367
  };
34502
- }, [enabled, getNatsWsUrl, acquireClient, releaseClient]);
34368
+ }, [enabled, wsUrl]);
34503
34369
  const topicsKey = topics.join(",");
34504
34370
  const lastSubscribedDialogIdRef = _react.useRef.call(void 0, null);
34505
34371
  const isConnectedRef = _react.useRef.call(void 0, isConnected);
@@ -34515,13 +34381,13 @@ function useNatsDialogSubscription({
34515
34381
  setIsSubscribed(false);
34516
34382
  subscriptionRefs.current.forEach((sub) => {
34517
34383
  try {
34518
- _optionalChain([sub, 'optionalAccess', _779 => _779.unsubscribe, 'call', _780 => _780()]);
34519
- } catch (e39) {
34384
+ _optionalChain([sub, 'optionalAccess', _783 => _783.unsubscribe, 'call', _784 => _784()]);
34385
+ } catch (e31) {
34520
34386
  }
34521
34387
  });
34522
34388
  subscriptionRefs.current.clear();
34523
34389
  lastSubscribedDialogIdRef.current = null;
34524
- _optionalChain([abortControllerRef, 'access', _781 => _781.current, 'optionalAccess', _782 => _782.abort, 'call', _783 => _783()]);
34390
+ _optionalChain([abortControllerRef, 'access', _785 => _785.current, 'optionalAccess', _786 => _786.abort, 'call', _787 => _787()]);
34525
34391
  abortControllerRef.current = null;
34526
34392
  }
34527
34393
  return;
@@ -34533,12 +34399,12 @@ function useNatsDialogSubscription({
34533
34399
  if (subscriptionRefs.current.size > 0) {
34534
34400
  subscriptionRefs.current.forEach((sub) => {
34535
34401
  try {
34536
- _optionalChain([sub, 'optionalAccess', _784 => _784.unsubscribe, 'call', _785 => _785()]);
34537
- } catch (e40) {
34402
+ _optionalChain([sub, 'optionalAccess', _788 => _788.unsubscribe, 'call', _789 => _789()]);
34403
+ } catch (e32) {
34538
34404
  }
34539
34405
  });
34540
34406
  subscriptionRefs.current.clear();
34541
- _optionalChain([abortControllerRef, 'access', _786 => _786.current, 'optionalAccess', _787 => _787.abort, 'call', _788 => _788()]);
34407
+ _optionalChain([abortControllerRef, 'access', _790 => _790.current, 'optionalAccess', _791 => _791.abort, 'call', _792 => _792()]);
34542
34408
  }
34543
34409
  abortControllerRef.current = new AbortController();
34544
34410
  const abort = abortControllerRef.current;
@@ -34557,7 +34423,7 @@ function useNatsDialogSubscription({
34557
34423
  const dataStr = decoder.decode(msg.data);
34558
34424
  const parsed = JSON.parse(dataStr);
34559
34425
  onEventRef.current(parsed, messageType);
34560
- } catch (e41) {
34426
+ } catch (e33) {
34561
34427
  }
34562
34428
  };
34563
34429
  topics.forEach((topic) => {
@@ -34570,7 +34436,7 @@ function useNatsDialogSubscription({
34570
34436
  });
34571
34437
  lastSubscribedDialogIdRef.current = dialogId;
34572
34438
  setIsSubscribed(true);
34573
- _optionalChain([onSubscribedRef, 'access', _789 => _789.current, 'optionalCall', _790 => _790()]);
34439
+ _optionalChain([onSubscribedRef, 'access', _793 => _793.current, 'optionalCall', _794 => _794()]);
34574
34440
  };
34575
34441
  if (isConnectedRef.current) {
34576
34442
  createSubscriptions();
@@ -34580,8 +34446,8 @@ function useNatsDialogSubscription({
34580
34446
  abort.abort();
34581
34447
  subscriptionRefs.current.forEach((sub) => {
34582
34448
  try {
34583
- _optionalChain([sub, 'optionalAccess', _791 => _791.unsubscribe, 'call', _792 => _792()]);
34584
- } catch (e42) {
34449
+ _optionalChain([sub, 'optionalAccess', _795 => _795.unsubscribe, 'call', _796 => _796()]);
34450
+ } catch (e34) {
34585
34451
  }
34586
34452
  });
34587
34453
  subscriptionRefs.current.clear();
@@ -34608,7 +34474,7 @@ function useNatsDialogSubscription({
34608
34474
  const dataStr = decoder.decode(msg.data);
34609
34475
  const parsed = JSON.parse(dataStr);
34610
34476
  onEventRef.current(parsed, messageType);
34611
- } catch (e43) {
34477
+ } catch (e35) {
34612
34478
  }
34613
34479
  };
34614
34480
  topics.forEach((topic) => {
@@ -34621,7 +34487,7 @@ function useNatsDialogSubscription({
34621
34487
  });
34622
34488
  lastSubscribedDialogIdRef.current = dialogId2;
34623
34489
  setIsSubscribed(true);
34624
- _optionalChain([onSubscribedRef, 'access', _793 => _793.current, 'optionalCall', _794 => _794()]);
34490
+ _optionalChain([onSubscribedRef, 'access', _797 => _797.current, 'optionalCall', _798 => _798()]);
34625
34491
  } else if (subscriptionRefs.current.size > 0) {
34626
34492
  setIsSubscribed(true);
34627
34493
  }
@@ -34629,10 +34495,10 @@ function useNatsDialogSubscription({
34629
34495
  return { isConnected, isSubscribed, reconnectionCount };
34630
34496
  }
34631
34497
  function buildNatsWsUrl(apiBaseUrl, options) {
34632
- const path = _optionalChain([options, 'optionalAccess', _795 => _795.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
34498
+ const path = _optionalChain([options, 'optionalAccess', _799 => _799.source]) === "dashboard" ? "/ws/nats-api" : "/ws/nats";
34633
34499
  const u = new URL(path, apiBaseUrl);
34634
34500
  u.protocol = u.protocol === "https:" ? "wss:" : "ws:";
34635
- if (_optionalChain([options, 'optionalAccess', _796 => _796.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _797 => _797.token])) {
34501
+ if (_optionalChain([options, 'optionalAccess', _800 => _800.includeAuthParam]) && _optionalChain([options, 'optionalAccess', _801 => _801.token])) {
34636
34502
  u.searchParams.set("authorization", options.token);
34637
34503
  }
34638
34504
  return u.toString();
@@ -34948,8 +34814,8 @@ var MessageSegmentAccumulator = class {
34948
34814
  type: "tool_execution",
34949
34815
  data: {
34950
34816
  ...toolData,
34951
- toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _798 => _798.data, 'access', _799 => _799.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _800 => _800.toolTitle]))),
34952
- parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _801 => _801.parameters])
34817
+ toolTitle: _nullishCoalesce(_nullishCoalesce(toolData.toolTitle, () => ( _optionalChain([existingExecuting, 'optionalAccess', _802 => _802.data, 'access', _803 => _803.toolTitle]))), () => ( _optionalChain([executingTool, 'optionalAccess', _804 => _804.toolTitle]))),
34818
+ parameters: toolData.parameters || _optionalChain([executingTool, 'optionalAccess', _805 => _805.parameters])
34953
34819
  }
34954
34820
  };
34955
34821
  if (existingIndex !== -1) {
@@ -34973,8 +34839,8 @@ var MessageSegmentAccumulator = class {
34973
34839
  if (seg.type !== "approval_batch") return seg;
34974
34840
  const hasCall = seg.data.toolCalls.some((c) => c.toolExecutionRequestId === execId);
34975
34841
  if (!hasCall) return seg;
34976
- const prev = _optionalChain([seg, 'access', _802 => _802.data, 'access', _803 => _803.executions, 'optionalAccess', _804 => _804[execId]]);
34977
- const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _805 => _805.result]), success: _optionalChain([prev, 'optionalAccess', _806 => _806.success]) };
34842
+ const prev = _optionalChain([seg, 'access', _806 => _806.data, 'access', _807 => _807.executions, 'optionalAccess', _808 => _808[execId]]);
34843
+ const next = toolData.type === "EXECUTED_TOOL" ? { status: "done", result: toolData.result, success: toolData.success } : { status: "executing", result: _optionalChain([prev, 'optionalAccess', _809 => _809.result]), success: _optionalChain([prev, 'optionalAccess', _810 => _810.success]) };
34978
34844
  matched = true;
34979
34845
  return {
34980
34846
  ...seg,
@@ -35094,10 +34960,10 @@ var MessageSegmentAccumulator = class {
35094
34960
  const segment = {
35095
34961
  type: "approval_request",
35096
34962
  data: {
35097
- command: _optionalChain([pendingApproval, 'optionalAccess', _807 => _807.command]) || "",
35098
- explanation: _optionalChain([pendingApproval, 'optionalAccess', _808 => _808.explanation]),
34963
+ command: _optionalChain([pendingApproval, 'optionalAccess', _811 => _811.command]) || "",
34964
+ explanation: _optionalChain([pendingApproval, 'optionalAccess', _812 => _812.explanation]),
35099
34965
  requestId,
35100
- approvalType: _optionalChain([pendingApproval, 'optionalAccess', _809 => _809.approvalType]) || approvalType
34966
+ approvalType: _optionalChain([pendingApproval, 'optionalAccess', _813 => _813.approvalType]) || approvalType
35101
34967
  },
35102
34968
  status,
35103
34969
  onApprove: this.callbacks.onApprove,
@@ -35285,7 +35151,7 @@ function useRealtimeChunkProcessor(options) {
35285
35151
  if (initialState.escalatedApprovals) {
35286
35152
  pendingEscalatedRef.current = new Map(initialState.escalatedApprovals);
35287
35153
  initialState.escalatedApprovals.forEach((data, requestId) => {
35288
- _optionalChain([callbacks, 'access', _810 => _810.onEscalatedApproval, 'optionalCall', _811 => _811(requestId, data)]);
35154
+ _optionalChain([callbacks, 'access', _814 => _814.onEscalatedApproval, 'optionalCall', _815 => _815(requestId, data)]);
35289
35155
  });
35290
35156
  }
35291
35157
  hasEverStreamedRef.current = true;
@@ -35307,32 +35173,32 @@ function useRealtimeChunkProcessor(options) {
35307
35173
  case "message_start":
35308
35174
  isInStreamRef.current = true;
35309
35175
  hasEverStreamedRef.current = true;
35310
- _optionalChain([callbacks, 'access', _812 => _812.onStreamStart, 'optionalCall', _813 => _813()]);
35176
+ _optionalChain([callbacks, 'access', _816 => _816.onStreamStart, 'optionalCall', _817 => _817()]);
35311
35177
  accumulator.resetSegments();
35312
35178
  break;
35313
35179
  case "message_end":
35314
35180
  isInStreamRef.current = false;
35315
- _optionalChain([callbacks, 'access', _814 => _814.onStreamEnd, 'optionalCall', _815 => _815()]);
35181
+ _optionalChain([callbacks, 'access', _818 => _818.onStreamEnd, 'optionalCall', _819 => _819()]);
35316
35182
  accumulator.resetSegments();
35317
35183
  break;
35318
35184
  case "metadata":
35319
- _optionalChain([callbacks, 'access', _816 => _816.onMetadata, 'optionalCall', _817 => _817(action)]);
35185
+ _optionalChain([callbacks, 'access', _820 => _820.onMetadata, 'optionalCall', _821 => _821(action)]);
35320
35186
  break;
35321
35187
  case "text": {
35322
35188
  const segments = accumulator.appendText(action.text);
35323
35189
  if (isInStreamRef.current || !hasEverStreamedRef.current) {
35324
- _optionalChain([callbacks, 'access', _818 => _818.onSegmentsUpdate, 'optionalCall', _819 => _819(segments)]);
35190
+ _optionalChain([callbacks, 'access', _822 => _822.onSegmentsUpdate, 'optionalCall', _823 => _823(segments)]);
35325
35191
  } else {
35326
- _optionalChain([callbacks, 'access', _820 => _820.onSegmentsUpdate, 'optionalCall', _821 => _821([{ type: "text", text: action.text }], { append: true })]);
35192
+ _optionalChain([callbacks, 'access', _824 => _824.onSegmentsUpdate, 'optionalCall', _825 => _825([{ type: "text", text: action.text }], { append: true })]);
35327
35193
  }
35328
35194
  break;
35329
35195
  }
35330
35196
  case "thinking": {
35331
35197
  const segments = accumulator.appendThinking(action.text);
35332
35198
  if (isInStreamRef.current || !hasEverStreamedRef.current) {
35333
- _optionalChain([callbacks, 'access', _822 => _822.onSegmentsUpdate, 'optionalCall', _823 => _823(segments)]);
35199
+ _optionalChain([callbacks, 'access', _826 => _826.onSegmentsUpdate, 'optionalCall', _827 => _827(segments)]);
35334
35200
  } else {
35335
- _optionalChain([callbacks, 'access', _824 => _824.onSegmentsUpdate, 'optionalCall', _825 => _825([{ type: "thinking", text: action.text }], { append: true })]);
35201
+ _optionalChain([callbacks, 'access', _828 => _828.onSegmentsUpdate, 'optionalCall', _829 => _829([{ type: "thinking", text: action.text }], { append: true })]);
35336
35202
  }
35337
35203
  break;
35338
35204
  }
@@ -35342,7 +35208,7 @@ function useRealtimeChunkProcessor(options) {
35342
35208
  break;
35343
35209
  }
35344
35210
  const segments = accumulator.addToolExecution(action.segment);
35345
- _optionalChain([callbacks, 'access', _826 => _826.onSegmentsUpdate, 'optionalCall', _827 => _827(segments)]);
35211
+ _optionalChain([callbacks, 'access', _830 => _830.onSegmentsUpdate, 'optionalCall', _831 => _831(segments)]);
35346
35212
  break;
35347
35213
  }
35348
35214
  case "approval_request": {
@@ -35356,10 +35222,10 @@ function useRealtimeChunkProcessor(options) {
35356
35222
  approvalType,
35357
35223
  status
35358
35224
  );
35359
- _optionalChain([callbacks, 'access', _828 => _828.onSegmentsUpdate, 'optionalCall', _829 => _829(segments)]);
35225
+ _optionalChain([callbacks, 'access', _832 => _832.onSegmentsUpdate, 'optionalCall', _833 => _833(segments)]);
35360
35226
  } else {
35361
35227
  pendingEscalatedRef.current.set(requestId, { command, explanation, approvalType });
35362
- _optionalChain([callbacks, 'access', _830 => _830.onEscalatedApproval, 'optionalCall', _831 => _831(requestId, { command, explanation, approvalType })]);
35228
+ _optionalChain([callbacks, 'access', _834 => _834.onEscalatedApproval, 'optionalCall', _835 => _835(requestId, { command, explanation, approvalType })]);
35363
35229
  }
35364
35230
  break;
35365
35231
  }
@@ -35371,20 +35237,20 @@ function useRealtimeChunkProcessor(options) {
35371
35237
  const summary = required ? getCommandText(required) : `Batch of ${toolCalls.length} tool calls`;
35372
35238
  pendingEscalatedRef.current.set(requestId, {
35373
35239
  command: summary,
35374
- explanation: _optionalChain([required, 'optionalAccess', _832 => _832.toolExplanation]),
35240
+ explanation: _optionalChain([required, 'optionalAccess', _836 => _836.toolExplanation]),
35375
35241
  approvalType,
35376
35242
  toolCalls
35377
35243
  });
35378
- _optionalChain([callbacks, 'access', _833 => _833.onEscalatedApproval, 'optionalCall', _834 => _834(requestId, {
35244
+ _optionalChain([callbacks, 'access', _837 => _837.onEscalatedApproval, 'optionalCall', _838 => _838(requestId, {
35379
35245
  command: summary,
35380
- explanation: _optionalChain([required, 'optionalAccess', _835 => _835.toolExplanation]),
35246
+ explanation: _optionalChain([required, 'optionalAccess', _839 => _839.toolExplanation]),
35381
35247
  approvalType
35382
35248
  })]);
35383
35249
  break;
35384
35250
  }
35385
35251
  if (batchApprovalsEnabled) {
35386
35252
  const segments2 = accumulator.addApprovalBatch(requestId, approvalType, toolCalls, status);
35387
- _optionalChain([callbacks, 'access', _836 => _836.onSegmentsUpdate, 'optionalCall', _837 => _837(segments2)]);
35253
+ _optionalChain([callbacks, 'access', _840 => _840.onSegmentsUpdate, 'optionalCall', _841 => _841(segments2)]);
35388
35254
  break;
35389
35255
  }
35390
35256
  let segments = accumulator.getSegments();
@@ -35398,7 +35264,7 @@ function useRealtimeChunkProcessor(options) {
35398
35264
  status
35399
35265
  );
35400
35266
  }
35401
- _optionalChain([callbacks, 'access', _838 => _838.onSegmentsUpdate, 'optionalCall', _839 => _839(segments)]);
35267
+ _optionalChain([callbacks, 'access', _842 => _842.onSegmentsUpdate, 'optionalCall', _843 => _843(segments)]);
35402
35268
  break;
35403
35269
  }
35404
35270
  case "approval_result": {
@@ -35407,7 +35273,7 @@ function useRealtimeChunkProcessor(options) {
35407
35273
  const status = approved ? "approved" : "rejected";
35408
35274
  if (escalatedData) {
35409
35275
  pendingEscalatedRef.current.delete(requestId);
35410
- _optionalChain([callbacks, 'access', _840 => _840.onEscalatedApprovalResult, 'optionalCall', _841 => _841(requestId, approved, {
35276
+ _optionalChain([callbacks, 'access', _844 => _844.onEscalatedApprovalResult, 'optionalCall', _845 => _845(requestId, approved, {
35411
35277
  command: escalatedData.command,
35412
35278
  explanation: escalatedData.explanation,
35413
35279
  approvalType: escalatedData.approvalType
@@ -35420,7 +35286,7 @@ function useRealtimeChunkProcessor(options) {
35420
35286
  escalatedData.toolCalls,
35421
35287
  status
35422
35288
  );
35423
- _optionalChain([callbacks, 'access', _842 => _842.onSegmentsUpdate, 'optionalCall', _843 => _843(segments)]);
35289
+ _optionalChain([callbacks, 'access', _846 => _846.onSegmentsUpdate, 'optionalCall', _847 => _847(segments)]);
35424
35290
  } else {
35425
35291
  let segments = accumulator.getSegments();
35426
35292
  for (const call of escalatedData.toolCalls) {
@@ -35433,7 +35299,7 @@ function useRealtimeChunkProcessor(options) {
35433
35299
  status
35434
35300
  );
35435
35301
  }
35436
- _optionalChain([callbacks, 'access', _844 => _844.onSegmentsUpdate, 'optionalCall', _845 => _845(segments)]);
35302
+ _optionalChain([callbacks, 'access', _848 => _848.onSegmentsUpdate, 'optionalCall', _849 => _849(segments)]);
35437
35303
  }
35438
35304
  } else {
35439
35305
  const segments = accumulator.addApprovalRequest(
@@ -35443,65 +35309,65 @@ function useRealtimeChunkProcessor(options) {
35443
35309
  escalatedData.approvalType,
35444
35310
  status
35445
35311
  );
35446
- _optionalChain([callbacks, 'access', _846 => _846.onSegmentsUpdate, 'optionalCall', _847 => _847(segments)]);
35312
+ _optionalChain([callbacks, 'access', _850 => _850.onSegmentsUpdate, 'optionalCall', _851 => _851(segments)]);
35447
35313
  }
35448
35314
  } else {
35449
35315
  accumulator.updateApprovalStatus(requestId, status);
35450
35316
  if (!callbacks.onApprovalResolved) {
35451
- _optionalChain([callbacks, 'access', _848 => _848.onSegmentsUpdate, 'optionalCall', _849 => _849(accumulator.getSegments())]);
35317
+ _optionalChain([callbacks, 'access', _852 => _852.onSegmentsUpdate, 'optionalCall', _853 => _853(accumulator.getSegments())]);
35452
35318
  }
35453
35319
  }
35454
- _optionalChain([callbacks, 'access', _850 => _850.onApprovalResolved, 'optionalCall', _851 => _851(requestId, status, approvalType)]);
35320
+ _optionalChain([callbacks, 'access', _854 => _854.onApprovalResolved, 'optionalCall', _855 => _855(requestId, status, approvalType)]);
35455
35321
  break;
35456
35322
  }
35457
35323
  case "error": {
35458
35324
  let message2;
35459
- if ("details" in action && _optionalChain([action, 'optionalAccess', _852 => _852.details])) {
35325
+ if ("details" in action && _optionalChain([action, 'optionalAccess', _856 => _856.details])) {
35460
35326
  try {
35461
- message2 = _optionalChain([JSON, 'access', _853 => _853.parse, 'call', _854 => _854(action.details), 'optionalAccess', _855 => _855.error, 'optionalAccess', _856 => _856.message]);
35462
- } catch (e44) {
35327
+ message2 = _optionalChain([JSON, 'access', _857 => _857.parse, 'call', _858 => _858(action.details), 'optionalAccess', _859 => _859.error, 'optionalAccess', _860 => _860.message]);
35328
+ } catch (e36) {
35463
35329
  message2 = action.details;
35464
35330
  }
35465
35331
  }
35466
35332
  const segments = accumulator.addError(action.error, message2);
35467
- _optionalChain([callbacks, 'access', _857 => _857.onSegmentsUpdate, 'optionalCall', _858 => _858(segments)]);
35468
- _optionalChain([callbacks, 'access', _859 => _859.onError, 'optionalCall', _860 => _860(action.error, message2)]);
35333
+ _optionalChain([callbacks, 'access', _861 => _861.onSegmentsUpdate, 'optionalCall', _862 => _862(segments)]);
35334
+ _optionalChain([callbacks, 'access', _863 => _863.onError, 'optionalCall', _864 => _864(action.error, message2)]);
35469
35335
  break;
35470
35336
  }
35471
35337
  case "system": {
35472
- _optionalChain([callbacks, 'access', _861 => _861.onSystemMessage, 'optionalCall', _862 => _862(action.text)]);
35338
+ _optionalChain([callbacks, 'access', _865 => _865.onSystemMessage, 'optionalCall', _866 => _866(action.text)]);
35473
35339
  break;
35474
35340
  }
35475
35341
  case "direct_message": {
35476
- _optionalChain([callbacks, 'access', _863 => _863.onDirectMessage, 'optionalCall', _864 => _864(action.text, {
35342
+ _optionalChain([callbacks, 'access', _867 => _867.onDirectMessage, 'optionalCall', _868 => _868(action.text, {
35477
35343
  ownerType: action.ownerType,
35478
35344
  displayName: action.displayName
35479
35345
  })]);
35480
35346
  break;
35481
35347
  }
35482
35348
  case "message_request":
35483
- _optionalChain([callbacks, 'access', _865 => _865.onUserMessage, 'optionalCall', _866 => _866(action.text, {
35349
+ _optionalChain([callbacks, 'access', _869 => _869.onUserMessage, 'optionalCall', _870 => _870(action.text, {
35484
35350
  ownerType: action.ownerType,
35485
35351
  displayName: action.displayName
35486
35352
  })]);
35487
35353
  break;
35488
35354
  case "token_usage":
35489
- _optionalChain([callbacks, 'access', _867 => _867.onTokenUsage, 'optionalCall', _868 => _868(action.data)]);
35355
+ _optionalChain([callbacks, 'access', _871 => _871.onTokenUsage, 'optionalCall', _872 => _872(action.data)]);
35490
35356
  break;
35491
35357
  case "context_compaction_start": {
35492
35358
  const standalone = !isInStreamRef.current;
35493
35359
  const segments = accumulator.addContextCompaction();
35494
- _optionalChain([callbacks, 'access', _869 => _869.onSegmentsUpdate, 'optionalCall', _870 => _870(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
35360
+ _optionalChain([callbacks, 'access', _873 => _873.onSegmentsUpdate, 'optionalCall', _874 => _874(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
35495
35361
  break;
35496
35362
  }
35497
35363
  case "context_compaction_end": {
35498
35364
  const standalone = !isInStreamRef.current;
35499
35365
  const segments = accumulator.completeContextCompaction(action.summary);
35500
- _optionalChain([callbacks, 'access', _871 => _871.onSegmentsUpdate, 'optionalCall', _872 => _872(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
35366
+ _optionalChain([callbacks, 'access', _875 => _875.onSegmentsUpdate, 'optionalCall', _876 => _876(segments, standalone ? { append: true, isCompacting: true } : void 0)]);
35501
35367
  break;
35502
35368
  }
35503
35369
  case "dialog_closed":
35504
- _optionalChain([callbacks, 'access', _873 => _873.onDialogClosed, 'optionalCall', _874 => _874()]);
35370
+ _optionalChain([callbacks, 'access', _877 => _877.onDialogClosed, 'optionalCall', _878 => _878()]);
35505
35371
  break;
35506
35372
  default:
35507
35373
  break;
@@ -35561,7 +35427,7 @@ function useSlashCommands(prefix, commandsUrl) {
35561
35427
  const next = await fetchSlashCommands(prefix, ctrl.signal, commandsUrl);
35562
35428
  if (!cancelled) setCommands(next);
35563
35429
  } catch (err) {
35564
- if (!cancelled && _optionalChain([err, 'optionalAccess', _875 => _875.name]) !== "AbortError") {
35430
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _879 => _879.name]) !== "AbortError") {
35565
35431
  console.warn("[use-slash-commands] fetch failed:", err);
35566
35432
  }
35567
35433
  } finally {
@@ -35586,7 +35452,7 @@ var CHAT_ATTACHMENT_MAX_SIZE_BYTES = 25 * 1024 * 1024;
35586
35452
  var STORAGE_CACHE_CONTROL_IMMUTABLE = "public, max-age=31536000, immutable";
35587
35453
  function uploadWithProgress(url, file, token, onProgress, signal) {
35588
35454
  return new Promise((resolve, reject) => {
35589
- if (_optionalChain([signal, 'optionalAccess', _876 => _876.aborted])) {
35455
+ if (_optionalChain([signal, 'optionalAccess', _880 => _880.aborted])) {
35590
35456
  reject(new Error("Upload cancelled"));
35591
35457
  return;
35592
35458
  }
@@ -35600,7 +35466,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
35600
35466
  xhr.removeEventListener("error", handleError);
35601
35467
  xhr.removeEventListener("abort", handleAbort);
35602
35468
  xhr.removeEventListener("timeout", handleTimeout);
35603
- _optionalChain([signal, 'optionalAccess', _877 => _877.removeEventListener, 'call', _878 => _878("abort", handleSignalAbort)]);
35469
+ _optionalChain([signal, 'optionalAccess', _881 => _881.removeEventListener, 'call', _882 => _882("abort", handleSignalAbort)]);
35604
35470
  if (xhr.readyState !== XMLHttpRequest.DONE) xhr.abort();
35605
35471
  };
35606
35472
  const handleProgress = (event) => {
@@ -35636,7 +35502,7 @@ function uploadWithProgress(url, file, token, onProgress, signal) {
35636
35502
  const handleSignalAbort = () => {
35637
35503
  xhr.abort();
35638
35504
  };
35639
- _optionalChain([signal, 'optionalAccess', _879 => _879.addEventListener, 'call', _880 => _880("abort", handleSignalAbort, { once: true })]);
35505
+ _optionalChain([signal, 'optionalAccess', _883 => _883.addEventListener, 'call', _884 => _884("abort", handleSignalAbort, { once: true })]);
35640
35506
  xhr.upload.addEventListener("progress", handleProgress);
35641
35507
  xhr.addEventListener("load", handleLoad);
35642
35508
  xhr.addEventListener("error", handleError);
@@ -35680,12 +35546,12 @@ function useChatAttachments() {
35680
35546
  try {
35681
35547
  sniffed = await _filetype.fileTypeFromBlob.call(void 0, att.file);
35682
35548
  } catch (err) {
35683
- if (_optionalChain([ctrl, 'optionalAccess', _881 => _881.signal, 'access', _882 => _882.aborted])) return;
35549
+ if (_optionalChain([ctrl, 'optionalAccess', _885 => _885.signal, 'access', _886 => _886.aborted])) return;
35684
35550
  throw new Error(
35685
35551
  `Could not read file content: ${err instanceof Error ? err.message : String(err)}`
35686
35552
  );
35687
35553
  }
35688
- if (_optionalChain([ctrl, 'optionalAccess', _883 => _883.signal, 'access', _884 => _884.aborted])) return;
35554
+ if (_optionalChain([ctrl, 'optionalAccess', _887 => _887.signal, 'access', _888 => _888.aborted])) return;
35689
35555
  if (!sniffed) {
35690
35556
  throw new Error("Unrecognized file format");
35691
35557
  }
@@ -35699,7 +35565,7 @@ function useChatAttachments() {
35699
35565
  const urlResp = await embedAuthedFetch(uploadUrlEndpoint, {
35700
35566
  method: "POST",
35701
35567
  headers: { "Content-Type": "application/json" },
35702
- signal: _optionalChain([ctrl, 'optionalAccess', _885 => _885.signal]),
35568
+ signal: _optionalChain([ctrl, 'optionalAccess', _889 => _889.signal]),
35703
35569
  body: JSON.stringify({
35704
35570
  fileName: att.file.name,
35705
35571
  // Pass the SNIFFED MIME (not `file.type`, which can be a
@@ -35725,9 +35591,9 @@ function useChatAttachments() {
35725
35591
  (pct) => {
35726
35592
  updateOne(att.id, { progress: pct });
35727
35593
  },
35728
- _optionalChain([ctrl, 'optionalAccess', _886 => _886.signal])
35594
+ _optionalChain([ctrl, 'optionalAccess', _890 => _890.signal])
35729
35595
  );
35730
- if (_optionalChain([ctrl, 'optionalAccess', _887 => _887.signal, 'access', _888 => _888.aborted])) return;
35596
+ if (_optionalChain([ctrl, 'optionalAccess', _891 => _891.signal, 'access', _892 => _892.aborted])) return;
35731
35597
  updateOne(att.id, {
35732
35598
  status: "ready",
35733
35599
  progress: 100,
@@ -35735,7 +35601,7 @@ function useChatAttachments() {
35735
35601
  viewToken: mintData.viewToken
35736
35602
  });
35737
35603
  } catch (err) {
35738
- if (_optionalChain([ctrl, 'optionalAccess', _889 => _889.signal, 'access', _890 => _890.aborted])) return;
35604
+ if (_optionalChain([ctrl, 'optionalAccess', _893 => _893.signal, 'access', _894 => _894.aborted])) return;
35739
35605
  const message2 = err instanceof Error ? err.message : String(err);
35740
35606
  updateOne(att.id, { status: "error", progress: 0, errorMessage: message2 });
35741
35607
  } finally {
@@ -35886,7 +35752,7 @@ var ANON_DEFAULTS = {
35886
35752
  function useChatIdentity() {
35887
35753
  const runtime = _chunkP5EE2VJXcjs.useRequiredChatRuntime.call(void 0, );
35888
35754
  const url = runtime.endpoints.identityUrl;
35889
- const proxyEmail = _nullishCoalesce(_optionalChain([getEmbedProxyAuth, 'call', _891 => _891(), 'optionalAccess', _892 => _892.email]), () => ( null));
35755
+ const proxyEmail = _nullishCoalesce(_optionalChain([getEmbedProxyAuth, 'call', _895 => _895(), 'optionalAccess', _896 => _896.email]), () => ( null));
35890
35756
  const [data, setData] = _react.useState.call(void 0, ANON_DEFAULTS);
35891
35757
  const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
35892
35758
  _react.useEffect.call(void 0, () => {
@@ -35963,7 +35829,7 @@ function useSSE({ useMock = true, debugMode = false, streamFn } = {}) {
35963
35829
  yield chunk;
35964
35830
  }
35965
35831
  } catch (err) {
35966
- if (_optionalChain([err, 'optionalAccess', _893 => _893.name]) === "AbortError" || ctrl.signal.aborted) {
35832
+ if (_optionalChain([err, 'optionalAccess', _897 => _897.name]) === "AbortError" || ctrl.signal.aborted) {
35967
35833
  return;
35968
35834
  }
35969
35835
  const errorMessage = err instanceof Error ? err.message : "An error occurred";
@@ -36014,7 +35880,7 @@ function useChat({
36014
35880
  const onMessagesChangeRef = _react.useRef.call(void 0, onMessagesChange);
36015
35881
  onMessagesChangeRef.current = onMessagesChange;
36016
35882
  _react.useEffect.call(void 0, () => {
36017
- _optionalChain([onMessagesChangeRef, 'access', _894 => _894.current, 'optionalCall', _895 => _895(messages)]);
35883
+ _optionalChain([onMessagesChangeRef, 'access', _898 => _898.current, 'optionalCall', _899 => _899(messages)]);
36018
35884
  }, [messages]);
36019
35885
  const {
36020
35886
  streamMessage,
@@ -36051,7 +35917,7 @@ function useChat({
36051
35917
  name: "You",
36052
35918
  content: text,
36053
35919
  timestamp: /* @__PURE__ */ new Date(),
36054
- ..._optionalChain([options, 'optionalAccess', _896 => _896.hidden]) ? { hidden: true } : {}
35920
+ ..._optionalChain([options, 'optionalAccess', _900 => _900.hidden]) ? { hidden: true } : {}
36055
35921
  };
36056
35922
  addMessage(userMessage);
36057
35923
  setIsTyping(true);
@@ -36113,7 +35979,7 @@ function useChat({
36113
35979
  currentTextSegment = "";
36114
35980
  }
36115
35981
  const seg = segment;
36116
- const proposalId = _optionalChain([seg, 'access', _897 => _897.data, 'optionalAccess', _898 => _898.requestId]);
35982
+ const proposalId = _optionalChain([seg, 'access', _901 => _901.data, 'optionalAccess', _902 => _902.requestId]);
36117
35983
  const updateApprovalMessage = (transform) => {
36118
35984
  setMessages((prev) => {
36119
35985
  for (let i = prev.length - 1; i >= 0; i--) {
@@ -36122,7 +35988,7 @@ function useChat({
36122
35988
  if (!Array.isArray(m.content)) continue;
36123
35989
  const segments = m.content;
36124
35990
  const hasMatch = segments.some(
36125
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _899 => _899.data, 'optionalAccess', _900 => _900.requestId]) === proposalId
35991
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _903 => _903.data, 'optionalAccess', _904 => _904.requestId]) === proposalId
36126
35992
  );
36127
35993
  if (!hasMatch) continue;
36128
35994
  const next = [...prev];
@@ -36164,11 +36030,11 @@ function useChat({
36164
36030
  if (!Array.isArray(m.content)) continue;
36165
36031
  const segments = m.content;
36166
36032
  const hasMatch = segments.some(
36167
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _901 => _901.data, 'optionalAccess', _902 => _902.requestId]) === decision.proposalId
36033
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _905 => _905.data, 'optionalAccess', _906 => _906.requestId]) === decision.proposalId
36168
36034
  );
36169
36035
  if (!hasMatch) continue;
36170
36036
  const flipped = segments.map(
36171
- (s) => s.type === "approval_request" && _optionalChain([s, 'access', _903 => _903.data, 'optionalAccess', _904 => _904.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
36037
+ (s) => s.type === "approval_request" && _optionalChain([s, 'access', _907 => _907.data, 'optionalAccess', _908 => _908.requestId]) === decision.proposalId ? { ...s, status: decision.action } : s
36172
36038
  );
36173
36039
  const next = [...prev];
36174
36040
  next[i] = { ...m, content: flipped };
@@ -36330,8 +36196,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36330
36196
  })),
36331
36197
  { role: "user", content: message2 }
36332
36198
  ];
36333
- const targetPath = _optionalChain([extra, 'optionalAccess', _905 => _905.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
36334
- const requestBody = _optionalChain([extra, 'optionalAccess', _906 => _906.approvalAction]) ? {
36199
+ const targetPath = _optionalChain([extra, 'optionalAccess', _909 => _909.approvalAction]) ? endpoints.approvalToolUrl : endpoints.chatStreamUrl;
36200
+ const requestBody = _optionalChain([extra, 'optionalAccess', _910 => _910.approvalAction]) ? {
36335
36201
  proposal_id: extra.approvalAction.proposalId,
36336
36202
  action: extra.approvalAction.action,
36337
36203
  messages: currentMessages.filter((m) => (m.role === "user" || m.role === "assistant") && !m.hidden).map((m) => ({
@@ -36340,8 +36206,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36340
36206
  }))
36341
36207
  } : {
36342
36208
  messages: apiMessages,
36343
- ..._optionalChain([extra, 'optionalAccess', _907 => _907.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
36344
- ..._optionalChain([extra, 'optionalAccess', _908 => _908.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
36209
+ ..._optionalChain([extra, 'optionalAccess', _911 => _911.commandOverride]) ? { commandOverride: extra.commandOverride } : {},
36210
+ ..._optionalChain([extra, 'optionalAccess', _912 => _912.pendingAttachments]) && extra.pendingAttachments.length > 0 ? { pendingAttachments: extra.pendingAttachments } : {}
36345
36211
  };
36346
36212
  const response = await embedAuthedFetch(targetPath, {
36347
36213
  method: "POST",
@@ -36351,7 +36217,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36351
36217
  if (!response.ok) {
36352
36218
  throw new Error(`Chat request failed: ${response.status}`);
36353
36219
  }
36354
- const reader = _optionalChain([response, 'access', _909 => _909.body, 'optionalAccess', _910 => _910.getReader, 'call', _911 => _911()]);
36220
+ const reader = _optionalChain([response, 'access', _913 => _913.body, 'optionalAccess', _914 => _914.getReader, 'call', _915 => _915()]);
36355
36221
  if (!reader) throw new Error("No response body");
36356
36222
  const decoder = new TextDecoder();
36357
36223
  let buffer = "";
@@ -36403,7 +36269,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36403
36269
  let meta;
36404
36270
  try {
36405
36271
  meta = JSON.parse(metaStr);
36406
- } catch (e45) {
36272
+ } catch (e37) {
36407
36273
  inText = true;
36408
36274
  setStreamingPhase("streaming");
36409
36275
  if (buffer.length > 0) {
@@ -36434,7 +36300,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36434
36300
  const toolName = typeof meta.tool_name === "string" ? meta.tool_name : void 0;
36435
36301
  const result = _nullishCoalesce(meta.result, () => ( null));
36436
36302
  const card = _nullishCoalesce(meta.card, () => ( null));
36437
- if (_optionalChain([card, 'optionalAccess', _912 => _912.ref, 'optionalAccess', _913 => _913.id]) && _optionalChain([card, 'optionalAccess', _914 => _914.type])) {
36303
+ if (_optionalChain([card, 'optionalAccess', _916 => _916.ref, 'optionalAccess', _917 => _917.id]) && _optionalChain([card, 'optionalAccess', _918 => _918.type])) {
36438
36304
  const existing = _nullishCoalesce(refsMapRef.current.get(sendIdx), () => ( {}));
36439
36305
  const key = buildChatRefKey(card.type, card.ref.id);
36440
36306
  refsMapRef.current.set(sendIdx, { ...existing, [key]: card.ref });
@@ -36447,8 +36313,8 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36447
36313
  willAutoContinue: meta.willAutoContinue === true,
36448
36314
  ...toolName ? { toolName } : {},
36449
36315
  ...result ? { result } : {},
36450
- ..._optionalChain([card, 'optionalAccess', _915 => _915.marker]) ? { marker: card.marker } : {},
36451
- ..._optionalChain([card, 'optionalAccess', _916 => _916.ref]) ? { cardRef: card.ref } : {},
36316
+ ..._optionalChain([card, 'optionalAccess', _919 => _919.marker]) ? { marker: card.marker } : {},
36317
+ ..._optionalChain([card, 'optionalAccess', _920 => _920.ref]) ? { cardRef: card.ref } : {},
36452
36318
  ...typeof meta.receiptText === "string" ? { receiptText: meta.receiptText } : {},
36453
36319
  proposalId: typeof meta.proposalId === "string" ? meta.proposalId : void 0
36454
36320
  };
@@ -36550,7 +36416,7 @@ function createDocStreamFn(source, endpoints, messagesRef, sourcesMapRef, refsMa
36550
36416
  });
36551
36417
  bumpMetaTick();
36552
36418
  }
36553
- } catch (e46) {
36419
+ } catch (e38) {
36554
36420
  }
36555
36421
  }
36556
36422
  };
@@ -36566,7 +36432,7 @@ var CHAT_STORAGE_VERSION = 1;
36566
36432
  var chatStorageKey = (source) => {
36567
36433
  const base = `mingo-chat-${source}-v${CHAT_STORAGE_VERSION}`;
36568
36434
  const auth = getEmbedProxyAuth();
36569
- if (_optionalChain([auth, 'optionalAccess', _917 => _917.email])) {
36435
+ if (_optionalChain([auth, 'optionalAccess', _921 => _921.email])) {
36570
36436
  return `${base}-u-${encodeURIComponent(auth.email.toLowerCase())}`;
36571
36437
  }
36572
36438
  return base;
@@ -36589,7 +36455,7 @@ function pruneStaleChatStorage(source) {
36589
36455
  for (const k of toRemove) {
36590
36456
  window.localStorage.removeItem(k);
36591
36457
  }
36592
- } catch (e47) {
36458
+ } catch (e39) {
36593
36459
  }
36594
36460
  }
36595
36461
  function loadPersistedChat(source) {
@@ -36606,7 +36472,7 @@ function loadPersistedChat(source) {
36606
36472
  }
36607
36473
  }
36608
36474
  return parsed;
36609
- } catch (e48) {
36475
+ } catch (e40) {
36610
36476
  return null;
36611
36477
  }
36612
36478
  }
@@ -36614,7 +36480,7 @@ function savePersistedChat(source, state) {
36614
36480
  if (typeof window === "undefined") return;
36615
36481
  try {
36616
36482
  window.localStorage.setItem(chatStorageKey(source), JSON.stringify(state));
36617
- } catch (e49) {
36483
+ } catch (e41) {
36618
36484
  }
36619
36485
  }
36620
36486
  function useSseChatAdapter(options) {
@@ -36625,7 +36491,7 @@ function useSseChatAdapter(options) {
36625
36491
  "[useSseChatAdapter] runtime.source is required \u2014 got empty string. Wire `source` on your <ChatRuntimeContext.Provider value={...}>. Hub default: <HubRuntimeProvider source={currentPlatform()}>; embedded apps: pass your own platform/tenant identifier."
36626
36492
  );
36627
36493
  }
36628
- const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _918 => _918.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
36494
+ const tableIdForDocumentType = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _922 => _922.tableIdForDocumentType]), () => ( defaultTableIdForDocumentType));
36629
36495
  const persistedRef = _react.useRef.call(void 0, null);
36630
36496
  if (persistedRef.current === null) {
36631
36497
  pruneStaleChatStorage(source);
@@ -36693,7 +36559,7 @@ function useSseChatAdapter(options) {
36693
36559
  }
36694
36560
  setCmdIdByTableId(map);
36695
36561
  }).catch((err) => {
36696
- if (!cancelled && _optionalChain([err, 'optionalAccess', _919 => _919.name]) !== "AbortError") {
36562
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _923 => _923.name]) !== "AbortError") {
36697
36563
  console.warn(
36698
36564
  "[useSseChatAdapter] failed to fetch slash commands for displayRef:",
36699
36565
  err
@@ -36746,7 +36612,7 @@ function useSseChatAdapter(options) {
36746
36612
  const lookupIdx = sendIdx >= 0 ? sendIdx : 0;
36747
36613
  sources = sourcesMapRef.current.get(lookupIdx);
36748
36614
  chatRefs = _nullishCoalesce(m.chatRefs, () => ( refsMapRef.current.get(lookupIdx)));
36749
- scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _920 => _920.current, 'access', _921 => _921.get, 'call', _922 => _922(lookupIdx), 'optionalAccess', _923 => _923.scrollAnchor]), () => ( void 0));
36615
+ scrollAnchor = _nullishCoalesce(_optionalChain([metaMapRef, 'access', _924 => _924.current, 'access', _925 => _925.get, 'call', _926 => _926(lookupIdx), 'optionalAccess', _927 => _927.scrollAnchor]), () => ( void 0));
36750
36616
  }
36751
36617
  return {
36752
36618
  id: m.id,
@@ -36794,7 +36660,7 @@ function useSseChatAdapter(options) {
36794
36660
  );
36795
36661
  return;
36796
36662
  }
36797
- const refSlug = typeof _optionalChain([reference, 'access', _924 => _924.metadata, 'optionalAccess', _925 => _925.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
36663
+ const refSlug = typeof _optionalChain([reference, 'access', _928 => _928.metadata, 'optionalAccess', _929 => _929.slug]) === "string" && reference.metadata.slug.length > 0 ? reference.metadata.slug : "";
36798
36664
  const queryValue = refSlug || sanitizeTitleForChat(reference.title) || reference.id;
36799
36665
  const escaped = queryValue.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
36800
36666
  const text = `/${cmdId} display "${escaped}"`;
@@ -36841,7 +36707,7 @@ function useSseChatAdapter(options) {
36841
36707
  if (typeof window !== "undefined") {
36842
36708
  try {
36843
36709
  window.localStorage.removeItem(chatStorageKey(source));
36844
- } catch (e50) {
36710
+ } catch (e42) {
36845
36711
  }
36846
36712
  }
36847
36713
  }, [chatClearMessages, source, bumpMetaTick]);
@@ -36866,18 +36732,18 @@ function useSseChatAdapter(options) {
36866
36732
  clearMessages,
36867
36733
  streamingPhase,
36868
36734
  /** Provider key for the lib's `<ModelDisplay>` icon. */
36869
- currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _926 => _926.provider]), () => ( null)),
36870
- currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _927 => _927.modelLabel]), () => ( null)),
36871
- currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _928 => _928.contextWindowMaxTokens]), () => ( null)),
36735
+ currentProvider: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _930 => _930.provider]), () => ( null)),
36736
+ currentModelLabel: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _931 => _931.modelLabel]), () => ( null)),
36737
+ currentContextWindowMaxTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _932 => _932.contextWindowMaxTokens]), () => ( null)),
36872
36738
  /** Input tokens (known after server's message_start frame; null until). */
36873
- currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _929 => _929.inputTokens]), () => ( null)),
36739
+ currentInputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _933 => _933.inputTokens]), () => ( null)),
36874
36740
  /** Output tokens (known only after server's trailing usage frame). */
36875
- currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _930 => _930.outputTokens]), () => ( null)),
36741
+ currentOutputTokens: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _934 => _934.outputTokens]), () => ( null)),
36876
36742
  /** Cache hit % (read / total-input × 100). null during streaming. */
36877
- currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _931 => _931.cacheHitRatePct]), () => ( null)),
36743
+ currentCacheHitRatePct: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _935 => _935.cacheHitRatePct]), () => ( null)),
36878
36744
  /** Cross-call usage breakdown (Haiku rewriter/classifier/summarizer
36879
36745
  * token counts). null until the trailing usage frame lands. */
36880
- currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _932 => _932.breakdown]), () => ( null))
36746
+ currentUsageBreakdown: _nullishCoalesce(_optionalChain([latestMeta, 'optionalAccess', _936 => _936.breakdown]), () => ( null))
36881
36747
  };
36882
36748
  }
36883
36749
 
@@ -36968,7 +36834,7 @@ function useNatsChatAdapter(config, options = {}) {
36968
36834
  });
36969
36835
  const sendMessage = _react.useCallback.call(void 0,
36970
36836
  async (text, sendOptions) => {
36971
- const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _933 => _933.hidden]), () => ( false));
36837
+ const hidden = _nullishCoalesce(_optionalChain([sendOptions, 'optionalAccess', _937 => _937.hidden]), () => ( false));
36972
36838
  setMessages((prev) => [
36973
36839
  ...prev,
36974
36840
  {
@@ -37121,12 +36987,12 @@ function useProxiedImageUrl(url) {
37121
36987
 
37122
36988
  // src/components/chat/utils/process-historical-messages.ts
37123
36989
  function getOwnerDisplayName(owner) {
37124
- if (_optionalChain([owner, 'optionalAccess', _934 => _934.type]) === OWNER_TYPE.ADMIN && owner.user) {
36990
+ if (_optionalChain([owner, 'optionalAccess', _938 => _938.type]) === OWNER_TYPE.ADMIN && owner.user) {
37125
36991
  const { firstName, lastName } = owner.user;
37126
36992
  const name = [firstName, lastName].filter(Boolean).join(" ");
37127
36993
  if (name) return name;
37128
36994
  }
37129
- return _optionalChain([owner, 'optionalAccess', _935 => _935.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
36995
+ return _optionalChain([owner, 'optionalAccess', _939 => _939.type]) === OWNER_TYPE.ADMIN ? "Admin" : "You";
37130
36996
  }
37131
36997
  function pushStandaloneMessages(processedMessages, msg, messageDataArray) {
37132
36998
  messageDataArray.forEach((data) => {
@@ -37189,10 +37055,10 @@ function processHistoricalMessages(messages, options = {}) {
37189
37055
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
37190
37056
  return;
37191
37057
  }
37192
- const isUserMessage = _optionalChain([msg, 'access', _936 => _936.owner, 'optionalAccess', _937 => _937.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _938 => _938.owner, 'optionalAccess', _939 => _939.type]) === OWNER_TYPE.ADMIN;
37058
+ const isUserMessage = _optionalChain([msg, 'access', _940 => _940.owner, 'optionalAccess', _941 => _941.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _942 => _942.owner, 'optionalAccess', _943 => _943.type]) === OWNER_TYPE.ADMIN;
37193
37059
  if (isUserMessage) {
37194
37060
  flushAssistantMessage();
37195
- const userAuthorType = _optionalChain([msg, 'access', _940 => _940.owner, 'optionalAccess', _941 => _941.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
37061
+ const userAuthorType = _optionalChain([msg, 'access', _944 => _944.owner, 'optionalAccess', _945 => _945.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
37196
37062
  messageDataArray.forEach((data) => {
37197
37063
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
37198
37064
  processedMessages.push({
@@ -37216,7 +37082,7 @@ function processHistoricalMessages(messages, options = {}) {
37216
37082
  });
37217
37083
  const nextMsg = messages[index + 1];
37218
37084
  const isLastMessage = index === messages.length - 1;
37219
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _942 => _942.owner, 'optionalAccess', _943 => _943.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _944 => _944.owner, 'optionalAccess', _945 => _945.type]) === OWNER_TYPE.ADMIN);
37085
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _946 => _946.owner, 'optionalAccess', _947 => _947.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _948 => _948.owner, 'optionalAccess', _949 => _949.type]) === OWNER_TYPE.ADMIN);
37220
37086
  if (isLastMessage || nextIsFromUser) {
37221
37087
  flushAssistantMessage();
37222
37088
  }
@@ -37326,7 +37192,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
37326
37192
  }
37327
37193
  }
37328
37194
  } else {
37329
- _optionalChain([escalatedApprovals, 'optionalAccess', _946 => _946.set, 'call', _947 => _947(data.approvalRequestId, {
37195
+ _optionalChain([escalatedApprovals, 'optionalAccess', _950 => _950.set, 'call', _951 => _951(data.approvalRequestId, {
37330
37196
  command: data.command || "",
37331
37197
  explanation: data.explanation,
37332
37198
  approvalType,
@@ -37339,8 +37205,8 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
37339
37205
  if ("approvalRequestId" in data && data.approvalRequestId) {
37340
37206
  const existingStatus = approvalStatuses[data.approvalRequestId];
37341
37207
  const status = existingStatus || (data.approved ? "approved" : "rejected");
37342
- const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _948 => _948.get, 'call', _949 => _949(data.approvalRequestId)]);
37343
- if (_optionalChain([escalatedData, 'optionalAccess', _950 => _950.toolCalls]) && escalatedData.toolCalls.length > 0) {
37208
+ const escalatedData = _optionalChain([escalatedApprovals, 'optionalAccess', _952 => _952.get, 'call', _953 => _953(data.approvalRequestId)]);
37209
+ if (_optionalChain([escalatedData, 'optionalAccess', _954 => _954.toolCalls]) && escalatedData.toolCalls.length > 0) {
37344
37210
  if (batchApprovalsEnabled) {
37345
37211
  accumulator.addApprovalBatch(
37346
37212
  data.approvalRequestId,
@@ -37360,7 +37226,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
37360
37226
  );
37361
37227
  }
37362
37228
  }
37363
- _optionalChain([escalatedApprovals, 'optionalAccess', _951 => _951.delete, 'call', _952 => _952(data.approvalRequestId)]);
37229
+ _optionalChain([escalatedApprovals, 'optionalAccess', _955 => _955.delete, 'call', _956 => _956(data.approvalRequestId)]);
37364
37230
  break;
37365
37231
  }
37366
37232
  if (escalatedData) {
@@ -37369,7 +37235,7 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
37369
37235
  explanation: escalatedData.explanation,
37370
37236
  approvalType: escalatedData.approvalType
37371
37237
  });
37372
- _optionalChain([escalatedApprovals, 'optionalAccess', _953 => _953.delete, 'call', _954 => _954(data.approvalRequestId)]);
37238
+ _optionalChain([escalatedApprovals, 'optionalAccess', _957 => _957.delete, 'call', _958 => _958(data.approvalRequestId)]);
37373
37239
  }
37374
37240
  const before = accumulator.getSegments();
37375
37241
  const after = accumulator.updateApprovalStatus(data.approvalRequestId, status);
@@ -37385,10 +37251,10 @@ function processMessageData(data, accumulator, approvalStatuses, options = {}, e
37385
37251
  case MESSAGE_TYPE.ERROR:
37386
37252
  if ("error" in data) {
37387
37253
  let message2;
37388
- if ("details" in data && _optionalChain([data, 'optionalAccess', _955 => _955.details])) {
37254
+ if ("details" in data && _optionalChain([data, 'optionalAccess', _959 => _959.details])) {
37389
37255
  try {
37390
- message2 = _optionalChain([JSON, 'access', _956 => _956.parse, 'call', _957 => _957(data.details), 'optionalAccess', _958 => _958.error, 'optionalAccess', _959 => _959.message]);
37391
- } catch (e51) {
37256
+ message2 = _optionalChain([JSON, 'access', _960 => _960.parse, 'call', _961 => _961(data.details), 'optionalAccess', _962 => _962.error, 'optionalAccess', _963 => _963.message]);
37257
+ } catch (e43) {
37392
37258
  message2 = data.details;
37393
37259
  }
37394
37260
  }
@@ -37470,10 +37336,10 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
37470
37336
  pushStandaloneMessages(processedMessages, msg, messageDataArray);
37471
37337
  return;
37472
37338
  }
37473
- const isUserMessage = _optionalChain([msg, 'access', _960 => _960.owner, 'optionalAccess', _961 => _961.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _962 => _962.owner, 'optionalAccess', _963 => _963.type]) === OWNER_TYPE.ADMIN;
37339
+ const isUserMessage = _optionalChain([msg, 'access', _964 => _964.owner, 'optionalAccess', _965 => _965.type]) === OWNER_TYPE.CLIENT || _optionalChain([msg, 'access', _966 => _966.owner, 'optionalAccess', _967 => _967.type]) === OWNER_TYPE.ADMIN;
37474
37340
  if (isUserMessage) {
37475
37341
  flushAssistantMessage();
37476
- const userAuthorType = _optionalChain([msg, 'access', _964 => _964.owner, 'optionalAccess', _965 => _965.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
37342
+ const userAuthorType = _optionalChain([msg, 'access', _968 => _968.owner, 'optionalAccess', _969 => _969.type]) === OWNER_TYPE.ADMIN ? "admin" : "user";
37477
37343
  messageDataArray.forEach((data) => {
37478
37344
  if (data.type === MESSAGE_TYPE.TEXT && "text" in data && data.text) {
37479
37345
  processedMessages.push({
@@ -37497,7 +37363,7 @@ function processHistoricalMessagesWithErrors(messages, options = {}) {
37497
37363
  });
37498
37364
  const nextMsg = messages[index + 1];
37499
37365
  const isLastMessage = index === messages.length - 1;
37500
- const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _966 => _966.owner, 'optionalAccess', _967 => _967.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _968 => _968.owner, 'optionalAccess', _969 => _969.type]) === OWNER_TYPE.ADMIN);
37366
+ const nextIsFromUser = nextMsg && (_optionalChain([nextMsg, 'access', _970 => _970.owner, 'optionalAccess', _971 => _971.type]) === OWNER_TYPE.CLIENT || _optionalChain([nextMsg, 'access', _972 => _972.owner, 'optionalAccess', _973 => _973.type]) === OWNER_TYPE.ADMIN);
37501
37367
  if (isLastMessage || nextIsFromUser) {
37502
37368
  flushAssistantMessage();
37503
37369
  }
@@ -37557,7 +37423,7 @@ function extractIncompleteMessageState(lastMessage) {
37557
37423
  break;
37558
37424
  case "approval_batch": {
37559
37425
  const allDone = !!segment.data.executions && segment.data.toolCalls.every(
37560
- (c) => _optionalChain([segment, 'access', _970 => _970.data, 'access', _971 => _971.executions, 'optionalAccess', _972 => _972[c.toolExecutionRequestId], 'optionalAccess', _973 => _973.status]) === "done"
37426
+ (c) => _optionalChain([segment, 'access', _974 => _974.data, 'access', _975 => _975.executions, 'optionalAccess', _976 => _976[c.toolExecutionRequestId], 'optionalAccess', _977 => _977.status]) === "done"
37561
37427
  );
37562
37428
  if (segment.status !== "rejected" && !allDone) {
37563
37429
  hasIncompleteState = true;
@@ -37601,7 +37467,7 @@ function chatChipClass({ tone, density = "chip", extra }) {
37601
37467
 
37602
37468
  // node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
37603
37469
 
37604
- var useLayoutEffect22 = _optionalChain([globalThis, 'optionalAccess', _974 => _974.document]) ? React108.useLayoutEffect : () => {
37470
+ var useLayoutEffect22 = _optionalChain([globalThis, 'optionalAccess', _978 => _978.document]) ? React108.useLayoutEffect : () => {
37605
37471
  };
37606
37472
 
37607
37473
  // node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
@@ -37639,7 +37505,7 @@ function useControllableState({
37639
37505
  if (isControlled) {
37640
37506
  const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
37641
37507
  if (value2 !== prop) {
37642
- _optionalChain([onChangeRef, 'access', _975 => _975.current, 'optionalCall', _976 => _976(value2)]);
37508
+ _optionalChain([onChangeRef, 'access', _979 => _979.current, 'optionalCall', _980 => _980(value2)]);
37643
37509
  }
37644
37510
  } else {
37645
37511
  setUncontrolledProp(nextValue);
@@ -37661,7 +37527,7 @@ function useUncontrolledState({
37661
37527
  }, [onChange]);
37662
37528
  React109.useEffect(() => {
37663
37529
  if (prevValueRef.current !== value) {
37664
- _optionalChain([onChangeRef, 'access', _977 => _977.current, 'optionalCall', _978 => _978(value)]);
37530
+ _optionalChain([onChangeRef, 'access', _981 => _981.current, 'optionalCall', _982 => _982(value)]);
37665
37531
  prevValueRef.current = value;
37666
37532
  }
37667
37533
  }, [value, prevValueRef]);
@@ -38085,7 +37951,7 @@ function EmbeddableChatInner({
38085
37951
  setCommandsById(map);
38086
37952
  setCommandsLoaded(true);
38087
37953
  }).catch((err) => {
38088
- if (!cancelled && _optionalChain([err, 'optionalAccess', _979 => _979.name]) !== "AbortError") {
37954
+ if (!cancelled && _optionalChain([err, 'optionalAccess', _983 => _983.name]) !== "AbortError") {
38089
37955
  console.warn("[embeddable-chat] failed to fetch slash commands:", err);
38090
37956
  setCommandsLoaded(true);
38091
37957
  }
@@ -38109,7 +37975,7 @@ function EmbeddableChatInner({
38109
37975
  }),
38110
37976
  [commandsUrl]
38111
37977
  );
38112
- const userName = _optionalChain([identityUser, 'optionalAccess', _980 => _980.firstName, 'optionalAccess', _981 => _981.trim, 'call', _982 => _982()]) || _optionalChain([identityUser, 'optionalAccess', _983 => _983.name, 'optionalAccess', _984 => _984.split, 'call', _985 => _985(" "), 'access', _986 => _986[0], 'optionalAccess', _987 => _987.trim, 'call', _988 => _988()]) || void 0;
37978
+ const userName = _optionalChain([identityUser, 'optionalAccess', _984 => _984.firstName, 'optionalAccess', _985 => _985.trim, 'call', _986 => _986()]) || _optionalChain([identityUser, 'optionalAccess', _987 => _987.name, 'optionalAccess', _988 => _988.split, 'call', _989 => _989(" "), 'access', _990 => _990[0], 'optionalAccess', _991 => _991.trim, 'call', _992 => _992()]) || void 0;
38113
37979
  const effectiveModes = _react.useMemo.call(void 0, () => {
38114
37980
  if (modes) return modes;
38115
37981
  const guideOptions = tableIdForDocumentType ? { tableIdForDocumentType } : {};
@@ -38123,7 +37989,7 @@ function EmbeddableChatInner({
38123
37989
  if (controlledActiveMode === void 0) {
38124
37990
  setUncontrolledActiveMode(next);
38125
37991
  }
38126
- _optionalChain([onActiveModeChange, 'optionalCall', _989 => _989(next)]);
37992
+ _optionalChain([onActiveModeChange, 'optionalCall', _993 => _993(next)]);
38127
37993
  },
38128
37994
  [controlledActiveMode, onActiveModeChange]
38129
37995
  );
@@ -38243,9 +38109,9 @@ function EmbeddableChatInner({
38243
38109
  const lastAssistantMsg = [...rawMessages].reverse().find((m) => m.role === "assistant");
38244
38110
  const lastSources = _react.useMemo.call(void 0, () => {
38245
38111
  if (chatLoading) return void 0;
38246
- const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _990 => _990.sources]);
38112
+ const sources = _optionalChain([lastAssistantMsg, 'optionalAccess', _994 => _994.sources]);
38247
38113
  if (!sources || sources.length === 0) return void 0;
38248
- const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _991 => _991.content]) || "";
38114
+ const content = _optionalChain([lastAssistantMsg, 'optionalAccess', _995 => _995.content]) || "";
38249
38115
  const citationOrder = [...content.matchAll(/\[(\d+)\]/g)].map(
38250
38116
  (m) => parseInt(m[1], 10)
38251
38117
  );
@@ -39221,4 +39087,4 @@ function EmbeddableChatInner({
39221
39087
 
39222
39088
 
39223
39089
  exports.Label = Label; exports.AllowedDomainsInput = AllowedDomainsInput; exports.HiddenTagsPopup = HiddenTagsPopup; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Autocomplete = Autocomplete; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.Select = Select; exports.SelectGroup = SelectGroup; exports.SelectValue = SelectValue; exports.SelectTrigger = SelectTrigger; exports.SelectScrollUpButton = SelectScrollUpButton; exports.SelectScrollDownButton = SelectScrollDownButton; exports.SelectContent = SelectContent; exports.SelectLabel = SelectLabel; exports.SelectItem = SelectItem; exports.SelectSeparator = SelectSeparator; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.ProgressBar = ProgressBar; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.InteractiveCard = InteractiveCard; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.Switch = Switch; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.Textarea = Textarea; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.ImageGalleryModal = ImageGalleryModal; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.Modal2 = Modal2; exports.ModalContent2 = ModalContent2; exports.ModalHeader2 = ModalHeader2; exports.ModalTitle2 = ModalTitle2; exports.ModalFooter2 = ModalFooter2; exports.Separator = Separator2; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Drawer = Drawer; exports.DrawerTrigger = DrawerTrigger; exports.DrawerClose = DrawerClose; exports.DrawerPortal = DrawerPortal; exports.DrawerOverlay = DrawerOverlay; exports.DrawerContent = DrawerContent; exports.DrawerHeader = DrawerHeader; exports.DrawerTitle = DrawerTitle; exports.DrawerDescription = DrawerDescription; exports.DrawerBody = DrawerBody; exports.DrawerFooter = DrawerFooter; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.Progress = Progress; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.StatusIndicator = StatusIndicator; exports.HoverDropdown = HoverDropdown; exports.ApprovalRequestMessage = ApprovalRequestMessage; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.ContextCompactionDisplay = ContextCompactionDisplay; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.ThinkingDisplay = ThinkingDisplay; exports.ErrorMessageDisplay = ErrorMessageDisplay; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.SquareAvatar = SquareAvatar; exports.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.TicketStatusTag = TicketStatusTag; exports.ChatContainer = ChatContainer; exports.ChatHeader = ChatHeader; exports.ChatContent = ChatContent; exports.ChatFooter = ChatFooter; exports.ChatTypingIndicator = ChatTypingIndicator; exports.MingoOnboardingCard = MingoOnboardingCard; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.BlockCard = BlockCard; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.MESSAGE_TYPE = MESSAGE_TYPE; exports.SCROLL_ANCHOR = SCROLL_ANCHOR; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.MingoOnboardingCardSkeleton = MingoOnboardingCardSkeleton; exports.MingoOnboardingListSkeleton = MingoOnboardingListSkeleton; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveExternalNavigation = resolveExternalNavigation; exports.handleChatNavClick = handleChatNavClick; exports.NavLinkAnchorViaRuntime = NavLinkAnchorViaRuntime; exports.SourceActionButton = SourceActionButton; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX = CHAT_ATTACHMENT_VIEW_URL_PREFIX; exports.CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM = CHAT_ATTACHMENT_VIEW_TOKEN_QUERY_PARAM; exports.ANTHROPIC_SUPPORTED_IMAGE_MIME = ANTHROPIC_SUPPORTED_IMAGE_MIME; exports.buildChatAttachmentViewUrl = buildChatAttachmentViewUrl; exports.escapeMarkdownInline = escapeMarkdownInline; exports.formatChatAttachmentMarkdownForBubble = formatChatAttachmentMarkdownForBubble; exports.CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED = CHAT_ATTACHMENT_VIEW_URL_PREFIX_REGEX_ESCAPED; exports.CHAT_ATTACHMENT_MARKDOWN_PATTERN = CHAT_ATTACHMENT_MARKDOWN_PATTERN; exports.stripChatAttachmentMarkdown = stripChatAttachmentMarkdown; exports.CHAT_ATTACHMENT_MIME_TYPES = CHAT_ATTACHMENT_MIME_TYPES; exports.CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER = CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER; exports.ChatAttachmentAddButton = ChatAttachmentAddButton; exports.ChatAttachmentChipStrip = ChatAttachmentChipStrip; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.FlamingoLogo = FlamingoLogo; exports.OpenmspLogo = OpenmspLogo; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.fetchPriorityProp = fetchPriorityProp; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.ChatVideoEntityCard = ChatVideoEntityCard; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.RoadmapVoteButton = RoadmapVoteButton; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.getStatusColorScheme = getStatusColorScheme; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.GitHubActivityCard = GitHubActivityCard; exports.GitHubActivityCardSkeleton = GitHubActivityCardSkeleton; exports.SlackMessageCard = SlackMessageCard; exports.SlackMessageCardSkeleton = SlackMessageCardSkeleton; exports.HubspotTicketCard = HubspotTicketCard; exports.HubspotTicketCardSkeleton = HubspotTicketCardSkeleton; exports.DataRoomDocCard = DataRoomDocCard; exports.DataRoomDocCardSkeleton = DataRoomDocCardSkeleton; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.CampaignCardAdmin = CampaignCardAdmin; exports.CampaignCardAdminSkeleton = CampaignCardAdminSkeleton; exports.GenericEntityCard = GenericEntityCard; exports.GenericEntityCardSkeleton = GenericEntityCardSkeleton; exports.useChatCardItem = useChatCardItem; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.ChatCardLoader = ChatCardLoader; exports.renderChatInlineEntityCard = renderChatInlineEntityCard; exports.CHAT_TYPE = CHAT_TYPE; exports.OWNER_TYPE = OWNER_TYPE; exports.MESSAGE_ROLE = MESSAGE_ROLE; exports.ASSISTANT_TYPE = ASSISTANT_TYPE; exports.AUTHOR_TYPE = AUTHOR_TYPE; exports.APPROVAL_STATUS = APPROVAL_STATUS; exports.CONNECTION_STATUS = CONNECTION_STATUS; exports.buildChatRefKey = buildChatRefKey; exports.isStructuredContent = isStructuredContent; exports.normalizeContent = normalizeContent2; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.transformEventToProgram = transformEventToProgram; exports.transformPodcastToProgram = transformPodcastToProgram; exports.transformWebinarToProgram = transformWebinarToProgram; exports.useChunkCatchup = useChunkCatchup; exports.useJetStreamDialogSubscription = useJetStreamDialogSubscription; exports.useNatsDialogSubscription = useNatsDialogSubscription; exports.buildNatsWsUrl = buildNatsWsUrl; exports.parseChunkToAction = parseChunkToAction; exports.isControlChunk = isControlChunk; exports.isErrorChunk = isErrorChunk; exports.isMetadataChunk = isMetadataChunk; exports.extractTextFromChunk = extractTextFromChunk; exports.MessageSegmentAccumulator = MessageSegmentAccumulator; exports.createMessageSegmentAccumulator = createMessageSegmentAccumulator; exports.useRealtimeChunkProcessor = useRealtimeChunkProcessor; exports.fetchSlashCommands = fetchSlashCommands; exports.useSlashCommands = useSlashCommands; exports.getAppType = getAppType; exports.getEmbedProxyAuth = getEmbedProxyAuth; exports.getPersistedProxyEmail = getPersistedProxyEmail; exports.setEmbedProxyAuth = setEmbedProxyAuth; exports.clearEmbedProxyAuth = clearEmbedProxyAuth; exports.applyProxyAuth = applyProxyAuth; exports.embedAuthedFetch = embedAuthedFetch; exports.useChatAttachments = useChatAttachments; exports.useChatAttachmentImageGallery = useChatAttachmentImageGallery; exports.useChatIdentity = useChatIdentity; exports.useCloseOnNavigation = useCloseOnNavigation; exports.useSSE = useSSE; exports.useChat = useChat; exports.SCROLL_ANCHOR_WIRE_KEY = SCROLL_ANCHOR_WIRE_KEY; exports.parseScrollAnchor = parseScrollAnchor; exports.AUTO_CONTINUATION_DIRECTIVE_PREFIX = AUTO_CONTINUATION_DIRECTIVE_PREFIX; exports.buildAutoContinuationDirective = buildAutoContinuationDirective; exports.flattenAssistantContent = flattenAssistantContent; exports.parseWireCommandOverride = parseWireCommandOverride; exports.sanitizeTitleForChat = sanitizeTitleForChat; exports.formatSingularLookupInvocation = formatSingularLookupInvocation; exports.extractEntityIdFilter = extractEntityIdFilter; exports.buildDiscussAddendum = buildDiscussAddendum; exports.useSseChatAdapter = useSseChatAdapter; exports.useNatsChatAdapter = useNatsChatAdapter; exports.useUnifiedChat = useUnifiedChat; exports.useProxiedImageUrl = useProxiedImageUrl; exports.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.CHIP_ACTION_BUTTON_CLASS = CHIP_ACTION_BUTTON_CLASS; exports.chatChipClass = chatChipClass; exports.clickupTaskUrl = clickupTaskUrl; exports.EmbeddableChat = EmbeddableChat; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.BackButton = BackButton; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.ListPageLayout = ListPageLayout; exports.EntityImage = EntityImage; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.delay = delay; exports.generateRandomString = generateRandomString; exports.truncateString = truncateString; exports.deepClone = deepClone; exports.getSlackCommunityJoinUrl = getSlackCommunityJoinUrl; exports.OS_PLATFORMS = OS_PLATFORMS; exports.DEFAULT_OS_PLATFORM = DEFAULT_OS_PLATFORM; exports.isValidEmailDomain = isValidEmailDomain; exports.validateEmailDomain = validateEmailDomain; exports.validateEmailDomainList = validateEmailDomainList; exports.cleanEmailDomain = cleanEmailDomain; exports.getConfidenceColorClass = getConfidenceColorClass; exports.getConfidenceLevel = getConfidenceLevel; exports.getConfidenceBorderClass = getConfidenceBorderClass; exports.getConfidenceTextClass = getConfidenceTextClass; exports.getConfidenceBgClass = getConfidenceBgClass; exports.getConfidenceLabel = getConfidenceLabel; exports.normalizeToolType = normalizeToolType; exports.normalizeToolTypeWithFallback = normalizeToolTypeWithFallback; exports.toToolLabel = toToolLabel; exports.isValidToolType = isValidToolType; exports.getToolTypeAliases = getToolTypeAliases; exports.getToolLabel = getToolLabel; exports.ShellTypeValues = ShellTypeValues; exports.SHELL_TYPES = SHELL_TYPES; exports.shellLabels = shellLabels; exports.getShellLabel = getShellLabel; exports.getShellIcon = getShellIcon; exports.OSTypeValues = OSTypeValues; exports.OS_TYPES = OS_TYPES; exports.osLabels = osLabels; exports.normalizeOSType = normalizeOSType; exports.getOSLabel = getOSLabel; exports.getOSIcon = getOSIcon; exports.getOSTypeDefinition = getOSTypeDefinition; exports.getOSPlatformId = getOSPlatformId; exports.isOSPlatform = isOSPlatform; exports.getCountryPhoneData = getCountryPhoneData; exports.getCountryByCode = getCountryByCode; exports.validatePhoneNumber = validatePhoneNumber; exports.formatPhoneE164 = formatPhoneE164; exports.GENERIC_EMAIL_DOMAINS = GENERIC_EMAIL_DOMAINS; exports.extractDomainFromEmail = extractDomainFromEmail; exports.normalizeDomain = normalizeDomain; exports.isGenericDomain = isGenericDomain; exports.hasGenericEmailDomain = hasGenericEmailDomain; exports.isGenericWebsiteDomain = isGenericWebsiteDomain; exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.hexToRgb = hexToRgb; exports.getContrastRatio = getContrastRatio; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.formatRelativeTime = formatRelativeTime; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.readLeadingDecisionFrame = readLeadingDecisionFrame; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TASK_TYPE_LABELS = TASK_TYPE_LABELS; exports.TASK_TYPE_TEXT_COLORS = TASK_TYPE_TEXT_COLORS; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.ROADMAP_STATUS_OPTIONS = ROADMAP_STATUS_OPTIONS; exports.DELIVERY_TASK_TYPE_OPTIONS = DELIVERY_TASK_TYPE_OPTIONS; exports.TICKET_STATUS_OPTIONS = TICKET_STATUS_OPTIONS; exports.OPENFRAME_DEV_SECTIONS = OPENFRAME_DEV_SECTIONS; exports.scrollElementIntoView = scrollElementIntoView; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.ChevronButton = ChevronButton; exports.CircularProgress = CircularProgress; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon2; exports.XCircleIcon = XCircleIcon; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.TruncateText = TruncateText; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.Slider = Slider; exports.TabSelector = TabSelector; exports.TitleContentBlock = TitleContentBlock; exports.TooltipProvider = TooltipProvider; exports.Tooltip = Tooltip; exports.TooltipTrigger = TooltipTrigger; exports.TooltipContent = TooltipContent; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.init_pagination = init_pagination; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.ErrorBoundary = ErrorBoundary; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformFilterComponent = PlatformFilterComponent; exports.PushButtonSelector = PushButtonSelector; exports.ReleaseMediaManager = ReleaseMediaManager; exports.SelectButton = SelectButton; exports.SEOEditorPreview = SEOEditorPreview; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.VideoSourceSelector = VideoSourceSelector; exports.ConfidenceBadge = ConfidenceBadge; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses2; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.DataTableHeader = DataTableHeader; exports.DataTableEmpty = DataTableEmpty; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP2; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE2; exports.DataTableSkeleton = DataTableSkeleton; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.AssigneeDropdown = AssigneeDropdown; exports.TicketDetailSection = TicketDetailSection; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.Header = Header2; exports.HeaderSkeleton = HeaderSkeleton; exports.ClientOnlyHeader = ClientOnlyHeader; exports.MobileNavPanel = MobileNavPanel; exports.SlidingSidebar = SlidingSidebar; exports.StickySectionNav = StickySectionNav; exports.useSectionNavigation = useSectionNavigation; exports.NavigationSidebar = NavigationSidebar; exports.HeaderButton = HeaderButton; exports.HeaderGlobalSearch = HeaderGlobalSearch; exports.HeaderOrganizationFilter = HeaderOrganizationFilter; exports.AppHeader = AppHeader; exports.MobileBurgerMenu = MobileBurgerMenu; exports.AppLayout = AppLayout; exports.SoftwareInfo = SoftwareInfo; exports.SoftwareSourceBadge = SoftwareSourceBadge; exports.CveLink = CveLink; exports.ToolBadge = ToolBadge; exports.ShellTypeBadge = ShellTypeBadge; exports.ScriptInfoSection = ScriptInfoSection; exports.ScriptArguments = ScriptArguments; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.assets = assets;
39224
- //# sourceMappingURL=chunk-WI76ZUBE.cjs.map
39090
+ //# sourceMappingURL=chunk-ZDF6F7ED.cjs.map