@flamingo-stack/openframe-frontend-core 0.0.178 → 0.0.179-snapshot.20260514181702

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 (55) hide show
  1. package/dist/{chunk-AAX27BCR.js → chunk-DV2GT7RI.js} +3703 -4168
  2. package/dist/chunk-DV2GT7RI.js.map +1 -0
  3. package/dist/{chunk-L4T24AN4.cjs → chunk-JFGORTXV.cjs} +868 -1333
  4. package/dist/chunk-JFGORTXV.cjs.map +1 -0
  5. package/dist/components/chat/chat-message-list.d.ts.map +1 -1
  6. package/dist/components/features/entity-video-section.d.ts +54 -0
  7. package/dist/components/features/entity-video-section.d.ts.map +1 -0
  8. package/dist/components/features/index.cjs +18 -2
  9. package/dist/components/features/index.cjs.map +1 -1
  10. package/dist/components/features/index.d.ts +4 -2
  11. package/dist/components/features/index.d.ts.map +1 -1
  12. package/dist/components/features/index.js +21 -5
  13. package/dist/components/features/video-bites-display.d.ts +38 -0
  14. package/dist/components/features/video-bites-display.d.ts.map +1 -0
  15. package/dist/components/features/video-ratio-tabs.d.ts +62 -0
  16. package/dist/components/features/video-ratio-tabs.d.ts.map +1 -0
  17. package/dist/components/features/video.d.ts +94 -0
  18. package/dist/components/features/video.d.ts.map +1 -0
  19. package/dist/components/index.cjs +18 -2
  20. package/dist/components/index.cjs.map +1 -1
  21. package/dist/components/index.js +21 -5
  22. package/dist/components/media-carousel.d.ts.map +1 -1
  23. package/dist/components/navigation/index.cjs +2 -2
  24. package/dist/components/navigation/index.js +1 -1
  25. package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
  26. package/dist/components/ui/index.cjs +2 -2
  27. package/dist/components/ui/index.js +1 -1
  28. package/dist/index.cjs +18 -2
  29. package/dist/index.cjs.map +1 -1
  30. package/dist/index.js +21 -5
  31. package/package.json +2 -2
  32. package/src/components/chat/chat-message-list.tsx +62 -18
  33. package/src/components/features/entity-video-section.tsx +175 -0
  34. package/src/components/features/index.ts +9 -2
  35. package/src/components/features/video-bites-display.tsx +216 -0
  36. package/src/components/features/video-ratio-tabs.tsx +174 -0
  37. package/src/components/features/video.tsx +474 -0
  38. package/src/components/media-carousel.tsx +43 -236
  39. package/src/components/shared/product-release/release-detail-page.tsx +26 -19
  40. package/dist/chunk-AAX27BCR.js.map +0 -1
  41. package/dist/chunk-L4T24AN4.cjs.map +0 -1
  42. package/dist/components/features/video-player.d.ts +0 -44
  43. package/dist/components/features/video-player.d.ts.map +0 -1
  44. package/dist/components/features/youtube-embed.d.ts +0 -31
  45. package/dist/components/features/youtube-embed.d.ts.map +0 -1
  46. package/dist/utils/lite-youtube-embed-stub.d.ts +0 -8
  47. package/dist/utils/lite-youtube-embed-stub.d.ts.map +0 -1
  48. package/dist/utils/lite-youtube-embed.d.ts +0 -9
  49. package/dist/utils/lite-youtube-embed.d.ts.map +0 -1
  50. package/src/components/features/.video-player.md +0 -44
  51. package/src/components/features/.youtube-embed.md +0 -40
  52. package/src/components/features/video-player.tsx +0 -893
  53. package/src/components/features/youtube-embed.tsx +0 -158
  54. package/src/utils/lite-youtube-embed-stub.tsx +0 -21
  55. package/src/utils/lite-youtube-embed.tsx +0 -46
@@ -118,13 +118,6 @@ var _chunkOFAYLG6Dcjs = require('./chunk-OFAYLG6D.cjs');
118
118
 
119
119
 
120
120
 
121
-
122
-
123
-
124
-
125
-
126
-
127
-
128
121
 
129
122
 
130
123
 
@@ -150,7 +143,7 @@ var _chunkVRHGVLSLcjs = require('./chunk-VRHGVLSL.cjs');
150
143
 
151
144
  // src/components/pagination.tsx
152
145
  var _lucidereact = require('lucide-react');
153
- var _react = require('react'); var React33 = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React7 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React11 = _interopRequireWildcard(_react); var React10 = _interopRequireWildcard(_react); var React12 = _interopRequireWildcard(_react); var React13 = _interopRequireWildcard(_react); var React14 = _interopRequireWildcard(_react); var React15 = _interopRequireWildcard(_react); var React16 = _interopRequireWildcard(_react); var React17 = _interopRequireWildcard(_react); var React19 = _interopRequireWildcard(_react); var React24 = _interopRequireWildcard(_react); var React27 = _interopRequireWildcard(_react); var React28 = _interopRequireWildcard(_react); var React31 = _interopRequireWildcard(_react); var React35 = _interopRequireWildcard(_react); var React48 = _interopRequireWildcard(_react); var React49 = _interopRequireWildcard(_react); var React51 = _interopRequireWildcard(_react); var React52 = _interopRequireWildcard(_react); var React53 = _interopRequireWildcard(_react); var React54 = _interopRequireWildcard(_react); var React55 = _interopRequireWildcard(_react); var React56 = _interopRequireWildcard(_react); var React57 = _interopRequireWildcard(_react); var React58 = _interopRequireWildcard(_react); var React59 = _interopRequireWildcard(_react); var React60 = _interopRequireWildcard(_react); var React61 = _interopRequireWildcard(_react); var React62 = _interopRequireWildcard(_react); var React63 = _interopRequireWildcard(_react); var React64 = _interopRequireWildcard(_react); var React66 = _interopRequireWildcard(_react); var React67 = _interopRequireWildcard(_react); var React71 = _interopRequireWildcard(_react); var React70 = _interopRequireWildcard(_react); var React74 = _interopRequireWildcard(_react); var React75 = _interopRequireWildcard(_react); var React78 = _interopRequireWildcard(_react); var React77 = _interopRequireWildcard(_react); var React80 = _interopRequireWildcard(_react); var React82 = _interopRequireWildcard(_react); var React83 = _interopRequireWildcard(_react); var React85 = _interopRequireWildcard(_react); var React86 = _interopRequireWildcard(_react); var React87 = _interopRequireWildcard(_react); var React89 = _interopRequireWildcard(_react); var React88 = _interopRequireWildcard(_react); var React94 = _interopRequireWildcard(_react); var React97 = _interopRequireWildcard(_react); var React101 = _interopRequireWildcard(_react); var React100 = _interopRequireWildcard(_react); var React98 = _interopRequireWildcard(_react); var React99 = _interopRequireWildcard(_react);
146
+ var _react = require('react'); var React33 = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React = _interopRequireWildcard(_react); var React3 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React7 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React11 = _interopRequireWildcard(_react); var React10 = _interopRequireWildcard(_react); var React12 = _interopRequireWildcard(_react); var React13 = _interopRequireWildcard(_react); var React14 = _interopRequireWildcard(_react); var React15 = _interopRequireWildcard(_react); var React16 = _interopRequireWildcard(_react); var React17 = _interopRequireWildcard(_react); var React19 = _interopRequireWildcard(_react); var React24 = _interopRequireWildcard(_react); var React27 = _interopRequireWildcard(_react); var React28 = _interopRequireWildcard(_react); var React31 = _interopRequireWildcard(_react); var React35 = _interopRequireWildcard(_react); var React47 = _interopRequireWildcard(_react); var React48 = _interopRequireWildcard(_react); var React50 = _interopRequireWildcard(_react); var React51 = _interopRequireWildcard(_react); var React52 = _interopRequireWildcard(_react); var React53 = _interopRequireWildcard(_react); var React54 = _interopRequireWildcard(_react); var React55 = _interopRequireWildcard(_react); var React56 = _interopRequireWildcard(_react); var React57 = _interopRequireWildcard(_react); var React58 = _interopRequireWildcard(_react); var React59 = _interopRequireWildcard(_react); var React60 = _interopRequireWildcard(_react); var React61 = _interopRequireWildcard(_react); var React62 = _interopRequireWildcard(_react); var React63 = _interopRequireWildcard(_react); var React65 = _interopRequireWildcard(_react); var React66 = _interopRequireWildcard(_react); var React70 = _interopRequireWildcard(_react); var React69 = _interopRequireWildcard(_react); var React73 = _interopRequireWildcard(_react); var React74 = _interopRequireWildcard(_react); var React77 = _interopRequireWildcard(_react); var React76 = _interopRequireWildcard(_react); var React79 = _interopRequireWildcard(_react); var React81 = _interopRequireWildcard(_react); var React82 = _interopRequireWildcard(_react); var React84 = _interopRequireWildcard(_react); var React85 = _interopRequireWildcard(_react); var React86 = _interopRequireWildcard(_react); var React88 = _interopRequireWildcard(_react); var React87 = _interopRequireWildcard(_react); var React93 = _interopRequireWildcard(_react); var React97 = _interopRequireWildcard(_react); var React101 = _interopRequireWildcard(_react); var React100 = _interopRequireWildcard(_react); var React98 = _interopRequireWildcard(_react); var React99 = _interopRequireWildcard(_react);
154
147
  var _jsxruntime = require('react/jsx-runtime');
155
148
  var Pagination, PaginationContent, PaginationItem, PaginationLink, PaginationEllipsis, PaginationPrevious, PaginationNext;
156
149
  var init_pagination = _chunkVRHGVLSLcjs.__esm.call(void 0, {
@@ -5404,7 +5397,7 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5404
5397
  renderEntityCard,
5405
5398
  ...props
5406
5399
  }, ref) => {
5407
- const { scrollRef, contentRef, scrollToBottom } = _usesticktobottom.useStickToBottom.call(void 0, {
5400
+ const { scrollRef, contentRef, scrollToBottom, escapedFromLock } = _usesticktobottom.useStickToBottom.call(void 0, {
5408
5401
  resize: "smooth",
5409
5402
  initial: "instant"
5410
5403
  });
@@ -5433,15 +5426,20 @@ var ChatMessageList = _react.forwardRef.call(void 0,
5433
5426
  }
5434
5427
  if (newCount > prevCount) {
5435
5428
  const isPrepend = prependRef.current.firstMessageId !== void 0 && _optionalChain([messages, 'access', _110 => _110[0], 'optionalAccess', _111 => _111.id]) !== prependRef.current.firstMessageId;
5436
- if (!isPrepend) {
5437
- const newSlice = messages.slice(prevCount);
5438
- const hasNewUser = newSlice.some((m) => m.role === "user");
5439
- if (hasNewUser) {
5440
- void scrollToBottom({ animation: "instant", ignoreEscapes: true });
5441
- }
5429
+ if (isPrepend) return;
5430
+ const newSlice = messages.slice(prevCount);
5431
+ const hasNewUser = newSlice.some((m) => m.role === "user");
5432
+ if (hasNewUser) {
5433
+ void scrollToBottom({ animation: "instant", ignoreEscapes: true });
5434
+ return;
5442
5435
  }
5436
+ void scrollToBottom({ animation: "instant", ignoreEscapes: true });
5437
+ return;
5443
5438
  }
5444
- }, [autoScroll, messages, dialogId, scrollToBottom, scrollEl]);
5439
+ if (!escapedFromLock) {
5440
+ void scrollToBottom({ animation: "smooth" });
5441
+ }
5442
+ }, [autoScroll, messages, dialogId, scrollToBottom, scrollEl, escapedFromLock]);
5445
5443
  _react.useLayoutEffect.call(void 0, () => {
5446
5444
  const el = scrollEl;
5447
5445
  if (!el) {
@@ -13050,59 +13048,231 @@ var ImageCropper = ({
13050
13048
  _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
13051
13049
 
13052
13050
 
13053
- var ChevronLeftIcon = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "15,18 9,12 15,6" }) });
13054
- var ChevronRightIcon = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "9,18 15,12 9,6" }) });
13055
- var PlayIcon2 = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "white", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "path", { d: "M8 5v14l11-7z" }) });
13056
- function getYouTubeVideoId(url) {
13057
- const match = url.match(/(?:youtube\.com\/watch\?v=|youtu\.be\/)([^&\n?#]+)/);
13058
- return match ? match[1] : null;
13051
+ // src/components/features/video.tsx
13052
+
13053
+ var _muxplayerreact = require('@mux/mux-player-react'); var _muxplayerreact2 = _interopRequireDefault(_muxplayerreact);
13054
+
13055
+ var YT_HOSTS = /* @__PURE__ */ new Set([
13056
+ "youtube.com",
13057
+ "www.youtube.com",
13058
+ "m.youtube.com",
13059
+ "youtu.be",
13060
+ "youtube-nocookie.com",
13061
+ "www.youtube-nocookie.com"
13062
+ ]);
13063
+ function isYouTubeUrl(url) {
13064
+ try {
13065
+ return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
13066
+ } catch (e22) {
13067
+ return false;
13068
+ }
13059
13069
  }
13060
- var CarouselYouTubeEmbed = ({ videoId, title }) => {
13061
- const [mounted, setMounted] = _react.useState.call(void 0, false);
13062
- const [isActivated, setIsActivated] = _react.useState.call(void 0, false);
13063
- const [isLoaded, setIsLoaded] = _react.useState.call(void 0, false);
13070
+ var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
13071
+ var BARE_YT_ID_RE = /^[A-Za-z0-9_-]{11}$/;
13072
+ function extractYouTubeId(url) {
13073
+ if (!url) return null;
13074
+ if (BARE_YT_ID_RE.test(url)) return url;
13075
+ let u;
13076
+ try {
13077
+ u = new URL(url, "http://placeholder.local");
13078
+ } catch (e23) {
13079
+ return null;
13080
+ }
13081
+ if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
13082
+ if (u.hostname.toLowerCase().endsWith("youtu.be")) {
13083
+ return _nullishCoalesce(u.pathname.split("/").filter(Boolean)[0], () => ( null));
13084
+ }
13085
+ const v = u.searchParams.get("v");
13086
+ if (v) return v;
13087
+ const m = u.pathname.match(YT_PATH_RE);
13088
+ return m ? m[1] : null;
13089
+ }
13090
+ function Video2(props) {
13091
+ const url = props.url;
13092
+ if (!url) return null;
13093
+ const effectiveKind = resolveKind(props, url);
13094
+ const layout = _nullishCoalesce(props.layout, () => ( "native"));
13095
+ const inner = effectiveKind === "youtube" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13096
+ YouTubeFacade,
13097
+ {
13098
+ url,
13099
+ title: props.title,
13100
+ priority: props.priority,
13101
+ className: props.className,
13102
+ minimalControls: props.minimalControls
13103
+ }
13104
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13105
+ FilePlayer,
13106
+ {
13107
+ url,
13108
+ poster: props.poster,
13109
+ muted: props.muted,
13110
+ srtContent: "srtContent" in props ? props.srtContent : null,
13111
+ captionsUrl: "captionsUrl" in props ? props.captionsUrl : null,
13112
+ className: props.className
13113
+ }
13114
+ );
13115
+ return wrapWithLayout(inner, layout);
13116
+ }
13117
+ function resolveKind(props, url) {
13118
+ if ("kind" in props) {
13119
+ if (props.kind === "youtube") return "youtube";
13120
+ if (props.kind === "file") return "file";
13121
+ }
13122
+ if (BARE_YT_ID_RE.test(url)) return "youtube";
13123
+ return isYouTubeUrl(url) ? "youtube" : "file";
13124
+ }
13125
+ function wrapWithLayout(inner, layout) {
13126
+ switch (layout) {
13127
+ case "centered":
13128
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-3xl aspect-video", children: inner }) });
13129
+ case "fill":
13130
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 w-full h-full", children: inner });
13131
+ case "native":
13132
+ default:
13133
+ return inner;
13134
+ }
13135
+ }
13136
+ function FilePlayer({
13137
+ url,
13138
+ poster,
13139
+ muted,
13140
+ srtContent,
13141
+ captionsUrl,
13142
+ className
13143
+ }) {
13144
+ if (process.env.NODE_ENV !== "production" && srtContent && !captionsUrl) {
13145
+ console.warn(
13146
+ "[Video] srtContent supplied without captionsUrl \u2014 captions will not render. Pass captionsUrl (the VTT URL) instead; raw SRT text overlays are no longer supported."
13147
+ );
13148
+ }
13149
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13150
+ _muxplayerreact2.default,
13151
+ {
13152
+ src: url,
13153
+ poster: poster || void 0,
13154
+ streamType: "on-demand",
13155
+ playsInline: true,
13156
+ muted,
13157
+ preferCmcd: "header",
13158
+ accentColor: "var(--ods-accent)",
13159
+ className,
13160
+ style: { width: "100%", height: "100%" },
13161
+ children: captionsUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13162
+ "track",
13163
+ {
13164
+ kind: "captions",
13165
+ src: captionsUrl,
13166
+ srcLang: "en",
13167
+ label: "English",
13168
+ default: true
13169
+ }
13170
+ ) : null
13171
+ }
13172
+ );
13173
+ }
13174
+ function YouTubeFacade({
13175
+ url,
13176
+ title = "YouTube Video",
13177
+ priority,
13178
+ className,
13179
+ minimalControls
13180
+ }) {
13181
+ const videoId = extractYouTubeId(url);
13182
+ if (!videoId) return null;
13183
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, YouTubeFacadeInner, { videoId, title, priority, className, minimalControls });
13184
+ }
13185
+ function YouTubeFacadeInner({
13186
+ videoId,
13187
+ title,
13188
+ priority,
13189
+ className,
13190
+ minimalControls
13191
+ }) {
13192
+ const [activated, setActivated] = _react.useState.call(void 0, false);
13193
+ const wrapperRef = _react.useRef.call(void 0, null);
13194
+ const embedParams = new URLSearchParams({
13195
+ autoplay: "1",
13196
+ rel: "0",
13197
+ modestbranding: "1",
13198
+ playsinline: "1"
13199
+ });
13200
+ if (minimalControls) {
13201
+ embedParams.set("controls", "0");
13202
+ embedParams.set("showinfo", "0");
13203
+ embedParams.set("fs", "0");
13204
+ embedParams.set("iv_load_policy", "3");
13205
+ embedParams.set("cc_load_policy", "0");
13206
+ embedParams.set("disablekb", "1");
13207
+ }
13208
+ const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?${embedParams.toString()}`;
13209
+ const posterJpg = `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
13210
+ const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/mqdefault.webp`;
13064
13211
  _react.useEffect.call(void 0, () => {
13065
- setMounted(true);
13066
- }, []);
13067
- if (!mounted) {
13068
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-black rounded-lg overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-white text-sm", children: "Loading video..." }) }) });
13212
+ if (!activated) return;
13213
+ function handleOutsideClick(event) {
13214
+ const target = event.target;
13215
+ if (!target) return;
13216
+ if (_optionalChain([wrapperRef, 'access', _389 => _389.current, 'optionalAccess', _390 => _390.contains, 'call', _391 => _391(target)])) return;
13217
+ setActivated(false);
13218
+ }
13219
+ document.addEventListener("pointerdown", handleOutsideClick);
13220
+ return () => document.removeEventListener("pointerdown", handleOutsideClick);
13221
+ }, [activated]);
13222
+ _react.useEffect.call(void 0, () => {
13223
+ if (!activated) return;
13224
+ function handleEscape(event) {
13225
+ if (event.key === "Escape") setActivated(false);
13226
+ }
13227
+ document.addEventListener("keydown", handleEscape);
13228
+ return () => document.removeEventListener("keydown", handleEscape);
13229
+ }, [activated]);
13230
+ const wrapperClass = `relative w-full ${_nullishCoalesce(className, () => ( ""))}`;
13231
+ const wrapperStyle = { paddingBottom: "56.25%" };
13232
+ if (activated) {
13233
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13234
+ "iframe",
13235
+ {
13236
+ src: embedUrl,
13237
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
13238
+ allowFullScreen: true,
13239
+ title,
13240
+ className: "absolute inset-0 w-full h-full border-0 rounded-lg"
13241
+ }
13242
+ ) });
13069
13243
  }
13070
- const thumbnailUrl = `https://i.ytimg.com/vi/${videoId}/maxresdefault.jpg`;
13071
- const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?autoplay=1&playsinline=1&rel=0&modestbranding=1`;
13072
- const handleActivate = () => {
13073
- setIsActivated(true);
13074
- setTimeout(() => setIsLoaded(true), 100);
13075
- };
13076
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-black", children: !isActivated ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
13244
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: wrapperRef, className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
13077
13245
  "button",
13078
13246
  {
13079
- onClick: handleActivate,
13080
- className: "absolute inset-0 cursor-pointer group",
13081
- "aria-label": `Play video: ${title}`,
13247
+ type: "button",
13248
+ "aria-label": `Play: ${title}`,
13249
+ onClick: () => setActivated(true),
13250
+ className: "group absolute inset-0 p-0 m-0 border border-ods-border rounded-lg overflow-hidden bg-ods-card cursor-pointer",
13082
13251
  children: [
13083
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13084
- "img",
13085
- {
13086
- src: thumbnailUrl,
13087
- alt: title,
13088
- className: "w-full h-full object-cover transition-opacity group-hover:opacity-90",
13089
- loading: "lazy"
13090
- }
13091
- ),
13092
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-black/20 group-hover:bg-black/30 transition-colors", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-red-600 rounded-full p-4 group-hover:scale-110 transition-transform", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlayIcon2, {}) }) })
13252
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
13253
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
13254
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13255
+ "img",
13256
+ {
13257
+ src: posterJpg,
13258
+ alt: title,
13259
+ loading: "lazy",
13260
+ fetchPriority: priority ? "high" : "low",
13261
+ decoding: priority ? "sync" : "async",
13262
+ className: "absolute inset-0 w-full h-full object-cover"
13263
+ }
13264
+ )
13265
+ ] }),
13266
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent text-ods-text-on-accent shadow-lg transition-transform duration-200 group-hover:scale-110", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", className: "ml-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polygon", { points: "5,3 19,12 5,21" }) }) }) })
13093
13267
  ]
13094
13268
  }
13095
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0", children: isLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13096
- "iframe",
13097
- {
13098
- src: embedUrl,
13099
- title,
13100
- className: "w-full h-full",
13101
- allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture",
13102
- allowFullScreen: true
13103
- }
13104
- ) }) });
13105
- };
13269
+ ) });
13270
+ }
13271
+
13272
+ // src/components/media-carousel.tsx
13273
+
13274
+ var ChevronLeftIcon = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "15,18 9,12 15,6" }) });
13275
+ var ChevronRightIcon = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: "24", height: "24", fill: "none", stroke: "currentColor", viewBox: "0 0 24 24", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polyline", { points: "9,18 15,12 9,6" }) });
13106
13276
  var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
13107
13277
  media,
13108
13278
  className,
@@ -13114,9 +13284,13 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
13114
13284
  const [currentIndex, setCurrentIndex] = _react.useState.call(void 0, 0);
13115
13285
  const [touchStart, setTouchStart] = _react.useState.call(void 0, null);
13116
13286
  const [touchEnd, setTouchEnd] = _react.useState.call(void 0, null);
13117
- const [playingVideos, setPlayingVideos] = _react.useState.call(void 0, /* @__PURE__ */ new Set());
13118
13287
  const carouselRef = _react.useRef.call(void 0, null);
13119
13288
  const thumbnailsRef = _react.useRef.call(void 0, null);
13289
+ _react.useEffect.call(void 0, () => {
13290
+ if (currentIndex >= media.length && media.length > 0) {
13291
+ setCurrentIndex(media.length - 1);
13292
+ }
13293
+ }, [media.length, currentIndex]);
13120
13294
  if (!media || media.length === 0) {
13121
13295
  return null;
13122
13296
  }
@@ -13124,71 +13298,14 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
13124
13298
  if (!currentItem) {
13125
13299
  return null;
13126
13300
  }
13127
- const handleVideoClick = _react.useCallback.call(void 0, (index) => {
13128
- const item = media[index];
13129
- if (item.type !== "video") return;
13130
- const videoElements = document.querySelectorAll(`video[data-video-index="${index}"]`);
13131
- const video = videoElements[0];
13132
- if (!video) {
13133
- console.log("\u274C Video element not found for index:", index);
13134
- return;
13135
- }
13136
- if (video.paused) {
13137
- const playPromise = video.play();
13138
- if (playPromise !== void 0) {
13139
- playPromise.then(() => {
13140
- const playButton = _optionalChain([video, 'access', _389 => _389.parentElement, 'optionalAccess', _390 => _390.querySelector, 'call', _391 => _391(".video-play-button")]);
13141
- if (playButton) {
13142
- playButton.style.display = "none";
13143
- }
13144
- }).catch((error) => {
13145
- if (error.name === "NotSupportedError" || error.name === "MediaElementError") {
13146
- const fallbackDiv = document.createElement("div");
13147
- fallbackDiv.className = "absolute inset-0 flex items-center justify-center bg-ods-card text-center p-4";
13148
- fallbackDiv.innerHTML = `
13149
- <div>
13150
- <p class="text-ods-text-primary text-sm mb-2">Video format not supported</p>
13151
- <a href="${item.src}" target="_blank" rel="noopener noreferrer"
13152
- class="text-ods-accent hover:text-[#FFD700] text-sm">
13153
- Open Video Directly
13154
- </a>
13155
- </div>
13156
- `;
13157
- _optionalChain([video, 'access', _392 => _392.parentElement, 'optionalAccess', _393 => _393.appendChild, 'call', _394 => _394(fallbackDiv)]);
13158
- }
13159
- });
13160
- }
13161
- } else {
13162
- video.pause();
13163
- const playButton = _optionalChain([video, 'access', _395 => _395.parentElement, 'optionalAccess', _396 => _396.querySelector, 'call', _397 => _397(".video-play-button")]);
13164
- if (playButton) {
13165
- playButton.style.display = "flex";
13166
- }
13167
- }
13168
- }, [media]);
13169
13301
  const nextSlide = _react.useCallback.call(void 0, () => {
13170
- const currentVideo = document.querySelector(`[data-video-index="${currentIndex}"]`);
13171
- if (currentVideo && !currentVideo.paused) {
13172
- currentVideo.pause();
13173
- }
13174
- setPlayingVideos(/* @__PURE__ */ new Set());
13175
13302
  setCurrentIndex((prev) => (prev + 1) % media.length);
13176
- }, [currentIndex, media.length]);
13303
+ }, [media.length]);
13177
13304
  const prevSlide = _react.useCallback.call(void 0, () => {
13178
- const currentVideo = document.querySelector(`[data-video-index="${currentIndex}"]`);
13179
- if (currentVideo && !currentVideo.paused) {
13180
- currentVideo.pause();
13181
- }
13182
- setPlayingVideos(/* @__PURE__ */ new Set());
13183
13305
  setCurrentIndex((prev) => (prev - 1 + media.length) % media.length);
13184
- }, [currentIndex, media.length]);
13306
+ }, [media.length]);
13185
13307
  const selectSlide = _react.useCallback.call(void 0, (index) => {
13186
13308
  if (index === currentIndex) return;
13187
- const currentVideo = document.querySelector(`[data-video-index="${currentIndex}"]`);
13188
- if (currentVideo && !currentVideo.paused) {
13189
- currentVideo.pause();
13190
- }
13191
- setPlayingVideos(/* @__PURE__ */ new Set());
13192
13309
  setCurrentIndex(index);
13193
13310
  }, [currentIndex]);
13194
13311
  const handleKeyDown = _react.useCallback.call(void 0, (e) => {
@@ -13221,82 +13338,26 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
13221
13338
  prevSlide();
13222
13339
  }
13223
13340
  };
13224
- const renderYouTubeEmbed = (item, index) => {
13225
- const videoId = getYouTubeVideoId(item.src);
13226
- if (!videoId) {
13227
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-ods-card text-center p-4", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
13228
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-sm mb-2", children: "Invalid YouTube URL" }),
13229
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href: item.src, target: "_blank", rel: "noopener noreferrer", className: "text-ods-accent text-sm", children: "Open Link Directly" })
13230
- ] }) });
13341
+ const renderYouTubeEmbed = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13342
+ Video2,
13343
+ {
13344
+ kind: "youtube",
13345
+ url: item.src,
13346
+ title: item.alt || `Video ${index + 1}`,
13347
+ layout: "fill",
13348
+ priority: index === currentIndex
13231
13349
  }
13232
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CarouselYouTubeEmbed, { videoId, title: item.alt || `Video ${index + 1}` });
13233
- };
13234
- const renderVideo = (item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute inset-0 bg-black", children: [
13235
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
13236
- "video",
13237
- {
13238
- className: `w-full h-full object-${objectFit}`,
13239
- poster: item.poster,
13240
- preload: "metadata",
13241
- playsInline: true,
13242
- controls: false,
13243
- muted: true,
13244
- "data-video-index": index,
13245
- onClick: () => handleVideoClick(index),
13246
- onPlay: () => {
13247
- const playButton = _optionalChain([document, 'access', _398 => _398.querySelector, 'call', _399 => _399(`[data-video-index="${index}"]`), 'optionalAccess', _400 => _400.parentElement, 'optionalAccess', _401 => _401.querySelector, 'call', _402 => _402(".video-play-button")]);
13248
- if (playButton) {
13249
- playButton.style.display = "none";
13250
- }
13251
- },
13252
- onPause: () => {
13253
- const playButton = _optionalChain([document, 'access', _403 => _403.querySelector, 'call', _404 => _404(`[data-video-index="${index}"]`), 'optionalAccess', _405 => _405.parentElement, 'optionalAccess', _406 => _406.querySelector, 'call', _407 => _407(".video-play-button")]);
13254
- if (playButton) {
13255
- playButton.style.display = "flex";
13256
- }
13257
- },
13258
- onLoadedMetadata: (e) => {
13259
- const video = e.target;
13260
- video.currentTime = 1;
13261
- },
13262
- onError: (e) => {
13263
- const target = e.target;
13264
- if (target.crossOrigin) {
13265
- target.crossOrigin = "";
13266
- target.load();
13267
- } else {
13268
- target.style.display = "none";
13269
- const fallbackDiv = document.createElement("div");
13270
- fallbackDiv.className = "absolute inset-0 flex items-center justify-center bg-ods-card text-center p-4";
13271
- fallbackDiv.innerHTML = `
13272
- <div>
13273
- <p class="text-ods-text-primary text-sm mb-2">Video could not be loaded</p>
13274
- <a href="${item.src}" target="_blank" rel="noopener noreferrer"
13275
- class="text-ods-accent hover:text-[#FFD700] text-sm">
13276
- Open Video Directly
13277
- </a>
13278
- </div>
13279
- `;
13280
- _optionalChain([target, 'access', _408 => _408.parentElement, 'optionalAccess', _409 => _409.appendChild, 'call', _410 => _410(fallbackDiv)]);
13281
- }
13282
- },
13283
- children: [
13284
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { src: item.src, type: "video/mp4" }),
13285
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { src: item.src, type: "video/webm" }),
13286
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { src: item.src, type: "video/ogg" }),
13287
- "Your browser does not support the video tag."
13288
- ]
13289
- }
13290
- ),
13291
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13292
- "div",
13293
- {
13294
- className: "video-play-button absolute inset-0 flex items-center justify-center bg-black bg-opacity-20 cursor-pointer transition-opacity hover:bg-opacity-30",
13295
- onClick: () => handleVideoClick(index),
13296
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 bg-black bg-opacity-60 rounded-full flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PlayIcon2, {}) })
13297
- }
13298
- )
13299
- ] });
13350
+ );
13351
+ const renderVideo = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13352
+ Video2,
13353
+ {
13354
+ url: item.src,
13355
+ poster: item.poster,
13356
+ muted: true,
13357
+ layout: "fill",
13358
+ priority: index === currentIndex
13359
+ }
13360
+ );
13300
13361
  const renderImage = (item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-black", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
13301
13362
  "img",
13302
13363
  {
@@ -13305,14 +13366,12 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
13305
13366
  className: `w-full h-full object-${objectFit}`,
13306
13367
  loading: "lazy",
13307
13368
  onError: (e) => {
13308
- console.log("\u274C Image failed to load:", item.src);
13309
13369
  const target = e.target;
13310
13370
  target.style.display = "none";
13311
13371
  }
13312
13372
  }
13313
13373
  ) });
13314
13374
  const renderMainMedia = (item, index) => {
13315
- console.log("\u{1F3AC} Rendering media item:", { type: item.type, src: item.src.substring(0, 100) + "..." });
13316
13375
  switch (item.type) {
13317
13376
  case "youtube":
13318
13377
  return renderYouTubeEmbed(item, index);
@@ -13327,7 +13386,7 @@ var MediaCarousel = _react.memo.call(void 0, function MediaCarousel2({
13327
13386
  const isActive = index === currentIndex;
13328
13387
  let thumbnailSrc = item.src;
13329
13388
  if (item.type === "youtube") {
13330
- const videoId = getYouTubeVideoId(item.src);
13389
+ const videoId = extractYouTubeId(item.src);
13331
13390
  thumbnailSrc = videoId ? `https://img.youtube.com/vi/${videoId}/mqdefault.jpg` : item.src;
13332
13391
  } else if (item.type === "video" && item.poster) {
13333
13392
  thumbnailSrc = item.poster;
@@ -13805,8 +13864,8 @@ function PricingDisplay({
13805
13864
  }
13806
13865
  if (pricingArray.length === 1) {
13807
13866
  const item = pricingArray[0];
13808
- const price = _optionalChain([item, 'access', _411 => _411.ranges, 'optionalAccess', _412 => _412[0], 'optionalAccess', _413 => _413.min]) || 0;
13809
- const unit = _optionalChain([item, 'access', _414 => _414.ranges, 'optionalAccess', _415 => _415[0], 'optionalAccess', _416 => _416.unit]);
13867
+ const price = _optionalChain([item, 'access', _392 => _392.ranges, 'optionalAccess', _393 => _393[0], 'optionalAccess', _394 => _394.min]) || 0;
13868
+ const unit = _optionalChain([item, 'access', _395 => _395.ranges, 'optionalAccess', _396 => _396[0], 'optionalAccess', _397 => _397.unit]);
13810
13869
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.fontFamily} ${className}`, children: [
13811
13870
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: formatPriceValue(price, styleConfig.showTildePrefix) }),
13812
13871
  unit && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
@@ -13815,11 +13874,11 @@ function PricingDisplay({
13815
13874
  ] })
13816
13875
  ] });
13817
13876
  }
13818
- const priceValues = pricingArray.map((item) => formatPriceValue(_optionalChain([item, 'access', _417 => _417.ranges, 'optionalAccess', _418 => _418[0], 'optionalAccess', _419 => _419.min]) || 0, styleConfig.showTildePrefix));
13819
- const itemWithUnit = pricingArray.find((item) => _optionalChain([item, 'access', _420 => _420.ranges, 'optionalAccess', _421 => _421[0], 'optionalAccess', _422 => _422.unit]));
13877
+ const priceValues = pricingArray.map((item) => formatPriceValue(_optionalChain([item, 'access', _398 => _398.ranges, 'optionalAccess', _399 => _399[0], 'optionalAccess', _400 => _400.min]) || 0, styleConfig.showTildePrefix));
13878
+ const itemWithUnit = pricingArray.find((item) => _optionalChain([item, 'access', _401 => _401.ranges, 'optionalAccess', _402 => _402[0], 'optionalAccess', _403 => _403.unit]));
13820
13879
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.fontFamily} ${className}`, children: [
13821
13880
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: `${styleConfig.priceTextColor} ${styleConfig.priceTextSize}`, children: priceValues.join(" | ") }),
13822
- itemWithUnit && _optionalChain([itemWithUnit, 'access', _423 => _423.ranges, 'optionalAccess', _424 => _424[0], 'optionalAccess', _425 => _425.unit]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
13881
+ itemWithUnit && _optionalChain([itemWithUnit, 'access', _404 => _404.ranges, 'optionalAccess', _405 => _405[0], 'optionalAccess', _406 => _406.unit]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: `${styleConfig.secondaryTextColor} ${styleConfig.secondaryTextSize}`, children: [
13823
13882
  "/",
13824
13883
  itemWithUnit.ranges[0].unit
13825
13884
  ] })
@@ -14017,7 +14076,7 @@ function VendorTag({
14017
14076
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-4 h-4 bg-ods-accent rounded-sm flex items-center justify-center flex-shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-[#1A1A1A] text-[8px] font-bold", children: "\u2605" }) })
14018
14077
  };
14019
14078
  case "classification":
14020
- const classificationType = _optionalChain([text, 'optionalAccess', _426 => _426.toLowerCase, 'call', _427 => _427()]);
14079
+ const classificationType = _optionalChain([text, 'optionalAccess', _407 => _407.toLowerCase, 'call', _408 => _408()]);
14021
14080
  if (classificationType === "open_source") {
14022
14081
  return {
14023
14082
  text: "Open Source",
@@ -14071,7 +14130,7 @@ function SelectionSourceBadge({ source, hidden = false }) {
14071
14130
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
14072
14131
  VendorTag,
14073
14132
  {
14074
- type: _optionalChain([source, 'optionalAccess', _428 => _428.toLowerCase, 'call', _429 => _429()]),
14133
+ type: _optionalChain([source, 'optionalAccess', _409 => _409.toLowerCase, 'call', _410 => _410()]),
14075
14134
  size: "sm",
14076
14135
  hidden
14077
14136
  },
@@ -16191,12 +16250,12 @@ function OnboardingWalkthrough({
16191
16250
  }
16192
16251
  }, [state.completedSteps, markComplete]);
16193
16252
  const handleStepSkip = (step) => {
16194
- _optionalChain([step, 'access', _430 => _430.onSkip, 'optionalCall', _431 => _431()]);
16253
+ _optionalChain([step, 'access', _411 => _411.onSkip, 'optionalCall', _412 => _412()]);
16195
16254
  markSkipped(step.id);
16196
16255
  };
16197
16256
  const handleDismiss = () => {
16198
16257
  dismissOnboarding();
16199
- _optionalChain([onDismiss, 'optionalCall', _432 => _432()]);
16258
+ _optionalChain([onDismiss, 'optionalCall', _413 => _413()]);
16200
16259
  };
16201
16260
  if (state.dismissed) {
16202
16261
  return null;
@@ -16615,810 +16674,6 @@ function ImageGalleryModal({
16615
16674
  // src/components/shared/product-release/release-detail-page.tsx
16616
16675
 
16617
16676
 
16618
- // src/components/features/youtube-embed.tsx
16619
-
16620
-
16621
- var YouTubeEmbed = ({
16622
- videoId,
16623
- title = "YouTube Video",
16624
- className = "",
16625
- showTitle = true,
16626
- showMeta = true,
16627
- minimalControls = false,
16628
- aboveTheFold = false
16629
- }) => {
16630
- const [activated, setActivated] = _react.useState.call(void 0, false);
16631
- const iframeSlotRef = _react.useRef.call(void 0, null);
16632
- const embedParams = new URLSearchParams({ autoplay: "1", rel: "0", modestbranding: "1", playsinline: "1" });
16633
- if (minimalControls) {
16634
- embedParams.set("controls", "0");
16635
- embedParams.set("showinfo", "0");
16636
- embedParams.set("fs", "0");
16637
- embedParams.set("iv_load_policy", "3");
16638
- embedParams.set("cc_load_policy", "0");
16639
- embedParams.set("disablekb", "1");
16640
- }
16641
- const embedUrl = `https://www.youtube-nocookie.com/embed/${videoId}?${embedParams.toString()}`;
16642
- const watchUrl = `https://www.youtube.com/watch?v=${videoId}`;
16643
- const posterJpg = `https://i.ytimg.com/vi/${videoId}/mqdefault.jpg`;
16644
- const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/mqdefault.webp`;
16645
- const handleActivate = () => {
16646
- const slot = iframeSlotRef.current;
16647
- if (!slot || activated) return;
16648
- const iframe = document.createElement("iframe");
16649
- iframe.setAttribute("allow", "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share");
16650
- iframe.setAttribute("allowfullscreen", "");
16651
- iframe.setAttribute("title", title);
16652
- iframe.className = "absolute inset-0 w-full h-full border-0";
16653
- iframe.src = embedUrl;
16654
- slot.appendChild(iframe);
16655
- setActivated(true);
16656
- };
16657
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `youtube-embed-container my-6 ${className}`, children: [
16658
- title && showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-title font-sans text-lg font-medium text-ods-text-primary mb-3", children: title }),
16659
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-wrapper relative w-full", style: { paddingBottom: "56.25%" }, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute inset-0 rounded-lg overflow-hidden border border-ods-border bg-ods-card", children: [
16660
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: iframeSlotRef, className: "absolute inset-0", "aria-hidden": !activated }),
16661
- !activated && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
16662
- "button",
16663
- {
16664
- type: "button",
16665
- "aria-label": `Play: ${title}`,
16666
- onClick: handleActivate,
16667
- className: "group absolute inset-0 p-0 m-0 border-0 cursor-pointer bg-transparent",
16668
- children: [
16669
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
16670
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
16671
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
16672
- "img",
16673
- {
16674
- src: posterJpg,
16675
- alt: title,
16676
- loading: "lazy",
16677
- fetchPriority: aboveTheFold ? "high" : "low",
16678
- decoding: aboveTheFold ? "sync" : "async",
16679
- className: "absolute inset-0 w-full h-full object-cover"
16680
- }
16681
- )
16682
- ] }),
16683
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg-inverse bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex items-center justify-center w-16 h-16 rounded-full bg-ods-accent text-ods-text-on-accent shadow-lg transition-transform duration-200 group-hover:scale-110", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "svg", { width: 24, height: 24, fill: "currentColor", viewBox: "0 0 24 24", className: "ml-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "polygon", { points: "5,3 19,12 5,21" }) }) }) })
16684
- ]
16685
- }
16686
- )
16687
- ] }) }),
16688
- showMeta && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "video-meta flex items-center justify-between mt-3 text-sm text-ods-text-secondary", children: [
16689
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-platform font-sans", children: "YouTube" }),
16690
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
16691
- "a",
16692
- {
16693
- href: watchUrl,
16694
- target: "_blank",
16695
- rel: "noopener noreferrer",
16696
- className: "video-link font-sans text-ods-accent hover:text-ods-accent-hover transition-colors duration-200",
16697
- children: "Watch on YouTube \u2192"
16698
- }
16699
- )
16700
- ] })
16701
- ] });
16702
- };
16703
- var YT_HOSTS = /* @__PURE__ */ new Set([
16704
- "youtube.com",
16705
- "www.youtube.com",
16706
- "m.youtube.com",
16707
- "youtu.be",
16708
- "youtube-nocookie.com",
16709
- "www.youtube-nocookie.com"
16710
- ]);
16711
- var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
16712
- var extractYouTubeId = (url) => {
16713
- let u;
16714
- try {
16715
- u = new URL(url);
16716
- } catch (e22) {
16717
- return null;
16718
- }
16719
- if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
16720
- if (u.hostname.toLowerCase().endsWith("youtu.be")) {
16721
- return _nullishCoalesce(u.pathname.split("/").filter(Boolean)[0], () => ( null));
16722
- }
16723
- const v = u.searchParams.get("v");
16724
- if (v) return v;
16725
- const m = u.pathname.match(YT_PATH_RE);
16726
- return m ? m[1] : null;
16727
- };
16728
-
16729
- // src/components/features/video-player.tsx
16730
-
16731
- var _reactplayer = require('react-player'); var _reactplayer2 = _interopRequireDefault(_reactplayer);
16732
- _chunkBJTOSUT4cjs.init_button2.call(void 0, );
16733
-
16734
- var webkitCaptionCSSInjected = false;
16735
- function ensureWebkitCaptionCSS() {
16736
- if (webkitCaptionCSSInjected || typeof document === "undefined") return;
16737
- const style = document.createElement("style");
16738
- style.textContent = `
16739
- video::-webkit-media-text-track-container {
16740
- display: block !important;
16741
- visibility: visible !important;
16742
- overflow: visible !important;
16743
- }
16744
- video::-webkit-media-text-track-display {
16745
- white-space: pre-line;
16746
- }
16747
- `;
16748
- document.head.appendChild(style);
16749
- webkitCaptionCSSInjected = true;
16750
- }
16751
- function parseSrt(srt) {
16752
- const cues = [];
16753
- const blocks = srt.replace(/\r\n/g, "\n").trim().split(/\n\n+/);
16754
- for (const block of blocks) {
16755
- const lines = block.split("\n");
16756
- const tsIndex = lines.findIndex((l) => l.includes(" --> "));
16757
- if (tsIndex === -1) continue;
16758
- const [startStr, endStr] = lines[tsIndex].split(" --> ");
16759
- const from = parseSrtTimestamp(_optionalChain([startStr, 'optionalAccess', _433 => _433.trim, 'call', _434 => _434()]));
16760
- const to = parseSrtTimestamp(_optionalChain([endStr, 'optionalAccess', _435 => _435.trim, 'call', _436 => _436()]));
16761
- if (from === null || to === null) continue;
16762
- const text = lines.slice(tsIndex + 1).join("\n").trim();
16763
- if (text) cues.push({ from, to, text });
16764
- }
16765
- return cues;
16766
- }
16767
- function parseSrtTimestamp(ts) {
16768
- if (!ts) return null;
16769
- const match = ts.match(/(\d{2}):(\d{2}):(\d{2})[,.](\d{3})/);
16770
- if (!match) return null;
16771
- return parseInt(match[1]) * 36e5 + parseInt(match[2]) * 6e4 + parseInt(match[3]) * 1e3 + parseInt(match[4]);
16772
- }
16773
- function useSubtitleOverlay(srtContent) {
16774
- const cues = _react.useMemo.call(void 0, () => srtContent ? parseSrt(srtContent) : [], [srtContent]);
16775
- const [activeText, setActiveText] = _react.useState.call(void 0, null);
16776
- const updateTime = _react.useCallback.call(void 0, (playedSeconds) => {
16777
- const timeMs = playedSeconds * 1e3;
16778
- const active = cues.find((c) => timeMs >= c.from && timeMs <= c.to);
16779
- setActiveText(_nullishCoalesce(_optionalChain([active, 'optionalAccess', _437 => _437.text]), () => ( null)));
16780
- }, [cues]);
16781
- return { activeText, updateTime, hasCues: cues.length > 0 };
16782
- }
16783
- var SPEED_OPTIONS = [0.5, 0.75, 1, 1.25, 1.5, 2];
16784
- function formatTime(secs) {
16785
- if (!secs || !isFinite(secs)) return "0:00";
16786
- const h = Math.floor(secs / 3600);
16787
- const m = Math.floor(secs % 3600 / 60);
16788
- const s = Math.floor(secs % 60);
16789
- if (h > 0) return `${h}:${m.toString().padStart(2, "0")}:${s.toString().padStart(2, "0")}`;
16790
- return `${m}:${s.toString().padStart(2, "0")}`;
16791
- }
16792
- var VideoPlayer = ({
16793
- url,
16794
- title,
16795
- poster,
16796
- className = "",
16797
- showTitle = false,
16798
- autoPlay = false,
16799
- loop = false,
16800
- muted = false,
16801
- useNativeAspectRatio = false,
16802
- srtContent,
16803
- captionsUrl,
16804
- subtitleLabel,
16805
- preloadStrategy = "metadata"
16806
- }) => {
16807
- const [hasError, setHasError] = _react.useState.call(void 0, false);
16808
- const [isPlaying, setIsPlaying] = _react.useState.call(void 0, autoPlay);
16809
- const [mounted, setMounted] = _react.useState.call(void 0, false);
16810
- const [hasStarted, setHasStarted] = _react.useState.call(void 0, autoPlay);
16811
- const playerRef = _react.useRef.call(void 0, null);
16812
- const containerRef = _react.useRef.call(void 0, null);
16813
- const [played, setPlayed] = _react.useState.call(void 0, 0);
16814
- const [loaded, setLoaded] = _react.useState.call(void 0, 0);
16815
- const [duration, setDuration] = _react.useState.call(void 0, 0);
16816
- const [volume, setVolume] = _react.useState.call(void 0, 0.8);
16817
- const [prevVolume, setPrevVolume] = _react.useState.call(void 0, 0.8);
16818
- const [isMuted, setIsMuted] = _react.useState.call(void 0, muted);
16819
- const [isBuffering, setIsBuffering] = _react.useState.call(void 0, false);
16820
- const [showControls, setShowControls] = _react.useState.call(void 0, true);
16821
- const hideTimeoutRef = _react.useRef.call(void 0, void 0);
16822
- const clickTimerRef = _react.useRef.call(void 0, void 0);
16823
- const iosFullscreenTimerRef = _react.useRef.call(void 0, void 0);
16824
- const [captionsEnabled, setCaptionsEnabled] = _react.useState.call(void 0, true);
16825
- const [isFullscreen, setIsFullscreen] = _react.useState.call(void 0, false);
16826
- const { activeText, updateTime, hasCues } = useSubtitleOverlay(srtContent);
16827
- _react.useEffect.call(void 0, () => {
16828
- const onChange = () => {
16829
- const fsEl = document.fullscreenElement || document.webkitFullscreenElement;
16830
- setIsFullscreen(!!fsEl);
16831
- };
16832
- document.addEventListener("fullscreenchange", onChange);
16833
- document.addEventListener("webkitfullscreenchange", onChange);
16834
- return () => {
16835
- document.removeEventListener("fullscreenchange", onChange);
16836
- document.removeEventListener("webkitfullscreenchange", onChange);
16837
- };
16838
- }, []);
16839
- const activateCaptionTracks = _react.useCallback.call(void 0, (video) => {
16840
- for (let i = 0; i < video.textTracks.length; i++) {
16841
- if (video.textTracks[i].kind === "captions" || video.textTracks[i].kind === "subtitles") {
16842
- video.textTracks[i].mode = "showing";
16843
- }
16844
- }
16845
- }, []);
16846
- const enterNativeVideoFullscreen = _react.useCallback.call(void 0, () => {
16847
- const video = _optionalChain([playerRef, 'access', _438 => _438.current, 'optionalAccess', _439 => _439.getInternalPlayer, 'call', _440 => _440()]);
16848
- if (!video || !video.webkitEnterFullscreen) return;
16849
- ensureWebkitCaptionCSS();
16850
- const trackSrc = captionsUrl || null;
16851
- if (!trackSrc) {
16852
- try {
16853
- video.webkitEnterFullscreen();
16854
- } catch (e23) {
16855
- }
16856
- return;
16857
- }
16858
- const old = video.querySelector("track[data-native-cc]");
16859
- if (old) old.remove();
16860
- clearTimeout(iosFullscreenTimerRef.current);
16861
- const track = document.createElement("track");
16862
- track.kind = "captions";
16863
- track.label = subtitleLabel || "English";
16864
- track.srclang = "en";
16865
- track.default = true;
16866
- track.setAttribute("data-native-cc", "true");
16867
- video.appendChild(track);
16868
- track.src = trackSrc;
16869
- let entered = false;
16870
- const doFullscreen = () => {
16871
- if (entered) return;
16872
- entered = true;
16873
- activateCaptionTracks(video);
16874
- try {
16875
- video.webkitEnterFullscreen();
16876
- } catch (e24) {
16877
- }
16878
- };
16879
- track.addEventListener("load", doFullscreen, { once: true });
16880
- iosFullscreenTimerRef.current = setTimeout(() => {
16881
- track.removeEventListener("load", doFullscreen);
16882
- doFullscreen();
16883
- }, 500);
16884
- }, [captionsUrl, subtitleLabel, activateCaptionTracks]);
16885
- const toggleFullscreen = _react.useCallback.call(void 0, () => {
16886
- const container = containerRef.current;
16887
- if (!container) return;
16888
- if (isFullscreen) {
16889
- try {
16890
- if (document.exitFullscreen) document.exitFullscreen();
16891
- else if (document.webkitExitFullscreen) document.webkitExitFullscreen();
16892
- } catch (e25) {
16893
- }
16894
- return;
16895
- }
16896
- if (container.requestFullscreen) {
16897
- container.requestFullscreen().catch(() => enterNativeVideoFullscreen());
16898
- } else if (container.webkitRequestFullscreen) {
16899
- container.webkitRequestFullscreen();
16900
- } else {
16901
- enterNativeVideoFullscreen();
16902
- }
16903
- }, [isFullscreen, enterNativeVideoFullscreen]);
16904
- const toggleMute = _react.useCallback.call(void 0, () => {
16905
- if (isMuted) {
16906
- setIsMuted(false);
16907
- setVolume(prevVolume || 0.5);
16908
- } else {
16909
- setPrevVolume(volume);
16910
- setIsMuted(true);
16911
- setVolume(0);
16912
- }
16913
- }, [isMuted, volume, prevVolume]);
16914
- const handleVolumeChange = _react.useCallback.call(void 0, (e) => {
16915
- const val = parseFloat(e.target.value);
16916
- setVolume(val);
16917
- setIsMuted(val === 0);
16918
- if (val > 0) setPrevVolume(val);
16919
- }, []);
16920
- const startHideTimer = _react.useCallback.call(void 0, () => {
16921
- clearTimeout(hideTimeoutRef.current);
16922
- if (isPlaying) {
16923
- hideTimeoutRef.current = setTimeout(() => setShowControls(false), 3e3);
16924
- }
16925
- }, [isPlaying]);
16926
- const handleMouseMove = _react.useCallback.call(void 0, () => {
16927
- setShowControls(true);
16928
- startHideTimer();
16929
- }, [startHideTimer]);
16930
- const handleTouchToggle = _react.useCallback.call(void 0, () => {
16931
- if (!hasStarted) return;
16932
- setShowControls((prev) => {
16933
- const next = !prev;
16934
- clearTimeout(hideTimeoutRef.current);
16935
- if (next && isPlaying) {
16936
- hideTimeoutRef.current = setTimeout(() => setShowControls(false), 3e3);
16937
- }
16938
- return next;
16939
- });
16940
- }, [hasStarted, isPlaying]);
16941
- _react.useEffect.call(void 0, () => {
16942
- if (!hasStarted) return;
16943
- const el = containerRef.current;
16944
- if (!el) return;
16945
- const onKey = (e) => {
16946
- if (e.target instanceof HTMLInputElement || e.target instanceof HTMLTextAreaElement) return;
16947
- switch (e.key) {
16948
- case " ":
16949
- case "k":
16950
- e.preventDefault();
16951
- setIsPlaying((prev) => !prev);
16952
- break;
16953
- case "ArrowLeft":
16954
- e.preventDefault();
16955
- _optionalChain([playerRef, 'access', _441 => _441.current, 'optionalAccess', _442 => _442.seekTo, 'call', _443 => _443(Math.max(0, (_nullishCoalesce(_optionalChain([playerRef, 'access', _444 => _444.current, 'optionalAccess', _445 => _445.getCurrentTime, 'call', _446 => _446()]), () => ( 0))) - 5), "seconds")]);
16956
- break;
16957
- case "ArrowRight":
16958
- e.preventDefault();
16959
- _optionalChain([playerRef, 'access', _447 => _447.current, 'optionalAccess', _448 => _448.seekTo, 'call', _449 => _449(Math.min(duration, (_nullishCoalesce(_optionalChain([playerRef, 'access', _450 => _450.current, 'optionalAccess', _451 => _451.getCurrentTime, 'call', _452 => _452()]), () => ( 0))) + 5), "seconds")]);
16960
- break;
16961
- case "ArrowUp":
16962
- e.preventDefault();
16963
- setVolume((v) => {
16964
- const nv = Math.min(1, v + 0.1);
16965
- setIsMuted(false);
16966
- return nv;
16967
- });
16968
- break;
16969
- case "ArrowDown":
16970
- e.preventDefault();
16971
- setVolume((v) => {
16972
- const nv = Math.max(0, v - 0.1);
16973
- if (nv === 0) setIsMuted(true);
16974
- return nv;
16975
- });
16976
- break;
16977
- case "m":
16978
- case "M":
16979
- e.preventDefault();
16980
- toggleMute();
16981
- break;
16982
- case "f":
16983
- case "F":
16984
- e.preventDefault();
16985
- toggleFullscreen();
16986
- break;
16987
- case "c":
16988
- case "C":
16989
- e.preventDefault();
16990
- setCaptionsEnabled((prev) => !prev);
16991
- break;
16992
- }
16993
- };
16994
- el.addEventListener("keydown", onKey);
16995
- return () => el.removeEventListener("keydown", onKey);
16996
- }, [hasStarted, duration, toggleMute, toggleFullscreen]);
16997
- const [seekPreview, setSeekPreview] = _react.useState.call(void 0, null);
16998
- const [playbackRate, setPlaybackRate] = _react.useState.call(void 0, 1);
16999
- const cycleSpeed = _react.useCallback.call(void 0, () => {
17000
- setPlaybackRate((prev) => {
17001
- const idx = SPEED_OPTIONS.indexOf(prev);
17002
- return SPEED_OPTIONS[(idx + 1) % SPEED_OPTIONS.length];
17003
- });
17004
- }, []);
17005
- const progressBarRef = _react.useRef.call(void 0, null);
17006
- const isDraggingRef = _react.useRef.call(void 0, false);
17007
- const dragListenersRef = _react.useRef.call(void 0, null);
17008
- const seekToClientX = _react.useCallback.call(void 0, (clientX) => {
17009
- const rect = _optionalChain([progressBarRef, 'access', _453 => _453.current, 'optionalAccess', _454 => _454.getBoundingClientRect, 'call', _455 => _455()]);
17010
- if (!rect) return;
17011
- const fraction = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));
17012
- setPlayed(fraction);
17013
- _optionalChain([playerRef, 'access', _456 => _456.current, 'optionalAccess', _457 => _457.seekTo, 'call', _458 => _458(fraction, "fraction")]);
17014
- }, []);
17015
- const handleProgressMouseDown = _react.useCallback.call(void 0, (e) => {
17016
- e.stopPropagation();
17017
- e.preventDefault();
17018
- isDraggingRef.current = true;
17019
- seekToClientX(e.clientX);
17020
- if (dragListenersRef.current) {
17021
- document.removeEventListener("mousemove", dragListenersRef.current.move);
17022
- document.removeEventListener("mouseup", dragListenersRef.current.up);
17023
- }
17024
- const onMouseMove = (ev) => {
17025
- if (!isDraggingRef.current) return;
17026
- seekToClientX(ev.clientX);
17027
- };
17028
- const onMouseUp = () => {
17029
- isDraggingRef.current = false;
17030
- document.removeEventListener("mousemove", onMouseMove);
17031
- document.removeEventListener("mouseup", onMouseUp);
17032
- dragListenersRef.current = null;
17033
- };
17034
- dragListenersRef.current = { move: onMouseMove, up: onMouseUp };
17035
- document.addEventListener("mousemove", onMouseMove);
17036
- document.addEventListener("mouseup", onMouseUp);
17037
- }, [seekToClientX]);
17038
- const handleProgressTouchStart = _react.useCallback.call(void 0, (e) => {
17039
- e.stopPropagation();
17040
- const touch = e.touches[0];
17041
- if (touch) seekToClientX(touch.clientX);
17042
- }, [seekToClientX]);
17043
- const handleProgressTouchMove = _react.useCallback.call(void 0, (e) => {
17044
- e.stopPropagation();
17045
- const touch = e.touches[0];
17046
- if (touch) seekToClientX(touch.clientX);
17047
- }, [seekToClientX]);
17048
- const handleProgressKeyDown = _react.useCallback.call(void 0, (e) => {
17049
- if (e.key === "ArrowRight") {
17050
- e.preventDefault();
17051
- e.stopPropagation();
17052
- _optionalChain([playerRef, 'access', _459 => _459.current, 'optionalAccess', _460 => _460.seekTo, 'call', _461 => _461(Math.min(duration, (_nullishCoalesce(_optionalChain([playerRef, 'access', _462 => _462.current, 'optionalAccess', _463 => _463.getCurrentTime, 'call', _464 => _464()]), () => ( 0))) + 5), "seconds")]);
17053
- }
17054
- if (e.key === "ArrowLeft") {
17055
- e.preventDefault();
17056
- e.stopPropagation();
17057
- _optionalChain([playerRef, 'access', _465 => _465.current, 'optionalAccess', _466 => _466.seekTo, 'call', _467 => _467(Math.max(0, (_nullishCoalesce(_optionalChain([playerRef, 'access', _468 => _468.current, 'optionalAccess', _469 => _469.getCurrentTime, 'call', _470 => _470()]), () => ( 0))) - 5), "seconds")]);
17058
- }
17059
- if (e.key === "Home") {
17060
- e.preventDefault();
17061
- e.stopPropagation();
17062
- _optionalChain([playerRef, 'access', _471 => _471.current, 'optionalAccess', _472 => _472.seekTo, 'call', _473 => _473(0, "seconds")]);
17063
- }
17064
- if (e.key === "End") {
17065
- e.preventDefault();
17066
- e.stopPropagation();
17067
- _optionalChain([playerRef, 'access', _474 => _474.current, 'optionalAccess', _475 => _475.seekTo, 'call', _476 => _476(duration, "seconds")]);
17068
- }
17069
- }, [duration]);
17070
- const handleProgressHover = _react.useCallback.call(void 0, (e) => {
17071
- if (isDraggingRef.current) return;
17072
- const rect = e.currentTarget.getBoundingClientRect();
17073
- const fraction = Math.max(0, Math.min(1, (e.clientX - rect.left) / rect.width));
17074
- const x = Math.max(30, Math.min(rect.width - 30, e.clientX - rect.left));
17075
- setSeekPreview({ fraction, x });
17076
- }, []);
17077
- const isTouchRef = _react.useRef.call(void 0, false);
17078
- const handleContainerClick = _react.useCallback.call(void 0, (e) => {
17079
- if (isTouchRef.current) {
17080
- isTouchRef.current = false;
17081
- return;
17082
- }
17083
- if (e.target.closest(".video-controls-bar")) return;
17084
- if (!hasStarted) return;
17085
- if (clickTimerRef.current) {
17086
- clearTimeout(clickTimerRef.current);
17087
- clickTimerRef.current = void 0;
17088
- toggleFullscreen();
17089
- } else {
17090
- clickTimerRef.current = setTimeout(() => {
17091
- clickTimerRef.current = void 0;
17092
- setIsPlaying((prev) => !prev);
17093
- }, 250);
17094
- }
17095
- }, [hasStarted, toggleFullscreen]);
17096
- const handleContainerTouchEnd = _react.useCallback.call(void 0, (e) => {
17097
- if (e.target.closest(".video-controls-bar")) return;
17098
- isTouchRef.current = true;
17099
- if (!hasStarted) return;
17100
- handleTouchToggle();
17101
- }, [hasStarted, handleTouchToggle]);
17102
- const effectivePoster = poster || void 0;
17103
- const posterBgColor = _chunkALW3D72Ocjs.useImageEdgeColor.call(void 0, effectivePoster);
17104
- _react.useEffect.call(void 0, () => {
17105
- setMounted(true);
17106
- return () => {
17107
- clearTimeout(clickTimerRef.current);
17108
- clearTimeout(hideTimeoutRef.current);
17109
- clearTimeout(iosFullscreenTimerRef.current);
17110
- isDraggingRef.current = false;
17111
- if (dragListenersRef.current) {
17112
- document.removeEventListener("mousemove", dragListenersRef.current.move);
17113
- document.removeEventListener("mouseup", dragListenersRef.current.up);
17114
- dragListenersRef.current = null;
17115
- }
17116
- };
17117
- }, []);
17118
- _react.useEffect.call(void 0, () => {
17119
- if (!hasStarted) return;
17120
- const video = _optionalChain([playerRef, 'access', _477 => _477.current, 'optionalAccess', _478 => _478.getInternalPlayer, 'call', _479 => _479()]);
17121
- if (!video) return;
17122
- const onBeginFS = () => activateCaptionTracks(video);
17123
- video.addEventListener("webkitbeginfullscreen", onBeginFS);
17124
- return () => video.removeEventListener("webkitbeginfullscreen", onBeginFS);
17125
- }, [hasStarted, activateCaptionTracks]);
17126
- const handleError = _react.useCallback.call(void 0, () => setHasError(true), []);
17127
- const handlePlay = _react.useCallback.call(void 0, () => {
17128
- setIsPlaying(true);
17129
- setHasStarted(true);
17130
- }, []);
17131
- const handlePause = _react.useCallback.call(void 0, () => setIsPlaying(false), []);
17132
- const handleEnded = _react.useCallback.call(void 0, () => setIsPlaying(false), []);
17133
- const handlePlayClick = _react.useCallback.call(void 0, () => {
17134
- const native = _optionalChain([playerRef, 'access', _480 => _480.current, 'optionalAccess', _481 => _481.getInternalPlayer, 'call', _482 => _482()]);
17135
- if (native instanceof HTMLVideoElement) {
17136
- native.play().catch(() => {
17137
- });
17138
- } else if (process.env.NODE_ENV !== "production") {
17139
- console.warn("[VideoPlayer] sync play(): no native HTMLVideoElement yet");
17140
- }
17141
- setHasStarted(true);
17142
- setIsPlaying(true);
17143
- }, []);
17144
- const handleProgress = _react.useCallback.call(void 0, ({ played: p, loaded: l, playedSeconds }) => {
17145
- setPlayed(p);
17146
- setLoaded(l);
17147
- updateTime(playedSeconds);
17148
- }, [updateTime]);
17149
- const handleBuffer = _react.useCallback.call(void 0, () => setIsBuffering(true), []);
17150
- const handleBufferEnd = _react.useCallback.call(void 0, () => setIsBuffering(false), []);
17151
- if (!mounted) {
17152
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `video-player-container ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17153
- "div",
17154
- {
17155
- className: "video-wrapper relative w-full",
17156
- style: useNativeAspectRatio ? {} : { paddingBottom: "56.25%" },
17157
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: useNativeAspectRatio ? "bg-black rounded-md flex items-center justify-center min-h-[200px]" : "absolute inset-0 bg-black rounded-md flex items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 rounded-full bg-ods-accent flex items-center justify-center shadow-lg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PlayIcon, { size: 24, className: "ml-1 text-ods-text-on-accent" }) }) })
17158
- }
17159
- ) });
17160
- }
17161
- if (hasError) {
17162
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `video-player-error ${className}`, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "error-state bg-ods-card border border-ods-border rounded-md p-6 text-center", children: [
17163
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-icon flex justify-center mb-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.AlertCircleIcon, { size: 48, className: "text-ods-attention-red-error" }) }),
17164
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-title font-sans font-semibold text-lg text-ods-attention-red-error mb-2", children: "Video Unavailable" }),
17165
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "error-description font-sans text-sm text-ods-text-secondary mb-4", children: "Unable to load video. The video may be unavailable or the format is not supported." })
17166
- ] }) });
17167
- }
17168
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: `video-player-container ${className}`, children: [
17169
- title && showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "video-title font-sans text-lg font-medium text-ods-text-primary mb-3", children: title }),
17170
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
17171
- "div",
17172
- {
17173
- ref: containerRef,
17174
- tabIndex: 0,
17175
- role: "region",
17176
- "aria-label": title || "Video player",
17177
- className: `video-wrapper relative w-full outline-none focus-visible:ring-2 focus-visible:ring-white/50 focus-visible:ring-offset-2 focus-visible:ring-offset-black ${isFullscreen ? "bg-black" : ""} ${isFullscreen && !showControls && isPlaying ? "cursor-none" : ""}`,
17178
- style: isFullscreen ? { width: "100%", height: "100%" } : useNativeAspectRatio ? {} : { paddingBottom: "56.25%" },
17179
- onMouseMove: handleMouseMove,
17180
- onMouseLeave: startHideTimer,
17181
- onTouchEnd: handleContainerTouchEnd,
17182
- onClick: handleContainerClick,
17183
- children: [
17184
- !hasStarted && !hasError && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute inset-0 cursor-pointer group z-20", onClick: handlePlayClick, children: [
17185
- effectivePoster && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17186
- "img",
17187
- {
17188
- src: effectivePoster,
17189
- alt: title || "Video thumbnail",
17190
- className: "w-full h-full object-contain rounded-md",
17191
- style: { backgroundColor: posterBgColor }
17192
- }
17193
- ),
17194
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `absolute inset-0 ${effectivePoster ? "bg-black/40" : "bg-black/20"} group-hover:bg-black/50 transition-all flex items-center justify-center rounded-md`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 rounded-full bg-ods-accent hover:bg-ods-accent/90 transition-all flex items-center justify-center shadow-lg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PlayIcon, { size: 24, className: "ml-1 text-ods-text-on-accent" }) }) })
17195
- ] }),
17196
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: isFullscreen ? "video-player absolute inset-0" : useNativeAspectRatio ? "video-player rounded-md overflow-hidden border border-ods-border bg-ods-background" : "video-player absolute inset-0 rounded-md overflow-hidden border border-ods-border bg-ods-background", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17197
- _reactplayer2.default,
17198
- {
17199
- ref: playerRef,
17200
- url,
17201
- width: "100%",
17202
- height: "100%",
17203
- controls: false,
17204
- playing: isPlaying,
17205
- playbackRate,
17206
- loop,
17207
- muted: isMuted,
17208
- volume: isMuted ? 0 : volume,
17209
- onError: handleError,
17210
- onPlay: handlePlay,
17211
- onPause: handlePause,
17212
- onEnded: handleEnded,
17213
- onDuration: setDuration,
17214
- onBuffer: handleBuffer,
17215
- onBufferEnd: handleBufferEnd,
17216
- onProgress: handleProgress,
17217
- progressInterval: 200,
17218
- config: { file: { attributes: { controlsList: "nodownload", playsInline: true, preload: hasStarted ? "auto" : preloadStrategy } } },
17219
- light: false,
17220
- playsinline: true
17221
- }
17222
- ) }),
17223
- isBuffering && hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 flex items-center justify-center z-20 pointer-events-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-12 h-12 border-4 border-white/30 border-t-white rounded-full animate-spin" }) }),
17224
- captionsEnabled && activeText && hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17225
- "div",
17226
- {
17227
- className: "absolute left-[5%] right-[5%] text-center pointer-events-none z-10 transition-[bottom] duration-300 ease-in-out",
17228
- style: { bottom: showControls || !isPlaying ? 52 : 12 },
17229
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17230
- "span",
17231
- {
17232
- className: "inline-block bg-black/80 text-white leading-relaxed px-4 py-1.5 rounded font-sans font-medium whitespace-pre-line",
17233
- style: {
17234
- fontSize: isFullscreen ? "clamp(20px, 3.3vh, 42px)" : "clamp(15px, 3.3cqw, 26px)",
17235
- maxWidth: "90%",
17236
- textShadow: "0 1px 4px rgba(0,0,0,0.6)",
17237
- WebkitTextStroke: "0.3px rgba(0,0,0,0.3)"
17238
- },
17239
- children: activeText
17240
- }
17241
- )
17242
- }
17243
- ),
17244
- hasStarted && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17245
- "div",
17246
- {
17247
- className: `video-controls-bar absolute bottom-0 left-0 right-0 z-30 transition-opacity duration-300 ${showControls || !isPlaying ? "opacity-100" : "opacity-0 pointer-events-none"}`,
17248
- onTouchEnd: (e) => {
17249
- e.stopPropagation();
17250
- startHideTimer();
17251
- },
17252
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-gradient-to-t from-black/90 via-black/40 to-transparent pt-6 pb-1.5 px-2.5 rounded-b-md", children: [
17253
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
17254
- "div",
17255
- {
17256
- className: "group/seek relative w-full h-6 cursor-pointer mb-0.5 flex items-center",
17257
- ref: progressBarRef,
17258
- role: "slider",
17259
- "aria-label": "Video progress",
17260
- "aria-valuenow": Math.round(played * 100),
17261
- "aria-valuetext": `${formatTime(played * duration)} of ${formatTime(duration)}`,
17262
- "aria-valuemin": 0,
17263
- "aria-valuemax": 100,
17264
- tabIndex: 0,
17265
- onMouseDown: handleProgressMouseDown,
17266
- onTouchStart: handleProgressTouchStart,
17267
- onTouchMove: handleProgressTouchMove,
17268
- onTouchEnd: (e) => e.stopPropagation(),
17269
- onMouseMove: handleProgressHover,
17270
- onMouseLeave: () => setSeekPreview(null),
17271
- onKeyDown: handleProgressKeyDown,
17272
- children: [
17273
- seekPreview && duration > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17274
- "div",
17275
- {
17276
- className: "absolute -top-7 -translate-x-1/2 bg-black/90 text-white text-[11px] font-mono px-1.5 py-0.5 rounded pointer-events-none whitespace-nowrap z-10",
17277
- style: { left: seekPreview.x },
17278
- children: formatTime(seekPreview.fraction * duration)
17279
- }
17280
- ),
17281
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "absolute left-0 right-0 h-1 [@media(hover:hover)]:group-hover/seek:h-[5px] transition-all top-1/2 -translate-y-1/2", children: [
17282
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-white/20 rounded-full" }),
17283
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17284
- "div",
17285
- {
17286
- className: "absolute inset-y-0 left-0 bg-white/40 rounded-full transition-all",
17287
- style: { width: `${loaded * 100}%` }
17288
- }
17289
- ),
17290
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17291
- "div",
17292
- {
17293
- className: "absolute inset-y-0 left-0 bg-white rounded-full",
17294
- style: { width: `${played * 100}%` }
17295
- }
17296
- )
17297
- ] }),
17298
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17299
- "div",
17300
- {
17301
- className: "absolute top-1/2 -translate-y-1/2 w-3 h-3 bg-white rounded-full shadow-sm opacity-100 [@media(hover:hover)]:opacity-0 [@media(hover:hover)]:group-hover/seek:opacity-100 [@media(hover:hover)]:group-hover/seek:scale-110 transition-all",
17302
- style: { left: `calc(${played * 100}% - 6px)` }
17303
- }
17304
- )
17305
- ]
17306
- }
17307
- ),
17308
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between h-9", children: [
17309
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
17310
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17311
- _chunkBJTOSUT4cjs.Button,
17312
- {
17313
- variant: "transparent",
17314
- size: "icon",
17315
- onClick: (e) => {
17316
- e.stopPropagation();
17317
- setIsPlaying((prev) => !prev);
17318
- },
17319
- className: "h-9 w-9 text-white hover:text-white/80 hover:bg-white/10",
17320
- "aria-label": isPlaying ? "Pause (Space)" : "Play (Space)",
17321
- children: isPlaying ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PauseIcon, { size: 20, color: "white" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.PlayIcon, { size: 20, color: "white" })
17322
- }
17323
- ),
17324
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "group/vol flex items-center", children: [
17325
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17326
- _chunkBJTOSUT4cjs.Button,
17327
- {
17328
- variant: "transparent",
17329
- size: "icon",
17330
- onClick: (e) => {
17331
- e.stopPropagation();
17332
- toggleMute();
17333
- },
17334
- className: "h-9 w-9 text-white hover:text-white/80 hover:bg-white/10",
17335
- "aria-label": isMuted ? "Unmute (M)" : "Mute (M)",
17336
- children: isMuted || volume === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.VolumeOffIcon, { size: 18, color: "white" }) : volume < 0.5 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.VolumeDownIcon, { size: 18, color: "white" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.VolumeUpIcon, { size: 18, color: "white" })
17337
- }
17338
- ),
17339
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-0 overflow-hidden group-hover/vol:w-16 transition-all duration-200 flex items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17340
- _chunkBJTOSUT4cjs.Input,
17341
- {
17342
- type: "range",
17343
- min: 0,
17344
- max: 1,
17345
- step: 0.01,
17346
- value: isMuted ? 0 : volume,
17347
- onChange: handleVolumeChange,
17348
- onClick: (e) => e.stopPropagation(),
17349
- "aria-label": "Volume",
17350
- className: "w-14 ml-1",
17351
- style: { background: `linear-gradient(to right, white ${(isMuted ? 0 : volume) * 100}%, rgba(255,255,255,0.3) ${(isMuted ? 0 : volume) * 100}%)` }
17352
- }
17353
- ) })
17354
- ] }),
17355
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-white/70 text-[12px] font-mono tabular-nums select-none ml-1.5", children: [
17356
- formatTime(played * duration),
17357
- " / ",
17358
- formatTime(duration)
17359
- ] })
17360
- ] }),
17361
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center", children: [
17362
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
17363
- _chunkBJTOSUT4cjs.Button,
17364
- {
17365
- variant: "transparent",
17366
- size: "small-legacy",
17367
- onClick: (e) => {
17368
- e.stopPropagation();
17369
- cycleSpeed();
17370
- },
17371
- className: `h-9 px-1.5 text-[11px] font-bold rounded hover:bg-white/10 ${playbackRate !== 1 ? "text-white" : "text-white/70 hover:text-white"}`,
17372
- title: "Playback speed",
17373
- "aria-label": `Playback speed ${playbackRate}x`,
17374
- children: [
17375
- playbackRate,
17376
- "x"
17377
- ]
17378
- }
17379
- ),
17380
- hasCues && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17381
- _chunkBJTOSUT4cjs.Button,
17382
- {
17383
- variant: "transparent",
17384
- size: "small-legacy",
17385
- onClick: (e) => {
17386
- e.stopPropagation();
17387
- setCaptionsEnabled((prev) => !prev);
17388
- },
17389
- className: `h-9 px-1.5 text-[11px] font-bold rounded ${captionsEnabled ? "bg-white text-black hover:bg-white/90" : "text-white/50 hover:text-white hover:bg-white/10"}`,
17390
- style: { borderBottom: captionsEnabled ? "2px solid white" : "2px solid transparent" },
17391
- title: captionsEnabled ? "Hide captions (C)" : "Show captions (C)",
17392
- "aria-label": captionsEnabled ? "Hide captions" : "Show captions",
17393
- children: "CC"
17394
- }
17395
- ),
17396
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17397
- _chunkBJTOSUT4cjs.Button,
17398
- {
17399
- variant: "transparent",
17400
- size: "icon",
17401
- onClick: (e) => {
17402
- e.stopPropagation();
17403
- toggleFullscreen();
17404
- },
17405
- className: "h-9 w-9 text-white/80 hover:text-white hover:bg-white/10",
17406
- title: isFullscreen ? "Exit fullscreen (F)" : "Fullscreen (F)",
17407
- "aria-label": isFullscreen ? "Exit fullscreen" : "Fullscreen",
17408
- children: isFullscreen ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Collapse01Icon, { size: 18, color: "white" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Expand01Icon, { size: 18, color: "white" })
17409
- }
17410
- )
17411
- ] })
17412
- ] })
17413
- ] })
17414
- }
17415
- )
17416
- ]
17417
- }
17418
- )
17419
- ] });
17420
- };
17421
-
17422
16677
  // src/components/layout/page-container.tsx
17423
16678
  _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
17424
16679
 
@@ -17445,7 +16700,7 @@ var SecondaryAction = ({ action }) => {
17445
16700
  e.preventDefault();
17446
16701
  return;
17447
16702
  }
17448
- _optionalChain([action, 'access', _483 => _483.onClick, 'optionalCall', _484 => _484()]);
16703
+ _optionalChain([action, 'access', _414 => _414.onClick, 'optionalCall', _415 => _415()]);
17449
16704
  },
17450
16705
  [action]
17451
16706
  );
@@ -17486,13 +16741,13 @@ var MenuItem = ({ item, onItemClick }) => {
17486
16741
  const activate = _react.useCallback.call(void 0, () => {
17487
16742
  if (item.disabled) return;
17488
16743
  if (item.type === "checkbox") {
17489
- _optionalChain([item, 'access', _485 => _485.onClick, 'optionalCall', _486 => _486()]);
17490
- _optionalChain([onItemClick, 'optionalCall', _487 => _487(item)]);
16744
+ _optionalChain([item, 'access', _416 => _416.onClick, 'optionalCall', _417 => _417()]);
16745
+ _optionalChain([onItemClick, 'optionalCall', _418 => _418(item)]);
17491
16746
  return;
17492
16747
  }
17493
16748
  if (item.type === "submenu") return;
17494
- _optionalChain([item, 'access', _488 => _488.onClick, 'optionalCall', _489 => _489()]);
17495
- _optionalChain([onItemClick, 'optionalCall', _490 => _490(item)]);
16749
+ _optionalChain([item, 'access', _419 => _419.onClick, 'optionalCall', _420 => _420()]);
16750
+ _optionalChain([onItemClick, 'optionalCall', _421 => _421(item)]);
17496
16751
  }, [item, onItemClick]);
17497
16752
  const handleClick = _react.useCallback.call(void 0,
17498
16753
  (e) => {
@@ -17518,8 +16773,8 @@ var MenuItem = ({ item, onItemClick }) => {
17518
16773
  e.stopPropagation();
17519
16774
  return;
17520
16775
  }
17521
- _optionalChain([item, 'access', _491 => _491.onClick, 'optionalCall', _492 => _492()]);
17522
- _optionalChain([onItemClick, 'optionalCall', _493 => _493(item)]);
16776
+ _optionalChain([item, 'access', _422 => _422.onClick, 'optionalCall', _423 => _423()]);
16777
+ _optionalChain([onItemClick, 'optionalCall', _424 => _424(item)]);
17523
16778
  },
17524
16779
  [item, onItemClick]
17525
16780
  );
@@ -17674,7 +16929,7 @@ var ActionsMenuDropdown = ({
17674
16929
  const [open, setOpen] = _react.useState.call(void 0, false);
17675
16930
  const handleItemClick = _react.useCallback.call(void 0,
17676
16931
  (item) => {
17677
- _optionalChain([onItemClick, 'optionalCall', _494 => _494(item)]);
16932
+ _optionalChain([onItemClick, 'optionalCall', _425 => _425(item)]);
17678
16933
  if (item.type !== "checkbox" && item.type !== "submenu") {
17679
16934
  setOpen(false);
17680
16935
  }
@@ -17845,7 +17100,7 @@ function IconButtonsVariant({
17845
17100
  }) {
17846
17101
  const desktopActions = actions.filter((a) => !a.showOnlyMobile);
17847
17102
  const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
17848
- const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _495 => _495[0], 'access', _496 => _496.submenu, 'optionalAccess', _497 => _497.length]);
17103
+ const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _426 => _426[0], 'access', _427 => _427.submenu, 'optionalAccess', _428 => _428.length]);
17849
17104
  const singleAction = isSingleAction ? actions[0] : null;
17850
17105
  const useSingleActionMobile = isSingleAction && !hasMenuActions;
17851
17106
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -18275,14 +17530,14 @@ function ReleaseDetailPage({
18275
17530
  releaseVersion
18276
17531
  ] })
18277
17532
  ] }) }),
18278
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess', _498 => _498.map, 'call', _499 => _499((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17533
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-2 w-full", children: _optionalChain([blogTags, 'optionalAccess', _429 => _429.map, 'call', _430 => _430((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18279
17534
  StatusBadge,
18280
17535
  {
18281
- text: (tag.name || _optionalChain([tag, 'access', _500 => _500.blog_tags, 'optionalAccess', _501 => _501.name]) || "").toUpperCase(),
17536
+ text: (tag.name || _optionalChain([tag, 'access', _431 => _431.blog_tags, 'optionalAccess', _432 => _432.name]) || "").toUpperCase(),
18282
17537
  variant: "card",
18283
17538
  className: "bg-ods-card border border-ods-border"
18284
17539
  },
18285
- tag.id || _optionalChain([tag, 'access', _502 => _502.blog_tags, 'optionalAccess', _503 => _503.id])
17540
+ tag.id || _optionalChain([tag, 'access', _433 => _433.blog_tags, 'optionalAccess', _434 => _434.id])
18286
17541
  ))]) }),
18287
17542
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 md:grid-cols-4 border border-ods-border rounded-md overflow-hidden w-full", children: [
18288
17543
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "bg-ods-card border-b md:border-b-0 md:border-r border-ods-border p-4 flex flex-col gap-3", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
@@ -18301,15 +17556,15 @@ function ReleaseDetailPage({
18301
17556
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18302
17557
  SquareAvatar,
18303
17558
  {
18304
- src: _optionalChain([author, 'optionalAccess', _504 => _504.avatar_url]) || "",
18305
- alt: _optionalChain([author, 'optionalAccess', _505 => _505.full_name]) || "Author",
18306
- fallback: getInitials4(_optionalChain([author, 'optionalAccess', _506 => _506.full_name]) || "Unknown"),
17559
+ src: _optionalChain([author, 'optionalAccess', _435 => _435.avatar_url]) || "",
17560
+ alt: _optionalChain([author, 'optionalAccess', _436 => _436.full_name]) || "Author",
17561
+ fallback: getInitials4(_optionalChain([author, 'optionalAccess', _437 => _437.full_name]) || "Unknown"),
18307
17562
  size: "md",
18308
17563
  variant: "round"
18309
17564
  }
18310
17565
  ),
18311
17566
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0 flex-1 min-w-0", children: [
18312
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children: _optionalChain([author, 'optionalAccess', _507 => _507.full_name]) || "Unknown Author" }),
17567
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h3 tracking-[-0.36px] text-ods-text-primary truncate", children: _optionalChain([author, 'optionalAccess', _438 => _438.full_name]) || "Unknown Author" }),
18313
17568
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary", children: "Author" })
18314
17569
  ] })
18315
17570
  ] })
@@ -18324,7 +17579,7 @@ function ReleaseDetailPage({
18324
17579
  setGalleryOpen(true);
18325
17580
  }
18326
17581
  },
18327
- children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoPlayer, { url: mediaItem.media_url, useNativeAspectRatio: false }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: mediaItem.media_url, alt: mediaItem.title || `Media ${index + 1}`, className: "w-full h-full object-cover" })
17582
+ children: mediaItem.media_type === "video" || mediaItem.media_type === "demo" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video2, { url: mediaItem.media_url, layout: "native" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: mediaItem.media_url, alt: mediaItem.title || `Media ${index + 1}`, className: "w-full h-full object-cover" })
18328
17583
  },
18329
17584
  mediaItem.id || index
18330
17585
  )) }),
@@ -18340,16 +17595,36 @@ function ReleaseDetailPage({
18340
17595
  videoBites,
18341
17596
  bitesTitle: "Video Clips",
18342
17597
  filterPublishedBites: true,
18343
- srtContent: _optionalChain([release, 'optionalAccess', _508 => _508.srt_content]),
18344
- captionsUrl: _optionalChain([release, 'optionalAccess', _509 => _509.captionsUrl])
17598
+ srtContent: _optionalChain([release, 'optionalAccess', _439 => _439.srt_content]),
17599
+ captionsUrl: _optionalChain([release, 'optionalAccess', _440 => _440.captionsUrl])
18345
17600
  }
18346
17601
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
18347
- youtubeUrl && (() => {
18348
- const videoId = extractYouTubeId(youtubeUrl);
18349
- return videoId ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, YouTubeEmbed, { videoId, title: `${releaseTitle} - Video`, showTitle: false, showMeta: true }) : null;
18350
- })(),
18351
- !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-3xl", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoPlayer, { url: mainVideoUrl, srtContent: _optionalChain([release, 'optionalAccess', _510 => _510.srt_content]), captionsUrl: _optionalChain([release, 'optionalAccess', _511 => _511.captionsUrl]) }) }) }),
18352
- highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full max-w-3xl", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoPlayer, { url: highlightVideoUrl, poster: highlightVideoThumbnail }) }) })
17602
+ youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17603
+ Video2,
17604
+ {
17605
+ kind: "youtube",
17606
+ url: youtubeUrl,
17607
+ title: `${releaseTitle} - Video`,
17608
+ layout: "native"
17609
+ }
17610
+ ),
17611
+ !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17612
+ Video2,
17613
+ {
17614
+ url: mainVideoUrl,
17615
+ srtContent: _optionalChain([release, 'optionalAccess', _441 => _441.srt_content]),
17616
+ captionsUrl: _optionalChain([release, 'optionalAccess', _442 => _442.captionsUrl]),
17617
+ layout: "centered"
17618
+ }
17619
+ ),
17620
+ highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
17621
+ Video2,
17622
+ {
17623
+ url: highlightVideoUrl,
17624
+ poster: highlightVideoThumbnail,
17625
+ layout: "centered"
17626
+ }
17627
+ )
18353
17628
  ] }),
18354
17629
  releaseContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: releaseContent }) }),
18355
17630
  hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Card, { className: "border-red-500 bg-red-500/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
@@ -18428,7 +17703,7 @@ function ReleaseDetailPage({
18428
17703
  }
18429
17704
  )
18430
17705
  ] }),
18431
- (_optionalChain([githubReleases, 'optionalAccess', _512 => _512.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _513 => _513.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
17706
+ (_optionalChain([githubReleases, 'optionalAccess', _443 => _443.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _444 => _444.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-1 w-full", children: [
18432
17707
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h5 tracking-[-0.28px] text-ods-text-secondary", children: "Related Links" }),
18433
17708
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Card, { className: "bg-ods-card border-ods-border p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
18434
17709
  githubReleases && githubReleases.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-1", children: [
@@ -18457,7 +17732,7 @@ function ReleaseDetailPage({
18457
17732
  {
18458
17733
  href: path.startsWith("http") ? path : `/knowledge-base${path.startsWith("/") ? "" : "/"}${path}`,
18459
17734
  className: "text-h4 text-[#ffc008] hover:underline",
18460
- children: _optionalChain([path, 'access', _514 => _514.replace, 'call', _515 => _515(/^\//, ""), 'access', _516 => _516.split, 'call', _517 => _517("/"), 'access', _518 => _518.pop, 'call', _519 => _519(), 'optionalAccess', _520 => _520.replace, 'call', _521 => _521(/-/g, " ")]) || "View Article"
17735
+ children: _optionalChain([path, 'access', _445 => _445.replace, 'call', _446 => _446(/^\//, ""), 'access', _447 => _447.split, 'call', _448 => _448("/"), 'access', _449 => _449.pop, 'call', _450 => _450(), 'optionalAccess', _451 => _451.replace, 'call', _452 => _452(/-/g, " ")]) || "View Article"
18461
17736
  }
18462
17737
  ),
18463
17738
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "h-6 w-6 text-[#ffc008] shrink-0" })
@@ -18603,7 +17878,7 @@ function InfoRow({ label, value, icon }) {
18603
17878
  _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
18604
17879
 
18605
17880
 
18606
- var InputTrigger = React48.forwardRef(
17881
+ var InputTrigger = React47.forwardRef(
18607
17882
  ({ selectedLabel, placeholder, startIcon, endIcon, invalid, className, disabled, ...props }, ref) => {
18608
17883
  const isPlaceholder = selectedLabel === void 0 || selectedLabel === null || selectedLabel === "";
18609
17884
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -18667,8 +17942,8 @@ function MediaTypeSelector({
18667
17942
  className,
18668
17943
  disabled
18669
17944
  }) {
18670
- const [key, setKey] = React49.useState(0);
18671
- React49.useEffect(() => {
17945
+ const [key, setKey] = React48.useState(0);
17946
+ React48.useEffect(() => {
18672
17947
  setKey((prev) => prev + 1);
18673
17948
  }, [value]);
18674
17949
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -18824,7 +18099,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
18824
18099
 
18825
18100
  var _reactradiogroup = require('@radix-ui/react-radio-group'); var RadioGroupPrimitive = _interopRequireWildcard(_reactradiogroup);
18826
18101
 
18827
- var RadioGroup = React51.forwardRef(({ className, ...props }, ref) => {
18102
+ var RadioGroup = React50.forwardRef(({ className, ...props }, ref) => {
18828
18103
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18829
18104
  RadioGroupPrimitive.Root,
18830
18105
  {
@@ -18835,7 +18110,7 @@ var RadioGroup = React51.forwardRef(({ className, ...props }, ref) => {
18835
18110
  );
18836
18111
  });
18837
18112
  RadioGroup.displayName = RadioGroupPrimitive.Root.displayName;
18838
- var RadioGroupItem = React51.forwardRef(({ className, ...props }, ref) => {
18113
+ var RadioGroupItem = React50.forwardRef(({ className, ...props }, ref) => {
18839
18114
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18840
18115
  RadioGroupPrimitive.Item,
18841
18116
  {
@@ -18856,7 +18131,7 @@ var RadioGroupItem = React51.forwardRef(({ className, ...props }, ref) => {
18856
18131
  );
18857
18132
  });
18858
18133
  RadioGroupItem.displayName = RadioGroupPrimitive.Item.displayName;
18859
- var RadioGroupBlock = React51.forwardRef(
18134
+ var RadioGroupBlock = React50.forwardRef(
18860
18135
  ({ className, options, variant = "separated", error, itemClassName, disabled, ...props }, ref) => {
18861
18136
  const isGrouped = variant === "grouped";
18862
18137
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "relative flex w-full flex-col", className), children: [
@@ -18970,7 +18245,7 @@ function TagsInput({
18970
18245
  badgeClassName,
18971
18246
  label
18972
18247
  }) {
18973
- const [inputValue, setInputValue] = React52.useState("");
18248
+ const [inputValue, setInputValue] = React51.useState("");
18974
18249
  const handleAddTag = () => {
18975
18250
  const trimmedValue = inputValue.trim();
18976
18251
  if (!trimmedValue) return;
@@ -19076,19 +18351,19 @@ function TagsManager({
19076
18351
  disabled = false,
19077
18352
  className
19078
18353
  }) {
19079
- const [open, setOpen] = React53.useState(false);
19080
- const [search, setSearch] = React53.useState("");
19081
- const [editingId, setEditingId] = React53.useState(null);
19082
- const [editingName, setEditingName] = React53.useState("");
19083
- const editInputRef = React53.useRef(null);
19084
- const inputRef = React53.useRef(null);
19085
- const containerRef = React53.useRef(null);
18354
+ const [open, setOpen] = React52.useState(false);
18355
+ const [search, setSearch] = React52.useState("");
18356
+ const [editingId, setEditingId] = React52.useState(null);
18357
+ const [editingName, setEditingName] = React52.useState("");
18358
+ const editInputRef = React52.useRef(null);
18359
+ const inputRef = React52.useRef(null);
18360
+ const containerRef = React52.useRef(null);
19086
18361
  const selectedTags = tags.filter((t) => selectedIds.includes(t.id));
19087
18362
  const filtered = tags.filter(
19088
18363
  (t) => t.name.toLowerCase().includes(search.toLowerCase())
19089
18364
  );
19090
18365
  const showCreateOption = onCreateTag && search.trim() && !tags.some((t) => t.name.toLowerCase() === search.trim().toLowerCase());
19091
- const toggleTag = React53.useCallback(
18366
+ const toggleTag = React52.useCallback(
19092
18367
  (id) => {
19093
18368
  if (selectedIds.includes(id)) {
19094
18369
  onChange(selectedIds.filter((i) => i !== id));
@@ -19098,32 +18373,32 @@ function TagsManager({
19098
18373
  },
19099
18374
  [selectedIds, onChange]
19100
18375
  );
19101
- const handleCreate = React53.useCallback(async () => {
18376
+ const handleCreate = React52.useCallback(async () => {
19102
18377
  if (!onCreateTag) return;
19103
18378
  const name = search.trim();
19104
18379
  if (!name) return;
19105
18380
  const result = await onCreateTag(name);
19106
- if (_optionalChain([result, 'optionalAccess', _522 => _522.id])) {
18381
+ if (_optionalChain([result, 'optionalAccess', _453 => _453.id])) {
19107
18382
  onChange([...selectedIds, result.id]);
19108
18383
  setSearch("");
19109
18384
  }
19110
18385
  }, [search, onCreateTag, selectedIds, onChange]);
19111
- const startEdit = React53.useCallback((id, name) => {
18386
+ const startEdit = React52.useCallback((id, name) => {
19112
18387
  setEditingId(id);
19113
18388
  setEditingName(name);
19114
- setTimeout(() => _optionalChain([editInputRef, 'access', _523 => _523.current, 'optionalAccess', _524 => _524.focus, 'call', _525 => _525()]), 0);
18389
+ setTimeout(() => _optionalChain([editInputRef, 'access', _454 => _454.current, 'optionalAccess', _455 => _455.focus, 'call', _456 => _456()]), 0);
19115
18390
  }, []);
19116
- const confirmEdit = React53.useCallback(async () => {
18391
+ const confirmEdit = React52.useCallback(async () => {
19117
18392
  if (!onUpdateTag || !editingId || !editingName.trim()) return;
19118
18393
  await onUpdateTag(editingId, editingName.trim());
19119
18394
  setEditingId(null);
19120
18395
  setEditingName("");
19121
18396
  }, [editingId, editingName, onUpdateTag]);
19122
- const cancelEdit = React53.useCallback(() => {
18397
+ const cancelEdit = React52.useCallback(() => {
19123
18398
  setEditingId(null);
19124
18399
  setEditingName("");
19125
18400
  }, []);
19126
- const handleDelete = React53.useCallback(
18401
+ const handleDelete = React52.useCallback(
19127
18402
  async (id) => {
19128
18403
  if (!onDeleteTag) return;
19129
18404
  await onDeleteTag(id);
@@ -19133,12 +18408,12 @@ function TagsManager({
19133
18408
  },
19134
18409
  [onDeleteTag, selectedIds, onChange]
19135
18410
  );
19136
- const handleClearAll = React53.useCallback(
18411
+ const handleClearAll = React52.useCallback(
19137
18412
  (e) => {
19138
18413
  e.stopPropagation();
19139
18414
  onChange([]);
19140
18415
  setSearch("");
19141
- _optionalChain([inputRef, 'access', _526 => _526.current, 'optionalAccess', _527 => _527.focus, 'call', _528 => _528()]);
18416
+ _optionalChain([inputRef, 'access', _457 => _457.current, 'optionalAccess', _458 => _458.focus, 'call', _459 => _459()]);
19142
18417
  },
19143
18418
  [onChange]
19144
18419
  );
@@ -19237,10 +18512,10 @@ function TagsManager({
19237
18512
  align: "start",
19238
18513
  onOpenAutoFocus: (e) => {
19239
18514
  e.preventDefault();
19240
- _optionalChain([inputRef, 'access', _529 => _529.current, 'optionalAccess', _530 => _530.focus, 'call', _531 => _531()]);
18515
+ _optionalChain([inputRef, 'access', _460 => _460.current, 'optionalAccess', _461 => _461.focus, 'call', _462 => _462()]);
19241
18516
  },
19242
18517
  onInteractOutside: (e) => {
19243
- if (_optionalChain([containerRef, 'access', _532 => _532.current, 'optionalAccess', _533 => _533.contains, 'call', _534 => _534(e.target)])) {
18518
+ if (_optionalChain([containerRef, 'access', _463 => _463.current, 'optionalAccess', _464 => _464.contains, 'call', _465 => _465(e.target)])) {
19244
18519
  e.preventDefault();
19245
18520
  }
19246
18521
  },
@@ -19434,7 +18709,7 @@ var _reactalertdialog = require('@radix-ui/react-alert-dialog'); var AlertDialog
19434
18709
  var AlertDialog = AlertDialogPrimitive.Root;
19435
18710
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
19436
18711
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
19437
- var AlertDialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18712
+ var AlertDialogOverlay = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19438
18713
  AlertDialogPrimitive.Overlay,
19439
18714
  {
19440
18715
  className: _chunkOFAYLG6Dcjs.cn.call(void 0,
@@ -19446,7 +18721,7 @@ var AlertDialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /*
19446
18721
  }
19447
18722
  ));
19448
18723
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
19449
- var AlertDialogContent = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AlertDialogPortal, { children: [
18724
+ var AlertDialogContent = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AlertDialogPortal, { children: [
19450
18725
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AlertDialogOverlay, {}),
19451
18726
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19452
18727
  AlertDialogPrimitive.Content,
@@ -19489,7 +18764,7 @@ var AlertDialogFooter = ({
19489
18764
  }
19490
18765
  );
19491
18766
  AlertDialogFooter.displayName = "AlertDialogFooter";
19492
- var AlertDialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18767
+ var AlertDialogTitle = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19493
18768
  AlertDialogPrimitive.Title,
19494
18769
  {
19495
18770
  ref,
@@ -19498,7 +18773,7 @@ var AlertDialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @
19498
18773
  }
19499
18774
  ));
19500
18775
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
19501
- var AlertDialogDescription = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18776
+ var AlertDialogDescription = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19502
18777
  AlertDialogPrimitive.Description,
19503
18778
  {
19504
18779
  ref,
@@ -19507,7 +18782,7 @@ var AlertDialogDescription = React54.forwardRef(({ className, ...props }, ref) =
19507
18782
  }
19508
18783
  ));
19509
18784
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
19510
- var AlertDialogAction = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18785
+ var AlertDialogAction = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19511
18786
  AlertDialogPrimitive.Action,
19512
18787
  {
19513
18788
  ref,
@@ -19516,7 +18791,7 @@ var AlertDialogAction = React54.forwardRef(({ className, ...props }, ref) => /*
19516
18791
  }
19517
18792
  ));
19518
18793
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
19519
- var AlertDialogCancel = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18794
+ var AlertDialogCancel = React53.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19520
18795
  AlertDialogPrimitive.Cancel,
19521
18796
  {
19522
18797
  ref,
@@ -19544,7 +18819,7 @@ var Dialog = DialogPrimitive3.Root;
19544
18819
  var DialogTrigger = DialogPrimitive3.Trigger;
19545
18820
  var DialogPortal = DialogPrimitive3.Portal;
19546
18821
  var DialogClose = DialogPrimitive3.Close;
19547
- var DialogOverlay = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18822
+ var DialogOverlay = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19548
18823
  DialogPrimitive3.Overlay,
19549
18824
  {
19550
18825
  ref,
@@ -19556,7 +18831,7 @@ var DialogOverlay = React55.forwardRef(({ className, ...props }, ref) => /* @__P
19556
18831
  }
19557
18832
  ));
19558
18833
  DialogOverlay.displayName = DialogPrimitive3.Overlay.displayName;
19559
- var DialogContent = React55.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPortal, { children: [
18834
+ var DialogContent = React54.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DialogPortal, { children: [
19560
18835
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogOverlay, {}),
19561
18836
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19562
18837
  DialogPrimitive3.Content,
@@ -19582,7 +18857,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.
19582
18857
  DialogHeader.displayName = "DialogHeader";
19583
18858
  var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col-reverse md:flex-row md:justify-end md:space-x-2", className), ...props });
19584
18859
  DialogFooter.displayName = "DialogFooter";
19585
- var DialogTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
18860
+ var DialogTitle = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19586
18861
  DialogPrimitive3.Title,
19587
18862
  {
19588
18863
  ref,
@@ -19591,7 +18866,7 @@ var DialogTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PUR
19591
18866
  }
19592
18867
  ));
19593
18868
  DialogTitle.displayName = DialogPrimitive3.Title.displayName;
19594
- var DialogDescription = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive3.Description, { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "text-sm text-muted-foreground", className), ...props }));
18869
+ var DialogDescription = React54.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DialogPrimitive3.Description, { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "text-sm text-muted-foreground", className), ...props }));
19595
18870
  DialogDescription.displayName = DialogPrimitive3.Description.displayName;
19596
18871
 
19597
18872
  // src/components/ui/modal.tsx
@@ -19599,7 +18874,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
19599
18874
 
19600
18875
 
19601
18876
 
19602
- var Modal = React56.forwardRef(
18877
+ var Modal = React55.forwardRef(
19603
18878
  ({ isOpen, onClose, children, className }, ref) => {
19604
18879
  _react.useEffect.call(void 0, () => {
19605
18880
  const handleKeyDown = (event) => {
@@ -19643,11 +18918,11 @@ var Modal = React56.forwardRef(
19643
18918
  }
19644
18919
  );
19645
18920
  Modal.displayName = "Modal";
19646
- var ModalContent = React56.forwardRef(
18921
+ var ModalContent = React55.forwardRef(
19647
18922
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "overflow-y-auto min-h-0 flex-1", className), children })
19648
18923
  );
19649
18924
  ModalContent.displayName = "ModalContent";
19650
- var ModalHeader = React56.forwardRef(
18925
+ var ModalHeader = React55.forwardRef(
19651
18926
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19652
18927
  "div",
19653
18928
  {
@@ -19658,7 +18933,7 @@ var ModalHeader = React56.forwardRef(
19658
18933
  )
19659
18934
  );
19660
18935
  ModalHeader.displayName = "ModalHeader";
19661
- var ModalTitle = React56.forwardRef(
18936
+ var ModalTitle = React55.forwardRef(
19662
18937
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19663
18938
  "h2",
19664
18939
  {
@@ -19669,7 +18944,7 @@ var ModalTitle = React56.forwardRef(
19669
18944
  )
19670
18945
  );
19671
18946
  ModalTitle.displayName = "ModalTitle";
19672
- var ModalFooter = React56.forwardRef(
18947
+ var ModalFooter = React55.forwardRef(
19673
18948
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19674
18949
  "div",
19675
18950
  {
@@ -19686,8 +18961,8 @@ ModalFooter.displayName = "ModalFooter";
19686
18961
 
19687
18962
  _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
19688
18963
 
19689
- var ModalContext = React57.createContext({});
19690
- var Modal2 = React57.forwardRef(
18964
+ var ModalContext = React56.createContext({});
18965
+ var Modal2 = React56.forwardRef(
19691
18966
  ({ isOpen, onClose, children, className }, ref) => {
19692
18967
  _react.useEffect.call(void 0, () => {
19693
18968
  const handleKeyDown = (event) => {
@@ -19736,13 +19011,13 @@ var Modal2 = React57.forwardRef(
19736
19011
  }
19737
19012
  );
19738
19013
  Modal2.displayName = "ModalV2";
19739
- var ModalContent2 = React57.forwardRef(
19014
+ var ModalContent2 = React56.forwardRef(
19740
19015
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex-1 min-h-0 overflow-y-auto", className), children })
19741
19016
  );
19742
19017
  ModalContent2.displayName = "ModalV2Content";
19743
- var ModalHeader2 = React57.forwardRef(
19018
+ var ModalHeader2 = React56.forwardRef(
19744
19019
  ({ children, className }, ref) => {
19745
- const { onClose } = React57.useContext(ModalContext);
19020
+ const { onClose } = React56.useContext(ModalContext);
19746
19021
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19747
19022
  "div",
19748
19023
  {
@@ -19765,7 +19040,7 @@ var ModalHeader2 = React57.forwardRef(
19765
19040
  }
19766
19041
  );
19767
19042
  ModalHeader2.displayName = "ModalV2Header";
19768
- var ModalTitle2 = React57.forwardRef(
19043
+ var ModalTitle2 = React56.forwardRef(
19769
19044
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19770
19045
  "h2",
19771
19046
  {
@@ -19776,7 +19051,7 @@ var ModalTitle2 = React57.forwardRef(
19776
19051
  )
19777
19052
  );
19778
19053
  ModalTitle2.displayName = "ModalV2Title";
19779
- var ModalFooter2 = React57.forwardRef(
19054
+ var ModalFooter2 = React56.forwardRef(
19780
19055
  ({ children, className }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19781
19056
  "div",
19782
19057
  {
@@ -19793,7 +19068,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
19793
19068
 
19794
19069
  var _reactseparator = require('@radix-ui/react-separator'); var SeparatorPrimitive = _interopRequireWildcard(_reactseparator);
19795
19070
 
19796
- var Separator2 = React58.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19071
+ var Separator2 = React57.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19797
19072
  SeparatorPrimitive.Root,
19798
19073
  {
19799
19074
  ref,
@@ -19816,7 +19091,7 @@ var Sheet = SheetPrimitive.Root;
19816
19091
  var SheetTrigger = SheetPrimitive.Trigger;
19817
19092
  var SheetClose = SheetPrimitive.Close;
19818
19093
  var SheetPortal = SheetPrimitive.Portal;
19819
- var SheetOverlay = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19094
+ var SheetOverlay = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19820
19095
  SheetPrimitive.Overlay,
19821
19096
  {
19822
19097
  className: _chunkOFAYLG6Dcjs.cn.call(void 0,
@@ -19844,7 +19119,7 @@ var sheetVariants = _classvarianceauthority.cva.call(void 0,
19844
19119
  }
19845
19120
  }
19846
19121
  );
19847
- var SheetContent = React59.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetPortal, { children: [
19122
+ var SheetContent = React58.forwardRef(({ side = "right", className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, SheetPortal, { children: [
19848
19123
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SheetOverlay, {}),
19849
19124
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19850
19125
  SheetPrimitive.Content,
@@ -19891,7 +19166,7 @@ var SheetFooter = ({
19891
19166
  }
19892
19167
  );
19893
19168
  SheetFooter.displayName = "SheetFooter";
19894
- var SheetTitle = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19169
+ var SheetTitle = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19895
19170
  SheetPrimitive.Title,
19896
19171
  {
19897
19172
  ref,
@@ -19900,7 +19175,7 @@ var SheetTitle = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE
19900
19175
  }
19901
19176
  ));
19902
19177
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
19903
- var SheetDescription = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19178
+ var SheetDescription = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19904
19179
  SheetPrimitive.Description,
19905
19180
  {
19906
19181
  ref,
@@ -19916,7 +19191,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
19916
19191
  var _reacttabs = require('@radix-ui/react-tabs'); var TabsPrimitive = _interopRequireWildcard(_reacttabs);
19917
19192
 
19918
19193
  var Tabs = TabsPrimitive.Root;
19919
- var TabsList = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19194
+ var TabsList = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19920
19195
  TabsPrimitive.List,
19921
19196
  {
19922
19197
  ref,
@@ -19928,7 +19203,7 @@ var TabsList = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__
19928
19203
  }
19929
19204
  ));
19930
19205
  TabsList.displayName = TabsPrimitive.List.displayName;
19931
- var TabsTrigger = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19206
+ var TabsTrigger = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19932
19207
  TabsPrimitive.Trigger,
19933
19208
  {
19934
19209
  ref,
@@ -19940,7 +19215,7 @@ var TabsTrigger = React60.forwardRef(({ className, ...props }, ref) => /* @__PUR
19940
19215
  }
19941
19216
  ));
19942
19217
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
19943
- var TabsContent = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19218
+ var TabsContent = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19944
19219
  TabsPrimitive.Content,
19945
19220
  {
19946
19221
  ref,
@@ -19960,9 +19235,9 @@ var _reactaccordion = require('@radix-ui/react-accordion'); var AccordionPrimiti
19960
19235
 
19961
19236
 
19962
19237
  var Accordion = AccordionPrimitive.Root;
19963
- var AccordionItem = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Item, { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "border-b", className), ...props }));
19238
+ var AccordionItem = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Item, { ref, className: _chunkOFAYLG6Dcjs.cn.call(void 0, "border-b", className), ...props }));
19964
19239
  AccordionItem.displayName = "AccordionItem";
19965
- var AccordionTrigger = React61.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19240
+ var AccordionTrigger = React60.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionPrimitive.Header, { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19966
19241
  AccordionPrimitive.Trigger,
19967
19242
  {
19968
19243
  ref,
@@ -19978,7 +19253,7 @@ var AccordionTrigger = React61.forwardRef(({ className, children, ...props }, re
19978
19253
  }
19979
19254
  ) }));
19980
19255
  AccordionTrigger.displayName = "AccordionTrigger";
19981
- var AccordionContent = React61.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19256
+ var AccordionContent = React60.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19982
19257
  AccordionPrimitive.Content,
19983
19258
  {
19984
19259
  ref,
@@ -19998,9 +19273,9 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
19998
19273
  var _reactslot = require('@radix-ui/react-slot');
19999
19274
 
20000
19275
 
20001
- var Breadcrumb = React62.forwardRef(({ ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { ref, "aria-label": "breadcrumb", ...props }));
19276
+ var Breadcrumb = React61.forwardRef(({ ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "nav", { ref, "aria-label": "breadcrumb", ...props }));
20002
19277
  Breadcrumb.displayName = "Breadcrumb";
20003
- var BreadcrumbList = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19278
+ var BreadcrumbList = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20004
19279
  "ol",
20005
19280
  {
20006
19281
  ref,
@@ -20012,7 +19287,7 @@ var BreadcrumbList = React62.forwardRef(({ className, ...props }, ref) => /* @__
20012
19287
  }
20013
19288
  ));
20014
19289
  BreadcrumbList.displayName = "BreadcrumbList";
20015
- var BreadcrumbItem = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19290
+ var BreadcrumbItem = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20016
19291
  "li",
20017
19292
  {
20018
19293
  ref,
@@ -20021,7 +19296,7 @@ var BreadcrumbItem = React62.forwardRef(({ className, ...props }, ref) => /* @__
20021
19296
  }
20022
19297
  ));
20023
19298
  BreadcrumbItem.displayName = "BreadcrumbItem";
20024
- var BreadcrumbLink = React62.forwardRef(({ asChild, className, ...props }, ref) => {
19299
+ var BreadcrumbLink = React61.forwardRef(({ asChild, className, ...props }, ref) => {
20025
19300
  const Comp = asChild ? _reactslot.Slot : "a";
20026
19301
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20027
19302
  Comp,
@@ -20033,7 +19308,7 @@ var BreadcrumbLink = React62.forwardRef(({ asChild, className, ...props }, ref)
20033
19308
  );
20034
19309
  });
20035
19310
  BreadcrumbLink.displayName = "BreadcrumbLink";
20036
- var BreadcrumbPage = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19311
+ var BreadcrumbPage = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20037
19312
  "span",
20038
19313
  {
20039
19314
  ref,
@@ -20089,7 +19364,7 @@ var MenubarGroup = MenubarPrimitive.Group;
20089
19364
  var MenubarPortal = MenubarPrimitive.Portal;
20090
19365
  var MenubarSub = MenubarPrimitive.Sub;
20091
19366
  var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
20092
- var Menubar = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19367
+ var Menubar = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20093
19368
  MenubarPrimitive.Root,
20094
19369
  {
20095
19370
  ref,
@@ -20101,7 +19376,7 @@ var Menubar = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__
20101
19376
  }
20102
19377
  ));
20103
19378
  Menubar.displayName = MenubarPrimitive.Root.displayName;
20104
- var MenubarTrigger = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19379
+ var MenubarTrigger = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20105
19380
  MenubarPrimitive.Trigger,
20106
19381
  {
20107
19382
  ref,
@@ -20113,7 +19388,7 @@ var MenubarTrigger = React63.forwardRef(({ className, ...props }, ref) => /* @__
20113
19388
  }
20114
19389
  ));
20115
19390
  MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
20116
- var MenubarSubTrigger = React63.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19391
+ var MenubarSubTrigger = React62.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
20117
19392
  MenubarPrimitive.SubTrigger,
20118
19393
  {
20119
19394
  ref,
@@ -20130,7 +19405,7 @@ var MenubarSubTrigger = React63.forwardRef(({ className, inset, children, ...pro
20130
19405
  }
20131
19406
  ));
20132
19407
  MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
20133
- var MenubarSubContent = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19408
+ var MenubarSubContent = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20134
19409
  MenubarPrimitive.SubContent,
20135
19410
  {
20136
19411
  ref,
@@ -20142,7 +19417,7 @@ var MenubarSubContent = React63.forwardRef(({ className, ...props }, ref) => /*
20142
19417
  }
20143
19418
  ));
20144
19419
  MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
20145
- var MenubarContent = React63.forwardRef(
19420
+ var MenubarContent = React62.forwardRef(
20146
19421
  ({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MenubarPrimitive.Portal, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20147
19422
  MenubarPrimitive.Content,
20148
19423
  {
@@ -20159,7 +19434,7 @@ var MenubarContent = React63.forwardRef(
20159
19434
  ) })
20160
19435
  );
20161
19436
  MenubarContent.displayName = MenubarPrimitive.Content.displayName;
20162
- var MenubarItem = React63.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19437
+ var MenubarItem = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20163
19438
  MenubarPrimitive.Item,
20164
19439
  {
20165
19440
  ref,
@@ -20172,7 +19447,7 @@ var MenubarItem = React63.forwardRef(({ className, inset, ...props }, ref) => /*
20172
19447
  }
20173
19448
  ));
20174
19449
  MenubarItem.displayName = MenubarPrimitive.Item.displayName;
20175
- var MenubarCheckboxItem = React63.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19450
+ var MenubarCheckboxItem = React62.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
20176
19451
  MenubarPrimitive.CheckboxItem,
20177
19452
  {
20178
19453
  ref,
@@ -20189,7 +19464,7 @@ var MenubarCheckboxItem = React63.forwardRef(({ className, children, checked, ..
20189
19464
  }
20190
19465
  ));
20191
19466
  MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
20192
- var MenubarRadioItem = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19467
+ var MenubarRadioItem = React62.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
20193
19468
  MenubarPrimitive.RadioItem,
20194
19469
  {
20195
19470
  ref,
@@ -20205,7 +19480,7 @@ var MenubarRadioItem = React63.forwardRef(({ className, children, ...props }, re
20205
19480
  }
20206
19481
  ));
20207
19482
  MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
20208
- var MenubarLabel = React63.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19483
+ var MenubarLabel = React62.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20209
19484
  MenubarPrimitive.Label,
20210
19485
  {
20211
19486
  ref,
@@ -20218,7 +19493,7 @@ var MenubarLabel = React63.forwardRef(({ className, inset, ...props }, ref) => /
20218
19493
  }
20219
19494
  ));
20220
19495
  MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
20221
- var MenubarSeparator = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19496
+ var MenubarSeparator = React62.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20222
19497
  MenubarPrimitive.Separator,
20223
19498
  {
20224
19499
  ref,
@@ -20251,7 +19526,7 @@ var _reactnavigationmenu = require('@radix-ui/react-navigation-menu'); var Navig
20251
19526
 
20252
19527
 
20253
19528
 
20254
- var NavigationMenu = React64.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19529
+ var NavigationMenu = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
20255
19530
  NavigationMenuPrimitive.Root,
20256
19531
  {
20257
19532
  ref,
@@ -20267,7 +19542,7 @@ var NavigationMenu = React64.forwardRef(({ className, children, ...props }, ref)
20267
19542
  }
20268
19543
  ));
20269
19544
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
20270
- var NavigationMenuList = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19545
+ var NavigationMenuList = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20271
19546
  NavigationMenuPrimitive.List,
20272
19547
  {
20273
19548
  ref,
@@ -20283,7 +19558,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
20283
19558
  var navigationMenuTriggerStyle = _classvarianceauthority.cva.call(void 0,
20284
19559
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
20285
19560
  );
20286
- var NavigationMenuTrigger = React64.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
19561
+ var NavigationMenuTrigger = React63.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
20287
19562
  NavigationMenuPrimitive.Trigger,
20288
19563
  {
20289
19564
  ref,
@@ -20303,7 +19578,7 @@ var NavigationMenuTrigger = React64.forwardRef(({ className, children, ...props
20303
19578
  }
20304
19579
  ));
20305
19580
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
20306
- var NavigationMenuContent = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19581
+ var NavigationMenuContent = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20307
19582
  NavigationMenuPrimitive.Content,
20308
19583
  {
20309
19584
  ref,
@@ -20316,7 +19591,7 @@ var NavigationMenuContent = React64.forwardRef(({ className, ...props }, ref) =>
20316
19591
  ));
20317
19592
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
20318
19593
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
20319
- var NavigationMenuViewport = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19594
+ var NavigationMenuViewport = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20320
19595
  NavigationMenuPrimitive.Viewport,
20321
19596
  {
20322
19597
  className: _chunkOFAYLG6Dcjs.cn.call(void 0,
@@ -20328,7 +19603,7 @@ var NavigationMenuViewport = React64.forwardRef(({ className, ...props }, ref) =
20328
19603
  }
20329
19604
  ) }));
20330
19605
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
20331
- var NavigationMenuIndicator = React64.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19606
+ var NavigationMenuIndicator = React63.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20332
19607
  NavigationMenuPrimitive.Indicator,
20333
19608
  {
20334
19609
  ref,
@@ -20387,19 +19662,19 @@ function TabNavigation({
20387
19662
  const validTabIds = _react.useMemo.call(void 0, () => new Set(tabs.map((t) => t.id)), [tabs]);
20388
19663
  const getInitialTab = () => {
20389
19664
  if (isUrlSyncEnabled) {
20390
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _535 => _535.get, 'call', _536 => _536(paramName)]) || "";
19665
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _466 => _466.get, 'call', _467 => _467(paramName)]) || "";
20391
19666
  if (validTabIds.has(fromUrl)) {
20392
19667
  return fromUrl;
20393
19668
  }
20394
19669
  }
20395
- return defaultTab || _optionalChain([tabs, 'access', _537 => _537[0], 'optionalAccess', _538 => _538.id]) || "";
19670
+ return defaultTab || _optionalChain([tabs, 'access', _468 => _468[0], 'optionalAccess', _469 => _469.id]) || "";
20396
19671
  };
20397
19672
  const [internalActiveTab, setInternalActiveTab] = _react.useState.call(void 0, getInitialTab);
20398
19673
  const activeTab = isUrlSyncEnabled ? internalActiveTab : controlledActiveTab || "";
20399
19674
  _react.useEffect.call(void 0, () => {
20400
19675
  if (!isUrlSyncEnabled) return;
20401
- const fromUrl = _optionalChain([searchParams, 'optionalAccess', _539 => _539.get, 'call', _540 => _540(paramName)]) || "";
20402
- const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _541 => _541[0], 'optionalAccess', _542 => _542.id]) || "";
19676
+ const fromUrl = _optionalChain([searchParams, 'optionalAccess', _470 => _470.get, 'call', _471 => _471(paramName)]) || "";
19677
+ const nextTab = validTabIds.has(fromUrl) ? fromUrl : defaultTab || _optionalChain([tabs, 'access', _472 => _472[0], 'optionalAccess', _473 => _473.id]) || "";
20403
19678
  if (nextTab !== internalActiveTab) {
20404
19679
  setInternalActiveTab(nextTab);
20405
19680
  }
@@ -20407,13 +19682,13 @@ function TabNavigation({
20407
19682
  const handleTabChange = (tabId) => {
20408
19683
  if (isUrlSyncEnabled) {
20409
19684
  setInternalActiveTab(tabId);
20410
- const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _543 => _543.toString, 'call', _544 => _544()]));
19685
+ const params = new URLSearchParams(_optionalChain([searchParams, 'optionalAccess', _474 => _474.toString, 'call', _475 => _475()]));
20411
19686
  params.set(paramName, tabId);
20412
19687
  const method = replaceState ? "replace" : "push";
20413
19688
  router[method](`${pathname}?${params.toString()}`);
20414
- _optionalChain([controlledOnTabChange, 'optionalCall', _545 => _545(tabId)]);
19689
+ _optionalChain([controlledOnTabChange, 'optionalCall', _476 => _476(tabId)]);
20415
19690
  } else {
20416
- _optionalChain([controlledOnTabChange, 'optionalCall', _546 => _546(tabId)]);
19691
+ _optionalChain([controlledOnTabChange, 'optionalCall', _477 => _477(tabId)]);
20417
19692
  }
20418
19693
  };
20419
19694
  const scrollRef = _react.useRef.call(void 0, null);
@@ -20501,7 +19776,7 @@ function TabNavigation({
20501
19776
  var getTabById = (tabs, tabId) => tabs.find((tab) => tab.id === tabId);
20502
19777
  var getTabComponent = (tabs, tabId) => {
20503
19778
  const tab = getTabById(tabs, tabId);
20504
- return _optionalChain([tab, 'optionalAccess', _547 => _547.component]) || null;
19779
+ return _optionalChain([tab, 'optionalAccess', _478 => _478.component]) || null;
20505
19780
  };
20506
19781
 
20507
19782
  // src/components/ui/alert.tsx
@@ -20523,7 +19798,7 @@ var alertVariants = _classvarianceauthority.cva.call(void 0,
20523
19798
  }
20524
19799
  }
20525
19800
  );
20526
- var Alert = React66.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19801
+ var Alert = React65.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20527
19802
  "div",
20528
19803
  {
20529
19804
  ref,
@@ -20533,7 +19808,7 @@ var Alert = React66.forwardRef(({ className, variant, ...props }, ref) => /* @__
20533
19808
  }
20534
19809
  ));
20535
19810
  Alert.displayName = "Alert";
20536
- var AlertTitle = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19811
+ var AlertTitle = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20537
19812
  "h5",
20538
19813
  {
20539
19814
  ref,
@@ -20542,7 +19817,7 @@ var AlertTitle = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE
20542
19817
  }
20543
19818
  ));
20544
19819
  AlertTitle.displayName = "AlertTitle";
20545
- var AlertDescription = React66.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19820
+ var AlertDescription = React65.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20546
19821
  "div",
20547
19822
  {
20548
19823
  ref,
@@ -20557,7 +19832,7 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
20557
19832
 
20558
19833
  var _reactprogress = require('@radix-ui/react-progress'); var ProgressPrimitive = _interopRequireWildcard(_reactprogress);
20559
19834
 
20560
- var Progress = React67.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
19835
+ var Progress = React66.forwardRef(({ className, value, indicatorClassName, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20561
19836
  ProgressPrimitive.Root,
20562
19837
  {
20563
19838
  ref,
@@ -20838,16 +20113,16 @@ function FilterModal({
20838
20113
  };
20839
20114
  const handleReset = () => {
20840
20115
  onFilterChange({});
20841
- _optionalChain([onTagsChange, 'optionalCall', _548 => _548([])]);
20116
+ _optionalChain([onTagsChange, 'optionalCall', _479 => _479([])]);
20842
20117
  onClose();
20843
20118
  };
20844
20119
  const handleApply = () => {
20845
20120
  onFilterChange(selectedFilters);
20846
- _optionalChain([onTagsChange, 'optionalCall', _549 => _549(pendingTags)]);
20121
+ _optionalChain([onTagsChange, 'optionalCall', _480 => _480(pendingTags)]);
20847
20122
  onClose();
20848
20123
  };
20849
20124
  const getColumnDirection = (columnKey) => {
20850
- return _optionalChain([sortConfig, 'optionalAccess', _550 => _550.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
20125
+ return _optionalChain([sortConfig, 'optionalAccess', _481 => _481.sortBy]) === columnKey ? sortConfig.sortDirection : void 0;
20851
20126
  };
20852
20127
  const hasSort = !!sortConfig && sortConfig.columns.length > 0;
20853
20128
  const hasFilterGroups = filterGroups.length > 0;
@@ -20896,7 +20171,7 @@ function FilterModal({
20896
20171
  {
20897
20172
  column,
20898
20173
  currentDirection: getColumnDirection(column.key),
20899
- onSort: (direction) => _optionalChain([onSort, 'optionalCall', _551 => _551(column.key, direction)]),
20174
+ onSort: (direction) => _optionalChain([onSort, 'optionalCall', _482 => _482(column.key, direction)]),
20900
20175
  onClear: onSortClear ? () => onSortClear(column.key) : void 0
20901
20176
  },
20902
20177
  column.key
@@ -21062,9 +20337,9 @@ function TitleBlock({
21062
20337
  const [imageFailed, setImageFailed] = React33.default.useState(false);
21063
20338
  React33.default.useEffect(() => {
21064
20339
  setImageFailed(false);
21065
- }, [_optionalChain([image, 'optionalAccess', _552 => _552.src])]);
20340
+ }, [_optionalChain([image, 'optionalAccess', _483 => _483.src])]);
21066
20341
  const showImageFallback = !!image && (imageFailed || !image.src);
21067
- const initials = getInitials3(_optionalChain([image, 'optionalAccess', _553 => _553.alt]) || title);
20342
+ const initials = getInitials3(_optionalChain([image, 'optionalAccess', _484 => _484.alt]) || title);
21068
20343
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
21069
20344
  "div",
21070
20345
  {
@@ -21198,7 +20473,7 @@ var toggleVariants = _classvarianceauthority.cva.call(void 0,
21198
20473
  }
21199
20474
  }
21200
20475
  );
21201
- var Toggle = React70.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20476
+ var Toggle = React69.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21202
20477
  TogglePrimitive.Root,
21203
20478
  {
21204
20479
  ref,
@@ -21210,11 +20485,11 @@ Toggle.displayName = TogglePrimitive.Root.displayName;
21210
20485
 
21211
20486
  // src/components/toggle-group.tsx
21212
20487
 
21213
- var ToggleGroupContext = React71.createContext({
20488
+ var ToggleGroupContext = React70.createContext({
21214
20489
  size: "default",
21215
20490
  variant: "default"
21216
20491
  });
21217
- var ToggleGroup = React71.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
20492
+ var ToggleGroup = React70.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21218
20493
  ToggleGroupPrimitive.Root,
21219
20494
  {
21220
20495
  ref,
@@ -21224,8 +20499,8 @@ var ToggleGroup = React71.forwardRef(({ className, variant, size, children, ...p
21224
20499
  }
21225
20500
  ));
21226
20501
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
21227
- var ToggleGroupItem = React71.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
21228
- const context = React71.useContext(ToggleGroupContext);
20502
+ var ToggleGroupItem = React70.forwardRef(({ className, children, variant, size, value, ...props }, ref) => {
20503
+ const context = React70.useContext(ToggleGroupContext);
21229
20504
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21230
20505
  ToggleGroupPrimitive.Item,
21231
20506
  {
@@ -21584,8 +20859,8 @@ function FloatingTooltip({
21584
20859
  className,
21585
20860
  delayDuration = 0
21586
20861
  }) {
21587
- const [isOpen, setIsOpen] = React74.useState(false);
21588
- const arrowRef = React74.useRef(null);
20862
+ const [isOpen, setIsOpen] = React73.useState(false);
20863
+ const arrowRef = React73.useRef(null);
21589
20864
  const { refs, floatingStyles, context, placement, middlewareData } = _react2.useFloating.call(void 0, {
21590
20865
  open: isOpen,
21591
20866
  onOpenChange: setIsOpen,
@@ -21614,7 +20889,7 @@ function FloatingTooltip({
21614
20889
  dismiss,
21615
20890
  role
21616
20891
  ]);
21617
- const parsedContent = React74.useMemo(() => {
20892
+ const parsedContent = React73.useMemo(() => {
21618
20893
  if (typeof content === "string") {
21619
20894
  return parseColoredText(content);
21620
20895
  }
@@ -21860,26 +21135,26 @@ function DeviceCard({
21860
21135
  ] }),
21861
21136
  device.organization && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "font-['DM_Sans'] font-medium text-[14px] leading-[20px] text-ods-text-secondary truncate", children: device.organization })
21862
21137
  ] }),
21863
- _optionalChain([actions, 'access', _554 => _554.moreButton, 'optionalAccess', _555 => _555.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21138
+ _optionalChain([actions, 'access', _485 => _485.moreButton, 'optionalAccess', _486 => _486.visible]) !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21864
21139
  "div",
21865
21140
  {
21866
21141
  className: "flex items-center justify-center p-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
21867
21142
  onClick: (e) => {
21868
21143
  e.stopPropagation();
21869
- _optionalChain([actions, 'access', _556 => _556.moreButton, 'optionalAccess', _557 => _557.onClick, 'optionalCall', _558 => _558()]);
21144
+ _optionalChain([actions, 'access', _487 => _487.moreButton, 'optionalAccess', _488 => _488.onClick, 'optionalCall', _489 => _489()]);
21870
21145
  },
21871
21146
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTMD5LDX4cjs.Ellipsis01Icon, { className: "text-ods-text-primary" })
21872
21147
  }
21873
21148
  ),
21874
- _optionalChain([actions, 'access', _559 => _559.detailsButton, 'optionalAccess', _560 => _560.visible]) !== false && _optionalChain([actions, 'access', _561 => _561.detailsButton, 'optionalAccess', _562 => _562.component]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: actions.detailsButton.component }),
21875
- _optionalChain([actions, 'access', _563 => _563.customActions, 'optionalAccess', _564 => _564.map, 'call', _565 => _565(
21149
+ _optionalChain([actions, 'access', _490 => _490.detailsButton, 'optionalAccess', _491 => _491.visible]) !== false && _optionalChain([actions, 'access', _492 => _492.detailsButton, 'optionalAccess', _493 => _493.component]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", onClick: (e) => e.stopPropagation(), children: actions.detailsButton.component }),
21150
+ _optionalChain([actions, 'access', _494 => _494.customActions, 'optionalAccess', _495 => _495.map, 'call', _496 => _496(
21876
21151
  (action, index) => action.visible !== false && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
21877
21152
  "div",
21878
21153
  {
21879
21154
  className: "flex items-center justify-center px-4 py-3 rounded-[6px] shrink-0 border border-ods-border cursor-pointer hover:bg-ods-bg-hover transition-colors",
21880
21155
  onClick: (e) => {
21881
21156
  e.stopPropagation();
21882
- _optionalChain([action, 'access', _566 => _566.onClick, 'optionalCall', _567 => _567()]);
21157
+ _optionalChain([action, 'access', _497 => _497.onClick, 'optionalCall', _498 => _498()]);
21883
21158
  },
21884
21159
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-h3 text-ods-text-primary text-nowrap tracking-[-0.36px]", children: action.label })
21885
21160
  },
@@ -22159,7 +21434,7 @@ function HighlightCardGrid({
22159
21434
  _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
22160
21435
 
22161
21436
 
22162
- var IconsBlock = React75.forwardRef(
21437
+ var IconsBlock = React74.forwardRef(
22163
21438
  ({ className, icons = [], size = "md", ...props }, ref) => {
22164
21439
  const sizeClasses5 = {
22165
21440
  sm: "h-4 w-4",
@@ -22238,7 +21513,7 @@ function MoreActionsMenu({
22238
21513
  ] });
22239
21514
  const handleActivate = (e) => {
22240
21515
  e.stopPropagation();
22241
- if (!item.disabled) _optionalChain([item, 'access', _568 => _568.onClick, 'optionalCall', _569 => _569()]);
21516
+ if (!item.disabled) _optionalChain([item, 'access', _499 => _499.onClick, 'optionalCall', _500 => _500()]);
22242
21517
  };
22243
21518
  if (item.href) {
22244
21519
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -22388,7 +21663,7 @@ function OrganizationIcon({
22388
21663
  backgroundStyle = "dark"
22389
21664
  }) {
22390
21665
  const { width, height } = imageSizeMap2[size];
22391
- const initials = _optionalChain([organizationName, 'optionalAccess', _570 => _570.substring, 'call', _571 => _571(0, 2)]) || "??";
21666
+ const initials = _optionalChain([organizationName, 'optionalAccess', _501 => _501.substring, 'call', _502 => _502(0, 2)]) || "??";
22392
21667
  const containerClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
22393
21668
  sizeClasses3[size],
22394
21669
  "rounded-lg flex items-center justify-center flex-shrink-0 relative",
@@ -22439,7 +21714,7 @@ function OrganizationCard({
22439
21714
  const handleActionClick = (e) => {
22440
21715
  e.preventDefault();
22441
21716
  e.stopPropagation();
22442
- _optionalChain([actionButton, 'optionalAccess', _572 => _572.onClick, 'call', _573 => _573(organization, e)]);
21717
+ _optionalChain([actionButton, 'optionalAccess', _503 => _503.onClick, 'call', _504 => _504(organization, e)]);
22443
21718
  };
22444
21719
  const card = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
22445
21720
  "div",
@@ -22534,7 +21809,7 @@ var LOG_SEVERITY_LABELS = {
22534
21809
 
22535
21810
  // src/components/log-severity-dot.tsx
22536
21811
 
22537
- var LogSeverityDot = React77.forwardRef(({ severity, size = "md", className }, ref) => {
21812
+ var LogSeverityDot = React76.forwardRef(({ severity, size = "md", className }, ref) => {
22538
21813
  const sizeClasses5 = {
22539
21814
  sm: "w-4 h-4",
22540
21815
  md: "w-6 h-6",
@@ -22596,7 +21871,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
22596
21871
  onKeyDown: (e) => {
22597
21872
  if (e.key === "Enter" || e.key === " ") {
22598
21873
  e.preventDefault();
22599
- _optionalChain([onClick, 'optionalCall', _574 => _574()]);
21874
+ _optionalChain([onClick, 'optionalCall', _505 => _505()]);
22600
21875
  }
22601
21876
  },
22602
21877
  children: [
@@ -22624,7 +21899,7 @@ var LogCard = ({ log, isLast, showConnector, onClick }) => {
22624
21899
  )
22625
21900
  ] });
22626
21901
  };
22627
- var LogsList = React78.forwardRef(({
21902
+ var LogsList = React77.forwardRef(({
22628
21903
  logs,
22629
21904
  maxHeight = "400px",
22630
21905
  showConnector = true,
@@ -22633,7 +21908,7 @@ var LogsList = React78.forwardRef(({
22633
21908
  emptyMessage = "No logs to display",
22634
21909
  className
22635
21910
  }, ref) => {
22636
- const containerRef = React78.useRef(null);
21911
+ const containerRef = React77.useRef(null);
22637
21912
  const isFullHeight = maxHeight === "100%";
22638
21913
  const getContainerStyles = () => {
22639
21914
  if (isFullHeight) return void 0;
@@ -22697,7 +21972,7 @@ var LogsList = React78.forwardRef(({
22697
21972
  log,
22698
21973
  isLast: index === logs.length - 1,
22699
21974
  showConnector,
22700
- onClick: () => _optionalChain([onLogClick, 'optionalCall', _575 => _575(log)])
21975
+ onClick: () => _optionalChain([onLogClick, 'optionalCall', _506 => _506(log)])
22701
21976
  },
22702
21977
  log.id
22703
21978
  ))
@@ -22938,7 +22213,7 @@ var _reacttooltip = require('@radix-ui/react-tooltip'); var TooltipPrimitive = _
22938
22213
  var TooltipProvider = TooltipPrimitive.Provider;
22939
22214
  var Tooltip = TooltipPrimitive.Root;
22940
22215
  var TooltipTrigger = TooltipPrimitive.Trigger;
22941
- var TooltipContent = React80.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipPrimitive.Portal, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
22216
+ var TooltipContent = React79.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipPrimitive.Portal, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
22942
22217
  TooltipPrimitive.Content,
22943
22218
  {
22944
22219
  ref,
@@ -23286,7 +22561,7 @@ function CursorPaginationSimple({
23286
22561
  {
23287
22562
  variant: "transparent",
23288
22563
  size: "icon",
23289
- onClick: () => _optionalChain([onPrevious, 'optionalCall', _576 => _576("")]),
22564
+ onClick: () => _optionalChain([onPrevious, 'optionalCall', _507 => _507("")]),
23290
22565
  disabled: !hasPreviousPage || loading,
23291
22566
  className: "h-8 w-8",
23292
22567
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronLeft, { className: "h-4 w-4" }),
@@ -23298,7 +22573,7 @@ function CursorPaginationSimple({
23298
22573
  {
23299
22574
  variant: "transparent",
23300
22575
  size: "icon",
23301
- onClick: () => _optionalChain([onNext, 'optionalCall', _577 => _577("")]),
22576
+ onClick: () => _optionalChain([onNext, 'optionalCall', _508 => _508("")]),
23302
22577
  disabled: !hasNextPage || loading,
23303
22578
  className: "h-8 w-8",
23304
22579
  rightIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ChevronRight, { className: "h-4 w-4" }),
@@ -23358,7 +22633,7 @@ function TableColumnFilterDropdown({
23358
22633
  placement = "bottom-start",
23359
22634
  dropdownClassName = "min-w-[240px]"
23360
22635
  }) {
23361
- const activeCount = _optionalChain([filters, 'optionalAccess', _578 => _578[columnKey], 'optionalAccess', _579 => _579.length]) || 0;
22636
+ const activeCount = _optionalChain([filters, 'optionalAccess', _509 => _509[columnKey], 'optionalAccess', _510 => _510.length]) || 0;
23362
22637
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
23363
22638
  FiltersDropdown,
23364
22639
  {
@@ -23401,7 +22676,7 @@ function TableColumnFilterDropdown({
23401
22676
  delete newFilters[columnKey];
23402
22677
  onFilterChange(newFilters);
23403
22678
  },
23404
- currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _580 => _580[columnKey]]) || [] },
22679
+ currentFilters: { [columnKey]: _optionalChain([filters, 'optionalAccess', _511 => _511[columnKey]]) || [] },
23405
22680
  placement,
23406
22681
  dropdownClassName
23407
22682
  }
@@ -23698,7 +22973,7 @@ function TableRow({
23698
22973
  const keys = column.key.split(".");
23699
22974
  let value = item;
23700
22975
  for (const key of keys) {
23701
- value = _optionalChain([value, 'optionalAccess', _581 => _581[key]]);
22976
+ value = _optionalChain([value, 'optionalAccess', _512 => _512[key]]);
23702
22977
  }
23703
22978
  if (value === null || value === void 0) {
23704
22979
  return "-";
@@ -23768,7 +23043,7 @@ function TableRow({
23768
23043
  // src/components/ui/table/table.tsx
23769
23044
 
23770
23045
  function injectSyntheticColumns(columns, rowActions, renderRowActions, rowHref) {
23771
- const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _582 => _582.length])) || Boolean(renderRowActions);
23046
+ const hasActions = Boolean(_optionalChain([rowActions, 'optionalAccess', _513 => _513.length])) || Boolean(renderRowActions);
23772
23047
  const result = [...columns];
23773
23048
  if (hasActions) {
23774
23049
  const actionsColumn = {
@@ -23862,7 +23137,7 @@ function Table({
23862
23137
  return rowKey(item);
23863
23138
  }
23864
23139
  const key = item[rowKey];
23865
- return _optionalChain([key, 'optionalAccess', _583 => _583.toString, 'call', _584 => _584()]) || index.toString();
23140
+ return _optionalChain([key, 'optionalAccess', _514 => _514.toString, 'call', _515 => _515()]) || index.toString();
23866
23141
  };
23867
23142
  const getRowClassName = (item, index) => {
23868
23143
  if (typeof rowClassName === "function") {
@@ -23896,23 +23171,23 @@ function Table({
23896
23171
  const allSelected = selectedRows.length > 0 && selectedRows.length === data.length;
23897
23172
  const someSelected = selectedRows.length > 0 && selectedRows.length < data.length;
23898
23173
  const sentinelRef = _react.useRef.call(void 0, null);
23899
- const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _585 => _585.onLoadMore]));
23900
- onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _586 => _586.onLoadMore]);
23174
+ const onLoadMoreRef = _react.useRef.call(void 0, _optionalChain([infiniteScroll, 'optionalAccess', _516 => _516.onLoadMore]));
23175
+ onLoadMoreRef.current = _optionalChain([infiniteScroll, 'optionalAccess', _517 => _517.onLoadMore]);
23901
23176
  _react.useEffect.call(void 0, () => {
23902
- if (!_optionalChain([infiniteScroll, 'optionalAccess', _587 => _587.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
23177
+ if (!_optionalChain([infiniteScroll, 'optionalAccess', _518 => _518.hasNextPage]) || infiniteScroll.isFetchingNextPage) return;
23903
23178
  const sentinel = sentinelRef.current;
23904
23179
  if (!sentinel) return;
23905
23180
  const observer = new IntersectionObserver(
23906
23181
  (entries) => {
23907
- if (_optionalChain([entries, 'access', _588 => _588[0], 'optionalAccess', _589 => _589.isIntersecting])) {
23908
- _optionalChain([onLoadMoreRef, 'access', _590 => _590.current, 'optionalCall', _591 => _591()]);
23182
+ if (_optionalChain([entries, 'access', _519 => _519[0], 'optionalAccess', _520 => _520.isIntersecting])) {
23183
+ _optionalChain([onLoadMoreRef, 'access', _521 => _521.current, 'optionalCall', _522 => _522()]);
23909
23184
  }
23910
23185
  },
23911
23186
  { rootMargin: "200px" }
23912
23187
  );
23913
23188
  observer.observe(sentinel);
23914
23189
  return () => observer.disconnect();
23915
- }, [_optionalChain([infiniteScroll, 'optionalAccess', _592 => _592.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _593 => _593.isFetchingNextPage])]);
23190
+ }, [_optionalChain([infiniteScroll, 'optionalAccess', _523 => _523.hasNextPage]), _optionalChain([infiniteScroll, 'optionalAccess', _524 => _524.isFetchingNextPage])]);
23916
23191
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col gap-1 w-full", containerClassName), children: [
23917
23192
  showToolbar && bulkActions && selectedRows.length > 0 && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center justify-between bg-ods-card border border-ods-border rounded-[6px] p-3 mb-2", children: [
23918
23193
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary text-sm", children: [
@@ -23983,7 +23258,7 @@ function Table({
23983
23258
  },
23984
23259
  getRowKey(item, index)
23985
23260
  )),
23986
- _optionalChain([infiniteScroll, 'optionalAccess', _594 => _594.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
23261
+ _optionalChain([infiniteScroll, 'optionalAccess', _525 => _525.isFetchingNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
23987
23262
  TableCardSkeleton,
23988
23263
  {
23989
23264
  columns,
@@ -23992,7 +23267,7 @@ function Table({
23992
23267
  hasChevron: Boolean(rowHref)
23993
23268
  }
23994
23269
  ),
23995
- _optionalChain([infiniteScroll, 'optionalAccess', _595 => _595.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
23270
+ _optionalChain([infiniteScroll, 'optionalAccess', _526 => _526.hasNextPage]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: sentinelRef, className: "h-1", "aria-hidden": "true" }),
23996
23271
  !infiniteScroll && Array.from({ length: Math.max(0, skeletonRows - data.length) }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
23997
23272
  "div",
23998
23273
  {
@@ -24350,7 +23625,7 @@ function QueryReportTable({
24350
23625
  );
24351
23626
  const handleExport = () => {
24352
23627
  exportToCSV(data, columns, exportFilename);
24353
- _optionalChain([onExport, 'optionalCall', _596 => _596()]);
23628
+ _optionalChain([onExport, 'optionalCall', _527 => _527()]);
24354
23629
  };
24355
23630
  const tableMinWidth = columns.length * (columnWidth + 16);
24356
23631
  const {
@@ -24523,7 +23798,7 @@ function DataTableColumnFilter({
24523
23798
  align = "left"
24524
23799
  }) {
24525
23800
  const currentValue = column.getFilterValue();
24526
- const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _597 => _597.length]), () => ( 0));
23801
+ const activeCount = _nullishCoalesce(_optionalChain([currentValue, 'optionalAccess', _528 => _528.length]), () => ( 0));
24527
23802
  const sections = _react.useMemo.call(void 0,
24528
23803
  () => [
24529
23804
  {
@@ -24603,7 +23878,7 @@ function DataTableHeader({
24603
23878
  const hasVisibleHeaderCell = headerGroup.headers.some((header) => {
24604
23879
  if (header.isPlaceholder) return false;
24605
23880
  if (isLgUp) return true;
24606
- return Boolean(_optionalChain([header, 'access', _598 => _598.column, 'access', _599 => _599.columnDef, 'access', _600 => _600.meta, 'optionalAccess', _601 => _601.filter]));
23881
+ return Boolean(_optionalChain([header, 'access', _529 => _529.column, 'access', _530 => _530.columnDef, 'access', _531 => _531.meta, 'optionalAccess', _532 => _532.filter]));
24607
23882
  });
24608
23883
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24609
23884
  "div",
@@ -24633,20 +23908,20 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
24633
23908
  if (header.isPlaceholder) return null;
24634
23909
  const column = header.column;
24635
23910
  const meta = column.columnDef.meta;
24636
- const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _602 => _602.filter]));
24637
- const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _603 => _603.align]), () => ( "left"));
24638
- const canSort = _optionalChain([meta, 'optionalAccess', _604 => _604.sortable]) === true;
24639
- const sortDir = _optionalChain([sort, 'optionalAccess', _605 => _605.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
23911
+ const hasFilter = Boolean(_optionalChain([meta, 'optionalAccess', _533 => _533.filter]));
23912
+ const align = _nullishCoalesce(_optionalChain([meta, 'optionalAccess', _534 => _534.align]), () => ( "left"));
23913
+ const canSort = _optionalChain([meta, 'optionalAccess', _535 => _535.sortable]) === true;
23914
+ const sortDir = _optionalChain([sort, 'optionalAccess', _536 => _536.id]) === column.id ? sort.desc ? "desc" : "asc" : false;
24640
23915
  if (!isLgUp && !hasFilter) return null;
24641
23916
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24642
23917
  "div",
24643
23918
  {
24644
23919
  className: _chunkOFAYLG6Dcjs.cn.call(void 0,
24645
23920
  "flex items-stretch",
24646
- isLgUp && (_optionalChain([meta, 'optionalAccess', _606 => _606.width]) || "flex-1 min-w-0"),
24647
- _optionalChain([meta, 'optionalAccess', _607 => _607.headerClassName]),
23921
+ isLgUp && (_optionalChain([meta, 'optionalAccess', _537 => _537.width]) || "flex-1 min-w-0"),
23922
+ _optionalChain([meta, 'optionalAccess', _538 => _538.headerClassName]),
24648
23923
  // Don't apply hide classes if column is filterable on tablet (keep filter accessible)
24649
- !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _608 => _608.hideAt]))
23924
+ !(hasFilter && !isLgUp) && getHideClasses2(_optionalChain([meta, 'optionalAccess', _539 => _539.hideAt]))
24650
23925
  ),
24651
23926
  children: hasFilter ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24652
23927
  DataTableColumnFilter,
@@ -24665,7 +23940,7 @@ function HeaderCell({ header, isLgUp, sort, onSortChange }) {
24665
23940
  isLgUp && alignJustify(align),
24666
23941
  canSort && "group cursor-pointer"
24667
23942
  ),
24668
- onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _609 => _609(column.id)]) : void 0,
23943
+ onClick: canSort ? () => _optionalChain([onSortChange, 'optionalCall', _540 => _540(column.id)]) : void 0,
24669
23944
  children: [
24670
23945
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
24671
23946
  canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
@@ -24749,7 +24024,7 @@ function DataTableSkeleton({
24749
24024
  }) {
24750
24025
  const table = useDataTableContext();
24751
24026
  const columns = table.getVisibleFlatColumns();
24752
- const firstColumnId = _optionalChain([columns, 'access', _610 => _610[0], 'optionalAccess', _611 => _611.id]);
24027
+ const firstColumnId = _optionalChain([columns, 'access', _541 => _541[0], 'optionalAccess', _542 => _542.id]);
24753
24028
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: Array.from({ length: rows }).map((_, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
24754
24029
  "div",
24755
24030
  {
@@ -24773,7 +24048,7 @@ function DataTableSkeleton({
24773
24048
  {
24774
24049
  className: _chunkOFAYLG6Dcjs.cn.call(void 0,
24775
24050
  "flex flex-col justify-center shrink-0",
24776
- _optionalChain([meta, 'optionalAccess', _612 => _612.width]) || "flex-1"
24051
+ _optionalChain([meta, 'optionalAccess', _543 => _543.width]) || "flex-1"
24777
24052
  ),
24778
24053
  children: [
24779
24054
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 bg-ods-bg-surface rounded-sm w-3/4 mb-[var(--spacing-system-xxs)]" }),
@@ -24819,7 +24094,7 @@ function DataTableRowImpl({
24819
24094
  (e) => {
24820
24095
  const target = e.target;
24821
24096
  if (target.closest("[data-no-row-click]")) return;
24822
- _optionalChain([onClick, 'optionalCall', _613 => _613(row.original)]);
24097
+ _optionalChain([onClick, 'optionalCall', _544 => _544(row.original)]);
24823
24098
  },
24824
24099
  [onClick, row.original]
24825
24100
  );
@@ -24857,10 +24132,10 @@ function DataTableRowImpl({
24857
24132
  {
24858
24133
  className: _chunkOFAYLG6Dcjs.cn.call(void 0,
24859
24134
  "flex flex-col overflow-hidden",
24860
- alignJustify(_optionalChain([meta, 'optionalAccess', _614 => _614.align])),
24861
- _optionalChain([meta, 'optionalAccess', _615 => _615.width]) || "flex-1 min-w-0",
24862
- _optionalChain([meta, 'optionalAccess', _616 => _616.cellClassName]),
24863
- getHideClasses2(_optionalChain([meta, 'optionalAccess', _617 => _617.hideAt]))
24135
+ alignJustify(_optionalChain([meta, 'optionalAccess', _545 => _545.align])),
24136
+ _optionalChain([meta, 'optionalAccess', _546 => _546.width]) || "flex-1 min-w-0",
24137
+ _optionalChain([meta, 'optionalAccess', _547 => _547.cellClassName]),
24138
+ getHideClasses2(_optionalChain([meta, 'optionalAccess', _548 => _548.hideAt]))
24864
24139
  ),
24865
24140
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CellContent, { children: _reacttable.flexRender.call(void 0, cell.column.columnDef.cell, cell.getContext()) })
24866
24141
  },
@@ -24906,7 +24181,7 @@ function DataTableBody({
24906
24181
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex flex-col gap-[var(--spacing-system-xsf)] w-full", className), children: [
24907
24182
  rows.map((row, index) => {
24908
24183
  const item = row.original;
24909
- const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _618 => _618(item)]), () => ( void 0));
24184
+ const href = _nullishCoalesce(_optionalChain([rowHref, 'optionalCall', _549 => _549(item)]), () => ( void 0));
24910
24185
  const cls = typeof rowClassName === "function" ? rowClassName(item, index) : rowClassName;
24911
24186
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
24912
24187
  DataTableRow,
@@ -24970,7 +24245,7 @@ function DataTableInfiniteFooter({
24970
24245
  if (!sentinel) return;
24971
24246
  const observer = new IntersectionObserver(
24972
24247
  (entries) => {
24973
- if (_optionalChain([entries, 'access', _619 => _619[0], 'optionalAccess', _620 => _620.isIntersecting])) onLoadMoreRef.current();
24248
+ if (_optionalChain([entries, 'access', _550 => _550[0], 'optionalAccess', _551 => _551.isIntersecting])) onLoadMoreRef.current();
24974
24249
  },
24975
24250
  { rootMargin }
24976
24251
  );
@@ -25018,7 +24293,7 @@ function DataTableRowCount({
25018
24293
  const table = useDataTableContext();
25019
24294
  const count = _nullishCoalesce(totalCount, () => ( table.getRowModel().rows.length));
25020
24295
  if (hideWhenEmpty && count === 0) return null;
25021
- const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _621 => _621(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
24296
+ const label = _nullishCoalesce(_optionalChain([pluralize, 'optionalCall', _552 => _552(count, itemName)]), () => ( (count === 1 ? itemName : `${itemName}s`)));
25022
24297
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
25023
24298
  "span",
25024
24299
  {
@@ -25112,12 +24387,12 @@ function PhoneInput({
25112
24387
  const runValidation = _react.useCallback.call(void 0, (phone) => {
25113
24388
  if (!phone || digitCount(phone) === 0) {
25114
24389
  setIsInvalid(false);
25115
- _optionalChain([onValidationChange, 'optionalCall', _622 => _622(false)]);
24390
+ _optionalChain([onValidationChange, 'optionalCall', _553 => _553(false)]);
25116
24391
  return;
25117
24392
  }
25118
24393
  const invalid = !validatePhoneNumber(phone, countryCode);
25119
24394
  setIsInvalid(invalid);
25120
- _optionalChain([onValidationChange, 'optionalCall', _623 => _623(invalid)]);
24395
+ _optionalChain([onValidationChange, 'optionalCall', _554 => _554(invalid)]);
25121
24396
  }, [countryCode, digitCount, onValidationChange]);
25122
24397
  const debouncedValidation = _react.useCallback.call(void 0, (phone) => {
25123
24398
  if (debounceRef.current) clearTimeout(debounceRef.current);
@@ -25166,7 +24441,7 @@ function PhoneInput({
25166
24441
  debouncedValidation(val);
25167
24442
  } else if (digitCount(val) === 0) {
25168
24443
  setIsInvalid(false);
25169
- _optionalChain([onValidationChange, 'optionalCall', _624 => _624(false)]);
24444
+ _optionalChain([onValidationChange, 'optionalCall', _555 => _555(false)]);
25170
24445
  }
25171
24446
  }
25172
24447
  },
@@ -25244,12 +24519,12 @@ function SearchInput({
25244
24519
  limitTags = "auto",
25245
24520
  getLimitTagsText = (more) => `+${more}`
25246
24521
  }) {
25247
- const [internalValue, setInternalValue] = React82.useState(defaultValue);
24522
+ const [internalValue, setInternalValue] = React81.useState(defaultValue);
25248
24523
  const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
25249
24524
  const debouncedValue = _chunkALW3D72Ocjs.useDebounce.call(void 0, currentValue, debounceMs);
25250
- const [isOpen, setIsOpen] = React82.useState(false);
25251
- const [highlightedIndex, setHighlightedIndex] = React82.useState(-1);
25252
- const containerRef = React82.useRef(null);
24525
+ const [isOpen, setIsOpen] = React81.useState(false);
24526
+ const [highlightedIndex, setHighlightedIndex] = React81.useState(-1);
24527
+ const containerRef = React81.useRef(null);
25253
24528
  const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
25254
24529
  const {
25255
24530
  visibleCount: rawVisibleCount,
@@ -25266,14 +24541,14 @@ function SearchInput({
25266
24541
  placeholder: filterChips.length > 0 ? "" : placeholder
25267
24542
  });
25268
24543
  const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
25269
- const hiddenTagsRef = React82.useRef(null);
25270
- const hiddenTagsPopupRef = React82.useRef(null);
25271
- const [showHiddenTags, setShowHiddenTags] = React82.useState(false);
25272
- React82.useEffect(() => {
24544
+ const hiddenTagsRef = React81.useRef(null);
24545
+ const hiddenTagsPopupRef = React81.useRef(null);
24546
+ const [showHiddenTags, setShowHiddenTags] = React81.useState(false);
24547
+ React81.useEffect(() => {
25273
24548
  if (!showHiddenTags) return;
25274
24549
  const handleClick = (e) => {
25275
24550
  const target = e.target;
25276
- if (!_optionalChain([hiddenTagsRef, 'access', _625 => _625.current, 'optionalAccess', _626 => _626.contains, 'call', _627 => _627(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _628 => _628.current, 'optionalAccess', _629 => _629.contains, 'call', _630 => _630(target)])) {
24551
+ if (!_optionalChain([hiddenTagsRef, 'access', _556 => _556.current, 'optionalAccess', _557 => _557.contains, 'call', _558 => _558(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _559 => _559.current, 'optionalAccess', _560 => _560.contains, 'call', _561 => _561(target)])) {
25277
24552
  setShowHiddenTags(false);
25278
24553
  }
25279
24554
  };
@@ -25283,7 +24558,7 @@ function SearchInput({
25283
24558
  const hiddenCount = filterChips.length - visibleCount;
25284
24559
  const visibleChips = filterChips.slice(0, visibleCount);
25285
24560
  const hiddenChips = filterChips.slice(visibleCount);
25286
- const { flatResults, groups } = React82.useMemo(() => {
24561
+ const { flatResults, groups } = React81.useMemo(() => {
25287
24562
  if (!groupBy) return { flatResults: results, groups: null };
25288
24563
  const grouped = /* @__PURE__ */ new Map();
25289
24564
  for (const r of results) {
@@ -25300,7 +24575,7 @@ function SearchInput({
25300
24575
  const meetsMinQuery = debouncedValue.length >= minQueryLength;
25301
24576
  const autoShow = meetsMinQuery;
25302
24577
  const dropdownVisible = _nullishCoalesce(showDropdownProp, () => ( (isOpen && autoShow)));
25303
- React82.useEffect(() => {
24578
+ React81.useEffect(() => {
25304
24579
  setHighlightedIndex(-1);
25305
24580
  }, [flatResults.length]);
25306
24581
  const handleChange = (e) => {
@@ -25321,10 +24596,10 @@ function SearchInput({
25321
24596
  } else {
25322
24597
  setInternalValue("");
25323
24598
  }
25324
- _optionalChain([inputRef, 'access', _631 => _631.current, 'optionalAccess', _632 => _632.focus, 'call', _633 => _633()]);
24599
+ _optionalChain([inputRef, 'access', _562 => _562.current, 'optionalAccess', _563 => _563.focus, 'call', _564 => _564()]);
25325
24600
  };
25326
24601
  const handleResultClick = (result) => {
25327
- _optionalChain([onResultSelect, 'optionalCall', _634 => _634(result)]);
24602
+ _optionalChain([onResultSelect, 'optionalCall', _565 => _565(result)]);
25328
24603
  setIsOpen(false);
25329
24604
  };
25330
24605
  const handleKeyDown = (e) => {
@@ -25347,7 +24622,7 @@ function SearchInput({
25347
24622
  if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
25348
24623
  handleResultClick(flatResults[highlightedIndex]);
25349
24624
  } else {
25350
- _optionalChain([onSubmit, 'optionalCall', _635 => _635(currentValue)]);
24625
+ _optionalChain([onSubmit, 'optionalCall', _566 => _566(currentValue)]);
25351
24626
  }
25352
24627
  break;
25353
24628
  case "Escape":
@@ -25425,7 +24700,7 @@ function SearchInput({
25425
24700
  dropdownVisible && "!border-ods-accent"
25426
24701
  ),
25427
24702
  onClick: () => {
25428
- _optionalChain([inputRef, 'access', _636 => _636.current, 'optionalAccess', _637 => _637.focus, 'call', _638 => _638()]);
24703
+ _optionalChain([inputRef, 'access', _567 => _567.current, 'optionalAccess', _568 => _568.focus, 'call', _569 => _569()]);
25429
24704
  setIsOpen(true);
25430
24705
  },
25431
24706
  children: [
@@ -25509,10 +24784,10 @@ function SearchInput({
25509
24784
  align: "start",
25510
24785
  onOpenAutoFocus: (e) => {
25511
24786
  e.preventDefault();
25512
- _optionalChain([inputRef, 'access', _639 => _639.current, 'optionalAccess', _640 => _640.focus, 'call', _641 => _641()]);
24787
+ _optionalChain([inputRef, 'access', _570 => _570.current, 'optionalAccess', _571 => _571.focus, 'call', _572 => _572()]);
25513
24788
  },
25514
24789
  onInteractOutside: (e) => {
25515
- if (_optionalChain([containerRef, 'access', _642 => _642.current, 'optionalAccess', _643 => _643.contains, 'call', _644 => _644(e.target)])) {
24790
+ if (_optionalChain([containerRef, 'access', _573 => _573.current, 'optionalAccess', _574 => _574.contains, 'call', _575 => _575(e.target)])) {
25516
24791
  e.preventDefault();
25517
24792
  }
25518
24793
  },
@@ -25529,10 +24804,10 @@ function SearchInput({
25529
24804
  ref: hiddenTagsPopupRef,
25530
24805
  items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
25531
24806
  style: {
25532
- left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _645 => _645.current, 'optionalAccess', _646 => _646.getBoundingClientRect, 'call', _647 => _647(), 'access', _648 => _648.left]), () => ( 0))) : 0
24807
+ left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _576 => _576.current, 'optionalAccess', _577 => _577.getBoundingClientRect, 'call', _578 => _578(), 'access', _579 => _579.left]), () => ( 0))) : 0
25533
24808
  },
25534
24809
  onRemove: (value2) => {
25535
- _optionalChain([onFilterRemove, 'optionalCall', _649 => _649(value2)]);
24810
+ _optionalChain([onFilterRemove, 'optionalCall', _580 => _580(value2)]);
25536
24811
  if (hiddenCount <= 1) setShowHiddenTags(false);
25537
24812
  }
25538
24813
  }
@@ -25583,7 +24858,7 @@ function FilterListItem({
25583
24858
  }) {
25584
24859
  const handleToggle = () => {
25585
24860
  if (disabled) return;
25586
- _optionalChain([onToggle, 'optionalCall', _650 => _650(!selected)]);
24861
+ _optionalChain([onToggle, 'optionalCall', _581 => _581(!selected)]);
25587
24862
  };
25588
24863
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
25589
24864
  "div",
@@ -25619,7 +24894,7 @@ function FilterListItem({
25619
24894
  "flex items-start gap-[var(--spacing-system-xxs)] text-h6",
25620
24895
  selected ? "text-ods-accent" : "text-ods-text-secondary"
25621
24896
  ),
25622
- children: meta.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React83.Fragment, { children: [
24897
+ children: meta.map((item, index) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React82.Fragment, { children: [
25623
24898
  index > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
25624
24899
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: item })
25625
24900
  ] }, index))
@@ -25630,7 +24905,7 @@ function FilterListItem({
25630
24905
  CheckboxPrimitive4.Root,
25631
24906
  {
25632
24907
  checked: selected,
25633
- onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _651 => _651(c === true)]),
24908
+ onCheckedChange: (c) => _optionalChain([onToggle, 'optionalCall', _582 => _582(c === true)]),
25634
24909
  onClick: (e) => e.stopPropagation(),
25635
24910
  disabled,
25636
24911
  "aria-label": title,
@@ -25729,7 +25004,7 @@ function TagSearchInput({
25729
25004
  if (!showHiddenTags) return;
25730
25005
  const handleClick = (e) => {
25731
25006
  const target = e.target;
25732
- if (!_optionalChain([hiddenTagsRef, 'access', _652 => _652.current, 'optionalAccess', _653 => _653.contains, 'call', _654 => _654(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _655 => _655.current, 'optionalAccess', _656 => _656.contains, 'call', _657 => _657(target)])) {
25007
+ if (!_optionalChain([hiddenTagsRef, 'access', _583 => _583.current, 'optionalAccess', _584 => _584.contains, 'call', _585 => _585(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _586 => _586.current, 'optionalAccess', _587 => _587.contains, 'call', _588 => _588(target)])) {
25733
25008
  setShowHiddenTags(false);
25734
25009
  }
25735
25010
  };
@@ -25745,13 +25020,13 @@ function TagSearchInput({
25745
25020
  e.preventDefault();
25746
25021
  onSubmit(searchValue);
25747
25022
  }
25748
- _optionalChain([onKeyDown, 'optionalCall', _658 => _658(e)]);
25023
+ _optionalChain([onKeyDown, 'optionalCall', _589 => _589(e)]);
25749
25024
  };
25750
25025
  const handleClearAll = (e) => {
25751
25026
  e.stopPropagation();
25752
25027
  e.preventDefault();
25753
- _optionalChain([onClearAll, 'optionalCall', _659 => _659()]);
25754
- _optionalChain([inputRef, 'access', _660 => _660.current, 'optionalAccess', _661 => _661.focus, 'call', _662 => _662()]);
25028
+ _optionalChain([onClearAll, 'optionalCall', _590 => _590()]);
25029
+ _optionalChain([inputRef, 'access', _591 => _591.current, 'optionalAccess', _592 => _592.focus, 'call', _593 => _593()]);
25755
25030
  };
25756
25031
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: wrapperRef, className: "relative", children: [
25757
25032
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -25768,7 +25043,7 @@ function TagSearchInput({
25768
25043
  className
25769
25044
  ),
25770
25045
  onClick: () => {
25771
- if (!disabled) _optionalChain([inputRef, 'access', _663 => _663.current, 'optionalAccess', _664 => _664.focus, 'call', _665 => _665()]);
25046
+ if (!disabled) _optionalChain([inputRef, 'access', _594 => _594.current, 'optionalAccess', _595 => _595.focus, 'call', _596 => _596()]);
25772
25047
  },
25773
25048
  children: [
25774
25049
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0 flex items-center pl-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.SearchIcon, { className: "text-ods-text-secondary size-4 md:size-6" }) }),
@@ -25840,7 +25115,7 @@ function TagSearchInput({
25840
25115
  items: hiddenTags,
25841
25116
  disabled,
25842
25117
  style: {
25843
- left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _666 => _666.current, 'optionalAccess', _667 => _667.getBoundingClientRect, 'call', _668 => _668(), 'access', _669 => _669.left]), () => ( 0))) : 0
25118
+ left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([wrapperRef, 'access', _597 => _597.current, 'optionalAccess', _598 => _598.getBoundingClientRect, 'call', _599 => _599(), 'access', _600 => _600.left]), () => ( 0))) : 0
25844
25119
  },
25845
25120
  onRemove: (value) => {
25846
25121
  onTagRemove(value);
@@ -25942,7 +25217,7 @@ function MarkdownEditor({
25942
25217
  const [defaultExtraCommands, setDefaultExtraCommands] = _react.useState.call(void 0, []);
25943
25218
  _react.useEffect.call(void 0, () => {
25944
25219
  Promise.resolve().then(() => _interopRequireWildcard(require("@uiw/react-md-editor"))).then((mod) => {
25945
- if (_optionalChain([mod, 'access', _670 => _670.commands, 'optionalAccess', _671 => _671.getExtraCommands])) {
25220
+ if (_optionalChain([mod, 'access', _601 => _601.commands, 'optionalAccess', _602 => _602.getExtraCommands])) {
25946
25221
  setDefaultExtraCommands(mod.commands.getExtraCommands());
25947
25222
  }
25948
25223
  });
@@ -25976,7 +25251,7 @@ function MarkdownEditor({
25976
25251
  const isImage = file.type.startsWith("image/");
25977
25252
  const markdown = isImage ? `![${file.name}](${url})` : `[${file.name}](${url})`;
25978
25253
  insertTextAtCursor(markdown);
25979
- _optionalChain([onFileUploaded, 'optionalCall', _672 => _672(url, file.name)]);
25254
+ _optionalChain([onFileUploaded, 'optionalCall', _603 => _603(url, file.name)]);
25980
25255
  } catch (error) {
25981
25256
  console.error("File upload failed:", error);
25982
25257
  setUploadProgress("Upload failed. Please try again.");
@@ -25989,7 +25264,7 @@ function MarkdownEditor({
25989
25264
  );
25990
25265
  const handleFileInputChange = _react.useCallback.call(void 0,
25991
25266
  (e) => {
25992
- const file = _optionalChain([e, 'access', _673 => _673.target, 'access', _674 => _674.files, 'optionalAccess', _675 => _675[0]]);
25267
+ const file = _optionalChain([e, 'access', _604 => _604.target, 'access', _605 => _605.files, 'optionalAccess', _606 => _606[0]]);
25993
25268
  if (file) {
25994
25269
  handleFileUpload(file);
25995
25270
  e.target.value = "";
@@ -26000,7 +25275,7 @@ function MarkdownEditor({
26000
25275
  const handlePaste = _react.useCallback.call(void 0,
26001
25276
  (e) => {
26002
25277
  if (!onUploadFile) return;
26003
- const items = _optionalChain([e, 'access', _676 => _676.clipboardData, 'optionalAccess', _677 => _677.items]);
25278
+ const items = _optionalChain([e, 'access', _607 => _607.clipboardData, 'optionalAccess', _608 => _608.items]);
26004
25279
  if (!items) return;
26005
25280
  for (const item of items) {
26006
25281
  if (item.type.startsWith("image/")) {
@@ -26025,7 +25300,7 @@ function MarkdownEditor({
26025
25300
  buttonProps: { "aria-label": "Upload file", title: "Upload file" },
26026
25301
  icon: isUploading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "w-3 h-3 animate-spin" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "w-3 h-3" }),
26027
25302
  execute: () => {
26028
- _optionalChain([fileInputRef, 'access', _678 => _678.current, 'optionalAccess', _679 => _679.click, 'call', _680 => _680()]);
25303
+ _optionalChain([fileInputRef, 'access', _609 => _609.current, 'optionalAccess', _610 => _610.click, 'call', _611 => _611()]);
26029
25304
  }
26030
25305
  } : null;
26031
25306
  const extraCommands = uploadCommand ? [...defaultExtraCommands, uploadCommand] : defaultExtraCommands;
@@ -26037,7 +25312,7 @@ function MarkdownEditor({
26037
25312
  const EDGE_ZONE = 60;
26038
25313
  const MAX_SCROLL_SPEED = 15;
26039
25314
  const findScrollParent = _react.useCallback.call(void 0, (el) => {
26040
- let node = _optionalChain([el, 'optionalAccess', _681 => _681.parentElement]);
25315
+ let node = _optionalChain([el, 'optionalAccess', _612 => _612.parentElement]);
26041
25316
  while (node && node !== document.documentElement) {
26042
25317
  const { overflowY } = window.getComputedStyle(node);
26043
25318
  if ((overflowY === "auto" || overflowY === "scroll") && node.scrollHeight > node.clientHeight) {
@@ -26180,7 +25455,7 @@ function matchesAccept(file, accept) {
26180
25455
  });
26181
25456
  }
26182
25457
  function dragHasFiles(e) {
26183
- const types = _optionalChain([e, 'access', _682 => _682.dataTransfer, 'optionalAccess', _683 => _683.types]);
25458
+ const types = _optionalChain([e, 'access', _613 => _613.dataTransfer, 'optionalAccess', _614 => _614.types]);
26184
25459
  if (!types) return false;
26185
25460
  for (let i = 0; i < types.length; i++) {
26186
25461
  if (types[i] === "Files") return true;
@@ -26206,11 +25481,11 @@ function FileUpload({
26206
25481
  maxListHeight,
26207
25482
  acceptWindowDrops = false
26208
25483
  }) {
26209
- const [dragActive, setDragActive] = React85.useState(false);
26210
- const [validationError, setValidationError] = React85.useState(null);
26211
- const fileInputRef = React85.useRef(null);
25484
+ const [dragActive, setDragActive] = React84.useState(false);
25485
+ const [validationError, setValidationError] = React84.useState(null);
25486
+ const fileInputRef = React84.useRef(null);
26212
25487
  const isManaged = managedFiles !== void 0;
26213
- const files = React85.useMemo(() => {
25488
+ const files = React84.useMemo(() => {
26214
25489
  if (!value) return [];
26215
25490
  return Array.isArray(value) ? value : [value];
26216
25491
  }, [value]);
@@ -26258,7 +25533,7 @@ function FileUpload({
26258
25533
  fileInputRef.current.value = "";
26259
25534
  }
26260
25535
  };
26261
- const handleFilesRef = React85.useRef(handleFiles);
25536
+ const handleFilesRef = React84.useRef(handleFiles);
26262
25537
  handleFilesRef.current = handleFiles;
26263
25538
  const handleDrag = (e) => {
26264
25539
  e.preventDefault();
@@ -26275,11 +25550,11 @@ function FileUpload({
26275
25550
  e.stopPropagation();
26276
25551
  setDragActive(false);
26277
25552
  if (disabled) return;
26278
- if (_optionalChain([e, 'access', _684 => _684.dataTransfer, 'access', _685 => _685.files, 'optionalAccess', _686 => _686.length])) {
25553
+ if (_optionalChain([e, 'access', _615 => _615.dataTransfer, 'access', _616 => _616.files, 'optionalAccess', _617 => _617.length])) {
26279
25554
  handleFiles(e.dataTransfer.files);
26280
25555
  }
26281
25556
  };
26282
- React85.useEffect(() => {
25557
+ React84.useEffect(() => {
26283
25558
  if (!acceptWindowDrops || disabled) return;
26284
25559
  let dragCounter = 0;
26285
25560
  const onWindowDragEnter = (e) => {
@@ -26303,7 +25578,7 @@ function FileUpload({
26303
25578
  e.preventDefault();
26304
25579
  dragCounter = 0;
26305
25580
  setDragActive(false);
26306
- if (_optionalChain([e, 'access', _687 => _687.dataTransfer, 'optionalAccess', _688 => _688.files, 'optionalAccess', _689 => _689.length])) {
25581
+ if (_optionalChain([e, 'access', _618 => _618.dataTransfer, 'optionalAccess', _619 => _619.files, 'optionalAccess', _620 => _620.length])) {
26307
25582
  handleFilesRef.current(e.dataTransfer.files);
26308
25583
  }
26309
25584
  };
@@ -26325,7 +25600,7 @@ function FileUpload({
26325
25600
  };
26326
25601
  }, [acceptWindowDrops, disabled]);
26327
25602
  const handleFileSelect = (e) => {
26328
- if (_optionalChain([e, 'access', _690 => _690.target, 'access', _691 => _691.files, 'optionalAccess', _692 => _692.length])) {
25603
+ if (_optionalChain([e, 'access', _621 => _621.target, 'access', _622 => _622.files, 'optionalAccess', _623 => _623.length])) {
26329
25604
  handleFiles(e.target.files);
26330
25605
  }
26331
25606
  };
@@ -26342,7 +25617,7 @@ function FileUpload({
26342
25617
  };
26343
25618
  const openDialog = async () => {
26344
25619
  if (disabled) return;
26345
- _optionalChain([fileInputRef, 'access', _693 => _693.current, 'optionalAccess', _694 => _694.click, 'call', _695 => _695()]);
25620
+ _optionalChain([fileInputRef, 'access', _624 => _624.current, 'optionalAccess', _625 => _625.click, 'call', _626 => _626()]);
26346
25621
  };
26347
25622
  const displayError = error || validationError || void 0;
26348
25623
  const hasFiles = isManaged ? managedFiles.length > 0 : files.length > 0;
@@ -26420,7 +25695,7 @@ function FileUpload({
26420
25695
  "button",
26421
25696
  {
26422
25697
  type: "button",
26423
- onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _696 => _696(entry.id)]),
25698
+ onClick: () => _optionalChain([onRemoveManagedFile, 'optionalCall', _627 => _627(entry.id)]),
26424
25699
  className: "shrink-0 p-1 rounded hover:bg-ods-bg transition-colors",
26425
25700
  "aria-label": `Remove ${entry.fileName}`,
26426
25701
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.X, { className: "size-4 text-ods-text-secondary" })
@@ -26521,10 +25796,10 @@ function ImageUploader({
26521
25796
  alt = "Uploaded image",
26522
25797
  className
26523
25798
  }) {
26524
- const inputRef = React86.useRef(null);
26525
- const [dragActive, setDragActive] = React86.useState(false);
26526
- const [pressed, setPressed] = React86.useState(false);
26527
- const [validationError, setValidationError] = React86.useState(null);
25799
+ const inputRef = React85.useRef(null);
25800
+ const [dragActive, setDragActive] = React85.useState(false);
25801
+ const [pressed, setPressed] = React85.useState(false);
25802
+ const [validationError, setValidationError] = React85.useState(null);
26528
25803
  const interactive = !disabled && !loading;
26529
25804
  const hasImage = Boolean(value);
26530
25805
  const displayError = error || validationError || void 0;
@@ -26543,7 +25818,7 @@ function ImageUploader({
26543
25818
  onChange(file);
26544
25819
  };
26545
25820
  const handleFileSelect = (e) => {
26546
- validateAndEmit(_optionalChain([e, 'access', _697 => _697.target, 'access', _698 => _698.files, 'optionalAccess', _699 => _699[0]]));
25821
+ validateAndEmit(_optionalChain([e, 'access', _628 => _628.target, 'access', _629 => _629.files, 'optionalAccess', _630 => _630[0]]));
26547
25822
  if (inputRef.current) inputRef.current.value = "";
26548
25823
  };
26549
25824
  const handleDrag = (e) => {
@@ -26558,11 +25833,11 @@ function ImageUploader({
26558
25833
  e.stopPropagation();
26559
25834
  setDragActive(false);
26560
25835
  if (!interactive) return;
26561
- validateAndEmit(_optionalChain([e, 'access', _700 => _700.dataTransfer, 'access', _701 => _701.files, 'optionalAccess', _702 => _702[0]]));
25836
+ validateAndEmit(_optionalChain([e, 'access', _631 => _631.dataTransfer, 'access', _632 => _632.files, 'optionalAccess', _633 => _633[0]]));
26562
25837
  };
26563
25838
  const openDialog = () => {
26564
25839
  if (!interactive) return;
26565
- _optionalChain([inputRef, 'access', _703 => _703.current, 'optionalAccess', _704 => _704.click, 'call', _705 => _705()]);
25840
+ _optionalChain([inputRef, 'access', _634 => _634.current, 'optionalAccess', _635 => _635.click, 'call', _636 => _636()]);
26566
25841
  };
26567
25842
  const handleRootKeyDown = (e) => {
26568
25843
  if (hasImage || !interactive) return;
@@ -26701,25 +25976,25 @@ function CompactAssigneeDropdown({
26701
25976
  onAssign,
26702
25977
  className
26703
25978
  }) {
26704
- const [isOpen, setIsOpen] = React87.useState(false);
26705
- const [search, setSearch] = React87.useState("");
25979
+ const [isOpen, setIsOpen] = React86.useState(false);
25980
+ const [search, setSearch] = React86.useState("");
26706
25981
  const hasAssignee = !!currentAssignee;
26707
- React87.useEffect(() => {
25982
+ React86.useEffect(() => {
26708
25983
  if (!isOpen) setSearch("");
26709
25984
  }, [isOpen]);
26710
- const filtered = React87.useMemo(() => {
25985
+ const filtered = React86.useMemo(() => {
26711
25986
  const q = search.trim().toLowerCase();
26712
25987
  if (!q) return options;
26713
25988
  return options.filter((o) => o.label.toLowerCase().includes(q));
26714
25989
  }, [options, search]);
26715
- const orderedOptions = React87.useMemo(() => {
25990
+ const orderedOptions = React86.useMemo(() => {
26716
25991
  if (!currentAssignee) return filtered;
26717
25992
  const current = filtered.find((o) => o.value === currentAssignee.id);
26718
25993
  if (!current) return filtered;
26719
25994
  return [current, ...filtered.filter((o) => o.value !== currentAssignee.id)];
26720
25995
  }, [filtered, currentAssignee]);
26721
25996
  const handleSelect = (userId) => {
26722
- const next = _optionalChain([currentAssignee, 'optionalAccess', _706 => _706.id]) === userId ? null : userId;
25997
+ const next = _optionalChain([currentAssignee, 'optionalAccess', _637 => _637.id]) === userId ? null : userId;
26723
25998
  onAssign(next);
26724
25999
  setIsOpen(false);
26725
26000
  };
@@ -26784,7 +26059,7 @@ function CompactAssigneeDropdown({
26784
26059
  }
26785
26060
  ) }),
26786
26061
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "max-h-80 overflow-y-auto py-[var(--spacing-system-xs)]", role: "listbox", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "Loading\u2026" }) : orderedOptions.length === 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-[var(--spacing-system-sf)] py-[var(--spacing-system-s)] text-h5 text-ods-text-secondary", children: "No users found" }) : orderedOptions.map((opt) => {
26787
- const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _707 => _707.id]) === opt.value;
26062
+ const isCurrent = _optionalChain([currentAssignee, 'optionalAccess', _638 => _638.id]) === opt.value;
26788
26063
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
26789
26064
  "button",
26790
26065
  {
@@ -26828,9 +26103,9 @@ function DefaultAssigneeDropdown({
26828
26103
  onAssign,
26829
26104
  className
26830
26105
  }) {
26831
- const [isEditing, setIsEditing] = React87.useState(false);
26106
+ const [isEditing, setIsEditing] = React86.useState(false);
26832
26107
  const hasAssignee = !!currentAssignee;
26833
- const renderOption = React87.useCallback((option) => {
26108
+ const renderOption = React86.useCallback((option) => {
26834
26109
  const opt = option;
26835
26110
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-sf)] w-full min-w-0", children: [
26836
26111
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -26853,7 +26128,7 @@ function DefaultAssigneeDropdown({
26853
26128
  Autocomplete,
26854
26129
  {
26855
26130
  options,
26856
- value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _708 => _708.id]), () => ( null)),
26131
+ value: _nullishCoalesce(_optionalChain([currentAssignee, 'optionalAccess', _639 => _639.id]), () => ( null)),
26857
26132
  onChange: (val) => {
26858
26133
  onAssign(val);
26859
26134
  setIsEditing(false);
@@ -27018,8 +26293,8 @@ _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
27018
26293
  _chunkOFAYLG6Dcjs.init_cn.call(void 0, );
27019
26294
 
27020
26295
  function TicketNoteCard({ note, onEdit, onDelete, className }) {
27021
- const [isEditing, setIsEditing] = React88.useState(false);
27022
- const [editText, setEditText] = React88.useState(note.text);
26296
+ const [isEditing, setIsEditing] = React87.useState(false);
26297
+ const [editText, setEditText] = React87.useState(note.text);
27023
26298
  const handleSave = () => {
27024
26299
  const trimmed = editText.trim();
27025
26300
  if (!trimmed || !onEdit) return;
@@ -27135,7 +26410,7 @@ function TicketNotesSection({
27135
26410
  isAddingNote,
27136
26411
  className
27137
26412
  }) {
27138
- const [noteText, setNoteText] = React89.useState("");
26413
+ const [noteText, setNoteText] = React88.useState("");
27139
26414
  const handleSend = () => {
27140
26415
  const trimmed = noteText.trim();
27141
26416
  if (!trimmed || !onAddNote || isAddingNote) return;
@@ -27240,14 +26515,14 @@ function TicketInfoSection({
27240
26515
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27241
26516
  SquareAvatar,
27242
26517
  {
27243
- src: _optionalChain([organization, 'optionalAccess', _709 => _709.imageSrc]),
27244
- alt: _optionalChain([organization, 'optionalAccess', _710 => _710.name]),
27245
- fallback: _optionalChain([organization, 'optionalAccess', _711 => _711.name]) || "Org",
26518
+ src: _optionalChain([organization, 'optionalAccess', _640 => _640.imageSrc]),
26519
+ alt: _optionalChain([organization, 'optionalAccess', _641 => _641.name]),
26520
+ fallback: _optionalChain([organization, 'optionalAccess', _642 => _642.name]) || "Org",
27246
26521
  size: "md",
27247
26522
  className: "shrink-0"
27248
26523
  }
27249
26524
  ),
27250
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _712 => _712.name]) || "Unassigned", label: "Organization" })
26525
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, InfoCell2, { value: _optionalChain([organization, 'optionalAccess', _643 => _643.name]) || "Unassigned", label: "Organization" })
27251
26526
  ] }),
27252
26527
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: assigned ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27253
26528
  AssigneeDropdown,
@@ -27268,10 +26543,10 @@ function TicketInfoSection({
27268
26543
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
27269
26544
  InfoCell2,
27270
26545
  {
27271
- value: _optionalChain([device, 'optionalAccess', _713 => _713.name]) || "Unassigned",
26546
+ value: _optionalChain([device, 'optionalAccess', _644 => _644.name]) || "Unassigned",
27272
26547
  label: "Device",
27273
- icon: _optionalChain([device, 'optionalAccess', _714 => _714.icon]),
27274
- onClick: _optionalChain([device, 'optionalAccess', _715 => _715.onClick])
26548
+ icon: _optionalChain([device, 'optionalAccess', _645 => _645.icon]),
26549
+ onClick: _optionalChain([device, 'optionalAccess', _646 => _646.onClick])
27275
26550
  }
27276
26551
  ),
27277
26552
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-4 min-w-0", children: [
@@ -28031,10 +27306,10 @@ var getContentDimensions = (config) => {
28031
27306
  const envMobileHeight = process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_MOBILE_HEIGHT) : null;
28032
27307
  const envDesktopWidth = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_WIDTH) : null;
28033
27308
  const envDesktopHeight = process.env.NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT ? parseInt(process.env.NEXT_PUBLIC_FIGMA_DESKTOP_HEIGHT) : null;
28034
- const mobileWidth = _nullishCoalesce(_nullishCoalesce(envMobileWidth, () => ( _optionalChain([config, 'optionalAccess', _716 => _716.mobileContentDimensions, 'optionalAccess', _717 => _717.width]))), () => ( defaultMobile.width));
28035
- const mobileHeight = _nullishCoalesce(_nullishCoalesce(envMobileHeight, () => ( _optionalChain([config, 'optionalAccess', _718 => _718.mobileContentDimensions, 'optionalAccess', _719 => _719.height]))), () => ( defaultMobile.height));
28036
- const desktopWidth = _nullishCoalesce(_nullishCoalesce(envDesktopWidth, () => ( _optionalChain([config, 'optionalAccess', _720 => _720.desktopContentDimensions, 'optionalAccess', _721 => _721.width]))), () => ( defaultDesktop.width));
28037
- const desktopHeight = _nullishCoalesce(_nullishCoalesce(envDesktopHeight, () => ( _optionalChain([config, 'optionalAccess', _722 => _722.desktopContentDimensions, 'optionalAccess', _723 => _723.height]))), () => ( defaultDesktop.height));
27309
+ const mobileWidth = _nullishCoalesce(_nullishCoalesce(envMobileWidth, () => ( _optionalChain([config, 'optionalAccess', _647 => _647.mobileContentDimensions, 'optionalAccess', _648 => _648.width]))), () => ( defaultMobile.width));
27310
+ const mobileHeight = _nullishCoalesce(_nullishCoalesce(envMobileHeight, () => ( _optionalChain([config, 'optionalAccess', _649 => _649.mobileContentDimensions, 'optionalAccess', _650 => _650.height]))), () => ( defaultMobile.height));
27311
+ const desktopWidth = _nullishCoalesce(_nullishCoalesce(envDesktopWidth, () => ( _optionalChain([config, 'optionalAccess', _651 => _651.desktopContentDimensions, 'optionalAccess', _652 => _652.width]))), () => ( defaultDesktop.width));
27312
+ const desktopHeight = _nullishCoalesce(_nullishCoalesce(envDesktopHeight, () => ( _optionalChain([config, 'optionalAccess', _653 => _653.desktopContentDimensions, 'optionalAccess', _654 => _654.height]))), () => ( defaultDesktop.height));
28038
27313
  return {
28039
27314
  mobile: { width: mobileWidth, height: mobileHeight },
28040
27315
  desktop: { width: desktopWidth, height: desktopHeight }
@@ -28168,7 +27443,7 @@ function renderUnifiedUI(state, handlers, config, iframeRef) {
28168
27443
  const contentDimensions = getContentDimensions(config);
28169
27444
  const mobileHeight = contentDimensions.mobile.height;
28170
27445
  const calculatedHeight = Math.max(mobileHeight + 100, 400);
28171
- return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess', _724 => _724.innerHeight]) * 0.85 || 650)}px`;
27446
+ return `${Math.min(calculatedHeight, _optionalChain([window, 'optionalAccess', _655 => _655.innerHeight]) * 0.85 || 650)}px`;
28172
27447
  })(),
28173
27448
  minHeight: viewMode === "DESKTOP" ? "auto" : (() => {
28174
27449
  const contentDimensions = getContentDimensions(config);
@@ -28273,7 +27548,7 @@ var FigmaPrototypeViewer = ({
28273
27548
  const [isInitialized, setIsInitialized] = _react.useState.call(void 0, false);
28274
27549
  const [currentNodeId, setCurrentNodeId] = _react.useState.call(void 0, null);
28275
27550
  const [internalActiveSection, setInternalActiveSection] = _react.useState.call(void 0,
28276
- config.defaultSectionId || _optionalChain([config, 'access', _725 => _725.sections, 'access', _726 => _726[0], 'optionalAccess', _727 => _727.id]) || ""
27551
+ config.defaultSectionId || _optionalChain([config, 'access', _656 => _656.sections, 'access', _657 => _657[0], 'optionalAccess', _658 => _658.id]) || ""
28277
27552
  );
28278
27553
  const activeSection = externalActiveSection || internalActiveSection;
28279
27554
  const [isNavigating, setIsNavigating] = _react.useState.call(void 0, false);
@@ -28363,7 +27638,7 @@ var FigmaPrototypeViewer = ({
28363
27638
  const handleMessage = (event) => {
28364
27639
  if (event.origin !== "https://www.figma.com") return;
28365
27640
  const validEvents = ["INITIAL_LOAD", "NEW_STATE", "PRESENTED_NODE_CHANGED"];
28366
- if (_optionalChain([event, 'access', _728 => _728.data, 'optionalAccess', _729 => _729.type]) && validEvents.includes(event.data.type)) {
27641
+ if (_optionalChain([event, 'access', _659 => _659.data, 'optionalAccess', _660 => _660.type]) && validEvents.includes(event.data.type)) {
28367
27642
  const figmaEvent = event.data;
28368
27643
  console.log("[Figma Event]", figmaEvent.type, viewMode);
28369
27644
  switch (figmaEvent.type) {
@@ -28373,19 +27648,19 @@ var FigmaPrototypeViewer = ({
28373
27648
  setIframeState("READY");
28374
27649
  break;
28375
27650
  case "PRESENTED_NODE_CHANGED":
28376
- if (_optionalChain([figmaEvent, 'access', _730 => _730.data, 'optionalAccess', _731 => _731.presentedNodeId])) {
27651
+ if (_optionalChain([figmaEvent, 'access', _661 => _661.data, 'optionalAccess', _662 => _662.presentedNodeId])) {
28377
27652
  setCurrentNodeId(figmaEvent.data.presentedNodeId);
28378
27653
  if (!isNavigating) {
28379
27654
  const matchingSection = config.sections.find((s) => {
28380
- const desktopMatch = s.startingNodeId === _optionalChain([figmaEvent, 'access', _732 => _732.data, 'optionalAccess', _733 => _733.presentedNodeId]) || s.startingNodeId.replace(":", "-") === _optionalChain([figmaEvent, 'access', _734 => _734.data, 'optionalAccess', _735 => _735.presentedNodeId]);
28381
- const mobileMatch = s.mobileStartingNodeId === _optionalChain([figmaEvent, 'access', _736 => _736.data, 'optionalAccess', _737 => _737.presentedNodeId]) || _optionalChain([s, 'access', _738 => _738.mobileStartingNodeId, 'optionalAccess', _739 => _739.replace, 'call', _740 => _740(":", "-")]) === _optionalChain([figmaEvent, 'access', _741 => _741.data, 'optionalAccess', _742 => _742.presentedNodeId]);
27655
+ const desktopMatch = s.startingNodeId === _optionalChain([figmaEvent, 'access', _663 => _663.data, 'optionalAccess', _664 => _664.presentedNodeId]) || s.startingNodeId.replace(":", "-") === _optionalChain([figmaEvent, 'access', _665 => _665.data, 'optionalAccess', _666 => _666.presentedNodeId]);
27656
+ const mobileMatch = s.mobileStartingNodeId === _optionalChain([figmaEvent, 'access', _667 => _667.data, 'optionalAccess', _668 => _668.presentedNodeId]) || _optionalChain([s, 'access', _669 => _669.mobileStartingNodeId, 'optionalAccess', _670 => _670.replace, 'call', _671 => _671(":", "-")]) === _optionalChain([figmaEvent, 'access', _672 => _672.data, 'optionalAccess', _673 => _673.presentedNodeId]);
28382
27657
  return desktopMatch || mobileMatch;
28383
27658
  });
28384
27659
  if (matchingSection && matchingSection.id !== activeSection) {
28385
27660
  if (!externalActiveSection) {
28386
27661
  setInternalActiveSection(matchingSection.id);
28387
27662
  }
28388
- _optionalChain([config, 'access', _743 => _743.onSectionChange, 'optionalCall', _744 => _744(matchingSection.id)]);
27663
+ _optionalChain([config, 'access', _674 => _674.onSectionChange, 'optionalCall', _675 => _675(matchingSection.id)]);
28389
27664
  }
28390
27665
  }
28391
27666
  }
@@ -28398,7 +27673,7 @@ var FigmaPrototypeViewer = ({
28398
27673
  }, [config.sections, activeSection, isNavigating, externalActiveSection, config.onSectionChange, viewMode]);
28399
27674
  const navigateToSection = _react.useCallback.call(void 0, (sectionId) => {
28400
27675
  const section = config.sections.find((s) => s.id === sectionId);
28401
- if (!section || !_optionalChain([iframeRef, 'access', _745 => _745.current, 'optionalAccess', _746 => _746.contentWindow]) || !isInitialized) {
27676
+ if (!section || !_optionalChain([iframeRef, 'access', _676 => _676.current, 'optionalAccess', _677 => _677.contentWindow]) || !isInitialized) {
28402
27677
  return;
28403
27678
  }
28404
27679
  setIsNavigating(true);
@@ -28406,7 +27681,7 @@ var FigmaPrototypeViewer = ({
28406
27681
  if (!externalActiveSection) {
28407
27682
  setInternalActiveSection(sectionId);
28408
27683
  }
28409
- _optionalChain([config, 'access', _747 => _747.onSectionChange, 'optionalCall', _748 => _748(sectionId)]);
27684
+ _optionalChain([config, 'access', _678 => _678.onSectionChange, 'optionalCall', _679 => _679(sectionId)]);
28410
27685
  const command = {
28411
27686
  type: "NAVIGATE_TO_FRAME_AND_CLOSE_OVERLAYS",
28412
27687
  data: { nodeId }
@@ -28726,7 +28001,7 @@ var FiltersDropdown = ({
28726
28001
  defaults[section.id] = section.defaultSelected || [];
28727
28002
  });
28728
28003
  setSelectedFilters(defaults);
28729
- _optionalChain([onReset, 'optionalCall', _749 => _749()]);
28004
+ _optionalChain([onReset, 'optionalCall', _680 => _680()]);
28730
28005
  setIsOpen(false);
28731
28006
  };
28732
28007
  const handleApply = () => {
@@ -29020,7 +28295,7 @@ function MediaGalleryManager({
29020
28295
  const [deletingIndex, setDeletingIndex] = _react.useState.call(void 0, null);
29021
28296
  const [draggedIndex, setDraggedIndex] = _react.useState.call(void 0, null);
29022
28297
  const handleFileSelect = _react.useCallback.call(void 0, async (event) => {
29023
- const file = _optionalChain([event, 'access', _750 => _750.target, 'access', _751 => _751.files, 'optionalAccess', _752 => _752[0]]);
28298
+ const file = _optionalChain([event, 'access', _681 => _681.target, 'access', _682 => _682.files, 'optionalAccess', _683 => _683[0]]);
29024
28299
  if (!file) return;
29025
28300
  let mediaType;
29026
28301
  if (file.type.startsWith("image/")) {
@@ -29135,7 +28410,7 @@ function MediaGalleryManager({
29135
28410
  {
29136
28411
  type: "button",
29137
28412
  variant: "outline",
29138
- onClick: () => _optionalChain([fileInputRef, 'access', _753 => _753.current, 'optionalAccess', _754 => _754.click, 'call', _755 => _755()]),
28413
+ onClick: () => _optionalChain([fileInputRef, 'access', _684 => _684.current, 'optionalAccess', _685 => _685.click, 'call', _686 => _686()]),
29139
28414
  disabled: isUploading,
29140
28415
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
29141
28416
  className: "font-['DM_Sans'] text-[16px] font-bold",
@@ -29920,7 +29195,7 @@ function ReleaseMediaManager({
29920
29195
  const fileInputRef = _react.useRef.call(void 0, null);
29921
29196
  const [uploadingIndex, setUploadingIndex] = _react.useState.call(void 0, null);
29922
29197
  const handleFileSelect = async (event) => {
29923
- const file = _optionalChain([event, 'access', _756 => _756.target, 'access', _757 => _757.files, 'optionalAccess', _758 => _758[0]]);
29198
+ const file = _optionalChain([event, 'access', _687 => _687.target, 'access', _688 => _688.files, 'optionalAccess', _689 => _689[0]]);
29924
29199
  if (!file) return;
29925
29200
  let mediaType;
29926
29201
  if (file.type.startsWith("image/")) {
@@ -30000,7 +29275,7 @@ function ReleaseMediaManager({
30000
29275
  {
30001
29276
  type: "button",
30002
29277
  variant: "outline",
30003
- onClick: () => _optionalChain([fileInputRef, 'access', _759 => _759.current, 'optionalAccess', _760 => _760.click, 'call', _761 => _761()]),
29278
+ onClick: () => _optionalChain([fileInputRef, 'access', _690 => _690.current, 'optionalAccess', _691 => _691.click, 'call', _692 => _692()]),
30004
29279
  disabled: uploadingIndex !== null,
30005
29280
  leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Plus, { className: "h-4 w-4" }),
30006
29281
  className: "font-['DM_Sans'] text-[16px] font-bold",
@@ -30213,7 +29488,7 @@ function SEOEditorPreview({
30213
29488
  const displayImage = hasOgImage || hasFeaturedImage;
30214
29489
  const handleImageUpload = async (event) => {
30215
29490
  if (!onOgImageUpload) return;
30216
- const file = _optionalChain([event, 'access', _762 => _762.target, 'access', _763 => _763.files, 'optionalAccess', _764 => _764[0]]);
29491
+ const file = _optionalChain([event, 'access', _693 => _693.target, 'access', _694 => _694.files, 'optionalAccess', _695 => _695[0]]);
30217
29492
  if (!file) return;
30218
29493
  setIsUploading(true);
30219
29494
  try {
@@ -30344,7 +29619,7 @@ function SEOEditorPreview({
30344
29619
  type: "button",
30345
29620
  variant: "outline",
30346
29621
  size: "icon",
30347
- onClick: () => _optionalChain([fileInputRef, 'optionalAccess', _765 => _765.click, 'call', _766 => _766()]),
29622
+ onClick: () => _optionalChain([fileInputRef, 'optionalAccess', _696 => _696.click, 'call', _697 => _697()]),
30348
29623
  disabled: disabled || isUploading,
30349
29624
  className: "bg-white text-black hover:bg-gray-100 rounded-full opacity-0 group-hover:opacity-100",
30350
29625
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-4 w-4" })
@@ -30367,7 +29642,7 @@ function SEOEditorPreview({
30367
29642
  "div",
30368
29643
  {
30369
29644
  className: "h-full min-h-[280px] border-2 border-dashed border-ods-border rounded-lg flex flex-col items-center justify-center cursor-pointer hover:border-ods-accent transition-colors bg-ods-bg-hover",
30370
- onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess', _767 => _767.click, 'call', _768 => _768()]),
29645
+ onClick: () => onOgImageUpload && _optionalChain([fileInputRef, 'optionalAccess', _698 => _698.click, 'call', _699 => _699()]),
30371
29646
  children: isUploading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Loader2, { className: "h-8 w-8 animate-spin text-ods-accent" }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
30372
29647
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Upload, { className: "h-8 w-8 text-ods-text-secondary mb-2" }),
30373
29648
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-sm text-ods-text-secondary font-['DM_Sans']", children: onOgImageUpload ? "Click to upload OG image" : "No image" })
@@ -30452,7 +29727,7 @@ function SocialLinksManager({
30452
29727
  className = ""
30453
29728
  }) {
30454
29729
  const addLink = () => {
30455
- const firstPlatform = _optionalChain([platforms, 'access', _769 => _769[0], 'optionalAccess', _770 => _770.name]) || "website";
29730
+ const firstPlatform = _optionalChain([platforms, 'access', _700 => _700[0], 'optionalAccess', _701 => _701.name]) || "website";
30456
29731
  onChange([...links, { platform: firstPlatform, url: "" }]);
30457
29732
  };
30458
29733
  const removeLink = (index) => {
@@ -30464,7 +29739,7 @@ function SocialLinksManager({
30464
29739
  onChange(updated);
30465
29740
  };
30466
29741
  const getIcon = (link, platform) => {
30467
- const iconKey = _optionalChain([platform, 'optionalAccess', _771 => _771.icon_name]) || link.platform;
29742
+ const iconKey = _optionalChain([platform, 'optionalAccess', _702 => _702.icon_name]) || link.platform;
30468
29743
  const IconComponent = iconMap[iconKey];
30469
29744
  return IconComponent ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, IconComponent, { className: "w-5 h-5 text-ods-text-secondary" }) : null;
30470
29745
  };
@@ -30489,7 +29764,7 @@ function SocialLinksManager({
30489
29764
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30490
29765
  _chunkBJTOSUT4cjs.Input,
30491
29766
  {
30492
- placeholder: _optionalChain([platform, 'optionalAccess', _772 => _772.placeholder]) || "Profile URL",
29767
+ placeholder: _optionalChain([platform, 'optionalAccess', _703 => _703.placeholder]) || "Profile URL",
30493
29768
  value: link.url,
30494
29769
  onChange: (e) => updateLink(index, "url", e.target.value),
30495
29770
  onKeyDown: (e) => {
@@ -30533,7 +29808,7 @@ function SocialLinksManager({
30533
29808
  _chunkBJTOSUT4cjs.init_button2.call(void 0, );
30534
29809
 
30535
29810
 
30536
- var StartWithOpenFrameButton = React94.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
29811
+ var StartWithOpenFrameButton = React93.forwardRef(({ children = "Start Free Trial", mode = "outline", className, buttonSize, loading = false, buttonBackgroundColor, buttonTextColor, ...props }, ref) => {
30537
29812
  const isYellow = mode === "yellow";
30538
29813
  const isPink = mode === "pink" || mode === "purple";
30539
29814
  const isCyan = mode === "cyan";
@@ -30829,6 +30104,258 @@ function TagsSelector({
30829
30104
  ] });
30830
30105
  }
30831
30106
 
30107
+ // src/components/features/video-ratio-tabs.tsx
30108
+
30109
+ var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary";
30110
+ var RATIO_GRID_CLASS = {
30111
+ portrait: "grid grid-cols-2 md:grid-cols-3 gap-4",
30112
+ square: "grid grid-cols-2 md:grid-cols-3 gap-4",
30113
+ landscape: "grid grid-cols-1 md:grid-cols-2 gap-4"
30114
+ };
30115
+ var RATIO_DISPLAY_GRID_CLASS = {
30116
+ portrait: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
30117
+ square: "grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",
30118
+ landscape: "grid grid-cols-1 md:grid-cols-2 gap-6"
30119
+ };
30120
+ var RATIO_TAB_CONFIG = [
30121
+ { key: "portrait", label: "Portrait 9:16" },
30122
+ { key: "square", label: "Square 1:1" },
30123
+ { key: "landscape", label: "Landscape 16:9" }
30124
+ ];
30125
+ function RatioTabs({
30126
+ groups,
30127
+ defaultTab,
30128
+ className = ""
30129
+ }) {
30130
+ const activeTabs = RATIO_TAB_CONFIG.filter((t) => groups[t.key].count > 0);
30131
+ if (activeTabs.length <= 1) {
30132
+ const active = activeTabs[0];
30133
+ return active ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: groups[active.key].render() }) : null;
30134
+ }
30135
+ const firstTab = defaultTab && groups[defaultTab].count > 0 ? defaultTab : activeTabs[0].key;
30136
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Tabs, { defaultValue: firstTab, className: `w-full ${className}`, children: [
30137
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0 mb-2", children: activeTabs.map((t) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, TabsTrigger, { value: t.key, className: TAB_TRIGGER_CLASS, children: [
30138
+ t.label,
30139
+ " (",
30140
+ groups[t.key].count,
30141
+ ")"
30142
+ ] }, t.key)) }),
30143
+ activeTabs.map((t) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30144
+ TabsContent,
30145
+ {
30146
+ value: t.key,
30147
+ forceMount: true,
30148
+ className: "data-[state=inactive]:hidden",
30149
+ children: groups[t.key].render()
30150
+ },
30151
+ t.key
30152
+ ))
30153
+ ] });
30154
+ }
30155
+ function detectAspectRatio(ratioString, width, height) {
30156
+ if (ratioString === "16:9") return "16:9";
30157
+ if (ratioString === "1:1") return "1:1";
30158
+ if (ratioString === "9:16") return "9:16";
30159
+ if (width && height) {
30160
+ if (Math.abs(width - height) < Math.min(width, height) * 0.1) return "1:1";
30161
+ if (width > height) return "16:9";
30162
+ }
30163
+ return "9:16";
30164
+ }
30165
+ function ratioToCategory(ratio) {
30166
+ if (ratio === "16:9") return "landscape";
30167
+ if (ratio === "1:1") return "square";
30168
+ return "portrait";
30169
+ }
30170
+ function groupByAspectRatio(items, getAspectRatio) {
30171
+ const portrait = [];
30172
+ const square = [];
30173
+ const landscape = [];
30174
+ for (const item of items) {
30175
+ const cat = ratioToCategory(getAspectRatio(item));
30176
+ if (cat === "landscape") landscape.push(item);
30177
+ else if (cat === "square") square.push(item);
30178
+ else portrait.push(item);
30179
+ }
30180
+ const filled = [portrait, square, landscape].filter((a) => a.length > 0).length;
30181
+ return { portrait, square, landscape, hasMultiple: filled > 1 };
30182
+ }
30183
+
30184
+ // src/components/features/video-bites-display.tsx
30185
+
30186
+
30187
+ var RATIO_TO_CSS_ASPECT = {
30188
+ portrait: "9 / 16",
30189
+ square: "1 / 1",
30190
+ landscape: "16 / 9"
30191
+ };
30192
+ function LazyBite({ ratio, children }) {
30193
+ const { ref, isNear } = _chunkALW3D72Ocjs.useNearViewport.call(void 0, "500px");
30194
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full h-full bg-ods-card rounded-md" }) });
30195
+ }
30196
+ function VideoBitesDisplay({
30197
+ bites,
30198
+ title = "Video Highlights",
30199
+ filterPublished = true,
30200
+ showTitle = true
30201
+ }) {
30202
+ const grouped = _react.useMemo.call(void 0, () => {
30203
+ const filtered = filterPublished ? bites.filter((b) => b.published) : bites;
30204
+ const sorted = [...filtered].sort((a, b) => {
30205
+ if (!a.created_at && !b.created_at) return 0;
30206
+ if (!a.created_at) return 1;
30207
+ if (!b.created_at) return -1;
30208
+ return new Date(b.created_at).getTime() - new Date(a.created_at).getTime();
30209
+ });
30210
+ return groupByAspectRatio(
30211
+ sorted,
30212
+ (b) => detectAspectRatio(b.aspect_ratio)
30213
+ );
30214
+ }, [bites, filterPublished]);
30215
+ const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
30216
+ if (totalCount === 0) return null;
30217
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
30218
+ showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: title }),
30219
+ grouped.hasMultiple ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30220
+ RatioTabs,
30221
+ {
30222
+ groups: {
30223
+ portrait: {
30224
+ count: grouped.portrait.length,
30225
+ render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.portrait, ratio: "portrait" })
30226
+ },
30227
+ square: {
30228
+ count: grouped.square.length,
30229
+ render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.square, ratio: "square" })
30230
+ },
30231
+ landscape: {
30232
+ count: grouped.landscape.length,
30233
+ render: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, BiteGrid, { bites: grouped.landscape, ratio: "landscape" })
30234
+ }
30235
+ }
30236
+ }
30237
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30238
+ BiteGrid,
30239
+ {
30240
+ bites: grouped.portrait.length > 0 ? grouped.portrait : grouped.square.length > 0 ? grouped.square : grouped.landscape,
30241
+ ratio: grouped.portrait.length > 0 ? "portrait" : grouped.square.length > 0 ? "square" : "landscape"
30242
+ }
30243
+ )
30244
+ ] });
30245
+ }
30246
+ function BiteGrid({ bites, ratio }) {
30247
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: RATIO_DISPLAY_GRID_CLASS[ratio], children: bites.map((bite, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LazyBite, { ratio, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoBiteCard, { url: bite.url, title: bite.title, thumbnailUrl: bite.thumbnail_url }) }, bite.url || index)) });
30248
+ }
30249
+ function VideoBiteCard({ url, title, thumbnailUrl }) {
30250
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: "overflow-hidden border border-ods-border bg-ods-card hover:border-ods-accent transition-colors flex flex-col h-full", children: [
30251
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative flex-1 min-h-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video2, { url, poster: thumbnailUrl || void 0, layout: "fill" }) }),
30252
+ title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "p-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4 text-ods-text-primary line-clamp-2", children: title }) })
30253
+ ] });
30254
+ }
30255
+
30256
+ // src/components/features/entity-video-section.tsx
30257
+
30258
+ function EntityVideoSection({
30259
+ mainVideoUrl,
30260
+ youtubeUrl,
30261
+ highlightVideoUrl,
30262
+ highlightVideoThumbnail,
30263
+ mainVideoPoster,
30264
+ title = "Video",
30265
+ videoSummary,
30266
+ videoBites,
30267
+ bitesTitle = "Video Highlights",
30268
+ filterPublishedBites = true,
30269
+ MarkdownRenderer,
30270
+ srtContent,
30271
+ captionsUrl,
30272
+ priority = false
30273
+ }) {
30274
+ const hasFullVideo = !!(youtubeUrl || mainVideoUrl);
30275
+ const hasHighlight = !!highlightVideoUrl;
30276
+ const hasVideo = hasFullVideo || hasHighlight;
30277
+ if (!hasVideo && !videoSummary && (!videoBites || videoBites.length === 0)) {
30278
+ return null;
30279
+ }
30280
+ const fullVideoUrl = youtubeUrl || mainVideoUrl || null;
30281
+ const fullVideoKind = youtubeUrl ? "youtube" : "auto";
30282
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
30283
+ hasVideo && (hasFullVideo && hasHighlight ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Tabs, { defaultValue: "full-video", className: "w-full", children: [
30284
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, TabsList, { className: "inline-flex justify-start rounded-none bg-transparent h-auto p-0 gap-0", children: [
30285
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30286
+ TabsTrigger,
30287
+ {
30288
+ value: "full-video",
30289
+ className: "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 md:px-6 py-3 text-ods-text-secondary data-[state=active]:text-ods-text-primary",
30290
+ children: "Full Video"
30291
+ }
30292
+ ),
30293
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30294
+ TabsTrigger,
30295
+ {
30296
+ value: "highlights",
30297
+ className: "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 md:px-6 py-3 text-ods-text-secondary data-[state=active]:text-ods-text-primary",
30298
+ children: "Highlights"
30299
+ }
30300
+ )
30301
+ ] }),
30302
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "full-video", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30303
+ Video2,
30304
+ {
30305
+ kind: fullVideoKind,
30306
+ url: fullVideoUrl,
30307
+ poster: mainVideoPoster,
30308
+ title,
30309
+ srtContent,
30310
+ captionsUrl,
30311
+ layout: "centered",
30312
+ priority
30313
+ }
30314
+ ) }),
30315
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TabsContent, { value: "highlights", className: "mt-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30316
+ Video2,
30317
+ {
30318
+ url: highlightVideoUrl,
30319
+ poster: highlightVideoThumbnail,
30320
+ layout: "centered"
30321
+ }
30322
+ ) })
30323
+ ] }) : hasFullVideo ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30324
+ Video2,
30325
+ {
30326
+ kind: fullVideoKind,
30327
+ url: fullVideoUrl,
30328
+ poster: mainVideoPoster,
30329
+ title,
30330
+ srtContent,
30331
+ captionsUrl,
30332
+ layout: "centered",
30333
+ priority
30334
+ }
30335
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30336
+ Video2,
30337
+ {
30338
+ url: highlightVideoUrl,
30339
+ poster: highlightVideoThumbnail,
30340
+ layout: "centered",
30341
+ priority
30342
+ }
30343
+ )),
30344
+ videoSummary && MarkdownRenderer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
30345
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-h1 tracking-[-1.12px] text-ods-text-primary break-words", children: "Summary" }),
30346
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary break-words overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: videoSummary }) })
30347
+ ] }),
30348
+ videoBites && videoBites.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
30349
+ VideoBitesDisplay,
30350
+ {
30351
+ bites: videoBites,
30352
+ title: bitesTitle,
30353
+ filterPublished: filterPublishedBites
30354
+ }
30355
+ )
30356
+ ] });
30357
+ }
30358
+
30832
30359
  // src/components/features/video-source-selector.tsx
30833
30360
  _chunkBJTOSUT4cjs.init_button2.call(void 0, );
30834
30361
 
@@ -30866,7 +30393,7 @@ function VideoSourceSelector({
30866
30393
  input.accept = "video/*";
30867
30394
  input.onchange = async (e) => {
30868
30395
  const target = e.target;
30869
- const file = _optionalChain([target, 'access', _773 => _773.files, 'optionalAccess', _774 => _774[0]]);
30396
+ const file = _optionalChain([target, 'access', _704 => _704.files, 'optionalAccess', _705 => _705[0]]);
30870
30397
  if (!file) return;
30871
30398
  setIsUploading(true);
30872
30399
  setUploadProgress(0);
@@ -31196,7 +30723,7 @@ function TranscriptSummaryEditor({
31196
30723
  {
31197
30724
  id: "subtitles",
31198
30725
  value: subtitles || "",
31199
- onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall', _775 => _775(e.target.value)]),
30726
+ onChange: (e) => _optionalChain([onSubtitlesChange, 'optionalCall', _706 => _706(e.target.value)]),
31200
30727
  placeholder: subtitlesPlaceholder,
31201
30728
  disabled: disabled || !onSubtitlesChange,
31202
30729
  className: "h-full w-full resize-none border-0 bg-transparent text-ods-text-primary placeholder:text-ods-text-secondary/50 focus:ring-0 focus:outline-none p-4 font-mono text-sm",
@@ -31349,7 +30876,7 @@ var AIEnrichSection = ({
31349
30876
  }) => {
31350
30877
  const hasResults = status === "success" || status === "error";
31351
30878
  const shouldDisable = disabled || !canEnrich;
31352
- const unfilledFields = _optionalChain([requiredFields, 'optionalAccess', _776 => _776.filter, 'call', _777 => _777((f) => !f.isFilled)]) || [];
30879
+ const unfilledFields = _optionalChain([requiredFields, 'optionalAccess', _707 => _707.filter, 'call', _708 => _708((f) => !f.isFilled)]) || [];
31353
30880
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
31354
30881
  "div",
31355
30882
  {
@@ -31387,7 +30914,7 @@ var AIEnrichSection = ({
31387
30914
  {
31388
30915
  id: "ai-enrich-custom-instructions",
31389
30916
  value: _nullishCoalesce(customInstructions, () => ( "")),
31390
- onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall', _778 => _778(e.target.value)]),
30917
+ onChange: (e) => _optionalChain([onCustomInstructionsChange, 'optionalCall', _709 => _709(e.target.value)]),
31391
30918
  placeholder: customInstructionsPlaceholder,
31392
30919
  disabled: loading,
31393
30920
  maxLength: customInstructionsMaxLength,
@@ -31516,7 +31043,7 @@ function HighlightVideoSection({
31516
31043
  input.accept = "video/*";
31517
31044
  input.onchange = async (e) => {
31518
31045
  const target = e.target;
31519
- const file = _optionalChain([target, 'access', _779 => _779.files, 'optionalAccess', _780 => _780[0]]);
31046
+ const file = _optionalChain([target, 'access', _710 => _710.files, 'optionalAccess', _711 => _711[0]]);
31520
31047
  if (!file) return;
31521
31048
  setUploadError(null);
31522
31049
  try {
@@ -32018,7 +31545,7 @@ function HighlightVideoPreview({
32018
31545
  input.accept = "video/*";
32019
31546
  input.onchange = async (e) => {
32020
31547
  const target = e.target;
32021
- const file = _optionalChain([target, 'access', _781 => _781.files, 'optionalAccess', _782 => _782[0]]);
31548
+ const file = _optionalChain([target, 'access', _712 => _712.files, 'optionalAccess', _713 => _713[0]]);
32022
31549
  if (!file) return;
32023
31550
  await onUpload(file);
32024
31551
  };
@@ -32205,7 +31732,7 @@ function HighlightVideoCombinedSection({
32205
31732
  input.accept = "video/*";
32206
31733
  input.onchange = async (e) => {
32207
31734
  const target = e.target;
32208
- const file = _optionalChain([target, 'access', _783 => _783.files, 'optionalAccess', _784 => _784[0]]);
31735
+ const file = _optionalChain([target, 'access', _714 => _714.files, 'optionalAccess', _715 => _715[0]]);
32209
31736
  if (!file) return;
32210
31737
  await onUpload(file);
32211
31738
  };
@@ -32502,7 +32029,7 @@ var getApprovalLevelLabel = (level, editMode = false) => {
32502
32029
  return editMode ? "Set Global Permission" : "";
32503
32030
  }
32504
32031
  const option = approvalLevelOptions.find((opt) => opt.value === level);
32505
- return _optionalChain([option, 'optionalAccess', _785 => _785.label]) || level;
32032
+ return _optionalChain([option, 'optionalAccess', _716 => _716.label]) || level;
32506
32033
  };
32507
32034
  var PolicyRow = ({ policy, categoryId, editMode, onPermissionChange }) => {
32508
32035
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-bg border-b border-ods-border flex gap-4 items-center px-4 py-3", children: [
@@ -32754,7 +32281,7 @@ function WaitlistForm({
32754
32281
  const finalPhone = phone ? formatPhoneE164(phone, countryCode) : void 0;
32755
32282
  try {
32756
32283
  await onRegister(email, finalPhone);
32757
- } catch (e26) {
32284
+ } catch (e24) {
32758
32285
  }
32759
32286
  };
32760
32287
  if (!isClient) {
@@ -33034,15 +32561,15 @@ function TicketCard({
33034
32561
  transform: _utilities.CSS.Transform.toString(sortable.transform),
33035
32562
  transition: sortable.transition
33036
32563
  };
33037
- const showDeviceRow = !!(_optionalChain([ticket, 'access', _786 => _786.deviceHostnames, 'optionalAccess', _787 => _787.length]) || ticket.organizationName);
32564
+ const showDeviceRow = !!(_optionalChain([ticket, 'access', _717 => _717.deviceHostnames, 'optionalAccess', _718 => _718.length]) || ticket.organizationName);
33038
32565
  const deviceText = [
33039
- _optionalChain([ticket, 'access', _788 => _788.deviceHostnames, 'optionalAccess', _789 => _789.join, 'call', _790 => _790(", ")]),
32566
+ _optionalChain([ticket, 'access', _719 => _719.deviceHostnames, 'optionalAccess', _720 => _720.join, 'call', _721 => _721(", ")]),
33040
32567
  ticket.organizationName
33041
32568
  ].filter(Boolean).join(", ");
33042
32569
  const handleClick = (e) => {
33043
32570
  if (sortable.isDragging) e.preventDefault();
33044
32571
  };
33045
- const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _791 => _791.assignees, 'optionalAccess', _792 => _792.length]) || renderAssignSlot);
32572
+ const hasRightSection = !!(ticket.priority || _optionalChain([ticket, 'access', _722 => _722.assignees, 'optionalAccess', _723 => _723.length]) || renderAssignSlot);
33046
32573
  const rightSection = hasRightSection ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "pointer-events-auto flex shrink-0 items-center gap-[var(--spacing-system-xsf)]", children: [
33047
32574
  ticket.priority && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33048
32575
  _chunkTMD5LDX4cjs.Flag02Icon,
@@ -33051,7 +32578,7 @@ function TicketCard({
33051
32578
  "aria-label": `Priority: ${ticket.priority}`
33052
32579
  }
33053
32580
  ),
33054
- renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access', _793 => _793.assignees, 'optionalAccess', _794 => _794.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex -space-x-2", children: [
32581
+ renderAssignSlot ? renderAssignSlot(ticket) : _optionalChain([ticket, 'access', _724 => _724.assignees, 'optionalAccess', _725 => _725.length]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex -space-x-2", children: [
33055
32582
  ticket.assignees.slice(0, MAX_VISIBLE_ASSIGNEES).map((a) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
33056
32583
  SquareAvatar,
33057
32584
  {
@@ -33080,7 +32607,7 @@ function TicketCard({
33080
32607
  ] }),
33081
32608
  rightSection
33082
32609
  ] }),
33083
- _optionalChain([ticket, 'access', _795 => _795.tags, 'optionalAccess', _796 => _796.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketTagRow, { tags: ticket.tags }) : null
32610
+ _optionalChain([ticket, 'access', _726 => _726.tags, 'optionalAccess', _727 => _727.length]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketTagRow, { tags: ticket.tags }) : null
33084
32611
  ] });
33085
32612
  const cardClasses = _chunkOFAYLG6Dcjs.cn.call(void 0,
33086
32613
  "relative flex flex-col gap-[var(--spacing-system-sf)] rounded-md border border-ods-border bg-ods-bg p-[var(--spacing-system-sf)] select-none text-left",
@@ -33240,7 +32767,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
33240
32767
  const observer = new IntersectionObserver(
33241
32768
  (entries) => {
33242
32769
  if (entries.some((e) => e.isIntersecting)) {
33243
- _optionalChain([loadMoreRef, 'access', _797 => _797.current, 'optionalCall', _798 => _798(columnIdRef.current)]);
32770
+ _optionalChain([loadMoreRef, 'access', _728 => _728.current, 'optionalCall', _729 => _729(columnIdRef.current)]);
33244
32771
  }
33245
32772
  },
33246
32773
  { root, rootMargin: loadMoreRootMargin }
@@ -33269,7 +32796,7 @@ function ColumnBody({ column, getTicketHref, renderAssignSlot, onLoadMore, loadM
33269
32796
  {
33270
32797
  ticket: t,
33271
32798
  columnId: column.id,
33272
- href: _optionalChain([getTicketHref, 'optionalCall', _799 => _799(t.id)]),
32799
+ href: _optionalChain([getTicketHref, 'optionalCall', _730 => _730(t.id)]),
33273
32800
  renderAssignSlot,
33274
32801
  dragDisabled: column.dragDisabled
33275
32802
  },
@@ -33352,17 +32879,17 @@ function Board({
33352
32879
  const pointer = _core.pointerWithin.call(void 0, args);
33353
32880
  const intersections = pointer.length > 0 ? pointer : _core.rectIntersection.call(void 0, args);
33354
32881
  const ticketHit = intersections.find(
33355
- (c) => _optionalChain([c, 'access', _800 => _800.data, 'optionalAccess', _801 => _801.droppableContainer, 'optionalAccess', _802 => _802.data, 'optionalAccess', _803 => _803.current, 'optionalAccess', _804 => _804.type]) === "ticket"
32882
+ (c) => _optionalChain([c, 'access', _731 => _731.data, 'optionalAccess', _732 => _732.droppableContainer, 'optionalAccess', _733 => _733.data, 'optionalAccess', _734 => _734.current, 'optionalAccess', _735 => _735.type]) === "ticket"
33356
32883
  );
33357
32884
  if (ticketHit) return [ticketHit];
33358
32885
  const columnHit = intersections.find(
33359
- (c) => _optionalChain([c, 'access', _805 => _805.data, 'optionalAccess', _806 => _806.droppableContainer, 'optionalAccess', _807 => _807.data, 'optionalAccess', _808 => _808.current, 'optionalAccess', _809 => _809.type]) === "column"
32886
+ (c) => _optionalChain([c, 'access', _736 => _736.data, 'optionalAccess', _737 => _737.droppableContainer, 'optionalAccess', _738 => _738.data, 'optionalAccess', _739 => _739.current, 'optionalAccess', _740 => _740.type]) === "column"
33360
32887
  );
33361
32888
  if (columnHit) {
33362
- const columnId = _optionalChain([columnHit, 'access', _810 => _810.data, 'optionalAccess', _811 => _811.droppableContainer, 'optionalAccess', _812 => _812.data, 'optionalAccess', _813 => _813.current, 'optionalAccess', _814 => _814.columnId]);
32889
+ const columnId = _optionalChain([columnHit, 'access', _741 => _741.data, 'optionalAccess', _742 => _742.droppableContainer, 'optionalAccess', _743 => _743.data, 'optionalAccess', _744 => _744.current, 'optionalAccess', _745 => _745.columnId]);
33363
32890
  const ticketsInColumn = args.droppableContainers.filter((c) => {
33364
32891
  const d = c.data.current;
33365
- return _optionalChain([d, 'optionalAccess', _815 => _815.type]) === "ticket" && d.columnId === columnId;
32892
+ return _optionalChain([d, 'optionalAccess', _746 => _746.type]) === "ticket" && d.columnId === columnId;
33366
32893
  });
33367
32894
  if (ticketsInColumn.length > 0) {
33368
32895
  const closest = _core.closestCorners.call(void 0, { ...args, droppableContainers: ticketsInColumn });
@@ -33387,20 +32914,20 @@ function Board({
33387
32914
  const overId = String(over.id);
33388
32915
  if (activeId === overId) return;
33389
32916
  const overData = over.data.current;
33390
- const fromColumnId = _optionalChain([locate, 'call', _816 => _816(items, activeId), 'optionalAccess', _817 => _817.columnId]);
33391
- const toColumnId = _optionalChain([overData, 'optionalAccess', _818 => _818.columnId]);
32917
+ const fromColumnId = _optionalChain([locate, 'call', _747 => _747(items, activeId), 'optionalAccess', _748 => _748.columnId]);
32918
+ const toColumnId = _optionalChain([overData, 'optionalAccess', _749 => _749.columnId]);
33392
32919
  if (!fromColumnId || !toColumnId || fromColumnId === toColumnId) return;
33393
32920
  const origin = dragOriginRef.current;
33394
- const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _819 => _819.fromColumnId]) === toColumnId;
32921
+ const isReturnToOrigin = _optionalChain([origin, 'optionalAccess', _750 => _750.fromColumnId]) === toColumnId;
33395
32922
  const targetCol = items.find((c) => c.id === toColumnId);
33396
- const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess', _820 => _820.allowedFromColumns]) && !!origin && !targetCol.allowedFromColumns.includes(origin.fromColumnId);
33397
- if (_optionalChain([targetCol, 'optionalAccess', _821 => _821.dropDisabled]) && !isReturnToOrigin || blockedBySource) return;
32923
+ const blockedBySource = !isReturnToOrigin && !!_optionalChain([targetCol, 'optionalAccess', _751 => _751.allowedFromColumns]) && !!origin && !targetCol.allowedFromColumns.includes(origin.fromColumnId);
32924
+ if (_optionalChain([targetCol, 'optionalAccess', _752 => _752.dropDisabled]) && !isReturnToOrigin || blockedBySource) return;
33398
32925
  setItems((prev) => {
33399
32926
  const fromIndex = findIndexInColumn(prev, fromColumnId, activeId);
33400
32927
  const toCol = prev.find((c) => c.id === toColumnId);
33401
32928
  if (fromIndex < 0 || !toCol) return prev;
33402
32929
  let toIndex;
33403
- if (_optionalChain([overData, 'optionalAccess', _822 => _822.type]) === "column") {
32930
+ if (_optionalChain([overData, 'optionalAccess', _753 => _753.type]) === "column") {
33404
32931
  toIndex = toCol.tickets.length;
33405
32932
  } else {
33406
32933
  const overIndex = toCol.tickets.findIndex((t) => t.id === overId);
@@ -33442,14 +32969,14 @@ function Board({
33442
32969
  const toColumnId = located.columnId;
33443
32970
  const isCrossColumn = origin.fromColumnId !== toColumnId;
33444
32971
  const targetCol = items.find((c) => c.id === toColumnId);
33445
- if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess', _823 => _823.dropDisabled]) || _optionalChain([targetCol, 'optionalAccess', _824 => _824.allowedFromColumns]) && !targetCol.allowedFromColumns.includes(origin.fromColumnId))) {
32972
+ if (isCrossColumn && (_optionalChain([targetCol, 'optionalAccess', _754 => _754.dropDisabled]) || _optionalChain([targetCol, 'optionalAccess', _755 => _755.allowedFromColumns]) && !targetCol.allowedFromColumns.includes(origin.fromColumnId))) {
33446
32973
  setItems(columns);
33447
32974
  return;
33448
32975
  }
33449
32976
  let finalIndex = located.index;
33450
- let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access', _825 => _825.find, 'call', _826 => _826((c) => c.id === toColumnId), 'optionalAccess', _827 => _827.tickets]), () => ( []));
32977
+ let finalColumnTickets = _nullishCoalesce(_optionalChain([items, 'access', _756 => _756.find, 'call', _757 => _757((c) => c.id === toColumnId), 'optionalAccess', _758 => _758.tickets]), () => ( []));
33451
32978
  const overData = over.data.current;
33452
- if (_optionalChain([overData, 'optionalAccess', _828 => _828.type]) === "ticket") {
32979
+ if (_optionalChain([overData, 'optionalAccess', _759 => _759.type]) === "ticket") {
33453
32980
  const overIndex = findIndexInColumn(items, toColumnId, String(over.id));
33454
32981
  if (overIndex >= 0 && overIndex !== located.index) {
33455
32982
  finalColumnTickets = _sortable.arrayMove.call(void 0, finalColumnTickets, located.index, overIndex);
@@ -33469,8 +32996,8 @@ function Board({
33469
32996
  ticketId: origin.ticketId,
33470
32997
  fromColumnId: origin.fromColumnId,
33471
32998
  toColumnId,
33472
- afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _829 => _829[finalIndex - 1], 'optionalAccess', _830 => _830.id]), () => ( null)),
33473
- beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _831 => _831[finalIndex + 1], 'optionalAccess', _832 => _832.id]), () => ( null))
32999
+ afterTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _760 => _760[finalIndex - 1], 'optionalAccess', _761 => _761.id]), () => ( null)),
33000
+ beforeTicketId: _nullishCoalesce(_optionalChain([finalColumnTickets, 'access', _762 => _762[finalIndex + 1], 'optionalAccess', _763 => _763.id]), () => ( null))
33474
33001
  });
33475
33002
  };
33476
33003
  const handleDragCancel = () => {
@@ -33492,8 +33019,8 @@ function Board({
33492
33019
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkOFAYLG6Dcjs.cn.call(void 0, "flex h-full overflow-x-auto", className), children: items.map((column, i) => {
33493
33020
  const prev = items[i - 1];
33494
33021
  const next = items[i + 1];
33495
- const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess', _833 => _833.system]));
33496
- const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess', _834 => _834.system]));
33022
+ const joinLeft = !!(column.system && _optionalChain([prev, 'optionalAccess', _764 => _764.system]));
33023
+ const joinRight = !!(column.system && _optionalChain([next, 'optionalAccess', _765 => _765.system]));
33497
33024
  const showGap = i > 0 && !joinLeft;
33498
33025
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, React101.Fragment, { children: [
33499
33026
  showGap && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "aria-hidden": true, className: "w-[var(--spacing-system-mf)] shrink-0" }),
@@ -33527,7 +33054,7 @@ function locate(cols, ticketId) {
33527
33054
  return null;
33528
33055
  }
33529
33056
  function findIndexInColumn(cols, columnId, ticketId) {
33530
- return _nullishCoalesce(_optionalChain([cols, 'access', _835 => _835.find, 'call', _836 => _836((c) => c.id === columnId), 'optionalAccess', _837 => _837.tickets, 'access', _838 => _838.findIndex, 'call', _839 => _839((t) => t.id === ticketId)]), () => ( -1));
33057
+ return _nullishCoalesce(_optionalChain([cols, 'access', _766 => _766.find, 'call', _767 => _767((c) => c.id === columnId), 'optionalAccess', _768 => _768.tickets, 'access', _769 => _769.findIndex, 'call', _770 => _770((t) => t.id === ticketId)]), () => ( -1));
33531
33058
  }
33532
33059
 
33533
33060
  // src/components/features/board/types.ts
@@ -34185,5 +33712,13 @@ function canonicalize(status) {
34185
33712
 
34186
33713
 
34187
33714
 
34188
- 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.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; 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.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; 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.formatReleaseDate = formatReleaseDate; exports.formatRelativeTime = formatRelativeTime; exports.getDynamicIcon = getDynamicIcon; 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.ApprovalRequestMessage = ApprovalRequestMessage; exports.PulseDots = PulseDots; 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.SquareAvatar = SquareAvatar; 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.Textarea = Textarea; exports.ChatTypingIndicator = ChatTypingIndicator; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageListLoader = ChatMessageListLoader; exports.useDelayedFlag = useDelayedFlag; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; 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.MESSAGE_TYPE = MESSAGE_TYPE; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.useChunkCatchup = useChunkCatchup; 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.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; 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.badgeVariants = badgeVariants; exports.Badge = Badge; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.Progress = Progress; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OrganizationIcon = OrganizationIcon; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformBadge = PlatformBadge; 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.VideoPlayer = VideoPlayer; 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.YouTubeEmbed = YouTubeEmbed; exports.extractYouTubeId = extractYouTubeId; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; 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.Switch = Switch; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.Header = Header; 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.AnnouncementBar = AnnouncementBar; exports.VendorIcon = VendorIcon; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.VendorDisplayButton = VendorDisplayButton; exports.setRealAuthHook = setRealAuthHook; exports.useAuth = useAuth; exports.AuthProvider = AuthProvider; exports.CommentCard = CommentCard; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.EmptyState = EmptyState2; exports.ChevronButton = ChevronButton; exports.FaqAccordion = FaqAccordion; exports.FilterChip = FilterChip; exports.SocialIconRow = SocialIconRow; exports.Footer = Footer; exports.useUnifiedFiltering = useUnifiedFiltering; exports.vendorFilterConfig = vendorFilterConfig; exports.blogFilterConfig = blogFilterConfig; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.UnifiedPagination = UnifiedPagination; exports.FooterWaitlistButton = FooterWaitlistButton; exports.HeroImageUploader = HeroImageUploader; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.Slider = Slider; exports.ImageCropper = ImageCropper; exports.MediaCarousel = MediaCarousel; exports.MetricValue = MetricValue; exports.MSPDisplay = MSPDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PRICING_STYLES = PRICING_STYLES; exports.PricingDisplay = PricingDisplay; exports.formatPricingForDisplay = formatPricingForDisplay; exports.ResultsCount = ResultsCount; exports.VendorTag = VendorTag; exports.SelectionSourceBadge = SelectionSourceBadge; exports.UserDisplay = UserDisplay; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.VendorPageSkeleton = VendorPageSkeleton; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon3; exports.XCircleIcon = XCircleIcon; exports.YesNoDisplay = YesNoDisplay; exports.evaluateFeatureValue = evaluateFeatureValue; exports.MadeWithLove = MadeWithLove; exports.DateTimePicker = DateTimePicker; exports.InteractiveCard = InteractiveCard; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.ImageGalleryModal = ImageGalleryModal; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.DetailPageSkeleton = DetailPageSkeleton; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.ProgressBar = ProgressBar; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; 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.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.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.StatusIndicator = StatusIndicator; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ListPageLayout = ListPageLayout; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.CircularProgress = CircularProgress; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; 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.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; 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.TicketKnowledgeBaseList = TicketKnowledgeBaseList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.assets = assets;
34189
- //# sourceMappingURL=chunk-L4T24AN4.cjs.map
33715
+
33716
+
33717
+
33718
+
33719
+
33720
+
33721
+
33722
+
33723
+ 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.getPlatformAccentColor = getPlatformAccentColor; exports.getCurrentPlatform = getCurrentPlatform; 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.validateAccessCode = validateAccessCode; exports.consumeAccessCode = consumeAccessCode; exports.validateAndConsumeAccessCode = validateAndConsumeAccessCode; exports.useAccessCodeIntegration = useAccessCodeIntegration; 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.formatReleaseDate = formatReleaseDate; exports.formatRelativeTime = formatRelativeTime; exports.getDynamicIcon = getDynamicIcon; 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.ApprovalRequestMessage = ApprovalRequestMessage; exports.PulseDots = PulseDots; 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.SquareAvatar = SquareAvatar; 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.Textarea = Textarea; exports.ChatTypingIndicator = ChatTypingIndicator; exports.SlashCommandSuggestions = SlashCommandSuggestions; exports.ChatInput = ChatInput; exports.ToolExecutionDisplay = ToolExecutionDisplay; exports.remarkCardLinks = remarkCardLinks; exports.MemoizedChatMessageEnhanced = MemoizedChatMessageEnhanced; exports.ChatMessageListLoader = ChatMessageListLoader; exports.useDelayedFlag = useDelayedFlag; exports.ChatMessageList = ChatMessageList; exports.ChatQuickAction = ChatQuickAction; exports.ChatTicketItem = ChatTicketItem; exports.ChatTicketList = ChatTicketList; exports.HoverCard = HoverCard; exports.HoverCardTrigger = HoverCardTrigger; exports.HoverCardContent = HoverCardContent; exports.ModelDisplay = ModelDisplay; exports.DialogListItem = DialogListItem; exports.ChatSidebar = ChatSidebar; 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.MESSAGE_TYPE = MESSAGE_TYPE; exports.NETWORK_CONFIG = NETWORK_CONFIG; exports.useChunkCatchup = useChunkCatchup; 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.processHistoricalMessages = processHistoricalMessages; exports.extractErrorMessages = extractErrorMessages; exports.processHistoricalMessagesWithErrors = processHistoricalMessagesWithErrors; exports.extractIncompleteMessageState = extractIncompleteMessageState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; 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.badgeVariants = badgeVariants; exports.Badge = Badge; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.Progress = Progress; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.MediaGalleryManager = MediaGalleryManager; exports.MoreAboutButton = MoreAboutButton; exports.OrganizationIcon = OrganizationIcon; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.PlatformBadge = PlatformBadge; 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.extractYouTubeId = extractYouTubeId; exports.Video = Video2; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; 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.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.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.Switch = Switch; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.BoardColumnHeader = BoardColumnHeader; exports.tintOnDark = tintOnDark; exports.TicketCard = TicketCard; exports.TicketCardSkeleton = TicketCardSkeleton; exports.BoardColumn = BoardColumn; exports.useBoardCollapse = useBoardCollapse; exports.Board = Board; exports.columnFromTicketStatus = columnFromTicketStatus; exports.groupTicketsByStatus = groupTicketsByStatus; exports.Header = Header; 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.AnnouncementBar = AnnouncementBar; exports.VendorIcon = VendorIcon; exports.CategoriesCart = CategoriesCart; exports.CategoryCard = CategoryCard; exports.VendorDisplayButton = VendorDisplayButton; exports.setRealAuthHook = setRealAuthHook; exports.useAuth = useAuth; exports.AuthProvider = AuthProvider; exports.CommentCard = CommentCard; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.EmptyState = EmptyState2; exports.ChevronButton = ChevronButton; exports.FaqAccordion = FaqAccordion; exports.FilterChip = FilterChip; exports.SocialIconRow = SocialIconRow; exports.Footer = Footer; exports.useUnifiedFiltering = useUnifiedFiltering; exports.vendorFilterConfig = vendorFilterConfig; exports.blogFilterConfig = blogFilterConfig; exports.Pagination = Pagination; exports.PaginationContent = PaginationContent; exports.PaginationItem = PaginationItem; exports.PaginationLink = PaginationLink; exports.PaginationEllipsis = PaginationEllipsis; exports.PaginationPrevious = PaginationPrevious; exports.PaginationNext = PaginationNext; exports.UnifiedPagination = UnifiedPagination; exports.FooterWaitlistButton = FooterWaitlistButton; exports.HeroImageUploader = HeroImageUploader; exports.ResponsiveIconsBlock = ResponsiveIconsBlock; exports.Slider = Slider; exports.ImageCropper = ImageCropper; exports.MediaCarousel = MediaCarousel; exports.MetricValue = MetricValue; exports.MSPDisplay = MSPDisplay; exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.PersistentPagination = PersistentPagination; exports.usePaginationLoading = usePaginationLoading; exports.PersistentPaginationWrapper = PersistentPaginationWrapper; exports.PRICING_STYLES = PRICING_STYLES; exports.PricingDisplay = PricingDisplay; exports.formatPricingForDisplay = formatPricingForDisplay; exports.ResultsCount = ResultsCount; exports.VendorTag = VendorTag; exports.SelectionSourceBadge = SelectionSourceBadge; exports.UserDisplay = UserDisplay; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.VendorPageSkeleton = VendorPageSkeleton; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon3; exports.XCircleIcon = XCircleIcon; exports.YesNoDisplay = YesNoDisplay; exports.evaluateFeatureValue = evaluateFeatureValue; exports.MadeWithLove = MadeWithLove; exports.DateTimePicker = DateTimePicker; exports.InteractiveCard = InteractiveCard; exports.OnboardingStepCard = OnboardingStepCard; exports.OnboardingWalkthrough = OnboardingWalkthrough; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.ImageGalleryModal = ImageGalleryModal; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.DetailPageSkeleton = DetailPageSkeleton; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.ProgressBar = ProgressBar; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; 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.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.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.StatusIndicator = StatusIndicator; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.ListPageLayout = ListPageLayout; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.CircularProgress = CircularProgress; exports.FloatingTooltip = FloatingTooltip; exports.DashboardInfoCard = DashboardInfoCard; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.FeatureCardGrid = FeatureCardGrid; exports.FeatureList = FeatureList; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.MoreActionsMenu = MoreActionsMenu; exports.DropdownButton = DropdownButton; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; 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.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.TableEmptyState = TableEmptyState; 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.TicketKnowledgeBaseList = TicketKnowledgeBaseList; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.LOG_SEVERITY_COLORS = LOG_SEVERITY_COLORS; exports.LOG_SEVERITY_LABELS = LOG_SEVERITY_LABELS; exports.LogSeverityDot = LogSeverityDot; exports.LogsList = LogsList; exports.AVAILABLE_SVG_ICONS = AVAILABLE_SVG_ICONS; exports.releaseTypeOptions = releaseTypeOptions; exports.releaseStatusOptions = releaseStatusOptions; exports.changelogLabels = changelogLabels; exports.SEMVER_REGEX = SEMVER_REGEX; exports.TMCG_ROLES = TMCG_ROLES; exports.TMCG_ROLE_DISPLAY_NAMES = TMCG_ROLE_DISPLAY_NAMES; exports.TMCG_SOCIAL_PLATFORMS = TMCG_SOCIAL_PLATFORMS; exports.assets = assets;
33724
+ //# sourceMappingURL=chunk-JFGORTXV.cjs.map