@flamingo-stack/openframe-frontend-core 0.0.216 → 0.0.217-snapshot.20260601003634

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 (103) hide show
  1. package/dist/{chunk-SMCG2CCC.cjs → chunk-6DCKL73F.cjs} +24 -24
  2. package/dist/{chunk-SMCG2CCC.cjs.map → chunk-6DCKL73F.cjs.map} +1 -1
  3. package/dist/{chunk-QTKU6ULP.js → chunk-BVFRD34B.js} +2 -2
  4. package/dist/{chunk-CDLYRFDE.js → chunk-ENBGG2K2.js} +3767 -3610
  5. package/dist/chunk-ENBGG2K2.js.map +1 -0
  6. package/dist/{chunk-K4DFAVSO.cjs → chunk-G2HHSZ3S.cjs} +9 -9
  7. package/dist/{chunk-K4DFAVSO.cjs.map → chunk-G2HHSZ3S.cjs.map} +1 -1
  8. package/dist/{chunk-2V4SACHE.js → chunk-L6IBKPVM.js} +2 -2
  9. package/dist/{chunk-572WQWIX.cjs → chunk-MVQ3OODK.cjs} +9 -9
  10. package/dist/{chunk-572WQWIX.cjs.map → chunk-MVQ3OODK.cjs.map} +1 -1
  11. package/dist/{chunk-GVNQAGXB.js → chunk-N5IKPYRL.js} +3 -81
  12. package/dist/chunk-N5IKPYRL.js.map +1 -0
  13. package/dist/{chunk-VC3ND5RB.js → chunk-SWZUZYWR.js} +2 -2
  14. package/dist/{chunk-IH76P5R6.cjs → chunk-TYIBMDUZ.cjs} +8 -86
  15. package/dist/chunk-TYIBMDUZ.cjs.map +1 -0
  16. package/dist/{chunk-ZGTDUPTW.cjs → chunk-YWDC5BXM.cjs} +382 -225
  17. package/dist/chunk-YWDC5BXM.cjs.map +1 -0
  18. package/dist/components/chat/chat-attachment-bar.d.ts +13 -2
  19. package/dist/components/chat/chat-attachment-bar.d.ts.map +1 -1
  20. package/dist/components/chat/chat-input.d.ts.map +1 -1
  21. package/dist/components/chat/chat-message-row.d.ts +25 -0
  22. package/dist/components/chat/chat-message-row.d.ts.map +1 -0
  23. package/dist/components/chat/index.cjs +6 -2
  24. package/dist/components/chat/index.cjs.map +1 -1
  25. package/dist/components/chat/index.d.ts +1 -0
  26. package/dist/components/chat/index.d.ts.map +1 -1
  27. package/dist/components/chat/index.js +5 -1
  28. package/dist/components/chat/types/component.types.d.ts +8 -1
  29. package/dist/components/chat/types/component.types.d.ts.map +1 -1
  30. package/dist/components/contact/index.cjs +3 -3
  31. package/dist/components/contact/index.js +2 -2
  32. package/dist/components/features/index.cjs +2 -2
  33. package/dist/components/features/index.js +1 -1
  34. package/dist/components/form.d.ts +1 -1
  35. package/dist/components/form.d.ts.map +1 -1
  36. package/dist/components/index.cjs +56 -52
  37. package/dist/components/index.cjs.map +1 -1
  38. package/dist/components/index.js +9 -5
  39. package/dist/components/index.js.map +1 -1
  40. package/dist/components/navigation/index.cjs +2 -2
  41. package/dist/components/navigation/index.js +1 -1
  42. package/dist/components/onboarding-guides/index.cjs +18 -18
  43. package/dist/components/onboarding-guides/index.js +3 -3
  44. package/dist/components/shared/dev-section/dev-card-row.d.ts +5 -45
  45. package/dist/components/shared/dev-section/dev-card-row.d.ts.map +1 -1
  46. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  47. package/dist/components/tickets/help-center-card.d.ts.map +1 -1
  48. package/dist/components/tickets/help-center-list.d.ts.map +1 -1
  49. package/dist/components/tickets/hooks/use-ticket-engagements.d.ts +9 -1
  50. package/dist/components/tickets/hooks/use-ticket-engagements.d.ts.map +1 -1
  51. package/dist/components/tickets/hooks/use-tickets-list.d.ts +7 -0
  52. package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
  53. package/dist/components/tickets/index.cjs +309 -256
  54. package/dist/components/tickets/index.cjs.map +1 -1
  55. package/dist/components/tickets/index.d.ts +1 -0
  56. package/dist/components/tickets/index.d.ts.map +1 -1
  57. package/dist/components/tickets/index.js +376 -323
  58. package/dist/components/tickets/index.js.map +1 -1
  59. package/dist/components/tickets/ticket-detail-drawer.d.ts.map +1 -1
  60. package/dist/components/tickets/ticket-reply-composer.d.ts +33 -0
  61. package/dist/components/tickets/ticket-reply-composer.d.ts.map +1 -0
  62. package/dist/components/tickets/types.d.ts +13 -0
  63. package/dist/components/tickets/types.d.ts.map +1 -1
  64. package/dist/components/ui/index.cjs +6 -2
  65. package/dist/components/ui/index.cjs.map +1 -1
  66. package/dist/components/ui/index.js +5 -1
  67. package/dist/components/ui/ticket-attachments-list.d.ts +5 -1
  68. package/dist/components/ui/ticket-attachments-list.d.ts.map +1 -1
  69. package/dist/index.cjs +6 -2
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.js +5 -1
  72. package/dist/utils/index.cjs +59 -4
  73. package/dist/utils/index.cjs.map +1 -1
  74. package/dist/utils/index.js +59 -4
  75. package/dist/utils/index.js.map +1 -1
  76. package/dist/utils/scroll-into-view.d.ts +43 -48
  77. package/dist/utils/scroll-into-view.d.ts.map +1 -1
  78. package/package.json +1 -1
  79. package/src/components/chat/chat-attachment-bar.tsx +58 -22
  80. package/src/components/chat/chat-input.tsx +68 -29
  81. package/src/components/chat/chat-message-row.tsx +124 -0
  82. package/src/components/chat/index.ts +1 -0
  83. package/src/components/chat/types/component.types.ts +8 -1
  84. package/src/components/shared/dev-section/dev-card-row.tsx +5 -183
  85. package/src/components/shared/legal-document/use-legal-docs.ts +5 -1
  86. package/src/components/tickets/help-center-card.tsx +26 -29
  87. package/src/components/tickets/help-center-list.tsx +57 -10
  88. package/src/components/tickets/hooks/use-ticket-engagements.ts +41 -5
  89. package/src/components/tickets/hooks/use-tickets-list.ts +13 -0
  90. package/src/components/tickets/index.ts +4 -0
  91. package/src/components/tickets/ticket-detail-drawer.tsx +144 -200
  92. package/src/components/tickets/ticket-reply-composer.tsx +195 -0
  93. package/src/components/tickets/types.ts +14 -0
  94. package/src/components/ui/ticket-attachments-list.tsx +26 -8
  95. package/src/styles/app-globals.css +13 -0
  96. package/src/utils/scroll-into-view.ts +127 -53
  97. package/dist/chunk-CDLYRFDE.js.map +0 -1
  98. package/dist/chunk-GVNQAGXB.js.map +0 -1
  99. package/dist/chunk-IH76P5R6.cjs.map +0 -1
  100. package/dist/chunk-ZGTDUPTW.cjs.map +0 -1
  101. /package/dist/{chunk-QTKU6ULP.js.map → chunk-BVFRD34B.js.map} +0 -0
  102. /package/dist/{chunk-2V4SACHE.js.map → chunk-L6IBKPVM.js.map} +0 -0
  103. /package/dist/{chunk-VC3ND5RB.js.map → chunk-SWZUZYWR.js.map} +0 -0
@@ -2879,6 +2879,11 @@ var ChatInput = _react.forwardRef.call(void 0,
2879
2879
  disabled = false,
2880
2880
  autoFocus = false,
2881
2881
  fullWidth = false,
2882
+ // Composer extension — pulled out so it never falls through to the
2883
+ // underlying <textarea> as an unknown DOM attribute. `allowEmptySend`
2884
+ // lets surfaces that attach files (e.g. the ticket reply composer) send
2885
+ // with empty text once an attachment is ready.
2886
+ allowEmptySend = false,
2882
2887
  ...inputProps
2883
2888
  } = rest;
2884
2889
  const [value, setValue] = _react.useState.call(void 0, "");
@@ -2890,7 +2895,7 @@ var ChatInput = _react.forwardRef.call(void 0,
2890
2895
  if (disabled) return;
2891
2896
  const el = textareaRef.current;
2892
2897
  if (!el || el.disabled) return;
2893
- el.focus();
2898
+ el.focus({ preventScroll: true });
2894
2899
  }, [disabled]);
2895
2900
  _react.useEffect.call(void 0, () => {
2896
2901
  if (autoFocus) {
@@ -2899,6 +2904,26 @@ var ChatInput = _react.forwardRef.call(void 0,
2899
2904
  }, [autoFocus, focusTextarea]);
2900
2905
  const valueRef = _react.useRef.call(void 0, value);
2901
2906
  valueRef.current = value;
2907
+ const fire = _react.useCallback.call(void 0,
2908
+ (message2) => {
2909
+ const can = (message2.length > 0 || allowEmptySend) && !sending && !disabled;
2910
+ if (!can || !onSend) return;
2911
+ const result = onSend(message2);
2912
+ const done = () => {
2913
+ setValue("");
2914
+ shouldRefocusRef.current = true;
2915
+ focusTextarea();
2916
+ };
2917
+ if (result instanceof Promise) {
2918
+ void result.then((ok) => {
2919
+ if (ok !== false) done();
2920
+ });
2921
+ } else if (result !== false) {
2922
+ done();
2923
+ }
2924
+ },
2925
+ [allowEmptySend, sending, disabled, onSend, focusTextarea]
2926
+ );
2902
2927
  _react.useImperativeHandle.call(void 0,
2903
2928
  ref,
2904
2929
  () => ({
@@ -2910,7 +2935,7 @@ var ChatInput = _react.forwardRef.call(void 0,
2910
2935
  requestAnimationFrame(() => {
2911
2936
  const el = textareaRef.current;
2912
2937
  if (!el || disabled || el.disabled) return;
2913
- el.focus();
2938
+ el.focus({ preventScroll: true });
2914
2939
  el.setSelectionRange(next.length, next.length);
2915
2940
  });
2916
2941
  },
@@ -2920,36 +2945,25 @@ var ChatInput = _react.forwardRef.call(void 0,
2920
2945
  requestAnimationFrame(() => {
2921
2946
  const el = textareaRef.current;
2922
2947
  if (!el) return;
2923
- el.focus();
2948
+ el.focus({ preventScroll: true });
2924
2949
  el.setSelectionRange(clamped, clamped);
2925
2950
  });
2926
2951
  },
2927
2952
  submit: (next) => {
2928
- if (sending || disabled || !onSend) return;
2929
- const trimmed = next.trim();
2930
- if (!trimmed) return;
2931
- onSend(trimmed);
2932
- setValue("");
2933
- shouldRefocusRef.current = true;
2934
- focusTextarea();
2953
+ fire(next.trim());
2935
2954
  },
2936
2955
  getValue: () => valueRef.current
2937
2956
  }),
2938
- // `valueRef` and `shouldRefocusRef` are stable refs. `sending` /
2939
- // `disabled` / `onSend` change session-rarely; including them here
2940
- // is correct for closure freshness and rebuilds < 5 times per chat
2941
- // session an order of magnitude fewer than per-keystroke.
2942
- [focusTextarea, sending, disabled, onSend]
2957
+ // `valueRef` and `shouldRefocusRef` are stable refs. `disabled` (read by
2958
+ // `setValue`'s rAF guard) and `focusTextarea` change session-rarely; `fire`
2959
+ // is memoized on its gate inputs (`sending`/`onSend`/`allowEmptySend` all
2960
+ // live inside it), so the handle rebuilds only when those change — still
2961
+ // far fewer than per-keystroke.
2962
+ [focusTextarea, disabled, fire]
2943
2963
  );
2944
2964
  const handleSubmit = _react.useCallback.call(void 0, () => {
2945
- const message2 = value.trim();
2946
- if (message2 && !sending && !disabled && onSend) {
2947
- onSend(message2);
2948
- setValue("");
2949
- shouldRefocusRef.current = true;
2950
- focusTextarea();
2951
- }
2952
- }, [value, sending, disabled, onSend, focusTextarea]);
2965
+ fire(value.trim());
2966
+ }, [fire, value]);
2953
2967
  const slashMatch = _react.useMemo.call(void 0,
2954
2968
  () => slashCommands ? value.match(SLASH_INPUT_TRIGGER) : null,
2955
2969
  [value, slashCommands]
@@ -2991,7 +3005,7 @@ var ChatInput = _react.forwardRef.call(void 0,
2991
3005
  requestAnimationFrame(() => {
2992
3006
  const el = textareaRef.current;
2993
3007
  if (!el || el.disabled) return;
2994
- el.focus();
3008
+ el.focus({ preventScroll: true });
2995
3009
  el.setSelectionRange(next.length, next.length);
2996
3010
  });
2997
3011
  },
@@ -3073,7 +3087,8 @@ var ChatInput = _react.forwardRef.call(void 0,
3073
3087
  }
3074
3088
  }, [onStop, isStopping]);
3075
3089
  const isStopMode = sending && !!onStop;
3076
- const sendDisabled = sending || disabled || !value.trim();
3090
+ const hasContent = value.trim().length > 0 || allowEmptySend;
3091
+ const sendDisabled = sending || disabled || !hasContent;
3077
3092
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3078
3093
  "div",
3079
3094
  {
@@ -4020,6 +4035,105 @@ var ChatMessageList = _react.forwardRef.call(void 0,
4020
4035
  );
4021
4036
  ChatMessageList.displayName = "ChatMessageList";
4022
4037
 
4038
+ // src/utils/image-proxy.ts
4039
+ function getProxiedImageUrl(imageUrl, options) {
4040
+ if (!imageUrl) return null;
4041
+ const proxyPrefix = _optionalChain([options, 'optionalAccess', _58 => _58.proxyPrefix]);
4042
+ const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _59 => _59.skipDomains]), () => ( []));
4043
+ const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _60 => _60.directHttps]), () => ( false));
4044
+ if (proxyPrefix && imageUrl.includes(proxyPrefix)) {
4045
+ return imageUrl;
4046
+ }
4047
+ if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) {
4048
+ return imageUrl;
4049
+ }
4050
+ if (directHttps && imageUrl.startsWith("https://")) {
4051
+ return imageUrl;
4052
+ }
4053
+ if (!proxyPrefix) {
4054
+ return imageUrl;
4055
+ }
4056
+ for (const domain of skipDomains) {
4057
+ if (imageUrl.includes(domain)) {
4058
+ return imageUrl;
4059
+ }
4060
+ }
4061
+ return `${proxyPrefix}?url=${encodeURIComponent(imageUrl)}`;
4062
+ }
4063
+ function urlPathLooksLikeSvg(imageUrl) {
4064
+ try {
4065
+ return /\.svg$/i.test(new URL(imageUrl).pathname);
4066
+ } catch (e6) {
4067
+ return /\.svg(\?|#|$)/i.test(imageUrl);
4068
+ }
4069
+ }
4070
+ function shouldProxyImage(imageUrl, proxyPrefix) {
4071
+ if (!imageUrl) return false;
4072
+ if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) return false;
4073
+ if (proxyPrefix && imageUrl.includes(proxyPrefix)) return false;
4074
+ return true;
4075
+ }
4076
+ function generateImageSizes(_url) {
4077
+ return `(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw`;
4078
+ }
4079
+
4080
+ // src/components/chat/hooks/use-proxied-image-url.ts
4081
+ function useProxiedImageUrl(url) {
4082
+ const r = _chunkHOHDXYPRcjs.useRequiredChatRuntime.call(void 0, );
4083
+ return _nullishCoalesce(getProxiedImageUrl(_nullishCoalesce(url, () => ( "")), {
4084
+ proxyPrefix: r.endpoints.imageProxyUrlPrefix,
4085
+ skipDomains: r.endpoints.imageProxySkipDomains,
4086
+ directHttps: true
4087
+ }), () => ( ""));
4088
+ }
4089
+
4090
+ // src/components/chat/chat-message-row.tsx
4091
+
4092
+ function ChatMessageRow({
4093
+ displayName,
4094
+ avatarUrl,
4095
+ timeLabel,
4096
+ body,
4097
+ footer
4098
+ }) {
4099
+ const proxiedAvatar = useProxiedImageUrl(_nullishCoalesce(avatarUrl, () => ( "")));
4100
+ const src = proxiedAvatar || avatarUrl || void 0;
4101
+ const hasBody = body.trim().length > 0;
4102
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 md:gap-3 w-full min-w-0", children: [
4103
+ src ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4104
+ _chunkXL4V2PYGcjs.next_image_default,
4105
+ {
4106
+ src,
4107
+ alt: displayName,
4108
+ className: "w-8 h-8 md:w-10 md:h-10 rounded-lg object-cover flex-shrink-0",
4109
+ width: 40,
4110
+ height: 40
4111
+ }
4112
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-8 h-8 md:w-10 md:h-10 rounded-lg flex-shrink-0 flex items-center justify-center bg-ods-bg border border-ods-border text-[12px] font-medium text-ods-text-primary font-body", children: getFirstLastInitials(displayName) || "?" }),
4113
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 max-w-full", children: [
4114
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 max-w-full mb-1 min-w-0", children: [
4115
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[14px] md:text-[15px] font-bold leading-[1.33] text-ods-text-primary font-body tracking-[-0.02em] truncate", children: displayName }),
4116
+ timeLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[11px] md:text-[12px] font-medium leading-[1.43] text-ods-text-secondary font-body flex-shrink-0", children: timeLabel })
4117
+ ] }),
4118
+ hasBody && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-[12px] md:text-[14px] font-medium leading-[1.43] text-ods-text-primary font-body whitespace-pre-wrap break-words min-w-0 max-w-full", children: body }),
4119
+ footer
4120
+ ] })
4121
+ ] });
4122
+ }
4123
+ function ChatMessageRowSkeleton() {
4124
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex gap-2 md:gap-3 w-full min-w-0", children: [
4125
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-8 h-8 md:w-10 md:h-10 rounded-lg flex-shrink-0 bg-ods-border animate-pulse" }),
4126
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0", children: [
4127
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 mb-1", children: [
4128
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[15px] md:h-[20px] w-24 md:w-32 bg-ods-border rounded animate-pulse" }),
4129
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[12px] md:h-[16px] w-12 md:w-16 bg-ods-border rounded animate-pulse" })
4130
+ ] }),
4131
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[14px] md:h-[18px] w-full bg-ods-border rounded animate-pulse" }),
4132
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[14px] md:h-[18px] w-3/4 bg-ods-border rounded animate-pulse mt-1" })
4133
+ ] })
4134
+ ] });
4135
+ }
4136
+
4023
4137
  // src/components/chat/chat-quick-action.tsx
4024
4138
  _chunk664KA5FIcjs.init_cn.call(void 0, );
4025
4139
 
@@ -4086,7 +4200,7 @@ var ChatTicketItem = React8.forwardRef(
4086
4200
  {
4087
4201
  ref,
4088
4202
  type: "button",
4089
- onClick: () => _optionalChain([onClick, 'optionalCall', _58 => _58(ticket.id)]),
4203
+ onClick: () => _optionalChain([onClick, 'optionalCall', _61 => _61(ticket.id)]),
4090
4204
  className: _chunk664KA5FIcjs.cn.call(void 0,
4091
4205
  "flex items-center gap-4 w-full h-20 px-4",
4092
4206
  "bg-ods-card border-b border-ods-border",
@@ -4519,8 +4633,8 @@ ChatSidebarSkeleton.displayName = "ChatSidebarSkeleton";
4519
4633
  var DialogListItem = _react.forwardRef.call(void 0,
4520
4634
  ({ className, dialog, isActive, onDialogSelect, onClick, ...props }, ref) => {
4521
4635
  const handleClick = (e) => {
4522
- _optionalChain([onDialogSelect, 'optionalCall', _59 => _59(dialog.id)]);
4523
- _optionalChain([onClick, 'optionalCall', _60 => _60(e)]);
4636
+ _optionalChain([onDialogSelect, 'optionalCall', _62 => _62(dialog.id)]);
4637
+ _optionalChain([onClick, 'optionalCall', _63 => _63(e)]);
4524
4638
  };
4525
4639
  const formatTimestamp2 = (timestamp) => {
4526
4640
  if (!timestamp) return "";
@@ -4579,7 +4693,7 @@ var ChatSidebar = _react.forwardRef.call(void 0,
4579
4693
  (entries) => {
4580
4694
  const [entry] = entries;
4581
4695
  if (entry.isIntersecting && !isFetchingRef.current) {
4582
- _optionalChain([onLoadMoreRef, 'access', _61 => _61.current, 'optionalCall', _62 => _62()]);
4696
+ _optionalChain([onLoadMoreRef, 'access', _64 => _64.current, 'optionalCall', _65 => _65()]);
4583
4697
  }
4584
4698
  },
4585
4699
  { root: scrollContainer, rootMargin: "100px", threshold: 0.1 }
@@ -4683,7 +4797,7 @@ function decideNewTab(input) {
4683
4797
  function computeIsNewTab(runtime, href, targetPlatform) {
4684
4798
  if (!href) return false;
4685
4799
  if (runtime.navigation.mode === "embed") return true;
4686
- return _nullishCoalesce(_optionalChain([runtime, 'access', _63 => _63.navigation, 'access', _64 => _64.decideNewTab, 'optionalCall', _65 => _65({ href, targetPlatform })]), () => ( decideNewTab({
4800
+ return _nullishCoalesce(_optionalChain([runtime, 'access', _66 => _66.navigation, 'access', _67 => _67.decideNewTab, 'optionalCall', _68 => _68({ href, targetPlatform })]), () => ( decideNewTab({
4687
4801
  href,
4688
4802
  targetPlatform,
4689
4803
  currentSource: _nullishCoalesce(runtime.source, () => ( ""))
@@ -4706,7 +4820,7 @@ function stripSameOriginToPath(href) {
4706
4820
  try {
4707
4821
  const u = new URL(href);
4708
4822
  return u.pathname + u.search + u.hash;
4709
- } catch (e6) {
4823
+ } catch (e7) {
4710
4824
  return href;
4711
4825
  }
4712
4826
  }
@@ -4761,7 +4875,7 @@ function handleChatNavClick(e, runtime, { href, path, targetPlatform }) {
4761
4875
  }
4762
4876
  return true;
4763
4877
  }
4764
- const handled = _nullishCoalesce(_optionalChain([runtime, 'access', _66 => _66.navigation, 'access', _67 => _67.navigate, 'optionalCall', _68 => _68({ href, path, targetPlatform })]), () => ( false));
4878
+ const handled = _nullishCoalesce(_optionalChain([runtime, 'access', _69 => _69.navigation, 'access', _70 => _70.navigate, 'optionalCall', _71 => _71({ href, path, targetPlatform })]), () => ( false));
4765
4879
  if (!handled) window.location.assign(stripSameOriginToPath(href));
4766
4880
  return true;
4767
4881
  }
@@ -4792,7 +4906,7 @@ function NavLinkAnchorViaRuntime({
4792
4906
  path,
4793
4907
  targetPlatform
4794
4908
  });
4795
- if (handled && !isNewTab && _optionalChain([panel, 'optionalAccess', _69 => _69.closeChat])) panel.closeChat();
4909
+ if (handled && !isNewTab && _optionalChain([panel, 'optionalAccess', _72 => _72.closeChat])) panel.closeChat();
4796
4910
  };
4797
4911
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4798
4912
  "a",
@@ -4866,6 +4980,7 @@ function SourceActionButton({
4866
4980
  // src/components/chat/chat-attachment-bar.tsx
4867
4981
 
4868
4982
  _chunkXDPSSE4Ocjs.init_button2.call(void 0, );
4983
+ _chunk664KA5FIcjs.init_cn.call(void 0, );
4869
4984
 
4870
4985
  // src/components/chat/utils/chat-attachment-markdown.ts
4871
4986
  var CHAT_ATTACHMENT_VIEW_URL_PREFIX = "/api/storage/view/chat-attachments/";
@@ -4938,11 +5053,14 @@ function ChatAttachmentAddButton({
4938
5053
  attachmentsEnabled,
4939
5054
  attachmentsCount,
4940
5055
  onAddFiles,
4941
- disabled = false
5056
+ disabled = false,
5057
+ size = "default"
4942
5058
  }) {
4943
5059
  const fileInputRef = _react.useRef.call(void 0, null);
5060
+ const compact = size === "compact";
5061
+ const boxClass = compact ? "h-6 w-6" : "h-7 w-7";
4944
5062
  if (!attachmentsEnabled) {
4945
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: "inline-block h-7 w-7 shrink-0" });
5063
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: _chunk664KA5FIcjs.cn.call(void 0, "inline-block shrink-0", boxClass) });
4946
5064
  }
4947
5065
  const slotsAvailable = Math.max(
4948
5066
  0,
@@ -4951,7 +5069,7 @@ function ChatAttachmentAddButton({
4951
5069
  const canAddMore = slotsAvailable > 0 && !disabled;
4952
5070
  const handlePick = () => {
4953
5071
  if (!canAddMore) return;
4954
- _optionalChain([fileInputRef, 'access', _70 => _70.current, 'optionalAccess', _71 => _71.click, 'call', _72 => _72()]);
5072
+ _optionalChain([fileInputRef, 'access', _73 => _73.current, 'optionalAccess', _74 => _74.click, 'call', _75 => _75()]);
4955
5073
  };
4956
5074
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
4957
5075
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -4981,8 +5099,8 @@ function ChatAttachmentAddButton({
4981
5099
  disabled: !canAddMore,
4982
5100
  "aria-label": canAddMore ? "Add attachments" : "Attachment limit reached",
4983
5101
  title: canAddMore ? "Add attachments" : `Limit reached (${CHAT_ATTACHMENT_CONCURRENT_UPLOADS_PER_USER})`,
4984
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.PlusIcon, { className: "h-4 w-4" }),
4985
- className: "!h-7 !w-7 !p-0 shrink-0 text-ods-text-muted hover:text-ods-text-primary"
5102
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.PlusIcon, { className: compact ? "h-3.5 w-3.5" : "h-4 w-4" }),
5103
+ className: _chunk664KA5FIcjs.cn.call(void 0, "!p-0 shrink-0 text-ods-text-muted hover:text-ods-text-primary", compact ? "!h-6 !w-6" : "!h-7 !w-7")
4986
5104
  }
4987
5105
  )
4988
5106
  ] });
@@ -4990,48 +5108,64 @@ function ChatAttachmentAddButton({
4990
5108
  function ChatAttachmentChipStrip({
4991
5109
  attachments,
4992
5110
  onRemove,
4993
- disabled = false
5111
+ disabled = false,
5112
+ size = "default"
4994
5113
  }) {
4995
5114
  if (attachments.length === 0) return null;
4996
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-shrink-0 px-5 pb-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-2 flex-wrap", children: attachments.map((att) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5115
+ const compact = size === "compact";
5116
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex-shrink-0", compact ? "px-3 pb-1.5" : "px-5 pb-2"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex items-center flex-wrap", compact ? "gap-1.5" : "gap-2"), children: attachments.map((att) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4997
5117
  AttachmentChip,
4998
5118
  {
4999
5119
  attachment: att,
5000
5120
  onRemove: () => onRemove(att.id),
5001
- disabled
5121
+ disabled,
5122
+ size
5002
5123
  },
5003
5124
  att.id
5004
5125
  )) }) });
5005
5126
  }
5006
- function AttachmentChip({ attachment, onRemove, disabled }) {
5127
+ function AttachmentChip({ attachment, onRemove, disabled, size = "default" }) {
5007
5128
  const { file, status, progress, errorMessage } = attachment;
5008
5129
  const isImage = ANTHROPIC_SUPPORTED_IMAGE_MIME.includes(file.type);
5130
+ const compact = size === "compact";
5009
5131
  const blobUrl = useObjectUrl(isImage ? file : null);
5010
5132
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
5011
5133
  "div",
5012
5134
  {
5013
- className: "flex items-center gap-2 rounded-md border border-ods-border bg-ods-card px-2 py-1.5 max-w-[240px]",
5135
+ className: _chunk664KA5FIcjs.cn.call(void 0,
5136
+ "flex items-center rounded-md border border-ods-border bg-ods-card",
5137
+ compact ? "gap-1.5 px-1.5 py-1 max-w-[180px]" : "gap-2 px-2 py-1.5 max-w-[240px]"
5138
+ ),
5014
5139
  role: "group",
5015
5140
  "aria-label": `Attachment ${file.name}`,
5016
5141
  children: [
5017
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-8 w-8 shrink-0 overflow-hidden rounded bg-ods-bg", children: [
5018
- isImage && blobUrl ? (
5019
- // eslint-disable-next-line @next/next/no-img-element -- blob: URLs
5020
- // cannot go through next/image; this is a transient pre-upload
5021
- // preview, NOT the chat-history render path.
5022
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: blobUrl, alt: file.name, className: "h-full w-full object-cover" })
5023
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-full w-full items-center justify-center text-[10px] font-mono uppercase text-ods-text-muted", children: extLabel(file.name) }),
5024
- status === "uploading" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-x-0 bottom-0 h-1 bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5025
- "div",
5026
- {
5027
- className: "h-full bg-ods-accent transition-[width]",
5028
- style: { width: `${progress}%` }
5029
- }
5030
- ) })
5031
- ] }),
5142
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
5143
+ "div",
5144
+ {
5145
+ className: _chunk664KA5FIcjs.cn.call(void 0,
5146
+ "relative shrink-0 overflow-hidden rounded bg-ods-bg",
5147
+ compact ? "h-6 w-6" : "h-8 w-8"
5148
+ ),
5149
+ children: [
5150
+ isImage && blobUrl ? (
5151
+ // eslint-disable-next-line @next/next/no-img-element -- blob: URLs
5152
+ // cannot go through next/image; this is a transient pre-upload
5153
+ // preview, NOT the chat-history render path.
5154
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: blobUrl, alt: file.name, className: "h-full w-full object-cover" })
5155
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "flex h-full w-full items-center justify-center font-mono uppercase text-ods-text-muted", compact ? "text-[9px]" : "text-[10px]"), children: extLabel(file.name) }),
5156
+ status === "uploading" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-x-0 bottom-0 h-1 bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5157
+ "div",
5158
+ {
5159
+ className: "h-full bg-ods-accent transition-[width]",
5160
+ style: { width: `${progress}%` }
5161
+ }
5162
+ ) })
5163
+ ]
5164
+ }
5165
+ ),
5032
5166
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
5033
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "truncate text-xs text-ods-text-primary", title: file.name, children: file.name }),
5034
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-[10px] text-ods-text-muted", children: [
5167
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "truncate text-ods-text-primary", compact ? "text-[11px] leading-tight" : "text-xs"), title: file.name, children: file.name }),
5168
+ (!compact || status !== "ready") && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "text-ods-text-muted", compact ? "text-[9px] leading-tight" : "text-[10px]"), children: [
5035
5169
  status === "sniffing" && "Checking\u2026",
5036
5170
  status === "uploading" && `${progress}% \xB7 ${formatFileSize(file.size)}`,
5037
5171
  status === "ready" && formatFileSize(file.size),
@@ -5047,8 +5181,8 @@ function AttachmentChip({ attachment, onRemove, disabled }) {
5047
5181
  onClick: onRemove,
5048
5182
  disabled,
5049
5183
  "aria-label": `Remove ${file.name}`,
5050
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.XmarkIcon, { className: "h-3.5 w-3.5" }),
5051
- className: "!h-5 !w-5 !p-0 shrink-0 text-ods-text-muted hover:text-ods-text-primary"
5184
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk65CPJ4SXcjs.XmarkIcon, { className: compact ? "h-3 w-3" : "h-3.5 w-3.5" }),
5185
+ className: _chunk664KA5FIcjs.cn.call(void 0, "!p-0 shrink-0 text-ods-text-muted hover:text-ods-text-primary", compact ? "!h-4 !w-4" : "!h-5 !w-5")
5052
5186
  }
5053
5187
  )
5054
5188
  ]
@@ -5131,7 +5265,7 @@ function EntityAuthorCard({
5131
5265
  renderEmptyAuthor = false,
5132
5266
  className
5133
5267
  }) {
5134
- const hasAuthor = !!_optionalChain([author, 'optionalAccess', _73 => _73.full_name]);
5268
+ const hasAuthor = !!_optionalChain([author, 'optionalAccess', _76 => _76.full_name]);
5135
5269
  if (!hasAuthor && !renderEmptyAuthor) return null;
5136
5270
  const effectiveAuthor = hasAuthor ? author : EMPTY_AUTHOR_PLACEHOLDER;
5137
5271
  const formatted = publishedAt ? formatDate(publishedAt) : "";
@@ -5467,8 +5601,8 @@ function AdminContentCard({
5467
5601
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-['DM_Sans'] font-bold text-ods-text-primary text-[18px] leading-snug line-clamp-2 break-words", children: title }),
5468
5602
  subtitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] text-ods-text-secondary truncate", children: subtitle }),
5469
5603
  summary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] leading-relaxed text-ods-text-secondary line-clamp-2", children: summary }),
5470
- (Number(_optionalChain([platforms, 'optionalAccess', _74 => _74.length])) > 0 || badges) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 flex-wrap", children: [
5471
- _optionalChain([platforms, 'optionalAccess', _75 => _75.map, 'call', _76 => _76((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5604
+ (Number(_optionalChain([platforms, 'optionalAccess', _77 => _77.length])) > 0 || badges) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 flex-wrap", children: [
5605
+ _optionalChain([platforms, 'optionalAccess', _78 => _78.map, 'call', _79 => _79((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5472
5606
  PlatformBadge,
5473
5607
  {
5474
5608
  platform: { id: p.id || p.platform_id || "", name: p.name, display_name: p.display_name || p.name },
@@ -5544,7 +5678,7 @@ function fetchPriorityProp(priority) {
5544
5678
 
5545
5679
  if (typeof window !== "undefined") {
5546
5680
  const w = window;
5547
- if (!_optionalChain([w, 'access', _77 => _77.chrome, 'optionalAccess', _78 => _78.cast])) {
5681
+ if (!_optionalChain([w, 'access', _80 => _80.chrome, 'optionalAccess', _81 => _81.cast])) {
5548
5682
  w.chrome = { ..._nullishCoalesce(w.chrome, () => ( {})), cast: { isAvailable: false } };
5549
5683
  }
5550
5684
  }
@@ -5573,7 +5707,7 @@ var YT_HOSTS = /* @__PURE__ */ new Set([
5573
5707
  function isYouTubeUrl(url) {
5574
5708
  try {
5575
5709
  return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
5576
- } catch (e7) {
5710
+ } catch (e8) {
5577
5711
  return false;
5578
5712
  }
5579
5713
  }
@@ -5585,7 +5719,7 @@ function extractYouTubeId(url) {
5585
5719
  let u;
5586
5720
  try {
5587
5721
  u = new URL(url, "http://placeholder.local");
5588
- } catch (e8) {
5722
+ } catch (e9) {
5589
5723
  return null;
5590
5724
  }
5591
5725
  if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
@@ -5734,7 +5868,7 @@ function YouTubeFacadeInner({
5734
5868
  const iframe = iframeRef.current;
5735
5869
  if (!iframe) return;
5736
5870
  function subscribe() {
5737
- _optionalChain([iframe, 'optionalAccess', _79 => _79.contentWindow, 'optionalAccess', _80 => _80.postMessage, 'call', _81 => _81(
5871
+ _optionalChain([iframe, 'optionalAccess', _82 => _82.contentWindow, 'optionalAccess', _83 => _83.postMessage, 'call', _84 => _84(
5738
5872
  '{"event":"listening"}',
5739
5873
  YT_NOCOOKIE_ORIGIN
5740
5874
  )]);
@@ -5748,17 +5882,17 @@ function YouTubeFacadeInner({
5748
5882
  let payload = null;
5749
5883
  try {
5750
5884
  payload = JSON.parse(event.data);
5751
- } catch (e9) {
5885
+ } catch (e10) {
5752
5886
  return;
5753
5887
  }
5754
5888
  if (!payload || payload.event !== "infoDelivery") return;
5755
- const state = _optionalChain([payload, 'access', _82 => _82.info, 'optionalAccess', _83 => _83.playerState]);
5889
+ const state = _optionalChain([payload, 'access', _85 => _85.info, 'optionalAccess', _86 => _86.playerState]);
5756
5890
  if (typeof state !== "number") return;
5757
5891
  if (state === YT_STATE_PLAYING) {
5758
5892
  if (blurTimer !== null) return;
5759
5893
  blurTimer = setTimeout(() => {
5760
5894
  blurTimer = null;
5761
- _optionalChain([iframeRef, 'access', _84 => _84.current, 'optionalAccess', _85 => _85.blur, 'call', _86 => _86()]);
5895
+ _optionalChain([iframeRef, 'access', _87 => _87.current, 'optionalAccess', _88 => _88.blur, 'call', _89 => _89()]);
5762
5896
  }, YT_PLAYING_BLUR_DELAY_MS);
5763
5897
  return;
5764
5898
  }
@@ -6343,7 +6477,7 @@ function ProductReleaseCard({
6343
6477
  changelogCounts
6344
6478
  }) {
6345
6479
  if (size === "lg") {
6346
- const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _87 => _87.features]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _88 => _88.fixes]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _89 => _89.improvements]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _90 => _90.breaking]), () => ( 0)));
6480
+ const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _90 => _90.features]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _91 => _91.fixes]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _92 => _92.improvements]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _93 => _93.breaking]), () => ( 0)));
6347
6481
  const valueCells = [
6348
6482
  releaseType && releaseTypeBadgeColor ? {
6349
6483
  value: releaseType.toUpperCase(),
@@ -6362,7 +6496,7 @@ function ProductReleaseCard({
6362
6496
  uppercase: false
6363
6497
  } : { value: "\u2014", label: "Released", uppercase: false }
6364
6498
  ];
6365
- const effectiveAuthor = _optionalChain([author, 'optionalAccess', _91 => _91.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
6499
+ const effectiveAuthor = _optionalChain([author, 'optionalAccess', _94 => _94.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
6366
6500
  const gridColsClass = "md:grid-cols-4";
6367
6501
  const dividerClass = "border-b md:border-b-0 md:border-r border-ods-border";
6368
6502
  const frameClass = _chunk664KA5FIcjs.cn.call(void 0,
@@ -6674,7 +6808,7 @@ function useEntityCardLink({
6674
6808
  const safeRel = _nullishCoalesce(rel, () => ( (target === "_blank" ? "noopener noreferrer" : void 0)));
6675
6809
  return { target, rel: safeRel };
6676
6810
  }
6677
- const newTab = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _92 => _92.navigation, 'access', _93 => _93.decideNewTab, 'optionalCall', _94 => _94({ href, targetPlatform })]), () => ( false));
6811
+ const newTab = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _95 => _95.navigation, 'access', _96 => _96.decideNewTab, 'optionalCall', _97 => _97({ href, targetPlatform })]), () => ( false));
6678
6812
  return newTab ? { target: "_blank", rel: "noopener noreferrer" } : { target: void 0, rel: void 0 };
6679
6813
  }, [target, rel, href, targetPlatform, runtime]);
6680
6814
  }
@@ -6688,8 +6822,8 @@ function useEntityCardPlaceholder({
6688
6822
  aspect = "wide"
6689
6823
  }) {
6690
6824
  const runtime = _chunkHOHDXYPRcjs.useChatRuntime.call(void 0, );
6691
- const builder = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _95 => _95.resolvePlaceholderUrl]), () => ( NO_OP_BUILDER));
6692
- const enabled = placeholderUrl === void 0 && !!_optionalChain([runtime, 'optionalAccess', _96 => _96.resolvePlaceholderUrl]);
6825
+ const builder = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _98 => _98.resolvePlaceholderUrl]), () => ( NO_OP_BUILDER));
6826
+ const enabled = placeholderUrl === void 0 && !!_optionalChain([runtime, 'optionalAccess', _99 => _99.resolvePlaceholderUrl]);
6693
6827
  const derived = _chunk5V6MSE3Bcjs.useOgPlaceholder.call(void 0, builder, title, siteName, enabled, aspect);
6694
6828
  return placeholderUrl !== void 0 ? placeholderUrl : derived;
6695
6829
  }
@@ -6723,7 +6857,7 @@ function safeHref(url) {
6723
6857
  if (!SAFE_URL_SCHEMES.includes(parsed.protocol)) return null;
6724
6858
  if ((parsed.protocol === "https:" || parsed.protocol === "http:") && !parsed.hostname) return null;
6725
6859
  return trimmed;
6726
- } catch (e10) {
6860
+ } catch (e11) {
6727
6861
  return null;
6728
6862
  }
6729
6863
  }
@@ -6782,7 +6916,7 @@ function BlogCard({
6782
6916
  const displayImage = post.featured_image && !imageError ? post.featured_image : placeholderUrl;
6783
6917
  if (size === "sm") {
6784
6918
  const dateStr2 = post.published_at ? new Date(post.published_at).toLocaleDateString("en-US", { year: "numeric", month: "short", day: "numeric" }) : "";
6785
- const firstCategory = _optionalChain([post, 'access', _97 => _97.categories, 'optionalAccess', _98 => _98.find, 'call', _99 => _99((c) => c && c.name), 'optionalAccess', _100 => _100.name]);
6919
+ const firstCategory = _optionalChain([post, 'access', _100 => _100.categories, 'optionalAccess', _101 => _101.find, 'call', _102 => _102((c) => c && c.name), 'optionalAccess', _103 => _103.name]);
6786
6920
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
6787
6921
  "a",
6788
6922
  {
@@ -6988,14 +7122,14 @@ function CaseStudyCard({
6988
7122
  "img",
6989
7123
  {
6990
7124
  src: coverImage,
6991
- alt: `${_optionalChain([study, 'access', _101 => _101.msp, 'optionalAccess', _102 => _102.name]) || study.title} cover`,
7125
+ alt: `${_optionalChain([study, 'access', _104 => _104.msp, 'optionalAccess', _105 => _105.name]) || study.title} cover`,
6992
7126
  className: "absolute inset-0 block w-full h-full object-contain",
6993
7127
  onError: hideOnError
6994
7128
  }
6995
7129
  ) : null }),
6996
7130
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
6997
7131
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE, children: study.title }) }),
6998
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([study, 'access', _103 => _103.msp, 'optionalAccess', _104 => _104.name]), _optionalChain([study, 'access', _105 => _105.user, 'optionalAccess', _106 => _106.full_name])].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
7132
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([study, 'access', _106 => _106.msp, 'optionalAccess', _107 => _107.name]), _optionalChain([study, 'access', _108 => _108.user, 'optionalAccess', _109 => _109.full_name])].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
6999
7133
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: study.summary || COMPACT_CARD_ROW_FILLER }) })
7000
7134
  ] })
7001
7135
  ] });
@@ -7005,7 +7139,7 @@ function CaseStudyCard({
7005
7139
  _chunkXL4V2PYGcjs.next_image_default,
7006
7140
  {
7007
7141
  src: coverImage,
7008
- alt: _optionalChain([study, 'access', _107 => _107.msp, 'optionalAccess', _108 => _108.name]) || study.title,
7142
+ alt: _optionalChain([study, 'access', _110 => _110.msp, 'optionalAccess', _111 => _111.name]) || study.title,
7009
7143
  className: "w-full h-full object-cover",
7010
7144
  sizes: "(min-width: 1545px) 515px, (min-width: 1280px) 33vw, (min-width: 800px) 50vw, 100vw",
7011
7145
  fill: true,
@@ -7016,18 +7150,18 @@ function CaseStudyCard({
7016
7150
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[72px] flex items-center shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary line-clamp-3 break-words", children: study.title }) }),
7017
7151
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[60px] flex items-center shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 min-w-0 w-full", children: [
7018
7152
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative shrink-0 w-12 h-12", children: [
7019
- _optionalChain([study, 'access', _109 => _109.user, 'optionalAccess', _110 => _110.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7153
+ _optionalChain([study, 'access', _112 => _112.user, 'optionalAccess', _113 => _113.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7020
7154
  _chunkXL4V2PYGcjs.next_image_default,
7021
7155
  {
7022
7156
  src: study.user.avatar_url,
7023
- alt: _optionalChain([study, 'access', _111 => _111.user, 'optionalAccess', _112 => _112.full_name]) || "User",
7157
+ alt: _optionalChain([study, 'access', _114 => _114.user, 'optionalAccess', _115 => _115.full_name]) || "User",
7024
7158
  className: "w-12 h-12 rounded-full object-cover bg-ods-background border border-ods-border",
7025
7159
  width: 48,
7026
7160
  height: 48,
7027
7161
  unoptimized: true
7028
7162
  }
7029
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-12 h-12 rounded-full bg-ods-background border border-ods-border flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary font-medium text-xl", children: (_optionalChain([study, 'access', _113 => _113.user, 'optionalAccess', _114 => _114.full_name]) || "A").charAt(0).toUpperCase() }) }),
7030
- _optionalChain([study, 'access', _115 => _115.msp, 'optionalAccess', _116 => _116.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 w-6 h-6 rounded-full bg-ods-text-primary ring-1 ring-ods-bg overflow-hidden flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7163
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-12 h-12 rounded-full bg-ods-background border border-ods-border flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary font-medium text-xl", children: (_optionalChain([study, 'access', _116 => _116.user, 'optionalAccess', _117 => _117.full_name]) || "A").charAt(0).toUpperCase() }) }),
7164
+ _optionalChain([study, 'access', _118 => _118.msp, 'optionalAccess', _119 => _119.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 w-6 h-6 rounded-full bg-ods-text-primary ring-1 ring-ods-bg overflow-hidden flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7031
7165
  _chunkXL4V2PYGcjs.next_image_default,
7032
7166
  {
7033
7167
  src: study.msp.icon_url,
@@ -7041,13 +7175,13 @@ function CaseStudyCard({
7041
7175
  ] }),
7042
7176
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
7043
7177
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "font-['DM_Sans'] text-[16px] leading-[1.3] text-ods-text-primary truncate", children: [
7044
- _optionalChain([study, 'access', _117 => _117.user, 'optionalAccess', _118 => _118.full_name]) || "Anonymous",
7045
- _optionalChain([study, 'access', _119 => _119.msp, 'optionalAccess', _120 => _120.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
7178
+ _optionalChain([study, 'access', _120 => _120.user, 'optionalAccess', _121 => _121.full_name]) || "Anonymous",
7179
+ _optionalChain([study, 'access', _122 => _122.msp, 'optionalAccess', _123 => _123.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
7046
7180
  " \u2022 ",
7047
7181
  study.msp.name
7048
7182
  ] })
7049
7183
  ] }),
7050
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] leading-none text-ods-text-secondary truncate", children: _optionalChain([study, 'access', _121 => _121.user, 'optionalAccess', _122 => _122.job_title]) || "\xA0" })
7184
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] leading-none text-ods-text-secondary truncate", children: _optionalChain([study, 'access', _124 => _124.user, 'optionalAccess', _125 => _125.job_title]) || "\xA0" })
7051
7185
  ] })
7052
7186
  ] }) })
7053
7187
  ] }) });
@@ -7130,7 +7264,7 @@ function CustomerInterviewCard({
7130
7264
  ] }),
7131
7265
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
7132
7266
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE, children: interview.title }) }),
7133
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _123 => _123.user, 'optionalAccess', _124 => _124.full_name]), _optionalChain([interview, 'access', _125 => _125.msp, 'optionalAccess', _126 => _126.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
7267
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _126 => _126.user, 'optionalAccess', _127 => _127.full_name]), _optionalChain([interview, 'access', _128 => _128.msp, 'optionalAccess', _129 => _129.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
7134
7268
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: interview.video_summary || COMPACT_CARD_ROW_FILLER }) })
7135
7269
  ] })
7136
7270
  ] });
@@ -7152,15 +7286,15 @@ function CustomerInterviewCard({
7152
7286
  interview.video_summary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] leading-[20px] text-ods-text-secondary line-clamp-3", children: interview.video_summary }) }),
7153
7287
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[60px] flex items-center shrink-0 mt-auto", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 min-w-0 w-full", children: [
7154
7288
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative shrink-0 w-12 h-12", children: [
7155
- _optionalChain([interview, 'access', _127 => _127.user, 'optionalAccess', _128 => _128.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7289
+ _optionalChain([interview, 'access', _130 => _130.user, 'optionalAccess', _131 => _131.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7156
7290
  "img",
7157
7291
  {
7158
7292
  src: interview.user.avatar_url,
7159
- alt: _optionalChain([interview, 'access', _129 => _129.user, 'optionalAccess', _130 => _130.full_name]) || "Customer",
7293
+ alt: _optionalChain([interview, 'access', _132 => _132.user, 'optionalAccess', _133 => _133.full_name]) || "Customer",
7160
7294
  className: "w-12 h-12 rounded-full object-cover bg-ods-background border border-ods-border"
7161
7295
  }
7162
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-12 h-12 rounded-full bg-ods-background border border-ods-border flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary font-medium text-xl", children: (_optionalChain([interview, 'access', _131 => _131.user, 'optionalAccess', _132 => _132.full_name]) || "A").charAt(0).toUpperCase() }) }),
7163
- _optionalChain([interview, 'access', _133 => _133.msp, 'optionalAccess', _134 => _134.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 w-6 h-6 rounded-full bg-ods-text-primary ring-1 ring-ods-bg overflow-hidden flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7296
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-12 h-12 rounded-full bg-ods-background border border-ods-border flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary font-medium text-xl", children: (_optionalChain([interview, 'access', _134 => _134.user, 'optionalAccess', _135 => _135.full_name]) || "A").charAt(0).toUpperCase() }) }),
7297
+ _optionalChain([interview, 'access', _136 => _136.msp, 'optionalAccess', _137 => _137.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute -bottom-1 -right-1 w-6 h-6 rounded-full bg-ods-text-primary ring-1 ring-ods-bg overflow-hidden flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
7164
7298
  "img",
7165
7299
  {
7166
7300
  src: interview.msp.icon_url,
@@ -7171,13 +7305,13 @@ function CustomerInterviewCard({
7171
7305
  ] }),
7172
7306
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
7173
7307
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "font-['DM_Sans'] text-[16px] leading-[1.3] text-ods-text-primary truncate", children: [
7174
- _optionalChain([interview, 'access', _135 => _135.user, 'optionalAccess', _136 => _136.full_name]) || "Anonymous",
7175
- _optionalChain([interview, 'access', _137 => _137.msp, 'optionalAccess', _138 => _138.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
7308
+ _optionalChain([interview, 'access', _138 => _138.user, 'optionalAccess', _139 => _139.full_name]) || "Anonymous",
7309
+ _optionalChain([interview, 'access', _140 => _140.msp, 'optionalAccess', _141 => _141.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
7176
7310
  " \u2022 ",
7177
7311
  interview.msp.name
7178
7312
  ] })
7179
7313
  ] }),
7180
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] leading-none text-ods-text-secondary truncate", children: _optionalChain([interview, 'access', _139 => _139.user, 'optionalAccess', _140 => _140.job_title]) || " " })
7314
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] text-[14px] leading-none text-ods-text-secondary truncate", children: _optionalChain([interview, 'access', _142 => _142.user, 'optionalAccess', _143 => _143.job_title]) || " " })
7181
7315
  ] })
7182
7316
  ] }) })
7183
7317
  ] }) });
@@ -7190,7 +7324,7 @@ function CustomerInterviewCard({
7190
7324
  function formatInvestorUpdatePeriod(start, end, options) {
7191
7325
  if (!start && !end) return "";
7192
7326
  const fmt = (d) => new Date(d).toLocaleDateString("en-US", {
7193
- month: _optionalChain([options, 'optionalAccess', _141 => _141.monthFormat]) || "short",
7327
+ month: _optionalChain([options, 'optionalAccess', _144 => _144.monthFormat]) || "short",
7194
7328
  year: "numeric"
7195
7329
  });
7196
7330
  const s = start ? fmt(start) : "?";
@@ -7280,7 +7414,7 @@ function InvestorUpdateCard({
7280
7414
  imageUrl: update.featured_image,
7281
7415
  placeholderUrl,
7282
7416
  title: update.title || `Update #${update.update_number || "?"}`,
7283
- summary: _optionalChain([update, 'access', _142 => _142.strategic_update, 'optionalAccess', _143 => _143.slice, 'call', _144 => _144(0, 120)]) || _optionalChain([update, 'access', _145 => _145.content, 'optionalAccess', _146 => _146.slice, 'call', _147 => _147(0, 120)]) || "No description",
7417
+ summary: _optionalChain([update, 'access', _145 => _145.strategic_update, 'optionalAccess', _146 => _146.slice, 'call', _147 => _147(0, 120)]) || _optionalChain([update, 'access', _148 => _148.content, 'optionalAccess', _149 => _149.slice, 'call', _150 => _150(0, 120)]) || "No description",
7284
7418
  badges: update.update_number ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "px-2 py-0.5 rounded text-xs font-medium bg-ods-accent/10 text-ods-accent", children: [
7285
7419
  "#",
7286
7420
  update.update_number
@@ -7467,7 +7601,7 @@ function OnboardingGuideCard({
7467
7601
  const compactCover = coverImage || placeholderUrl || null;
7468
7602
  const hasVideoCover = !guide.featured_image && !!guide.main_video_thumbnail;
7469
7603
  const summary2 = (guide.video_summary || guide.content || "").trim();
7470
- const author = _optionalChain([guide, 'access', _148 => _148.author, 'optionalAccess', _149 => _149.full_name, 'optionalAccess', _150 => _150.trim, 'call', _151 => _151()]) || "";
7604
+ const author = _optionalChain([guide, 'access', _151 => _151.author, 'optionalAccess', _152 => _152.full_name, 'optionalAccess', _153 => _153.trim, 'call', _154 => _154()]) || "";
7471
7605
  const subtitleParts = [
7472
7606
  `Step ${guide.step_order}`,
7473
7607
  guide.section,
@@ -7837,7 +7971,7 @@ function AutocompleteInner(props, ref) {
7837
7971
  if (!isInputControlled) {
7838
7972
  setInternalInputValue(value);
7839
7973
  }
7840
- _optionalChain([onInputChange, 'optionalCall', _152 => _152(value, reason)]);
7974
+ _optionalChain([onInputChange, 'optionalCall', _155 => _155(value, reason)]);
7841
7975
  };
7842
7976
  const [isOpen, setIsOpen] = _react.useState.call(void 0, false);
7843
7977
  const [highlightedIndex, setHighlightedIndex] = _react.useState.call(void 0, -1);
@@ -7865,8 +7999,8 @@ function AutocompleteInner(props, ref) {
7865
7999
  if (!showHiddenTags) return;
7866
8000
  const handleClick = (e) => {
7867
8001
  const target = e.target;
7868
- const inButton = _optionalChain([hiddenTagsRef, 'access', _153 => _153.current, 'optionalAccess', _154 => _154.contains, 'call', _155 => _155(target)]);
7869
- const inPopup = _optionalChain([hiddenTagsPopupRef, 'access', _156 => _156.current, 'optionalAccess', _157 => _157.contains, 'call', _158 => _158(target)]);
8002
+ const inButton = _optionalChain([hiddenTagsRef, 'access', _156 => _156.current, 'optionalAccess', _157 => _157.contains, 'call', _158 => _158(target)]);
8003
+ const inPopup = _optionalChain([hiddenTagsPopupRef, 'access', _159 => _159.current, 'optionalAccess', _160 => _160.contains, 'call', _161 => _161(target)]);
7870
8004
  if (!inButton && !inPopup) {
7871
8005
  setShowHiddenTags(false);
7872
8006
  }
@@ -7910,7 +8044,7 @@ function AutocompleteInner(props, ref) {
7910
8044
  }
7911
8045
  updateInputValue("", "reset");
7912
8046
  setIsOpen(false);
7913
- _optionalChain([onCreateOption, 'optionalCall', _159 => _159(trimmed)]);
8047
+ _optionalChain([onCreateOption, 'optionalCall', _162 => _162(trimmed)]);
7914
8048
  };
7915
8049
  _react.useEffect.call(void 0, () => {
7916
8050
  setHighlightedIndex(-1);
@@ -7934,7 +8068,7 @@ function AutocompleteInner(props, ref) {
7934
8068
  props.onChange([...valueArray, option.value]);
7935
8069
  }
7936
8070
  updateInputValue("", "reset");
7937
- _optionalChain([autoLimitTags, 'access', _160 => _160.inputRef, 'access', _161 => _161.current, 'optionalAccess', _162 => _162.focus, 'call', _163 => _163()]);
8071
+ _optionalChain([autoLimitTags, 'access', _163 => _163.inputRef, 'access', _164 => _164.current, 'optionalAccess', _165 => _165.focus, 'call', _166 => _166()]);
7938
8072
  } else {
7939
8073
  ;
7940
8074
  props.onChange(option.value);
@@ -7955,7 +8089,7 @@ function AutocompleteInner(props, ref) {
7955
8089
  if (!isInputControlled) {
7956
8090
  setInternalInputValue("");
7957
8091
  }
7958
- _optionalChain([onInputChange, 'optionalCall', _164 => _164("", "clear")]);
8092
+ _optionalChain([onInputChange, 'optionalCall', _167 => _167("", "clear")]);
7959
8093
  setIsOpen(false);
7960
8094
  };
7961
8095
  const handleKeyDown = (e) => {
@@ -8029,7 +8163,7 @@ function AutocompleteInner(props, ref) {
8029
8163
  ),
8030
8164
  onClick: () => {
8031
8165
  if (!disabled) {
8032
- _optionalChain([autoLimitTags, 'access', _165 => _165.inputRef, 'access', _166 => _166.current, 'optionalAccess', _167 => _167.focus, 'call', _168 => _168()]);
8166
+ _optionalChain([autoLimitTags, 'access', _168 => _168.inputRef, 'access', _169 => _169.current, 'optionalAccess', _170 => _170.focus, 'call', _171 => _171()]);
8033
8167
  openDropdown();
8034
8168
  }
8035
8169
  },
@@ -8145,10 +8279,10 @@ function AutocompleteInner(props, ref) {
8145
8279
  align: "start",
8146
8280
  onOpenAutoFocus: (e) => {
8147
8281
  e.preventDefault();
8148
- _optionalChain([autoLimitTags, 'access', _169 => _169.inputRef, 'access', _170 => _170.current, 'optionalAccess', _171 => _171.focus, 'call', _172 => _172()]);
8282
+ _optionalChain([autoLimitTags, 'access', _172 => _172.inputRef, 'access', _173 => _173.current, 'optionalAccess', _174 => _174.focus, 'call', _175 => _175()]);
8149
8283
  },
8150
8284
  onInteractOutside: (e) => {
8151
- if (_optionalChain([containerRef, 'access', _173 => _173.current, 'optionalAccess', _174 => _174.contains, 'call', _175 => _175(e.target)])) {
8285
+ if (_optionalChain([containerRef, 'access', _176 => _176.current, 'optionalAccess', _177 => _177.contains, 'call', _178 => _178(e.target)])) {
8152
8286
  e.preventDefault();
8153
8287
  }
8154
8288
  },
@@ -8220,7 +8354,7 @@ function AutocompleteInner(props, ref) {
8220
8354
  items: hiddenTags,
8221
8355
  disabled,
8222
8356
  style: {
8223
- left: autoLimitTags.badgeRef.current ? autoLimitTags.badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _176 => _176.current, 'optionalAccess', _177 => _177.getBoundingClientRect, 'call', _178 => _178(), 'access', _179 => _179.left]), () => ( 0))) : 0
8357
+ left: autoLimitTags.badgeRef.current ? autoLimitTags.badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _179 => _179.current, 'optionalAccess', _180 => _180.getBoundingClientRect, 'call', _181 => _181(), 'access', _182 => _182.left]), () => ( 0))) : 0
8224
8358
  },
8225
8359
  onRemove: (value) => {
8226
8360
  const newValue = valueArray.filter((v) => v !== value);
@@ -8543,7 +8677,7 @@ var defaultFormatDate = (date) => {
8543
8677
  });
8544
8678
  };
8545
8679
  var formatDateRange2 = (range, formatFn) => {
8546
- if (!_optionalChain([range, 'optionalAccess', _180 => _180.from])) return "";
8680
+ if (!_optionalChain([range, 'optionalAccess', _183 => _183.from])) return "";
8547
8681
  if (!range.to) return formatFn(range.from);
8548
8682
  return `${formatFn(range.from)} - ${formatFn(range.to)}`;
8549
8683
  };
@@ -8571,7 +8705,7 @@ function DatePickerCalendar({
8571
8705
  }) {
8572
8706
  const today = /* @__PURE__ */ new Date();
8573
8707
  const rangeSelected = selected;
8574
- const hasCompleteRange = mode === "range" && _optionalChain([rangeSelected, 'optionalAccess', _181 => _181.from]) && _optionalChain([rangeSelected, 'optionalAccess', _182 => _182.to]) && rangeSelected.from.getTime() !== rangeSelected.to.getTime();
8708
+ const hasCompleteRange = mode === "range" && _optionalChain([rangeSelected, 'optionalAccess', _184 => _184.from]) && _optionalChain([rangeSelected, 'optionalAccess', _185 => _185.to]) && rangeSelected.from.getTime() !== rangeSelected.to.getTime();
8575
8709
  const classNames = {
8576
8710
  root: "p-4 date-picker-calendar",
8577
8711
  months: "flex gap-8",
@@ -8622,7 +8756,7 @@ function DatePickerCalendar({
8622
8756
  range_middle: "range-middle !bg-[var(--ods-open-yellow-light)] !text-ods-card !font-medium !rounded-none hover:!bg-[var(--ods-open-yellow-light)]"
8623
8757
  };
8624
8758
  const [month, setMonth] = React26.useState(
8625
- mode === "single" ? selected || today : _optionalChain([selected, 'optionalAccess', _183 => _183.from]) || today
8759
+ mode === "single" ? selected || today : _optionalChain([selected, 'optionalAccess', _186 => _186.from]) || today
8626
8760
  );
8627
8761
  const handlePreviousMonth = () => {
8628
8762
  setMonth((prev) => {
@@ -8841,14 +8975,14 @@ function DatePicker(props) {
8841
8975
  }, [props.mode, props.value, formatDate2]);
8842
8976
  const handleSelect = (value) => {
8843
8977
  if (props.mode === "single") {
8844
- _optionalChain([props, 'access', _184 => _184.onChange, 'optionalCall', _185 => _185(value)]);
8978
+ _optionalChain([props, 'access', _187 => _187.onChange, 'optionalCall', _188 => _188(value)]);
8845
8979
  if (value) {
8846
8980
  setOpen(false);
8847
8981
  }
8848
8982
  } else {
8849
8983
  const range = value;
8850
- _optionalChain([props, 'access', _186 => _186.onChange, 'optionalCall', _187 => _187(range)]);
8851
- if (_optionalChain([range, 'optionalAccess', _188 => _188.from]) && _optionalChain([range, 'optionalAccess', _189 => _189.to]) && range.from.getTime() !== range.to.getTime()) {
8984
+ _optionalChain([props, 'access', _189 => _189.onChange, 'optionalCall', _190 => _190(range)]);
8985
+ if (_optionalChain([range, 'optionalAccess', _191 => _191.from]) && _optionalChain([range, 'optionalAccess', _192 => _192.to]) && range.from.getTime() !== range.to.getTime()) {
8852
8986
  setOpen(false);
8853
8987
  }
8854
8988
  }
@@ -8955,7 +9089,7 @@ function DatePickerInput({
8955
9089
  if (newDate && value) {
8956
9090
  newDate.setHours(value.getHours(), value.getMinutes(), 0, 0);
8957
9091
  }
8958
- _optionalChain([onChange, 'optionalCall', _190 => _190(newDate)]);
9092
+ _optionalChain([onChange, 'optionalCall', _193 => _193(newDate)]);
8959
9093
  if (newDate) {
8960
9094
  setOpen(false);
8961
9095
  }
@@ -8972,12 +9106,12 @@ function DatePickerInput({
8972
9106
  }
8973
9107
  }
8974
9108
  date.setHours(hours);
8975
- _optionalChain([onChange, 'optionalCall', _191 => _191(date)]);
9109
+ _optionalChain([onChange, 'optionalCall', _194 => _194(date)]);
8976
9110
  };
8977
9111
  const handleMinuteChange = (newMinute) => {
8978
9112
  const date = value ? new Date(value) : /* @__PURE__ */ new Date();
8979
9113
  date.setMinutes(parseInt(newMinute, 10));
8980
- _optionalChain([onChange, 'optionalCall', _192 => _192(date)]);
9114
+ _optionalChain([onChange, 'optionalCall', _195 => _195(date)]);
8981
9115
  };
8982
9116
  const handlePeriodChange = (newPeriod) => {
8983
9117
  const date = value ? new Date(value) : /* @__PURE__ */ new Date();
@@ -8988,7 +9122,7 @@ function DatePickerInput({
8988
9122
  hours += 12;
8989
9123
  }
8990
9124
  date.setHours(hours);
8991
- _optionalChain([onChange, 'optionalCall', _193 => _193(date)]);
9125
+ _optionalChain([onChange, 'optionalCall', _196 => _196(date)]);
8992
9126
  };
8993
9127
  const hourOptions = React26.useMemo(() => generateHourOptions(use24HourFormat), [use24HourFormat]);
8994
9128
  const minuteOptions = React26.useMemo(() => generateMinuteOptions(), []);
@@ -9149,7 +9283,7 @@ function DatePickerInputSimple({
9149
9283
  if (newDate && value) {
9150
9284
  newDate.setHours(value.getHours(), value.getMinutes(), 0, 0);
9151
9285
  }
9152
- _optionalChain([onChange, 'optionalCall', _194 => _194(newDate)]);
9286
+ _optionalChain([onChange, 'optionalCall', _197 => _197(newDate)]);
9153
9287
  if (newDate) {
9154
9288
  setOpen(false);
9155
9289
  }
@@ -9158,7 +9292,7 @@ function DatePickerInputSimple({
9158
9292
  const [hours, minutes] = newTime.split(":").map(Number);
9159
9293
  const date = value ? new Date(value) : /* @__PURE__ */ new Date();
9160
9294
  date.setHours(hours, minutes, 0, 0);
9161
- _optionalChain([onChange, 'optionalCall', _195 => _195(date)]);
9295
+ _optionalChain([onChange, 'optionalCall', _198 => _198(date)]);
9162
9296
  };
9163
9297
  const timeOptions = React26.useMemo(
9164
9298
  () => generateTimeOptions(timeInterval, use24HourFormat),
@@ -9691,7 +9825,7 @@ var Switch = React32.forwardRef(({ className, checked, onCheckedChange, ...props
9691
9825
  }, [checked]);
9692
9826
  const handleCheckedChange = (newChecked) => {
9693
9827
  setIsChecked(newChecked);
9694
- _optionalChain([onCheckedChange, 'optionalCall', _196 => _196(newChecked)]);
9828
+ _optionalChain([onCheckedChange, 'optionalCall', _199 => _199(newChecked)]);
9695
9829
  };
9696
9830
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
9697
9831
  SwitchPrimitives.Root,
@@ -9900,7 +10034,7 @@ function TagsManager({
9900
10034
  const name = search.trim();
9901
10035
  if (!name) return;
9902
10036
  const result = await onCreateTag(name);
9903
- if (_optionalChain([result, 'optionalAccess', _197 => _197.id])) {
10037
+ if (_optionalChain([result, 'optionalAccess', _200 => _200.id])) {
9904
10038
  onChange([...selectedIds, result.id]);
9905
10039
  setSearch("");
9906
10040
  }
@@ -9908,7 +10042,7 @@ function TagsManager({
9908
10042
  const startEdit = React34.useCallback((id, name) => {
9909
10043
  setEditingId(id);
9910
10044
  setEditingName(name);
9911
- setTimeout(() => _optionalChain([editInputRef, 'access', _198 => _198.current, 'optionalAccess', _199 => _199.focus, 'call', _200 => _200()]), 0);
10045
+ setTimeout(() => _optionalChain([editInputRef, 'access', _201 => _201.current, 'optionalAccess', _202 => _202.focus, 'call', _203 => _203()]), 0);
9912
10046
  }, []);
9913
10047
  const confirmEdit = React34.useCallback(async () => {
9914
10048
  if (!onUpdateTag || !editingId || !editingName.trim()) return;
@@ -9935,7 +10069,7 @@ function TagsManager({
9935
10069
  e.stopPropagation();
9936
10070
  onChange([]);
9937
10071
  setSearch("");
9938
- _optionalChain([inputRef, 'access', _201 => _201.current, 'optionalAccess', _202 => _202.focus, 'call', _203 => _203()]);
10072
+ _optionalChain([inputRef, 'access', _204 => _204.current, 'optionalAccess', _205 => _205.focus, 'call', _206 => _206()]);
9939
10073
  },
9940
10074
  [onChange]
9941
10075
  );
@@ -10034,10 +10168,10 @@ function TagsManager({
10034
10168
  align: "start",
10035
10169
  onOpenAutoFocus: (e) => {
10036
10170
  e.preventDefault();
10037
- _optionalChain([inputRef, 'access', _204 => _204.current, 'optionalAccess', _205 => _205.focus, 'call', _206 => _206()]);
10171
+ _optionalChain([inputRef, 'access', _207 => _207.current, 'optionalAccess', _208 => _208.focus, 'call', _209 => _209()]);
10038
10172
  },
10039
10173
  onInteractOutside: (e) => {
10040
- if (_optionalChain([containerRef, 'access', _207 => _207.current, 'optionalAccess', _208 => _208.contains, 'call', _209 => _209(e.target)])) {
10174
+ if (_optionalChain([containerRef, 'access', _210 => _210.current, 'optionalAccess', _211 => _211.contains, 'call', _212 => _212(e.target)])) {
10041
10175
  e.preventDefault();
10042
10176
  }
10043
10177
  },
@@ -10832,7 +10966,7 @@ function useResizableSize({
10832
10966
  const parsed = parseFloat(raw);
10833
10967
  if (!Number.isFinite(parsed)) return clampToViewport(defaultSize);
10834
10968
  return clampToViewport(parsed);
10835
- } catch (e11) {
10969
+ } catch (e12) {
10836
10970
  return clampToViewport(defaultSize);
10837
10971
  }
10838
10972
  }, [enabled, storageKey, defaultSize, clampToViewport]);
@@ -10845,7 +10979,7 @@ function useResizableSize({
10845
10979
  if (!enabled || !storageKey || typeof window === "undefined") return;
10846
10980
  try {
10847
10981
  window.localStorage.setItem(storageKey, String(Math.round(size)));
10848
- } catch (e12) {
10982
+ } catch (e13) {
10849
10983
  }
10850
10984
  }, [enabled, size, storageKey]);
10851
10985
  React41.useEffect(() => {
@@ -10888,7 +11022,7 @@ function DrawerResizeHandle({
10888
11022
  startRef.current = null;
10889
11023
  try {
10890
11024
  e.currentTarget.releasePointerCapture(e.pointerId);
10891
- } catch (e13) {
11025
+ } catch (e14) {
10892
11026
  }
10893
11027
  document.body.style.cursor = "";
10894
11028
  document.body.style.userSelect = "";
@@ -11539,19 +11673,19 @@ function TabNavigation({
11539
11673
  const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
11540
11674
  const getInitialTab = () => {
11541
11675
  if (isUrlSyncEnabled) {
11542
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _210 => _210.get, 'call', _211 => _211(paramName)]) || "";
11676
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _213 => _213.get, 'call', _214 => _214(paramName)]) || "";
11543
11677
  if (validTabIds.has(fromUrl)) {
11544
11678
  return fromUrl;
11545
11679
  }
11546
11680
  }
11547
- return defaultTab || _optionalChain([tabs, 'access', _212 => _212[0], 'optionalAccess', _213 => _213.id]) || "";
11681
+ return defaultTab || _optionalChain([tabs, 'access', _215 => _215[0], 'optionalAccess', _216 => _216.id]) || "";
11548
11682
  };
11549
11683
  const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
11550
11684
  const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
11551
11685
  _react.useEffect.call(void 0, () => {
11552
11686
  if (!isUrlSyncEnabled) return;
11553
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _214 => _214.get, 'call', _215 => _215(paramName)]) || "";
11554
- const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _216 => _216[0], 'optionalAccess', _217 => _217.id]) || "";
11687
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _217 => _217.get, 'call', _218 => _218(paramName)]) || "";
11688
+ const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _219 => _219[0], 'optionalAccess', _220 => _220.id]) || "";
11555
11689
  if (nextTab !== internalActiveTab) {
11556
11690
  setInternalActiveTab(nextTab);
11557
11691
  }
@@ -11559,13 +11693,13 @@ function TabNavigation({
11559
11693
  const handleTabChange = (tabId) => {
11560
11694
  if (isUrlSyncEnabled) {
11561
11695
  setInternalActiveTab(tabId);
11562
- const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _218 => _218.toString, 'call', _219 => _219()]));
11696
+ const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _221 => _221.toString, 'call', _222 => _222()]));
11563
11697
  params.set(paramName, tabId);
11564
11698
  const method = replaceState ? "replace" : "push";
11565
11699
  router[method](`${pathname}?${params.toString()}`);
11566
- _optionalChain([controlledOnTabChange, 'optionalCall', _220 => _220(tabId)]);
11700
+ _optionalChain([controlledOnTabChange, 'optionalCall', _223 => _223(tabId)]);
11567
11701
  } else {
11568
- _optionalChain([controlledOnTabChange, 'optionalCall', _221 => _221(tabId)]);
11702
+ _optionalChain([controlledOnTabChange, 'optionalCall', _224 => _224(tabId)]);
11569
11703
  }
11570
11704
  };
11571
11705
  const scrollRef = _react.useRef.call(void 0, null);
@@ -11653,7 +11787,7 @@ function TabNavigation({
11653
11787
  var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
11654
11788
  var getTabComponent = (tabs, tabId) => {
11655
11789
  const tab = getTabById(tabs, tabId);
11656
- return _optionalChain([tab, 'optionalAccess', _222 => _222.component]) || null;
11790
+ return _optionalChain([tab, 'optionalAccess', _225 => _225.component]) || null;
11657
11791
  };
11658
11792
 
11659
11793
  // src/components/ui/alert.tsx
@@ -11793,7 +11927,7 @@ function ReleaseChangelogSection({
11793
11927
  className: "overflow-hidden transition-[max-height] duration-500",
11794
11928
  style: {
11795
11929
  transitionTimingFunction: "cubic-bezier(0.33, 1, 0.68, 1)",
11796
- maxHeight: previewExpanded || !previewNeedsFade ? _nullishCoalesce(_optionalChain([previewContentRef, 'access', _223 => _223.current, 'optionalAccess', _224 => _224.scrollHeight]), () => ( 2e3)) : PREVIEW_COLLAPSED_HEIGHT,
11930
+ maxHeight: previewExpanded || !previewNeedsFade ? _nullishCoalesce(_optionalChain([previewContentRef, 'access', _226 => _226.current, 'optionalAccess', _227 => _227.scrollHeight]), () => ( 2e3)) : PREVIEW_COLLAPSED_HEIGHT,
11797
11931
  ...previewNeedsFade && !previewExpanded ? {
11798
11932
  maskImage: "linear-gradient(to bottom, black 30%, transparent 100%)",
11799
11933
  WebkitMaskImage: "linear-gradient(to bottom, black 30%, transparent 100%)"
@@ -12230,16 +12364,16 @@ function FilterModal({
12230
12364
  };
12231
12365
  const handleReset = () => {
12232
12366
  onFilterChange({});
12233
- _optionalChain([onTagsChange, 'optionalCall', _225 => _225([])]);
12367
+ _optionalChain([onTagsChange, 'optionalCall', _228 => _228([])]);
12234
12368
  onClose();
12235
12369
  };
12236
12370
  const handleApply = () => {
12237
12371
  onFilterChange(selectedFilters);
12238
- _optionalChain([onTagsChange, 'optionalCall', _226 => _226(pendingTags)]);
12372
+ _optionalChain([onTagsChange, 'optionalCall', _229 => _229(pendingTags)]);
12239
12373
  onClose();
12240
12374
  };
12241
12375
  const getColumnDirection = (columnKey) => {
12242
- return _optionalChain([sortConfig, 'optionalAccess', _227 => _227.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
12376
+ return _optionalChain([sortConfig, 'optionalAccess', _230 => _230.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
12243
12377
  };
12244
12378
  const hasSort = !!sortConfig && sortConfig.columns.length > 0;
12245
12379
  const hasFilterGroups = filterGroups.length > 0;
@@ -12288,7 +12422,7 @@ function FilterModal({
12288
12422
  {
12289
12423
  column,
12290
12424
  currentDirection: getColumnDirection(column.key),
12291
- onSort: (direction) => _optionalChain([onSort, 'optionalCall', _228 => _228(column.key, direction)]),
12425
+ onSort: (direction) => _optionalChain([onSort, 'optionalCall', _231 => _231(column.key, direction)]),
12292
12426
  onClear: onSortClear ? () => onSortClear(column.key) : void 0
12293
12427
  },
12294
12428
  column.key
@@ -12357,7 +12491,7 @@ var SecondaryAction = ({ action }) => {
12357
12491
  e.preventDefault();
12358
12492
  return;
12359
12493
  }
12360
- _optionalChain([action, 'access', _229 => _229.onClick, 'optionalCall', _230 => _230()]);
12494
+ _optionalChain([action, 'access', _232 => _232.onClick, 'optionalCall', _233 => _233()]);
12361
12495
  },
12362
12496
  [action]
12363
12497
  );
@@ -12398,13 +12532,13 @@ var MenuItem = ({ item, onItemClick }) => {
12398
12532
  const activate = _react.useCallback.call(void 0, () => {
12399
12533
  if (item.disabled) return;
12400
12534
  if (item.type === "checkbox") {
12401
- _optionalChain([item, 'access', _231 => _231.onClick, 'optionalCall', _232 => _232()]);
12402
- _optionalChain([onItemClick, 'optionalCall', _233 => _233(item)]);
12535
+ _optionalChain([item, 'access', _234 => _234.onClick, 'optionalCall', _235 => _235()]);
12536
+ _optionalChain([onItemClick, 'optionalCall', _236 => _236(item)]);
12403
12537
  return;
12404
12538
  }
12405
12539
  if (item.type === "submenu") return;
12406
- _optionalChain([item, 'access', _234 => _234.onClick, 'optionalCall', _235 => _235()]);
12407
- _optionalChain([onItemClick, 'optionalCall', _236 => _236(item)]);
12540
+ _optionalChain([item, 'access', _237 => _237.onClick, 'optionalCall', _238 => _238()]);
12541
+ _optionalChain([onItemClick, 'optionalCall', _239 => _239(item)]);
12408
12542
  }, [item, onItemClick]);
12409
12543
  const handleClick = _react.useCallback.call(void 0,
12410
12544
  (e) => {
@@ -12430,8 +12564,8 @@ var MenuItem = ({ item, onItemClick }) => {
12430
12564
  e.stopPropagation();
12431
12565
  return;
12432
12566
  }
12433
- _optionalChain([item, 'access', _237 => _237.onClick, 'optionalCall', _238 => _238()]);
12434
- _optionalChain([onItemClick, 'optionalCall', _239 => _239(item)]);
12567
+ _optionalChain([item, 'access', _240 => _240.onClick, 'optionalCall', _241 => _241()]);
12568
+ _optionalChain([onItemClick, 'optionalCall', _242 => _242(item)]);
12435
12569
  },
12436
12570
  [item, onItemClick]
12437
12571
  );
@@ -12586,7 +12720,7 @@ var ActionsMenuDropdown = ({
12586
12720
  const [open, setOpen] = _react.useState.call(void 0, false);
12587
12721
  const handleItemClick = _react.useCallback.call(void 0,
12588
12722
  (item) => {
12589
- _optionalChain([onItemClick, 'optionalCall', _240 => _240(item)]);
12723
+ _optionalChain([onItemClick, 'optionalCall', _243 => _243(item)]);
12590
12724
  if (item.type !== "checkbox" && item.type !== "submenu") {
12591
12725
  setOpen(false);
12592
12726
  }
@@ -12757,7 +12891,7 @@ function IconButtonsVariant({
12757
12891
  }) {
12758
12892
  const desktopActions = actions.filter((a) => !a.showOnlyMobile);
12759
12893
  const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
12760
- const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _241 => _241[0], 'access', _242 => _242.submenu, 'optionalAccess', _243 => _243.length]);
12894
+ const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _244 => _244[0], 'access', _245 => _245.submenu, 'optionalAccess', _246 => _246.length]);
12761
12895
  const singleAction = isSingleAction ? actions[0] : null;
12762
12896
  const useSingleActionMobile = isSingleAction && !hasMenuActions;
12763
12897
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -13928,7 +14062,7 @@ function getShellIcon(shellType) {
13928
14062
  if (!shellType) return void 0;
13929
14063
  const normalized = shellType.toUpperCase();
13930
14064
  const shellDef = SHELL_TYPES.find((s) => s.id === normalized);
13931
- return _optionalChain([shellDef, 'optionalAccess', _244 => _244.icon]);
14065
+ return _optionalChain([shellDef, 'optionalAccess', _247 => _247.icon]);
13932
14066
  }
13933
14067
 
13934
14068
  // src/types/os.types.ts
@@ -14001,7 +14135,7 @@ function getOSIcon(osType) {
14001
14135
  const normalized = normalizeOSType(osType);
14002
14136
  if (!normalized) return void 0;
14003
14137
  const osTypeDef = OS_TYPES.find((t) => t.id === normalized);
14004
- return _optionalChain([osTypeDef, 'optionalAccess', _245 => _245.icon]);
14138
+ return _optionalChain([osTypeDef, 'optionalAccess', _248 => _248.icon]);
14005
14139
  }
14006
14140
  function getOSTypeDefinition(osType) {
14007
14141
  if (!osType) return void 0;
@@ -14011,7 +14145,7 @@ function getOSTypeDefinition(osType) {
14011
14145
  }
14012
14146
  function getOSPlatformId(osType) {
14013
14147
  const osTypeDef = getOSTypeDefinition(osType);
14014
- return _optionalChain([osTypeDef, 'optionalAccess', _246 => _246.platformId]);
14148
+ return _optionalChain([osTypeDef, 'optionalAccess', _249 => _249.platformId]);
14015
14149
  }
14016
14150
  function isOSPlatform(deviceOS, targetPlatform) {
14017
14151
  if (!deviceOS || !targetPlatform) return false;
@@ -14060,7 +14194,7 @@ function formatPhoneE164(phoneNumber, countryCode) {
14060
14194
  if (parsed && parsed.isValid()) {
14061
14195
  return parsed.format("E.164");
14062
14196
  }
14063
- } catch (e14) {
14197
+ } catch (e15) {
14064
14198
  }
14065
14199
  const dialCode = `+${_libphonenumberjs.getCountryCallingCode.call(void 0, countryCode)}`;
14066
14200
  const digits = phoneNumber.replace(/\D/g, "");
@@ -14104,10 +14238,10 @@ var GENERIC_EMAIL_DOMAINS = [
14104
14238
  ];
14105
14239
  function extractDomainFromEmail(email) {
14106
14240
  if (!email || !email.includes("@")) return null;
14107
- return _optionalChain([email, 'access', _247 => _247.split, 'call', _248 => _248("@"), 'access', _249 => _249[1], 'optionalAccess', _250 => _250.toLowerCase, 'call', _251 => _251()]) || null;
14241
+ return _optionalChain([email, 'access', _250 => _250.split, 'call', _251 => _251("@"), 'access', _252 => _252[1], 'optionalAccess', _253 => _253.toLowerCase, 'call', _254 => _254()]) || null;
14108
14242
  }
14109
14243
  function normalizeDomain(domain) {
14110
- return _optionalChain([domain, 'optionalAccess', _252 => _252.toLowerCase, 'call', _253 => _253(), 'access', _254 => _254.replace, 'call', _255 => _255(/^https?:\/\//, ""), 'access', _256 => _256.replace, 'call', _257 => _257(/^www\./, ""), 'access', _258 => _258.split, 'call', _259 => _259("/"), 'access', _260 => _260[0], 'access', _261 => _261.trim, 'call', _262 => _262()]) || "";
14244
+ return _optionalChain([domain, 'optionalAccess', _255 => _255.toLowerCase, 'call', _256 => _256(), 'access', _257 => _257.replace, 'call', _258 => _258(/^https?:\/\//, ""), 'access', _259 => _259.replace, 'call', _260 => _260(/^www\./, ""), 'access', _261 => _261.split, 'call', _262 => _262("/"), 'access', _263 => _263[0], 'access', _264 => _264.trim, 'call', _265 => _265()]) || "";
14111
14245
  }
14112
14246
  function isGenericDomain(domain) {
14113
14247
  const normalized = normalizeDomain(domain);
@@ -14273,7 +14407,7 @@ async function extractImageEdgeColorAsync(imageUrl) {
14273
14407
  }
14274
14408
  const r = Math.round(best.r / best.count), g = Math.round(best.g / best.count), b = Math.round(best.b / best.count);
14275
14409
  resolve(`#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`);
14276
- } catch (e15) {
14410
+ } catch (e16) {
14277
14411
  resolve("#000000");
14278
14412
  }
14279
14413
  };
@@ -14282,48 +14416,6 @@ async function extractImageEdgeColorAsync(imageUrl) {
14282
14416
  });
14283
14417
  }
14284
14418
 
14285
- // src/utils/image-proxy.ts
14286
- function getProxiedImageUrl(imageUrl, options) {
14287
- if (!imageUrl) return null;
14288
- const proxyPrefix = _optionalChain([options, 'optionalAccess', _263 => _263.proxyPrefix]);
14289
- const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _264 => _264.skipDomains]), () => ( []));
14290
- const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _265 => _265.directHttps]), () => ( false));
14291
- if (proxyPrefix && imageUrl.includes(proxyPrefix)) {
14292
- return imageUrl;
14293
- }
14294
- if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) {
14295
- return imageUrl;
14296
- }
14297
- if (directHttps && imageUrl.startsWith("https://")) {
14298
- return imageUrl;
14299
- }
14300
- if (!proxyPrefix) {
14301
- return imageUrl;
14302
- }
14303
- for (const domain of skipDomains) {
14304
- if (imageUrl.includes(domain)) {
14305
- return imageUrl;
14306
- }
14307
- }
14308
- return `${proxyPrefix}?url=${encodeURIComponent(imageUrl)}`;
14309
- }
14310
- function urlPathLooksLikeSvg(imageUrl) {
14311
- try {
14312
- return /\.svg$/i.test(new URL(imageUrl).pathname);
14313
- } catch (e16) {
14314
- return /\.svg(\?|#|$)/i.test(imageUrl);
14315
- }
14316
- }
14317
- function shouldProxyImage(imageUrl, proxyPrefix) {
14318
- if (!imageUrl) return false;
14319
- if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) return false;
14320
- if (proxyPrefix && imageUrl.includes(proxyPrefix)) return false;
14321
- return true;
14322
- }
14323
- function generateImageSizes(_url) {
14324
- return `(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw`;
14325
- }
14326
-
14327
14419
  // src/utils/date-utils.ts
14328
14420
  function formatRelativeTime(timestamp) {
14329
14421
  const now = /* @__PURE__ */ new Date();
@@ -15155,12 +15247,67 @@ var OPENFRAME_DEV_SECTIONS = {
15155
15247
  };
15156
15248
 
15157
15249
  // src/utils/scroll-into-view.ts
15250
+ var activeRaf = 0;
15251
+ var teardownActive = null;
15252
+ function cancelActiveScroll() {
15253
+ if (activeRaf) {
15254
+ cancelAnimationFrame(activeRaf);
15255
+ activeRaf = 0;
15256
+ }
15257
+ if (teardownActive) {
15258
+ teardownActive();
15259
+ teardownActive = null;
15260
+ }
15261
+ }
15262
+ var easeOutCubic = (t) => 1 - Math.pow(1 - t, 3);
15158
15263
  function scrollElementIntoView(target, options = {}) {
15159
15264
  if (typeof window === "undefined" || !target) return;
15160
- const { headerOffset = 0, behavior = "smooth", adjustTargetY } = options;
15161
- const rawTargetY = target.getBoundingClientRect().top + window.scrollY - headerOffset;
15162
- const finalY = adjustTargetY ? adjustTargetY(rawTargetY) : rawTargetY;
15163
- window.scrollTo({ top: Math.max(0, finalY), behavior });
15265
+ const { headerOffset = 0, behavior = "smooth", adjustTargetY, durationMs = 320 } = options;
15266
+ const computeTarget = () => {
15267
+ const raw = target.getBoundingClientRect().top + window.scrollY - headerOffset;
15268
+ const adjusted = adjustTargetY ? adjustTargetY(raw) : raw;
15269
+ const maxScroll = Math.max(
15270
+ 0,
15271
+ document.documentElement.scrollHeight - window.innerHeight
15272
+ );
15273
+ return Math.min(Math.max(0, adjusted), maxScroll);
15274
+ };
15275
+ cancelActiveScroll();
15276
+ const prefersReduced = typeof window.matchMedia === "function" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
15277
+ if (behavior === "instant" || behavior === "auto" || prefersReduced) {
15278
+ window.scrollTo(0, computeTarget());
15279
+ return;
15280
+ }
15281
+ let startY = null;
15282
+ let startTime = 0;
15283
+ const onUserGesture = () => cancelActiveScroll();
15284
+ window.addEventListener("wheel", onUserGesture, { passive: true });
15285
+ window.addEventListener("touchmove", onUserGesture, { passive: true });
15286
+ teardownActive = () => {
15287
+ window.removeEventListener("wheel", onUserGesture);
15288
+ window.removeEventListener("touchmove", onUserGesture);
15289
+ };
15290
+ const step = (now) => {
15291
+ if (startY === null) {
15292
+ startY = window.scrollY;
15293
+ startTime = now;
15294
+ }
15295
+ const targetY = computeTarget();
15296
+ const t = Math.min(1, (now - startTime) / durationMs);
15297
+ const y = startY + (targetY - startY) * easeOutCubic(t);
15298
+ window.scrollTo(0, y);
15299
+ if (t < 1) {
15300
+ activeRaf = requestAnimationFrame(step);
15301
+ } else {
15302
+ window.scrollTo(0, computeTarget());
15303
+ activeRaf = 0;
15304
+ if (teardownActive) {
15305
+ teardownActive();
15306
+ teardownActive = null;
15307
+ }
15308
+ }
15309
+ };
15310
+ activeRaf = requestAnimationFrame(step);
15164
15311
  }
15165
15312
 
15166
15313
  // src/components/ui/benefit-card.tsx
@@ -30013,13 +30160,15 @@ function TicketDetailSection({ label, children, className }) {
30013
30160
  _chunk664KA5FIcjs.init_cn.call(void 0, );
30014
30161
 
30015
30162
 
30016
- function TicketAttachmentsList({ attachments, className }) {
30163
+ function TicketAttachmentsList({ attachments, className, size = "default" }) {
30017
30164
  if (attachments.length === 0) return null;
30165
+ const compact = size === "compact";
30018
30166
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk664KA5FIcjs.cn.call(void 0, "rounded-[6px] border border-ods-border overflow-hidden", className), children: attachments.map((attachment, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
30019
30167
  "div",
30020
30168
  {
30021
30169
  className: _chunk664KA5FIcjs.cn.call(void 0,
30022
- "flex items-center gap-4 px-4 py-3 bg-ods-card",
30170
+ "flex items-center bg-ods-card",
30171
+ compact ? "gap-2 px-2 py-1.5" : "gap-4 px-4 py-3",
30023
30172
  index < attachments.length - 1 && "border-b border-ods-border"
30024
30173
  ),
30025
30174
  children: [
@@ -30028,13 +30177,29 @@ function TicketAttachmentsList({ attachments, className }) {
30028
30177
  {
30029
30178
  src: attachment.thumbnailSrc,
30030
30179
  alt: attachment.fileName,
30031
- size: "md",
30180
+ size: compact ? "sm" : "md",
30032
30181
  className: "shrink-0"
30033
30182
  }
30034
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 size-10 flex items-center justify-center rounded-[6px] bg-ods-card border border-ods-border", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.FileIcon, { className: "size-6 text-ods-text-secondary" }) }),
30183
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30184
+ "div",
30185
+ {
30186
+ className: _chunk664KA5FIcjs.cn.call(void 0,
30187
+ "shrink-0 flex items-center justify-center rounded-[6px] bg-ods-card border border-ods-border",
30188
+ compact ? "size-8" : "size-10"
30189
+ ),
30190
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.FileIcon, { className: _chunk664KA5FIcjs.cn.call(void 0, "text-ods-text-secondary", compact ? "size-4" : "size-6") })
30191
+ }
30192
+ ),
30035
30193
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex-1 min-w-0 overflow-hidden", children: [
30036
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary truncate", title: attachment.fileName, children: attachment.fileName }),
30037
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: attachment.fileSize })
30194
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30195
+ "p",
30196
+ {
30197
+ className: _chunk664KA5FIcjs.cn.call(void 0, "text-ods-text-primary truncate", compact ? "text-h5" : "text-h4"),
30198
+ title: attachment.fileName,
30199
+ children: attachment.fileName
30200
+ }
30201
+ ),
30202
+ attachment.fileSize && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h6 text-ods-text-secondary", children: attachment.fileSize })
30038
30203
  ] }),
30039
30204
  attachment.onDownload && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30040
30205
  "button",
@@ -30043,7 +30208,7 @@ function TicketAttachmentsList({ attachments, className }) {
30043
30208
  onClick: attachment.onDownload,
30044
30209
  className: "shrink-0 text-ods-text-secondary hover:text-ods-text-primary transition-colors",
30045
30210
  "aria-label": `Download ${attachment.fileName}`,
30046
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Download, { className: "size-6" })
30211
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Download, { className: compact ? "size-4" : "size-6" })
30047
30212
  }
30048
30213
  )
30049
30214
  ]
@@ -37391,16 +37556,6 @@ function useUnifiedChat(options) {
37391
37556
  );
37392
37557
  }
37393
37558
 
37394
- // src/components/chat/hooks/use-proxied-image-url.ts
37395
- function useProxiedImageUrl(url) {
37396
- const r = _chunkHOHDXYPRcjs.useRequiredChatRuntime.call(void 0, );
37397
- return _nullishCoalesce(getProxiedImageUrl(_nullishCoalesce(url, () => ( "")), {
37398
- proxyPrefix: r.endpoints.imageProxyUrlPrefix,
37399
- skipDomains: r.endpoints.imageProxySkipDomains,
37400
- directHttps: true
37401
- }), () => ( ""));
37402
- }
37403
-
37404
37559
  // src/components/chat/utils/process-historical-messages.ts
37405
37560
  function getOwnerDisplayName(owner) {
37406
37561
  if (_optionalChain([owner, 'optionalAccess', _952 => _952.type]) === OWNER_TYPE.ADMIN && owner.user) {
@@ -39509,5 +39664,7 @@ function EmbeddableChatInner({
39509
39664
 
39510
39665
 
39511
39666
 
39512
- 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.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.getCaptionsUrl = getCaptionsUrl; 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.NotificationPopups = NotificationPopups; 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.FilterPillRow = FilterPillRow; 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;
39513
- //# sourceMappingURL=chunk-ZGTDUPTW.cjs.map
39667
+
39668
+
39669
+ 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.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.useProxiedImageUrl = useProxiedImageUrl; exports.ChatMessageRow = ChatMessageRow; exports.ChatMessageRowSkeleton = ChatMessageRowSkeleton; 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.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.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.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.getCaptionsUrl = getCaptionsUrl; 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.NotificationPopups = NotificationPopups; 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.FilterPillRow = FilterPillRow; 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;
39670
+ //# sourceMappingURL=chunk-YWDC5BXM.cjs.map