@flamingo-stack/openframe-frontend-core 0.0.704 → 0.0.705-snapshot.20261006160157

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 (212) hide show
  1. package/dist/{chunk-7LFIKJX2.js → chunk-3EZ4HHAP.js} +3 -3
  2. package/dist/{chunk-I7DFUQMN.js → chunk-3NCM4ZQB.js} +17 -18
  3. package/dist/{chunk-4DQMTBMK.cjs → chunk-3PLDQDE6.cjs} +15 -15
  4. package/dist/{chunk-VTASHWER.js → chunk-4CJMQLB5.js} +4 -4
  5. package/dist/{chunk-VR2ZLFCP.js → chunk-4IBPRIQH.js} +1 -1
  6. package/dist/{chunk-ZQFZSFQI.js → chunk-4ILM7W2R.js} +2 -2
  7. package/dist/{chunk-FXENTYE5.js → chunk-6232S532.js} +3 -3
  8. package/dist/{chunk-MMOODW57.cjs → chunk-6NTPY5QA.cjs} +1887 -94
  9. package/dist/{chunk-2JDVL7UV.js → chunk-7GEBFJT2.js} +1829 -3447
  10. package/dist/{chunk-LDPEQGKT.cjs → chunk-7OFPU7WE.cjs} +942 -2560
  11. package/dist/{chunk-L3IC42IF.cjs → chunk-7SCNMP2B.cjs} +57 -58
  12. package/dist/{chunk-2G546OND.js → chunk-BHI6GVC4.js} +1094 -693
  13. package/dist/{chunk-MP2C3LJ4.js → chunk-CUME3VTQ.js} +1 -1
  14. package/dist/{chunk-WUJNYGO2.js → chunk-CZ7Y7UG4.js} +4 -76
  15. package/dist/{chunk-7JIL3WOH.cjs → chunk-DDVBX42E.cjs} +21 -21
  16. package/dist/{chunk-6WQIUQUC.js → chunk-DWPAAWMR.js} +6 -6
  17. package/dist/{chunk-MFFCUVWG.js → chunk-F57ECE2I.js} +1 -1
  18. package/dist/{chunk-CH5232HV.js → chunk-FI6GMDO7.js} +2455 -662
  19. package/dist/{chunk-NDESEPW5.js → chunk-FXJ3WWUB.js} +68 -0
  20. package/dist/{chunk-4KGXLVCF.js → chunk-G6UMNAVI.js} +57 -61
  21. package/dist/{chunk-LTSTC3N5.cjs → chunk-GWQEYPYM.cjs} +728 -732
  22. package/dist/{chunk-N3TO7JV3.cjs → chunk-HZ7CBXPL.cjs} +89 -89
  23. package/dist/{chunk-XATTBO5X.js → chunk-IKJA3Y7Z.js} +2 -2
  24. package/dist/{chunk-5HBHO5TB.js → chunk-JPG7OHEG.js} +1 -1
  25. package/dist/{chunk-AMYY3PNL.cjs → chunk-K6O43WDL.cjs} +46 -46
  26. package/dist/{chunk-IHU5ANUY.js → chunk-KUC673HM.js} +383 -142
  27. package/dist/{chunk-X72J4ACL.cjs → chunk-LLSUVPQC.cjs} +252 -8
  28. package/dist/{chunk-RKV5B7EU.cjs → chunk-LM7TXMLU.cjs} +72 -4
  29. package/dist/{chunk-XJKZ4IKT.cjs → chunk-LVSFKENJ.cjs} +4 -4
  30. package/dist/{chunk-IZGDG5X6.cjs → chunk-M75XEEGT.cjs} +940 -539
  31. package/dist/{chunk-UK62YTH6.cjs → chunk-MB4PNY7C.cjs} +6 -6
  32. package/dist/{chunk-2YXVWZVF.js → chunk-N45D4ZXQ.js} +959 -715
  33. package/dist/{chunk-Z2VNQQ74.js → chunk-NCPTID44.js} +978 -942
  34. package/dist/{chunk-JEYRXT5L.js → chunk-O2RSAA5M.js} +11 -11
  35. package/dist/{chunk-ABU3TGXA.cjs → chunk-OF6GEI5A.cjs} +3 -3
  36. package/dist/{chunk-OHFS7VOU.cjs → chunk-PLYEKV3N.cjs} +2 -2
  37. package/dist/{chunk-5QJDM6UV.js → chunk-PXOQIA5K.js} +5 -5
  38. package/dist/{chunk-VHCACDKP.cjs → chunk-RQRX4YC3.cjs} +39 -39
  39. package/dist/{chunk-HFJW24JJ.cjs → chunk-RTIPR53L.cjs} +104 -104
  40. package/dist/{chunk-262YQFOS.cjs → chunk-SEKYEWQG.cjs} +26 -26
  41. package/dist/{chunk-SYXQLETR.cjs → chunk-STHZBOQI.cjs} +17 -17
  42. package/dist/{chunk-MI3JUJ75.cjs → chunk-SW5ZV2BN.cjs} +34 -34
  43. package/dist/{chunk-QVSFBSWV.js → chunk-T5TMCHWM.js} +9 -9
  44. package/dist/{chunk-ERCV6HHJ.js → chunk-TE773HEH.js} +10 -10
  45. package/dist/{chunk-C7XGRLT5.cjs → chunk-TQ4LB2DS.cjs} +14 -14
  46. package/dist/{chunk-XOYH2YQE.cjs → chunk-UDFRUKLC.cjs} +2 -2
  47. package/dist/{chunk-XIFOBQRQ.cjs → chunk-UJ33ZXDT.cjs} +6 -6
  48. package/dist/{chunk-C3BWIU7R.cjs → chunk-UVTD52MD.cjs} +14 -86
  49. package/dist/{chunk-N3COXDBH.cjs → chunk-VX4E6YSB.cjs} +41 -5
  50. package/dist/{chunk-HJAYVKWQ.js → chunk-VZICIQW2.js} +15 -15
  51. package/dist/{chunk-MGGGBHYD.cjs → chunk-WCVZCGK5.cjs} +312 -71
  52. package/dist/{chunk-6XIF2Z7I.js → chunk-WMX26HB5.js} +3 -3
  53. package/dist/{chunk-D7BTSVMS.cjs → chunk-Y2GSOUCS.cjs} +2 -2
  54. package/dist/{chunk-NRLJUBCS.js → chunk-YGJKKDDM.js} +6 -6
  55. package/dist/components/case-studies/index.cjs +30 -32
  56. package/dist/components/case-studies/index.js +14 -16
  57. package/dist/components/chat/chat-input.d.ts.map +1 -1
  58. package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
  59. package/dist/components/chat/embeddable-chat.d.ts +8 -0
  60. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  61. package/dist/components/chat/entity-cards/case-study-card.d.ts +11 -4
  62. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  63. package/dist/components/chat/index.cjs +11 -11
  64. package/dist/components/chat/index.d.ts +1 -1
  65. package/dist/components/chat/index.d.ts.map +1 -1
  66. package/dist/components/chat/index.js +16 -16
  67. package/dist/components/chat/mingo-chat-rail.d.ts +3 -1
  68. package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
  69. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  70. package/dist/components/contact/index.cjs +12 -14
  71. package/dist/components/contact/index.js +11 -13
  72. package/dist/components/docs/index.cjs +15 -17
  73. package/dist/components/docs/index.js +14 -16
  74. package/dist/components/embeds/index.cjs +12 -14
  75. package/dist/components/embeds/index.js +11 -13
  76. package/dist/components/faq/index.cjs +13 -15
  77. package/dist/components/faq/index.js +12 -14
  78. package/dist/components/features/index.cjs +12 -14
  79. package/dist/components/features/index.js +21 -23
  80. package/dist/components/help-center-pages/index.cjs +118 -120
  81. package/dist/components/help-center-pages/index.js +33 -35
  82. package/dist/components/icons/index.cjs +3 -5
  83. package/dist/components/icons/index.js +9 -11
  84. package/dist/components/icons-v2-generated/index.cjs +3 -5
  85. package/dist/components/icons-v2-generated/index.js +2 -4
  86. package/dist/components/index.cjs +89 -158
  87. package/dist/components/index.d.ts +0 -2
  88. package/dist/components/index.d.ts.map +1 -1
  89. package/dist/components/index.js +333 -402
  90. package/dist/components/loading/page-layout-skeleton.d.ts +1 -1
  91. package/dist/components/meeting-scheduler/index.cjs +62 -64
  92. package/dist/components/meeting-scheduler/index.js +12 -14
  93. package/dist/components/navigation/app-layout-side-panel.d.ts +18 -1
  94. package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -1
  95. package/dist/components/navigation/index.cjs +30 -16
  96. package/dist/components/navigation/index.d.ts +15 -10
  97. package/dist/components/navigation/index.d.ts.map +1 -1
  98. package/dist/components/navigation/index.js +40 -26
  99. package/dist/components/navigation/mingo-ai-button.d.ts +38 -3
  100. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  101. package/dist/components/navigation/mobile-nav-sheet-id.d.ts +3 -0
  102. package/dist/components/navigation/mobile-nav-sheet-id.d.ts.map +1 -0
  103. package/dist/components/navigation/mobile-nav-sheet.d.ts +48 -0
  104. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -0
  105. package/dist/components/navigation/nav-item-row.d.ts +27 -0
  106. package/dist/components/navigation/nav-item-row.d.ts.map +1 -0
  107. package/dist/components/navigation/nav-panel.d.ts +43 -0
  108. package/dist/components/navigation/nav-panel.d.ts.map +1 -0
  109. package/dist/components/navigation/navigation-sidebar-item.d.ts +1 -2
  110. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  111. package/dist/components/navigation/site-footer.d.ts +28 -0
  112. package/dist/components/navigation/site-footer.d.ts.map +1 -0
  113. package/dist/components/navigation/site-header.d.ts +61 -0
  114. package/dist/components/navigation/site-header.d.ts.map +1 -0
  115. package/dist/components/navigation/site-nav-link.d.ts +26 -0
  116. package/dist/components/navigation/site-nav-link.d.ts.map +1 -0
  117. package/dist/components/navigation/top-navigation.d.ts +2 -2
  118. package/dist/components/navigation/top-navigation.d.ts.map +1 -1
  119. package/dist/components/onboarding-guides/index.cjs +15 -17
  120. package/dist/components/onboarding-guides/index.js +14 -16
  121. package/dist/components/related-content/index.cjs +10 -8
  122. package/dist/components/related-content/index.js +9 -7
  123. package/dist/components/tickets/index.cjs +16 -18
  124. package/dist/components/tickets/index.js +15 -17
  125. package/dist/components/ui/index.cjs +14 -14
  126. package/dist/components/ui/index.js +19 -19
  127. package/dist/hooks/index.cjs +19 -11
  128. package/dist/hooks/index.d.ts +1 -0
  129. package/dist/hooks/index.d.ts.map +1 -1
  130. package/dist/hooks/index.js +19 -11
  131. package/dist/hooks/ui/index.d.ts +3 -0
  132. package/dist/hooks/ui/index.d.ts.map +1 -1
  133. package/dist/hooks/ui/use-active-section.d.ts +10 -0
  134. package/dist/hooks/ui/use-active-section.d.ts.map +1 -0
  135. package/dist/hooks/ui/use-nav-menus.d.ts +48 -0
  136. package/dist/hooks/ui/use-nav-menus.d.ts.map +1 -0
  137. package/dist/hooks/ui/use-visitor-os.d.ts +15 -0
  138. package/dist/hooks/ui/use-visitor-os.d.ts.map +1 -0
  139. package/dist/hooks/use-location-hash.d.ts +9 -0
  140. package/dist/hooks/use-location-hash.d.ts.map +1 -0
  141. package/dist/index.cjs +58 -21
  142. package/dist/index.js +233 -196
  143. package/dist/types/case-study.d.ts +9 -0
  144. package/dist/types/case-study.d.ts.map +1 -1
  145. package/dist/types/navigation.d.ts +95 -65
  146. package/dist/types/navigation.d.ts.map +1 -1
  147. package/dist/utils/index.cjs +55 -0
  148. package/dist/utils/index.d.ts +1 -0
  149. package/dist/utils/index.d.ts.map +1 -1
  150. package/dist/utils/index.js +50 -1
  151. package/dist/utils/source-icons.d.ts.map +1 -1
  152. package/dist/utils/visitor-os.d.ts +45 -0
  153. package/dist/utils/visitor-os.d.ts.map +1 -0
  154. package/package.json +1 -1
  155. package/src/components/chat/chat-input.tsx +5 -1
  156. package/src/components/chat/chat-message-enhanced.tsx +4 -3
  157. package/src/components/chat/embeddable-chat.tsx +64 -6
  158. package/src/components/chat/entity-cards/case-study-card.tsx +115 -5
  159. package/src/components/chat/index.ts +1 -0
  160. package/src/components/chat/mingo-chat-rail.tsx +24 -7
  161. package/src/components/chat/utils/icon-library.tsx +35 -1
  162. package/src/components/index.ts +0 -2
  163. package/src/components/loading/page-layout-skeleton.tsx +1 -1
  164. package/src/components/navigation/app-layout-side-panel.tsx +30 -2
  165. package/src/components/navigation/index.ts +22 -14
  166. package/src/components/navigation/mingo-ai-button.tsx +139 -63
  167. package/src/components/navigation/mobile-nav-sheet-id.ts +2 -0
  168. package/src/components/navigation/mobile-nav-sheet.tsx +241 -0
  169. package/src/components/navigation/nav-item-row.tsx +129 -0
  170. package/src/components/navigation/nav-panel.tsx +196 -0
  171. package/src/components/navigation/navigation-sidebar-item.tsx +1 -2
  172. package/src/components/navigation/site-footer.tsx +256 -0
  173. package/src/components/navigation/site-header.tsx +339 -0
  174. package/src/components/navigation/site-nav-link.tsx +41 -0
  175. package/src/components/navigation/ticket-alerts-button.tsx +2 -2
  176. package/src/components/navigation/top-navigation.tsx +2 -2
  177. package/src/components/platform/SoftwareSourceBadge.tsx +1 -1
  178. package/src/hooks/index.ts +1 -0
  179. package/src/hooks/ui/index.ts +3 -0
  180. package/src/hooks/ui/use-active-section.ts +44 -0
  181. package/src/hooks/ui/use-nav-menus.ts +200 -0
  182. package/src/hooks/ui/use-visitor-os.ts +33 -0
  183. package/src/hooks/use-location-hash.ts +34 -0
  184. package/src/styles/app-globals.css +13 -0
  185. package/src/styles/chat-animations.css +57 -2
  186. package/src/types/case-study.ts +16 -0
  187. package/src/types/navigation.ts +80 -66
  188. package/src/utils/index.ts +1 -0
  189. package/src/utils/source-icons.ts +13 -0
  190. package/src/utils/visitor-os.ts +84 -0
  191. package/dist/chunk-LMBC5FFP.js +0 -43
  192. package/dist/chunk-O43V3EOS.js +0 -252
  193. package/dist/chunk-QZVSJF2K.cjs +0 -252
  194. package/dist/chunk-RALRPFDW.cjs +0 -43
  195. package/dist/components/footer-waitlist-button.d.ts +0 -29
  196. package/dist/components/footer-waitlist-button.d.ts.map +0 -1
  197. package/dist/components/footer.d.ts +0 -47
  198. package/dist/components/footer.d.ts.map +0 -1
  199. package/dist/components/navigation/client-only-header.d.ts +0 -8
  200. package/dist/components/navigation/client-only-header.d.ts.map +0 -1
  201. package/dist/components/navigation/header-skeleton.d.ts +0 -12
  202. package/dist/components/navigation/header-skeleton.d.ts.map +0 -1
  203. package/dist/components/navigation/header.d.ts +0 -9
  204. package/dist/components/navigation/header.d.ts.map +0 -1
  205. package/dist/components/navigation/mobile-nav-panel.d.ts +0 -10
  206. package/dist/components/navigation/mobile-nav-panel.d.ts.map +0 -1
  207. package/src/components/footer-waitlist-button.tsx +0 -53
  208. package/src/components/footer.tsx +0 -195
  209. package/src/components/navigation/client-only-header.tsx +0 -22
  210. package/src/components/navigation/header-skeleton.tsx +0 -74
  211. package/src/components/navigation/header.tsx +0 -429
  212. package/src/components/navigation/mobile-nav-panel.tsx +0 -155
@@ -3,29 +3,70 @@ import {
3
3
  next_image_default
4
4
  } from "./chunk-FBZMAPWO.js";
5
5
  import {
6
+ NEAR_VIEWPORT_ROOT_MARGIN,
6
7
  ViewportBreakpoints,
7
8
  getPlatformBrandClasses,
9
+ platformAccentVarName,
10
+ useAuthedAssetSrc,
8
11
  useAuthedImageSrc,
9
12
  useImageEdgeColor,
10
13
  useIsTruncated,
14
+ useNearViewport,
11
15
  useOgPlaceholderUrl
12
- } from "./chunk-NDESEPW5.js";
16
+ } from "./chunk-FXJ3WWUB.js";
13
17
  import {
18
+ ClickUpIcon,
19
+ FacebookIcon,
14
20
  FigmaIcon,
21
+ FlamingoLogo,
22
+ GitHubIcon,
23
+ HubspotIcon,
15
24
  ImageIcon,
25
+ InstagramIcon,
26
+ LinkedInIcon,
16
27
  MiamiCyberGangLogoFaceOnly,
28
+ MingoIcon,
29
+ MlgLogo,
17
30
  OpenFrameLogo,
31
+ OpenmspLogo,
18
32
  PlayFilledIcon,
33
+ SlackIcon,
19
34
  ThumbsDownIcon,
20
35
  ThumbsUpIcon,
21
- VolumeOffFilledIcon
22
- } from "./chunk-O43V3EOS.js";
36
+ VolumeOffFilledIcon,
37
+ WhatsAppIcon,
38
+ XLogo,
39
+ YouTubeIcon
40
+ } from "./chunk-N45D4ZXQ.js";
23
41
  import {
24
- XmarkCircleIcon
25
- } from "./chunk-LMBC5FFP.js";
42
+ BookIcon,
43
+ BracketCurlyIcon,
44
+ BriefcaseIcon,
45
+ BugIcon,
46
+ CalendarIcon,
47
+ ChatsIcon,
48
+ ClickupLogoGreyIcon,
49
+ CompassIcon,
50
+ FileIcon,
51
+ GithubIcon,
52
+ GraduationCapIcon,
53
+ HeadphoneIcon,
54
+ HubspotLogoGreyIcon,
55
+ LayersIcon,
56
+ NewspaperIcon,
57
+ Rocket02Icon,
58
+ SlackLogoGreyIcon,
59
+ TicketIcon,
60
+ VideoRecorderIcon,
61
+ XmarkCircleIcon,
62
+ icons_v2_generated_exports
63
+ } from "./chunk-NCPTID44.js";
26
64
  import {
27
65
  useChatRuntime
28
66
  } from "./chunk-E4ABZWTJ.js";
67
+ import {
68
+ SearchIcon
69
+ } from "./chunk-INS7KZJB.js";
29
70
  import {
30
71
  Button
31
72
  } from "./chunk-YDPKUAP4.js";
@@ -1170,6 +1211,90 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
1170
1211
  ] }) });
1171
1212
  }
1172
1213
 
1214
+ // src/utils/fetch-priority.ts
1215
+ import React2 from "react";
1216
+ var REACT_MAJOR = parseInt((React2.version || "0").split(".")[0], 10);
1217
+ var USE_CAMEL_CASE_FETCH_PRIORITY = REACT_MAJOR >= 19;
1218
+ function fetchPriorityProp(priority) {
1219
+ const value = priority === void 0 ? "auto" : typeof priority === "boolean" ? priority ? "high" : "low" : priority;
1220
+ return USE_CAMEL_CASE_FETCH_PRIORITY ? { fetchPriority: value } : { fetchpriority: value };
1221
+ }
1222
+
1223
+ // src/components/features/mux-origins.ts
1224
+ var MUX_STREAM_ORIGIN = "https://stream.mux.com";
1225
+ var MUX_IMAGE_ORIGIN = "https://image.mux.com";
1226
+ function toMuxPreviewUrl(url, maxResolution = "720p") {
1227
+ let parsed;
1228
+ try {
1229
+ parsed = new URL(url);
1230
+ } catch {
1231
+ return url;
1232
+ }
1233
+ if (parsed.origin !== MUX_STREAM_ORIGIN) return url;
1234
+ if (!parsed.pathname.endsWith(".m3u8")) return url;
1235
+ if (parsed.searchParams.has("token")) return url;
1236
+ parsed.searchParams.set("max_resolution", maxResolution);
1237
+ return parsed.toString();
1238
+ }
1239
+
1240
+ // src/components/features/use-video-warmup.ts
1241
+ import { useEffect as useEffect3 } from "react";
1242
+ import ReactDOM from "react-dom";
1243
+ function saveDataEnabled() {
1244
+ if (typeof navigator === "undefined") return false;
1245
+ const conn = navigator.connection;
1246
+ return conn?.saveData === true;
1247
+ }
1248
+ function useVideoOriginPreconnect({ supabaseStorageOrigin } = {}) {
1249
+ const runtime = useChatRuntime();
1250
+ const resolvedOrigin = supabaseStorageOrigin ?? runtime?.endpoints.supabaseStorageOrigin;
1251
+ try {
1252
+ ReactDOM.preconnect(MUX_STREAM_ORIGIN, { crossOrigin: "anonymous" });
1253
+ ReactDOM.preconnect(MUX_IMAGE_ORIGIN, { crossOrigin: "anonymous" });
1254
+ if (resolvedOrigin) {
1255
+ ReactDOM.preconnect(resolvedOrigin, { crossOrigin: "anonymous" });
1256
+ }
1257
+ } catch (err) {
1258
+ if (process.env.NODE_ENV !== "production") {
1259
+ console.warn("[useVideoOriginPreconnect] preconnect failed:", err);
1260
+ }
1261
+ }
1262
+ }
1263
+ function useVideoWarmup({
1264
+ videoUrl,
1265
+ supabaseStorageOrigin,
1266
+ nearMargin = "1000px"
1267
+ } = {}) {
1268
+ const runtime = useChatRuntime();
1269
+ const resolvedOrigin = supabaseStorageOrigin ?? runtime?.endpoints.supabaseStorageOrigin;
1270
+ useVideoOriginPreconnect({ supabaseStorageOrigin: resolvedOrigin });
1271
+ const { ref, isNear } = useNearViewport(nearMargin);
1272
+ useEffect3(() => {
1273
+ if (!isNear || !videoUrl || !resolvedOrigin) return void 0;
1274
+ if (saveDataEnabled()) return void 0;
1275
+ let videoOrigin;
1276
+ try {
1277
+ videoOrigin = new URL(videoUrl, "http://placeholder.local").origin;
1278
+ } catch {
1279
+ return void 0;
1280
+ }
1281
+ if (videoOrigin !== resolvedOrigin) return void 0;
1282
+ const link = document.createElement("link");
1283
+ link.rel = "preload";
1284
+ link.as = "video";
1285
+ link.href = videoUrl;
1286
+ link.crossOrigin = "anonymous";
1287
+ if ("fetchPriority" in link) {
1288
+ link.fetchPriority = "low";
1289
+ }
1290
+ document.head.appendChild(link);
1291
+ return () => {
1292
+ link.remove();
1293
+ };
1294
+ }, [isNear, videoUrl, resolvedOrigin]);
1295
+ return { ref, isNear };
1296
+ }
1297
+
1173
1298
  // src/components/features/video-center-badge.tsx
1174
1299
  import { jsx as jsx8 } from "react/jsx-runtime";
1175
1300
  var SIZES = {
@@ -1226,9 +1351,926 @@ function VideoUnmuteGlyph({ size: size2 = "md", className }) {
1226
1351
  );
1227
1352
  }
1228
1353
 
1354
+ // src/components/features/video.tsx
1355
+ import MuxPlayer from "@mux/mux-player-react";
1356
+ import { useCallback as useCallback2, useEffect as useEffect5, useImperativeHandle, useMemo as useMemo2, useRef as useRef2, useState as useState3 } from "react";
1357
+
1358
+ // src/components/features/use-ios-native-video-fullscreen.ts
1359
+ import { useEffect as useEffect4 } from "react";
1360
+ var ENTER_FULLSCREEN_REQUEST = "mediaenterfullscreenrequest";
1361
+ function isIosAppShell() {
1362
+ const capacitor = globalThis.Capacitor;
1363
+ return capacitor?.isNativePlatform?.() === true && capacitor.getPlatform?.() === "ios";
1364
+ }
1365
+ function nativeVideoElement(player) {
1366
+ const media = player.media;
1367
+ const element = media?.nativeEl ?? media;
1368
+ return element instanceof HTMLVideoElement ? element : null;
1369
+ }
1370
+ function useIosNativeVideoFullscreen(playerRef) {
1371
+ useEffect4(() => {
1372
+ if (!isIosAppShell()) return void 0;
1373
+ const player = playerRef.current;
1374
+ if (!(player instanceof EventTarget)) return void 0;
1375
+ const takeOver = (event) => {
1376
+ const video = nativeVideoElement(player);
1377
+ if (!video?.webkitSupportsFullscreen || typeof video.webkitEnterFullscreen !== "function") return;
1378
+ event.stopImmediatePropagation();
1379
+ video.webkitEnterFullscreen();
1380
+ };
1381
+ player.addEventListener(ENTER_FULLSCREEN_REQUEST, takeOver, true);
1382
+ return () => player.removeEventListener(ENTER_FULLSCREEN_REQUEST, takeOver, true);
1383
+ }, [playerRef]);
1384
+ }
1385
+
1386
+ // src/components/features/video.tsx
1387
+ import { jsx as jsx9, jsxs as jsxs7 } from "react/jsx-runtime";
1388
+ function videoPerfDebugEnabled() {
1389
+ if (process.env.NODE_ENV !== "production") return true;
1390
+ try {
1391
+ return typeof localStorage !== "undefined" && localStorage.getItem("VIDEO_PERF_DEBUG") !== null;
1392
+ } catch {
1393
+ return false;
1394
+ }
1395
+ }
1396
+ var MUX_VIEWER_ID_KEY = "mux:viewer_id";
1397
+ function muxViewerId() {
1398
+ try {
1399
+ if (typeof localStorage === "undefined") return void 0;
1400
+ const existing = localStorage.getItem(MUX_VIEWER_ID_KEY);
1401
+ if (existing) return existing;
1402
+ const generated = typeof crypto !== "undefined" && typeof crypto.randomUUID === "function" ? crypto.randomUUID() : `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
1403
+ localStorage.setItem(MUX_VIEWER_ID_KEY, generated);
1404
+ return generated;
1405
+ } catch {
1406
+ return void 0;
1407
+ }
1408
+ }
1409
+ if (typeof document !== "undefined") {
1410
+ try {
1411
+ document.cookie = "muxData=; path=/; max-age=0";
1412
+ } catch {
1413
+ }
1414
+ }
1415
+ if (typeof window !== "undefined") {
1416
+ const w = window;
1417
+ if (!w.chrome?.cast) {
1418
+ w.chrome = { ...w.chrome ?? {}, cast: { isAvailable: false } };
1419
+ }
1420
+ }
1421
+ if (typeof window !== "undefined" && typeof console !== "undefined") {
1422
+ const w = window;
1423
+ if (!w.__MEDIA_CHROME_WARN_PATCHED__) {
1424
+ w.__MEDIA_CHROME_WARN_PATCHED__ = true;
1425
+ const MEDIA_CHROME_NO_STYLESHEET_PREFIX = "Media Chrome: No style sheet found on style tag of";
1426
+ const originalWarn = console.warn.bind(console);
1427
+ console.warn = (...args) => {
1428
+ if (typeof args[0] === "string" && args[0].startsWith(MEDIA_CHROME_NO_STYLESHEET_PREFIX)) {
1429
+ return;
1430
+ }
1431
+ originalWarn(...args);
1432
+ };
1433
+ }
1434
+ }
1435
+ var userHasInteracted = false;
1436
+ var activationWaiters = /* @__PURE__ */ new Set();
1437
+ if (typeof window !== "undefined") {
1438
+ const w = window;
1439
+ if (!w.__VIDEO_ACTIVATION_TRACKED__) {
1440
+ w.__VIDEO_ACTIVATION_TRACKED__ = true;
1441
+ const markActivated = () => {
1442
+ userHasInteracted = true;
1443
+ activationWaiters.forEach((fn) => {
1444
+ try {
1445
+ fn();
1446
+ } catch {
1447
+ }
1448
+ });
1449
+ activationWaiters.clear();
1450
+ window.removeEventListener("pointerdown", markActivated, true);
1451
+ window.removeEventListener("keydown", markActivated, true);
1452
+ };
1453
+ window.addEventListener("pointerdown", markActivated, true);
1454
+ window.addEventListener("keydown", markActivated, true);
1455
+ }
1456
+ }
1457
+ var YT_HOSTS = /* @__PURE__ */ new Set([
1458
+ "youtube.com",
1459
+ "www.youtube.com",
1460
+ "m.youtube.com",
1461
+ "youtu.be",
1462
+ "youtube-nocookie.com",
1463
+ "www.youtube-nocookie.com"
1464
+ ]);
1465
+ function isYouTubeUrl(url) {
1466
+ try {
1467
+ return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
1468
+ } catch {
1469
+ return false;
1470
+ }
1471
+ }
1472
+ var YT_PATH_RE = /^\/(?:embed|v|shorts)\/([^/]+)\/?$/;
1473
+ var BARE_YT_ID_RE = /^[A-Za-z0-9_-]{11}$/;
1474
+ function extractYouTubeId(url) {
1475
+ if (!url) return null;
1476
+ if (BARE_YT_ID_RE.test(url)) return url;
1477
+ let u;
1478
+ try {
1479
+ u = new URL(url, "http://placeholder.local");
1480
+ } catch {
1481
+ return null;
1482
+ }
1483
+ if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
1484
+ if (u.hostname.toLowerCase().endsWith("youtu.be")) {
1485
+ return u.pathname.split("/").filter(Boolean)[0] ?? null;
1486
+ }
1487
+ const v = u.searchParams.get("v");
1488
+ if (v) return v;
1489
+ const m = u.pathname.match(YT_PATH_RE);
1490
+ return m ? m[1] : null;
1491
+ }
1492
+ var VIDEO_PLAYBACK_FAILED_EVENT = "flamingo:video-playback-failed";
1493
+ function reportPlaybackFailure(detail) {
1494
+ if (typeof window === "undefined") return;
1495
+ try {
1496
+ window.dispatchEvent(new CustomEvent(VIDEO_PLAYBACK_FAILED_EVENT, { detail }));
1497
+ } catch {
1498
+ }
1499
+ }
1500
+ var VIDEO_STALL_TIMEOUT_MS = 15e3;
1501
+ function VideoErrorOverlay({
1502
+ onRetry,
1503
+ watchOnYouTubeId
1504
+ }) {
1505
+ return /* @__PURE__ */ jsxs7("div", { className: "absolute inset-0 z-10 flex flex-col items-center justify-center gap-[var(--spacing-system-sf)] bg-ods-overlay p-[var(--spacing-system-lf)] text-center", children: [
1506
+ /* @__PURE__ */ jsx9("p", { className: "text-ods-text-secondary text-h6", children: "This video failed to play." }),
1507
+ /* @__PURE__ */ jsxs7("div", { className: "flex items-center gap-[var(--spacing-system-sf)]", children: [
1508
+ /* @__PURE__ */ jsx9(Button, { variant: "outline", size: "small", onClick: onRetry, children: "Try again" }),
1509
+ watchOnYouTubeId ? /* @__PURE__ */ jsx9(
1510
+ Button,
1511
+ {
1512
+ variant: "transparent",
1513
+ size: "small",
1514
+ href: `https://www.youtube.com/watch?v=${watchOnYouTubeId}`,
1515
+ openInNewTab: true,
1516
+ children: "Watch on YouTube"
1517
+ }
1518
+ ) : null
1519
+ ] })
1520
+ ] });
1521
+ }
1522
+ var VIDEO_FILE_PLAYBACK_KEYS = [
1523
+ "srtContent",
1524
+ "captionsUrl",
1525
+ "autoPlay",
1526
+ "loop",
1527
+ "chromeless",
1528
+ "playOnHover",
1529
+ "playWhenHovered",
1530
+ "preload",
1531
+ "fit",
1532
+ "startTime",
1533
+ "playerHandleRef",
1534
+ "autoPlayUnmuted",
1535
+ "startMuted",
1536
+ "mutedIntent",
1537
+ "hideMutedBadge",
1538
+ "onMutedFallbackChange",
1539
+ "onEnded"
1540
+ ];
1541
+ function pickForwardedKeys(props, keys) {
1542
+ const out = {};
1543
+ for (const k of keys) {
1544
+ if (k in props) out[k] = props[k];
1545
+ }
1546
+ return out;
1547
+ }
1548
+ var pickFilePlayback = (props) => pickForwardedKeys(props, VIDEO_FILE_PLAYBACK_KEYS);
1549
+ var VIDEO_YOUTUBE_FACADE_KEYS = [
1550
+ "autoActivate",
1551
+ "suspended"
1552
+ ];
1553
+ var pickYouTube = (props) => pickForwardedKeys(props, VIDEO_YOUTUBE_FACADE_KEYS);
1554
+ function Video(props) {
1555
+ const { ref: nearRef, isNear } = useNearViewport();
1556
+ const url = props.url;
1557
+ if (!url) return null;
1558
+ const effectiveKind = resolveKind(props, url);
1559
+ const layout = props.layout ?? "native";
1560
+ if (props.lazy && !isNear) {
1561
+ return wrapWithLayout(
1562
+ /* @__PURE__ */ jsx9(
1563
+ "div",
1564
+ {
1565
+ ref: nearRef,
1566
+ className: props.className,
1567
+ style: props.poster ? { backgroundImage: `url(${props.poster})`, backgroundSize: "cover", backgroundPosition: "center" } : void 0,
1568
+ "aria-hidden": "true"
1569
+ }
1570
+ ),
1571
+ layout
1572
+ );
1573
+ }
1574
+ const inner = effectiveKind === "youtube" ? /* @__PURE__ */ jsx9(
1575
+ YouTubeFacade,
1576
+ {
1577
+ url,
1578
+ title: props.title,
1579
+ priority: props.priority,
1580
+ className: props.className,
1581
+ minimalControls: props.minimalControls,
1582
+ muted: props.muted,
1583
+ ...pickYouTube(props)
1584
+ }
1585
+ ) : "firstFrameOnly" in props && props.firstFrameOnly ? /* @__PURE__ */ jsx9(
1586
+ FirstFramePreview,
1587
+ {
1588
+ url,
1589
+ poster: props.poster,
1590
+ fit: "fit" in props ? props.fit : void 0,
1591
+ className: props.className
1592
+ }
1593
+ ) : /* @__PURE__ */ jsx9(
1594
+ FilePlayer,
1595
+ {
1596
+ url,
1597
+ poster: props.poster,
1598
+ muted: props.muted,
1599
+ ...pickFilePlayback(props),
1600
+ className: props.className
1601
+ }
1602
+ );
1603
+ return wrapWithLayout(inner, layout);
1604
+ }
1605
+ function resolveKind(props, url) {
1606
+ if ("kind" in props) {
1607
+ if (props.kind === "youtube") return "youtube";
1608
+ if (props.kind === "file") return "file";
1609
+ }
1610
+ if (BARE_YT_ID_RE.test(url)) return "youtube";
1611
+ return isYouTubeUrl(url) ? "youtube" : "file";
1612
+ }
1613
+ function wrapWithLayout(inner, layout) {
1614
+ switch (layout) {
1615
+ case "centered":
1616
+ return /* @__PURE__ */ jsx9("div", { className: "flex w-full justify-center", children: /* @__PURE__ */ jsx9("div", { className: "aspect-video w-full max-w-3xl overflow-hidden rounded-lg border border-ods-border", children: inner }) });
1617
+ case "fill":
1618
+ return /* @__PURE__ */ jsx9("div", { className: "absolute inset-0 h-full w-full", children: inner });
1619
+ case "wide":
1620
+ return /* @__PURE__ */ jsx9("div", { className: "aspect-video w-full overflow-hidden rounded-lg bg-ods-bg", children: inner });
1621
+ case "native":
1622
+ default:
1623
+ return inner;
1624
+ }
1625
+ }
1626
+ function FirstFramePreview({
1627
+ url,
1628
+ poster,
1629
+ fit,
1630
+ className
1631
+ }) {
1632
+ return /* @__PURE__ */ jsx9(
1633
+ "div",
1634
+ {
1635
+ "aria-hidden": true,
1636
+ className: "h-full w-full",
1637
+ style: { "--media-background-color": "transparent" },
1638
+ children: /* @__PURE__ */ jsx9(FilePlayer, { url: `${url}#t=0.1`, poster, fit, muted: true, chromeless: true, className })
1639
+ }
1640
+ );
1641
+ }
1642
+ function FilePlayer({
1643
+ url,
1644
+ poster,
1645
+ muted,
1646
+ srtContent,
1647
+ captionsUrl,
1648
+ autoPlay,
1649
+ loop,
1650
+ chromeless,
1651
+ playOnHover,
1652
+ playWhenHovered,
1653
+ preload,
1654
+ fit,
1655
+ startTime,
1656
+ playerHandleRef,
1657
+ autoPlayUnmuted,
1658
+ startMuted,
1659
+ mutedIntent = false,
1660
+ hideMutedBadge,
1661
+ onMutedFallbackChange,
1662
+ onEnded,
1663
+ className
1664
+ }) {
1665
+ const effectivePreload = preload ?? (saveDataEnabled() ? "none" : "metadata");
1666
+ const resolvedCaptionsUrl = useAuthedAssetSrc(captionsUrl, "text/vtt, */*");
1667
+ const [hoverMutedFallback, setHoverMutedFallback] = useState3(() => Boolean(startMuted));
1668
+ const hoverPlayerRef = useRef2(null);
1669
+ const [mutedFallbackBlocked, setMutedFallbackBlocked] = useState3(false);
1670
+ const perfListenerRef = useRef2(null);
1671
+ const clearPerfListener = useCallback2(() => {
1672
+ if (perfListenerRef.current) {
1673
+ try {
1674
+ hoverPlayerRef.current?.removeEventListener?.("playing", perfListenerRef.current);
1675
+ } catch {
1676
+ }
1677
+ perfListenerRef.current = null;
1678
+ }
1679
+ }, []);
1680
+ useEffect5(() => clearPerfListener, [clearPerfListener]);
1681
+ const hoverActiveRef = useRef2(false);
1682
+ const hoverGenerationRef = useRef2(0);
1683
+ const activationWaiterRef = useRef2(null);
1684
+ const clearActivationWaiter = useCallback2(() => {
1685
+ if (activationWaiterRef.current) {
1686
+ activationWaiters.delete(activationWaiterRef.current);
1687
+ activationWaiterRef.current = null;
1688
+ }
1689
+ }, []);
1690
+ useEffect5(() => clearActivationWaiter, [clearActivationWaiter]);
1691
+ const mutedIntentRef = useRef2(mutedIntent);
1692
+ useEffect5(() => {
1693
+ mutedIntentRef.current = mutedIntent;
1694
+ });
1695
+ const startHoverPlayback = useCallback2(() => {
1696
+ hoverActiveRef.current = true;
1697
+ const generation = ++hoverGenerationRef.current;
1698
+ const el = hoverPlayerRef.current;
1699
+ if (!el) return;
1700
+ if (videoPerfDebugEnabled()) {
1701
+ clearPerfListener();
1702
+ const startedAt = performance.now();
1703
+ const onPlaying = () => {
1704
+ clearPerfListener();
1705
+ console.debug("[Video] hover\u2192playing %dms", Math.round(performance.now() - startedAt));
1706
+ };
1707
+ perfListenerRef.current = onPlaying;
1708
+ try {
1709
+ el.addEventListener?.("playing", onPlaying);
1710
+ } catch {
1711
+ }
1712
+ }
1713
+ try {
1714
+ el.volume = 0.5;
1715
+ if (userHasInteracted) {
1716
+ el.muted = mutedIntentRef.current;
1717
+ el.play?.()?.catch?.((err) => {
1718
+ const name = err?.name;
1719
+ if (name === "NotAllowedError" && hoverActiveRef.current && generation === hoverGenerationRef.current) {
1720
+ try {
1721
+ el.muted = true;
1722
+ el.play?.()?.catch?.(() => {
1723
+ if (hoverActiveRef.current && generation === hoverGenerationRef.current) {
1724
+ setMutedFallbackBlocked(true);
1725
+ }
1726
+ });
1727
+ setHoverMutedFallback(true);
1728
+ } catch {
1729
+ }
1730
+ }
1731
+ });
1732
+ } else {
1733
+ el.muted = true;
1734
+ el.play?.()?.catch?.(() => {
1735
+ if (hoverActiveRef.current && generation === hoverGenerationRef.current) {
1736
+ setMutedFallbackBlocked(true);
1737
+ }
1738
+ });
1739
+ setHoverMutedFallback(true);
1740
+ clearActivationWaiter();
1741
+ const waiter = () => {
1742
+ activationWaiterRef.current = null;
1743
+ if (hoverActiveRef.current && generation === hoverGenerationRef.current) {
1744
+ try {
1745
+ el.muted = false;
1746
+ el.volume = 0.5;
1747
+ } catch {
1748
+ }
1749
+ setHoverMutedFallback(false);
1750
+ }
1751
+ };
1752
+ activationWaiterRef.current = waiter;
1753
+ activationWaiters.add(waiter);
1754
+ }
1755
+ } catch {
1756
+ }
1757
+ }, [clearActivationWaiter, clearPerfListener]);
1758
+ const stopHoverPlayback = useCallback2(() => {
1759
+ hoverActiveRef.current = false;
1760
+ setHoverMutedFallback(false);
1761
+ clearActivationWaiter();
1762
+ clearPerfListener();
1763
+ try {
1764
+ hoverPlayerRef.current?.pause?.();
1765
+ } catch {
1766
+ }
1767
+ }, [clearActivationWaiter, clearPerfListener]);
1768
+ const unmuteNow = useCallback2((e) => {
1769
+ e.stopPropagation();
1770
+ e.preventDefault();
1771
+ const el = hoverPlayerRef.current;
1772
+ try {
1773
+ if (el) {
1774
+ el.muted = false;
1775
+ el.volume = 0.5;
1776
+ el.play?.()?.catch?.(() => {
1777
+ });
1778
+ }
1779
+ } catch {
1780
+ }
1781
+ setHoverMutedFallback(false);
1782
+ }, []);
1783
+ const hoverControlled = typeof playWhenHovered === "boolean";
1784
+ useEffect5(() => {
1785
+ if (!hoverControlled) return;
1786
+ if (playWhenHovered) startHoverPlayback();
1787
+ else stopHoverPlayback();
1788
+ }, [hoverControlled, playWhenHovered, startHoverPlayback, stopHoverPlayback]);
1789
+ const handleHoverEnter = playOnHover && !hoverControlled ? startHoverPlayback : void 0;
1790
+ const handleHoverLeave = playOnHover && !hoverControlled ? stopHoverPlayback : void 0;
1791
+ const onMutedFallbackChangeRef = useRef2(onMutedFallbackChange);
1792
+ useEffect5(() => {
1793
+ onMutedFallbackChangeRef.current = onMutedFallbackChange;
1794
+ });
1795
+ useEffect5(() => {
1796
+ onMutedFallbackChangeRef.current?.({
1797
+ muted: hoverMutedFallback,
1798
+ blocked: hoverMutedFallback && mutedFallbackBlocked
1799
+ });
1800
+ }, [hoverMutedFallback, mutedFallbackBlocked]);
1801
+ const autoPlayKickedRef = useRef2(false);
1802
+ useEffect5(() => {
1803
+ if (autoPlayKickedRef.current) return;
1804
+ if (startMuted) {
1805
+ const mutedEl = hoverPlayerRef.current;
1806
+ if (!mutedEl) return;
1807
+ autoPlayKickedRef.current = true;
1808
+ try {
1809
+ mutedEl.muted = true;
1810
+ } catch {
1811
+ }
1812
+ if (autoPlay) {
1813
+ const reportBlocked = () => setMutedFallbackBlocked(true);
1814
+ try {
1815
+ mutedEl.play?.()?.catch?.(reportBlocked);
1816
+ } catch {
1817
+ reportBlocked();
1818
+ }
1819
+ }
1820
+ return;
1821
+ }
1822
+ if (!autoPlayUnmuted) return;
1823
+ const el = hoverPlayerRef.current;
1824
+ if (!el) return;
1825
+ autoPlayKickedRef.current = true;
1826
+ try {
1827
+ el.muted = false;
1828
+ el.volume = typeof el.volume === "number" ? el.volume : 1;
1829
+ el.play?.()?.catch?.((err) => {
1830
+ const name = err?.name;
1831
+ if (name !== "NotAllowedError") return;
1832
+ try {
1833
+ el.muted = true;
1834
+ el.play?.()?.catch?.(() => {
1835
+ setMutedFallbackBlocked(true);
1836
+ setHoverMutedFallback(true);
1837
+ });
1838
+ setMutedFallbackBlocked(false);
1839
+ setHoverMutedFallback(true);
1840
+ } catch {
1841
+ setMutedFallbackBlocked(true);
1842
+ setHoverMutedFallback(true);
1843
+ }
1844
+ });
1845
+ } catch {
1846
+ }
1847
+ }, [autoPlayUnmuted, startMuted, autoPlay]);
1848
+ useEffect5(() => {
1849
+ const el = hoverPlayerRef.current;
1850
+ if (!el?.addEventListener) return void 0;
1851
+ const onVolumeChange = () => {
1852
+ if (el.muted === false) {
1853
+ setMutedFallbackBlocked(false);
1854
+ setHoverMutedFallback(false);
1855
+ }
1856
+ };
1857
+ try {
1858
+ el.addEventListener("volumechange", onVolumeChange);
1859
+ } catch {
1860
+ }
1861
+ return () => {
1862
+ try {
1863
+ el.removeEventListener?.("volumechange", onVolumeChange);
1864
+ } catch {
1865
+ }
1866
+ };
1867
+ }, []);
1868
+ useEffect5(() => {
1869
+ const el = hoverPlayerRef.current;
1870
+ if (!el?.addEventListener) return void 0;
1871
+ const onPlaying = () => setMutedFallbackBlocked(false);
1872
+ try {
1873
+ el.addEventListener("playing", onPlaying);
1874
+ } catch {
1875
+ }
1876
+ return () => {
1877
+ try {
1878
+ el.removeEventListener?.("playing", onPlaying);
1879
+ } catch {
1880
+ }
1881
+ };
1882
+ }, []);
1883
+ const onEndedRef = useRef2(onEnded);
1884
+ useEffect5(() => {
1885
+ onEndedRef.current = onEnded;
1886
+ });
1887
+ useEffect5(() => {
1888
+ const el = hoverPlayerRef.current;
1889
+ if (!el?.addEventListener) return void 0;
1890
+ const handler = () => onEndedRef.current?.();
1891
+ try {
1892
+ el.addEventListener("ended", handler);
1893
+ } catch {
1894
+ }
1895
+ return () => {
1896
+ try {
1897
+ el.removeEventListener?.("ended", handler);
1898
+ } catch {
1899
+ }
1900
+ };
1901
+ }, []);
1902
+ useIosNativeVideoFullscreen(hoverPlayerRef);
1903
+ useImperativeHandle(
1904
+ playerHandleRef,
1905
+ () => ({
1906
+ getCurrentTime: () => hoverPlayerRef.current?.currentTime ?? 0,
1907
+ getDuration: () => {
1908
+ const d = hoverPlayerRef.current?.duration;
1909
+ return typeof d === "number" && isFinite(d) ? d : 0;
1910
+ },
1911
+ getPaused: () => hoverPlayerRef.current?.paused ?? true,
1912
+ getMuted: () => hoverPlayerRef.current?.muted ?? false,
1913
+ play: async () => {
1914
+ await hoverPlayerRef.current?.play?.();
1915
+ },
1916
+ pause: () => {
1917
+ try {
1918
+ hoverPlayerRef.current?.pause?.();
1919
+ } catch {
1920
+ }
1921
+ },
1922
+ setMuted: (m) => {
1923
+ const el = hoverPlayerRef.current;
1924
+ if (!el) return;
1925
+ try {
1926
+ el.muted = m;
1927
+ if (!m) {
1928
+ setMutedFallbackBlocked(false);
1929
+ setHoverMutedFallback(false);
1930
+ }
1931
+ } catch {
1932
+ }
1933
+ }
1934
+ }),
1935
+ []
1936
+ );
1937
+ if (process.env.NODE_ENV !== "production" && srtContent && !captionsUrl) {
1938
+ console.warn(
1939
+ "[Video] srtContent supplied without captionsUrl \u2014 captions will not render. Pass captionsUrl (the VTT URL) instead; raw SRT text overlays are no longer supported."
1940
+ );
1941
+ }
1942
+ const monitorHealth = !chromeless;
1943
+ const [playbackFailed, setPlaybackFailed] = useState3(false);
1944
+ const stallTimerRef = useRef2(null);
1945
+ const clearStallTimer = useCallback2(() => {
1946
+ if (stallTimerRef.current !== null) {
1947
+ clearTimeout(stallTimerRef.current);
1948
+ stallTimerRef.current = null;
1949
+ }
1950
+ }, []);
1951
+ useEffect5(() => clearStallTimer, [clearStallTimer]);
1952
+ const failPlayback = useCallback2(
1953
+ (reason) => {
1954
+ clearStallTimer();
1955
+ setPlaybackFailed(true);
1956
+ reportPlaybackFailure({ kind: "file", src: url, reason });
1957
+ },
1958
+ [clearStallTimer, url]
1959
+ );
1960
+ const armStallTimer = useCallback2(() => {
1961
+ if (!monitorHealth) return;
1962
+ const el = hoverPlayerRef.current;
1963
+ if (!el || el.paused || el.ended) return;
1964
+ if (stallTimerRef.current !== null) return;
1965
+ stallTimerRef.current = setTimeout(() => {
1966
+ stallTimerRef.current = null;
1967
+ failPlayback("stall");
1968
+ }, VIDEO_STALL_TIMEOUT_MS);
1969
+ }, [monitorHealth, failPlayback]);
1970
+ const handlePlaybackProgress = useCallback2(() => {
1971
+ clearStallTimer();
1972
+ setPlaybackFailed(false);
1973
+ }, [clearStallTimer]);
1974
+ const handleMediaError = useCallback2(() => {
1975
+ if (!monitorHealth) return;
1976
+ failPlayback("error");
1977
+ }, [monitorHealth, failPlayback]);
1978
+ const retryPlayback = useCallback2(() => {
1979
+ setPlaybackFailed(false);
1980
+ clearStallTimer();
1981
+ const el = hoverPlayerRef.current;
1982
+ if (!el) return;
1983
+ const resumeAt = typeof el.currentTime === "number" ? el.currentTime : 0;
1984
+ try {
1985
+ el.load?.();
1986
+ if (resumeAt > 0 && el.addEventListener && el.removeEventListener) {
1987
+ const seekBack = () => {
1988
+ el.removeEventListener?.("loadedmetadata", seekBack);
1989
+ try {
1990
+ el.currentTime = resumeAt;
1991
+ } catch {
1992
+ }
1993
+ };
1994
+ el.addEventListener("loadedmetadata", seekBack);
1995
+ }
1996
+ el.play?.()?.catch?.(() => {
1997
+ });
1998
+ } catch {
1999
+ }
2000
+ }, [clearStallTimer]);
2001
+ const errorOverlay = monitorHealth && playbackFailed ? /* @__PURE__ */ jsx9(VideoErrorOverlay, { onRetry: retryPlayback }) : null;
2002
+ const player = /* @__PURE__ */ jsx9(
2003
+ MuxPlayer,
2004
+ {
2005
+ ref: hoverPlayerRef,
2006
+ onError: handleMediaError,
2007
+ onWaiting: armStallTimer,
2008
+ onStalled: armStallTimer,
2009
+ onPlaying: handlePlaybackProgress,
2010
+ onTimeUpdate: handlePlaybackProgress,
2011
+ onPause: clearStallTimer,
2012
+ src: url,
2013
+ poster: poster || void 0,
2014
+ streamType: "on-demand",
2015
+ preload: effectivePreload,
2016
+ playsInline: true,
2017
+ muted,
2018
+ preferCmcd: "header",
2019
+ disableCookies: true,
2020
+ metadata: { viewer_user_id: muxViewerId() },
2021
+ accentColor: "var(--ods-accent, var(--color-accent-primary))",
2022
+ autoPlay: autoPlay ? "muted" : autoPlayUnmuted ? "any" : void 0,
2023
+ startTime: typeof startTime === "number" ? startTime : void 0,
2024
+ loop,
2025
+ className,
2026
+ style: {
2027
+ width: "100%",
2028
+ height: "100%",
2029
+ ...chromeless ? { "--controls": "none" } : {},
2030
+ ...fit === "cover" ? { "--media-object-fit": "cover" } : {}
2031
+ },
2032
+ children: resolvedCaptionsUrl ? /* @__PURE__ */ jsx9("track", { kind: "captions", src: resolvedCaptionsUrl, srcLang: "en", label: "English", default: true }) : null
2033
+ }
2034
+ );
2035
+ const unmuteBadge = hoverMutedFallback && !hideMutedBadge ? /* @__PURE__ */ jsx9(
2036
+ "button",
2037
+ {
2038
+ type: "button",
2039
+ "aria-label": "Unmute",
2040
+ title: "Unmute",
2041
+ onClick: unmuteNow,
2042
+ className: "absolute inset-0 z-10 m-auto flex h-14 w-14 items-center justify-center text-ods-text-primary transition-colors hover:text-ods-accent",
2043
+ children: /* @__PURE__ */ jsx9(VideoUnmuteGlyph, {})
2044
+ }
2045
+ ) : null;
2046
+ if (playOnHover && !hoverControlled) {
2047
+ return /* @__PURE__ */ jsxs7("div", { className: "relative h-full w-full", onPointerEnter: handleHoverEnter, onPointerLeave: handleHoverLeave, children: [
2048
+ player,
2049
+ unmuteBadge,
2050
+ errorOverlay
2051
+ ] });
2052
+ }
2053
+ if (hoverControlled || autoPlayUnmuted || startMuted || monitorHealth) {
2054
+ return /* @__PURE__ */ jsxs7("div", { className: "relative h-full w-full", children: [
2055
+ player,
2056
+ unmuteBadge,
2057
+ errorOverlay
2058
+ ] });
2059
+ }
2060
+ return player;
2061
+ }
2062
+ function YouTubeFacade({
2063
+ url,
2064
+ title = "YouTube Video",
2065
+ priority,
2066
+ className,
2067
+ minimalControls,
2068
+ muted,
2069
+ // `...facade` rather than naming each one: this hop is invisible to the
2070
+ // build-time forwarding proof, so a prop added to VideoYouTubeFacadeProps
2071
+ // would reach here and silently stop before Inner.
2072
+ ...facade
2073
+ }) {
2074
+ const videoId = extractYouTubeId(url);
2075
+ if (!videoId) return null;
2076
+ return /* @__PURE__ */ jsx9(
2077
+ YouTubeFacadeInner,
2078
+ {
2079
+ videoId,
2080
+ title,
2081
+ priority,
2082
+ className,
2083
+ minimalControls,
2084
+ muted,
2085
+ ...facade
2086
+ }
2087
+ );
2088
+ }
2089
+ var YT_NOCOOKIE_ORIGIN = "https://www.youtube-nocookie.com";
2090
+ var YT_POSTER_TIERS = ["maxresdefault", "mqdefault"];
2091
+ var YT_STATE_ENDED = 0;
2092
+ var YT_STATE_PLAYING = 1;
2093
+ var YT_PLAYING_BLUR_DELAY_MS = 1e3;
2094
+ function toYouTubeMessage(parsed) {
2095
+ if (typeof parsed !== "object" || parsed === null) return null;
2096
+ const event = "event" in parsed ? parsed.event : void 0;
2097
+ const info = "info" in parsed ? parsed.info : void 0;
2098
+ const playerState = typeof info === "object" && info !== null && "playerState" in info ? info.playerState : void 0;
2099
+ return {
2100
+ event: typeof event === "string" ? event : void 0,
2101
+ info: { playerState: typeof playerState === "number" ? playerState : void 0 },
2102
+ errorCode: typeof info === "number" ? info : void 0
2103
+ };
2104
+ }
2105
+ function YouTubeFacadeInner({
2106
+ videoId,
2107
+ title,
2108
+ priority,
2109
+ className,
2110
+ minimalControls,
2111
+ muted,
2112
+ autoActivate,
2113
+ suspended
2114
+ }) {
2115
+ const [activated, setActivated] = useState3(Boolean(autoActivate));
2116
+ const [prevAutoActivate, setPrevAutoActivate] = useState3(Boolean(autoActivate));
2117
+ if (Boolean(autoActivate) !== prevAutoActivate) {
2118
+ setPrevAutoActivate(Boolean(autoActivate));
2119
+ if (autoActivate) setActivated(true);
2120
+ }
2121
+ const [failed, setFailed] = useState3(false);
2122
+ const [reloadNonce, setReloadNonce] = useState3(0);
2123
+ const iframeRef = useRef2(null);
2124
+ const retry = useCallback2(() => {
2125
+ setFailed(false);
2126
+ setReloadNonce((n) => n + 1);
2127
+ }, []);
2128
+ const embedUrl = useMemo2(() => {
2129
+ const params = new URLSearchParams({
2130
+ autoplay: "1",
2131
+ rel: "0",
2132
+ modestbranding: "1",
2133
+ playsinline: "1",
2134
+ enablejsapi: "1"
2135
+ });
2136
+ if (muted) params.set("mute", "1");
2137
+ if (typeof window !== "undefined") {
2138
+ params.set("origin", window.location.origin);
2139
+ }
2140
+ if (minimalControls) {
2141
+ params.set("controls", "0");
2142
+ params.set("fs", "0");
2143
+ params.set("iv_load_policy", "3");
2144
+ params.set("cc_load_policy", "0");
2145
+ params.set("disablekb", "1");
2146
+ }
2147
+ return `${YT_NOCOOKIE_ORIGIN}/embed/${videoId}?${params.toString()}`;
2148
+ }, [videoId, minimalControls, muted]);
2149
+ const [posterTier, setPosterTier] = useState3(0);
2150
+ const [posterTierFor, setPosterTierFor] = useState3(videoId);
2151
+ if (posterTierFor !== videoId) {
2152
+ setPosterTierFor(videoId);
2153
+ setPosterTier(0);
2154
+ }
2155
+ const posterQuality = YT_POSTER_TIERS[posterTier];
2156
+ const posterJpg = `https://i.ytimg.com/vi/${videoId}/${posterQuality}.jpg`;
2157
+ const posterWebp = `https://i.ytimg.com/vi_webp/${videoId}/${posterQuality}.webp`;
2158
+ const handlePosterError = () => setPosterTier((tier) => Math.min(tier + 1, YT_POSTER_TIERS.length - 1));
2159
+ useEffect5(() => {
2160
+ if (!activated || failed) return void 0;
2161
+ const iframe = iframeRef.current;
2162
+ if (!iframe) return void 0;
2163
+ function subscribe() {
2164
+ iframe?.contentWindow?.postMessage('{"event":"listening"}', YT_NOCOOKIE_ORIGIN);
2165
+ }
2166
+ iframe.addEventListener("load", subscribe);
2167
+ subscribe();
2168
+ let blurTimer = null;
2169
+ function handleMessage(event) {
2170
+ if (event.origin !== YT_NOCOOKIE_ORIGIN) return;
2171
+ if (typeof event.data !== "string") return;
2172
+ let payload = null;
2173
+ try {
2174
+ payload = toYouTubeMessage(JSON.parse(event.data));
2175
+ } catch {
2176
+ return;
2177
+ }
2178
+ if (!payload) return;
2179
+ if (payload.event === "onError") {
2180
+ setFailed(true);
2181
+ reportPlaybackFailure({ kind: "youtube", src: videoId, reason: "error", errorCode: payload.errorCode });
2182
+ return;
2183
+ }
2184
+ if (payload.event !== "infoDelivery") return;
2185
+ const state = payload.info?.playerState;
2186
+ if (typeof state !== "number") return;
2187
+ if (state === YT_STATE_PLAYING) {
2188
+ if (blurTimer !== null) return;
2189
+ blurTimer = setTimeout(() => {
2190
+ blurTimer = null;
2191
+ iframeRef.current?.blur();
2192
+ }, YT_PLAYING_BLUR_DELAY_MS);
2193
+ return;
2194
+ }
2195
+ if (state === YT_STATE_ENDED) {
2196
+ setActivated(false);
2197
+ }
2198
+ }
2199
+ window.addEventListener("message", handleMessage);
2200
+ return () => {
2201
+ iframe.removeEventListener("load", subscribe);
2202
+ window.removeEventListener("message", handleMessage);
2203
+ if (blurTimer !== null) clearTimeout(blurTimer);
2204
+ };
2205
+ }, [activated, failed, reloadNonce, videoId]);
2206
+ const prevSuspendedRef = useRef2(false);
2207
+ useEffect5(() => {
2208
+ const wasSuspended = prevSuspendedRef.current;
2209
+ prevSuspendedRef.current = Boolean(suspended);
2210
+ if (!activated || Boolean(suspended) === wasSuspended) return;
2211
+ iframeRef.current?.contentWindow?.postMessage(
2212
+ `{"event":"command","func":"${suspended ? "pauseVideo" : "playVideo"}","args":[]}`,
2213
+ YT_NOCOOKIE_ORIGIN
2214
+ );
2215
+ }, [suspended, activated]);
2216
+ const wrapperClass = `relative w-full ${className ?? ""}`;
2217
+ const wrapperStyle = { paddingBottom: "56.25%" };
2218
+ if (activated && failed) {
2219
+ return /* @__PURE__ */ jsx9("div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ jsx9(VideoErrorOverlay, { onRetry: retry, watchOnYouTubeId: videoId }) });
2220
+ }
2221
+ if (activated) {
2222
+ return /* @__PURE__ */ jsx9("div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ jsx9(
2223
+ "iframe",
2224
+ {
2225
+ ref: iframeRef,
2226
+ src: embedUrl,
2227
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share",
2228
+ allowFullScreen: true,
2229
+ referrerPolicy: "strict-origin-when-cross-origin",
2230
+ title,
2231
+ className: "absolute inset-0 h-full w-full rounded-lg border-0"
2232
+ },
2233
+ reloadNonce
2234
+ ) });
2235
+ }
2236
+ return /* @__PURE__ */ jsx9("div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ jsxs7(
2237
+ "button",
2238
+ {
2239
+ type: "button",
2240
+ "aria-label": `Play: ${title}`,
2241
+ onClick: () => setActivated(true),
2242
+ className: "group absolute inset-0 m-0 cursor-pointer overflow-hidden rounded-lg border border-ods-border bg-ods-card p-0",
2243
+ children: [
2244
+ /* @__PURE__ */ jsxs7("picture", { children: [
2245
+ /* @__PURE__ */ jsx9("source", { type: "image/webp", srcSet: posterWebp }),
2246
+ /* @__PURE__ */ jsx9(
2247
+ "img",
2248
+ {
2249
+ src: posterJpg,
2250
+ alt: title,
2251
+ loading: "lazy",
2252
+ onError: handlePosterError,
2253
+ ...fetchPriorityProp(priority),
2254
+ decoding: priority ? "sync" : "async",
2255
+ className: "absolute inset-0 h-full w-full object-cover"
2256
+ }
2257
+ )
2258
+ ] }),
2259
+ /* @__PURE__ */ jsx9("div", { className: "absolute inset-0 flex items-center justify-center bg-ods-bg bg-opacity-20 transition-opacity duration-200 group-hover:bg-opacity-30", children: /* @__PURE__ */ jsx9(
2260
+ VideoPlayBadge,
2261
+ {
2262
+ size: "lg",
2263
+ className: "transition-transform duration-200 group-hover:scale-110 group-hover:text-ods-accent"
2264
+ }
2265
+ ) })
2266
+ ]
2267
+ }
2268
+ ) });
2269
+ }
2270
+
1229
2271
  // src/components/ui/status-badge.tsx
1230
2272
  import { cva as cva2 } from "class-variance-authority";
1231
- import { jsx as jsx9 } from "react/jsx-runtime";
2273
+ import { jsx as jsx10 } from "react/jsx-runtime";
1232
2274
  var statusBadgeVariants = cva2("inline-flex items-center justify-center rounded", {
1233
2275
  variants: {
1234
2276
  // Two densities, not one style at two paddings. Both are the ODS h5
@@ -1290,11 +2332,11 @@ function StatusBadge({ text, variant, colorScheme, className, singleLine, gen, s
1290
2332
  if (singleLine) return text;
1291
2333
  if (variant === "button" && text.includes(" ")) {
1292
2334
  const words = text.split(" ");
1293
- return /* @__PURE__ */ jsx9("span", { className: "flex flex-col items-center justify-center gap-0 text-center", children: words.map((word, index) => /* @__PURE__ */ jsx9("span", { className: "block", children: word }, index)) });
2335
+ return /* @__PURE__ */ jsx10("span", { className: "flex flex-col items-center justify-center gap-0 text-center", children: words.map((word, index) => /* @__PURE__ */ jsx10("span", { className: "block", children: word }, index)) });
1294
2336
  }
1295
2337
  return text;
1296
2338
  };
1297
- return /* @__PURE__ */ jsx9(
2339
+ return /* @__PURE__ */ jsx10(
1298
2340
  "span",
1299
2341
  {
1300
2342
  className: cn(statusBadgeVariants({ variant, colorScheme: gen != null ? void 0 : colorScheme }), className),
@@ -1332,9 +2374,9 @@ function pickBadgePaletteColor({
1332
2374
  }
1333
2375
 
1334
2376
  // src/components/ui/palette-badge.tsx
1335
- import { jsx as jsx10 } from "react/jsx-runtime";
2377
+ import { jsx as jsx11 } from "react/jsx-runtime";
1336
2378
  function PaletteBadge({ text, color, className, variant = "button" }) {
1337
- return /* @__PURE__ */ jsx10(
2379
+ return /* @__PURE__ */ jsx11(
1338
2380
  StatusBadge,
1339
2381
  {
1340
2382
  text,
@@ -1347,14 +2389,14 @@ function PaletteBadge({ text, color, className, variant = "button" }) {
1347
2389
  }
1348
2390
 
1349
2391
  // src/components/ui/department-badge.tsx
1350
- import { jsx as jsx11 } from "react/jsx-runtime";
2392
+ import { jsx as jsx12 } from "react/jsx-runtime";
1351
2393
  function DepartmentBadge({
1352
2394
  department,
1353
2395
  emptyLabel = "No department",
1354
2396
  className,
1355
2397
  variant
1356
2398
  }) {
1357
- return /* @__PURE__ */ jsx11(
2399
+ return /* @__PURE__ */ jsx12(
1358
2400
  PaletteBadge,
1359
2401
  {
1360
2402
  text: department?.name || emptyLabel,
@@ -1366,7 +2408,7 @@ function DepartmentBadge({
1366
2408
  }
1367
2409
 
1368
2410
  // src/components/ui/avatar-stack.tsx
1369
- import { jsx as jsx12, jsxs as jsxs7 } from "react/jsx-runtime";
2411
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
1370
2412
  var SIZE_PX = { xs: 24, sm: 32, md: 40, lg: 48 };
1371
2413
  var OVERLAP_PX = { xs: 8, sm: 12, md: 12, lg: 12 };
1372
2414
  var OVERFLOW_CIRCLE_SIZE = {
@@ -1394,7 +2436,7 @@ function AvatarStack({
1394
2436
  const names = people.map((p) => p.name).join(", ");
1395
2437
  const unnamed = groupSize - people.length;
1396
2438
  const compact = size2 === "xs";
1397
- return /* @__PURE__ */ jsxs7(
2439
+ return /* @__PURE__ */ jsxs8(
1398
2440
  "div",
1399
2441
  {
1400
2442
  className: cn("flex items-center", slots && "shrink-0", className),
@@ -1402,7 +2444,7 @@ function AvatarStack({
1402
2444
  role: "group",
1403
2445
  "aria-label": `${label}: ${names}${unnamed > 0 ? ` and ${unnamed} more` : ""}`,
1404
2446
  children: [
1405
- visible.map((person, i) => /* @__PURE__ */ jsx12(
2447
+ visible.map((person, i) => /* @__PURE__ */ jsx13(
1406
2448
  SquareAvatar,
1407
2449
  {
1408
2450
  variant: "round",
@@ -1416,7 +2458,7 @@ function AvatarStack({
1416
2458
  },
1417
2459
  person.key ?? `${person.name}-${i}`
1418
2460
  )),
1419
- overflowCount > 0 && /* @__PURE__ */ jsxs7(
2461
+ overflowCount > 0 && /* @__PURE__ */ jsxs8(
1420
2462
  "span",
1421
2463
  {
1422
2464
  title: overflow.length > 0 ? overflow.map((p) => p.name).join(", ") : `${overflowCount} more`,
@@ -1441,6 +2483,530 @@ function AvatarStack({
1441
2483
  );
1442
2484
  }
1443
2485
 
2486
+ // src/components/chat/utils/icon-registry.ts
2487
+ import {
2488
+ Activity,
2489
+ Banknote,
2490
+ Bell,
2491
+ BookOpen,
2492
+ Box,
2493
+ Briefcase,
2494
+ Calendar,
2495
+ CheckSquare,
2496
+ DollarSign,
2497
+ Facebook,
2498
+ FileText,
2499
+ Github,
2500
+ Globe,
2501
+ GraduationCap,
2502
+ Headphones,
2503
+ Info,
2504
+ Instagram,
2505
+ Mail,
2506
+ Megaphone,
2507
+ MessageCircle,
2508
+ MessageSquare,
2509
+ Newspaper,
2510
+ Package,
2511
+ PenSquare,
2512
+ Phone,
2513
+ Rocket,
2514
+ Search,
2515
+ Send,
2516
+ Shield,
2517
+ Star,
2518
+ TableProperties,
2519
+ TrendingUp,
2520
+ Twitter,
2521
+ Users,
2522
+ Video as Video2,
2523
+ Youtube
2524
+ } from "lucide-react";
2525
+ import { createElement } from "react";
2526
+ var OpenFrameLogoIcon = ({ className }) => createElement(OpenFrameLogo, { className, upperPathColor: "currentColor" });
2527
+ var ICON_REGISTRY = {
2528
+ // lucide-react (kebab-case)
2529
+ activity: Activity,
2530
+ banknote: Banknote,
2531
+ bell: Bell,
2532
+ "book-open": BookOpen,
2533
+ box: Box,
2534
+ briefcase: Briefcase,
2535
+ calendar: Calendar,
2536
+ "check-square": CheckSquare,
2537
+ "dollar-sign": DollarSign,
2538
+ // For brand-vs-lucide variants the kebab key is the BRAND (most-common
2539
+ // social-platform intent); `'<name>-lucide'` carries the lucide outline.
2540
+ facebook: FacebookIcon,
2541
+ "facebook-lucide": Facebook,
2542
+ "file-text": FileText,
2543
+ // `'github-lucide'` is the lucide outline glyph (used by
2544
+ // `social_platforms.icon_name='Github'`); `'github'` is the brand icon
2545
+ // (used by `chat_admin_slash_commands.icon_name='github'`). The PascalCase
2546
+ // alias `'Github' → 'github-lucide'` routes the lucide glyph for
2547
+ // social-platform DB rows; `'GitHubIcon' → 'github'` keeps brand routing
2548
+ // consistent for callers that store the PascalCase component name.
2549
+ github: GitHubIcon,
2550
+ "github-lucide": Github,
2551
+ globe: Globe,
2552
+ "graduation-cap": GraduationCap,
2553
+ headphones: Headphones,
2554
+ info: Info,
2555
+ instagram: InstagramIcon,
2556
+ "instagram-lucide": Instagram,
2557
+ mail: Mail,
2558
+ megaphone: Megaphone,
2559
+ "message-circle": MessageCircle,
2560
+ "message-square": MessageSquare,
2561
+ newspaper: Newspaper,
2562
+ package: Package,
2563
+ "pen-square": PenSquare,
2564
+ phone: Phone,
2565
+ rocket: Rocket,
2566
+ search: Search,
2567
+ send: Send,
2568
+ shield: Shield,
2569
+ star: Star,
2570
+ table: TableProperties,
2571
+ "trending-up": TrendingUp,
2572
+ twitter: Twitter,
2573
+ users: Users,
2574
+ video: Video2,
2575
+ whatsapp: WhatsAppIcon,
2576
+ youtube: YouTubeIcon,
2577
+ "youtube-lucide": Youtube,
2578
+ // brand-only icons (no lucide variant in current use)
2579
+ slack: SlackIcon,
2580
+ clickup: ClickUpIcon,
2581
+ hubspot: HubspotIcon,
2582
+ linkedin: LinkedInIcon,
2583
+ x: XLogo,
2584
+ openframe: OpenFrameLogoIcon
2585
+ };
2586
+ var PASCAL_TO_KEBAB_ALIASES = {
2587
+ // Lucide PascalCase names → kebab equivalents
2588
+ Activity: "activity",
2589
+ Banknote: "banknote",
2590
+ Bell: "bell",
2591
+ BookOpen: "book-open",
2592
+ Box: "box",
2593
+ Briefcase: "briefcase",
2594
+ Calendar: "calendar",
2595
+ CheckSquare: "check-square",
2596
+ DollarSign: "dollar-sign",
2597
+ // Lucide PascalCase → the `-lucide` kebab variant (kebab default is the
2598
+ // brand icon for the social-platform names below).
2599
+ Facebook: "facebook-lucide",
2600
+ FileText: "file-text",
2601
+ Github: "github-lucide",
2602
+ Globe: "globe",
2603
+ GraduationCap: "graduation-cap",
2604
+ Headphones: "headphones",
2605
+ Info: "info",
2606
+ Instagram: "instagram-lucide",
2607
+ Mail: "mail",
2608
+ Megaphone: "megaphone",
2609
+ MessageCircle: "message-circle",
2610
+ MessageSquare: "message-square",
2611
+ Newspaper: "newspaper",
2612
+ Package: "package",
2613
+ PenSquare: "pen-square",
2614
+ Phone: "phone",
2615
+ Rocket: "rocket",
2616
+ Search: "search",
2617
+ Send: "send",
2618
+ Shield: "shield",
2619
+ Star: "star",
2620
+ TableProperties: "table",
2621
+ TrendingUp: "trending-up",
2622
+ Twitter: "twitter",
2623
+ Users: "users",
2624
+ Video: "video",
2625
+ Youtube: "youtube-lucide",
2626
+ // Brand-icon PascalCase exports → kebab (kebab default is the brand)
2627
+ SlackIcon: "slack",
2628
+ GitHubIcon: "github",
2629
+ ClickUpIcon: "clickup",
2630
+ HubspotIcon: "hubspot",
2631
+ LinkedInIcon: "linkedin",
2632
+ FacebookIcon: "facebook",
2633
+ InstagramIcon: "instagram",
2634
+ YouTubeIcon: "youtube",
2635
+ WhatsAppIcon: "whatsapp",
2636
+ XLogo: "x",
2637
+ OpenFrameLogo: "openframe"
2638
+ };
2639
+ function normalizeIconKey(key) {
2640
+ return PASCAL_TO_KEBAB_ALIASES[key] ?? key;
2641
+ }
2642
+ function getIconComponent(iconName) {
2643
+ if (!iconName) return FileText;
2644
+ return ICON_REGISTRY[normalizeIconKey(iconName)] ?? FileText;
2645
+ }
2646
+ var SIZE_CLASSES = {
2647
+ xs: "w-3 h-3",
2648
+ // 12px
2649
+ sm: "w-4 h-4",
2650
+ // 16px
2651
+ md: "w-6 h-6",
2652
+ // 24px
2653
+ lg: "w-8 h-8",
2654
+ // 32px
2655
+ xl: "w-12 h-12"
2656
+ // 48px
2657
+ };
2658
+ var ICON_COLORS = {
2659
+ linkedin: { color: "#0A66C2" },
2660
+ facebook: { color: "#1877F2" },
2661
+ youtube: { color: "#FF0000" }
2662
+ };
2663
+ function getDynamicIcon(iconName, size2 = "md", className) {
2664
+ if (!iconName) {
2665
+ console.warn("[getDynamicIcon] No iconName provided, using Globe fallback");
2666
+ return createElement(Globe, { className: SIZE_CLASSES[size2] });
2667
+ }
2668
+ const sizeClass = SIZE_CLASSES[size2];
2669
+ const finalClassName = className ? `${sizeClass} ${className}` : sizeClass;
2670
+ const canonicalKey = normalizeIconKey(iconName);
2671
+ const IconComponent = ICON_REGISTRY[canonicalKey];
2672
+ if (IconComponent) {
2673
+ const colorConfig = ICON_COLORS[canonicalKey] || {};
2674
+ return createElement(IconComponent, { className: finalClassName, ...colorConfig });
2675
+ }
2676
+ console.error(
2677
+ `[getDynamicIcon] Icon NOT found in registry: "${iconName}" (normalized to "${canonicalKey}"). Available icons:`,
2678
+ Object.keys(ICON_REGISTRY)
2679
+ );
2680
+ return createElement(Globe, { className: finalClassName });
2681
+ }
2682
+
2683
+ // src/components/chat/utils/icon-library.tsx
2684
+ import { Megaphone as Megaphone2, Bell as Bell2, Info as Info2, Star as Star2, Package as PackageGlyph } from "lucide-react";
2685
+ import { jsx as jsx14 } from "react/jsx-runtime";
2686
+ function sizedLogo(Logo) {
2687
+ return function SizedLogo({ size: size2 = 16, className }) {
2688
+ return /* @__PURE__ */ jsx14(Logo, { className, style: { width: size2, height: size2 } });
2689
+ };
2690
+ }
2691
+ var brandColor = (platform) => `var(${platformAccentVarName(platform)})`;
2692
+ var OpenmspLogoIcon = ({ size: size2 = 16, className }) => /* @__PURE__ */ jsx14(
2693
+ OpenmspLogo,
2694
+ {
2695
+ className,
2696
+ style: { width: size2, height: size2 },
2697
+ frontBubbleColor: "var(--color-text-primary)",
2698
+ innerFrontBubbleColor: "var(--color-bg)",
2699
+ backBubbleColor: brandColor("openmsp")
2700
+ }
2701
+ );
2702
+ var FlamingoLogoIcon = sizedLogo(FlamingoLogo);
2703
+ var MlgLogoIcon = ({ size: size2 = 16, className, color }) => /* @__PURE__ */ jsx14(MlgLogo, { size: size2, className, color: color ?? "var(--color-text-primary)" });
2704
+ var TmcgLogoIcon = ({ size: size2 = 16, className }) => /* @__PURE__ */ jsx14(
2705
+ MiamiCyberGangLogoFaceOnly,
2706
+ {
2707
+ size: size2,
2708
+ className,
2709
+ originalPink: brandColor("tmcg"),
2710
+ originalWhite: "var(--color-text-primary)"
2711
+ }
2712
+ );
2713
+ function LogoOpenframeIcon({ size: size2 = 16, className, color }) {
2714
+ const tint = color ?? "currentColor";
2715
+ return /* @__PURE__ */ jsx14(
2716
+ OpenFrameLogo,
2717
+ {
2718
+ className,
2719
+ lowerPathColor: tint,
2720
+ upperPathColor: tint,
2721
+ style: { width: size2, height: size2 }
2722
+ }
2723
+ );
2724
+ }
2725
+ var ICON_ALIASES = {
2726
+ // Production `/api/docs/commands` keys (multi-platform-hub contract)
2727
+ clickup: ClickupLogoGreyIcon,
2728
+ slack: SlackLogoGreyIcon,
2729
+ hubspot: HubspotLogoGreyIcon,
2730
+ github: GithubIcon,
2731
+ openframe: LogoOpenframeIcon,
2732
+ newspaper: NewspaperIcon,
2733
+ rocket: Rocket02Icon,
2734
+ briefcase: BriefcaseIcon,
2735
+ "graduation-cap": GraduationCapIcon,
2736
+ video: VideoRecorderIcon,
2737
+ headphones: HeadphoneIcon,
2738
+ calendar: CalendarIcon,
2739
+ compass: CompassIcon,
2740
+ // Figma-canonical aliases (node 7363:205938) — kept for Storybook
2741
+ // fixtures and any older feed entries still using the long names.
2742
+ "clickup-logo": ClickupLogoGreyIcon,
2743
+ "clickup-logo-grey": ClickupLogoGreyIcon,
2744
+ "slack-logo": SlackLogoGreyIcon,
2745
+ "slack-logo-grey": SlackLogoGreyIcon,
2746
+ "hubspot-logo": HubspotLogoGreyIcon,
2747
+ "hubspot-logo-grey": HubspotLogoGreyIcon,
2748
+ "github-logo": GithubIcon,
2749
+ "logo-openframe": LogoOpenframeIcon,
2750
+ "rocket-01": Rocket02Icon,
2751
+ "rocket-02": Rocket02Icon,
2752
+ // Announcement-bar legacy names — folded in so resolveIcon covers them too
2753
+ // (was the separate `renderSvgIcon` map; now ONE resolver everywhere).
2754
+ "openframe-logo": LogoOpenframeIcon,
2755
+ "openmsp-logo": OpenmspLogoIcon,
2756
+ "mlg-logo": MlgLogoIcon,
2757
+ "tmcg-logo": TmcgLogoIcon,
2758
+ flamingo: FlamingoLogoIcon,
2759
+ "flamingo-logo": FlamingoLogoIcon,
2760
+ megaphone: Megaphone2,
2761
+ bell: Bell2,
2762
+ info: Info2,
2763
+ star: Star2,
2764
+ package: PackageGlyph,
2765
+ // Generic v2-native keys — useful fall-throughs for slash commands that
2766
+ // don't have a brand-specific glyph in the design.
2767
+ search: SearchIcon,
2768
+ ticket: TicketIcon,
2769
+ book: BookIcon,
2770
+ "book-open": BookIcon,
2771
+ bug: BugIcon,
2772
+ layers: LayersIcon,
2773
+ file: FileIcon,
2774
+ "file-text": FileIcon,
2775
+ chats: ChatsIcon,
2776
+ "message-square": ChatsIcon,
2777
+ "message-circle": ChatsIcon,
2778
+ "bracket-curly": BracketCurlyIcon
2779
+ };
2780
+ function resolveFromLibrary(iconName) {
2781
+ const tokens = iconName.trim().toLowerCase().replace(/_/g, "-").split("-");
2782
+ if (tokens.some((t) => t.length === 0)) return void 0;
2783
+ const cap = (t) => t.charAt(0).toUpperCase() + t.slice(1);
2784
+ const candidates = [
2785
+ `${tokens.map(cap).join("")}Icon`,
2786
+ `${tokens.map((t) => t === "ai" ? "AI" : cap(t)).join("")}Icon`
2787
+ ];
2788
+ const registry = icons_v2_generated_exports;
2789
+ for (const name of candidates) {
2790
+ const Icon = registry[name];
2791
+ if (Icon) return Icon;
2792
+ }
2793
+ return void 0;
2794
+ }
2795
+ function brandLogoForName(name) {
2796
+ const words = (name ?? "").split(/[^A-Za-z0-9]+/).filter(Boolean);
2797
+ const pascal = (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
2798
+ const registry = icons_v2_generated_exports;
2799
+ for (let length = Math.min(3, words.length); length >= 1; length -= 1) {
2800
+ for (let start = 0; start + length <= words.length; start += 1) {
2801
+ const Logo = registry[`${words.slice(start, start + length).map(pascal).join("")}LogoIcon`];
2802
+ if (Logo) return Logo;
2803
+ }
2804
+ }
2805
+ return null;
2806
+ }
2807
+ function resolveIcon(iconName, opts) {
2808
+ if (opts?.variant === "brand") {
2809
+ return getIconComponent(iconName);
2810
+ }
2811
+ if (!iconName) return FileIcon;
2812
+ return ICON_ALIASES[iconName] ?? resolveFromLibrary(iconName) ?? FileIcon;
2813
+ }
2814
+ var ICON_OPTIONS = [
2815
+ // Brands
2816
+ { key: "openframe", label: "OpenFrame" },
2817
+ { key: "slack", label: "Slack" },
2818
+ { key: "hubspot", label: "HubSpot" },
2819
+ { key: "clickup", label: "ClickUp" },
2820
+ { key: "github", label: "GitHub" },
2821
+ { key: "linkedin", label: "LinkedIn" },
2822
+ { key: "twitter", label: "Twitter (X)" },
2823
+ { key: "twitter-x", label: "X" },
2824
+ { key: "facebook", label: "Facebook" },
2825
+ { key: "instagram", label: "Instagram" },
2826
+ { key: "youtube", label: "YouTube" },
2827
+ { key: "discord", label: "Discord" },
2828
+ { key: "figma", label: "Figma" },
2829
+ { key: "google", label: "Google" },
2830
+ { key: "apple", label: "Apple" },
2831
+ { key: "windows", label: "Windows" },
2832
+ { key: "android", label: "Android" },
2833
+ { key: "openai-logo", label: "OpenAI" },
2834
+ { key: "anthropic-logo", label: "Anthropic" },
2835
+ // Content & docs
2836
+ { key: "newspaper", label: "Newspaper" },
2837
+ { key: "book", label: "Book" },
2838
+ { key: "file", label: "File" },
2839
+ { key: "file-text", label: "Document" },
2840
+ { key: "file-code", label: "Code file" },
2841
+ { key: "file-chart-bar", label: "Report" },
2842
+ { key: "file-dollar", label: "Invoice file" },
2843
+ { key: "folder", label: "Folder" },
2844
+ { key: "folder-open", label: "Folder open" },
2845
+ { key: "clipboard", label: "Clipboard" },
2846
+ { key: "clipboard-list", label: "Checklist" },
2847
+ { key: "clipboard-check", label: "Clipboard check" },
2848
+ { key: "memo", label: "Memo" },
2849
+ { key: "paperclip", label: "Attachment" },
2850
+ { key: "copy-01", label: "Copy" },
2851
+ { key: "files", label: "Files" },
2852
+ { key: "box-archive", label: "Box" },
2853
+ { key: "parcel-01", label: "Parcel" },
2854
+ // Media
2855
+ { key: "video", label: "Video" },
2856
+ { key: "headphones", label: "Podcast / audio" },
2857
+ { key: "podcast", label: "Podcast" },
2858
+ { key: "mic", label: "Microphone" },
2859
+ { key: "music-note-01", label: "Music" },
2860
+ { key: "camera", label: "Camera" },
2861
+ { key: "image", label: "Image" },
2862
+ { key: "film-hr", label: "Film" },
2863
+ { key: "play", label: "Play" },
2864
+ // Date & time
2865
+ { key: "calendar", label: "Calendar" },
2866
+ { key: "calendar-check", label: "Calendar check" },
2867
+ { key: "clock", label: "Clock" },
2868
+ { key: "alarm", label: "Alarm" },
2869
+ { key: "stopwatch", label: "Stopwatch" },
2870
+ { key: "timer", label: "Timer" },
2871
+ { key: "hourglass", label: "Hourglass" },
2872
+ // Places & business
2873
+ { key: "briefcase", label: "Briefcase" },
2874
+ { key: "graduation-cap", label: "Education" },
2875
+ { key: "building", label: "Building" },
2876
+ { key: "buildings", label: "Buildings" },
2877
+ { key: "hospital", label: "Hospital" },
2878
+ { key: "school", label: "School" },
2879
+ { key: "warehouse", label: "Warehouse" },
2880
+ { key: "shop", label: "Shop" },
2881
+ // Communication
2882
+ { key: "search", label: "Search" },
2883
+ { key: "chats", label: "Chat" },
2884
+ { key: "message-text", label: "Message" },
2885
+ { key: "messages", label: "Messages" },
2886
+ { key: "email", label: "Email" },
2887
+ { key: "inbox", label: "Inbox" },
2888
+ { key: "send-01", label: "Send" },
2889
+ { key: "at-sign", label: "Mention" },
2890
+ { key: "bell", label: "Notifications" },
2891
+ { key: "megaphone-01", label: "Announcement" },
2892
+ // Charts & analytics
2893
+ { key: "chart-pie", label: "Pie chart" },
2894
+ { key: "chart-donut", label: "Donut chart" },
2895
+ { key: "chart-bar-01-ver", label: "Bar chart" },
2896
+ { key: "chart-line-up", label: "Line chart" },
2897
+ { key: "trend-up", label: "Trend up" },
2898
+ { key: "trend-down", label: "Trend down" },
2899
+ { key: "presentation", label: "Presentation" },
2900
+ { key: "analysis", label: "Analysis" },
2901
+ { key: "activity", label: "Activity" },
2902
+ { key: "network", label: "Network" },
2903
+ // Finance
2904
+ { key: "bank", label: "Bank" },
2905
+ { key: "money-bill-dollar", label: "Money" },
2906
+ { key: "money-bill", label: "Bill" },
2907
+ { key: "coins", label: "Coins" },
2908
+ { key: "coin", label: "Coin" },
2909
+ { key: "coins-exchange-currency", label: "Currency exchange" },
2910
+ { key: "piggy-bank", label: "Savings" },
2911
+ { key: "wallet-01", label: "Wallet" },
2912
+ { key: "credit-card", label: "Credit card" },
2913
+ { key: "hand-coin", label: "Hand coin" },
2914
+ { key: "dollar", label: "Dollar" },
2915
+ { key: "dollar-circle", label: "Dollar circle" },
2916
+ { key: "euro", label: "Euro" },
2917
+ { key: "bitcoin", label: "Bitcoin" },
2918
+ { key: "percent", label: "Percent" },
2919
+ { key: "receipt-01", label: "Receipt" },
2920
+ { key: "badge-dollar", label: "Price badge" },
2921
+ { key: "sack", label: "Money sack" },
2922
+ // Security
2923
+ { key: "shield", label: "Shield" },
2924
+ { key: "shield-check", label: "Shield check" },
2925
+ { key: "lock", label: "Lock" },
2926
+ { key: "unlock", label: "Unlock" },
2927
+ { key: "key", label: "Key" },
2928
+ { key: "fingerprint", label: "Fingerprint" },
2929
+ { key: "scan", label: "Scan" },
2930
+ // People
2931
+ { key: "user", label: "User" },
2932
+ { key: "users", label: "Users" },
2933
+ { key: "users-group", label: "User group" },
2934
+ { key: "user-check", label: "User check" },
2935
+ { key: "id-card", label: "ID card" },
2936
+ { key: "avatar-circle", label: "Avatar" },
2937
+ // Devices & infra
2938
+ { key: "laptop", label: "Laptop" },
2939
+ { key: "monitor", label: "Monitor" },
2940
+ { key: "mobile-phone", label: "Phone" },
2941
+ { key: "hard-drive", label: "Hard drive" },
2942
+ { key: "hard-drives", label: "Storage" },
2943
+ { key: "cloud", label: "Cloud" },
2944
+ { key: "wifi", label: "Wi-Fi" },
2945
+ { key: "printer", label: "Printer" },
2946
+ { key: "keyboard", label: "Keyboard" },
2947
+ { key: "microchip", label: "Chip" },
2948
+ { key: "microchip-ai", label: "AI chip" },
2949
+ { key: "power", label: "Power" },
2950
+ // Code & dev
2951
+ { key: "bracket-curly", label: "Code" },
2952
+ { key: "terminal", label: "Terminal" },
2953
+ { key: "code", label: "Code block" },
2954
+ { key: "bug", label: "Bug" },
2955
+ { key: "package", label: "Package" },
2956
+ { key: "database", label: "Database" },
2957
+ { key: "browser", label: "Browser" },
2958
+ { key: "puzzle-01", label: "Plugin" },
2959
+ { key: "coding-branch", label: "Branch" },
2960
+ { key: "coding-commit", label: "Commit" },
2961
+ { key: "coding-pull-request", label: "Pull request" },
2962
+ { key: "robot", label: "Bot" },
2963
+ { key: "blockchain", label: "Blockchain" },
2964
+ // General & status
2965
+ { key: "layers", label: "Layers" },
2966
+ { key: "settings-01", label: "Settings" },
2967
+ { key: "home", label: "Home" },
2968
+ { key: "eye", label: "View" },
2969
+ { key: "link-01", label: "Link" },
2970
+ { key: "download-01", label: "Download" },
2971
+ { key: "upload-01", label: "Upload" },
2972
+ { key: "trash", label: "Delete" },
2973
+ { key: "share", label: "Share" },
2974
+ { key: "life-buoy", label: "Support" },
2975
+ { key: "rocket", label: "Rocket" },
2976
+ { key: "compass", label: "Compass" },
2977
+ { key: "star", label: "Star" },
2978
+ { key: "crown", label: "Crown" },
2979
+ { key: "gift", label: "Gift" },
2980
+ { key: "ticket", label: "Ticket" },
2981
+ { key: "tag", label: "Tag" },
2982
+ { key: "cart", label: "Cart" },
2983
+ { key: "thumbs-up", label: "Thumbs up" },
2984
+ { key: "flag-01", label: "Flag" },
2985
+ { key: "bookmark", label: "Bookmark" },
2986
+ { key: "pin", label: "Pin" },
2987
+ { key: "check-circle", label: "Check" },
2988
+ { key: "check-square", label: "Checkbox" },
2989
+ { key: "info-circle", label: "Info" },
2990
+ { key: "info", label: "Info alt" },
2991
+ { key: "question-circle", label: "Help" },
2992
+ { key: "alert-triangle", label: "Warning" },
2993
+ { key: "hash", label: "Hashtag" },
2994
+ { key: "pencil", label: "Edit" },
2995
+ { key: "lightning", label: "Lightning" },
2996
+ { key: "globe-01", label: "Globe" },
2997
+ { key: "scale-balanced", label: "Balance" },
2998
+ { key: "certified-01", label: "Certified" }
2999
+ ];
3000
+
3001
+ // src/assets/fae-avatar.ts
3002
+ var FAE_AVATAR_DATA_URI = "data:image/png;base64,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";
3003
+
3004
+ // src/components/agent-mark.tsx
3005
+ import { jsx as jsx15 } from "react/jsx-runtime";
3006
+ function AgentMark({ agent, className = "", faeAvatarSrc = FAE_AVATAR_DATA_URI }) {
3007
+ return agent === "mingo" ? /* @__PURE__ */ jsx15(MingoIcon, { className, "aria-hidden": "true", focusable: "false" }) : /* @__PURE__ */ jsx15("img", { src: faeAvatarSrc, alt: "", className });
3008
+ }
3009
+
1444
3010
  // src/utils/image-proxy.ts
1445
3011
  function getProxiedImageUrl(imageUrl, options) {
1446
3012
  if (!imageUrl) return null;
@@ -1493,6 +3059,42 @@ function skipsImageOptimizer(url) {
1493
3059
  }
1494
3060
  }
1495
3061
 
3062
+ // src/components/icon-display.tsx
3063
+ import { jsx as jsx16 } from "react/jsx-runtime";
3064
+ var BRAND_MARK_NAMES = /* @__PURE__ */ new Set(["fae", "mingo"]);
3065
+ function EntityIcon({
3066
+ icon,
3067
+ size: size2 = 20,
3068
+ className
3069
+ }) {
3070
+ if (icon?.url) {
3071
+ return /* @__PURE__ */ jsx16(
3072
+ next_image_default,
3073
+ {
3074
+ src: icon.url,
3075
+ alt: "",
3076
+ width: size2,
3077
+ height: size2,
3078
+ className,
3079
+ style: { objectFit: "contain" },
3080
+ unoptimized: true
3081
+ }
3082
+ );
3083
+ }
3084
+ if (icon?.name && BRAND_MARK_NAMES.has(icon.name)) {
3085
+ return /* @__PURE__ */ jsx16(
3086
+ "span",
3087
+ {
3088
+ className: `inline-flex${className ? ` ${className}` : ""}`,
3089
+ style: className ? void 0 : { width: size2, height: size2 },
3090
+ children: /* @__PURE__ */ jsx16(AgentMark, { agent: icon.name, className: "h-full w-full" })
3091
+ }
3092
+ );
3093
+ }
3094
+ const Glyph = resolveIcon(icon?.name ?? void 0);
3095
+ return /* @__PURE__ */ jsx16(Glyph, { size: size2, className, ...icon?.props ?? {} });
3096
+ }
3097
+
1496
3098
  // src/utils/escape-regexp.ts
1497
3099
  function escapeRegExp(value) {
1498
3100
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -1547,7 +3149,7 @@ function buildAnchorProps(href, isNewTab) {
1547
3149
  }
1548
3150
 
1549
3151
  // src/components/chat/entity-cards/entity-author-card.tsx
1550
- import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
3152
+ import { jsx as jsx17, jsxs as jsxs9 } from "react/jsx-runtime";
1551
3153
  var EMPTY_AUTHOR_PLACEHOLDER = {
1552
3154
  full_name: "\u2014",
1553
3155
  avatar_url: null,
@@ -1559,9 +3161,9 @@ function EntityMetadataValueCell({
1559
3161
  className,
1560
3162
  uppercase = true
1561
3163
  }) {
1562
- return /* @__PURE__ */ jsx13("div", { className: `flex flex-col gap-3 p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxs8("div", { className: "flex flex-col gap-0", children: [
1563
- typeof value === "string" ? /* @__PURE__ */ jsx13("p", { className: "text-ods-text-primary text-h4", children: uppercase ? value.toLocaleUpperCase() : value }) : /* @__PURE__ */ jsx13("div", { className: "flex min-h-6 items-center", children: value }),
1564
- /* @__PURE__ */ jsx13("p", { className: "text-ods-text-secondary text-h6", children: label })
3164
+ return /* @__PURE__ */ jsx17("div", { className: `flex flex-col gap-3 p-4 ${className ?? ""}`, children: /* @__PURE__ */ jsxs9("div", { className: "flex flex-col gap-0", children: [
3165
+ typeof value === "string" ? /* @__PURE__ */ jsx17("p", { className: "text-ods-text-primary text-h4", children: uppercase ? value.toLocaleUpperCase() : value }) : /* @__PURE__ */ jsx17("div", { className: "flex min-h-6 items-center", children: value }),
3166
+ /* @__PURE__ */ jsx17("p", { className: "text-ods-text-secondary text-h6", children: label })
1565
3167
  ] }) });
1566
3168
  }
1567
3169
  function EntityMetadataAuthorCell({
@@ -1572,8 +3174,8 @@ function EntityMetadataAuthorCell({
1572
3174
  }) {
1573
3175
  const trimmedName = typeof author.full_name === "string" ? author.full_name.trim() : "";
1574
3176
  const fullName = trimmedName || "Unknown Author";
1575
- return /* @__PURE__ */ jsxs8("div", { className: `flex items-center gap-3 p-4 ${className ?? ""}`, children: [
1576
- /* @__PURE__ */ jsx13(
3177
+ return /* @__PURE__ */ jsxs9("div", { className: `flex items-center gap-3 p-4 ${className ?? ""}`, children: [
3178
+ /* @__PURE__ */ jsx17(
1577
3179
  SquareAvatar,
1578
3180
  {
1579
3181
  src: author.avatar_url || "",
@@ -1583,9 +3185,9 @@ function EntityMetadataAuthorCell({
1583
3185
  variant: "round"
1584
3186
  }
1585
3187
  ),
1586
- /* @__PURE__ */ jsxs8("div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
1587
- /* @__PURE__ */ jsx13("p", { className: "truncate text-ods-text-primary text-h3", title: fullName, children: authorHref && trimmedName ? /* @__PURE__ */ jsx13(next_link_default, { href: authorHref, className: "transition-colors hover:text-ods-accent", children: fullName }) : fullName }),
1588
- /* @__PURE__ */ jsx13("p", { className: "text-ods-text-secondary text-h6", children: author.job_title || roleLabel })
3188
+ /* @__PURE__ */ jsxs9("div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
3189
+ /* @__PURE__ */ jsx17("p", { className: "truncate text-ods-text-primary text-h3", title: fullName, children: authorHref && trimmedName ? /* @__PURE__ */ jsx17(next_link_default, { href: authorHref, className: "transition-colors hover:text-ods-accent", children: fullName }) : fullName }),
3190
+ /* @__PURE__ */ jsx17("p", { className: "text-ods-text-secondary text-h6", children: author.job_title || roleLabel })
1589
3191
  ] })
1590
3192
  ] });
1591
3193
  }
@@ -1609,12 +3211,12 @@ function EntityAuthorCard({
1609
3211
  const totalCells = extras.length + (showDateCell ? 1 : 0) + 1;
1610
3212
  const gridColsClass = totalCells >= 4 ? "md:grid-cols-4" : totalCells === 3 ? "md:grid-cols-3" : totalCells === 2 ? "md:grid-cols-2" : "md:grid-cols-1";
1611
3213
  const dividerClass = "border-b md:border-b-0 md:border-r border-ods-border";
1612
- return /* @__PURE__ */ jsxs8(
3214
+ return /* @__PURE__ */ jsxs9(
1613
3215
  "div",
1614
3216
  {
1615
3217
  className: `grid grid-cols-1 ${gridColsClass} w-full overflow-hidden rounded-md border border-ods-border ${className ?? ""}`,
1616
3218
  children: [
1617
- extras.map((cell, i) => /* @__PURE__ */ jsx13(
3219
+ extras.map((cell, i) => /* @__PURE__ */ jsx17(
1618
3220
  EntityMetadataValueCell,
1619
3221
  {
1620
3222
  value: cell.value,
@@ -1624,18 +3226,18 @@ function EntityAuthorCard({
1624
3226
  },
1625
3227
  `${cell.label}-${i}`
1626
3228
  )),
1627
- showDateCell && /* @__PURE__ */ jsx13(EntityMetadataValueCell, { value: dateLabel, label: publishedLabel, uppercase: false, className: dividerClass }),
1628
- /* @__PURE__ */ jsx13(EntityMetadataAuthorCell, { author: effectiveAuthor, roleLabel, authorHref })
3229
+ showDateCell && /* @__PURE__ */ jsx17(EntityMetadataValueCell, { value: dateLabel, label: publishedLabel, uppercase: false, className: dividerClass }),
3230
+ /* @__PURE__ */ jsx17(EntityMetadataAuthorCell, { author: effectiveAuthor, roleLabel, authorHref })
1629
3231
  ]
1630
3232
  }
1631
3233
  );
1632
3234
  }
1633
3235
 
1634
3236
  // src/components/chat/entity-cards/blog-image-placeholder.tsx
1635
- import { jsx as jsx14 } from "react/jsx-runtime";
3237
+ import { jsx as jsx18 } from "react/jsx-runtime";
1636
3238
  function BlogImagePlaceholder({ imageUrl, title, className = "" }) {
1637
3239
  if (!imageUrl) return null;
1638
- return /* @__PURE__ */ jsx14("span", { className: `relative block h-full w-full overflow-hidden bg-ods-bg ${className}`, children: /* @__PURE__ */ jsx14(
3240
+ return /* @__PURE__ */ jsx18("span", { className: `relative block h-full w-full overflow-hidden bg-ods-bg ${className}`, children: /* @__PURE__ */ jsx18(
1639
3241
  next_image_default,
1640
3242
  {
1641
3243
  src: imageUrl,
@@ -1654,7 +3256,7 @@ function BlogImagePlaceholder({ imageUrl, title, className = "" }) {
1654
3256
  }
1655
3257
 
1656
3258
  // src/components/chat/entity-cards/content-card-frame.tsx
1657
- import { jsx as jsx15 } from "react/jsx-runtime";
3259
+ import { jsx as jsx19 } from "react/jsx-runtime";
1658
3260
  var CONTENT_CARD_FRAME_CLASS = cn(
1659
3261
  "group isolate overflow-hidden rounded-2xl",
1660
3262
  "border border-ods-border bg-transparent",
@@ -1663,15 +3265,15 @@ var CONTENT_CARD_FRAME_CLASS = cn(
1663
3265
  );
1664
3266
  var CONTENT_CARD_SKELETON_FRAME_CLASS = "overflow-hidden rounded-2xl border border-ods-border bg-transparent";
1665
3267
  function ContentCardFrame({ as: Tag2 = "article", className, children, ...rest }) {
1666
- return /* @__PURE__ */ jsx15(Tag2, { className: cn(CONTENT_CARD_FRAME_CLASS, Tag2 === "a" && "no-underline", className), ...rest, children });
3268
+ return /* @__PURE__ */ jsx19(Tag2, { className: cn(CONTENT_CARD_FRAME_CLASS, Tag2 === "a" && "no-underline", className), ...rest, children });
1667
3269
  }
1668
3270
 
1669
3271
  // src/components/chat/entity-cards/use-cover-image-fallback.ts
1670
- import { useCallback as useCallback2, useState as useState3 } from "react";
3272
+ import { useCallback as useCallback3, useState as useState4 } from "react";
1671
3273
  function useCoverImageFallback(imageUrl, placeholderUrl) {
1672
- const [failed, setFailed] = useState3(() => /* @__PURE__ */ new Set());
3274
+ const [failed, setFailed] = useState4(() => /* @__PURE__ */ new Set());
1673
3275
  const src = imageUrl && !failed.has(imageUrl) ? imageUrl : placeholderUrl && !failed.has(placeholderUrl) ? placeholderUrl : null;
1674
- const onError = useCallback2(() => {
3276
+ const onError = useCallback3(() => {
1675
3277
  if (!src) return;
1676
3278
  setFailed((prev) => new Set(prev).add(src));
1677
3279
  }, [src]);
@@ -1683,8 +3285,8 @@ var hideOnError = (e) => {
1683
3285
  };
1684
3286
 
1685
3287
  // src/components/chat/entity-cards/entity-portrait-card.tsx
1686
- import { useState as useState4 } from "react";
1687
- import { jsx as jsx16, jsxs as jsxs9 } from "react/jsx-runtime";
3288
+ import { useState as useState5 } from "react";
3289
+ import { jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
1688
3290
  var MIN_WIDE_RATIO = 1.3;
1689
3291
  function EntityPortraitCard({
1690
3292
  href,
@@ -1700,7 +3302,7 @@ function EntityPortraitCard({
1700
3302
  className
1701
3303
  }) {
1702
3304
  const { src, onError: onMediaError } = useCoverImageFallback(imageUrl, placeholderUrl);
1703
- const [measured, setMeasured] = useState4(null);
3305
+ const [measured, setMeasured] = useState5(null);
1704
3306
  const isWide = measured?.src === src ? measured.isWide : null;
1705
3307
  const onMediaLoad = (e) => {
1706
3308
  const img = e.currentTarget;
@@ -1709,13 +3311,13 @@ function EntityPortraitCard({
1709
3311
  }
1710
3312
  };
1711
3313
  const edgeColor = useImageEdgeColor(isWide === false ? src : null, "var(--color-bg-surface)");
1712
- return /* @__PURE__ */ jsx16("a", { href, target, rel, className: cn("block h-full", className), "aria-label": `Open ${title}`, children: /* @__PURE__ */ jsxs9(Card, { className: cn(CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col gap-6 p-6"), children: [
1713
- /* @__PURE__ */ jsx16(
3314
+ return /* @__PURE__ */ jsx20("a", { href, target, rel, className: cn("block h-full", className), "aria-label": `Open ${title}`, children: /* @__PURE__ */ jsxs10(Card, { className: cn(CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col gap-6 p-6"), children: [
3315
+ /* @__PURE__ */ jsx20(
1714
3316
  "div",
1715
3317
  {
1716
3318
  className: "relative flex aspect-[1200/630] w-full shrink-0 items-center justify-center overflow-hidden rounded-sm bg-ods-bg transition-colors duration-300",
1717
3319
  style: isWide === false ? { backgroundColor: edgeColor } : void 0,
1718
- children: src && /* @__PURE__ */ jsx16(
3320
+ children: src && /* @__PURE__ */ jsx20(
1719
3321
  next_image_default,
1720
3322
  {
1721
3323
  src,
@@ -1730,8 +3332,8 @@ function EntityPortraitCard({
1730
3332
  )
1731
3333
  }
1732
3334
  ),
1733
- /* @__PURE__ */ jsxs9("div", { className: "flex h-[72px] shrink-0 flex-col justify-center gap-1.5", children: [
1734
- typeLabel && /* @__PURE__ */ jsx16(
3335
+ /* @__PURE__ */ jsxs10("div", { className: "flex h-[72px] shrink-0 flex-col justify-center gap-1.5", children: [
3336
+ typeLabel && /* @__PURE__ */ jsx20(
1735
3337
  StatusBadge,
1736
3338
  {
1737
3339
  variant: "button",
@@ -1741,7 +3343,7 @@ function EntityPortraitCard({
1741
3343
  className: "self-start"
1742
3344
  }
1743
3345
  ),
1744
- /* @__PURE__ */ jsx16(
3346
+ /* @__PURE__ */ jsx20(
1745
3347
  "h3",
1746
3348
  {
1747
3349
  className: cn(
@@ -1753,9 +3355,9 @@ function EntityPortraitCard({
1753
3355
  }
1754
3356
  )
1755
3357
  ] }),
1756
- /* @__PURE__ */ jsx16("div", { className: "flex h-[60px] shrink-0 items-center", children: person && /* @__PURE__ */ jsxs9("div", { className: "flex w-full min-w-0 items-center gap-3", children: [
1757
- /* @__PURE__ */ jsxs9("div", { className: "relative h-12 w-12 shrink-0", children: [
1758
- person.avatarUrl ? /* @__PURE__ */ jsx16(
3358
+ /* @__PURE__ */ jsx20("div", { className: "flex h-[60px] shrink-0 items-center", children: person && /* @__PURE__ */ jsxs10("div", { className: "flex w-full min-w-0 items-center gap-3", children: [
3359
+ /* @__PURE__ */ jsxs10("div", { className: "relative h-12 w-12 shrink-0", children: [
3360
+ person.avatarUrl ? /* @__PURE__ */ jsx20(
1759
3361
  next_image_default,
1760
3362
  {
1761
3363
  src: person.avatarUrl,
@@ -1765,8 +3367,8 @@ function EntityPortraitCard({
1765
3367
  height: 48,
1766
3368
  unoptimized: true
1767
3369
  }
1768
- ) : /* @__PURE__ */ jsx16("div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx16("span", { className: "text-ods-text-secondary text-h4", children: person.name.charAt(0).toUpperCase() }) }),
1769
- person.iconOverlayUrl && /* @__PURE__ */ jsx16("div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ jsx16(
3370
+ ) : /* @__PURE__ */ jsx20("div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx20("span", { className: "text-ods-text-secondary text-h4", children: person.name.charAt(0).toUpperCase() }) }),
3371
+ person.iconOverlayUrl && /* @__PURE__ */ jsx20("div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ jsx20(
1770
3372
  next_image_default,
1771
3373
  {
1772
3374
  src: person.iconOverlayUrl,
@@ -1778,26 +3380,26 @@ function EntityPortraitCard({
1778
3380
  }
1779
3381
  ) })
1780
3382
  ] }),
1781
- /* @__PURE__ */ jsxs9("div", { className: "flex min-w-0 flex-col", children: [
1782
- /* @__PURE__ */ jsx16("span", { className: "truncate font-bold text-ods-text-primary text-h6", children: person.name }),
1783
- person.subtitle && /* @__PURE__ */ jsx16("span", { className: "truncate text-ods-text-secondary text-h6", children: person.subtitle })
3383
+ /* @__PURE__ */ jsxs10("div", { className: "flex min-w-0 flex-col", children: [
3384
+ /* @__PURE__ */ jsx20("span", { className: "truncate font-bold text-ods-text-primary text-h6", children: person.name }),
3385
+ person.subtitle && /* @__PURE__ */ jsx20("span", { className: "truncate text-ods-text-secondary text-h6", children: person.subtitle })
1784
3386
  ] })
1785
3387
  ] }) })
1786
3388
  ] }) });
1787
3389
  }
1788
3390
 
1789
3391
  // src/components/features/platform-badge.tsx
1790
- import { Globe } from "lucide-react";
3392
+ import { Globe as Globe2 } from "lucide-react";
1791
3393
 
1792
3394
  // src/components/flamingo-logo.tsx
1793
- import { jsx as jsx17 } from "react/jsx-runtime";
1794
- function FlamingoLogo({
3395
+ import { jsx as jsx21 } from "react/jsx-runtime";
3396
+ function FlamingoLogo2({
1795
3397
  className = "",
1796
3398
  color = "var(--ods-flamingo-pink-base)",
1797
3399
  size: size2 = 120,
1798
3400
  ...props
1799
3401
  }) {
1800
- return /* @__PURE__ */ jsx17(
3402
+ return /* @__PURE__ */ jsx21(
1801
3403
  "svg",
1802
3404
  {
1803
3405
  width: size2,
@@ -1806,7 +3408,7 @@ function FlamingoLogo({
1806
3408
  xmlns: "http://www.w3.org/2000/svg",
1807
3409
  className,
1808
3410
  ...props,
1809
- children: /* @__PURE__ */ jsx17(
3411
+ children: /* @__PURE__ */ jsx21(
1810
3412
  "path",
1811
3413
  {
1812
3414
  fillRule: "evenodd",
@@ -1820,15 +3422,15 @@ function FlamingoLogo({
1820
3422
  }
1821
3423
 
1822
3424
  // src/components/openmsp-logo.tsx
1823
- import { jsx as jsx18, jsxs as jsxs10 } from "react/jsx-runtime";
1824
- function OpenmspLogo({
3425
+ import { jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
3426
+ function OpenmspLogo2({
1825
3427
  className = "",
1826
3428
  frontBubbleColor = "#000000",
1827
3429
  innerFrontBubbleColor = "#ffffff",
1828
3430
  backBubbleColor = "#ffffff",
1829
3431
  ...props
1830
3432
  }) {
1831
- return /* @__PURE__ */ jsxs10(
3433
+ return /* @__PURE__ */ jsxs11(
1832
3434
  "svg",
1833
3435
  {
1834
3436
  width: "97",
@@ -1839,35 +3441,35 @@ function OpenmspLogo({
1839
3441
  className,
1840
3442
  ...props,
1841
3443
  children: [
1842
- /* @__PURE__ */ jsx18(
3444
+ /* @__PURE__ */ jsx22(
1843
3445
  "path",
1844
3446
  {
1845
3447
  d: "M73.933 0C75.7003 0 77.133 1.43269 77.133 3.2V54.4C77.133 56.1673 75.7003 57.6 73.933 57.6H3.53301C1.7657 57.6 0.333008 56.1673 0.333008 54.4V3.2C0.333008 1.43269 1.7657 0 3.53301 0H73.933ZM10.1076 47.6494C10.1076 48.0912 10.4658 48.4494 10.9076 48.4494H66.5584C67.0002 48.4494 67.3584 48.0912 67.3584 47.6494V9.95059C67.3584 9.50876 67.0002 9.15059 66.5584 9.15059H10.9076C10.4658 9.15059 10.1076 9.50876 10.1076 9.95059V47.6494Z",
1846
3448
  fill: backBubbleColor
1847
3449
  }
1848
3450
  ),
1849
- /* @__PURE__ */ jsx18(
3451
+ /* @__PURE__ */ jsx22(
1850
3452
  "path",
1851
3453
  {
1852
3454
  d: "M19.5332 22.4C19.5332 20.6326 20.9659 19.2 22.7332 19.2H93.1332C94.9005 19.2 96.3332 20.6326 96.3332 22.4V76.8C96.3332 78.2222 95.3945 79.4737 94.0292 79.8719L39.7572 95.7013C39.2452 95.8506 38.7332 95.4666 38.7332 94.9333V80C38.7332 79.5581 38.375 79.2 37.9332 79.2H22.7332C20.9659 79.2 19.5332 77.7673 19.5332 76V22.4Z",
1853
3455
  fill: innerFrontBubbleColor
1854
3456
  }
1855
3457
  ),
1856
- /* @__PURE__ */ jsx18(
3458
+ /* @__PURE__ */ jsx22(
1857
3459
  "path",
1858
3460
  {
1859
3461
  d: "M93.1332 19.2C94.9005 19.2 96.3332 20.6326 96.3332 22.4V76.8C96.3332 78.2222 95.3945 79.4737 94.0292 79.8719L39.7572 95.7013C39.2452 95.8506 38.7332 95.4666 38.7332 94.9333V80C38.7332 79.5581 38.375 79.2 37.9332 79.2H22.7332C20.9659 79.2 19.5332 77.7673 19.5332 76V22.4C19.5332 20.6326 20.9659 19.2 22.7332 19.2H93.1332ZM48.3377 82.1286C48.3355 82.6633 48.8484 83.0497 49.3617 82.9L86.1572 72.1672C86.4985 72.0676 86.7332 71.7547 86.7332 71.3992V29.6C86.7332 29.1581 86.375 28.8 85.9332 28.8H29.9332C29.4914 28.8 29.1332 29.1581 29.1332 29.6V68.8C29.1332 69.2418 29.4914 69.6 29.9332 69.6H47.5869C48.03 69.6 48.3887 69.9602 48.3869 70.4033L48.3377 82.1286Z",
1860
3462
  fill: frontBubbleColor
1861
3463
  }
1862
3464
  ),
1863
- /* @__PURE__ */ jsx18("circle", { cx: "45.1334", cy: "44.8", r: "6.4", fill: frontBubbleColor })
3465
+ /* @__PURE__ */ jsx22("circle", { cx: "45.1334", cy: "44.8", r: "6.4", fill: frontBubbleColor })
1864
3466
  ]
1865
3467
  }
1866
3468
  );
1867
3469
  }
1868
3470
 
1869
3471
  // src/components/features/platform-badge.tsx
1870
- import { jsx as jsx19, jsxs as jsxs11 } from "react/jsx-runtime";
3472
+ import { jsx as jsx23, jsxs as jsxs12 } from "react/jsx-runtime";
1871
3473
  var sizeClasses = {
1872
3474
  xs: {
1873
3475
  container: "gap-1 px-1.5 py-0.5",
@@ -1890,8 +3492,8 @@ var PlatformIcon = ({ platform, className }) => {
1890
3492
  const size2 = sizeMatch ? parseInt(sizeMatch[1]) * 4 : 16;
1891
3493
  switch (platform) {
1892
3494
  case "openmsp":
1893
- return /* @__PURE__ */ jsx19(
1894
- OpenmspLogo,
3495
+ return /* @__PURE__ */ jsx23(
3496
+ OpenmspLogo2,
1895
3497
  {
1896
3498
  className,
1897
3499
  frontBubbleColor: "currentColor",
@@ -1901,19 +3503,19 @@ var PlatformIcon = ({ platform, className }) => {
1901
3503
  );
1902
3504
  case "flamingo":
1903
3505
  case "flamingo-teaser":
1904
- return /* @__PURE__ */ jsx19(FlamingoLogo, { className });
3506
+ return /* @__PURE__ */ jsx23(FlamingoLogo2, { className });
1905
3507
  case "openframe":
1906
- return /* @__PURE__ */ jsx19(OpenFrameLogo, { className });
3508
+ return /* @__PURE__ */ jsx23(OpenFrameLogo, { className });
1907
3509
  case "tmcg":
1908
- return /* @__PURE__ */ jsx19(MiamiCyberGangLogoFaceOnly, { size: size2, className });
3510
+ return /* @__PURE__ */ jsx23(MiamiCyberGangLogoFaceOnly, { size: size2, className });
1909
3511
  case "company-hub":
1910
3512
  case "marketing-hub":
1911
3513
  case "product-hub":
1912
3514
  case "revenue-hub":
1913
3515
  case "people-hub":
1914
- return /* @__PURE__ */ jsx19(FlamingoLogo, { className, fill: "currentColor" });
3516
+ return /* @__PURE__ */ jsx23(FlamingoLogo2, { className, fill: "currentColor" });
1915
3517
  default:
1916
- return /* @__PURE__ */ jsx19(Globe, { className });
3518
+ return /* @__PURE__ */ jsx23(Globe2, { className });
1917
3519
  }
1918
3520
  };
1919
3521
  function PlatformBadge({ platform, size: size2 = "sm", showLabel = true, className }) {
@@ -1922,7 +3524,7 @@ function PlatformBadge({ platform, size: size2 = "sm", showLabel = true, classNa
1922
3524
  }
1923
3525
  const sizes = sizeClasses[size2];
1924
3526
  const colors = getPlatformBrandClasses(platform.name);
1925
- return /* @__PURE__ */ jsxs11(
3527
+ return /* @__PURE__ */ jsxs12(
1926
3528
  "div",
1927
3529
  {
1928
3530
  className: cn(
@@ -1935,16 +3537,16 @@ function PlatformBadge({ platform, size: size2 = "sm", showLabel = true, classNa
1935
3537
  className
1936
3538
  ),
1937
3539
  children: [
1938
- /* @__PURE__ */ jsx19(PlatformIcon, { platform: platform.name, className: sizes.icon }),
1939
- showLabel && /* @__PURE__ */ jsx19("span", { className: sizes.text, children: platform.display_name || platform.name })
3540
+ /* @__PURE__ */ jsx23(PlatformIcon, { platform: platform.name, className: sizes.icon }),
3541
+ showLabel && /* @__PURE__ */ jsx23("span", { className: sizes.text, children: platform.display_name || platform.name })
1940
3542
  ]
1941
3543
  }
1942
3544
  );
1943
3545
  }
1944
3546
 
1945
3547
  // src/components/chat/entity-cards/admin-content-card.tsx
1946
- import { useState as useState5 } from "react";
1947
- import { Fragment as Fragment3, jsx as jsx20, jsxs as jsxs12 } from "react/jsx-runtime";
3548
+ import { useState as useState6 } from "react";
3549
+ import { Fragment as Fragment3, jsx as jsx24, jsxs as jsxs13 } from "react/jsx-runtime";
1948
3550
  function AdminContentCard({
1949
3551
  imageUrl,
1950
3552
  placeholderUrl,
@@ -1959,15 +3561,15 @@ function AdminContentCard({
1959
3561
  subtitleRow = true,
1960
3562
  className
1961
3563
  }) {
1962
- const [imageError, setImageError] = useState5(false);
1963
- const [loadedUrl, setLoadedUrl] = useState5(null);
3564
+ const [imageError, setImageError] = useState6(false);
3565
+ const [loadedUrl, setLoadedUrl] = useState6(null);
1964
3566
  const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
1965
3567
  const imageLoaded = Boolean(displayUrl) && loadedUrl === displayUrl;
1966
3568
  const imageBgColor = useImageEdgeColor(displayUrl || null, "transparent");
1967
- return /* @__PURE__ */ jsxs12("article", { className: cn(CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), children: [
1968
- /* @__PURE__ */ jsx20("div", { className: "relative aspect-[3/2] w-full shrink-0 overflow-hidden", style: { backgroundColor: imageBgColor }, children: displayUrl ? /* @__PURE__ */ jsxs12(Fragment3, { children: [
1969
- !imageLoaded && /* @__PURE__ */ jsx20("div", { className: "absolute inset-0 animate-pulse bg-ods-border/20" }),
1970
- /* @__PURE__ */ jsx20(
3569
+ return /* @__PURE__ */ jsxs13("article", { className: cn(CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), children: [
3570
+ /* @__PURE__ */ jsx24("div", { className: "relative aspect-[3/2] w-full shrink-0 overflow-hidden", style: { backgroundColor: imageBgColor }, children: displayUrl ? /* @__PURE__ */ jsxs13(Fragment3, { children: [
3571
+ !imageLoaded && /* @__PURE__ */ jsx24("div", { className: "absolute inset-0 animate-pulse bg-ods-border/20" }),
3572
+ /* @__PURE__ */ jsx24(
1971
3573
  next_image_default,
1972
3574
  {
1973
3575
  src: displayUrl,
@@ -1985,13 +3587,13 @@ function AdminContentCard({
1985
3587
  onError: () => setImageError(true)
1986
3588
  }
1987
3589
  )
1988
- ] }) : /* @__PURE__ */ jsx20("div", { className: "absolute inset-0 bg-ods-bg" }) }),
1989
- /* @__PURE__ */ jsxs12("div", { className: "flex flex-1 flex-col gap-3 p-5", children: [
1990
- /* @__PURE__ */ jsx20("h3", { className: cn("line-clamp-2 break-words text-ods-text-primary text-h3", reserveRows && "min-h-[2lh]"), children: title }),
1991
- (subtitle || reserveRows && subtitleRow) && /* @__PURE__ */ jsx20("p", { className: cn("truncate text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: subtitle }),
1992
- (summary || reserveRows) && /* @__PURE__ */ jsx20("p", { className: cn("line-clamp-2 text-ods-text-secondary text-h6", reserveRows && "min-h-[2lh]"), children: summary }),
1993
- (Number(platforms?.length) > 0 || badges || reserveRows) && /* @__PURE__ */ jsxs12("div", { className: cn("flex flex-wrap items-center gap-2", reserveRows && "min-h-7"), children: [
1994
- platforms?.map((p) => /* @__PURE__ */ jsx20(
3590
+ ] }) : /* @__PURE__ */ jsx24("div", { className: "absolute inset-0 bg-ods-bg" }) }),
3591
+ /* @__PURE__ */ jsxs13("div", { className: "flex flex-1 flex-col gap-3 p-5", children: [
3592
+ /* @__PURE__ */ jsx24("h3", { className: cn("line-clamp-2 break-words text-ods-text-primary text-h3", reserveRows && "min-h-[2lh]"), children: title }),
3593
+ (subtitle || reserveRows && subtitleRow) && /* @__PURE__ */ jsx24("p", { className: cn("truncate text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: subtitle }),
3594
+ (summary || reserveRows) && /* @__PURE__ */ jsx24("p", { className: cn("line-clamp-2 text-ods-text-secondary text-h6", reserveRows && "min-h-[2lh]"), children: summary }),
3595
+ (Number(platforms?.length) > 0 || badges || reserveRows) && /* @__PURE__ */ jsxs13("div", { className: cn("flex flex-wrap items-center gap-2", reserveRows && "min-h-7"), children: [
3596
+ platforms?.map((p) => /* @__PURE__ */ jsx24(
1995
3597
  PlatformBadge,
1996
3598
  {
1997
3599
  platform: { id: p.id || p.platform_id || "", name: p.name, display_name: p.display_name || p.name },
@@ -2001,21 +3603,21 @@ function AdminContentCard({
2001
3603
  )),
2002
3604
  badges
2003
3605
  ] }),
2004
- (meta || reserveRows) && /* @__PURE__ */ jsx20("div", { className: cn("flex items-center gap-3 text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: meta }),
2005
- actions && /* @__PURE__ */ jsx20("div", { className: "mt-auto flex items-center justify-between border-t border-ods-border pt-3", children: actions })
3606
+ (meta || reserveRows) && /* @__PURE__ */ jsx24("div", { className: cn("flex items-center gap-3 text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: meta }),
3607
+ actions && /* @__PURE__ */ jsx24("div", { className: "mt-auto flex items-center justify-between border-t border-ods-border pt-3", children: actions })
2006
3608
  ] })
2007
3609
  ] });
2008
3610
  }
2009
3611
 
2010
3612
  // src/components/chat/entity-cards/admin-content-card-grid.tsx
2011
- import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
3613
+ import { jsx as jsx25, jsxs as jsxs14 } from "react/jsx-runtime";
2012
3614
  var ADMIN_CONTENT_CARD_GRID_CLASS = "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-[var(--spacing-system-lf)]";
2013
3615
  function AdminContentCardSkeleton({
2014
3616
  className,
2015
3617
  actions = true,
2016
3618
  subtitleRow = true
2017
3619
  }) {
2018
- return /* @__PURE__ */ jsxs13(
3620
+ return /* @__PURE__ */ jsxs14(
2019
3621
  "div",
2020
3622
  {
2021
3623
  className: cn(
@@ -2023,21 +3625,21 @@ function AdminContentCardSkeleton({
2023
3625
  className
2024
3626
  ),
2025
3627
  children: [
2026
- /* @__PURE__ */ jsx21("div", { className: "aspect-[3/2] w-full shrink-0 bg-ods-border/20" }),
2027
- /* @__PURE__ */ jsxs13("div", { className: "flex flex-1 flex-col gap-[var(--spacing-system-sf)] p-5", children: [
2028
- /* @__PURE__ */ jsx21("div", { className: "h-[2lh] w-full rounded bg-ods-border text-h3" }),
2029
- subtitleRow && /* @__PURE__ */ jsx21("div", { className: "h-[1lh] w-1/2 rounded bg-ods-border text-h6" }),
2030
- /* @__PURE__ */ jsx21("div", { className: "h-[2lh] w-full rounded bg-ods-border text-h6" }),
2031
- /* @__PURE__ */ jsxs13("div", { className: "flex h-7 items-center gap-[var(--spacing-system-xsf)]", children: [
2032
- /* @__PURE__ */ jsx21("div", { className: "h-5 w-20 rounded-full bg-ods-border" }),
2033
- /* @__PURE__ */ jsx21("div", { className: "h-5 w-24 rounded-full bg-ods-border" })
3628
+ /* @__PURE__ */ jsx25("div", { className: "aspect-[3/2] w-full shrink-0 bg-ods-border/20" }),
3629
+ /* @__PURE__ */ jsxs14("div", { className: "flex flex-1 flex-col gap-[var(--spacing-system-sf)] p-5", children: [
3630
+ /* @__PURE__ */ jsx25("div", { className: "h-[2lh] w-full rounded bg-ods-border text-h3" }),
3631
+ subtitleRow && /* @__PURE__ */ jsx25("div", { className: "h-[1lh] w-1/2 rounded bg-ods-border text-h6" }),
3632
+ /* @__PURE__ */ jsx25("div", { className: "h-[2lh] w-full rounded bg-ods-border text-h6" }),
3633
+ /* @__PURE__ */ jsxs14("div", { className: "flex h-7 items-center gap-[var(--spacing-system-xsf)]", children: [
3634
+ /* @__PURE__ */ jsx25("div", { className: "h-5 w-20 rounded-full bg-ods-border" }),
3635
+ /* @__PURE__ */ jsx25("div", { className: "h-5 w-24 rounded-full bg-ods-border" })
2034
3636
  ] }),
2035
- /* @__PURE__ */ jsx21("div", { className: "h-[1lh] w-32 rounded bg-ods-border text-h6" }),
2036
- actions && /* @__PURE__ */ jsxs13("div", { className: "mt-auto flex items-center justify-between border-t border-ods-border pt-[var(--spacing-system-sf)]", children: [
2037
- /* @__PURE__ */ jsx21("div", { className: "h-10 w-24 rounded bg-ods-border" }),
2038
- /* @__PURE__ */ jsxs13("div", { className: "flex gap-[var(--spacing-system-xsf)]", children: [
2039
- /* @__PURE__ */ jsx21("div", { className: "h-10 w-20 rounded bg-ods-border" }),
2040
- /* @__PURE__ */ jsx21("div", { className: "h-10 w-20 rounded bg-ods-border" })
3637
+ /* @__PURE__ */ jsx25("div", { className: "h-[1lh] w-32 rounded bg-ods-border text-h6" }),
3638
+ actions && /* @__PURE__ */ jsxs14("div", { className: "mt-auto flex items-center justify-between border-t border-ods-border pt-[var(--spacing-system-sf)]", children: [
3639
+ /* @__PURE__ */ jsx25("div", { className: "h-10 w-24 rounded bg-ods-border" }),
3640
+ /* @__PURE__ */ jsxs14("div", { className: "flex gap-[var(--spacing-system-xsf)]", children: [
3641
+ /* @__PURE__ */ jsx25("div", { className: "h-10 w-20 rounded bg-ods-border" }),
3642
+ /* @__PURE__ */ jsx25("div", { className: "h-10 w-20 rounded bg-ods-border" })
2041
3643
  ] })
2042
3644
  ] })
2043
3645
  ] })
@@ -2057,18 +3659,18 @@ function AdminContentCardGrid({
2057
3659
  }) {
2058
3660
  const gridClass = cn(ADMIN_CONTENT_CARD_GRID_CLASS, className);
2059
3661
  if (loading) {
2060
- return /* @__PURE__ */ jsx21("div", { className: gridClass, "data-state": "loading", children: Array.from({ length: pageSize }, (_, i) => /* @__PURE__ */ jsx21(Skeleton, {}, i)) });
3662
+ return /* @__PURE__ */ jsx25("div", { className: gridClass, "data-state": "loading", children: Array.from({ length: pageSize }, (_, i) => /* @__PURE__ */ jsx25(Skeleton, {}, i)) });
2061
3663
  }
2062
- const slots = Array.from({ length: Math.max(0, pageSize - items.length) }, (_, i) => /* @__PURE__ */ jsx21(Skeleton, { className: "invisible" }, `slot-${i}`));
3664
+ const slots = Array.from({ length: Math.max(0, pageSize - items.length) }, (_, i) => /* @__PURE__ */ jsx25(Skeleton, { className: "invisible" }, `slot-${i}`));
2063
3665
  if (items.length === 0) {
2064
- return /* @__PURE__ */ jsxs13("div", { className: "relative", "data-state": "empty", children: [
2065
- /* @__PURE__ */ jsx21("div", { "aria-hidden": true, className: gridClass, children: slots }),
2066
- /* @__PURE__ */ jsx21("div", { className: "absolute inset-x-0 top-0", children: empty })
3666
+ return /* @__PURE__ */ jsxs14("div", { className: "relative", "data-state": "empty", children: [
3667
+ /* @__PURE__ */ jsx25("div", { "aria-hidden": true, className: gridClass, children: slots }),
3668
+ /* @__PURE__ */ jsx25("div", { className: "absolute inset-x-0 top-0", children: empty })
2067
3669
  ] });
2068
3670
  }
2069
- return /* @__PURE__ */ jsxs13("div", { className: gridClass, "data-state": "items", children: [
2070
- items.map((item) => /* @__PURE__ */ jsx21("div", { className: "h-full", children: renderCard(item) }, itemKey(item))),
2071
- slots.length > 0 && /* @__PURE__ */ jsx21("div", { "aria-hidden": true, className: "contents", children: slots })
3671
+ return /* @__PURE__ */ jsxs14("div", { className: gridClass, "data-state": "items", children: [
3672
+ items.map((item) => /* @__PURE__ */ jsx25("div", { className: "h-full", children: renderCard(item) }, itemKey(item))),
3673
+ slots.length > 0 && /* @__PURE__ */ jsx25("div", { "aria-hidden": true, className: "contents", children: slots })
2072
3674
  ] });
2073
3675
  }
2074
3676
 
@@ -2088,7 +3690,7 @@ function getProxiedImageUrl2(imageUrl) {
2088
3690
  }
2089
3691
 
2090
3692
  // src/components/chat/entity-cards/employee-entry-card.tsx
2091
- import { Fragment as Fragment4, jsx as jsx22, jsxs as jsxs14 } from "react/jsx-runtime";
3693
+ import { Fragment as Fragment4, jsx as jsx26, jsxs as jsxs15 } from "react/jsx-runtime";
2092
3694
  var STATUS_BADGE_SCHEME = {
2093
3695
  published: "success",
2094
3696
  draft: "warning",
@@ -2101,7 +3703,7 @@ var STATUS_BADGE_SCHEME = {
2101
3703
  abandoned: "default"
2102
3704
  };
2103
3705
  function EmployeeEntryBadge({ children }) {
2104
- return /* @__PURE__ */ jsx22(StatusBadge, { text: children, colorScheme: "default", variant: "button", singleLine: true });
3706
+ return /* @__PURE__ */ jsx26(StatusBadge, { text: children, colorScheme: "default", variant: "button", singleLine: true });
2105
3707
  }
2106
3708
  function EmployeeEntryCard({
2107
3709
  entry,
@@ -2113,15 +3715,15 @@ function EmployeeEntryCard({
2113
3715
  anchorProps,
2114
3716
  className
2115
3717
  }) {
2116
- const card = /* @__PURE__ */ jsx22(
3718
+ const card = /* @__PURE__ */ jsx26(
2117
3719
  AdminContentCard,
2118
3720
  {
2119
3721
  imageUrl: entry.featured_image || entry.main_video_thumbnail,
2120
3722
  placeholderUrl,
2121
3723
  title: entry.title || untitledLabel,
2122
3724
  summary: (entry.summary ?? "").slice(0, 140) || "No description",
2123
- badges: entry.status || extraBadges ? /* @__PURE__ */ jsxs14(Fragment4, { children: [
2124
- entry.status ? /* @__PURE__ */ jsx22(
3725
+ badges: entry.status || extraBadges ? /* @__PURE__ */ jsxs15(Fragment4, { children: [
3726
+ entry.status ? /* @__PURE__ */ jsx26(
2125
3727
  StatusBadge,
2126
3728
  {
2127
3729
  text: entry.status,
@@ -2132,9 +3734,9 @@ function EmployeeEntryCard({
2132
3734
  ) : null,
2133
3735
  extraBadges
2134
3736
  ] }) : null,
2135
- meta: /* @__PURE__ */ jsxs14(Fragment4, { children: [
2136
- /* @__PURE__ */ jsxs14("span", { className: "flex min-w-0 items-center gap-2", children: [
2137
- entry.author?.avatar_url ? /* @__PURE__ */ jsx22(
3737
+ meta: /* @__PURE__ */ jsxs15(Fragment4, { children: [
3738
+ /* @__PURE__ */ jsxs15("span", { className: "flex min-w-0 items-center gap-2", children: [
3739
+ entry.author?.avatar_url ? /* @__PURE__ */ jsx26(
2138
3740
  next_image_default,
2139
3741
  {
2140
3742
  src: getProxiedImageUrl2(entry.author.avatar_url) ?? entry.author.avatar_url,
@@ -2145,9 +3747,9 @@ function EmployeeEntryCard({
2145
3747
  unoptimized: true
2146
3748
  }
2147
3749
  ) : null,
2148
- /* @__PURE__ */ jsx22("span", { className: "truncate", children: entry.author?.full_name ?? "" })
3750
+ /* @__PURE__ */ jsx26("span", { className: "truncate", children: entry.author?.full_name ?? "" })
2149
3751
  ] }),
2150
- dateLabel ? /* @__PURE__ */ jsx22("span", { children: dateLabel }) : null
3752
+ dateLabel ? /* @__PURE__ */ jsx26("span", { children: dateLabel }) : null
2151
3753
  ] }),
2152
3754
  actions,
2153
3755
  reserveRows: true,
@@ -2155,16 +3757,16 @@ function EmployeeEntryCard({
2155
3757
  className
2156
3758
  }
2157
3759
  );
2158
- return anchorProps ? /* @__PURE__ */ jsx22("a", { ...anchorProps, className: "block h-full", children: card }) : card;
3760
+ return anchorProps ? /* @__PURE__ */ jsx26("a", { ...anchorProps, className: "block h-full", children: card }) : card;
2159
3761
  }
2160
3762
  function EmployeeEntryCardSkeleton({ className, actions = false }) {
2161
- return /* @__PURE__ */ jsx22(AdminContentCardSkeleton, { className, actions, subtitleRow: false });
3763
+ return /* @__PURE__ */ jsx26(AdminContentCardSkeleton, { className, actions, subtitleRow: false });
2162
3764
  }
2163
3765
 
2164
3766
  // src/components/chat/entity-cards/what-i-shipped-card.tsx
2165
- import { jsx as jsx23 } from "react/jsx-runtime";
3767
+ import { jsx as jsx27 } from "react/jsx-runtime";
2166
3768
  function WhatIShippedCard({ entry, placeholderUrl, actions, anchorProps, className }) {
2167
- return /* @__PURE__ */ jsx23(
3769
+ return /* @__PURE__ */ jsx27(
2168
3770
  EmployeeEntryCard,
2169
3771
  {
2170
3772
  entry,
@@ -2179,17 +3781,17 @@ function WhatIShippedCard({ entry, placeholderUrl, actions, anchorProps, classNa
2179
3781
  var WhatIShippedCardSkeleton = EmployeeEntryCardSkeleton;
2180
3782
 
2181
3783
  // src/components/chat/entity-cards/how-i-work-card.tsx
2182
- import { jsx as jsx24 } from "react/jsx-runtime";
3784
+ import { jsx as jsx28 } from "react/jsx-runtime";
2183
3785
  function disciplineLabel(discipline) {
2184
3786
  return discipline.replace(/_/g, " ").replace(/\b\w/g, (ch) => ch.toUpperCase());
2185
3787
  }
2186
3788
  function HowIWorkCard({ entry, placeholderUrl, actions, anchorProps, className }) {
2187
- return /* @__PURE__ */ jsx24(
3789
+ return /* @__PURE__ */ jsx28(
2188
3790
  EmployeeEntryCard,
2189
3791
  {
2190
3792
  entry,
2191
3793
  dateLabel: entry.session_date ? formatDateUTC(entry.session_date, { fallback: "" }) || null : null,
2192
- extraBadges: entry.discipline ? /* @__PURE__ */ jsx24(EmployeeEntryBadge, { children: disciplineLabel(entry.discipline) }) : null,
3794
+ extraBadges: entry.discipline ? /* @__PURE__ */ jsx28(EmployeeEntryBadge, { children: disciplineLabel(entry.discipline) }) : null,
2193
3795
  untitledLabel: "Untitled session",
2194
3796
  placeholderUrl,
2195
3797
  actions,
@@ -2201,18 +3803,18 @@ function HowIWorkCard({ entry, placeholderUrl, actions, anchorProps, className }
2201
3803
  var HowIWorkCardSkeleton = EmployeeEntryCardSkeleton;
2202
3804
 
2203
3805
  // src/components/chat/entity-cards/ai-prompt-card.tsx
2204
- import { Fragment as Fragment5, jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
3806
+ import { Fragment as Fragment5, jsx as jsx29, jsxs as jsxs16 } from "react/jsx-runtime";
2205
3807
  function AiPromptCard({ entry, placeholderUrl, actions, anchorProps, className }) {
2206
3808
  const departmentName = entry.department?.name?.trim();
2207
3809
  const steps = typeof entry.step_count === "number" ? entry.step_count : 0;
2208
- return /* @__PURE__ */ jsx25(
3810
+ return /* @__PURE__ */ jsx29(
2209
3811
  EmployeeEntryCard,
2210
3812
  {
2211
3813
  entry,
2212
3814
  dateLabel: entry.published_at ? formatDateUTC(entry.published_at, { fallback: "" }) || null : null,
2213
- extraBadges: /* @__PURE__ */ jsxs15(Fragment5, { children: [
2214
- departmentName ? /* @__PURE__ */ jsx25(DepartmentBadge, { department: { name: departmentName, color: entry.department?.color ?? null } }) : null,
2215
- steps > 1 ? /* @__PURE__ */ jsx25(EmployeeEntryBadge, { children: `${steps} steps` }) : null
3815
+ extraBadges: /* @__PURE__ */ jsxs16(Fragment5, { children: [
3816
+ departmentName ? /* @__PURE__ */ jsx29(DepartmentBadge, { department: { name: departmentName, color: entry.department?.color ?? null } }) : null,
3817
+ steps > 1 ? /* @__PURE__ */ jsx29(EmployeeEntryBadge, { children: `${steps} steps` }) : null
2216
3818
  ] }),
2217
3819
  untitledLabel: "Untitled prompt",
2218
3820
  placeholderUrl,
@@ -2226,7 +3828,7 @@ var AiPromptCardSkeleton = EmployeeEntryCardSkeleton;
2226
3828
 
2227
3829
  // src/components/layout/page-heading.tsx
2228
3830
  import { Children, Fragment as Fragment6, cloneElement, isValidElement } from "react";
2229
- import { Fragment as Fragment7, jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
3831
+ import { Fragment as Fragment7, jsx as jsx30, jsxs as jsxs17 } from "react/jsx-runtime";
2230
3832
  var PAGE_HEADING_CLASS = "text-h1 text-ods-text-primary";
2231
3833
  var SECTION_HEADING_CLASS = "text-h2 text-ods-text-primary";
2232
3834
  var DESCRIPTION_CLASS = "mt-6 max-w-[640px] font-body text-[16px] content-md:text-[18px] leading-[24px] content-md:leading-[28px] text-ods-text-secondary";
@@ -2240,9 +3842,9 @@ function PageHeading({
2240
3842
  const headingClass = className ? `${PAGE_HEADING_CLASS} ${className}` : PAGE_HEADING_CLASS;
2241
3843
  const descClass = descriptionClassName ? `${DESCRIPTION_CLASS} ${descriptionClassName}` : DESCRIPTION_CLASS;
2242
3844
  const hasDescription = description != null && description !== "" && typeof description !== "boolean";
2243
- return /* @__PURE__ */ jsxs16(Fragment7, { children: [
2244
- /* @__PURE__ */ jsx26(Tag2, { className: headingClass, children: accentSentenceMarks(children) }),
2245
- hasDescription && /* @__PURE__ */ jsx26("p", { className: descClass, children: description })
3845
+ return /* @__PURE__ */ jsxs17(Fragment7, { children: [
3846
+ /* @__PURE__ */ jsx30(Tag2, { className: headingClass, children: accentSentenceMarks(children) }),
3847
+ hasDescription && /* @__PURE__ */ jsx30("p", { className: descClass, children: description })
2246
3848
  ] });
2247
3849
  }
2248
3850
  var SENTENCE_MARK = /([.:?!]+)(?=\s|$)/g;
@@ -2263,10 +3865,10 @@ function accentMarks(node, accentClassName) {
2263
3865
  // `split` with one capture group alternates text, mark, text, mark...
2264
3866
  index % 2 === 1 ? (
2265
3867
  // biome-ignore lint/suspicious/noArrayIndexKey: the parts of one string never reorder
2266
- /* @__PURE__ */ jsx26("span", { className: accentClassName, children: part }, index)
3868
+ /* @__PURE__ */ jsx30("span", { className: accentClassName, children: part }, index)
2267
3869
  ) : (
2268
3870
  // biome-ignore lint/suspicious/noArrayIndexKey: the parts of one string never reorder
2269
- /* @__PURE__ */ jsx26(Fragment6, { children: part }, index)
3871
+ /* @__PURE__ */ jsx30(Fragment6, { children: part }, index)
2270
3872
  )
2271
3873
  )
2272
3874
  );
@@ -2306,16 +3908,16 @@ function SectionHeading({
2306
3908
  const accentClassName = headingAccentClass(platform);
2307
3909
  const layout = SECTION_HEADING_LAYOUT[level];
2308
3910
  const Tag2 = level === "page" ? "h1" : "h2";
2309
- const stack = /* @__PURE__ */ jsxs16("div", { className: layout.stack, children: [
2310
- eyebrow ? /* @__PURE__ */ jsx26("span", { className: `text-h5 ${accentClassName}`, children: eyebrow }) : null,
2311
- /* @__PURE__ */ jsxs16(Tag2, { className: layout.heading, children: [
3911
+ const stack = /* @__PURE__ */ jsxs17("div", { className: layout.stack, children: [
3912
+ eyebrow ? /* @__PURE__ */ jsx30("span", { className: `text-h5 ${accentClassName}`, children: eyebrow }) : null,
3913
+ /* @__PURE__ */ jsxs17(Tag2, { className: layout.heading, children: [
2312
3914
  accentSentenceMarks(title, platform),
2313
- punctuation ? /* @__PURE__ */ jsx26("span", { className: accentClassName, children: punctuation }) : null
3915
+ punctuation ? /* @__PURE__ */ jsx30("span", { className: accentClassName, children: punctuation }) : null
2314
3916
  ] }),
2315
- intro ? /* @__PURE__ */ jsx26("div", { className: layout.intro, children: intro }) : null
3917
+ intro ? /* @__PURE__ */ jsx30("div", { className: layout.intro, children: intro }) : null
2316
3918
  ] });
2317
- if (!action) return className ? /* @__PURE__ */ jsx26("div", { className, children: stack }) : stack;
2318
- return /* @__PURE__ */ jsxs16(
3919
+ if (!action) return className ? /* @__PURE__ */ jsx30("div", { className, children: stack }) : stack;
3920
+ return /* @__PURE__ */ jsxs17(
2319
3921
  "div",
2320
3922
  {
2321
3923
  className: `flex flex-wrap items-end justify-between gap-[var(--spacing-system-mf)]${className ? ` ${className}` : ""}`,
@@ -2350,9 +3952,98 @@ function sortBitesByFeaturedAtDesc(a, b) {
2350
3952
  return new Date(b.featured_at).getTime() - new Date(a.featured_at).getTime();
2351
3953
  }
2352
3954
 
3955
+ // src/components/features/video-hover-preview.tsx
3956
+ import { useEffect as useEffect6, useRef as useRef3, useState as useState7 } from "react";
3957
+ import { Fragment as Fragment8, jsx as jsx31, jsxs as jsxs18 } from "react/jsx-runtime";
3958
+ function VideoHoverPreviewSurface({
3959
+ url,
3960
+ posterUrl = null,
3961
+ active,
3962
+ playerMounted,
3963
+ isClone = false,
3964
+ badge = "play",
3965
+ fit,
3966
+ posterSizes = "234px",
3967
+ preload,
3968
+ hideMutedBadge,
3969
+ onMutedFallbackChange,
3970
+ previewHandleRef,
3971
+ mutedIntent = false,
3972
+ continuation = false,
3973
+ startTime,
3974
+ autoPlay = false,
3975
+ startMuted = false,
3976
+ onEnded,
3977
+ className
3978
+ }) {
3979
+ const previewUrl = toMuxPreviewUrl(url);
3980
+ const gateControlled = playerMounted !== void 0;
3981
+ const rootElRef = useRef3(null);
3982
+ const [isNear, setIsNear] = useState7(false);
3983
+ useEffect6(() => {
3984
+ if (gateControlled) return void 0;
3985
+ const el = rootElRef.current;
3986
+ if (!el || typeof IntersectionObserver === "undefined") return void 0;
3987
+ const io = new IntersectionObserver((entries) => setIsNear(entries[0]?.isIntersecting ?? false), {
3988
+ rootMargin: NEAR_VIEWPORT_ROOT_MARGIN
3989
+ });
3990
+ io.observe(el);
3991
+ return () => io.disconnect();
3992
+ }, [gateControlled]);
3993
+ const showMedia = continuation || (gateControlled ? playerMounted : isNear);
3994
+ const { src: posterSrc, onError: onPosterError } = useCoverImageFallback(posterUrl);
3995
+ const facadeSkipped = preload === "none" && !posterSrc;
3996
+ return /* @__PURE__ */ jsx31("div", { ref: rootElRef, className: cn("absolute inset-0", className), inert: isClone || void 0, children: showMedia ? /* @__PURE__ */ jsxs18(Fragment8, { children: [
3997
+ posterSrc ? /* @__PURE__ */ jsx31(
3998
+ next_image_default,
3999
+ {
4000
+ src: posterSrc,
4001
+ alt: "",
4002
+ fill: true,
4003
+ sizes: posterSizes,
4004
+ unoptimized: true,
4005
+ onError: onPosterError,
4006
+ className: "object-cover"
4007
+ }
4008
+ ) : facadeSkipped ? /* @__PURE__ */ jsx31("div", { className: "absolute inset-0 bg-ods-card" }) : /* @__PURE__ */ jsx31(Video, { kind: "file", url: previewUrl, firstFrameOnly: true, layout: "fill", fit }),
4009
+ badge === "play" && !active && !continuation && /* @__PURE__ */ jsx31(VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
4010
+ /* @__PURE__ */ jsx31(
4011
+ "div",
4012
+ {
4013
+ className: "absolute inset-0",
4014
+ style: { "--media-background-color": "transparent" },
4015
+ children: /* @__PURE__ */ jsx31(
4016
+ Video,
4017
+ {
4018
+ kind: "file",
4019
+ url: previewUrl,
4020
+ poster: posterUrl,
4021
+ ...continuation ? {
4022
+ startTime,
4023
+ autoPlay: autoPlay && startMuted,
4024
+ startMuted,
4025
+ autoPlayUnmuted: autoPlay && !startMuted
4026
+ } : { playWhenHovered: active },
4027
+ chromeless: true,
4028
+ layout: "fill",
4029
+ fit,
4030
+ preload,
4031
+ mutedIntent,
4032
+ hideMutedBadge,
4033
+ onMutedFallbackChange,
4034
+ onEnded,
4035
+ playerHandleRef: previewHandleRef
4036
+ },
4037
+ continuation ? "continuation" : "preview"
4038
+ )
4039
+ }
4040
+ )
4041
+ ] }) : /* @__PURE__ */ jsx31("div", { className: "absolute inset-0 bg-ods-card" }) });
4042
+ }
4043
+
2353
4044
  // src/components/shared/product-release/product-release-card.tsx
2354
- import { AlertTriangle, Eye, Package, Sparkles, TrendingUp, Wrench } from "lucide-react";
2355
- import { Fragment as Fragment8, jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
4045
+ import { AlertTriangle, Eye, Package as Package2, Sparkles, TrendingUp as TrendingUp2, Wrench } from "lucide-react";
4046
+ import { Fragment as Fragment9, jsx as jsx32, jsxs as jsxs19 } from "react/jsx-runtime";
2356
4047
  function ProductReleaseCard({
2357
4048
  title,
2358
4049
  summary,
@@ -2402,10 +4093,10 @@ function ProductReleaseCard({
2402
4093
  "no-underline",
2403
4094
  className
2404
4095
  );
2405
- const innerLayout = /* @__PURE__ */ jsxs17(Fragment8, { children: [
2406
- /* @__PURE__ */ jsxs17("div", { className: "flex flex-col gap-4 content-md:flex-row content-md:gap-6", children: [
2407
- /* @__PURE__ */ jsx27("div", { className: "w-full flex-shrink-0 content-md:w-[256px]", children: /* @__PURE__ */ jsxs17("div", { className: "relative aspect-[1200/630] w-full overflow-hidden rounded-lg bg-ods-bg", children: [
2408
- coverImage ? /* @__PURE__ */ jsx27(
4096
+ const innerLayout = /* @__PURE__ */ jsxs19(Fragment9, { children: [
4097
+ /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-4 content-md:flex-row content-md:gap-6", children: [
4098
+ /* @__PURE__ */ jsx32("div", { className: "w-full flex-shrink-0 content-md:w-[256px]", children: /* @__PURE__ */ jsxs19("div", { className: "relative aspect-[1200/630] w-full overflow-hidden rounded-lg bg-ods-bg", children: [
4099
+ coverImage ? /* @__PURE__ */ jsx32(
2409
4100
  next_image_default,
2410
4101
  {
2411
4102
  src: coverImage,
@@ -2415,44 +4106,44 @@ function ProductReleaseCard({
2415
4106
  className: "object-cover",
2416
4107
  unoptimized: true
2417
4108
  }
2418
- ) : /* @__PURE__ */ jsx27("div", { className: "absolute inset-0 flex items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ jsx27(Package, { className: "h-8 w-8" }) }),
2419
- hasVideoCover && coverImage && /* @__PURE__ */ jsx27(CardHoverPlay, { size: "md" })
4109
+ ) : /* @__PURE__ */ jsx32("div", { className: "absolute inset-0 flex items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ jsx32(Package2, { className: "h-8 w-8" }) }),
4110
+ hasVideoCover && coverImage && /* @__PURE__ */ jsx32(CardHoverPlay, { size: "md" })
2420
4111
  ] }) }),
2421
- /* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-1 flex-col", children: [
2422
- /* @__PURE__ */ jsx27("div", { className: "mb-3 flex items-center gap-3", children: /* @__PURE__ */ jsxs17("span", { className: "truncate font-semibold text-ods-text-primary text-code", children: [
4112
+ /* @__PURE__ */ jsxs19("div", { className: "flex min-w-0 flex-1 flex-col", children: [
4113
+ /* @__PURE__ */ jsx32("div", { className: "mb-3 flex items-center gap-3", children: /* @__PURE__ */ jsxs19("span", { className: "truncate font-semibold text-ods-text-primary text-code", children: [
2423
4114
  "v",
2424
4115
  version
2425
4116
  ] }) }),
2426
- /* @__PURE__ */ jsx27("div", { className: "mb-3 flex min-h-[60px] items-start content-md:min-h-[72px]", children: /* @__PURE__ */ jsx27("h3", { className: "line-clamp-2 font-['Azeret_Mono'] text-xl font-semibold leading-tight text-ods-text-primary content-md:text-2xl", children: title }) }),
2427
- /* @__PURE__ */ jsx27("div", { className: "min-h-[68px] content-md:min-h-[78px]", children: /* @__PURE__ */ jsx27("p", { className: "line-clamp-3 font-['DM_Sans'] text-sm leading-relaxed text-ods-text-secondary content-md:text-base", children: summary ?? "" }) })
4117
+ /* @__PURE__ */ jsx32("div", { className: "mb-3 flex min-h-[60px] items-start content-md:min-h-[72px]", children: /* @__PURE__ */ jsx32("h3", { className: "line-clamp-2 font-['Azeret_Mono'] text-xl font-semibold leading-tight text-ods-text-primary content-md:text-2xl", children: title }) }),
4118
+ /* @__PURE__ */ jsx32("div", { className: "min-h-[68px] content-md:min-h-[78px]", children: /* @__PURE__ */ jsx32("p", { className: "line-clamp-3 font-['DM_Sans'] text-sm leading-relaxed text-ods-text-secondary content-md:text-base", children: summary ?? "" }) })
2428
4119
  ] })
2429
4120
  ] }),
2430
- /* @__PURE__ */ jsx27("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5 border-t border-ods-border pt-3 text-ods-text-secondary text-h6", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs17(Fragment8, { children: [
2431
- changelogCounts.features > 0 && /* @__PURE__ */ jsxs17("span", { className: "inline-flex items-center gap-1.5", children: [
2432
- /* @__PURE__ */ jsx27(Sparkles, { className: "h-3.5 w-3.5" }),
4121
+ /* @__PURE__ */ jsx32("div", { className: "flex flex-wrap items-center gap-x-4 gap-y-1.5 border-t border-ods-border pt-3 text-ods-text-secondary text-h6", children: totalChangelog > 0 && changelogCounts ? /* @__PURE__ */ jsxs19(Fragment9, { children: [
4122
+ changelogCounts.features > 0 && /* @__PURE__ */ jsxs19("span", { className: "inline-flex items-center gap-1.5", children: [
4123
+ /* @__PURE__ */ jsx32(Sparkles, { className: "h-3.5 w-3.5" }),
2433
4124
  changelogCounts.features,
2434
4125
  " ",
2435
4126
  changelogCounts.features === 1 ? "feature" : "features"
2436
4127
  ] }),
2437
- changelogCounts.fixes > 0 && /* @__PURE__ */ jsxs17("span", { className: "inline-flex items-center gap-1.5", children: [
2438
- /* @__PURE__ */ jsx27(Wrench, { className: "h-3.5 w-3.5" }),
4128
+ changelogCounts.fixes > 0 && /* @__PURE__ */ jsxs19("span", { className: "inline-flex items-center gap-1.5", children: [
4129
+ /* @__PURE__ */ jsx32(Wrench, { className: "h-3.5 w-3.5" }),
2439
4130
  changelogCounts.fixes,
2440
4131
  " ",
2441
4132
  changelogCounts.fixes === 1 ? "fix" : "fixes"
2442
4133
  ] }),
2443
- changelogCounts.improvements > 0 && /* @__PURE__ */ jsxs17("span", { className: "inline-flex items-center gap-1.5", children: [
2444
- /* @__PURE__ */ jsx27(TrendingUp, { className: "h-3.5 w-3.5" }),
4134
+ changelogCounts.improvements > 0 && /* @__PURE__ */ jsxs19("span", { className: "inline-flex items-center gap-1.5", children: [
4135
+ /* @__PURE__ */ jsx32(TrendingUp2, { className: "h-3.5 w-3.5" }),
2445
4136
  changelogCounts.improvements,
2446
4137
  " ",
2447
4138
  changelogCounts.improvements === 1 ? "improvement" : "improvements"
2448
4139
  ] }),
2449
- changelogCounts.breaking > 0 && /* @__PURE__ */ jsxs17("span", { className: "inline-flex items-center gap-1.5 text-ods-warning", children: [
2450
- /* @__PURE__ */ jsx27(AlertTriangle, { className: "h-3.5 w-3.5" }),
4140
+ changelogCounts.breaking > 0 && /* @__PURE__ */ jsxs19("span", { className: "inline-flex items-center gap-1.5 text-ods-warning", children: [
4141
+ /* @__PURE__ */ jsx32(AlertTriangle, { className: "h-3.5 w-3.5" }),
2451
4142
  changelogCounts.breaking,
2452
4143
  " breaking"
2453
4144
  ] })
2454
- ] }) : /* @__PURE__ */ jsx27("span", { className: "text-ods-text-secondary", children: "No changelog entries yet" }) }),
2455
- /* @__PURE__ */ jsxs17(
4145
+ ] }) : /* @__PURE__ */ jsx32("span", { className: "text-ods-text-secondary", children: "No changelog entries yet" }) }),
4146
+ /* @__PURE__ */ jsxs19(
2456
4147
  "div",
2457
4148
  {
2458
4149
  className: cn(
@@ -2461,8 +4152,8 @@ function ProductReleaseCard({
2461
4152
  "w-full overflow-hidden rounded-md border border-ods-border"
2462
4153
  ),
2463
4154
  children: [
2464
- valueCells.map((cell, i) => /* @__PURE__ */ jsx27("div", { className: cn("flex flex-col gap-3 p-4", dividerClass), children: /* @__PURE__ */ jsxs17("div", { className: "flex flex-col gap-0", children: [
2465
- cell.colorScheme ? /* @__PURE__ */ jsx27(
4155
+ valueCells.map((cell, i) => /* @__PURE__ */ jsx32("div", { className: cn("flex flex-col gap-3 p-4", dividerClass), children: /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-0", children: [
4156
+ cell.colorScheme ? /* @__PURE__ */ jsx32(
2466
4157
  StatusBadge,
2467
4158
  {
2468
4159
  text: cell.value,
@@ -2471,7 +4162,7 @@ function ProductReleaseCard({
2471
4162
  singleLine: true,
2472
4163
  className: "self-start"
2473
4164
  }
2474
- ) : /* @__PURE__ */ jsx27(
4165
+ ) : /* @__PURE__ */ jsx32(
2475
4166
  "p",
2476
4167
  {
2477
4168
  className: cn(
@@ -2483,10 +4174,10 @@ function ProductReleaseCard({
2483
4174
  children: cell.uppercase ? cell.value.toLocaleUpperCase() : cell.value
2484
4175
  }
2485
4176
  ),
2486
- /* @__PURE__ */ jsx27("p", { className: "text-ods-text-secondary text-h6", children: cell.label })
4177
+ /* @__PURE__ */ jsx32("p", { className: "text-ods-text-secondary text-h6", children: cell.label })
2487
4178
  ] }) }, `${cell.label}-${i}`)),
2488
- /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-3 p-4", children: [
2489
- /* @__PURE__ */ jsx27(
4179
+ /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-3 p-4", children: [
4180
+ /* @__PURE__ */ jsx32(
2490
4181
  SquareAvatar,
2491
4182
  {
2492
4183
  src: effectiveAuthor.avatar_url ?? void 0,
@@ -2496,29 +4187,29 @@ function ProductReleaseCard({
2496
4187
  variant: "round"
2497
4188
  }
2498
4189
  ),
2499
- /* @__PURE__ */ jsxs17("div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
2500
- /* @__PURE__ */ jsx27("p", { className: "truncate tracking-[-0.36px] text-ods-text-primary text-h3", children: effectiveAuthor.full_name }),
2501
- /* @__PURE__ */ jsx27("p", { className: "text-ods-text-secondary text-h6", children: effectiveAuthor.job_title || "Author" })
4190
+ /* @__PURE__ */ jsxs19("div", { className: "flex min-w-0 flex-1 flex-col gap-0", children: [
4191
+ /* @__PURE__ */ jsx32("p", { className: "truncate tracking-[-0.36px] text-ods-text-primary text-h3", children: effectiveAuthor.full_name }),
4192
+ /* @__PURE__ */ jsx32("p", { className: "text-ods-text-secondary text-h6", children: effectiveAuthor.job_title || "Author" })
2502
4193
  ] })
2503
4194
  ] })
2504
4195
  ]
2505
4196
  }
2506
4197
  ),
2507
- typeof viewCount === "number" && viewCount > 0 && /* @__PURE__ */ jsxs17("div", { className: "flex items-center gap-1.5 text-ods-text-secondary text-h6", children: [
2508
- /* @__PURE__ */ jsx27(Eye, { className: "h-3.5 w-3.5" }),
2509
- /* @__PURE__ */ jsxs17("span", { children: [
4198
+ typeof viewCount === "number" && viewCount > 0 && /* @__PURE__ */ jsxs19("div", { className: "flex items-center gap-1.5 text-ods-text-secondary text-h6", children: [
4199
+ /* @__PURE__ */ jsx32(Eye, { className: "h-3.5 w-3.5" }),
4200
+ /* @__PURE__ */ jsxs19("span", { children: [
2510
4201
  viewCount.toLocaleString(),
2511
4202
  " views"
2512
4203
  ] })
2513
4204
  ] })
2514
4205
  ] });
2515
4206
  if (anchorProps) {
2516
- return /* @__PURE__ */ jsx27("a", { ...anchorProps, className: frameClass, "aria-label": `Open ${title}`, children: innerLayout });
4207
+ return /* @__PURE__ */ jsx32("a", { ...anchorProps, className: frameClass, "aria-label": `Open ${title}`, children: innerLayout });
2517
4208
  }
2518
4209
  if (onClick) {
2519
- return /* @__PURE__ */ jsx27(InteractiveCard, { clickable: true, onClick, className: frameClass, children: innerLayout });
4210
+ return /* @__PURE__ */ jsx32(InteractiveCard, { clickable: true, onClick, className: frameClass, children: innerLayout });
2520
4211
  }
2521
- return /* @__PURE__ */ jsx27("div", { className: frameClass, children: innerLayout });
4212
+ return /* @__PURE__ */ jsx32("div", { className: frameClass, children: innerLayout });
2522
4213
  }
2523
4214
  if (size2 === "sm") {
2524
4215
  const handleKey = (e) => {
@@ -2545,24 +4236,24 @@ function ProductReleaseCard({
2545
4236
  isInteractive ? "cursor-pointer transition-colors hover:border-ods-text-secondary/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ods-accent focus-visible:ring-offset-1 focus-visible:ring-offset-ods-card" : "cursor-default",
2546
4237
  className
2547
4238
  );
2548
- const innerChildren = /* @__PURE__ */ jsxs17(Fragment8, { children: [
2549
- /* @__PURE__ */ jsxs17("span", { className: "relative flex aspect-square h-14 w-14 shrink-0 items-center justify-center self-start overflow-hidden rounded-md bg-ods-bg text-ods-accent", children: [
2550
- coverImage ? /* @__PURE__ */ jsx27(next_image_default, { src: coverImage, alt: title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ jsx27(Package, { className: "h-5 w-5" }),
2551
- hasVideoCover && coverImage && /* @__PURE__ */ jsx27(CardHoverPlay, { size: "sm" })
4239
+ const innerChildren = /* @__PURE__ */ jsxs19(Fragment9, { children: [
4240
+ /* @__PURE__ */ jsxs19("span", { className: "relative flex aspect-square h-14 w-14 shrink-0 items-center justify-center self-start overflow-hidden rounded-md bg-ods-bg text-ods-accent", children: [
4241
+ coverImage ? /* @__PURE__ */ jsx32(next_image_default, { src: coverImage, alt: title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ jsx32(Package2, { className: "h-5 w-5" }),
4242
+ hasVideoCover && coverImage && /* @__PURE__ */ jsx32(CardHoverPlay, { size: "sm" })
2552
4243
  ] }),
2553
- /* @__PURE__ */ jsxs17("span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
2554
- /* @__PURE__ */ jsxs17("span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
2555
- /* @__PURE__ */ jsx27("span", { className: "min-w-0 truncate font-semibold text-ods-text-primary text-h6", title, children: title }),
2556
- version ? /* @__PURE__ */ jsx27("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-ods-accent text-code", children: version }) : null
4244
+ /* @__PURE__ */ jsxs19("span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
4245
+ /* @__PURE__ */ jsxs19("span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
4246
+ /* @__PURE__ */ jsx32("span", { className: "min-w-0 truncate font-semibold text-ods-text-primary text-h6", title, children: title }),
4247
+ version ? /* @__PURE__ */ jsx32("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-ods-accent text-code", children: version }) : null
2557
4248
  ] }),
2558
- /* @__PURE__ */ jsx27("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx27("span", { className: "truncate text-ods-text-secondary text-h6", children: formattedDate || "Product release" }) }),
2559
- /* @__PURE__ */ jsx27("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx27("span", { className: "truncate text-ods-text-secondary/80 text-h6", title: summary || void 0, children: summary || "\xA0" }) })
4249
+ /* @__PURE__ */ jsx32("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx32("span", { className: "truncate text-ods-text-secondary text-h6", children: formattedDate || "Product release" }) }),
4250
+ /* @__PURE__ */ jsx32("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx32("span", { className: "truncate text-ods-text-secondary/80 text-h6", title: summary || void 0, children: summary || "\xA0" }) })
2560
4251
  ] })
2561
4252
  ] });
2562
4253
  if (anchorProps) {
2563
- return /* @__PURE__ */ jsx27("a", { ...anchorProps, className: outerClassName, children: innerChildren });
4254
+ return /* @__PURE__ */ jsx32("a", { ...anchorProps, className: outerClassName, children: innerChildren });
2564
4255
  }
2565
- return /* @__PURE__ */ jsx27(
4256
+ return /* @__PURE__ */ jsx32(
2566
4257
  "span",
2567
4258
  {
2568
4259
  role: onClick ? "button" : void 0,
@@ -2578,50 +4269,50 @@ function ProductReleaseCard({
2578
4269
  }
2579
4270
 
2580
4271
  // src/components/shared/product-release/product-release-card-skeleton.tsx
2581
- import { jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
4272
+ import { jsx as jsx33, jsxs as jsxs20 } from "react/jsx-runtime";
2582
4273
  function ProductReleaseCardSkeleton({ className, size: size2 = "lg" }) {
2583
4274
  if (size2 === "lg") {
2584
- return /* @__PURE__ */ jsxs18("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex flex-col gap-4 p-6", "animate-pulse", className), children: [
2585
- /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-4 content-md:flex-row content-md:gap-6", children: [
2586
- /* @__PURE__ */ jsx28("div", { className: "aspect-[1200/630] w-full flex-shrink-0 rounded-lg bg-ods-border content-md:w-[256px]" }),
2587
- /* @__PURE__ */ jsxs18("div", { className: "flex min-w-0 flex-1 flex-col", children: [
2588
- /* @__PURE__ */ jsx28("div", { className: "mb-3 flex items-center gap-3", children: /* @__PURE__ */ jsx28("div", { className: "h-7 w-20 rounded bg-ods-border" }) }),
2589
- /* @__PURE__ */ jsxs18("div", { className: "mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 content-md:min-h-[72px]", children: [
2590
- /* @__PURE__ */ jsx28("div", { className: "h-[25px] w-3/4 rounded bg-ods-border content-md:h-[30px]" }),
2591
- /* @__PURE__ */ jsx28("div", { className: "h-[25px] w-1/2 rounded bg-ods-border content-md:h-[30px]" })
4275
+ return /* @__PURE__ */ jsxs20("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex flex-col gap-4 p-6", "animate-pulse", className), children: [
4276
+ /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-4 content-md:flex-row content-md:gap-6", children: [
4277
+ /* @__PURE__ */ jsx33("div", { className: "aspect-[1200/630] w-full flex-shrink-0 rounded-lg bg-ods-border content-md:w-[256px]" }),
4278
+ /* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 flex-1 flex-col", children: [
4279
+ /* @__PURE__ */ jsx33("div", { className: "mb-3 flex items-center gap-3", children: /* @__PURE__ */ jsx33("div", { className: "h-7 w-20 rounded bg-ods-border" }) }),
4280
+ /* @__PURE__ */ jsxs20("div", { className: "mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 content-md:min-h-[72px]", children: [
4281
+ /* @__PURE__ */ jsx33("div", { className: "h-[25px] w-3/4 rounded bg-ods-border content-md:h-[30px]" }),
4282
+ /* @__PURE__ */ jsx33("div", { className: "h-[25px] w-1/2 rounded bg-ods-border content-md:h-[30px]" })
2592
4283
  ] }),
2593
- /* @__PURE__ */ jsxs18("div", { className: "flex min-h-[68px] flex-col justify-start gap-2 content-md:min-h-[78px]", children: [
2594
- /* @__PURE__ */ jsx28("div", { className: "h-3 w-full rounded bg-ods-border/70" }),
2595
- /* @__PURE__ */ jsx28("div", { className: "h-3 w-11/12 rounded bg-ods-border/70" }),
2596
- /* @__PURE__ */ jsx28("div", { className: "h-3 w-5/6 rounded bg-ods-border/70" })
4284
+ /* @__PURE__ */ jsxs20("div", { className: "flex min-h-[68px] flex-col justify-start gap-2 content-md:min-h-[78px]", children: [
4285
+ /* @__PURE__ */ jsx33("div", { className: "h-3 w-full rounded bg-ods-border/70" }),
4286
+ /* @__PURE__ */ jsx33("div", { className: "h-3 w-11/12 rounded bg-ods-border/70" }),
4287
+ /* @__PURE__ */ jsx33("div", { className: "h-3 w-5/6 rounded bg-ods-border/70" })
2597
4288
  ] })
2598
4289
  ] })
2599
4290
  ] }),
2600
- /* @__PURE__ */ jsx28("div", { className: "border-t border-ods-border pt-3", children: /* @__PURE__ */ jsx28("div", { className: "h-5 w-2/3 rounded bg-ods-border/70" }) }),
2601
- /* @__PURE__ */ jsxs18("div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border content-md:grid-cols-4", children: [
2602
- [0, 1, 2].map((i) => /* @__PURE__ */ jsx28(
4291
+ /* @__PURE__ */ jsx33("div", { className: "border-t border-ods-border pt-3", children: /* @__PURE__ */ jsx33("div", { className: "h-5 w-2/3 rounded bg-ods-border/70" }) }),
4292
+ /* @__PURE__ */ jsxs20("div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border content-md:grid-cols-4", children: [
4293
+ [0, 1, 2].map((i) => /* @__PURE__ */ jsx33(
2603
4294
  "div",
2604
4295
  {
2605
4296
  className: "flex flex-col gap-3 border-b border-ods-border p-4 content-md:border-b-0 content-md:border-r",
2606
- children: /* @__PURE__ */ jsxs18("div", { className: "flex flex-col gap-2", children: [
2607
- /* @__PURE__ */ jsx28("div", { className: "h-7 w-24 rounded bg-ods-border" }),
2608
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-16 rounded bg-ods-border" })
4297
+ children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-2", children: [
4298
+ /* @__PURE__ */ jsx33("div", { className: "h-7 w-24 rounded bg-ods-border" }),
4299
+ /* @__PURE__ */ jsx33("div", { className: "h-4 w-16 rounded bg-ods-border" })
2609
4300
  ] })
2610
4301
  },
2611
4302
  `cell-${i}`
2612
4303
  )),
2613
- /* @__PURE__ */ jsxs18("div", { className: "flex items-center gap-3 p-4", children: [
2614
- /* @__PURE__ */ jsx28("div", { className: "h-10 w-10 shrink-0 rounded-full bg-ods-border" }),
2615
- /* @__PURE__ */ jsxs18("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
2616
- /* @__PURE__ */ jsx28("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
2617
- /* @__PURE__ */ jsx28("div", { className: "h-4 w-1/2 rounded bg-ods-border" })
4304
+ /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-3 p-4", children: [
4305
+ /* @__PURE__ */ jsx33("div", { className: "h-10 w-10 shrink-0 rounded-full bg-ods-border" }),
4306
+ /* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
4307
+ /* @__PURE__ */ jsx33("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
4308
+ /* @__PURE__ */ jsx33("div", { className: "h-4 w-1/2 rounded bg-ods-border" })
2618
4309
  ] })
2619
4310
  ] })
2620
4311
  ] })
2621
4312
  ] });
2622
4313
  }
2623
4314
  if (size2 === "sm") {
2624
- return /* @__PURE__ */ jsxs18(
4315
+ return /* @__PURE__ */ jsxs20(
2625
4316
  "span",
2626
4317
  {
2627
4318
  className: cn(
@@ -2630,14 +4321,14 @@ function ProductReleaseCardSkeleton({ className, size: size2 = "lg" }) {
2630
4321
  className
2631
4322
  ),
2632
4323
  children: [
2633
- /* @__PURE__ */ jsx28("span", { className: "block aspect-square h-14 w-14 shrink-0 self-start rounded-md bg-ods-bg" }),
2634
- /* @__PURE__ */ jsxs18("span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
2635
- /* @__PURE__ */ jsxs18("span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
2636
- /* @__PURE__ */ jsx28("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }),
2637
- /* @__PURE__ */ jsx28("span", { className: "h-4 w-12 shrink-0 rounded bg-ods-bg/70" })
4324
+ /* @__PURE__ */ jsx33("span", { className: "block aspect-square h-14 w-14 shrink-0 self-start rounded-md bg-ods-bg" }),
4325
+ /* @__PURE__ */ jsxs20("span", { className: "flex min-h-14 min-w-0 flex-1 flex-col gap-0.5", children: [
4326
+ /* @__PURE__ */ jsxs20("span", { className: "flex h-5 min-w-0 items-center gap-2", children: [
4327
+ /* @__PURE__ */ jsx33("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }),
4328
+ /* @__PURE__ */ jsx33("span", { className: "h-4 w-12 shrink-0 rounded bg-ods-bg/70" })
2638
4329
  ] }),
2639
- /* @__PURE__ */ jsx28("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx28("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) }),
2640
- /* @__PURE__ */ jsx28("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx28("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
4330
+ /* @__PURE__ */ jsx33("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx33("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) }),
4331
+ /* @__PURE__ */ jsx33("span", { className: "flex h-4 min-w-0 items-center", children: /* @__PURE__ */ jsx33("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
2641
4332
  ] })
2642
4333
  ]
2643
4334
  }
@@ -2791,10 +4482,10 @@ function safeHref(url) {
2791
4482
  import { Eye as Eye2 } from "lucide-react";
2792
4483
 
2793
4484
  // src/components/chat/entity-cards/use-entity-card-link.ts
2794
- import { useMemo as useMemo2 } from "react";
4485
+ import { useMemo as useMemo3 } from "react";
2795
4486
  function useEntityCardLink({ href, targetPlatform, target, rel }) {
2796
4487
  const runtime = useChatRuntime();
2797
- return useMemo2(() => {
4488
+ return useMemo3(() => {
2798
4489
  if (target !== void 0 || rel !== void 0) {
2799
4490
  const safeRel = rel ?? (target === "_blank" ? "noopener noreferrer" : void 0);
2800
4491
  return { target, rel: safeRel };
@@ -2816,28 +4507,28 @@ function useEntityCardPlaceholder({
2816
4507
  }
2817
4508
 
2818
4509
  // src/components/chat/entity-cards/blog-card.tsx
2819
- import { Fragment as Fragment9, jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
4510
+ import { Fragment as Fragment10, jsx as jsx34, jsxs as jsxs21 } from "react/jsx-runtime";
2820
4511
  function BlogCardSkeleton({ size: size2 = "default" }) {
2821
4512
  if (size2 === "sm") {
2822
- return /* @__PURE__ */ jsxs19("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
2823
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
2824
- /* @__PURE__ */ jsxs19("span", { className: COMPACT_CARD_TEXT_COL, children: [
2825
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx29("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
2826
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx29("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
2827
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx29("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
4513
+ return /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
4514
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
4515
+ /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_TEXT_COL, children: [
4516
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx34("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
4517
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx34("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
4518
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx34("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
2828
4519
  ] })
2829
4520
  ] });
2830
4521
  }
2831
- return /* @__PURE__ */ jsxs19("article", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "group flex h-full animate-pulse flex-col"), children: [
2832
- /* @__PURE__ */ jsx29("div", { className: "aspect-[1200/630] bg-ods-border" }),
2833
- /* @__PURE__ */ jsxs19("div", { className: "flex flex-grow flex-col space-y-3 p-4", children: [
2834
- /* @__PURE__ */ jsx29("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
2835
- /* @__PURE__ */ jsx29("div", { className: "h-5 w-1/2 rounded bg-ods-border" }),
2836
- /* @__PURE__ */ jsx29("div", { className: "h-3 w-full rounded bg-ods-border" }),
2837
- /* @__PURE__ */ jsx29("div", { className: "h-3 w-4/5 rounded bg-ods-border" }),
2838
- /* @__PURE__ */ jsxs19("div", { className: "mt-auto flex items-center gap-2", children: [
2839
- /* @__PURE__ */ jsx29("div", { className: "h-8 w-8 rounded-full bg-ods-border" }),
2840
- /* @__PURE__ */ jsx29("div", { className: "h-3 w-24 rounded bg-ods-border" })
4522
+ return /* @__PURE__ */ jsxs21("article", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "group flex h-full animate-pulse flex-col"), children: [
4523
+ /* @__PURE__ */ jsx34("div", { className: "aspect-[1200/630] bg-ods-border" }),
4524
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-grow flex-col space-y-3 p-4", children: [
4525
+ /* @__PURE__ */ jsx34("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
4526
+ /* @__PURE__ */ jsx34("div", { className: "h-5 w-1/2 rounded bg-ods-border" }),
4527
+ /* @__PURE__ */ jsx34("div", { className: "h-3 w-full rounded bg-ods-border" }),
4528
+ /* @__PURE__ */ jsx34("div", { className: "h-3 w-4/5 rounded bg-ods-border" }),
4529
+ /* @__PURE__ */ jsxs21("div", { className: "mt-auto flex items-center gap-2", children: [
4530
+ /* @__PURE__ */ jsx34("div", { className: "h-8 w-8 rounded-full bg-ods-border" }),
4531
+ /* @__PURE__ */ jsx34("div", { className: "h-3 w-24 rounded bg-ods-border" })
2841
4532
  ] })
2842
4533
  ] })
2843
4534
  ] });
@@ -2870,7 +4561,7 @@ function BlogCard({
2870
4561
  if (size2 === "sm") {
2871
4562
  const dateStr2 = post.published_at ? formatDateWithTimezone(post.published_at, null, "medium") : "";
2872
4563
  const firstCategory = post.categories?.find((c) => c && c.name)?.name;
2873
- return /* @__PURE__ */ jsxs19(
4564
+ return /* @__PURE__ */ jsxs21(
2874
4565
  "a",
2875
4566
  {
2876
4567
  href,
@@ -2879,7 +4570,7 @@ function BlogCard({
2879
4570
  className: cn(COMPACT_CARD_OUTER, className),
2880
4571
  "aria-label": `Read article: ${post.title}`,
2881
4572
  children: [
2882
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_IMAGE_SLOT, children: displayImage ? /* @__PURE__ */ jsx29(
4573
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_IMAGE_SLOT, children: displayImage ? /* @__PURE__ */ jsx34(
2883
4574
  next_image_default,
2884
4575
  {
2885
4576
  src: displayImage,
@@ -2891,17 +4582,17 @@ function BlogCard({
2891
4582
  onError: onImageError
2892
4583
  }
2893
4584
  ) : null }),
2894
- /* @__PURE__ */ jsxs19("span", { className: COMPACT_CARD_TEXT_COL, children: [
2895
- /* @__PURE__ */ jsxs19("span", { className: cn(COMPACT_CARD_TITLE_ROW, "gap-1.5"), children: [
2896
- /* @__PURE__ */ jsx29("span", { className: cn(COMPACT_CARD_TITLE, "font-body"), children: post.title }),
2897
- hasEmbeddedVideo ? /* @__PURE__ */ jsx29(StatusBadge, { text: "Video", variant: "button", colorScheme: "cyan", className: "shrink-0" }) : null
4585
+ /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_TEXT_COL, children: [
4586
+ /* @__PURE__ */ jsxs21("span", { className: cn(COMPACT_CARD_TITLE_ROW, "gap-1.5"), children: [
4587
+ /* @__PURE__ */ jsx34("span", { className: cn(COMPACT_CARD_TITLE, "font-body"), children: post.title }),
4588
+ hasEmbeddedVideo ? /* @__PURE__ */ jsx34(StatusBadge, { text: "Video", variant: "button", colorScheme: "cyan", className: "shrink-0" }) : null
2898
4589
  ] }),
2899
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsxs19("span", { className: COMPACT_CARD_SUBTITLE, children: [
4590
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_SUBTITLE, children: [
2900
4591
  dateStr2,
2901
4592
  dateStr2 && firstCategory ? " \xB7 " : "",
2902
4593
  firstCategory ?? "Blog Post"
2903
4594
  ] }) }),
2904
- /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx29("span", { className: COMPACT_CARD_SUMMARY, children: post.summary || COMPACT_CARD_ROW_FILLER }) })
4595
+ /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx34("span", { className: COMPACT_CARD_SUMMARY, children: post.summary || COMPACT_CARD_ROW_FILLER }) })
2905
4596
  ] })
2906
4597
  ]
2907
4598
  }
@@ -2909,7 +4600,7 @@ function BlogCard({
2909
4600
  }
2910
4601
  if (size2 === "portrait") {
2911
4602
  const dateStr2 = post.published_at ? formatDateWithTimezone(post.published_at, null, "medium") : "";
2912
- return /* @__PURE__ */ jsx29(
4603
+ return /* @__PURE__ */ jsx34(
2913
4604
  EntityPortraitCard,
2914
4605
  {
2915
4606
  href,
@@ -2930,7 +4621,7 @@ function BlogCard({
2930
4621
  );
2931
4622
  }
2932
4623
  const dateStr = post.published_at ? formatDateWithTimezone(post.published_at, null, "medium") : "";
2933
- return /* @__PURE__ */ jsx29("article", { className: cn(CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), role: "article", children: /* @__PURE__ */ jsxs19(
4624
+ return /* @__PURE__ */ jsx34("article", { className: cn(CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), role: "article", children: /* @__PURE__ */ jsxs21(
2934
4625
  "a",
2935
4626
  {
2936
4627
  href,
@@ -2939,7 +4630,7 @@ function BlogCard({
2939
4630
  className: "flex h-full flex-col focus:outline-none",
2940
4631
  "aria-label": `Read article: ${post.title}`,
2941
4632
  children: [
2942
- /* @__PURE__ */ jsx29("div", { className: "relative aspect-[1200/630] w-full overflow-hidden bg-ods-bg", children: displayImage ? /* @__PURE__ */ jsx29(
4633
+ /* @__PURE__ */ jsx34("div", { className: "relative aspect-[1200/630] w-full overflow-hidden bg-ods-bg", children: displayImage ? /* @__PURE__ */ jsx34(
2943
4634
  next_image_default,
2944
4635
  {
2945
4636
  src: displayImage,
@@ -2953,8 +4644,8 @@ function BlogCard({
2953
4644
  onError: onImageError
2954
4645
  }
2955
4646
  ) : null }),
2956
- /* @__PURE__ */ jsxs19("div", { className: "flex flex-grow flex-col p-4", children: [
2957
- /* @__PURE__ */ jsx29("div", { className: "mb-3 flex min-h-[50.4px] items-center md:min-h-[56px] lg:min-h-[61.6px]", children: /* @__PURE__ */ jsx29(
4647
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-grow flex-col p-4", children: [
4648
+ /* @__PURE__ */ jsx34("div", { className: "mb-3 flex min-h-[50.4px] items-center md:min-h-[56px] lg:min-h-[61.6px]", children: /* @__PURE__ */ jsx34(
2958
4649
  "h3",
2959
4650
  {
2960
4651
  className: cn(
@@ -2966,10 +4657,10 @@ function BlogCard({
2966
4657
  children: post.title
2967
4658
  }
2968
4659
  ) }),
2969
- /* @__PURE__ */ jsx29("div", { className: "mb-3 flex min-h-[42px] items-center md:min-h-[45px] lg:min-h-[48px]", children: /* @__PURE__ */ jsx29("p", { className: cn("text-ods-text-primary text-h6", "line-clamp-2"), children: post.summary || "" }) }),
2970
- /* @__PURE__ */ jsxs19("div", { className: "mt-auto flex items-center justify-between gap-2 text-ods-text-secondary text-h6", children: [
2971
- /* @__PURE__ */ jsxs19("div", { className: "flex min-w-0 items-center gap-2", children: [
2972
- post.author_avatar ? /* @__PURE__ */ jsx29(
4660
+ /* @__PURE__ */ jsx34("div", { className: "mb-3 flex min-h-[42px] items-center md:min-h-[45px] lg:min-h-[48px]", children: /* @__PURE__ */ jsx34("p", { className: cn("text-ods-text-primary text-h6", "line-clamp-2"), children: post.summary || "" }) }),
4661
+ /* @__PURE__ */ jsxs21("div", { className: "mt-auto flex items-center justify-between gap-2 text-ods-text-secondary text-h6", children: [
4662
+ /* @__PURE__ */ jsxs21("div", { className: "flex min-w-0 items-center gap-2", children: [
4663
+ post.author_avatar ? /* @__PURE__ */ jsx34(
2973
4664
  next_image_default,
2974
4665
  {
2975
4666
  src: post.author_avatar,
@@ -2980,22 +4671,22 @@ function BlogCard({
2980
4671
  unoptimized: true
2981
4672
  }
2982
4673
  ) : null,
2983
- /* @__PURE__ */ jsxs19("span", { className: "truncate", children: [
4674
+ /* @__PURE__ */ jsxs21("span", { className: "truncate", children: [
2984
4675
  post.author_name || "Anonymous",
2985
- dateStr ? /* @__PURE__ */ jsxs19(Fragment9, { children: [
4676
+ dateStr ? /* @__PURE__ */ jsxs21(Fragment10, { children: [
2986
4677
  " \xB7 ",
2987
4678
  dateStr
2988
4679
  ] }) : null
2989
4680
  ] })
2990
4681
  ] }),
2991
- /* @__PURE__ */ jsxs19(
4682
+ /* @__PURE__ */ jsxs21(
2992
4683
  "div",
2993
4684
  {
2994
4685
  className: "flex shrink-0 items-center gap-1",
2995
4686
  "aria-label": `View count: ${(post.view_count ?? 0).toLocaleString("en-US")} views`,
2996
4687
  children: [
2997
- /* @__PURE__ */ jsx29(Eye2, { className: "h-4 w-4 shrink-0" }),
2998
- /* @__PURE__ */ jsx29("span", { children: (post.view_count ?? 0).toLocaleString("en-US") })
4688
+ /* @__PURE__ */ jsx34(Eye2, { className: "h-4 w-4 shrink-0" }),
4689
+ /* @__PURE__ */ jsx34("span", { children: (post.view_count ?? 0).toLocaleString("en-US") })
2999
4690
  ]
3000
4691
  }
3001
4692
  )
@@ -3007,33 +4698,41 @@ function BlogCard({
3007
4698
  }
3008
4699
 
3009
4700
  // src/components/chat/entity-cards/case-study-card.tsx
3010
- import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
4701
+ import { useState as useState8 } from "react";
4702
+ import { Fragment as Fragment11, jsx as jsx35, jsxs as jsxs22 } from "react/jsx-runtime";
3011
4703
  function CaseStudyCardSkeleton({ size: size2 = "default" }) {
3012
4704
  if (size2 === "sm") {
3013
- return /* @__PURE__ */ jsxs20("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3014
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3015
- /* @__PURE__ */ jsxs20("span", { className: COMPACT_CARD_TEXT_COL, children: [
3016
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx30("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
3017
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx30("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
3018
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx30("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
4705
+ return /* @__PURE__ */ jsxs22("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
4706
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
4707
+ /* @__PURE__ */ jsxs22("span", { className: COMPACT_CARD_TEXT_COL, children: [
4708
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx35("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
4709
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx35("span", { className: "h-3 w-1/2 rounded bg-ods-bg/70" }) }),
4710
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx35("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
3019
4711
  ] })
3020
4712
  ] });
3021
4713
  }
3022
- return /* @__PURE__ */ jsxs20("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex animate-pulse flex-col gap-6 p-6"), children: [
3023
- /* @__PURE__ */ jsx30("div", { className: "aspect-[1200/630] w-full rounded-sm bg-ods-border" }),
3024
- /* @__PURE__ */ jsxs20("div", { className: "flex h-[72px] flex-col gap-2", children: [
3025
- /* @__PURE__ */ jsx30("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
3026
- /* @__PURE__ */ jsx30("div", { className: "h-5 w-1/2 rounded bg-ods-border" })
4714
+ return /* @__PURE__ */ jsxs22("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex animate-pulse flex-col gap-6 p-6"), children: [
4715
+ /* @__PURE__ */ jsx35("div", { className: "aspect-[1200/630] w-full rounded-sm bg-ods-border" }),
4716
+ /* @__PURE__ */ jsxs22("div", { className: "flex h-[72px] flex-col gap-2", children: [
4717
+ /* @__PURE__ */ jsx35("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
4718
+ /* @__PURE__ */ jsx35("div", { className: "h-5 w-1/2 rounded bg-ods-border" })
3027
4719
  ] }),
3028
- /* @__PURE__ */ jsxs20("div", { className: "flex h-[60px] items-center gap-3", children: [
3029
- /* @__PURE__ */ jsx30("div", { className: "h-12 w-12 rounded-full bg-ods-border" }),
3030
- /* @__PURE__ */ jsxs20("div", { className: "flex-1 space-y-2", children: [
3031
- /* @__PURE__ */ jsx30("div", { className: "h-4 w-2/3 rounded bg-ods-border" }),
3032
- /* @__PURE__ */ jsx30("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
4720
+ /* @__PURE__ */ jsxs22("div", { className: "flex h-[60px] items-center gap-3", children: [
4721
+ /* @__PURE__ */ jsx35("div", { className: "h-12 w-12 rounded-full bg-ods-border" }),
4722
+ /* @__PURE__ */ jsxs22("div", { className: "flex-1 space-y-2", children: [
4723
+ /* @__PURE__ */ jsx35("div", { className: "h-4 w-2/3 rounded bg-ods-border" }),
4724
+ /* @__PURE__ */ jsx35("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
3033
4725
  ] })
3034
4726
  ] })
3035
4727
  ] });
3036
4728
  }
4729
+ function caseStudyHighlight(study) {
4730
+ if (study.highlight_video_url) {
4731
+ return { url: study.highlight_video_url, posterUrl: study.highlight_video_thumbnail ?? null };
4732
+ }
4733
+ const bite = (study.video_bites ?? []).filter((candidate) => candidate.featured === true && candidate.url).sort(sortBitesByFeaturedAtDesc)[0];
4734
+ return bite ? { url: bite.url, posterUrl: bite.thumbnail_url ?? null } : null;
4735
+ }
3037
4736
  function CaseStudyCard({
3038
4737
  study,
3039
4738
  href,
@@ -3043,8 +4742,11 @@ function CaseStudyCard({
3043
4742
  placeholderUrl: placeholderUrlProp,
3044
4743
  size: size2 = "default",
3045
4744
  showTypeBadge = true,
4745
+ mediaMounted,
4746
+ onNavigate,
3046
4747
  className
3047
4748
  }) {
4749
+ const [hovered, setHovered] = useState8(false);
3048
4750
  const { target, rel } = useEntityCardLink({
3049
4751
  href,
3050
4752
  targetPlatform,
@@ -3058,8 +4760,8 @@ function CaseStudyCard({
3058
4760
  });
3059
4761
  const coverImage = study.featured_image || placeholderUrl || null;
3060
4762
  if (size2 === "sm") {
3061
- return /* @__PURE__ */ jsxs20("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, className), children: [
3062
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ jsx30(
4763
+ return /* @__PURE__ */ jsxs22("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, className), children: [
4764
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ jsx35(
3063
4765
  next_image_default,
3064
4766
  {
3065
4767
  src: coverImage,
@@ -3071,15 +4773,85 @@ function CaseStudyCard({
3071
4773
  onError: hideOnError
3072
4774
  }
3073
4775
  ) : null }),
3074
- /* @__PURE__ */ jsxs20("span", { className: COMPACT_CARD_TEXT_COL, children: [
3075
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_TITLE, children: study.title }) }),
3076
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_SUBTITLE, children: [study.msp?.name, study.user?.full_name].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
3077
- /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx30("span", { className: COMPACT_CARD_SUMMARY, children: study.summary || COMPACT_CARD_ROW_FILLER }) })
4776
+ /* @__PURE__ */ jsxs22("span", { className: COMPACT_CARD_TEXT_COL, children: [
4777
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_TITLE, children: study.title }) }),
4778
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_SUBTITLE, children: [study.msp?.name, study.user?.full_name].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
4779
+ /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx35("span", { className: COMPACT_CARD_SUMMARY, children: study.summary || COMPACT_CARD_ROW_FILLER }) })
3078
4780
  ] })
3079
4781
  ] });
3080
4782
  }
4783
+ if (size2 === "menu") {
4784
+ const preview = caseStudyHighlight(study);
4785
+ const videoUrl = preview?.url ?? null;
4786
+ const hasAnyVideo = !!(videoUrl || study.main_video_url);
4787
+ const poster = study.main_video_thumbnail || study.featured_image || preview?.posterUrl || null;
4788
+ return /* @__PURE__ */ jsxs22(
4789
+ next_link_default,
4790
+ {
4791
+ href,
4792
+ target,
4793
+ rel,
4794
+ onClick: onNavigate,
4795
+ onPointerEnter: () => setHovered(true),
4796
+ onPointerLeave: () => setHovered(false),
4797
+ onFocus: () => setHovered(true),
4798
+ onBlur: () => setHovered(false),
4799
+ className: cn(
4800
+ // `group/card` is what the shared play glyph accents on.
4801
+ "group/card group flex min-w-0 flex-col gap-[var(--spacing-system-sf)] rounded-xl border border-ods-border bg-ods-bg p-[var(--spacing-system-mf)] text-ods-text-primary transition-colors hover:bg-ods-bg-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-inset focus-visible:ring-ods-accent",
4802
+ className
4803
+ ),
4804
+ children: [
4805
+ /* @__PURE__ */ jsx35("span", { className: "pointer-events-none relative block aspect-video w-full shrink-0 overflow-hidden rounded-md bg-ods-bg", children: videoUrl ? (
4806
+ // The shared hover surface, filled the way the walkthrough card fills
4807
+ // its own 16:9 slot (`cover`): an upright cut is cropped to the slot,
4808
+ // never letterboxed. Sound on hover, muted when the browser blocks it.
4809
+ /* @__PURE__ */ jsx35(
4810
+ VideoHoverPreviewSurface,
4811
+ {
4812
+ url: videoUrl,
4813
+ posterUrl: poster,
4814
+ active: hovered,
4815
+ playerMounted: mediaMounted,
4816
+ fit: "cover",
4817
+ posterSizes: "360px"
4818
+ }
4819
+ )
4820
+ ) : /* @__PURE__ */ jsxs22(Fragment11, { children: [
4821
+ (poster ?? placeholderUrl) && /* @__PURE__ */ jsx35(
4822
+ next_image_default,
4823
+ {
4824
+ src: poster ?? placeholderUrl ?? "",
4825
+ alt: "",
4826
+ className: "object-cover",
4827
+ fill: true,
4828
+ sizes: "360px",
4829
+ unoptimized: true,
4830
+ onError: hideOnError
4831
+ }
4832
+ ),
4833
+ hasAnyVideo && /* @__PURE__ */ jsx35(CardHoverPlay, { size: "md" })
4834
+ ] }) }),
4835
+ study.msp?.name && /* @__PURE__ */ jsxs22("span", { className: "flex items-center gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h6", children: [
4836
+ study.msp.icon_url && /* @__PURE__ */ jsx35(
4837
+ EntityIcon,
4838
+ {
4839
+ icon: { url: study.msp.icon_url },
4840
+ size: 20,
4841
+ className: "size-5 shrink-0 rounded object-contain"
4842
+ }
4843
+ ),
4844
+ /* @__PURE__ */ jsx35("span", { className: "min-w-0 truncate", children: study.msp.name })
4845
+ ] }),
4846
+ /* @__PURE__ */ jsx35("span", { className: "line-clamp-2 text-h6", children: study.title }),
4847
+ study.user?.full_name && /* @__PURE__ */ jsx35("span", { className: "truncate text-ods-text-muted text-h6", children: study.user.job_title ? `${study.user.full_name}, ${study.user.job_title}` : study.user.full_name }),
4848
+ /* @__PURE__ */ jsx35("span", { className: "mt-auto text-ods-accent text-h6", children: hasAnyVideo ? "Watch the story" : "Read the story" })
4849
+ ]
4850
+ }
4851
+ );
4852
+ }
3081
4853
  if (size2 === "portrait") {
3082
- return /* @__PURE__ */ jsx30(
4854
+ return /* @__PURE__ */ jsx35(
3083
4855
  EntityPortraitCard,
3084
4856
  {
3085
4857
  href,
@@ -3100,8 +4872,8 @@ function CaseStudyCard({
3100
4872
  }
3101
4873
  );
3102
4874
  }
3103
- return /* @__PURE__ */ jsx30("a", { href, target, rel, className: cn("block h-full", className), children: /* @__PURE__ */ jsxs20(Card, { className: cn(CONTENT_CARD_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
3104
- /* @__PURE__ */ jsx30("div", { className: "relative aspect-[1200/630] w-full shrink-0 overflow-hidden rounded-sm bg-ods-bg", children: coverImage && /* @__PURE__ */ jsx30(
4875
+ return /* @__PURE__ */ jsx35("a", { href, target, rel, className: cn("block h-full", className), children: /* @__PURE__ */ jsxs22(Card, { className: cn(CONTENT_CARD_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
4876
+ /* @__PURE__ */ jsx35("div", { className: "relative aspect-[1200/630] w-full shrink-0 overflow-hidden rounded-sm bg-ods-bg", children: coverImage && /* @__PURE__ */ jsx35(
3105
4877
  next_image_default,
3106
4878
  {
3107
4879
  src: coverImage,
@@ -3113,10 +4885,10 @@ function CaseStudyCard({
3113
4885
  onError: hideOnError
3114
4886
  }
3115
4887
  ) }),
3116
- /* @__PURE__ */ jsx30("div", { className: "flex h-[72px] shrink-0 items-center", children: /* @__PURE__ */ jsx30("p", { className: "line-clamp-3 break-words text-ods-text-primary text-h4", children: study.title }) }),
3117
- /* @__PURE__ */ jsx30("div", { className: "flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ jsxs20("div", { className: "flex w-full min-w-0 items-center gap-3", children: [
3118
- /* @__PURE__ */ jsxs20("div", { className: "relative h-12 w-12 shrink-0", children: [
3119
- study.user?.avatar_url ? /* @__PURE__ */ jsx30(
4888
+ /* @__PURE__ */ jsx35("div", { className: "flex h-[72px] shrink-0 items-center", children: /* @__PURE__ */ jsx35("p", { className: "line-clamp-3 break-words text-ods-text-primary text-h4", children: study.title }) }),
4889
+ /* @__PURE__ */ jsx35("div", { className: "flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ jsxs22("div", { className: "flex w-full min-w-0 items-center gap-3", children: [
4890
+ /* @__PURE__ */ jsxs22("div", { className: "relative h-12 w-12 shrink-0", children: [
4891
+ study.user?.avatar_url ? /* @__PURE__ */ jsx35(
3120
4892
  next_image_default,
3121
4893
  {
3122
4894
  src: study.user.avatar_url,
@@ -3126,8 +4898,8 @@ function CaseStudyCard({
3126
4898
  height: 48,
3127
4899
  unoptimized: true
3128
4900
  }
3129
- ) : /* @__PURE__ */ jsx30("div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx30("span", { className: "text-ods-text-secondary text-h4", children: (study.user?.full_name || "A").charAt(0).toUpperCase() }) }),
3130
- study.msp?.icon_url && /* @__PURE__ */ jsx30("div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ jsx30(
4901
+ ) : /* @__PURE__ */ jsx35("div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx35("span", { className: "text-ods-text-secondary text-h4", children: (study.user?.full_name || "A").charAt(0).toUpperCase() }) }),
4902
+ study.msp?.icon_url && /* @__PURE__ */ jsx35("div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ jsx35(
3131
4903
  next_image_default,
3132
4904
  {
3133
4905
  src: study.msp.icon_url,
@@ -3139,50 +4911,50 @@ function CaseStudyCard({
3139
4911
  }
3140
4912
  ) })
3141
4913
  ] }),
3142
- /* @__PURE__ */ jsxs20("div", { className: "min-w-0 flex-1", children: [
3143
- /* @__PURE__ */ jsxs20("p", { className: "truncate text-ods-text-primary text-h6", children: [
4914
+ /* @__PURE__ */ jsxs22("div", { className: "min-w-0 flex-1", children: [
4915
+ /* @__PURE__ */ jsxs22("p", { className: "truncate text-ods-text-primary text-h6", children: [
3144
4916
  study.user?.full_name || "Anonymous",
3145
- study.msp?.name && /* @__PURE__ */ jsxs20("span", { className: "text-ods-text-secondary", children: [
4917
+ study.msp?.name && /* @__PURE__ */ jsxs22("span", { className: "text-ods-text-secondary", children: [
3146
4918
  " \u2022 ",
3147
4919
  study.msp.name
3148
4920
  ] })
3149
4921
  ] }),
3150
- /* @__PURE__ */ jsx30("p", { className: "truncate text-ods-text-secondary text-h6", children: study.user?.job_title || "\xA0" })
4922
+ /* @__PURE__ */ jsx35("p", { className: "truncate text-ods-text-secondary text-h6", children: study.user?.job_title || "\xA0" })
3151
4923
  ] })
3152
4924
  ] }) })
3153
4925
  ] }) });
3154
4926
  }
3155
4927
 
3156
4928
  // src/components/chat/entity-cards/customer-interview-card.tsx
3157
- import { Video } from "lucide-react";
3158
- import { Fragment as Fragment10, jsx as jsx31, jsxs as jsxs21 } from "react/jsx-runtime";
4929
+ import { Video as Video3 } from "lucide-react";
4930
+ import { Fragment as Fragment12, jsx as jsx36, jsxs as jsxs23 } from "react/jsx-runtime";
3159
4931
  function CustomerInterviewCardSkeleton({ size: size2 = "default" }) {
3160
4932
  if (size2 === "sm") {
3161
- return /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3162
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3163
- /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_TEXT_COL, children: [
3164
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx31("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
3165
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx31("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
3166
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx31("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
4933
+ return /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
4934
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
4935
+ /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_TEXT_COL, children: [
4936
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx36("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
4937
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx36("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
4938
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx36("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
3167
4939
  ] })
3168
4940
  ] });
3169
4941
  }
3170
- return /* @__PURE__ */ jsxs21("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex animate-pulse flex-col gap-6 p-6"), children: [
3171
- /* @__PURE__ */ jsx31("div", { className: "aspect-[1200/630] w-full rounded-sm bg-ods-border" }),
3172
- /* @__PURE__ */ jsxs21("div", { className: "space-y-2", children: [
3173
- /* @__PURE__ */ jsx31("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
3174
- /* @__PURE__ */ jsx31("div", { className: "h-5 w-1/2 rounded bg-ods-border" })
4942
+ return /* @__PURE__ */ jsxs23("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex animate-pulse flex-col gap-6 p-6"), children: [
4943
+ /* @__PURE__ */ jsx36("div", { className: "aspect-[1200/630] w-full rounded-sm bg-ods-border" }),
4944
+ /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
4945
+ /* @__PURE__ */ jsx36("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
4946
+ /* @__PURE__ */ jsx36("div", { className: "h-5 w-1/2 rounded bg-ods-border" })
3175
4947
  ] }),
3176
- /* @__PURE__ */ jsxs21("div", { className: "space-y-2", children: [
3177
- /* @__PURE__ */ jsx31("div", { className: "h-3 w-full rounded bg-ods-border" }),
3178
- /* @__PURE__ */ jsx31("div", { className: "h-3 w-5/6 rounded bg-ods-border" }),
3179
- /* @__PURE__ */ jsx31("div", { className: "h-3 w-4/5 rounded bg-ods-border" })
4948
+ /* @__PURE__ */ jsxs23("div", { className: "space-y-2", children: [
4949
+ /* @__PURE__ */ jsx36("div", { className: "h-3 w-full rounded bg-ods-border" }),
4950
+ /* @__PURE__ */ jsx36("div", { className: "h-3 w-5/6 rounded bg-ods-border" }),
4951
+ /* @__PURE__ */ jsx36("div", { className: "h-3 w-4/5 rounded bg-ods-border" })
3180
4952
  ] }),
3181
- /* @__PURE__ */ jsxs21("div", { className: "mt-auto flex h-[60px] items-center gap-3", children: [
3182
- /* @__PURE__ */ jsx31("div", { className: "h-12 w-12 rounded-full bg-ods-border" }),
3183
- /* @__PURE__ */ jsxs21("div", { className: "flex-1 space-y-2", children: [
3184
- /* @__PURE__ */ jsx31("div", { className: "h-4 w-2/3 rounded bg-ods-border" }),
3185
- /* @__PURE__ */ jsx31("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
4953
+ /* @__PURE__ */ jsxs23("div", { className: "mt-auto flex h-[60px] items-center gap-3", children: [
4954
+ /* @__PURE__ */ jsx36("div", { className: "h-12 w-12 rounded-full bg-ods-border" }),
4955
+ /* @__PURE__ */ jsxs23("div", { className: "flex-1 space-y-2", children: [
4956
+ /* @__PURE__ */ jsx36("div", { className: "h-4 w-2/3 rounded bg-ods-border" }),
4957
+ /* @__PURE__ */ jsx36("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
3186
4958
  ] })
3187
4959
  ] })
3188
4960
  ] });
@@ -3211,9 +4983,9 @@ function CustomerInterviewCard({
3211
4983
  });
3212
4984
  const thumbnailUrl = interview.featured_image || placeholderUrl || null;
3213
4985
  if (size2 === "sm") {
3214
- return /* @__PURE__ */ jsxs21("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, className), children: [
3215
- /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
3216
- thumbnailUrl ? /* @__PURE__ */ jsx31(
4986
+ return /* @__PURE__ */ jsxs23("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, className), children: [
4987
+ /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
4988
+ thumbnailUrl ? /* @__PURE__ */ jsx36(
3217
4989
  next_image_default,
3218
4990
  {
3219
4991
  src: thumbnailUrl,
@@ -3225,17 +4997,17 @@ function CustomerInterviewCard({
3225
4997
  onError: hideOnError
3226
4998
  }
3227
4999
  ) : null,
3228
- interview.main_video_url ? /* @__PURE__ */ jsx31("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx31(Video, { className: "h-4 w-4 text-ods-text-on-dark" }) }) : null
5000
+ interview.main_video_url ? /* @__PURE__ */ jsx36("span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ jsx36(Video3, { className: "h-4 w-4 text-ods-text-on-dark" }) }) : null
3229
5001
  ] }),
3230
- /* @__PURE__ */ jsxs21("span", { className: COMPACT_CARD_TEXT_COL, children: [
3231
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_TITLE, children: interview.title }) }),
3232
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_SUBTITLE, children: [interview.user?.full_name, interview.msp?.name].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
3233
- /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx31("span", { className: COMPACT_CARD_SUMMARY, children: interview.video_summary || COMPACT_CARD_ROW_FILLER }) })
5002
+ /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_TEXT_COL, children: [
5003
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_TITLE, children: interview.title }) }),
5004
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_SUBTITLE, children: [interview.user?.full_name, interview.msp?.name].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
5005
+ /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_SUMMARY, children: interview.video_summary || COMPACT_CARD_ROW_FILLER }) })
3234
5006
  ] })
3235
5007
  ] });
3236
5008
  }
3237
5009
  if (size2 === "portrait") {
3238
- return /* @__PURE__ */ jsx31(
5010
+ return /* @__PURE__ */ jsx36(
3239
5011
  EntityPortraitCard,
3240
5012
  {
3241
5013
  href,
@@ -3256,9 +5028,9 @@ function CustomerInterviewCard({
3256
5028
  }
3257
5029
  );
3258
5030
  }
3259
- return /* @__PURE__ */ jsx31("a", { href, target, rel, className: cn("block h-full", className), children: /* @__PURE__ */ jsxs21(Card, { className: cn(CONTENT_CARD_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
3260
- /* @__PURE__ */ jsx31("div", { className: "relative aspect-[1200/630] w-full shrink-0 overflow-hidden rounded-sm bg-ods-bg", children: thumbnailUrl ? /* @__PURE__ */ jsxs21(Fragment10, { children: [
3261
- /* @__PURE__ */ jsx31(
5031
+ return /* @__PURE__ */ jsx36("a", { href, target, rel, className: cn("block h-full", className), children: /* @__PURE__ */ jsxs23(Card, { className: cn(CONTENT_CARD_FRAME_CLASS, "flex flex-col gap-6 p-6"), children: [
5032
+ /* @__PURE__ */ jsx36("div", { className: "relative aspect-[1200/630] w-full shrink-0 overflow-hidden rounded-sm bg-ods-bg", children: thumbnailUrl ? /* @__PURE__ */ jsxs23(Fragment12, { children: [
5033
+ /* @__PURE__ */ jsx36(
3262
5034
  next_image_default,
3263
5035
  {
3264
5036
  src: thumbnailUrl,
@@ -3270,13 +5042,13 @@ function CustomerInterviewCard({
3270
5042
  onError: hideOnError
3271
5043
  }
3272
5044
  ),
3273
- interview.main_video_url && /* @__PURE__ */ jsx31("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40", children: /* @__PURE__ */ jsx31("div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-ods-accent/90", children: /* @__PURE__ */ jsx31(Video, { className: "h-8 w-8 text-ods-text-on-accent" }) }) })
3274
- ] }) : /* @__PURE__ */ jsx31("div", { className: "flex h-full w-full items-center justify-center bg-ods-bg", children: /* @__PURE__ */ jsx31(Video, { className: "h-12 w-12 text-ods-text-secondary" }) }) }),
3275
- /* @__PURE__ */ jsx31("div", { className: "shrink-0", children: /* @__PURE__ */ jsx31("h3", { className: "line-clamp-2 break-words text-ods-text-primary text-h3", children: interview.title }) }),
3276
- interview.video_summary && /* @__PURE__ */ jsx31("div", { className: "shrink-0", children: /* @__PURE__ */ jsx31("p", { className: "line-clamp-3 text-ods-text-secondary text-h6", children: interview.video_summary }) }),
3277
- /* @__PURE__ */ jsx31("div", { className: "mt-auto flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ jsxs21("div", { className: "flex w-full min-w-0 items-center gap-3", children: [
3278
- /* @__PURE__ */ jsxs21("div", { className: "relative h-12 w-12 shrink-0", children: [
3279
- interview.user?.avatar_url ? /* @__PURE__ */ jsx31(
5045
+ interview.main_video_url && /* @__PURE__ */ jsx36("div", { className: "absolute inset-0 flex items-center justify-center bg-black/40", children: /* @__PURE__ */ jsx36("div", { className: "flex h-16 w-16 items-center justify-center rounded-full bg-ods-accent/90", children: /* @__PURE__ */ jsx36(Video3, { className: "h-8 w-8 text-ods-text-on-accent" }) }) })
5046
+ ] }) : /* @__PURE__ */ jsx36("div", { className: "flex h-full w-full items-center justify-center bg-ods-bg", children: /* @__PURE__ */ jsx36(Video3, { className: "h-12 w-12 text-ods-text-secondary" }) }) }),
5047
+ /* @__PURE__ */ jsx36("div", { className: "shrink-0", children: /* @__PURE__ */ jsx36("h3", { className: "line-clamp-2 break-words text-ods-text-primary text-h3", children: interview.title }) }),
5048
+ interview.video_summary && /* @__PURE__ */ jsx36("div", { className: "shrink-0", children: /* @__PURE__ */ jsx36("p", { className: "line-clamp-3 text-ods-text-secondary text-h6", children: interview.video_summary }) }),
5049
+ /* @__PURE__ */ jsx36("div", { className: "mt-auto flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ jsxs23("div", { className: "flex w-full min-w-0 items-center gap-3", children: [
5050
+ /* @__PURE__ */ jsxs23("div", { className: "relative h-12 w-12 shrink-0", children: [
5051
+ interview.user?.avatar_url ? /* @__PURE__ */ jsx36(
3280
5052
  next_image_default,
3281
5053
  {
3282
5054
  src: interview.user.avatar_url,
@@ -3286,8 +5058,8 @@ function CustomerInterviewCard({
3286
5058
  height: 48,
3287
5059
  unoptimized: true
3288
5060
  }
3289
- ) : /* @__PURE__ */ jsx31("div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx31("span", { className: "text-ods-text-secondary text-h4", children: (interview.user?.full_name || "A").charAt(0).toUpperCase() }) }),
3290
- interview.msp?.icon_url && /* @__PURE__ */ jsx31("div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ jsx31(
5061
+ ) : /* @__PURE__ */ jsx36("div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ jsx36("span", { className: "text-ods-text-secondary text-h4", children: (interview.user?.full_name || "A").charAt(0).toUpperCase() }) }),
5062
+ interview.msp?.icon_url && /* @__PURE__ */ jsx36("div", { className: "absolute -bottom-1 -right-1 flex h-6 w-6 items-center justify-center overflow-hidden rounded-full bg-ods-text-primary ring-1 ring-ods-bg", children: /* @__PURE__ */ jsx36(
3291
5063
  next_image_default,
3292
5064
  {
3293
5065
  src: interview.msp.icon_url,
@@ -3299,15 +5071,15 @@ function CustomerInterviewCard({
3299
5071
  }
3300
5072
  ) })
3301
5073
  ] }),
3302
- /* @__PURE__ */ jsxs21("div", { className: "min-w-0 flex-1", children: [
3303
- /* @__PURE__ */ jsxs21("p", { className: "truncate text-ods-text-primary text-h6", children: [
5074
+ /* @__PURE__ */ jsxs23("div", { className: "min-w-0 flex-1", children: [
5075
+ /* @__PURE__ */ jsxs23("p", { className: "truncate text-ods-text-primary text-h6", children: [
3304
5076
  interview.user?.full_name || "Anonymous",
3305
- interview.msp?.name && /* @__PURE__ */ jsxs21("span", { className: "text-ods-text-secondary", children: [
5077
+ interview.msp?.name && /* @__PURE__ */ jsxs23("span", { className: "text-ods-text-secondary", children: [
3306
5078
  " \u2022 ",
3307
5079
  interview.msp.name
3308
5080
  ] })
3309
5081
  ] }),
3310
- /* @__PURE__ */ jsx31("p", { className: "truncate text-ods-text-secondary text-h6", children: interview.user?.job_title || " " })
5082
+ /* @__PURE__ */ jsx36("p", { className: "truncate text-ods-text-secondary text-h6", children: interview.user?.job_title || " " })
3311
5083
  ] })
3312
5084
  ] }) })
3313
5085
  ] }) });
@@ -3323,29 +5095,29 @@ function formatInvestorUpdatePeriod(start, end, options) {
3323
5095
  }
3324
5096
 
3325
5097
  // src/components/chat/entity-cards/investor-update-card.tsx
3326
- import { Calendar } from "lucide-react";
3327
- import { jsx as jsx32, jsxs as jsxs22 } from "react/jsx-runtime";
5098
+ import { Calendar as Calendar2 } from "lucide-react";
5099
+ import { jsx as jsx37, jsxs as jsxs24 } from "react/jsx-runtime";
3328
5100
  function InvestorUpdateCardSkeleton({ size: size2 = "default" }) {
3329
5101
  if (size2 === "sm") {
3330
- return /* @__PURE__ */ jsxs22("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3331
- /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3332
- /* @__PURE__ */ jsxs22("span", { className: COMPACT_CARD_TEXT_COL, children: [
3333
- /* @__PURE__ */ jsxs22("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
3334
- /* @__PURE__ */ jsx32("span", { className: "h-3.5 w-1/2 rounded bg-ods-bg" }),
3335
- /* @__PURE__ */ jsx32("span", { className: "h-4 w-8 shrink-0 rounded bg-ods-bg/70" })
5102
+ return /* @__PURE__ */ jsxs24("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
5103
+ /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
5104
+ /* @__PURE__ */ jsxs24("span", { className: COMPACT_CARD_TEXT_COL, children: [
5105
+ /* @__PURE__ */ jsxs24("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
5106
+ /* @__PURE__ */ jsx37("span", { className: "h-3.5 w-1/2 rounded bg-ods-bg" }),
5107
+ /* @__PURE__ */ jsx37("span", { className: "h-4 w-8 shrink-0 rounded bg-ods-bg/70" })
3336
5108
  ] }),
3337
- /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx32("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) }),
3338
- /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx32("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
5109
+ /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: "h-3 w-1/3 rounded bg-ods-bg/70" }) }),
5110
+ /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
3339
5111
  ] })
3340
5112
  ] });
3341
5113
  }
3342
- return /* @__PURE__ */ jsxs22("div", { className: `h-full animate-pulse ${CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: [
3343
- /* @__PURE__ */ jsx32("div", { className: "aspect-[1200/630] bg-ods-border" }),
3344
- /* @__PURE__ */ jsxs22("div", { className: "space-y-3 p-4", children: [
3345
- /* @__PURE__ */ jsx32("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
3346
- /* @__PURE__ */ jsx32("div", { className: "h-3 w-full rounded bg-ods-border" }),
3347
- /* @__PURE__ */ jsx32("div", { className: "h-3 w-4/5 rounded bg-ods-border" }),
3348
- /* @__PURE__ */ jsx32("div", { className: "h-4 w-1/3 rounded bg-ods-border" })
5114
+ return /* @__PURE__ */ jsxs24("div", { className: `h-full animate-pulse ${CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: [
5115
+ /* @__PURE__ */ jsx37("div", { className: "aspect-[1200/630] bg-ods-border" }),
5116
+ /* @__PURE__ */ jsxs24("div", { className: "space-y-3 p-4", children: [
5117
+ /* @__PURE__ */ jsx37("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
5118
+ /* @__PURE__ */ jsx37("div", { className: "h-3 w-full rounded bg-ods-border" }),
5119
+ /* @__PURE__ */ jsx37("div", { className: "h-3 w-4/5 rounded bg-ods-border" }),
5120
+ /* @__PURE__ */ jsx37("div", { className: "h-4 w-1/3 rounded bg-ods-border" })
3349
5121
  ] })
3350
5122
  ] });
3351
5123
  }
@@ -3374,8 +5146,8 @@ function InvestorUpdateCard({
3374
5146
  const coverImage = update.featured_image || placeholderUrl || null;
3375
5147
  if (size2 === "sm") {
3376
5148
  const periodText = formatInvestorUpdatePeriod(update.period_start, update.period_end);
3377
- return /* @__PURE__ */ jsxs22("a", { href, target, rel, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: [
3378
- /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ jsx32(
5149
+ return /* @__PURE__ */ jsxs24("a", { href, target, rel, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: [
5150
+ /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_IMAGE_SLOT, children: coverImage ? /* @__PURE__ */ jsx37(
3379
5151
  next_image_default,
3380
5152
  {
3381
5153
  src: coverImage,
@@ -3389,23 +5161,23 @@ function InvestorUpdateCard({
3389
5161
  img.style.display = "none";
3390
5162
  }
3391
5163
  }
3392
- ) : /* @__PURE__ */ jsx32("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ jsx32(Calendar, { className: "h-4 w-4" }) }) }),
3393
- /* @__PURE__ */ jsxs22("span", { className: COMPACT_CARD_TEXT_COL, children: [
3394
- /* @__PURE__ */ jsxs22("span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
3395
- /* @__PURE__ */ jsx32("span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: update.title || `Update #${update.update_number ?? "?"}` }),
3396
- update.update_number ? /* @__PURE__ */ jsxs22("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-ods-accent text-h6", children: [
5164
+ ) : /* @__PURE__ */ jsx37("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ jsx37(Calendar2, { className: "h-4 w-4" }) }) }),
5165
+ /* @__PURE__ */ jsxs24("span", { className: COMPACT_CARD_TEXT_COL, children: [
5166
+ /* @__PURE__ */ jsxs24("span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
5167
+ /* @__PURE__ */ jsx37("span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: update.title || `Update #${update.update_number ?? "?"}` }),
5168
+ update.update_number ? /* @__PURE__ */ jsxs24("span", { className: "shrink-0 rounded bg-ods-accent/10 px-1.5 py-0.5 text-ods-accent text-h6", children: [
3397
5169
  "#",
3398
5170
  update.update_number
3399
5171
  ] }) : null
3400
5172
  ] }),
3401
- /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_SUBTITLE, children: periodText || "Investor update" }) }),
3402
- /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx32("span", { className: COMPACT_CARD_SUMMARY, children: (update.strategic_update || update.content || "").slice(0, 120) || COMPACT_CARD_ROW_FILLER }) })
5173
+ /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_SUBTITLE, children: periodText || "Investor update" }) }),
5174
+ /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_SUMMARY, children: (update.strategic_update || update.content || "").slice(0, 120) || COMPACT_CARD_ROW_FILLER }) })
3403
5175
  ] })
3404
5176
  ] });
3405
5177
  }
3406
5178
  if (size2 === "portrait") {
3407
5179
  const periodText = formatInvestorUpdatePeriod(update.period_start, update.period_end);
3408
- return /* @__PURE__ */ jsx32(
5180
+ return /* @__PURE__ */ jsx37(
3409
5181
  EntityPortraitCard,
3410
5182
  {
3411
5183
  href,
@@ -3421,28 +5193,28 @@ function InvestorUpdateCard({
3421
5193
  }
3422
5194
  );
3423
5195
  }
3424
- return /* @__PURE__ */ jsx32("a", { href, target, rel, className: `block h-full ${className ?? ""}`, children: /* @__PURE__ */ jsx32(
5196
+ return /* @__PURE__ */ jsx37("a", { href, target, rel, className: `block h-full ${className ?? ""}`, children: /* @__PURE__ */ jsx37(
3425
5197
  AdminContentCard,
3426
5198
  {
3427
5199
  imageUrl: update.featured_image,
3428
5200
  placeholderUrl,
3429
5201
  title: update.title || `Update #${update.update_number || "?"}`,
3430
5202
  summary: update.strategic_update?.slice(0, 120) || update.content?.slice(0, 120) || "No description",
3431
- badges: update.update_number ? /* @__PURE__ */ jsxs22("span", { className: "rounded bg-ods-accent/10 px-2 py-0.5 text-xs font-medium text-ods-accent", children: [
5203
+ badges: update.update_number ? /* @__PURE__ */ jsxs24("span", { className: "rounded bg-ods-accent/10 px-2 py-0.5 text-xs font-medium text-ods-accent", children: [
3432
5204
  "#",
3433
5205
  update.update_number
3434
5206
  ] }) : void 0,
3435
- meta: update.period_start || update.period_end ? /* @__PURE__ */ jsxs22("div", { className: "flex items-center gap-1", children: [
3436
- /* @__PURE__ */ jsx32(Calendar, { className: "h-3 w-3" }),
3437
- /* @__PURE__ */ jsx32("span", { children: formatInvestorUpdatePeriod(update.period_start, update.period_end) })
5207
+ meta: update.period_start || update.period_end ? /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-1", children: [
5208
+ /* @__PURE__ */ jsx37(Calendar2, { className: "h-3 w-3" }),
5209
+ /* @__PURE__ */ jsx37("span", { children: formatInvestorUpdatePeriod(update.period_start, update.period_end) })
3438
5210
  ] }) : void 0
3439
5211
  }
3440
5212
  ) });
3441
5213
  }
3442
5214
 
3443
5215
  // src/components/chat/entity-cards/onboarding-guide-card.tsx
3444
- import { Clock, ExternalLink, GraduationCap } from "lucide-react";
3445
- import { jsx as jsx33, jsxs as jsxs23 } from "react/jsx-runtime";
5216
+ import { Clock, ExternalLink, GraduationCap as GraduationCap2 } from "lucide-react";
5217
+ import { jsx as jsx38, jsxs as jsxs25 } from "react/jsx-runtime";
3446
5218
  function stripMarkdownPreview(text) {
3447
5219
  return text.replace(/```[\s\S]*?```/g, " ").replace(/^#{1,6}\s+/gm, "").replace(/!?\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/[*_~`>]/g, "").replace(/^\s*[-+]\s+/gm, "").replace(/-{3,}/g, " ").replace(/\s+/g, " ").trim().replace(/^([\s\S]{240})[\s\S]+$/, "$1\u2026");
3448
5220
  }
@@ -3456,64 +5228,64 @@ var HORIZONTAL_SIZE_TOKENS = {
3456
5228
  };
3457
5229
  function OnboardingGuideCardSkeleton({ size: size2 = "default" }) {
3458
5230
  if (size2 === "catalog") {
3459
- return /* @__PURE__ */ jsxs23("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex animate-pulse flex-col gap-4 p-6"), children: [
3460
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-4 md:flex-row md:gap-6", children: [
3461
- /* @__PURE__ */ jsx33("div", { className: "aspect-[1200/630] w-full flex-shrink-0 rounded-lg bg-ods-border md:w-[256px]" }),
3462
- /* @__PURE__ */ jsxs23("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3463
- /* @__PURE__ */ jsxs23("div", { className: "mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 md:min-h-[72px]", children: [
3464
- /* @__PURE__ */ jsx33("div", { className: "h-[25px] w-3/4 rounded bg-ods-border md:h-[30px]" }),
3465
- /* @__PURE__ */ jsx33("div", { className: "h-[25px] w-1/2 rounded bg-ods-border md:h-[30px]" })
5231
+ return /* @__PURE__ */ jsxs25("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, "flex animate-pulse flex-col gap-4 p-6"), children: [
5232
+ /* @__PURE__ */ jsxs25("div", { className: "flex flex-col gap-4 md:flex-row md:gap-6", children: [
5233
+ /* @__PURE__ */ jsx38("div", { className: "aspect-[1200/630] w-full flex-shrink-0 rounded-lg bg-ods-border md:w-[256px]" }),
5234
+ /* @__PURE__ */ jsxs25("div", { className: "flex min-w-0 flex-1 flex-col", children: [
5235
+ /* @__PURE__ */ jsxs25("div", { className: "mb-3 flex min-h-[60px] flex-col justify-start gap-1.5 md:min-h-[72px]", children: [
5236
+ /* @__PURE__ */ jsx38("div", { className: "h-[25px] w-3/4 rounded bg-ods-border md:h-[30px]" }),
5237
+ /* @__PURE__ */ jsx38("div", { className: "h-[25px] w-1/2 rounded bg-ods-border md:h-[30px]" })
3466
5238
  ] }),
3467
- /* @__PURE__ */ jsxs23("div", { className: "flex min-h-[46px] flex-col justify-start gap-2 md:min-h-[52px]", children: [
3468
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-full rounded bg-ods-border/70" }),
3469
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-5/6 rounded bg-ods-border/70" })
5239
+ /* @__PURE__ */ jsxs25("div", { className: "flex min-h-[46px] flex-col justify-start gap-2 md:min-h-[52px]", children: [
5240
+ /* @__PURE__ */ jsx38("div", { className: "h-3 w-full rounded bg-ods-border/70" }),
5241
+ /* @__PURE__ */ jsx38("div", { className: "h-3 w-5/6 rounded bg-ods-border/70" })
3470
5242
  ] })
3471
5243
  ] })
3472
5244
  ] }),
3473
- /* @__PURE__ */ jsxs23("div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border md:grid-cols-3", children: [
3474
- [0, 1].map((i) => /* @__PURE__ */ jsx33(
5245
+ /* @__PURE__ */ jsxs25("div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border md:grid-cols-3", children: [
5246
+ [0, 1].map((i) => /* @__PURE__ */ jsx38(
3475
5247
  "div",
3476
5248
  {
3477
5249
  className: "flex flex-col gap-3 border-b border-ods-border p-4 md:border-b-0 md:border-r",
3478
- children: /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-2", children: [
3479
- /* @__PURE__ */ jsx33("div", { className: "h-6 w-32 rounded bg-ods-border" }),
3480
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-20 rounded bg-ods-border" })
5250
+ children: /* @__PURE__ */ jsxs25("div", { className: "flex flex-col gap-2", children: [
5251
+ /* @__PURE__ */ jsx38("div", { className: "h-6 w-32 rounded bg-ods-border" }),
5252
+ /* @__PURE__ */ jsx38("div", { className: "h-3 w-20 rounded bg-ods-border" })
3481
5253
  ] })
3482
5254
  },
3483
5255
  `cell-${i}`
3484
5256
  )),
3485
- /* @__PURE__ */ jsxs23("div", { className: "flex items-center gap-3 p-4", children: [
3486
- /* @__PURE__ */ jsx33("div", { className: "h-10 w-10 shrink-0 rounded-full bg-ods-border" }),
3487
- /* @__PURE__ */ jsxs23("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
3488
- /* @__PURE__ */ jsx33("div", { className: "h-4 w-3/4 rounded bg-ods-border" }),
3489
- /* @__PURE__ */ jsx33("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
5257
+ /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-3 p-4", children: [
5258
+ /* @__PURE__ */ jsx38("div", { className: "h-10 w-10 shrink-0 rounded-full bg-ods-border" }),
5259
+ /* @__PURE__ */ jsxs25("div", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
5260
+ /* @__PURE__ */ jsx38("div", { className: "h-4 w-3/4 rounded bg-ods-border" }),
5261
+ /* @__PURE__ */ jsx38("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
3490
5262
  ] })
3491
5263
  ] })
3492
5264
  ] })
3493
5265
  ] });
3494
5266
  }
3495
5267
  if (size2 === "sm") {
3496
- return /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3497
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
3498
- /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_TEXT_COL, children: [
3499
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx33("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
3500
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx33("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
3501
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx33("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
5268
+ return /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
5269
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
5270
+ /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_TEXT_COL, children: [
5271
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx38("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
5272
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx38("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
5273
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx38("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
3502
5274
  ] }),
3503
- /* @__PURE__ */ jsx33("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx33("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
5275
+ /* @__PURE__ */ jsx38("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx38("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
3504
5276
  ] });
3505
5277
  }
3506
5278
  const t = HORIZONTAL_SIZE_TOKENS.default;
3507
- return /* @__PURE__ */ jsxs23(
5279
+ return /* @__PURE__ */ jsxs25(
3508
5280
  "span",
3509
5281
  {
3510
5282
  className: `flex items-start gap-3 rounded-md border border-ods-border bg-ods-card ${t.padding} animate-pulse`,
3511
5283
  children: [
3512
- /* @__PURE__ */ jsx33("span", { className: `inline-flex shrink-0 items-center justify-center rounded-full bg-ods-bg ${t.step}` }),
3513
- /* @__PURE__ */ jsxs23("span", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
3514
- /* @__PURE__ */ jsx33("span", { className: "block h-4 w-2/3 rounded bg-ods-bg" }),
3515
- /* @__PURE__ */ jsx33("span", { className: "block h-3 w-1/3 rounded bg-ods-bg/70" }),
3516
- /* @__PURE__ */ jsx33("span", { className: "block h-3 w-full rounded bg-ods-bg/40" })
5284
+ /* @__PURE__ */ jsx38("span", { className: `inline-flex shrink-0 items-center justify-center rounded-full bg-ods-bg ${t.step}` }),
5285
+ /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 flex-1 flex-col gap-2", children: [
5286
+ /* @__PURE__ */ jsx38("span", { className: "block h-4 w-2/3 rounded bg-ods-bg" }),
5287
+ /* @__PURE__ */ jsx38("span", { className: "block h-3 w-1/3 rounded bg-ods-bg/70" }),
5288
+ /* @__PURE__ */ jsx38("span", { className: "block h-3 w-full rounded bg-ods-bg/40" })
3517
5289
  ] })
3518
5290
  ]
3519
5291
  }
@@ -3543,7 +5315,7 @@ function OnboardingGuideCard({
3543
5315
  });
3544
5316
  if (size2 === "portrait") {
3545
5317
  const coverImage = guide.featured_image || guide.main_video_thumbnail || guide.og_image_url || null;
3546
- return /* @__PURE__ */ jsx33(
5318
+ return /* @__PURE__ */ jsx38(
3547
5319
  EntityPortraitCard,
3548
5320
  {
3549
5321
  href,
@@ -3564,7 +5336,7 @@ function OnboardingGuideCard({
3564
5336
  const hasVideoCover = !!(guide.main_video_thumbnail || guide.highlight_video_thumbnail);
3565
5337
  const stepLabel = typeof guide.step_order === "number" ? String(guide.step_order).padStart(2, "0") : "\u2014";
3566
5338
  const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? formatDurationMMSS(Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
3567
- return /* @__PURE__ */ jsx33(
5339
+ return /* @__PURE__ */ jsx38(
3568
5340
  next_link_default,
3569
5341
  {
3570
5342
  href,
@@ -3573,10 +5345,10 @@ function OnboardingGuideCard({
3573
5345
  prefetch: false,
3574
5346
  className: cn(CONTENT_CARD_FRAME_CLASS, "block no-underline", className),
3575
5347
  "aria-label": `Open ${guide.title}`,
3576
- children: /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-4 p-6", children: [
3577
- /* @__PURE__ */ jsxs23("div", { className: "flex flex-col gap-4 md:flex-row md:gap-6", children: [
3578
- /* @__PURE__ */ jsx33("div", { className: "w-full flex-shrink-0 md:w-[256px]", children: /* @__PURE__ */ jsxs23("div", { className: "relative aspect-[1200/630] w-full overflow-hidden rounded-lg bg-ods-bg", children: [
3579
- coverImage ? /* @__PURE__ */ jsx33(
5348
+ children: /* @__PURE__ */ jsxs25("div", { className: "flex flex-col gap-4 p-6", children: [
5349
+ /* @__PURE__ */ jsxs25("div", { className: "flex flex-col gap-4 md:flex-row md:gap-6", children: [
5350
+ /* @__PURE__ */ jsx38("div", { className: "w-full flex-shrink-0 md:w-[256px]", children: /* @__PURE__ */ jsxs25("div", { className: "relative aspect-[1200/630] w-full overflow-hidden rounded-lg bg-ods-bg", children: [
5351
+ coverImage ? /* @__PURE__ */ jsx38(
3580
5352
  next_image_default,
3581
5353
  {
3582
5354
  src: coverImage,
@@ -3586,7 +5358,7 @@ function OnboardingGuideCard({
3586
5358
  className: "object-cover",
3587
5359
  unoptimized: true
3588
5360
  }
3589
- ) : /* @__PURE__ */ jsx33(
5361
+ ) : /* @__PURE__ */ jsx38(
3590
5362
  BlogImagePlaceholder,
3591
5363
  {
3592
5364
  title: guide.title,
@@ -3594,18 +5366,18 @@ function OnboardingGuideCard({
3594
5366
  className: "absolute inset-0"
3595
5367
  }
3596
5368
  ),
3597
- hasVideoCover && coverImage && /* @__PURE__ */ jsx33(CardHoverPlay, { size: "md" }),
3598
- durationLabel && /* @__PURE__ */ jsxs23("span", { className: "absolute bottom-2 right-2 inline-flex items-center gap-1 rounded bg-black/60 px-2 py-1 text-ods-text-on-dark text-code", children: [
3599
- /* @__PURE__ */ jsx33(Clock, { className: "h-3 w-3" }),
5369
+ hasVideoCover && coverImage && /* @__PURE__ */ jsx38(CardHoverPlay, { size: "md" }),
5370
+ durationLabel && /* @__PURE__ */ jsxs25("span", { className: "absolute bottom-2 right-2 inline-flex items-center gap-1 rounded bg-black/60 px-2 py-1 text-ods-text-on-dark text-code", children: [
5371
+ /* @__PURE__ */ jsx38(Clock, { className: "h-3 w-3" }),
3600
5372
  durationLabel
3601
5373
  ] })
3602
5374
  ] }) }),
3603
- /* @__PURE__ */ jsxs23("div", { className: "flex min-w-0 flex-1 flex-col", children: [
3604
- /* @__PURE__ */ jsx33("div", { className: "mb-3 flex min-h-[60px] items-start md:min-h-[72px]", children: /* @__PURE__ */ jsx33("h3", { className: "line-clamp-2 text-ods-text-primary text-h2", children: guide.title }) }),
3605
- /* @__PURE__ */ jsx33("div", { className: "min-h-[46px] md:min-h-[52px]", children: /* @__PURE__ */ jsx33("p", { className: "line-clamp-2 text-ods-text-secondary text-h6", children: stripMarkdownPreview(guide.video_summary || guide.content || "") }) })
5375
+ /* @__PURE__ */ jsxs25("div", { className: "flex min-w-0 flex-1 flex-col", children: [
5376
+ /* @__PURE__ */ jsx38("div", { className: "mb-3 flex min-h-[60px] items-start md:min-h-[72px]", children: /* @__PURE__ */ jsx38("h3", { className: "line-clamp-2 text-ods-text-primary text-h2", children: guide.title }) }),
5377
+ /* @__PURE__ */ jsx38("div", { className: "min-h-[46px] md:min-h-[52px]", children: /* @__PURE__ */ jsx38("p", { className: "line-clamp-2 text-ods-text-secondary text-h6", children: stripMarkdownPreview(guide.video_summary || guide.content || "") }) })
3606
5378
  ] })
3607
5379
  ] }),
3608
- /* @__PURE__ */ jsx33(
5380
+ /* @__PURE__ */ jsx38(
3609
5381
  EntityAuthorCard,
3610
5382
  {
3611
5383
  author: guide.author,
@@ -3633,22 +5405,22 @@ function OnboardingGuideCard({
3633
5405
  const subtitleParts = [`Step ${guide.step_order}`, guide.section, author].filter(
3634
5406
  (s) => typeof s === "string" && s.length > 0
3635
5407
  );
3636
- return /* @__PURE__ */ jsxs23(next_link_default, { href, target, rel, prefetch: false, className: cn(COMPACT_CARD_OUTER, className), children: [
3637
- /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
3638
- compactCover ? /* @__PURE__ */ jsx33(next_image_default, { src: compactCover, alt: guide.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ jsx33("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ jsx33(GraduationCap, { className: "h-4 w-4" }) }),
3639
- hasVideoCover && compactCover && /* @__PURE__ */ jsx33(CardHoverPlay, { size: "sm" })
5408
+ return /* @__PURE__ */ jsxs25(next_link_default, { href, target, rel, prefetch: false, className: cn(COMPACT_CARD_OUTER, className), children: [
5409
+ /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
5410
+ compactCover ? /* @__PURE__ */ jsx38(next_image_default, { src: compactCover, alt: guide.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ jsx38("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ jsx38(GraduationCap2, { className: "h-4 w-4" }) }),
5411
+ hasVideoCover && compactCover && /* @__PURE__ */ jsx38(CardHoverPlay, { size: "sm" })
3640
5412
  ] }),
3641
- /* @__PURE__ */ jsxs23("span", { className: COMPACT_CARD_TEXT_COL, children: [
3642
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx33("span", { className: cn(COMPACT_CARD_TITLE, "font-heading"), children: guide.title }) }),
3643
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx33("span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
3644
- /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx33("span", { className: COMPACT_CARD_SUMMARY, children: summary2 || COMPACT_CARD_ROW_FILLER }) })
5413
+ /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_TEXT_COL, children: [
5414
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx38("span", { className: cn(COMPACT_CARD_TITLE, "font-heading"), children: guide.title }) }),
5415
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx38("span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
5416
+ /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx38("span", { className: COMPACT_CARD_SUMMARY, children: summary2 || COMPACT_CARD_ROW_FILLER }) })
3645
5417
  ] }),
3646
- /* @__PURE__ */ jsx33("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx33(ExternalLink, { className: "h-3.5 w-3.5" }) })
5418
+ /* @__PURE__ */ jsx38("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx38(ExternalLink, { className: "h-3.5 w-3.5" }) })
3647
5419
  ] });
3648
5420
  }
3649
5421
  const t = HORIZONTAL_SIZE_TOKENS.default;
3650
5422
  const summary = stripMarkdownPreview(guide.video_summary || guide.content || "");
3651
- return /* @__PURE__ */ jsxs23(
5423
+ return /* @__PURE__ */ jsxs25(
3652
5424
  next_link_default,
3653
5425
  {
3654
5426
  href,
@@ -3660,7 +5432,7 @@ function OnboardingGuideCard({
3660
5432
  className
3661
5433
  ),
3662
5434
  children: [
3663
- /* @__PURE__ */ jsx33(
5435
+ /* @__PURE__ */ jsx38(
3664
5436
  "span",
3665
5437
  {
3666
5438
  className: `inline-flex shrink-0 items-center justify-center rounded-full bg-ods-accent/10 font-semibold text-ods-accent ${t.step}`,
@@ -3668,13 +5440,13 @@ function OnboardingGuideCard({
3668
5440
  children: guide.step_order
3669
5441
  }
3670
5442
  ),
3671
- /* @__PURE__ */ jsxs23("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
3672
- /* @__PURE__ */ jsx33("span", { className: `block ${t.title} truncate text-ods-text-primary`, children: guide.title }),
3673
- /* @__PURE__ */ jsxs23("span", { className: "inline-flex items-center gap-1 text-ods-text-secondary text-h6", children: [
3674
- /* @__PURE__ */ jsx33(GraduationCap, { className: "h-3 w-3 shrink-0" }),
3675
- /* @__PURE__ */ jsx33("span", { className: "truncate", children: guide.section })
5443
+ /* @__PURE__ */ jsxs25("span", { className: "flex min-w-0 flex-1 flex-col gap-0.5", children: [
5444
+ /* @__PURE__ */ jsx38("span", { className: `block ${t.title} truncate text-ods-text-primary`, children: guide.title }),
5445
+ /* @__PURE__ */ jsxs25("span", { className: "inline-flex items-center gap-1 text-ods-text-secondary text-h6", children: [
5446
+ /* @__PURE__ */ jsx38(GraduationCap2, { className: "h-3 w-3 shrink-0" }),
5447
+ /* @__PURE__ */ jsx38("span", { className: "truncate", children: guide.section })
3676
5448
  ] }),
3677
- summary && /* @__PURE__ */ jsx33("span", { className: `text-ods-text-secondary text-h6 ${t.summaryClamp}`, children: summary })
5449
+ summary && /* @__PURE__ */ jsx38("span", { className: `text-ods-text-secondary text-h6 ${t.summaryClamp}`, children: summary })
3678
5450
  ] })
3679
5451
  ]
3680
5452
  }
@@ -3766,7 +5538,7 @@ function getTaskTypeLabel(customItemId) {
3766
5538
  }
3767
5539
 
3768
5540
  // src/components/chat/entity-cards/roadmap-vote-button.tsx
3769
- import { jsx as jsx34 } from "react/jsx-runtime";
5541
+ import { jsx as jsx39 } from "react/jsx-runtime";
3770
5542
  function RoadmapVoteButton({
3771
5543
  voteType,
3772
5544
  count,
@@ -3778,13 +5550,13 @@ function RoadmapVoteButton({
3778
5550
  className
3779
5551
  }) {
3780
5552
  const Icon = voteType === "up" ? ThumbsUpIcon : ThumbsDownIcon;
3781
- return /* @__PURE__ */ jsx34(
5553
+ return /* @__PURE__ */ jsx39(
3782
5554
  Button,
3783
5555
  {
3784
5556
  variant: "outline",
3785
5557
  onClick,
3786
5558
  disabled,
3787
- leftIcon: /* @__PURE__ */ jsx34(Icon, { className: "h-5 w-5", color }),
5559
+ leftIcon: /* @__PURE__ */ jsx39(Icon, { className: "h-5 w-5", color }),
3788
5560
  className: cn(
3789
5561
  className,
3790
5562
  "flex h-full items-center justify-center gap-[2px] border-0 border-ods-border bg-ods-bg p-[12px]",
@@ -3792,7 +5564,7 @@ function RoadmapVoteButton({
3792
5564
  "transition-all hover:bg-ods-border",
3793
5565
  isActive && "bg-ods-border"
3794
5566
  ),
3795
- children: showCount && /* @__PURE__ */ jsx34("span", { className: "text-h6", children: count })
5567
+ children: showCount && /* @__PURE__ */ jsx39("span", { className: "text-h6", children: count })
3796
5568
  }
3797
5569
  );
3798
5570
  }
@@ -3802,18 +5574,18 @@ import {
3802
5574
  Bug,
3803
5575
  Inbox,
3804
5576
  Sparkles as Sparkles2,
3805
- BookOpen,
5577
+ BookOpen as BookOpen2,
3806
5578
  Trophy,
3807
5579
  Component,
3808
5580
  Flag,
3809
5581
  Goal,
3810
5582
  ListTodo,
3811
- CheckSquare,
3812
- FileText,
5583
+ CheckSquare as CheckSquare2,
5584
+ FileText as FileText2,
3813
5585
  Repeat,
3814
5586
  Compass
3815
5587
  } from "lucide-react";
3816
- import { jsx as jsx35 } from "react/jsx-runtime";
5588
+ import { jsx as jsx40 } from "react/jsx-runtime";
3817
5589
  function iconFor(customItemId) {
3818
5590
  switch (customItemId) {
3819
5591
  case CUSTOM_ITEM_ID.BUG:
@@ -3823,7 +5595,7 @@ function iconFor(customItemId) {
3823
5595
  case CUSTOM_ITEM_ID.FEATURE:
3824
5596
  return Sparkles2;
3825
5597
  case CUSTOM_ITEM_ID.STORY:
3826
- return BookOpen;
5598
+ return BookOpen2;
3827
5599
  case CUSTOM_ITEM_ID.EPIC:
3828
5600
  return Trophy;
3829
5601
  case CUSTOM_ITEM_ID.COMPONENT:
@@ -3835,7 +5607,7 @@ function iconFor(customItemId) {
3835
5607
  case CUSTOM_ITEM_ID.SUBTASK:
3836
5608
  return ListTodo;
3837
5609
  case CUSTOM_ITEM_ID.FORM:
3838
- return FileText;
5610
+ return FileText2;
3839
5611
  case CUSTOM_ITEM_ID.RECURRING:
3840
5612
  return Repeat;
3841
5613
  case CUSTOM_ITEM_ID.PLAN:
@@ -3844,37 +5616,37 @@ function iconFor(customItemId) {
3844
5616
  return Compass;
3845
5617
  case CUSTOM_ITEM_ID.TASK:
3846
5618
  default:
3847
- return CheckSquare;
5619
+ return CheckSquare2;
3848
5620
  }
3849
5621
  }
3850
5622
  function TaskTypeIcon({ customItemId, className = "h-5 w-5" }) {
3851
5623
  const Icon = iconFor(customItemId);
3852
- return /* @__PURE__ */ jsx35(Icon, { className, "aria-hidden": "true" });
5624
+ return /* @__PURE__ */ jsx40(Icon, { className, "aria-hidden": "true" });
3853
5625
  }
3854
5626
 
3855
5627
  // src/components/chat/entity-cards/roadmap-card.tsx
3856
5628
  import { ThumbsUp, ThumbsDown } from "lucide-react";
3857
- import { useState as useState6 } from "react";
3858
- import { Fragment as Fragment11, jsx as jsx36, jsxs as jsxs24 } from "react/jsx-runtime";
5629
+ import { useState as useState9 } from "react";
5630
+ import { Fragment as Fragment13, jsx as jsx41, jsxs as jsxs26 } from "react/jsx-runtime";
3859
5631
  function RoadmapCardSkeleton({ size: size2 = "default" }) {
3860
5632
  if (size2 === "sm") {
3861
- return /* @__PURE__ */ jsxs24("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
3862
- /* @__PURE__ */ jsx36("span", { className: "block aspect-square h-12 w-12 shrink-0 self-start rounded-md border border-ods-border bg-ods-bg p-1.5" }),
3863
- /* @__PURE__ */ jsxs24("span", { className: COMPACT_CARD_TEXT_COL, children: [
3864
- /* @__PURE__ */ jsxs24("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
3865
- /* @__PURE__ */ jsx36("span", { className: "h-3.5 w-1/2 rounded bg-ods-bg" }),
3866
- /* @__PURE__ */ jsx36("span", { className: "h-4 w-12 shrink-0 rounded bg-ods-bg/70" })
5633
+ return /* @__PURE__ */ jsxs26("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
5634
+ /* @__PURE__ */ jsx41("span", { className: "block aspect-square h-12 w-12 shrink-0 self-start rounded-md border border-ods-border bg-ods-bg p-1.5" }),
5635
+ /* @__PURE__ */ jsxs26("span", { className: COMPACT_CARD_TEXT_COL, children: [
5636
+ /* @__PURE__ */ jsxs26("span", { className: `${COMPACT_CARD_TITLE_ROW} flex-nowrap gap-2`, children: [
5637
+ /* @__PURE__ */ jsx41("span", { className: "h-3.5 w-1/2 rounded bg-ods-bg" }),
5638
+ /* @__PURE__ */ jsx41("span", { className: "h-4 w-12 shrink-0 rounded bg-ods-bg/70" })
3867
5639
  ] }),
3868
- /* @__PURE__ */ jsxs24("span", { className: `${COMPACT_CARD_META_ROW_BOX} flex-nowrap gap-2`, children: [
3869
- /* @__PURE__ */ jsx36("span", { className: "h-3 w-2/5 flex-1 rounded bg-ods-bg/60" }),
3870
- /* @__PURE__ */ jsx36("span", { className: "h-3 w-10 shrink-0 rounded bg-ods-bg/40" }),
3871
- /* @__PURE__ */ jsx36("span", { className: "h-6 w-14 shrink-0 rounded-full bg-ods-bg/40" })
5640
+ /* @__PURE__ */ jsxs26("span", { className: `${COMPACT_CARD_META_ROW_BOX} flex-nowrap gap-2`, children: [
5641
+ /* @__PURE__ */ jsx41("span", { className: "h-3 w-2/5 flex-1 rounded bg-ods-bg/60" }),
5642
+ /* @__PURE__ */ jsx41("span", { className: "h-3 w-10 shrink-0 rounded bg-ods-bg/40" }),
5643
+ /* @__PURE__ */ jsx41("span", { className: "h-6 w-14 shrink-0 rounded-full bg-ods-bg/40" })
3872
5644
  ] }),
3873
- /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx36("span", { className: "h-3 w-5/6 rounded bg-ods-bg/40" }) })
5645
+ /* @__PURE__ */ jsx41("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx41("span", { className: "h-3 w-5/6 rounded bg-ods-bg/40" }) })
3874
5646
  ] })
3875
5647
  ] });
3876
5648
  }
3877
- return /* @__PURE__ */ jsxs24(
5649
+ return /* @__PURE__ */ jsxs26(
3878
5650
  "div",
3879
5651
  {
3880
5652
  className: cn(
@@ -3882,25 +5654,25 @@ function RoadmapCardSkeleton({ size: size2 = "default" }) {
3882
5654
  "flex h-full animate-pulse flex-col gap-4 p-[var(--spacing-system-lf)]"
3883
5655
  ),
3884
5656
  children: [
3885
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-4", children: [
3886
- /* @__PURE__ */ jsx36("div", { className: "h-16 w-16 flex-shrink-0 rounded-lg bg-ods-border" }),
3887
- /* @__PURE__ */ jsxs24("div", { className: "flex-1 space-y-2", children: [
3888
- /* @__PURE__ */ jsx36("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
3889
- /* @__PURE__ */ jsx36("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
5657
+ /* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-4", children: [
5658
+ /* @__PURE__ */ jsx41("div", { className: "h-16 w-16 flex-shrink-0 rounded-lg bg-ods-border" }),
5659
+ /* @__PURE__ */ jsxs26("div", { className: "flex-1 space-y-2", children: [
5660
+ /* @__PURE__ */ jsx41("div", { className: "h-5 w-3/4 rounded bg-ods-border" }),
5661
+ /* @__PURE__ */ jsx41("div", { className: "h-3 w-1/2 rounded bg-ods-border" })
3890
5662
  ] }),
3891
- /* @__PURE__ */ jsx36("div", { className: "h-6 w-16 rounded bg-ods-border" })
5663
+ /* @__PURE__ */ jsx41("div", { className: "h-6 w-16 rounded bg-ods-border" })
3892
5664
  ] }),
3893
- /* @__PURE__ */ jsxs24("div", { className: "space-y-2", children: [
3894
- /* @__PURE__ */ jsx36("div", { className: "h-3 w-full rounded bg-ods-border" }),
3895
- /* @__PURE__ */ jsx36("div", { className: "h-3 w-5/6 rounded bg-ods-border" }),
3896
- /* @__PURE__ */ jsx36("div", { className: "h-3 w-4/5 rounded bg-ods-border" })
5665
+ /* @__PURE__ */ jsxs26("div", { className: "space-y-2", children: [
5666
+ /* @__PURE__ */ jsx41("div", { className: "h-3 w-full rounded bg-ods-border" }),
5667
+ /* @__PURE__ */ jsx41("div", { className: "h-3 w-5/6 rounded bg-ods-border" }),
5668
+ /* @__PURE__ */ jsx41("div", { className: "h-3 w-4/5 rounded bg-ods-border" })
3897
5669
  ] }),
3898
- /* @__PURE__ */ jsx36("div", { className: "flex-1" }),
3899
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center justify-between", children: [
3900
- /* @__PURE__ */ jsx36("div", { className: "h-12 w-32 rounded bg-ods-border" }),
3901
- /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2", children: [
3902
- /* @__PURE__ */ jsx36("div", { className: "h-6 w-14 rounded-full bg-ods-border" }),
3903
- /* @__PURE__ */ jsx36("div", { className: "h-8 w-20 rounded bg-ods-border" })
5670
+ /* @__PURE__ */ jsx41("div", { className: "flex-1" }),
5671
+ /* @__PURE__ */ jsxs26("div", { className: "flex items-center justify-between", children: [
5672
+ /* @__PURE__ */ jsx41("div", { className: "h-12 w-32 rounded bg-ods-border" }),
5673
+ /* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-2", children: [
5674
+ /* @__PURE__ */ jsx41("div", { className: "h-6 w-14 rounded-full bg-ods-border" }),
5675
+ /* @__PURE__ */ jsx41("div", { className: "h-8 w-20 rounded bg-ods-border" })
3904
5676
  ] })
3905
5677
  ] })
3906
5678
  ]
@@ -3927,7 +5699,7 @@ function RoadmapCard({
3927
5699
  onVote,
3928
5700
  isVoting = false
3929
5701
  }) {
3930
- const [showScreenshots, setShowScreenshots] = useState6(false);
5702
+ const [showScreenshots, setShowScreenshots] = useState9(false);
3931
5703
  const logoUrl = item.icon && item.icon.startsWith("http") ? item.icon : null;
3932
5704
  const iconSrc = logoUrl ? getProxiedImageUrl(logoUrl, { directHttps: true }) || logoUrl : null;
3933
5705
  if (size2 === "sm") {
@@ -3937,13 +5709,13 @@ function RoadmapCard({
3937
5709
  const hasScreenshots = (item.screenshots?.length ?? 0) > 0;
3938
5710
  const typeLabel = getTaskTypeLabel(item.customItemId);
3939
5711
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
3940
- const body = /* @__PURE__ */ jsxs24(Fragment11, { children: [
3941
- /* @__PURE__ */ jsx36(
5712
+ const body = /* @__PURE__ */ jsxs26(Fragment13, { children: [
5713
+ /* @__PURE__ */ jsx41(
3942
5714
  "span",
3943
5715
  {
3944
5716
  className: "flex aspect-square h-12 w-12 shrink-0 items-center justify-center self-start overflow-hidden rounded-md border border-ods-border bg-ods-bg p-1.5 text-ods-accent",
3945
5717
  title: typeLabel ?? void 0,
3946
- children: useTypeIcon ? /* @__PURE__ */ jsx36(TaskTypeIcon, { customItemId: item.customItemId, className: "h-6 w-6" }) : iconSrc ? /* @__PURE__ */ jsx36(
5718
+ children: useTypeIcon ? /* @__PURE__ */ jsx41(TaskTypeIcon, { customItemId: item.customItemId, className: "h-6 w-6" }) : iconSrc ? /* @__PURE__ */ jsx41(
3947
5719
  next_image_default,
3948
5720
  {
3949
5721
  src: iconSrc,
@@ -3953,13 +5725,13 @@ function RoadmapCard({
3953
5725
  unoptimized: true,
3954
5726
  className: "h-8 w-8 object-contain"
3955
5727
  }
3956
- ) : /* @__PURE__ */ jsx36("span", { className: "uppercase text-ods-text-secondary text-h6", children: item.title?.substring(0, 2) || "??" })
5728
+ ) : /* @__PURE__ */ jsx41("span", { className: "uppercase text-ods-text-secondary text-h6", children: item.title?.substring(0, 2) || "??" })
3957
5729
  }
3958
5730
  ),
3959
- /* @__PURE__ */ jsxs24("span", { className: COMPACT_CARD_TEXT_COL, children: [
3960
- /* @__PURE__ */ jsxs24("span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
3961
- /* @__PURE__ */ jsx36("span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: item.title }),
3962
- item.status && item.status.trim().length > 0 ? /* @__PURE__ */ jsx36(
5731
+ /* @__PURE__ */ jsxs26("span", { className: COMPACT_CARD_TEXT_COL, children: [
5732
+ /* @__PURE__ */ jsxs26("span", { className: `${COMPACT_CARD_TITLE_ROW} gap-2`, children: [
5733
+ /* @__PURE__ */ jsx41("span", { className: `${COMPACT_CARD_TITLE} min-w-0`, children: item.title }),
5734
+ item.status && item.status.trim().length > 0 ? /* @__PURE__ */ jsx41(
3963
5735
  StatusBadge,
3964
5736
  {
3965
5737
  text: item.status.toUpperCase(),
@@ -3970,8 +5742,8 @@ function RoadmapCard({
3970
5742
  }
3971
5743
  ) : null
3972
5744
  ] }),
3973
- /* @__PURE__ */ jsxs24("span", { className: `${COMPACT_CARD_META_ROW_BOX} gap-2 text-ods-text-secondary`, children: [
3974
- /* @__PURE__ */ jsx36("span", { className: "min-w-0 flex-1 truncate text-h6", children: (() => {
5745
+ /* @__PURE__ */ jsxs26("span", { className: `${COMPACT_CARD_META_ROW_BOX} gap-2 text-ods-text-secondary`, children: [
5746
+ /* @__PURE__ */ jsx41("span", { className: "min-w-0 flex-1 truncate text-h6", children: (() => {
3975
5747
  const parts = [item.quarter, item.targetVersion ? `${item.targetVersion} version` : null].filter(
3976
5748
  Boolean
3977
5749
  );
@@ -3984,39 +5756,39 @@ function RoadmapCard({
3984
5756
  }
3985
5757
  return "Roadmap item";
3986
5758
  })() }),
3987
- hasVotes ? /* @__PURE__ */ jsxs24("span", { className: "hidden shrink-0 items-center gap-2 text-ods-text-secondary text-h6 sm:flex", children: [
3988
- /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-0.5", children: [
3989
- /* @__PURE__ */ jsx36(ThumbsUp, { className: "h-3 w-3" }),
3990
- /* @__PURE__ */ jsx36("span", { children: item.upvotes ?? 0 })
5759
+ hasVotes ? /* @__PURE__ */ jsxs26("span", { className: "hidden shrink-0 items-center gap-2 text-ods-text-secondary text-h6 sm:flex", children: [
5760
+ /* @__PURE__ */ jsxs26("span", { className: "flex items-center gap-0.5", children: [
5761
+ /* @__PURE__ */ jsx41(ThumbsUp, { className: "h-3 w-3" }),
5762
+ /* @__PURE__ */ jsx41("span", { children: item.upvotes ?? 0 })
3991
5763
  ] }),
3992
- /* @__PURE__ */ jsxs24("span", { className: "flex items-center gap-0.5", children: [
3993
- /* @__PURE__ */ jsx36(ThumbsDown, { className: "h-3 w-3" }),
3994
- /* @__PURE__ */ jsx36("span", { children: item.downvotes ?? 0 })
5764
+ /* @__PURE__ */ jsxs26("span", { className: "flex items-center gap-0.5", children: [
5765
+ /* @__PURE__ */ jsx41(ThumbsDown, { className: "h-3 w-3" }),
5766
+ /* @__PURE__ */ jsx41("span", { children: item.downvotes ?? 0 })
3995
5767
  ] })
3996
5768
  ] }) : null,
3997
- hasFigma ? /* @__PURE__ */ jsx36("span", { className: "hidden shrink-0 items-center sm:flex", title: "Has Figma prototype", children: /* @__PURE__ */ jsx36(FigmaIcon, { className: "h-3 w-3" }) }) : null,
3998
- hasScreenshots ? /* @__PURE__ */ jsxs24(
5769
+ hasFigma ? /* @__PURE__ */ jsx41("span", { className: "hidden shrink-0 items-center sm:flex", title: "Has Figma prototype", children: /* @__PURE__ */ jsx41(FigmaIcon, { className: "h-3 w-3" }) }) : null,
5770
+ hasScreenshots ? /* @__PURE__ */ jsxs26(
3999
5771
  "span",
4000
5772
  {
4001
5773
  className: "hidden shrink-0 items-center gap-0.5 text-h6 sm:flex",
4002
5774
  title: `${item.screenshots.length} screenshot${item.screenshots.length === 1 ? "" : "s"}`,
4003
5775
  children: [
4004
- /* @__PURE__ */ jsx36(ImageIcon, { className: "h-3 w-3" }),
4005
- /* @__PURE__ */ jsx36("span", { children: item.screenshots.length })
5776
+ /* @__PURE__ */ jsx41(ImageIcon, { className: "h-3 w-3" }),
5777
+ /* @__PURE__ */ jsx41("span", { children: item.screenshots.length })
4006
5778
  ]
4007
5779
  }
4008
5780
  ) : null,
4009
- item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ jsx36(AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
5781
+ item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ jsx41(AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null
4010
5782
  ] }),
4011
- /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx36("span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
5783
+ /* @__PURE__ */ jsx41("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx41("span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
4012
5784
  ] })
4013
5785
  ] });
4014
5786
  if (!compactHref) {
4015
- return /* @__PURE__ */ jsx36("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
5787
+ return /* @__PURE__ */ jsx41("span", { className: `${COMPACT_CARD_OUTER_STATIC} ${className ?? ""}`, "aria-label": "No link available", children: body });
4016
5788
  }
4017
- return /* @__PURE__ */ jsx36("a", { href: compactHref, target, rel, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
5789
+ return /* @__PURE__ */ jsx41("a", { href: compactHref, target, rel, className: `${COMPACT_CARD_OUTER} ${className ?? ""}`, children: body });
4018
5790
  }
4019
- return /* @__PURE__ */ jsxs24(
5791
+ return /* @__PURE__ */ jsxs26(
4020
5792
  "div",
4021
5793
  {
4022
5794
  id,
@@ -4026,8 +5798,8 @@ function RoadmapCard({
4026
5798
  className
4027
5799
  ),
4028
5800
  children: [
4029
- /* @__PURE__ */ jsxs24("div", { className: "flex w-full items-center gap-[16px]", children: [
4030
- /* @__PURE__ */ jsx36("div", { className: "flex h-16 w-16 flex-shrink-0 items-center justify-center rounded-lg border border-ods-border bg-ods-bg", children: iconSrc ? /* @__PURE__ */ jsx36(
5801
+ /* @__PURE__ */ jsxs26("div", { className: "flex w-full items-center gap-[16px]", children: [
5802
+ /* @__PURE__ */ jsx41("div", { className: "flex h-16 w-16 flex-shrink-0 items-center justify-center rounded-lg border border-ods-border bg-ods-bg", children: iconSrc ? /* @__PURE__ */ jsx41(
4031
5803
  next_image_default,
4032
5804
  {
4033
5805
  src: iconSrc,
@@ -4037,16 +5809,16 @@ function RoadmapCard({
4037
5809
  unoptimized: true,
4038
5810
  className: "object-contain p-1"
4039
5811
  }
4040
- ) : /* @__PURE__ */ jsx36("span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: item.title?.substring(0, 2) || "??" }) }),
4041
- /* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 flex-1 flex-col", children: [
4042
- /* @__PURE__ */ jsx36("div", { className: "flex min-h-[48px] items-center", children: /* @__PURE__ */ jsx36("h3", { className: "line-clamp-2 flex-1 text-ods-text-primary text-h3", children: item.title }) }),
4043
- /* @__PURE__ */ jsx36("div", { className: "flex min-h-[20px] items-center", children: /* @__PURE__ */ jsxs24("p", { className: "truncate text-ods-text-secondary text-h5", children: [
5812
+ ) : /* @__PURE__ */ jsx41("span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: item.title?.substring(0, 2) || "??" }) }),
5813
+ /* @__PURE__ */ jsxs26("div", { className: "flex min-w-0 flex-1 flex-col", children: [
5814
+ /* @__PURE__ */ jsx41("div", { className: "flex min-h-[48px] items-center", children: /* @__PURE__ */ jsx41("h3", { className: "line-clamp-2 flex-1 text-ods-text-primary text-h3", children: item.title }) }),
5815
+ /* @__PURE__ */ jsx41("div", { className: "flex min-h-[20px] items-center", children: /* @__PURE__ */ jsxs26("p", { className: "truncate text-ods-text-secondary text-h5", children: [
4044
5816
  item.quarter,
4045
5817
  ", ",
4046
5818
  item.id
4047
5819
  ] }) })
4048
5820
  ] }),
4049
- /* @__PURE__ */ jsx36("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx36(
5821
+ /* @__PURE__ */ jsx41("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx41(
4050
5822
  StatusBadge,
4051
5823
  {
4052
5824
  text: item.status.toUpperCase(),
@@ -4055,7 +5827,7 @@ function RoadmapCard({
4055
5827
  }
4056
5828
  ) })
4057
5829
  ] }),
4058
- /* @__PURE__ */ jsx36("div", { className: "md:hidden", children: /* @__PURE__ */ jsx36(
5830
+ /* @__PURE__ */ jsx41("div", { className: "md:hidden", children: /* @__PURE__ */ jsx41(
4059
5831
  StatusBadge,
4060
5832
  {
4061
5833
  text: item.status.toUpperCase(),
@@ -4063,11 +5835,11 @@ function RoadmapCard({
4063
5835
  className: "border border-ods-border"
4064
5836
  }
4065
5837
  ) }),
4066
- /* @__PURE__ */ jsx36("div", { className: "flex min-h-[72px] items-center", children: /* @__PURE__ */ jsx36("p", { className: "line-clamp-3 text-ods-text-secondary text-h4", children: item.description || "" }) }),
4067
- /* @__PURE__ */ jsx36("div", { className: "flex-1" }),
4068
- /* @__PURE__ */ jsxs24("div", { className: "flex w-full items-center justify-between", children: [
4069
- onVote && /* @__PURE__ */ jsxs24("div", { className: "flex h-[48px] overflow-hidden rounded-[6px] border border-ods-border bg-ods-card", children: [
4070
- /* @__PURE__ */ jsx36(
5838
+ /* @__PURE__ */ jsx41("div", { className: "flex min-h-[72px] items-center", children: /* @__PURE__ */ jsx41("p", { className: "line-clamp-3 text-ods-text-secondary text-h4", children: item.description || "" }) }),
5839
+ /* @__PURE__ */ jsx41("div", { className: "flex-1" }),
5840
+ /* @__PURE__ */ jsxs26("div", { className: "flex w-full items-center justify-between", children: [
5841
+ onVote && /* @__PURE__ */ jsxs26("div", { className: "flex h-[48px] overflow-hidden rounded-[6px] border border-ods-border bg-ods-card", children: [
5842
+ /* @__PURE__ */ jsx41(
4071
5843
  RoadmapVoteButton,
4072
5844
  {
4073
5845
  voteType: "up",
@@ -4079,7 +5851,7 @@ function RoadmapCard({
4079
5851
  disabled: isVoting
4080
5852
  }
4081
5853
  ),
4082
- /* @__PURE__ */ jsx36(
5854
+ /* @__PURE__ */ jsx41(
4083
5855
  RoadmapVoteButton,
4084
5856
  {
4085
5857
  voteType: "down",
@@ -4092,34 +5864,34 @@ function RoadmapCard({
4092
5864
  }
4093
5865
  )
4094
5866
  ] }),
4095
- /* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 items-center gap-2", children: [
4096
- item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ jsx36(AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
4097
- item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ jsx36(
5867
+ /* @__PURE__ */ jsxs26("div", { className: "flex min-w-0 items-center gap-2", children: [
5868
+ item.assignees && item.assignees.length > 0 ? /* @__PURE__ */ jsx41(AvatarStack, { size: "xs", people: assigneePeople(item.assignees), className: "shrink-0" }) : null,
5869
+ item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ jsx41(
4098
5870
  Button,
4099
5871
  {
4100
5872
  variant: "outline",
4101
5873
  size: "small-legacy",
4102
5874
  onClick: () => setShowScreenshots(true),
4103
- leftIcon: /* @__PURE__ */ jsx36(ImageIcon, { className: "h-5 w-5" })
5875
+ leftIcon: /* @__PURE__ */ jsx41(ImageIcon, { className: "h-5 w-5" })
4104
5876
  }
4105
5877
  ),
4106
5878
  (() => {
4107
5879
  const figmaSafe = safeHref(item.figmaUrl);
4108
- return figmaSafe ? /* @__PURE__ */ jsx36(
5880
+ return figmaSafe ? /* @__PURE__ */ jsx41(
4109
5881
  Button,
4110
5882
  {
4111
5883
  variant: "outline",
4112
5884
  size: "small-legacy",
4113
5885
  openInNewTab: true,
4114
5886
  href: figmaSafe,
4115
- leftIcon: /* @__PURE__ */ jsx36(FigmaIcon, { className: "h-5 w-5" })
5887
+ leftIcon: /* @__PURE__ */ jsx41(FigmaIcon, { className: "h-5 w-5" })
4116
5888
  }
4117
5889
  ) : null;
4118
5890
  })(),
4119
- item.targetVersion && /* @__PURE__ */ jsx36(StatusBadge, { gen: generationTierFromLabel(item.targetVersion), text: item.targetVersion })
5891
+ item.targetVersion && /* @__PURE__ */ jsx41(StatusBadge, { gen: generationTierFromLabel(item.targetVersion), text: item.targetVersion })
4120
5892
  ] })
4121
5893
  ] }),
4122
- item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ jsx36(
5894
+ item.screenshots && item.screenshots.length > 0 && /* @__PURE__ */ jsx41(
4123
5895
  ImageGalleryModal,
4124
5896
  {
4125
5897
  images: item.screenshots,
@@ -4246,9 +6018,9 @@ function programItemToStripProfile(item) {
4246
6018
  }
4247
6019
 
4248
6020
  // src/components/chat/entity-cards/program-card.tsx
4249
- import { ArrowRight, ExternalLink as ExternalLink2, Clock as Clock2, Play, Video as Video2 } from "lucide-react";
4250
- import { useState as useState7 } from "react";
4251
- import { Fragment as Fragment12, jsx as jsx37, jsxs as jsxs25 } from "react/jsx-runtime";
6021
+ import { ArrowRight, ExternalLink as ExternalLink2, Clock as Clock2, Play, Video as Video4 } from "lucide-react";
6022
+ import { useState as useState10 } from "react";
6023
+ import { Fragment as Fragment14, jsx as jsx42, jsxs as jsxs27 } from "react/jsx-runtime";
4252
6024
  var EDITORIAL_FRAME = CONTENT_CARD_SKELETON_FRAME_CLASS;
4253
6025
  var EDITORIAL_ROW_GRID = "grid grid-cols-[88px_minmax(0,1fr)] items-center gap-[var(--spacing-system-m)] p-[var(--spacing-system-m)] sm:grid-cols-[120px_minmax(0,1fr)] sm:gap-[var(--spacing-system-l)]";
4254
6026
  var EDITORIAL_ROW_THUMB = "relative block aspect-square w-full overflow-hidden rounded-md";
@@ -4275,59 +6047,59 @@ function ProgramCardSkeleton({
4275
6047
  tags = false
4276
6048
  }) {
4277
6049
  if (size2 === "row") {
4278
- return /* @__PURE__ */ jsxs25("span", { className: cn(EDITORIAL_FRAME, EDITORIAL_ROW_GRID, "animate-pulse"), children: [
4279
- /* @__PURE__ */ jsx37("span", { className: cn(EDITORIAL_ROW_THUMB, "bg-ods-border/20") }),
4280
- /* @__PURE__ */ jsxs25("span", { className: EDITORIAL_ROW_TEXT, children: [
4281
- /* @__PURE__ */ jsx37("span", { className: "block h-[2lh] w-full rounded bg-ods-border text-h3" }),
4282
- /* @__PURE__ */ jsx37("span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-40 rounded bg-ods-border" }) }),
4283
- /* @__PURE__ */ jsx37("span", { className: "block h-[2lh] w-full rounded bg-ods-border text-h6" })
6050
+ return /* @__PURE__ */ jsxs27("span", { className: cn(EDITORIAL_FRAME, EDITORIAL_ROW_GRID, "animate-pulse"), children: [
6051
+ /* @__PURE__ */ jsx42("span", { className: cn(EDITORIAL_ROW_THUMB, "bg-ods-border/20") }),
6052
+ /* @__PURE__ */ jsxs27("span", { className: EDITORIAL_ROW_TEXT, children: [
6053
+ /* @__PURE__ */ jsx42("span", { className: "block h-[2lh] w-full rounded bg-ods-border text-h3" }),
6054
+ /* @__PURE__ */ jsx42("span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-40 rounded bg-ods-border" }) }),
6055
+ /* @__PURE__ */ jsx42("span", { className: "block h-[2lh] w-full rounded bg-ods-border text-h6" })
4284
6056
  ] })
4285
6057
  ] });
4286
6058
  }
4287
6059
  if (size2 === "feature") {
4288
- return /* @__PURE__ */ jsxs25("span", { className: cn(EDITORIAL_FRAME, "flex animate-pulse flex-col"), children: [
4289
- /* @__PURE__ */ jsx37("span", { className: cn(EDITORIAL_FEATURE_COVER, "bg-ods-border/20") }),
4290
- /* @__PURE__ */ jsxs25("span", { className: EDITORIAL_FEATURE_BODY, children: [
4291
- eyebrow && /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-28 rounded bg-ods-border text-h5" }),
4292
- /* @__PURE__ */ jsx37("span", { className: "block h-[2lh] w-full rounded bg-ods-border text-h3" }),
4293
- /* @__PURE__ */ jsx37("span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-40 rounded bg-ods-border" }) }),
4294
- /* @__PURE__ */ jsx37("span", { className: "block h-[3lh] w-full rounded bg-ods-border text-h4" }),
4295
- /* @__PURE__ */ jsxs25("span", { className: EDITORIAL_PERSON_ROW, children: [
4296
- /* @__PURE__ */ jsx37("span", { className: "block h-8 w-8 shrink-0 rounded-full bg-ods-border" }),
4297
- /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-40 rounded bg-ods-border text-h6" })
6060
+ return /* @__PURE__ */ jsxs27("span", { className: cn(EDITORIAL_FRAME, "flex animate-pulse flex-col"), children: [
6061
+ /* @__PURE__ */ jsx42("span", { className: cn(EDITORIAL_FEATURE_COVER, "bg-ods-border/20") }),
6062
+ /* @__PURE__ */ jsxs27("span", { className: EDITORIAL_FEATURE_BODY, children: [
6063
+ eyebrow && /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-28 rounded bg-ods-border text-h5" }),
6064
+ /* @__PURE__ */ jsx42("span", { className: "block h-[2lh] w-full rounded bg-ods-border text-h3" }),
6065
+ /* @__PURE__ */ jsx42("span", { className: EDITORIAL_META_ROW, children: /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-40 rounded bg-ods-border" }) }),
6066
+ /* @__PURE__ */ jsx42("span", { className: "block h-[3lh] w-full rounded bg-ods-border text-h4" }),
6067
+ /* @__PURE__ */ jsxs27("span", { className: EDITORIAL_PERSON_ROW, children: [
6068
+ /* @__PURE__ */ jsx42("span", { className: "block h-8 w-8 shrink-0 rounded-full bg-ods-border" }),
6069
+ /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-40 rounded bg-ods-border text-h6" })
4298
6070
  ] })
4299
6071
  ] })
4300
6072
  ] });
4301
6073
  }
4302
6074
  if (size2 === "sm") {
4303
- return /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
4304
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
4305
- /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_TEXT_COL, children: [
4306
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx37("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
4307
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
4308
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
6075
+ return /* @__PURE__ */ jsxs27("span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
6076
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
6077
+ /* @__PURE__ */ jsxs27("span", { className: COMPACT_CARD_TEXT_COL, children: [
6078
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx42("span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
6079
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx42("span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
6080
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx42("span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
4309
6081
  ] }),
4310
- /* @__PURE__ */ jsx37("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx37("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
6082
+ /* @__PURE__ */ jsx42("span", { className: "flex h-5 shrink-0 items-center self-start", children: /* @__PURE__ */ jsx42("span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
4311
6083
  ] });
4312
6084
  }
4313
- return /* @__PURE__ */ jsxs25("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY, "animate-pulse"), children: [
4314
- /* @__PURE__ */ jsxs25("div", { className: DEFAULT_HEADER, children: [
4315
- /* @__PURE__ */ jsx37("div", { className: `${DEFAULT_COVER_FRAME} bg-ods-border` }),
4316
- /* @__PURE__ */ jsxs25("div", { className: DEFAULT_TEXT, children: [
4317
- /* @__PURE__ */ jsx37("div", { className: DEFAULT_TITLE, children: /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-3/4 rounded bg-ods-border" }) }),
4318
- /* @__PURE__ */ jsxs25("div", { className: DEFAULT_META_ROW, children: [
4319
- /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-32 rounded bg-ods-border" }),
4320
- /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] w-40 rounded bg-ods-border" })
6085
+ return /* @__PURE__ */ jsxs27("div", { className: cn(CONTENT_CARD_SKELETON_FRAME_CLASS, DEFAULT_BODY, "animate-pulse"), children: [
6086
+ /* @__PURE__ */ jsxs27("div", { className: DEFAULT_HEADER, children: [
6087
+ /* @__PURE__ */ jsx42("div", { className: `${DEFAULT_COVER_FRAME} bg-ods-border` }),
6088
+ /* @__PURE__ */ jsxs27("div", { className: DEFAULT_TEXT, children: [
6089
+ /* @__PURE__ */ jsx42("div", { className: DEFAULT_TITLE, children: /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-3/4 rounded bg-ods-border" }) }),
6090
+ /* @__PURE__ */ jsxs27("div", { className: DEFAULT_META_ROW, children: [
6091
+ /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-32 rounded bg-ods-border" }),
6092
+ /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] w-40 rounded bg-ods-border" })
4321
6093
  ] }),
4322
- /* @__PURE__ */ jsx37("div", { className: DEFAULT_DESCRIPTION, children: /* @__PURE__ */ jsx37("span", { className: "block h-[3lh] w-full rounded bg-ods-border" }) }),
4323
- tags && /* @__PURE__ */ jsxs25("div", { className: DEFAULT_TAG_ROW, children: [
4324
- /* @__PURE__ */ jsx37("span", { className: "block h-8 w-24 rounded bg-ods-border" }),
4325
- /* @__PURE__ */ jsx37("span", { className: "block h-8 w-24 rounded bg-ods-border" })
6094
+ /* @__PURE__ */ jsx42("div", { className: DEFAULT_DESCRIPTION, children: /* @__PURE__ */ jsx42("span", { className: "block h-[3lh] w-full rounded bg-ods-border" }) }),
6095
+ tags && /* @__PURE__ */ jsxs27("div", { className: DEFAULT_TAG_ROW, children: [
6096
+ /* @__PURE__ */ jsx42("span", { className: "block h-8 w-24 rounded bg-ods-border" }),
6097
+ /* @__PURE__ */ jsx42("span", { className: "block h-8 w-24 rounded bg-ods-border" })
4326
6098
  ] })
4327
6099
  ] })
4328
6100
  ] }),
4329
- media > 0 && /* @__PURE__ */ jsx37("div", { className: DEFAULT_GALLERY_ROW, children: Array.from({ length: media }, (_, i) => /* @__PURE__ */ jsx37("div", { className: `${DEFAULT_GALLERY_THUMB} bg-ods-border` }, i)) }),
4330
- /* @__PURE__ */ jsx37("div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ jsx37("div", { className: "h-10 w-40 rounded bg-ods-border" }) })
6101
+ media > 0 && /* @__PURE__ */ jsx42("div", { className: DEFAULT_GALLERY_ROW, children: Array.from({ length: media }, (_, i) => /* @__PURE__ */ jsx42("div", { className: `${DEFAULT_GALLERY_THUMB} bg-ods-border` }, i)) }),
6102
+ /* @__PURE__ */ jsx42("div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ jsx42("div", { className: "h-10 w-40 rounded bg-ods-border" }) })
4331
6103
  ] });
4332
6104
  }
4333
6105
  function getHosts(hosts) {
@@ -4359,8 +6131,8 @@ function getHosts(hosts) {
4359
6131
  return [];
4360
6132
  }
4361
6133
  function MediaGallery({ images, title }) {
4362
- const [selectedImageIndex, setSelectedImageIndex] = useState7(null);
4363
- const [isModalOpen, setIsModalOpen] = useState7(false);
6134
+ const [selectedImageIndex, setSelectedImageIndex] = useState10(null);
6135
+ const [isModalOpen, setIsModalOpen] = useState10(false);
4364
6136
  const openImageModal = (index, event) => {
4365
6137
  if (event) event.stopPropagation();
4366
6138
  setSelectedImageIndex(index);
@@ -4370,13 +6142,13 @@ function MediaGallery({ images, title }) {
4370
6142
  setIsModalOpen(false);
4371
6143
  setSelectedImageIndex(null);
4372
6144
  };
4373
- return /* @__PURE__ */ jsxs25(Fragment12, { children: [
4374
- /* @__PURE__ */ jsx37("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx37("div", { className: DEFAULT_GALLERY_ROW, style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsx37(
6145
+ return /* @__PURE__ */ jsxs27(Fragment14, { children: [
6146
+ /* @__PURE__ */ jsx42("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsx42("div", { className: DEFAULT_GALLERY_ROW, style: { width: "max-content" }, children: images.map((mediaItem, index) => /* @__PURE__ */ jsx42(
4375
6147
  "div",
4376
6148
  {
4377
6149
  className: cn(DEFAULT_GALLERY_THUMB, "group/thumb cursor-pointer"),
4378
6150
  onClick: (e) => openImageModal(index, e),
4379
- children: /* @__PURE__ */ jsx37(
6151
+ children: /* @__PURE__ */ jsx42(
4380
6152
  next_image_default,
4381
6153
  {
4382
6154
  src: mediaItem.media_url,
@@ -4391,7 +6163,7 @@ function MediaGallery({ images, title }) {
4391
6163
  },
4392
6164
  mediaItem.id
4393
6165
  )) }) }),
4394
- /* @__PURE__ */ jsx37(
6166
+ /* @__PURE__ */ jsx42(
4395
6167
  ImageGalleryModal,
4396
6168
  {
4397
6169
  images: images.map((img) => img.media_url),
@@ -4418,15 +6190,15 @@ function ProgramEditorialCard({
4418
6190
  className
4419
6191
  }) {
4420
6192
  const edgeColor = useImageEdgeColor(feature ? cover : null, "transparent");
4421
- const meta = /* @__PURE__ */ jsxs25("div", { className: EDITORIAL_META_ROW, children: [
4422
- date && /* @__PURE__ */ jsx37("span", { className: "text-ods-flamingo-pink", children: date }),
4423
- [typeMeta, feature ? null : profile?.name].filter((part) => !!part).map((part) => /* @__PURE__ */ jsxs25("span", { className: "flex items-center gap-[var(--spacing-system-s)] text-ods-text-secondary", children: [
4424
- /* @__PURE__ */ jsx37("span", { "aria-hidden": "true", children: "\u2022" }),
6193
+ const meta = /* @__PURE__ */ jsxs27("div", { className: EDITORIAL_META_ROW, children: [
6194
+ date && /* @__PURE__ */ jsx42("span", { className: "text-ods-flamingo-pink", children: date }),
6195
+ [typeMeta, feature ? null : profile?.name].filter((part) => !!part).map((part) => /* @__PURE__ */ jsxs27("span", { className: "flex items-center gap-[var(--spacing-system-s)] text-ods-text-secondary", children: [
6196
+ /* @__PURE__ */ jsx42("span", { "aria-hidden": "true", children: "\u2022" }),
4425
6197
  part
4426
6198
  ] }, part))
4427
6199
  ] });
4428
6200
  if (!feature) {
4429
- return /* @__PURE__ */ jsxs25(
6201
+ return /* @__PURE__ */ jsxs27(
4430
6202
  ContentCardFrame,
4431
6203
  {
4432
6204
  as: "a",
@@ -4436,20 +6208,20 @@ function ProgramEditorialCard({
4436
6208
  "aria-label": `Open ${title}`,
4437
6209
  className: cn(EDITORIAL_ROW_GRID, className),
4438
6210
  children: [
4439
- /* @__PURE__ */ jsxs25("span", { className: cn(EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
4440
- cover && /* @__PURE__ */ jsx37(next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", unoptimized: true }),
4441
- playable && cover && /* @__PURE__ */ jsx37(CardHoverPlay, { size: "md" })
6211
+ /* @__PURE__ */ jsxs27("span", { className: cn(EDITORIAL_ROW_THUMB, "bg-ods-bg"), children: [
6212
+ cover && /* @__PURE__ */ jsx42(next_image_default, { src: cover, alt: "", fill: true, sizes: "120px", className: "object-cover", unoptimized: true }),
6213
+ playable && cover && /* @__PURE__ */ jsx42(CardHoverPlay, { size: "md" })
4442
6214
  ] }),
4443
- /* @__PURE__ */ jsxs25("span", { className: EDITORIAL_ROW_TEXT, children: [
4444
- /* @__PURE__ */ jsx37("span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", children: title }),
6215
+ /* @__PURE__ */ jsxs27("span", { className: EDITORIAL_ROW_TEXT, children: [
6216
+ /* @__PURE__ */ jsx42("span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", children: title }),
4445
6217
  meta,
4446
- /* @__PURE__ */ jsx37("span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-secondary text-h6", children: description })
6218
+ /* @__PURE__ */ jsx42("span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-secondary text-h6", children: description })
4447
6219
  ] })
4448
6220
  ]
4449
6221
  }
4450
6222
  );
4451
6223
  }
4452
- return /* @__PURE__ */ jsxs25(
6224
+ return /* @__PURE__ */ jsxs27(
4453
6225
  ContentCardFrame,
4454
6226
  {
4455
6227
  as: "a",
@@ -4459,13 +6231,13 @@ function ProgramEditorialCard({
4459
6231
  "aria-label": `Open ${title}`,
4460
6232
  className: cn("flex flex-col", className),
4461
6233
  children: [
4462
- /* @__PURE__ */ jsxs25(
6234
+ /* @__PURE__ */ jsxs27(
4463
6235
  "span",
4464
6236
  {
4465
6237
  className: cn(EDITORIAL_FEATURE_COVER, "transition-colors duration-300"),
4466
6238
  style: { backgroundColor: edgeColor },
4467
6239
  children: [
4468
- cover && /* @__PURE__ */ jsx37(
6240
+ cover && /* @__PURE__ */ jsx42(
4469
6241
  next_image_default,
4470
6242
  {
4471
6243
  src: cover,
@@ -4476,17 +6248,17 @@ function ProgramEditorialCard({
4476
6248
  unoptimized: true
4477
6249
  }
4478
6250
  ),
4479
- playable && cover && /* @__PURE__ */ jsx37(CardHoverPlay, { size: "lg" })
6251
+ playable && cover && /* @__PURE__ */ jsx42(CardHoverPlay, { size: "lg" })
4480
6252
  ]
4481
6253
  }
4482
6254
  ),
4483
- /* @__PURE__ */ jsxs25("span", { className: EDITORIAL_FEATURE_BODY, children: [
4484
- eyebrow && /* @__PURE__ */ jsx37("span", { className: "block h-[1lh] text-ods-text-secondary text-h5", children: eyebrow }),
4485
- /* @__PURE__ */ jsx37("span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", children: title }),
6255
+ /* @__PURE__ */ jsxs27("span", { className: EDITORIAL_FEATURE_BODY, children: [
6256
+ eyebrow && /* @__PURE__ */ jsx42("span", { className: "block h-[1lh] text-ods-text-secondary text-h5", children: eyebrow }),
6257
+ /* @__PURE__ */ jsx42("span", { className: "line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", children: title }),
4486
6258
  meta,
4487
- /* @__PURE__ */ jsx37("span", { className: "line-clamp-3 min-h-[3lh] text-ods-text-secondary text-h4", children: description }),
4488
- /* @__PURE__ */ jsx37("span", { className: EDITORIAL_PERSON_ROW, children: profile && /* @__PURE__ */ jsxs25(Fragment12, { children: [
4489
- /* @__PURE__ */ jsx37(
6259
+ /* @__PURE__ */ jsx42("span", { className: "line-clamp-3 min-h-[3lh] text-ods-text-secondary text-h4", children: description }),
6260
+ /* @__PURE__ */ jsx42("span", { className: EDITORIAL_PERSON_ROW, children: profile && /* @__PURE__ */ jsxs27(Fragment14, { children: [
6261
+ /* @__PURE__ */ jsx42(
4490
6262
  SquareAvatar,
4491
6263
  {
4492
6264
  variant: "round",
@@ -4496,9 +6268,9 @@ function ProgramEditorialCard({
4496
6268
  size: "sm"
4497
6269
  }
4498
6270
  ),
4499
- /* @__PURE__ */ jsxs25("span", { className: "truncate text-h6", children: [
4500
- /* @__PURE__ */ jsx37("span", { className: "text-ods-text-primary", children: profile.name }),
4501
- profile.subtitle && /* @__PURE__ */ jsxs25("span", { className: "text-ods-text-secondary", children: [
6271
+ /* @__PURE__ */ jsxs27("span", { className: "truncate text-h6", children: [
6272
+ /* @__PURE__ */ jsx42("span", { className: "text-ods-text-primary", children: profile.name }),
6273
+ profile.subtitle && /* @__PURE__ */ jsxs27("span", { className: "text-ods-text-secondary", children: [
4502
6274
  " \xB7 ",
4503
6275
  profile.subtitle
4504
6276
  ] })
@@ -4553,7 +6325,7 @@ function ProgramCard({
4553
6325
  if (size2 === "portrait") {
4554
6326
  const profile = programItemToStripProfile(item);
4555
6327
  const dateMeta = compactMetaLine;
4556
- return /* @__PURE__ */ jsx37(
6328
+ return /* @__PURE__ */ jsx42(
4557
6329
  EntityPortraitCard,
4558
6330
  {
4559
6331
  href,
@@ -4571,7 +6343,7 @@ function ProgramCard({
4571
6343
  );
4572
6344
  }
4573
6345
  if (size2 === "feature" || size2 === "row") {
4574
- return /* @__PURE__ */ jsx37(
6346
+ return /* @__PURE__ */ jsx42(
4575
6347
  ProgramEditorialCard,
4576
6348
  {
4577
6349
  feature: size2 === "feature",
@@ -4597,17 +6369,17 @@ function ProgramCard({
4597
6369
  const subtitleParts = [itemDate, typeMeta, config.labels?.singular].filter(
4598
6370
  (s) => typeof s === "string" && s.length > 0
4599
6371
  );
4600
- return /* @__PURE__ */ jsxs25("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, "group", className), children: [
4601
- /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
4602
- compactCover ? /* @__PURE__ */ jsx37(next_image_default, { src: compactCover, alt: item.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ jsx37("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ jsx37(Play, { className: "h-4 w-4" }) : config.type === "webinar" ? /* @__PURE__ */ jsx37(Video2, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx37(Clock2, { className: "h-4 w-4" }) }),
4603
- isPlayable && compactCover && /* @__PURE__ */ jsx37(CardHoverPlay, { size: "sm" })
6372
+ return /* @__PURE__ */ jsxs27("a", { href, target, rel, className: cn(COMPACT_CARD_OUTER, "group", className), children: [
6373
+ /* @__PURE__ */ jsxs27("span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
6374
+ compactCover ? /* @__PURE__ */ jsx42(next_image_default, { src: compactCover, alt: item.title, fill: true, sizes: "56px", className: "object-contain", unoptimized: true }) : /* @__PURE__ */ jsx42("span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: config.type === "podcast" ? /* @__PURE__ */ jsx42(Play, { className: "h-4 w-4" }) : config.type === "webinar" ? /* @__PURE__ */ jsx42(Video4, { className: "h-4 w-4" }) : /* @__PURE__ */ jsx42(Clock2, { className: "h-4 w-4" }) }),
6375
+ isPlayable && compactCover && /* @__PURE__ */ jsx42(CardHoverPlay, { size: "sm" })
4604
6376
  ] }),
4605
- /* @__PURE__ */ jsxs25("span", { className: COMPACT_CARD_TEXT_COL, children: [
4606
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx37("span", { className: cn(COMPACT_CARD_TITLE, "font-heading"), children: item.title }) }),
4607
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
4608
- /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx37("span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
6377
+ /* @__PURE__ */ jsxs27("span", { className: COMPACT_CARD_TEXT_COL, children: [
6378
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ jsx42("span", { className: cn(COMPACT_CARD_TITLE, "font-heading"), children: item.title }) }),
6379
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx42("span", { className: "truncate text-ods-accent text-h6", children: subtitleParts.join(" \xB7 ") }) }),
6380
+ /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ jsx42("span", { className: COMPACT_CARD_SUMMARY, children: item.description || COMPACT_CARD_ROW_FILLER }) })
4609
6381
  ] }),
4610
- /* @__PURE__ */ jsx37("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx37(ExternalLink2, { className: "h-3.5 w-3.5" }) })
6382
+ /* @__PURE__ */ jsx42("span", { className: "flex h-5 shrink-0 items-center self-start text-ods-text-secondary", children: /* @__PURE__ */ jsx42(ExternalLink2, { className: "h-3.5 w-3.5" }) })
4611
6383
  ] });
4612
6384
  }
4613
6385
  const dateFormat = formatProgramDate(zonedDate, "weekday");
@@ -4618,20 +6390,20 @@ function ProgramCard({
4618
6390
  );
4619
6391
  const defaultRenderMeta = () => {
4620
6392
  if (config.type === "podcast") {
4621
- return defaultTypeMeta ? /* @__PURE__ */ jsxs25(Fragment12, { children: [
4622
- /* @__PURE__ */ jsx37(Clock2, { className: "h-4 w-4 text-ods-text-secondary" }),
4623
- /* @__PURE__ */ jsx37("span", { className: "font-body text-ods-text-secondary", children: defaultTypeMeta })
6393
+ return defaultTypeMeta ? /* @__PURE__ */ jsxs27(Fragment14, { children: [
6394
+ /* @__PURE__ */ jsx42(Clock2, { className: "h-4 w-4 text-ods-text-secondary" }),
6395
+ /* @__PURE__ */ jsx42("span", { className: "font-body text-ods-text-secondary", children: defaultTypeMeta })
4624
6396
  ] }) : null;
4625
6397
  }
4626
6398
  if (config.type === "event") {
4627
6399
  const eventMeta = [defaultTypeMeta, defaultAudience].filter(Boolean).join(" \xB7 ");
4628
- return eventMeta ? /* @__PURE__ */ jsx37("span", { className: "font-body text-ods-text-secondary", children: eventMeta }) : null;
6400
+ return eventMeta ? /* @__PURE__ */ jsx42("span", { className: "font-body text-ods-text-secondary", children: eventMeta }) : null;
4629
6401
  }
4630
6402
  if (config.type === "webinar" && (defaultTypeMeta || zonedDate.timezone)) {
4631
- return /* @__PURE__ */ jsxs25(Fragment12, { children: [
4632
- /* @__PURE__ */ jsx37(Video2, { className: "h-4 w-4 text-ods-text-secondary" }),
4633
- defaultTypeMeta && /* @__PURE__ */ jsx37("span", { className: "font-body text-ods-text-secondary", children: defaultTypeMeta }),
4634
- zonedDate.timezone && /* @__PURE__ */ jsxs25("span", { className: "text-ods-text-secondary text-h6", children: [
6403
+ return /* @__PURE__ */ jsxs27(Fragment14, { children: [
6404
+ /* @__PURE__ */ jsx42(Video4, { className: "h-4 w-4 text-ods-text-secondary" }),
6405
+ defaultTypeMeta && /* @__PURE__ */ jsx42("span", { className: "font-body text-ods-text-secondary", children: defaultTypeMeta }),
6406
+ zonedDate.timezone && /* @__PURE__ */ jsxs27("span", { className: "text-ods-text-secondary text-h6", children: [
4635
6407
  "(",
4636
6408
  zonedDate.timezone,
4637
6409
  ")"
@@ -4642,9 +6414,9 @@ function ProgramCard({
4642
6414
  };
4643
6415
  const endAt = "end_at" in item && typeof item.end_at === "string" ? item.end_at : null;
4644
6416
  const dateLabel = formatProgramDateRange(zonedDate, endAt) ?? dateFormat;
4645
- const cardHeader = /* @__PURE__ */ jsxs25("div", { className: DEFAULT_HEADER, children: [
4646
- coverImage && /* @__PURE__ */ jsxs25("div", { className: DEFAULT_COVER_FRAME, children: [
4647
- /* @__PURE__ */ jsx37(
6417
+ const cardHeader = /* @__PURE__ */ jsxs27("div", { className: DEFAULT_HEADER, children: [
6418
+ coverImage && /* @__PURE__ */ jsxs27("div", { className: DEFAULT_COVER_FRAME, children: [
6419
+ /* @__PURE__ */ jsx42(
4648
6420
  next_image_default,
4649
6421
  {
4650
6422
  src: coverImage,
@@ -4655,24 +6427,24 @@ function ProgramCard({
4655
6427
  unoptimized: true
4656
6428
  }
4657
6429
  ),
4658
- isPlayable && /* @__PURE__ */ jsx37(CardHoverPlay, { size: "md" })
6430
+ isPlayable && /* @__PURE__ */ jsx42(CardHoverPlay, { size: "md" })
4659
6431
  ] }),
4660
- /* @__PURE__ */ jsxs25("div", { className: DEFAULT_TEXT, children: [
4661
- /* @__PURE__ */ jsx37("h3", { className: DEFAULT_TITLE, children: item.title }),
4662
- /* @__PURE__ */ jsxs25("div", { className: DEFAULT_META_ROW, children: [
4663
- /* @__PURE__ */ jsx37("span", { style: { color: accentColor }, children: dateLabel }),
4664
- renderMeta ? /* @__PURE__ */ jsxs25(Fragment12, { children: [
4665
- /* @__PURE__ */ jsx37("span", { className: "hidden text-ods-text-secondary md:inline", children: "\u2022" }),
6432
+ /* @__PURE__ */ jsxs27("div", { className: DEFAULT_TEXT, children: [
6433
+ /* @__PURE__ */ jsx42("h3", { className: DEFAULT_TITLE, children: item.title }),
6434
+ /* @__PURE__ */ jsxs27("div", { className: DEFAULT_META_ROW, children: [
6435
+ /* @__PURE__ */ jsx42("span", { style: { color: accentColor }, children: dateLabel }),
6436
+ renderMeta ? /* @__PURE__ */ jsxs27(Fragment14, { children: [
6437
+ /* @__PURE__ */ jsx42("span", { className: "hidden text-ods-text-secondary md:inline", children: "\u2022" }),
4666
6438
  renderMeta(item)
4667
- ] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs25(Fragment12, { children: [
4668
- /* @__PURE__ */ jsx37("span", { className: "hidden text-ods-text-secondary md:inline", children: "\u2022" }),
4669
- /* @__PURE__ */ jsx37("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
6439
+ ] }) : defaultRenderMeta() && /* @__PURE__ */ jsxs27(Fragment14, { children: [
6440
+ /* @__PURE__ */ jsx42("span", { className: "hidden text-ods-text-secondary md:inline", children: "\u2022" }),
6441
+ /* @__PURE__ */ jsx42("div", { className: "flex items-center gap-2", children: defaultRenderMeta() })
4670
6442
  ] })
4671
6443
  ] }),
4672
- /* @__PURE__ */ jsx37("p", { className: DEFAULT_DESCRIPTION, children: item.description }),
4673
- tags.length > 0 && /* @__PURE__ */ jsx37("div", { className: DEFAULT_TAG_ROW, children: tags.map((tag) => /* @__PURE__ */ jsx37(Tag, { as: "span", label: tag, variant: "outline" }, tag)) })
6444
+ /* @__PURE__ */ jsx42("p", { className: DEFAULT_DESCRIPTION, children: item.description }),
6445
+ tags.length > 0 && /* @__PURE__ */ jsx42("div", { className: DEFAULT_TAG_ROW, children: tags.map((tag) => /* @__PURE__ */ jsx42(Tag, { as: "span", label: tag, variant: "outline" }, tag)) })
4674
6446
  ] }),
4675
- hosts.length > 0 && /* @__PURE__ */ jsx37("div", { className: "flex flex-wrap gap-2 md:justify-end", children: hosts.map((host, index) => /* @__PURE__ */ jsx37(
6447
+ hosts.length > 0 && /* @__PURE__ */ jsx42("div", { className: "flex flex-wrap gap-2 md:justify-end", children: hosts.map((host, index) => /* @__PURE__ */ jsx42(
4676
6448
  SquareAvatar,
4677
6449
  {
4678
6450
  variant: "round",
@@ -4687,7 +6459,7 @@ function ProgramCard({
4687
6459
  const cardFrameClass = cn(DEFAULT_BODY, className);
4688
6460
  const actionLabel = `View ${config.labels.singular.toLowerCase()}`;
4689
6461
  if (wholeCardClickable) {
4690
- return /* @__PURE__ */ jsxs25(
6462
+ return /* @__PURE__ */ jsxs27(
4691
6463
  ContentCardFrame,
4692
6464
  {
4693
6465
  as: "a",
@@ -4698,15 +6470,15 @@ function ProgramCard({
4698
6470
  "aria-label": `Open ${item.title}`,
4699
6471
  children: [
4700
6472
  cardHeader,
4701
- images.length > 0 && /* @__PURE__ */ jsx37(MediaGallery, { images, title: item.title }),
4702
- /* @__PURE__ */ jsx37("div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ jsxs25(
6473
+ images.length > 0 && /* @__PURE__ */ jsx42(MediaGallery, { images, title: item.title }),
6474
+ /* @__PURE__ */ jsx42("div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ jsxs27(
4703
6475
  "span",
4704
6476
  {
4705
6477
  className: "inline-flex items-center gap-2 rounded-md border border-ods-border px-4 py-2 text-ods-text-primary text-h4",
4706
6478
  "aria-hidden": "true",
4707
6479
  children: [
4708
6480
  actionLabel,
4709
- /* @__PURE__ */ jsx37(ArrowRight, { className: "h-5 w-5" })
6481
+ /* @__PURE__ */ jsx42(ArrowRight, { className: "h-5 w-5" })
4710
6482
  ]
4711
6483
  }
4712
6484
  ) })
@@ -4714,16 +6486,16 @@ function ProgramCard({
4714
6486
  }
4715
6487
  );
4716
6488
  }
4717
- return /* @__PURE__ */ jsxs25(ContentCardFrame, { as: "div", className: cardFrameClass, children: [
4718
- /* @__PURE__ */ jsx37("a", { href, target, rel, className: "block", "aria-label": `Open ${item.title}`, children: cardHeader }),
4719
- images.length > 0 && /* @__PURE__ */ jsx37(MediaGallery, { images, title: item.title }),
4720
- /* @__PURE__ */ jsx37("div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ jsx37(
6489
+ return /* @__PURE__ */ jsxs27(ContentCardFrame, { as: "div", className: cardFrameClass, children: [
6490
+ /* @__PURE__ */ jsx42("a", { href, target, rel, className: "block", "aria-label": `Open ${item.title}`, children: cardHeader }),
6491
+ images.length > 0 && /* @__PURE__ */ jsx42(MediaGallery, { images, title: item.title }),
6492
+ /* @__PURE__ */ jsx42("div", { className: DEFAULT_FOOTER, children: /* @__PURE__ */ jsx42(
4721
6493
  Button,
4722
6494
  {
4723
6495
  variant: "outline",
4724
6496
  href,
4725
6497
  openInNewTab: target === "_blank",
4726
- rightIcon: /* @__PURE__ */ jsx37(ArrowRight, { className: "h-5 w-5" }),
6498
+ rightIcon: /* @__PURE__ */ jsx42(ArrowRight, { className: "h-5 w-5" }),
4727
6499
  children: actionLabel
4728
6500
  }
4729
6501
  ) })
@@ -4990,9 +6762,18 @@ export {
4990
6762
  ModalTitle,
4991
6763
  ModalFooter,
4992
6764
  ImageGalleryModal,
6765
+ fetchPriorityProp,
6766
+ MUX_STREAM_ORIGIN,
6767
+ MUX_IMAGE_ORIGIN,
6768
+ saveDataEnabled,
6769
+ useVideoOriginPreconnect,
6770
+ useVideoWarmup,
4993
6771
  VideoPlayBadge,
4994
6772
  CardHoverPlay,
4995
6773
  VideoUnmuteGlyph,
6774
+ extractYouTubeId,
6775
+ VIDEO_PLAYBACK_FAILED_EVENT,
6776
+ Video,
4996
6777
  statusBadgeVariants,
4997
6778
  genBadgeBgOpacity,
4998
6779
  generationTierFromLabel,
@@ -5003,11 +6784,22 @@ export {
5003
6784
  PaletteBadge,
5004
6785
  DepartmentBadge,
5005
6786
  AvatarStack,
6787
+ ICON_REGISTRY,
6788
+ normalizeIconKey,
6789
+ getIconComponent,
6790
+ getDynamicIcon,
6791
+ ICON_ALIASES,
6792
+ brandLogoForName,
6793
+ resolveIcon,
6794
+ ICON_OPTIONS,
6795
+ FAE_AVATAR_DATA_URI,
6796
+ AgentMark,
5006
6797
  getProxiedImageUrl,
5007
6798
  urlPathLooksLikeSvg,
5008
6799
  shouldProxyImage,
5009
6800
  generateImageSizes,
5010
6801
  skipsImageOptimizer,
6802
+ EntityIcon,
5011
6803
  escapeRegExp,
5012
6804
  isCrossOriginUrl,
5013
6805
  decideNewTab,
@@ -5026,7 +6818,7 @@ export {
5026
6818
  useCoverImageFallback,
5027
6819
  hideOnError,
5028
6820
  EntityPortraitCard,
5029
- FlamingoLogo,
6821
+ FlamingoLogo2 as FlamingoLogo,
5030
6822
  PlatformBadge,
5031
6823
  AdminContentCard,
5032
6824
  ADMIN_CONTENT_CARD_GRID_CLASS,
@@ -5052,6 +6844,7 @@ export {
5052
6844
  toStripProfile,
5053
6845
  sortBitesByCreatedAtDesc,
5054
6846
  sortBitesByFeaturedAtDesc,
6847
+ VideoHoverPreviewSurface,
5055
6848
  ProductReleaseCard,
5056
6849
  ProductReleaseCardSkeleton,
5057
6850
  formatReleaseDate,