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

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 (194) hide show
  1. package/dist/{chunk-WCVZCGK5.cjs → chunk-2QEUFXNS.cjs} +71 -312
  2. package/dist/{chunk-N45D4ZXQ.js → chunk-2YXVWZVF.js} +715 -959
  3. package/dist/{chunk-7OFPU7WE.cjs → chunk-3MX5S4CF.cjs} +2547 -877
  4. package/dist/{chunk-MB4PNY7C.cjs → chunk-4I45Y3DN.cjs} +6 -6
  5. package/dist/{chunk-K6O43WDL.cjs → chunk-4KX6OED2.cjs} +46 -46
  6. package/dist/{chunk-JPG7OHEG.js → chunk-5HBHO5TB.js} +1 -1
  7. package/dist/{chunk-3PLDQDE6.cjs → chunk-6NJKKO73.cjs} +15 -15
  8. package/dist/{chunk-O2RSAA5M.js → chunk-6SEANMOU.js} +11 -11
  9. package/dist/{chunk-WMX26HB5.js → chunk-6XIF2Z7I.js} +3 -3
  10. package/dist/{chunk-TQ4LB2DS.cjs → chunk-7LS22BZU.cjs} +14 -14
  11. package/dist/{chunk-7GEBFJT2.js → chunk-7VVFKJY5.js} +3429 -1759
  12. package/dist/{chunk-DDVBX42E.cjs → chunk-A75QY6CD.cjs} +21 -21
  13. package/dist/{chunk-OF6GEI5A.cjs → chunk-ABU3TGXA.cjs} +3 -3
  14. package/dist/{chunk-4CJMQLB5.js → chunk-AQWZNP6A.js} +4 -4
  15. package/dist/{chunk-FI6GMDO7.js → chunk-CH5232HV.js} +662 -2455
  16. package/dist/{chunk-Y2GSOUCS.cjs → chunk-D7BTSVMS.cjs} +2 -2
  17. package/dist/{chunk-4ILM7W2R.js → chunk-DENB2XJC.js} +2 -2
  18. package/dist/{chunk-6232S532.js → chunk-DW7G4KG3.js} +3 -3
  19. package/dist/{chunk-3NCM4ZQB.js → chunk-F6AFPNDF.js} +15 -15
  20. package/dist/{chunk-PXOQIA5K.js → chunk-F6I6XZMN.js} +5 -5
  21. package/dist/{chunk-G6UMNAVI.js → chunk-FCGC42TS.js} +61 -57
  22. package/dist/{chunk-BHI6GVC4.js → chunk-G5A3PSPV.js} +691 -1080
  23. package/dist/{chunk-HZ7CBXPL.cjs → chunk-HPWWNJE7.cjs} +89 -89
  24. package/dist/{chunk-SW5ZV2BN.cjs → chunk-IHERL5V4.cjs} +34 -34
  25. package/dist/{chunk-UJ33ZXDT.cjs → chunk-IKTQ3ZAG.cjs} +6 -6
  26. package/dist/{chunk-SEKYEWQG.cjs → chunk-JEZKGCZI.cjs} +26 -26
  27. package/dist/{chunk-7SCNMP2B.cjs → chunk-KOWVJD4V.cjs} +56 -56
  28. package/dist/chunk-LMBC5FFP.js +43 -0
  29. package/dist/{chunk-F57ECE2I.js → chunk-MFFCUVWG.js} +1 -1
  30. package/dist/{chunk-KUC673HM.js → chunk-MKXO4Q5P.js} +142 -383
  31. package/dist/{chunk-6NTPY5QA.cjs → chunk-MMOODW57.cjs} +94 -1887
  32. package/dist/{chunk-CUME3VTQ.js → chunk-MP2C3LJ4.js} +1 -1
  33. package/dist/{chunk-VX4E6YSB.cjs → chunk-N3COXDBH.cjs} +5 -41
  34. package/dist/{chunk-FXJ3WWUB.js → chunk-NDESEPW5.js} +0 -68
  35. package/dist/chunk-O43V3EOS.js +252 -0
  36. package/dist/{chunk-PLYEKV3N.cjs → chunk-OHFS7VOU.cjs} +2 -2
  37. package/dist/{chunk-M75XEEGT.cjs → chunk-OUY3HHW6.cjs} +539 -928
  38. package/dist/{chunk-CZ7Y7UG4.js → chunk-PDWVPI3S.js} +72 -4
  39. package/dist/{chunk-TE773HEH.js → chunk-PN2RKPDF.js} +10 -10
  40. package/dist/{chunk-3EZ4HHAP.js → chunk-QFXRPRFT.js} +3 -3
  41. package/dist/chunk-QZVSJF2K.cjs +252 -0
  42. package/dist/chunk-RALRPFDW.cjs +43 -0
  43. package/dist/{chunk-YGJKKDDM.js → chunk-RBDP4WDE.js} +6 -6
  44. package/dist/{chunk-LM7TXMLU.cjs → chunk-RKV5B7EU.cjs} +4 -72
  45. package/dist/{chunk-UVTD52MD.cjs → chunk-TYWLNCNH.cjs} +82 -14
  46. package/dist/{chunk-IKJA3Y7Z.js → chunk-VA5T32XA.js} +2 -2
  47. package/dist/{chunk-GWQEYPYM.cjs → chunk-VESKITRQ.cjs} +732 -728
  48. package/dist/{chunk-RQRX4YC3.cjs → chunk-VHCACDKP.cjs} +39 -39
  49. package/dist/{chunk-4IBPRIQH.js → chunk-VR2ZLFCP.js} +1 -1
  50. package/dist/{chunk-RTIPR53L.cjs → chunk-WA6GUYQ4.cjs} +104 -104
  51. package/dist/{chunk-T5TMCHWM.js → chunk-X5MQ7JRP.js} +9 -9
  52. package/dist/{chunk-LLSUVPQC.cjs → chunk-X72J4ACL.cjs} +8 -252
  53. package/dist/{chunk-UDFRUKLC.cjs → chunk-XOYH2YQE.cjs} +2 -2
  54. package/dist/{chunk-LVSFKENJ.cjs → chunk-YFBM2K6X.cjs} +4 -4
  55. package/dist/{chunk-DWPAAWMR.js → chunk-YHM5AWTT.js} +6 -6
  56. package/dist/{chunk-NCPTID44.js → chunk-Z2VNQQ74.js} +942 -978
  57. package/dist/{chunk-STHZBOQI.cjs → chunk-ZSAGLQOD.cjs} +17 -17
  58. package/dist/{chunk-VZICIQW2.js → chunk-ZSAO2HBW.js} +15 -15
  59. package/dist/components/case-studies/index.cjs +32 -30
  60. package/dist/components/case-studies/index.js +16 -14
  61. package/dist/components/chat/entity-cards/case-study-card.d.ts +4 -11
  62. package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
  63. package/dist/components/chat/index.cjs +11 -9
  64. package/dist/components/chat/index.js +16 -14
  65. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  66. package/dist/components/contact/index.cjs +14 -12
  67. package/dist/components/contact/index.js +13 -11
  68. package/dist/components/docs/index.cjs +17 -15
  69. package/dist/components/docs/index.js +16 -14
  70. package/dist/components/embeds/index.cjs +14 -12
  71. package/dist/components/embeds/index.js +13 -11
  72. package/dist/components/faq/index.cjs +15 -13
  73. package/dist/components/faq/index.js +14 -12
  74. package/dist/components/features/index.cjs +14 -12
  75. package/dist/components/features/index.js +23 -21
  76. package/dist/components/footer-waitlist-button.d.ts +29 -0
  77. package/dist/components/footer-waitlist-button.d.ts.map +1 -0
  78. package/dist/components/footer.d.ts +47 -0
  79. package/dist/components/footer.d.ts.map +1 -0
  80. package/dist/components/help-center-pages/index.cjs +120 -118
  81. package/dist/components/help-center-pages/index.js +35 -33
  82. package/dist/components/icons/index.cjs +5 -3
  83. package/dist/components/icons/index.js +11 -9
  84. package/dist/components/icons-v2-generated/index.cjs +5 -3
  85. package/dist/components/icons-v2-generated/index.js +4 -2
  86. package/dist/components/index.cjs +159 -86
  87. package/dist/components/index.d.ts +2 -0
  88. package/dist/components/index.d.ts.map +1 -1
  89. package/dist/components/index.js +402 -329
  90. package/dist/components/loading/page-layout-skeleton.d.ts +1 -1
  91. package/dist/components/meeting-scheduler/index.cjs +64 -62
  92. package/dist/components/meeting-scheduler/index.js +14 -12
  93. package/dist/components/navigation/client-only-header.d.ts +8 -0
  94. package/dist/components/navigation/client-only-header.d.ts.map +1 -0
  95. package/dist/components/navigation/header-skeleton.d.ts +12 -0
  96. package/dist/components/navigation/header-skeleton.d.ts.map +1 -0
  97. package/dist/components/navigation/header.d.ts +9 -0
  98. package/dist/components/navigation/header.d.ts.map +1 -0
  99. package/dist/components/navigation/index.cjs +16 -28
  100. package/dist/components/navigation/index.d.ts +10 -14
  101. package/dist/components/navigation/index.d.ts.map +1 -1
  102. package/dist/components/navigation/index.js +26 -38
  103. package/dist/components/navigation/mingo-ai-button.d.ts +3 -38
  104. package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
  105. package/dist/components/navigation/mobile-nav-panel.d.ts +10 -0
  106. package/dist/components/navigation/mobile-nav-panel.d.ts.map +1 -0
  107. package/dist/components/navigation/navigation-sidebar-item.d.ts +2 -1
  108. package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
  109. package/dist/components/navigation/top-navigation.d.ts +2 -2
  110. package/dist/components/navigation/top-navigation.d.ts.map +1 -1
  111. package/dist/components/onboarding-guides/index.cjs +17 -15
  112. package/dist/components/onboarding-guides/index.js +16 -14
  113. package/dist/components/related-content/index.cjs +8 -10
  114. package/dist/components/related-content/index.js +7 -9
  115. package/dist/components/tickets/index.cjs +18 -16
  116. package/dist/components/tickets/index.js +17 -15
  117. package/dist/components/ui/index.cjs +14 -12
  118. package/dist/components/ui/index.js +19 -17
  119. package/dist/hooks/index.cjs +11 -19
  120. package/dist/hooks/index.d.ts +0 -1
  121. package/dist/hooks/index.d.ts.map +1 -1
  122. package/dist/hooks/index.js +11 -19
  123. package/dist/hooks/ui/index.d.ts +0 -3
  124. package/dist/hooks/ui/index.d.ts.map +1 -1
  125. package/dist/index.cjs +22 -55
  126. package/dist/index.js +196 -229
  127. package/dist/types/case-study.d.ts +0 -9
  128. package/dist/types/case-study.d.ts.map +1 -1
  129. package/dist/types/navigation.d.ts +65 -95
  130. package/dist/types/navigation.d.ts.map +1 -1
  131. package/dist/utils/index.cjs +0 -55
  132. package/dist/utils/index.d.ts +0 -1
  133. package/dist/utils/index.d.ts.map +1 -1
  134. package/dist/utils/index.js +1 -50
  135. package/dist/utils/source-icons.d.ts.map +1 -1
  136. package/package.json +1 -1
  137. package/src/components/chat/entity-cards/case-study-card.tsx +5 -115
  138. package/src/components/chat/utils/icon-library.tsx +1 -35
  139. package/src/components/footer-waitlist-button.tsx +53 -0
  140. package/src/components/footer.tsx +195 -0
  141. package/src/components/index.ts +2 -0
  142. package/src/components/loading/page-layout-skeleton.tsx +1 -1
  143. package/src/components/navigation/client-only-header.tsx +22 -0
  144. package/src/components/navigation/header-skeleton.tsx +74 -0
  145. package/src/components/navigation/header.tsx +429 -0
  146. package/src/components/navigation/index.ts +14 -21
  147. package/src/components/navigation/mingo-ai-button.tsx +63 -139
  148. package/src/components/navigation/mobile-nav-panel.tsx +155 -0
  149. package/src/components/navigation/navigation-sidebar-item.tsx +2 -1
  150. package/src/components/navigation/ticket-alerts-button.tsx +2 -2
  151. package/src/components/navigation/top-navigation.tsx +2 -2
  152. package/src/hooks/index.ts +0 -1
  153. package/src/hooks/ui/index.ts +0 -3
  154. package/src/styles/chat-animations.css +2 -57
  155. package/src/types/case-study.ts +0 -16
  156. package/src/types/navigation.ts +66 -80
  157. package/src/utils/index.ts +0 -1
  158. package/src/utils/source-icons.ts +0 -13
  159. package/dist/components/navigation/mobile-nav-sheet-id.d.ts +0 -3
  160. package/dist/components/navigation/mobile-nav-sheet-id.d.ts.map +0 -1
  161. package/dist/components/navigation/mobile-nav-sheet.d.ts +0 -48
  162. package/dist/components/navigation/mobile-nav-sheet.d.ts.map +0 -1
  163. package/dist/components/navigation/nav-item-row.d.ts +0 -27
  164. package/dist/components/navigation/nav-item-row.d.ts.map +0 -1
  165. package/dist/components/navigation/nav-panel.d.ts +0 -43
  166. package/dist/components/navigation/nav-panel.d.ts.map +0 -1
  167. package/dist/components/navigation/site-footer.d.ts +0 -28
  168. package/dist/components/navigation/site-footer.d.ts.map +0 -1
  169. package/dist/components/navigation/site-header.d.ts +0 -61
  170. package/dist/components/navigation/site-header.d.ts.map +0 -1
  171. package/dist/components/navigation/site-nav-link.d.ts +0 -26
  172. package/dist/components/navigation/site-nav-link.d.ts.map +0 -1
  173. package/dist/hooks/ui/use-active-section.d.ts +0 -10
  174. package/dist/hooks/ui/use-active-section.d.ts.map +0 -1
  175. package/dist/hooks/ui/use-nav-menus.d.ts +0 -48
  176. package/dist/hooks/ui/use-nav-menus.d.ts.map +0 -1
  177. package/dist/hooks/ui/use-visitor-os.d.ts +0 -15
  178. package/dist/hooks/ui/use-visitor-os.d.ts.map +0 -1
  179. package/dist/hooks/use-location-hash.d.ts +0 -9
  180. package/dist/hooks/use-location-hash.d.ts.map +0 -1
  181. package/dist/utils/visitor-os.d.ts +0 -45
  182. package/dist/utils/visitor-os.d.ts.map +0 -1
  183. package/src/components/navigation/mobile-nav-sheet-id.ts +0 -2
  184. package/src/components/navigation/mobile-nav-sheet.tsx +0 -241
  185. package/src/components/navigation/nav-item-row.tsx +0 -129
  186. package/src/components/navigation/nav-panel.tsx +0 -196
  187. package/src/components/navigation/site-footer.tsx +0 -256
  188. package/src/components/navigation/site-header.tsx +0 -339
  189. package/src/components/navigation/site-nav-link.tsx +0 -41
  190. package/src/hooks/ui/use-active-section.ts +0 -44
  191. package/src/hooks/ui/use-nav-menus.ts +0 -200
  192. package/src/hooks/ui/use-visitor-os.ts +0 -33
  193. package/src/hooks/use-location-hash.ts +0 -34
  194. package/src/utils/visitor-os.ts +0 -84
@@ -9,66 +9,25 @@ var _chunkMGHIV4L6cjs = require('./chunk-MGHIV4L6.cjs');
9
9
 
10
10
 
11
11
 
12
+ var _chunkRKV5B7EUcjs = require('./chunk-RKV5B7EU.cjs');
12
13
 
13
14
 
14
15
 
15
16
 
16
- var _chunkLM7TXMLUcjs = require('./chunk-LM7TXMLU.cjs');
17
17
 
18
18
 
19
19
 
20
20
 
21
21
 
22
+ var _chunkQZVSJF2Kcjs = require('./chunk-QZVSJF2K.cjs');
22
23
 
23
24
 
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
- var _chunkLLSUVPQCcjs = require('./chunk-LLSUVPQC.cjs');
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
- var _chunkVX4E6YSBcjs = require('./chunk-VX4E6YSB.cjs');
25
+ var _chunkRALRPFDWcjs = require('./chunk-RALRPFDW.cjs');
64
26
 
65
27
 
66
28
  var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
67
29
 
68
30
 
69
- var _chunk4GFNWALLcjs = require('./chunk-4GFNWALL.cjs');
70
-
71
-
72
31
  var _chunkDFQYAYBHcjs = require('./chunk-DFQYAYBH.cjs');
73
32
 
74
33
 
@@ -308,7 +267,7 @@ var disabledTagClasses = [
308
267
  ];
309
268
  function TagLabel({ label, labelClassName }) {
310
269
  const isString = typeof label === "string";
311
- const { ref, isTruncated } = _chunkLM7TXMLUcjs.useIsTruncated.call(void 0, isString ? label : null);
270
+ const { ref, isTruncated } = _chunkRKV5B7EUcjs.useIsTruncated.call(void 0, isString ? label : null);
312
271
  if (!isString) {
313
272
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "truncate", labelClassName), children: label });
314
273
  }
@@ -360,7 +319,7 @@ function Tag({
360
319
  disabled ? "cursor-not-allowed" : "hover:opacity-100"
361
320
  ),
362
321
  "aria-label": "Remove",
363
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.XmarkCircleIcon, { className: "size-4" })
322
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRALRPFDWcjs.XmarkCircleIcon, { className: "size-4" })
364
323
  }
365
324
  )
366
325
  ]
@@ -895,7 +854,7 @@ var SquareAvatar = _react3.memo.call(void 0,
895
854
  style,
896
855
  ...props
897
856
  }, ref) => {
898
- const resolvedSrc = _chunkLM7TXMLUcjs.useAuthedImageSrc.call(void 0, src);
857
+ const resolvedSrc = _chunkRKV5B7EUcjs.useAuthedImageSrc.call(void 0, src);
899
858
  const sizeClasses2 = {
900
859
  // xs (24px): dense card meta rows — avatar stacks on delivery/
901
860
  // roadmap cards. Part of the shared scale so no caller ever
@@ -1088,7 +1047,7 @@ var Modal = _react3.forwardRef.call(void 0, ({ isOpen, onClose, children, classN
1088
1047
  ),
1089
1048
  role: "dialog",
1090
1049
  "aria-modal": "true",
1091
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7TXMLUcjs.ViewportBreakpoints, { children })
1050
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRKV5B7EUcjs.ViewportBreakpoints, { children })
1092
1051
  }
1093
1052
  )
1094
1053
  ] });
@@ -1211,90 +1170,6 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
1211
1170
  ] }) });
1212
1171
  }
1213
1172
 
1214
- // src/utils/fetch-priority.ts
1215
-
1216
- var REACT_MAJOR = parseInt((_react4.default.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 (e3) {
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
-
1242
- var _reactdom = require('react-dom'); var _reactdom2 = _interopRequireDefault(_reactdom);
1243
- function saveDataEnabled() {
1244
- if (typeof navigator === "undefined") return false;
1245
- const conn = navigator.connection;
1246
- return _optionalChain([conn, 'optionalAccess', _17 => _17.saveData]) === true;
1247
- }
1248
- function useVideoOriginPreconnect({ supabaseStorageOrigin } = {}) {
1249
- const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
1250
- const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _18 => _18.endpoints, 'access', _19 => _19.supabaseStorageOrigin])));
1251
- try {
1252
- _reactdom2.default.preconnect(MUX_STREAM_ORIGIN, { crossOrigin: "anonymous" });
1253
- _reactdom2.default.preconnect(MUX_IMAGE_ORIGIN, { crossOrigin: "anonymous" });
1254
- if (resolvedOrigin) {
1255
- _reactdom2.default.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 = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
1269
- const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _20 => _20.endpoints, 'access', _21 => _21.supabaseStorageOrigin])));
1270
- useVideoOriginPreconnect({ supabaseStorageOrigin: resolvedOrigin });
1271
- const { ref, isNear } = _chunkLM7TXMLUcjs.useNearViewport.call(void 0, nearMargin);
1272
- _react3.useEffect.call(void 0, () => {
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 (e4) {
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
-
1298
1173
  // src/components/features/video-center-badge.tsx
1299
1174
 
1300
1175
  var SIZES = {
@@ -1321,7 +1196,7 @@ function VideoPlayBadge({ size: size2 = "md", className }) {
1321
1196
  className
1322
1197
  ),
1323
1198
  style: { filter: GLYPH_SHADOW },
1324
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.PlayFilledIcon, { size: SIZES[size2], color: "currentColor" })
1199
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.PlayFilledIcon, { size: SIZES[size2], color: "currentColor" })
1325
1200
  }
1326
1201
  );
1327
1202
  }
@@ -1341,7 +1216,7 @@ function CardHoverPlay({ size: size2 = "md", className }) {
1341
1216
  }
1342
1217
  function VideoUnmuteGlyph({ size: size2 = "md", className }) {
1343
1218
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1344
- _chunkLLSUVPQCcjs.VolumeOffFilledIcon,
1219
+ _chunkQZVSJF2Kcjs.VolumeOffFilledIcon,
1345
1220
  {
1346
1221
  size: SIZES[size2],
1347
1222
  color: "currentColor",
@@ -1351,923 +1226,6 @@ function VideoUnmuteGlyph({ size: size2 = "md", className }) {
1351
1226
  );
1352
1227
  }
1353
1228
 
1354
- // src/components/features/video.tsx
1355
- var _muxplayerreact = require('@mux/mux-player-react'); var _muxplayerreact2 = _interopRequireDefault(_muxplayerreact);
1356
-
1357
-
1358
- // src/components/features/use-ios-native-video-fullscreen.ts
1359
-
1360
- var ENTER_FULLSCREEN_REQUEST = "mediaenterfullscreenrequest";
1361
- function isIosAppShell() {
1362
- const capacitor = globalThis.Capacitor;
1363
- return _optionalChain([capacitor, 'optionalAccess', _22 => _22.isNativePlatform, 'optionalCall', _23 => _23()]) === true && _optionalChain([capacitor, 'access', _24 => _24.getPlatform, 'optionalCall', _25 => _25()]) === "ios";
1364
- }
1365
- function nativeVideoElement(player) {
1366
- const media = player.media;
1367
- const element = _nullishCoalesce(_optionalChain([media, 'optionalAccess', _26 => _26.nativeEl]), () => ( media));
1368
- return element instanceof HTMLVideoElement ? element : null;
1369
- }
1370
- function useIosNativeVideoFullscreen(playerRef) {
1371
- _react3.useEffect.call(void 0, () => {
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 (!_optionalChain([video, 'optionalAccess', _27 => _27.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
-
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 (e5) {
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 (e6) {
1406
- return void 0;
1407
- }
1408
- }
1409
- if (typeof document !== "undefined") {
1410
- try {
1411
- document.cookie = "muxData=; path=/; max-age=0";
1412
- } catch (e7) {
1413
- }
1414
- }
1415
- if (typeof window !== "undefined") {
1416
- const w = window;
1417
- if (!_optionalChain([w, 'access', _28 => _28.chrome, 'optionalAccess', _29 => _29.cast])) {
1418
- w.chrome = { ..._nullishCoalesce(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 (e8) {
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 (e9) {
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 (e10) {
1481
- return null;
1482
- }
1483
- if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
1484
- if (u.hostname.toLowerCase().endsWith("youtu.be")) {
1485
- return _nullishCoalesce(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 (e11) {
1498
- }
1499
- }
1500
- var VIDEO_STALL_TIMEOUT_MS = 15e3;
1501
- function VideoErrorOverlay({
1502
- onRetry,
1503
- watchOnYouTubeId
1504
- }) {
1505
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "This video failed to play." }),
1507
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-[var(--spacing-system-sf)]", children: [
1508
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDFQYAYBHcjs.Button, { variant: "outline", size: "small", onClick: onRetry, children: "Try again" }),
1509
- watchOnYouTubeId ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1510
- _chunkDFQYAYBHcjs.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 } = _chunkLM7TXMLUcjs.useNearViewport.call(void 0, );
1556
- const url = props.url;
1557
- if (!url) return null;
1558
- const effectiveKind = resolveKind(props, url);
1559
- const layout = _nullishCoalesce(props.layout, () => ( "native"));
1560
- if (props.lazy && !isNear) {
1561
- return wrapWithLayout(
1562
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 h-full w-full", children: inner });
1619
- case "wide":
1620
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
1633
- "div",
1634
- {
1635
- "aria-hidden": true,
1636
- className: "h-full w-full",
1637
- style: { "--media-background-color": "transparent" },
1638
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, 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 = _nullishCoalesce(preload, () => ( (saveDataEnabled() ? "none" : "metadata")));
1666
- const resolvedCaptionsUrl = _chunkLM7TXMLUcjs.useAuthedAssetSrc.call(void 0, captionsUrl, "text/vtt, */*");
1667
- const [hoverMutedFallback, setHoverMutedFallback] = _react3.useState.call(void 0, () => Boolean(startMuted));
1668
- const hoverPlayerRef = _react3.useRef.call(void 0, null);
1669
- const [mutedFallbackBlocked, setMutedFallbackBlocked] = _react3.useState.call(void 0, false);
1670
- const perfListenerRef = _react3.useRef.call(void 0, null);
1671
- const clearPerfListener = _react3.useCallback.call(void 0, () => {
1672
- if (perfListenerRef.current) {
1673
- try {
1674
- _optionalChain([hoverPlayerRef, 'access', _30 => _30.current, 'optionalAccess', _31 => _31.removeEventListener, 'optionalCall', _32 => _32("playing", perfListenerRef.current)]);
1675
- } catch (e12) {
1676
- }
1677
- perfListenerRef.current = null;
1678
- }
1679
- }, []);
1680
- _react3.useEffect.call(void 0, () => clearPerfListener, [clearPerfListener]);
1681
- const hoverActiveRef = _react3.useRef.call(void 0, false);
1682
- const hoverGenerationRef = _react3.useRef.call(void 0, 0);
1683
- const activationWaiterRef = _react3.useRef.call(void 0, null);
1684
- const clearActivationWaiter = _react3.useCallback.call(void 0, () => {
1685
- if (activationWaiterRef.current) {
1686
- activationWaiters.delete(activationWaiterRef.current);
1687
- activationWaiterRef.current = null;
1688
- }
1689
- }, []);
1690
- _react3.useEffect.call(void 0, () => clearActivationWaiter, [clearActivationWaiter]);
1691
- const mutedIntentRef = _react3.useRef.call(void 0, mutedIntent);
1692
- _react3.useEffect.call(void 0, () => {
1693
- mutedIntentRef.current = mutedIntent;
1694
- });
1695
- const startHoverPlayback = _react3.useCallback.call(void 0, () => {
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
- _optionalChain([el, 'access', _33 => _33.addEventListener, 'optionalCall', _34 => _34("playing", onPlaying)]);
1710
- } catch (e13) {
1711
- }
1712
- }
1713
- try {
1714
- el.volume = 0.5;
1715
- if (userHasInteracted) {
1716
- el.muted = mutedIntentRef.current;
1717
- _optionalChain([el, 'access', _35 => _35.play, 'optionalCall', _36 => _36(), 'optionalAccess', _37 => _37.catch, 'optionalCall', _38 => _38((err) => {
1718
- const name = _optionalChain([err, 'optionalAccess', _39 => _39.name]);
1719
- if (name === "NotAllowedError" && hoverActiveRef.current && generation === hoverGenerationRef.current) {
1720
- try {
1721
- el.muted = true;
1722
- _optionalChain([el, 'access', _40 => _40.play, 'optionalCall', _41 => _41(), 'optionalAccess', _42 => _42.catch, 'optionalCall', _43 => _43(() => {
1723
- if (hoverActiveRef.current && generation === hoverGenerationRef.current) {
1724
- setMutedFallbackBlocked(true);
1725
- }
1726
- })]);
1727
- setHoverMutedFallback(true);
1728
- } catch (e14) {
1729
- }
1730
- }
1731
- })]);
1732
- } else {
1733
- el.muted = true;
1734
- _optionalChain([el, 'access', _44 => _44.play, 'optionalCall', _45 => _45(), 'optionalAccess', _46 => _46.catch, 'optionalCall', _47 => _47(() => {
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 (e15) {
1748
- }
1749
- setHoverMutedFallback(false);
1750
- }
1751
- };
1752
- activationWaiterRef.current = waiter;
1753
- activationWaiters.add(waiter);
1754
- }
1755
- } catch (e16) {
1756
- }
1757
- }, [clearActivationWaiter, clearPerfListener]);
1758
- const stopHoverPlayback = _react3.useCallback.call(void 0, () => {
1759
- hoverActiveRef.current = false;
1760
- setHoverMutedFallback(false);
1761
- clearActivationWaiter();
1762
- clearPerfListener();
1763
- try {
1764
- _optionalChain([hoverPlayerRef, 'access', _48 => _48.current, 'optionalAccess', _49 => _49.pause, 'optionalCall', _50 => _50()]);
1765
- } catch (e17) {
1766
- }
1767
- }, [clearActivationWaiter, clearPerfListener]);
1768
- const unmuteNow = _react3.useCallback.call(void 0, (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
- _optionalChain([el, 'access', _51 => _51.play, 'optionalCall', _52 => _52(), 'optionalAccess', _53 => _53.catch, 'optionalCall', _54 => _54(() => {
1777
- })]);
1778
- }
1779
- } catch (e18) {
1780
- }
1781
- setHoverMutedFallback(false);
1782
- }, []);
1783
- const hoverControlled = typeof playWhenHovered === "boolean";
1784
- _react3.useEffect.call(void 0, () => {
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 = _react3.useRef.call(void 0, onMutedFallbackChange);
1792
- _react3.useEffect.call(void 0, () => {
1793
- onMutedFallbackChangeRef.current = onMutedFallbackChange;
1794
- });
1795
- _react3.useEffect.call(void 0, () => {
1796
- _optionalChain([onMutedFallbackChangeRef, 'access', _55 => _55.current, 'optionalCall', _56 => _56({
1797
- muted: hoverMutedFallback,
1798
- blocked: hoverMutedFallback && mutedFallbackBlocked
1799
- })]);
1800
- }, [hoverMutedFallback, mutedFallbackBlocked]);
1801
- const autoPlayKickedRef = _react3.useRef.call(void 0, false);
1802
- _react3.useEffect.call(void 0, () => {
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 (e19) {
1811
- }
1812
- if (autoPlay) {
1813
- const reportBlocked = () => setMutedFallbackBlocked(true);
1814
- try {
1815
- _optionalChain([mutedEl, 'access', _57 => _57.play, 'optionalCall', _58 => _58(), 'optionalAccess', _59 => _59.catch, 'optionalCall', _60 => _60(reportBlocked)]);
1816
- } catch (e20) {
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
- _optionalChain([el, 'access', _61 => _61.play, 'optionalCall', _62 => _62(), 'optionalAccess', _63 => _63.catch, 'optionalCall', _64 => _64((err) => {
1830
- const name = _optionalChain([err, 'optionalAccess', _65 => _65.name]);
1831
- if (name !== "NotAllowedError") return;
1832
- try {
1833
- el.muted = true;
1834
- _optionalChain([el, 'access', _66 => _66.play, 'optionalCall', _67 => _67(), 'optionalAccess', _68 => _68.catch, 'optionalCall', _69 => _69(() => {
1835
- setMutedFallbackBlocked(true);
1836
- setHoverMutedFallback(true);
1837
- })]);
1838
- setMutedFallbackBlocked(false);
1839
- setHoverMutedFallback(true);
1840
- } catch (e21) {
1841
- setMutedFallbackBlocked(true);
1842
- setHoverMutedFallback(true);
1843
- }
1844
- })]);
1845
- } catch (e22) {
1846
- }
1847
- }, [autoPlayUnmuted, startMuted, autoPlay]);
1848
- _react3.useEffect.call(void 0, () => {
1849
- const el = hoverPlayerRef.current;
1850
- if (!_optionalChain([el, 'optionalAccess', _70 => _70.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 (e23) {
1860
- }
1861
- return () => {
1862
- try {
1863
- _optionalChain([el, 'access', _71 => _71.removeEventListener, 'optionalCall', _72 => _72("volumechange", onVolumeChange)]);
1864
- } catch (e24) {
1865
- }
1866
- };
1867
- }, []);
1868
- _react3.useEffect.call(void 0, () => {
1869
- const el = hoverPlayerRef.current;
1870
- if (!_optionalChain([el, 'optionalAccess', _73 => _73.addEventListener])) return void 0;
1871
- const onPlaying = () => setMutedFallbackBlocked(false);
1872
- try {
1873
- el.addEventListener("playing", onPlaying);
1874
- } catch (e25) {
1875
- }
1876
- return () => {
1877
- try {
1878
- _optionalChain([el, 'access', _74 => _74.removeEventListener, 'optionalCall', _75 => _75("playing", onPlaying)]);
1879
- } catch (e26) {
1880
- }
1881
- };
1882
- }, []);
1883
- const onEndedRef = _react3.useRef.call(void 0, onEnded);
1884
- _react3.useEffect.call(void 0, () => {
1885
- onEndedRef.current = onEnded;
1886
- });
1887
- _react3.useEffect.call(void 0, () => {
1888
- const el = hoverPlayerRef.current;
1889
- if (!_optionalChain([el, 'optionalAccess', _76 => _76.addEventListener])) return void 0;
1890
- const handler = () => _optionalChain([onEndedRef, 'access', _77 => _77.current, 'optionalCall', _78 => _78()]);
1891
- try {
1892
- el.addEventListener("ended", handler);
1893
- } catch (e27) {
1894
- }
1895
- return () => {
1896
- try {
1897
- _optionalChain([el, 'access', _79 => _79.removeEventListener, 'optionalCall', _80 => _80("ended", handler)]);
1898
- } catch (e28) {
1899
- }
1900
- };
1901
- }, []);
1902
- useIosNativeVideoFullscreen(hoverPlayerRef);
1903
- _react3.useImperativeHandle.call(void 0,
1904
- playerHandleRef,
1905
- () => ({
1906
- getCurrentTime: () => _nullishCoalesce(_optionalChain([hoverPlayerRef, 'access', _81 => _81.current, 'optionalAccess', _82 => _82.currentTime]), () => ( 0)),
1907
- getDuration: () => {
1908
- const d = _optionalChain([hoverPlayerRef, 'access', _83 => _83.current, 'optionalAccess', _84 => _84.duration]);
1909
- return typeof d === "number" && isFinite(d) ? d : 0;
1910
- },
1911
- getPaused: () => _nullishCoalesce(_optionalChain([hoverPlayerRef, 'access', _85 => _85.current, 'optionalAccess', _86 => _86.paused]), () => ( true)),
1912
- getMuted: () => _nullishCoalesce(_optionalChain([hoverPlayerRef, 'access', _87 => _87.current, 'optionalAccess', _88 => _88.muted]), () => ( false)),
1913
- play: async () => {
1914
- await _optionalChain([hoverPlayerRef, 'access', _89 => _89.current, 'optionalAccess', _90 => _90.play, 'optionalCall', _91 => _91()]);
1915
- },
1916
- pause: () => {
1917
- try {
1918
- _optionalChain([hoverPlayerRef, 'access', _92 => _92.current, 'optionalAccess', _93 => _93.pause, 'optionalCall', _94 => _94()]);
1919
- } catch (e29) {
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 (e30) {
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] = _react3.useState.call(void 0, false);
1944
- const stallTimerRef = _react3.useRef.call(void 0, null);
1945
- const clearStallTimer = _react3.useCallback.call(void 0, () => {
1946
- if (stallTimerRef.current !== null) {
1947
- clearTimeout(stallTimerRef.current);
1948
- stallTimerRef.current = null;
1949
- }
1950
- }, []);
1951
- _react3.useEffect.call(void 0, () => clearStallTimer, [clearStallTimer]);
1952
- const failPlayback = _react3.useCallback.call(void 0,
1953
- (reason) => {
1954
- clearStallTimer();
1955
- setPlaybackFailed(true);
1956
- reportPlaybackFailure({ kind: "file", src: url, reason });
1957
- },
1958
- [clearStallTimer, url]
1959
- );
1960
- const armStallTimer = _react3.useCallback.call(void 0, () => {
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 = _react3.useCallback.call(void 0, () => {
1971
- clearStallTimer();
1972
- setPlaybackFailed(false);
1973
- }, [clearStallTimer]);
1974
- const handleMediaError = _react3.useCallback.call(void 0, () => {
1975
- if (!monitorHealth) return;
1976
- failPlayback("error");
1977
- }, [monitorHealth, failPlayback]);
1978
- const retryPlayback = _react3.useCallback.call(void 0, () => {
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
- _optionalChain([el, 'access', _95 => _95.load, 'optionalCall', _96 => _96()]);
1986
- if (resumeAt > 0 && el.addEventListener && el.removeEventListener) {
1987
- const seekBack = () => {
1988
- _optionalChain([el, 'access', _97 => _97.removeEventListener, 'optionalCall', _98 => _98("loadedmetadata", seekBack)]);
1989
- try {
1990
- el.currentTime = resumeAt;
1991
- } catch (e31) {
1992
- }
1993
- };
1994
- el.addEventListener("loadedmetadata", seekBack);
1995
- }
1996
- _optionalChain([el, 'access', _99 => _99.play, 'optionalCall', _100 => _100(), 'optionalAccess', _101 => _101.catch, 'optionalCall', _102 => _102(() => {
1997
- })]);
1998
- } catch (e32) {
1999
- }
2000
- }, [clearStallTimer]);
2001
- const errorOverlay = monitorHealth && playbackFailed ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoErrorOverlay, { onRetry: retryPlayback }) : null;
2002
- const player = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2003
- _muxplayerreact2.default,
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__ */ _jsxruntime.jsx.call(void 0, "track", { kind: "captions", src: resolvedCaptionsUrl, srcLang: "en", label: "English", default: true }) : null
2033
- }
2034
- );
2035
- const unmuteBadge = hoverMutedFallback && !hideMutedBadge ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, VideoUnmuteGlyph, {})
2044
- }
2045
- ) : null;
2046
- if (playOnHover && !hoverControlled) {
2047
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "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__ */ _jsxruntime.jsxs.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
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] = _react3.useState.call(void 0, Boolean(autoActivate));
2116
- const [prevAutoActivate, setPrevAutoActivate] = _react3.useState.call(void 0, Boolean(autoActivate));
2117
- if (Boolean(autoActivate) !== prevAutoActivate) {
2118
- setPrevAutoActivate(Boolean(autoActivate));
2119
- if (autoActivate) setActivated(true);
2120
- }
2121
- const [failed, setFailed] = _react3.useState.call(void 0, false);
2122
- const [reloadNonce, setReloadNonce] = _react3.useState.call(void 0, 0);
2123
- const iframeRef = _react3.useRef.call(void 0, null);
2124
- const retry = _react3.useCallback.call(void 0, () => {
2125
- setFailed(false);
2126
- setReloadNonce((n) => n + 1);
2127
- }, []);
2128
- const embedUrl = _react3.useMemo.call(void 0, () => {
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] = _react3.useState.call(void 0, 0);
2150
- const [posterTierFor, setPosterTierFor] = _react3.useState.call(void 0, 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
- _react3.useEffect.call(void 0, () => {
2160
- if (!activated || failed) return void 0;
2161
- const iframe = iframeRef.current;
2162
- if (!iframe) return void 0;
2163
- function subscribe() {
2164
- _optionalChain([iframe, 'optionalAccess', _103 => _103.contentWindow, 'optionalAccess', _104 => _104.postMessage, 'call', _105 => _105('{"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 (e33) {
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 = _optionalChain([payload, 'access', _106 => _106.info, 'optionalAccess', _107 => _107.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
- _optionalChain([iframeRef, 'access', _108 => _108.current, 'optionalAccess', _109 => _109.blur, 'call', _110 => _110()]);
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 = _react3.useRef.call(void 0, false);
2207
- _react3.useEffect.call(void 0, () => {
2208
- const wasSuspended = prevSuspendedRef.current;
2209
- prevSuspendedRef.current = Boolean(suspended);
2210
- if (!activated || Boolean(suspended) === wasSuspended) return;
2211
- _optionalChain([iframeRef, 'access', _111 => _111.current, 'optionalAccess', _112 => _112.contentWindow, 'optionalAccess', _113 => _113.postMessage, 'call', _114 => _114(
2212
- `{"event":"command","func":"${suspended ? "pauseVideo" : "playVideo"}","args":[]}`,
2213
- YT_NOCOOKIE_ORIGIN
2214
- )]);
2215
- }, [suspended, activated]);
2216
- const wrapperClass = `relative w-full ${_nullishCoalesce(className, () => ( ""))}`;
2217
- const wrapperStyle = { paddingBottom: "56.25%" };
2218
- if (activated && failed) {
2219
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoErrorOverlay, { onRetry: retry, watchOnYouTubeId: videoId }) });
2220
- }
2221
- if (activated) {
2222
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, "div", { className: wrapperClass, style: wrapperStyle, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
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__ */ _jsxruntime.jsxs.call(void 0, "picture", { children: [
2245
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "source", { type: "image/webp", srcSet: posterWebp }),
2246
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
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
-
2271
1229
  // src/components/ui/status-badge.tsx
2272
1230
 
2273
1231
 
@@ -2399,8 +1357,8 @@ function DepartmentBadge({
2399
1357
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2400
1358
  PaletteBadge,
2401
1359
  {
2402
- text: _optionalChain([department, 'optionalAccess', _115 => _115.name]) || emptyLabel,
2403
- color: _optionalChain([department, 'optionalAccess', _116 => _116.name]) ? department.color : null,
1360
+ text: _optionalChain([department, 'optionalAccess', _17 => _17.name]) || emptyLabel,
1361
+ color: _optionalChain([department, 'optionalAccess', _18 => _18.name]) ? department.color : null,
2404
1362
  className,
2405
1363
  variant
2406
1364
  }
@@ -2483,536 +1441,12 @@ function AvatarStack({
2483
1441
  );
2484
1442
  }
2485
1443
 
2486
- // src/components/chat/utils/icon-registry.ts
2487
-
2488
-
2489
-
2490
-
2491
-
2492
-
2493
-
2494
-
2495
-
2496
-
2497
-
2498
-
2499
-
2500
-
2501
-
2502
-
2503
-
2504
-
2505
-
2506
-
2507
-
2508
-
2509
-
2510
-
2511
-
2512
-
2513
-
2514
-
2515
-
2516
-
2517
-
2518
-
2519
-
2520
-
2521
-
2522
-
2523
-
2524
-
2525
-
2526
- var OpenFrameLogoIcon = ({ className }) => _react3.createElement.call(void 0, _chunkLLSUVPQCcjs.OpenFrameLogo, { className, upperPathColor: "currentColor" });
2527
- var ICON_REGISTRY = {
2528
- // lucide-react (kebab-case)
2529
- activity: _lucidereact.Activity,
2530
- banknote: _lucidereact.Banknote,
2531
- bell: _lucidereact.Bell,
2532
- "book-open": _lucidereact.BookOpen,
2533
- box: _lucidereact.Box,
2534
- briefcase: _lucidereact.Briefcase,
2535
- calendar: _lucidereact.Calendar,
2536
- "check-square": _lucidereact.CheckSquare,
2537
- "dollar-sign": _lucidereact.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: _chunkLLSUVPQCcjs.FacebookIcon,
2541
- "facebook-lucide": _lucidereact.Facebook,
2542
- "file-text": _lucidereact.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: _chunkLLSUVPQCcjs.GitHubIcon,
2550
- "github-lucide": _lucidereact.Github,
2551
- globe: _lucidereact.Globe,
2552
- "graduation-cap": _lucidereact.GraduationCap,
2553
- headphones: _lucidereact.Headphones,
2554
- info: _lucidereact.Info,
2555
- instagram: _chunkLLSUVPQCcjs.InstagramIcon,
2556
- "instagram-lucide": _lucidereact.Instagram,
2557
- mail: _lucidereact.Mail,
2558
- megaphone: _lucidereact.Megaphone,
2559
- "message-circle": _lucidereact.MessageCircle,
2560
- "message-square": _lucidereact.MessageSquare,
2561
- newspaper: _lucidereact.Newspaper,
2562
- package: _lucidereact.Package,
2563
- "pen-square": _lucidereact.PenSquare,
2564
- phone: _lucidereact.Phone,
2565
- rocket: _lucidereact.Rocket,
2566
- search: _lucidereact.Search,
2567
- send: _lucidereact.Send,
2568
- shield: _lucidereact.Shield,
2569
- star: _lucidereact.Star,
2570
- table: _lucidereact.TableProperties,
2571
- "trending-up": _lucidereact.TrendingUp,
2572
- twitter: _lucidereact.Twitter,
2573
- users: _lucidereact.Users,
2574
- video: _lucidereact.Video,
2575
- whatsapp: _chunkLLSUVPQCcjs.WhatsAppIcon,
2576
- youtube: _chunkLLSUVPQCcjs.YouTubeIcon,
2577
- "youtube-lucide": _lucidereact.Youtube,
2578
- // brand-only icons (no lucide variant in current use)
2579
- slack: _chunkLLSUVPQCcjs.SlackIcon,
2580
- clickup: _chunkLLSUVPQCcjs.ClickUpIcon,
2581
- hubspot: _chunkLLSUVPQCcjs.HubspotIcon,
2582
- linkedin: _chunkLLSUVPQCcjs.LinkedInIcon,
2583
- x: _chunkLLSUVPQCcjs.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 _nullishCoalesce(PASCAL_TO_KEBAB_ALIASES[key], () => ( key));
2641
- }
2642
- function getIconComponent(iconName) {
2643
- if (!iconName) return _lucidereact.FileText;
2644
- return _nullishCoalesce(ICON_REGISTRY[normalizeIconKey(iconName)], () => ( _lucidereact.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 _react3.createElement.call(void 0, _lucidereact.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 _react3.createElement.call(void 0, 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 _react3.createElement.call(void 0, _lucidereact.Globe, { className: finalClassName });
2681
- }
2682
-
2683
- // src/components/chat/utils/icon-library.tsx
2684
-
2685
-
2686
- function sizedLogo(Logo) {
2687
- return function SizedLogo({ size: size2 = 16, className }) {
2688
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Logo, { className, style: { width: size2, height: size2 } });
2689
- };
2690
- }
2691
- var brandColor = (platform) => `var(${_chunkLM7TXMLUcjs.platformAccentVarName.call(void 0, platform)})`;
2692
- var OpenmspLogoIcon = ({ size: size2 = 16, className }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2693
- _chunkLLSUVPQCcjs.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(_chunkLLSUVPQCcjs.FlamingoLogo);
2703
- var MlgLogoIcon = ({ size: size2 = 16, className, color }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MlgLogo, { size: size2, className, color: _nullishCoalesce(color, () => ( "var(--color-text-primary)")) });
2704
- var TmcgLogoIcon = ({ size: size2 = 16, className }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2705
- _chunkLLSUVPQCcjs.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 = _nullishCoalesce(color, () => ( "currentColor"));
2715
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2716
- _chunkLLSUVPQCcjs.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: _chunkVX4E6YSBcjs.ClickupLogoGreyIcon,
2728
- slack: _chunkVX4E6YSBcjs.SlackLogoGreyIcon,
2729
- hubspot: _chunkVX4E6YSBcjs.HubspotLogoGreyIcon,
2730
- github: _chunkVX4E6YSBcjs.GithubIcon,
2731
- openframe: LogoOpenframeIcon,
2732
- newspaper: _chunkVX4E6YSBcjs.NewspaperIcon,
2733
- rocket: _chunkVX4E6YSBcjs.Rocket02Icon,
2734
- briefcase: _chunkVX4E6YSBcjs.BriefcaseIcon,
2735
- "graduation-cap": _chunkVX4E6YSBcjs.GraduationCapIcon,
2736
- video: _chunkVX4E6YSBcjs.VideoRecorderIcon,
2737
- headphones: _chunkVX4E6YSBcjs.HeadphoneIcon,
2738
- calendar: _chunkVX4E6YSBcjs.CalendarIcon,
2739
- compass: _chunkVX4E6YSBcjs.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": _chunkVX4E6YSBcjs.ClickupLogoGreyIcon,
2743
- "clickup-logo-grey": _chunkVX4E6YSBcjs.ClickupLogoGreyIcon,
2744
- "slack-logo": _chunkVX4E6YSBcjs.SlackLogoGreyIcon,
2745
- "slack-logo-grey": _chunkVX4E6YSBcjs.SlackLogoGreyIcon,
2746
- "hubspot-logo": _chunkVX4E6YSBcjs.HubspotLogoGreyIcon,
2747
- "hubspot-logo-grey": _chunkVX4E6YSBcjs.HubspotLogoGreyIcon,
2748
- "github-logo": _chunkVX4E6YSBcjs.GithubIcon,
2749
- "logo-openframe": LogoOpenframeIcon,
2750
- "rocket-01": _chunkVX4E6YSBcjs.Rocket02Icon,
2751
- "rocket-02": _chunkVX4E6YSBcjs.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: _lucidereact.Megaphone,
2761
- bell: _lucidereact.Bell,
2762
- info: _lucidereact.Info,
2763
- star: _lucidereact.Star,
2764
- package: _lucidereact.Package,
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: _chunk4GFNWALLcjs.SearchIcon,
2768
- ticket: _chunkVX4E6YSBcjs.TicketIcon,
2769
- book: _chunkVX4E6YSBcjs.BookIcon,
2770
- "book-open": _chunkVX4E6YSBcjs.BookIcon,
2771
- bug: _chunkVX4E6YSBcjs.BugIcon,
2772
- layers: _chunkVX4E6YSBcjs.LayersIcon,
2773
- file: _chunkVX4E6YSBcjs.FileIcon,
2774
- "file-text": _chunkVX4E6YSBcjs.FileIcon,
2775
- chats: _chunkVX4E6YSBcjs.ChatsIcon,
2776
- "message-square": _chunkVX4E6YSBcjs.ChatsIcon,
2777
- "message-circle": _chunkVX4E6YSBcjs.ChatsIcon,
2778
- "bracket-curly": _chunkVX4E6YSBcjs.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 = _chunkVX4E6YSBcjs.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 = (_nullishCoalesce(name, () => ( ""))).split(/[^A-Za-z0-9]+/).filter(Boolean);
2797
- const pascal = (word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
2798
- const registry = _chunkVX4E6YSBcjs.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 (_optionalChain([opts, 'optionalAccess', _117 => _117.variant]) === "brand") {
2809
- return getIconComponent(iconName);
2810
- }
2811
- if (!iconName) return _chunkVX4E6YSBcjs.FileIcon;
2812
- return _nullishCoalesce(_nullishCoalesce(ICON_ALIASES[iconName], () => ( resolveFromLibrary(iconName))), () => ( _chunkVX4E6YSBcjs.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
-
3006
- function AgentMark({ agent, className = "", faeAvatarSrc = FAE_AVATAR_DATA_URI }) {
3007
- return agent === "mingo" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MingoIcon, { className, "aria-hidden": "true", focusable: "false" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: faeAvatarSrc, alt: "", className });
3008
- }
3009
-
3010
1444
  // src/utils/image-proxy.ts
3011
1445
  function getProxiedImageUrl(imageUrl, options) {
3012
1446
  if (!imageUrl) return null;
3013
- const proxyPrefix = _optionalChain([options, 'optionalAccess', _118 => _118.proxyPrefix]);
3014
- const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _119 => _119.skipDomains]), () => ( []));
3015
- const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _120 => _120.directHttps]), () => ( false));
1447
+ const proxyPrefix = _optionalChain([options, 'optionalAccess', _19 => _19.proxyPrefix]);
1448
+ const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _20 => _20.skipDomains]), () => ( []));
1449
+ const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _21 => _21.directHttps]), () => ( false));
3016
1450
  if (proxyPrefix && imageUrl.includes(proxyPrefix)) {
3017
1451
  return imageUrl;
3018
1452
  }
@@ -3035,7 +1469,7 @@ function getProxiedImageUrl(imageUrl, options) {
3035
1469
  function urlPathLooksLikeSvg(imageUrl) {
3036
1470
  try {
3037
1471
  return /\.svg$/i.test(new URL(imageUrl).pathname);
3038
- } catch (e34) {
1472
+ } catch (e3) {
3039
1473
  return /\.svg(\?|#|$)/i.test(imageUrl);
3040
1474
  }
3041
1475
  }
@@ -3054,47 +1488,11 @@ function skipsImageOptimizer(url) {
3054
1488
  try {
3055
1489
  const hostname = new URL(url.startsWith("//") ? `https:${url}` : url).hostname.toLowerCase();
3056
1490
  return hostname === "googleusercontent.com" || hostname.endsWith(".googleusercontent.com");
3057
- } catch (e35) {
1491
+ } catch (e4) {
3058
1492
  return false;
3059
1493
  }
3060
1494
  }
3061
1495
 
3062
- // src/components/icon-display.tsx
3063
-
3064
- var BRAND_MARK_NAMES = /* @__PURE__ */ new Set(["fae", "mingo"]);
3065
- function EntityIcon({
3066
- icon,
3067
- size: size2 = 20,
3068
- className
3069
- }) {
3070
- if (_optionalChain([icon, 'optionalAccess', _121 => _121.url])) {
3071
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3072
- _chunkMGHIV4L6cjs.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 (_optionalChain([icon, 'optionalAccess', _122 => _122.name]) && BRAND_MARK_NAMES.has(icon.name)) {
3085
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3086
- "span",
3087
- {
3088
- className: `inline-flex${className ? ` ${className}` : ""}`,
3089
- style: className ? void 0 : { width: size2, height: size2 },
3090
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AgentMark, { agent: icon.name, className: "h-full w-full" })
3091
- }
3092
- );
3093
- }
3094
- const Glyph = resolveIcon(_nullishCoalesce(_optionalChain([icon, 'optionalAccess', _123 => _123.name]), () => ( void 0)));
3095
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Glyph, { size: size2, className, ..._nullishCoalesce(_optionalChain([icon, 'optionalAccess', _124 => _124.props]), () => ( {})) });
3096
- }
3097
-
3098
1496
  // src/utils/escape-regexp.ts
3099
1497
  function escapeRegExp(value) {
3100
1498
  return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -3128,14 +1526,14 @@ function isSameOriginAbsoluteHref(href) {
3128
1526
  if (!/^https?:\/\//i.test(href)) return false;
3129
1527
  try {
3130
1528
  return new URL(href).origin === new URL(window.location.href).origin;
3131
- } catch (e36) {
1529
+ } catch (e5) {
3132
1530
  return false;
3133
1531
  }
3134
1532
  }
3135
1533
  function computeIsNewTab(runtime, href, targetPlatform) {
3136
1534
  if (!href) return false;
3137
1535
  if (runtime.navigation.mode === "embed") return !isSameOriginAbsoluteHref(href);
3138
- return _nullishCoalesce(_optionalChain([runtime, 'access', _125 => _125.navigation, 'access', _126 => _126.decideNewTab, 'optionalCall', _127 => _127({ href, targetPlatform })]), () => ( decideNewTab({
1536
+ return _nullishCoalesce(_optionalChain([runtime, 'access', _22 => _22.navigation, 'access', _23 => _23.decideNewTab, 'optionalCall', _24 => _24({ href, targetPlatform })]), () => ( decideNewTab({
3139
1537
  href,
3140
1538
  targetPlatform,
3141
1539
  currentSource: _nullishCoalesce(runtime.source, () => ( ""))
@@ -3201,7 +1599,7 @@ function EntityAuthorCard({
3201
1599
  renderEmptyAuthor = false,
3202
1600
  className
3203
1601
  }) {
3204
- const hasAuthor = !!_optionalChain([author, 'optionalAccess', _128 => _128.full_name]);
1602
+ const hasAuthor = !!_optionalChain([author, 'optionalAccess', _25 => _25.full_name]);
3205
1603
  if (!hasAuthor && !renderEmptyAuthor) return null;
3206
1604
  const effectiveAuthor = hasAuthor ? author : EMPTY_AUTHOR_PLACEHOLDER;
3207
1605
  const formatted = publishedAt ? formatDate(publishedAt) : "";
@@ -3303,14 +1701,14 @@ function EntityPortraitCard({
3303
1701
  }) {
3304
1702
  const { src, onError: onMediaError } = useCoverImageFallback(imageUrl, placeholderUrl);
3305
1703
  const [measured, setMeasured] = _react3.useState.call(void 0, null);
3306
- const isWide = _optionalChain([measured, 'optionalAccess', _129 => _129.src]) === src ? measured.isWide : null;
1704
+ const isWide = _optionalChain([measured, 'optionalAccess', _26 => _26.src]) === src ? measured.isWide : null;
3307
1705
  const onMediaLoad = (e) => {
3308
1706
  const img = e.currentTarget;
3309
1707
  if (img.naturalWidth > 0 && img.naturalHeight > 0) {
3310
1708
  setMeasured({ src, isWide: img.naturalWidth / img.naturalHeight >= MIN_WIDE_RATIO });
3311
1709
  }
3312
1710
  };
3313
- const edgeColor = _chunkLM7TXMLUcjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
1711
+ const edgeColor = _chunkRKV5B7EUcjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
3314
1712
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, "block h-full", className), "aria-label": `Open ${title}`, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Card, { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col gap-6 p-6"), children: [
3315
1713
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3316
1714
  "div",
@@ -3393,7 +1791,7 @@ function EntityPortraitCard({
3393
1791
 
3394
1792
  // src/components/flamingo-logo.tsx
3395
1793
 
3396
- function FlamingoLogo2({
1794
+ function FlamingoLogo({
3397
1795
  className = "",
3398
1796
  color = "var(--ods-flamingo-pink-base)",
3399
1797
  size: size2 = 120,
@@ -3423,7 +1821,7 @@ function FlamingoLogo2({
3423
1821
 
3424
1822
  // src/components/openmsp-logo.tsx
3425
1823
 
3426
- function OpenmspLogo2({
1824
+ function OpenmspLogo({
3427
1825
  className = "",
3428
1826
  frontBubbleColor = "#000000",
3429
1827
  innerFrontBubbleColor = "#ffffff",
@@ -3493,7 +1891,7 @@ var PlatformIcon = ({ platform, className }) => {
3493
1891
  switch (platform) {
3494
1892
  case "openmsp":
3495
1893
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3496
- OpenmspLogo2,
1894
+ OpenmspLogo,
3497
1895
  {
3498
1896
  className,
3499
1897
  frontBubbleColor: "currentColor",
@@ -3503,17 +1901,17 @@ var PlatformIcon = ({ platform, className }) => {
3503
1901
  );
3504
1902
  case "flamingo":
3505
1903
  case "flamingo-teaser":
3506
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FlamingoLogo2, { className });
1904
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FlamingoLogo, { className });
3507
1905
  case "openframe":
3508
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.OpenFrameLogo, { className });
1906
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.OpenFrameLogo, { className });
3509
1907
  case "tmcg":
3510
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MiamiCyberGangLogoFaceOnly, { size: size2, className });
1908
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.MiamiCyberGangLogoFaceOnly, { size: size2, className });
3511
1909
  case "company-hub":
3512
1910
  case "marketing-hub":
3513
1911
  case "product-hub":
3514
1912
  case "revenue-hub":
3515
1913
  case "people-hub":
3516
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FlamingoLogo2, { className, fill: "currentColor" });
1914
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FlamingoLogo, { className, fill: "currentColor" });
3517
1915
  default:
3518
1916
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className });
3519
1917
  }
@@ -3523,7 +1921,7 @@ function PlatformBadge({ platform, size: size2 = "sm", showLabel = true, classNa
3523
1921
  return null;
3524
1922
  }
3525
1923
  const sizes = sizeClasses[size2];
3526
- const colors = _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platform.name);
1924
+ const colors = _chunkRKV5B7EUcjs.getPlatformBrandClasses.call(void 0, platform.name);
3527
1925
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
3528
1926
  "div",
3529
1927
  {
@@ -3565,7 +1963,7 @@ function AdminContentCard({
3565
1963
  const [loadedUrl, setLoadedUrl] = _react3.useState.call(void 0, null);
3566
1964
  const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
3567
1965
  const imageLoaded = Boolean(displayUrl) && loadedUrl === displayUrl;
3568
- const imageBgColor = _chunkLM7TXMLUcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
1966
+ const imageBgColor = _chunkRKV5B7EUcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
3569
1967
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "article", { className: _chunk3ATAYP36cjs.cn.call(void 0, CONTENT_CARD_FRAME_CLASS, "flex h-full flex-col", className), children: [
3570
1968
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative aspect-[3/2] w-full shrink-0 overflow-hidden", style: { backgroundColor: imageBgColor }, children: displayUrl ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3571
1969
  !imageLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 animate-pulse bg-ods-border/20" }),
@@ -3592,8 +1990,8 @@ function AdminContentCard({
3592
1990
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: _chunk3ATAYP36cjs.cn.call(void 0, "line-clamp-2 break-words text-ods-text-primary text-h3", reserveRows && "min-h-[2lh]"), children: title }),
3593
1991
  (subtitle || reserveRows && subtitleRow) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk3ATAYP36cjs.cn.call(void 0, "truncate text-ods-text-secondary text-h6", reserveRows && "min-h-[1lh]"), children: subtitle }),
3594
1992
  (summary || reserveRows) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: _chunk3ATAYP36cjs.cn.call(void 0, "line-clamp-2 text-ods-text-secondary text-h6", reserveRows && "min-h-[2lh]"), children: summary }),
3595
- (Number(_optionalChain([platforms, 'optionalAccess', _130 => _130.length])) > 0 || badges || reserveRows) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-wrap items-center gap-2", reserveRows && "min-h-7"), children: [
3596
- _optionalChain([platforms, 'optionalAccess', _131 => _131.map, 'call', _132 => _132((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1993
+ (Number(_optionalChain([platforms, 'optionalAccess', _27 => _27.length])) > 0 || badges || reserveRows) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-wrap items-center gap-2", reserveRows && "min-h-7"), children: [
1994
+ _optionalChain([platforms, 'optionalAccess', _28 => _28.map, 'call', _29 => _29((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3597
1995
  PlatformBadge,
3598
1996
  {
3599
1997
  platform: { id: p.id || p.platform_id || "", name: p.name, display_name: p.display_name || p.name },
@@ -3736,7 +2134,7 @@ function EmployeeEntryCard({
3736
2134
  ] }) : null,
3737
2135
  meta: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3738
2136
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 items-center gap-2", children: [
3739
- _optionalChain([entry, 'access', _133 => _133.author, 'optionalAccess', _134 => _134.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
2137
+ _optionalChain([entry, 'access', _30 => _30.author, 'optionalAccess', _31 => _31.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3740
2138
  _chunkMGHIV4L6cjs.next_image_default,
3741
2139
  {
3742
2140
  src: _nullishCoalesce(getProxiedImageUrl2(entry.author.avatar_url), () => ( entry.author.avatar_url)),
@@ -3747,7 +2145,7 @@ function EmployeeEntryCard({
3747
2145
  unoptimized: true
3748
2146
  }
3749
2147
  ) : null,
3750
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate", children: _nullishCoalesce(_optionalChain([entry, 'access', _135 => _135.author, 'optionalAccess', _136 => _136.full_name]), () => ( "")) })
2148
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate", children: _nullishCoalesce(_optionalChain([entry, 'access', _32 => _32.author, 'optionalAccess', _33 => _33.full_name]), () => ( "")) })
3751
2149
  ] }),
3752
2150
  dateLabel ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: dateLabel }) : null
3753
2151
  ] }),
@@ -3805,7 +2203,7 @@ var HowIWorkCardSkeleton = EmployeeEntryCardSkeleton;
3805
2203
  // src/components/chat/entity-cards/ai-prompt-card.tsx
3806
2204
 
3807
2205
  function AiPromptCard({ entry, placeholderUrl, actions, anchorProps, className }) {
3808
- const departmentName = _optionalChain([entry, 'access', _137 => _137.department, 'optionalAccess', _138 => _138.name, 'optionalAccess', _139 => _139.trim, 'call', _140 => _140()]);
2206
+ const departmentName = _optionalChain([entry, 'access', _34 => _34.department, 'optionalAccess', _35 => _35.name, 'optionalAccess', _36 => _36.trim, 'call', _37 => _37()]);
3809
2207
  const steps = typeof entry.step_count === "number" ? entry.step_count : 0;
3810
2208
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3811
2209
  EmployeeEntryCard,
@@ -3813,7 +2211,7 @@ function AiPromptCard({ entry, placeholderUrl, actions, anchorProps, className }
3813
2211
  entry,
3814
2212
  dateLabel: entry.published_at ? formatDateUTC(entry.published_at, { fallback: "" }) || null : null,
3815
2213
  extraBadges: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3816
- departmentName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DepartmentBadge, { department: { name: departmentName, color: _nullishCoalesce(_optionalChain([entry, 'access', _141 => _141.department, 'optionalAccess', _142 => _142.color]), () => ( null)) } }) : null,
2214
+ departmentName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DepartmentBadge, { department: { name: departmentName, color: _nullishCoalesce(_optionalChain([entry, 'access', _38 => _38.department, 'optionalAccess', _39 => _39.color]), () => ( null)) } }) : null,
3817
2215
  steps > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EmployeeEntryBadge, { children: `${steps} steps` }) : null
3818
2216
  ] }),
3819
2217
  untitledLabel: "Untitled prompt",
@@ -3850,7 +2248,7 @@ function PageHeading({
3850
2248
  var SENTENCE_MARK = /([.:?!]+)(?=\s|$)/g;
3851
2249
  var ONLY_MARKS = /^\s*[.:?!]+\s*$/;
3852
2250
  function headingAccentClass(platform) {
3853
- return platform ? _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platform).accentText : "text-ods-accent";
2251
+ return platform ? _chunkRKV5B7EUcjs.getPlatformBrandClasses.call(void 0, platform).accentText : "text-ods-accent";
3854
2252
  }
3855
2253
  function accentSentenceMarks(node, platform) {
3856
2254
  return accentMarks(node, headingAccentClass(platform));
@@ -3932,7 +2330,7 @@ function SectionHeading({
3932
2330
  // src/components/features/video-bites-shared.ts
3933
2331
  var DEFAULT_VIDEO_BITES_TITLE = "Key Moments";
3934
2332
  function toStripProfile(p, fallbackSubtitle) {
3935
- if (!_optionalChain([p, 'optionalAccess', _143 => _143.full_name])) return null;
2333
+ if (!_optionalChain([p, 'optionalAccess', _40 => _40.full_name])) return null;
3936
2334
  return {
3937
2335
  name: p.full_name,
3938
2336
  avatarUrl: _nullishCoalesce(p.avatar_url, () => ( null)),
@@ -3952,95 +2350,6 @@ function sortBitesByFeaturedAtDesc(a, b) {
3952
2350
  return new Date(b.featured_at).getTime() - new Date(a.featured_at).getTime();
3953
2351
  }
3954
2352
 
3955
- // src/components/features/video-hover-preview.tsx
3956
-
3957
-
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 = _react3.useRef.call(void 0, null);
3982
- const [isNear, setIsNear] = _react3.useState.call(void 0, false);
3983
- _react3.useEffect.call(void 0, () => {
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(_nullishCoalesce(_optionalChain([entries, 'access', _144 => _144[0], 'optionalAccess', _145 => _145.isIntersecting]), () => ( false))), {
3988
- rootMargin: _chunkLM7TXMLUcjs.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__ */ _jsxruntime.jsx.call(void 0, "div", { ref: rootElRef, className: _chunk3ATAYP36cjs.cn.call(void 0, "absolute inset-0", className), inert: isClone || void 0, children: showMedia ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
3997
- posterSrc ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3998
- _chunkMGHIV4L6cjs.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__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Video, { kind: "file", url: previewUrl, firstFrameOnly: true, layout: "fill", fit }),
4009
- badge === "play" && !active && !continuation && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, VideoPlayBadge, { className: "absolute inset-0 z-10 m-auto" }),
4010
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4011
- "div",
4012
- {
4013
- className: "absolute inset-0",
4014
- style: { "--media-background-color": "transparent" },
4015
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 bg-ods-card" }) });
4042
- }
4043
-
4044
2353
  // src/components/shared/product-release/product-release-card.tsx
4045
2354
 
4046
2355
 
@@ -4063,7 +2372,7 @@ function ProductReleaseCard({
4063
2372
  changelogCounts
4064
2373
  }) {
4065
2374
  if (size2 === "lg") {
4066
- const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _146 => _146.features]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _147 => _147.fixes]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _148 => _148.improvements]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _149 => _149.breaking]), () => ( 0)));
2375
+ const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _41 => _41.features]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _42 => _42.fixes]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _43 => _43.improvements]), () => ( 0))) + (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess', _44 => _44.breaking]), () => ( 0)));
4067
2376
  const valueCells = [
4068
2377
  releaseType && releaseTypeBadgeColor ? {
4069
2378
  value: releaseType.toUpperCase(),
@@ -4082,7 +2391,7 @@ function ProductReleaseCard({
4082
2391
  uppercase: false
4083
2392
  } : { value: "\u2014", label: "Released", uppercase: false }
4084
2393
  ];
4085
- const effectiveAuthor = _optionalChain([author, 'optionalAccess', _150 => _150.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
2394
+ const effectiveAuthor = _optionalChain([author, 'optionalAccess', _45 => _45.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
4086
2395
  const gridColsClass = "content-md:grid-cols-4";
4087
2396
  const dividerClass = "border-b content-md:border-b-0 content-md:border-r border-ods-border";
4088
2397
  const interactive = !!anchorProps || !!onClick;
@@ -4425,10 +2734,10 @@ function buildProductReleaseCardProps(item) {
4425
2734
  job_title: release.author.job_title
4426
2735
  } : void 0,
4427
2736
  changelogCounts: {
4428
- features: _nullishCoalesce(_optionalChain([release, 'access', _151 => _151.features_added, 'optionalAccess', _152 => _152.length]), () => ( 0)),
4429
- fixes: _nullishCoalesce(_optionalChain([release, 'access', _153 => _153.bugs_fixed, 'optionalAccess', _154 => _154.length]), () => ( 0)),
4430
- improvements: _nullishCoalesce(_optionalChain([release, 'access', _155 => _155.improvements, 'optionalAccess', _156 => _156.length]), () => ( 0)),
4431
- breaking: _nullishCoalesce(_optionalChain([release, 'access', _157 => _157.breaking_changes, 'optionalAccess', _158 => _158.length]), () => ( 0))
2737
+ features: _nullishCoalesce(_optionalChain([release, 'access', _46 => _46.features_added, 'optionalAccess', _47 => _47.length]), () => ( 0)),
2738
+ fixes: _nullishCoalesce(_optionalChain([release, 'access', _48 => _48.bugs_fixed, 'optionalAccess', _49 => _49.length]), () => ( 0)),
2739
+ improvements: _nullishCoalesce(_optionalChain([release, 'access', _50 => _50.improvements, 'optionalAccess', _51 => _51.length]), () => ( 0)),
2740
+ breaking: _nullishCoalesce(_optionalChain([release, 'access', _52 => _52.breaking_changes, 'optionalAccess', _53 => _53.length]), () => ( 0))
4432
2741
  }
4433
2742
  };
4434
2743
  }
@@ -4439,7 +2748,7 @@ var SAME_ORIGIN_PROBE = "https://_sameorigin_.invalid";
4439
2748
  function isSameOriginPath(candidate) {
4440
2749
  try {
4441
2750
  return new URL(candidate, SAME_ORIGIN_PROBE).origin === SAME_ORIGIN_PROBE;
4442
- } catch (e37) {
2751
+ } catch (e6) {
4443
2752
  return false;
4444
2753
  }
4445
2754
  }
@@ -4473,7 +2782,7 @@ function safeHref(url) {
4473
2782
  if (!SAFE_URL_SCHEMES.includes(parsed.protocol)) return null;
4474
2783
  if ((parsed.protocol === "https:" || parsed.protocol === "http:") && !parsed.hostname) return null;
4475
2784
  return trimmed;
4476
- } catch (e38) {
2785
+ } catch (e7) {
4477
2786
  return null;
4478
2787
  }
4479
2788
  }
@@ -4502,7 +2811,7 @@ function useEntityCardPlaceholder({
4502
2811
  siteName = "",
4503
2812
  aspect = "wide"
4504
2813
  }) {
4505
- const derived = _chunkLM7TXMLUcjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
2814
+ const derived = _chunkRKV5B7EUcjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
4506
2815
  return placeholderUrl !== void 0 ? placeholderUrl : derived;
4507
2816
  }
4508
2817
 
@@ -4560,7 +2869,7 @@ function BlogCard({
4560
2869
  const { src: displayImage, onError: onImageError } = useCoverImageFallback(post.featured_image, placeholderUrl);
4561
2870
  if (size2 === "sm") {
4562
2871
  const dateStr2 = post.published_at ? formatDateWithTimezone(post.published_at, null, "medium") : "";
4563
- const firstCategory = _optionalChain([post, 'access', _159 => _159.categories, 'optionalAccess', _160 => _160.find, 'call', _161 => _161((c) => c && c.name), 'optionalAccess', _162 => _162.name]);
2872
+ const firstCategory = _optionalChain([post, 'access', _54 => _54.categories, 'optionalAccess', _55 => _55.find, 'call', _56 => _56((c) => c && c.name), 'optionalAccess', _57 => _57.name]);
4564
2873
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4565
2874
  "a",
4566
2875
  {
@@ -4699,7 +3008,6 @@ function BlogCard({
4699
3008
 
4700
3009
  // src/components/chat/entity-cards/case-study-card.tsx
4701
3010
 
4702
-
4703
3011
  function CaseStudyCardSkeleton({ size: size2 = "default" }) {
4704
3012
  if (size2 === "sm") {
4705
3013
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
@@ -4726,13 +3034,6 @@ function CaseStudyCardSkeleton({ size: size2 = "default" }) {
4726
3034
  ] })
4727
3035
  ] });
4728
3036
  }
4729
- function caseStudyHighlight(study) {
4730
- if (study.highlight_video_url) {
4731
- return { url: study.highlight_video_url, posterUrl: _nullishCoalesce(study.highlight_video_thumbnail, () => ( null)) };
4732
- }
4733
- const bite = (_nullishCoalesce(study.video_bites, () => ( []))).filter((candidate) => candidate.featured === true && candidate.url).sort(sortBitesByFeaturedAtDesc)[0];
4734
- return bite ? { url: bite.url, posterUrl: _nullishCoalesce(bite.thumbnail_url, () => ( null)) } : null;
4735
- }
4736
3037
  function CaseStudyCard({
4737
3038
  study,
4738
3039
  href,
@@ -4742,11 +3043,8 @@ function CaseStudyCard({
4742
3043
  placeholderUrl: placeholderUrlProp,
4743
3044
  size: size2 = "default",
4744
3045
  showTypeBadge = true,
4745
- mediaMounted,
4746
- onNavigate,
4747
3046
  className
4748
3047
  }) {
4749
- const [hovered, setHovered] = _react3.useState.call(void 0, false);
4750
3048
  const { target, rel } = useEntityCardLink({
4751
3049
  href,
4752
3050
  targetPlatform,
@@ -4765,7 +3063,7 @@ function CaseStudyCard({
4765
3063
  _chunkMGHIV4L6cjs.next_image_default,
4766
3064
  {
4767
3065
  src: coverImage,
4768
- alt: `${_optionalChain([study, 'access', _163 => _163.msp, 'optionalAccess', _164 => _164.name]) || study.title} cover`,
3066
+ alt: `${_optionalChain([study, 'access', _58 => _58.msp, 'optionalAccess', _59 => _59.name]) || study.title} cover`,
4769
3067
  className: "object-contain",
4770
3068
  fill: true,
4771
3069
  sizes: "56px",
@@ -4775,81 +3073,11 @@ function CaseStudyCard({
4775
3073
  ) : null }),
4776
3074
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
4777
3075
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE, children: study.title }) }),
4778
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([study, 'access', _165 => _165.msp, 'optionalAccess', _166 => _166.name]), _optionalChain([study, 'access', _167 => _167.user, 'optionalAccess', _168 => _168.full_name])].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
3076
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([study, 'access', _60 => _60.msp, 'optionalAccess', _61 => _61.name]), _optionalChain([study, 'access', _62 => _62.user, 'optionalAccess', _63 => _63.full_name])].filter(Boolean).join(" \xB7 ") || "Case study" }) }),
4779
3077
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: study.summary || COMPACT_CARD_ROW_FILLER }) })
4780
3078
  ] })
4781
3079
  ] });
4782
3080
  }
4783
- if (size2 === "menu") {
4784
- const preview = caseStudyHighlight(study);
4785
- const videoUrl = _nullishCoalesce(_optionalChain([preview, 'optionalAccess', _169 => _169.url]), () => ( null));
4786
- const hasAnyVideo = !!(videoUrl || study.main_video_url);
4787
- const poster = study.main_video_thumbnail || study.featured_image || _optionalChain([preview, 'optionalAccess', _170 => _170.posterUrl]) || null;
4788
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4789
- _chunkLLRGR4I5cjs.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: _chunk3ATAYP36cjs.cn.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
4821
- (_nullishCoalesce(poster, () => ( placeholderUrl))) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4822
- _chunkMGHIV4L6cjs.next_image_default,
4823
- {
4824
- src: _nullishCoalesce(_nullishCoalesce(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__ */ _jsxruntime.jsx.call(void 0, CardHoverPlay, { size: "md" })
4834
- ] }) }),
4835
- _optionalChain([study, 'access', _171 => _171.msp, 'optionalAccess', _172 => _172.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-xsf)] text-ods-text-secondary text-h6", children: [
4836
- study.msp.icon_url && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
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__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 truncate", children: study.msp.name })
4845
- ] }),
4846
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "line-clamp-2 text-h6", children: study.title }),
4847
- _optionalChain([study, 'access', _173 => _173.user, 'optionalAccess', _174 => _174.full_name]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0, "span", { className: "mt-auto text-ods-accent text-h6", children: hasAnyVideo ? "Watch the story" : "Read the story" })
4849
- ]
4850
- }
4851
- );
4852
- }
4853
3081
  if (size2 === "portrait") {
4854
3082
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4855
3083
  EntityPortraitCard,
@@ -4860,13 +3088,13 @@ function CaseStudyCard({
4860
3088
  typeLabel: showTypeBadge ? "Case Study" : void 0,
4861
3089
  imageUrl: study.featured_image,
4862
3090
  placeholderUrl,
4863
- imageAlt: _optionalChain([study, 'access', _175 => _175.msp, 'optionalAccess', _176 => _176.name]) || study.title,
3091
+ imageAlt: _optionalChain([study, 'access', _64 => _64.msp, 'optionalAccess', _65 => _65.name]) || study.title,
4864
3092
  title: study.title,
4865
3093
  person: {
4866
- name: _optionalChain([study, 'access', _177 => _177.user, 'optionalAccess', _178 => _178.full_name]) || "Anonymous",
4867
- avatarUrl: _optionalChain([study, 'access', _179 => _179.user, 'optionalAccess', _180 => _180.avatar_url]),
4868
- subtitle: _nullishCoalesce(_optionalChain([study, 'access', _181 => _181.msp, 'optionalAccess', _182 => _182.name]), () => ( null)),
4869
- iconOverlayUrl: _nullishCoalesce(_optionalChain([study, 'access', _183 => _183.msp, 'optionalAccess', _184 => _184.icon_url]), () => ( null))
3094
+ name: _optionalChain([study, 'access', _66 => _66.user, 'optionalAccess', _67 => _67.full_name]) || "Anonymous",
3095
+ avatarUrl: _optionalChain([study, 'access', _68 => _68.user, 'optionalAccess', _69 => _69.avatar_url]),
3096
+ subtitle: _nullishCoalesce(_optionalChain([study, 'access', _70 => _70.msp, 'optionalAccess', _71 => _71.name]), () => ( null)),
3097
+ iconOverlayUrl: _nullishCoalesce(_optionalChain([study, 'access', _72 => _72.msp, 'optionalAccess', _73 => _73.icon_url]), () => ( null))
4870
3098
  },
4871
3099
  className
4872
3100
  }
@@ -4877,7 +3105,7 @@ function CaseStudyCard({
4877
3105
  _chunkMGHIV4L6cjs.next_image_default,
4878
3106
  {
4879
3107
  src: coverImage,
4880
- alt: _optionalChain([study, 'access', _185 => _185.msp, 'optionalAccess', _186 => _186.name]) || study.title,
3108
+ alt: _optionalChain([study, 'access', _74 => _74.msp, 'optionalAccess', _75 => _75.name]) || study.title,
4881
3109
  className: "h-full w-full object-cover",
4882
3110
  sizes: "(min-width: 1545px) 515px, (min-width: 1280px) 33vw, (min-width: 800px) 50vw, 100vw",
4883
3111
  fill: true,
@@ -4888,18 +3116,18 @@ function CaseStudyCard({
4888
3116
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[72px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 break-words text-ods-text-primary text-h4", children: study.title }) }),
4889
3117
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full min-w-0 items-center gap-3", children: [
4890
3118
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
4891
- _optionalChain([study, 'access', _187 => _187.user, 'optionalAccess', _188 => _188.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3119
+ _optionalChain([study, 'access', _76 => _76.user, 'optionalAccess', _77 => _77.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4892
3120
  _chunkMGHIV4L6cjs.next_image_default,
4893
3121
  {
4894
3122
  src: study.user.avatar_url,
4895
- alt: _optionalChain([study, 'access', _189 => _189.user, 'optionalAccess', _190 => _190.full_name]) || "User",
3123
+ alt: _optionalChain([study, 'access', _78 => _78.user, 'optionalAccess', _79 => _79.full_name]) || "User",
4896
3124
  className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
4897
3125
  width: 48,
4898
3126
  height: 48,
4899
3127
  unoptimized: true
4900
3128
  }
4901
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([study, 'access', _191 => _191.user, 'optionalAccess', _192 => _192.full_name]) || "A").charAt(0).toUpperCase() }) }),
4902
- _optionalChain([study, 'access', _193 => _193.msp, 'optionalAccess', _194 => _194.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
3129
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([study, 'access', _80 => _80.user, 'optionalAccess', _81 => _81.full_name]) || "A").charAt(0).toUpperCase() }) }),
3130
+ _optionalChain([study, 'access', _82 => _82.msp, 'optionalAccess', _83 => _83.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
4903
3131
  _chunkMGHIV4L6cjs.next_image_default,
4904
3132
  {
4905
3133
  src: study.msp.icon_url,
@@ -4913,13 +3141,13 @@ function CaseStudyCard({
4913
3141
  ] }),
4914
3142
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
4915
3143
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
4916
- _optionalChain([study, 'access', _195 => _195.user, 'optionalAccess', _196 => _196.full_name]) || "Anonymous",
4917
- _optionalChain([study, 'access', _197 => _197.msp, 'optionalAccess', _198 => _198.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
3144
+ _optionalChain([study, 'access', _84 => _84.user, 'optionalAccess', _85 => _85.full_name]) || "Anonymous",
3145
+ _optionalChain([study, 'access', _86 => _86.msp, 'optionalAccess', _87 => _87.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
4918
3146
  " \u2022 ",
4919
3147
  study.msp.name
4920
3148
  ] })
4921
3149
  ] }),
4922
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([study, 'access', _199 => _199.user, 'optionalAccess', _200 => _200.job_title]) || "\xA0" })
3150
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([study, 'access', _88 => _88.user, 'optionalAccess', _89 => _89.job_title]) || "\xA0" })
4923
3151
  ] })
4924
3152
  ] }) })
4925
3153
  ] }) });
@@ -5001,7 +3229,7 @@ function CustomerInterviewCard({
5001
3229
  ] }),
5002
3230
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
5003
3231
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE, children: interview.title }) }),
5004
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _201 => _201.user, 'optionalAccess', _202 => _202.full_name]), _optionalChain([interview, 'access', _203 => _203.msp, 'optionalAccess', _204 => _204.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
3232
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUBTITLE, children: [_optionalChain([interview, 'access', _90 => _90.user, 'optionalAccess', _91 => _91.full_name]), _optionalChain([interview, 'access', _92 => _92.msp, 'optionalAccess', _93 => _93.name])].filter(Boolean).join(" \xB7 ") || "Customer interview" }) }),
5005
3233
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SUMMARY, children: interview.video_summary || COMPACT_CARD_ROW_FILLER }) })
5006
3234
  ] })
5007
3235
  ] });
@@ -5019,10 +3247,10 @@ function CustomerInterviewCard({
5019
3247
  imageAlt: interview.title,
5020
3248
  title: interview.title,
5021
3249
  person: {
5022
- name: _optionalChain([interview, 'access', _205 => _205.user, 'optionalAccess', _206 => _206.full_name]) || "Customer",
5023
- avatarUrl: _optionalChain([interview, 'access', _207 => _207.user, 'optionalAccess', _208 => _208.avatar_url]),
5024
- subtitle: _nullishCoalesce(_optionalChain([interview, 'access', _209 => _209.msp, 'optionalAccess', _210 => _210.name]), () => ( null)),
5025
- iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access', _211 => _211.msp, 'optionalAccess', _212 => _212.icon_url]), () => ( null))
3250
+ name: _optionalChain([interview, 'access', _94 => _94.user, 'optionalAccess', _95 => _95.full_name]) || "Customer",
3251
+ avatarUrl: _optionalChain([interview, 'access', _96 => _96.user, 'optionalAccess', _97 => _97.avatar_url]),
3252
+ subtitle: _nullishCoalesce(_optionalChain([interview, 'access', _98 => _98.msp, 'optionalAccess', _99 => _99.name]), () => ( null)),
3253
+ iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access', _100 => _100.msp, 'optionalAccess', _101 => _101.icon_url]), () => ( null))
5026
3254
  },
5027
3255
  className
5028
3256
  }
@@ -5048,18 +3276,18 @@ function CustomerInterviewCard({
5048
3276
  interview.video_summary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "line-clamp-3 text-ods-text-secondary text-h6", children: interview.video_summary }) }),
5049
3277
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-auto flex h-[60px] shrink-0 items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full min-w-0 items-center gap-3", children: [
5050
3278
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
5051
- _optionalChain([interview, 'access', _213 => _213.user, 'optionalAccess', _214 => _214.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3279
+ _optionalChain([interview, 'access', _102 => _102.user, 'optionalAccess', _103 => _103.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5052
3280
  _chunkMGHIV4L6cjs.next_image_default,
5053
3281
  {
5054
3282
  src: interview.user.avatar_url,
5055
- alt: _optionalChain([interview, 'access', _215 => _215.user, 'optionalAccess', _216 => _216.full_name]) || "Customer",
3283
+ alt: _optionalChain([interview, 'access', _104 => _104.user, 'optionalAccess', _105 => _105.full_name]) || "Customer",
5056
3284
  className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
5057
3285
  width: 48,
5058
3286
  height: 48,
5059
3287
  unoptimized: true
5060
3288
  }
5061
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([interview, 'access', _217 => _217.user, 'optionalAccess', _218 => _218.full_name]) || "A").charAt(0).toUpperCase() }) }),
5062
- _optionalChain([interview, 'access', _219 => _219.msp, 'optionalAccess', _220 => _220.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
3289
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-full border border-ods-border bg-ods-bg", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h4", children: (_optionalChain([interview, 'access', _106 => _106.user, 'optionalAccess', _107 => _107.full_name]) || "A").charAt(0).toUpperCase() }) }),
3290
+ _optionalChain([interview, 'access', _108 => _108.msp, 'optionalAccess', _109 => _109.icon_url]) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "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__ */ _jsxruntime.jsx.call(void 0,
5063
3291
  _chunkMGHIV4L6cjs.next_image_default,
5064
3292
  {
5065
3293
  src: interview.msp.icon_url,
@@ -5073,13 +3301,13 @@ function CustomerInterviewCard({
5073
3301
  ] }),
5074
3302
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
5075
3303
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
5076
- _optionalChain([interview, 'access', _221 => _221.user, 'optionalAccess', _222 => _222.full_name]) || "Anonymous",
5077
- _optionalChain([interview, 'access', _223 => _223.msp, 'optionalAccess', _224 => _224.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
3304
+ _optionalChain([interview, 'access', _110 => _110.user, 'optionalAccess', _111 => _111.full_name]) || "Anonymous",
3305
+ _optionalChain([interview, 'access', _112 => _112.msp, 'optionalAccess', _113 => _113.name]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "text-ods-text-secondary", children: [
5078
3306
  " \u2022 ",
5079
3307
  interview.msp.name
5080
3308
  ] })
5081
3309
  ] }),
5082
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([interview, 'access', _225 => _225.user, 'optionalAccess', _226 => _226.job_title]) || " " })
3310
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([interview, 'access', _114 => _114.user, 'optionalAccess', _115 => _115.job_title]) || " " })
5083
3311
  ] })
5084
3312
  ] }) })
5085
3313
  ] }) });
@@ -5088,7 +3316,7 @@ function CustomerInterviewCard({
5088
3316
  // src/components/chat/types/entities/investor-update.ts
5089
3317
  function formatInvestorUpdatePeriod(start, end, options) {
5090
3318
  if (!start && !end) return "";
5091
- const fmt = (d) => formatDateWithTimezone(d, null, _optionalChain([options, 'optionalAccess', _227 => _227.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
3319
+ const fmt = (d) => formatDateWithTimezone(d, null, _optionalChain([options, 'optionalAccess', _116 => _116.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
5092
3320
  const s = start ? fmt(start) : "?";
5093
3321
  const e = end ? fmt(end) : "?";
5094
3322
  return `${s} - ${e}`;
@@ -5199,7 +3427,7 @@ function InvestorUpdateCard({
5199
3427
  imageUrl: update.featured_image,
5200
3428
  placeholderUrl,
5201
3429
  title: update.title || `Update #${update.update_number || "?"}`,
5202
- summary: _optionalChain([update, 'access', _228 => _228.strategic_update, 'optionalAccess', _229 => _229.slice, 'call', _230 => _230(0, 120)]) || _optionalChain([update, 'access', _231 => _231.content, 'optionalAccess', _232 => _232.slice, 'call', _233 => _233(0, 120)]) || "No description",
3430
+ summary: _optionalChain([update, 'access', _117 => _117.strategic_update, 'optionalAccess', _118 => _118.slice, 'call', _119 => _119(0, 120)]) || _optionalChain([update, 'access', _120 => _120.content, 'optionalAccess', _121 => _121.slice, 'call', _122 => _122(0, 120)]) || "No description",
5203
3431
  badges: update.update_number ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "rounded bg-ods-accent/10 px-2 py-0.5 text-xs font-medium text-ods-accent", children: [
5204
3432
  "#",
5205
3433
  update.update_number
@@ -5401,7 +3629,7 @@ function OnboardingGuideCard({
5401
3629
  const compactCover = coverImage || placeholderUrl || null;
5402
3630
  const hasVideoCover = !guide.featured_image && !!guide.main_video_thumbnail;
5403
3631
  const summary2 = stripMarkdownPreview(guide.video_summary || guide.content || "");
5404
- const author = _optionalChain([guide, 'access', _234 => _234.author, 'optionalAccess', _235 => _235.full_name, 'optionalAccess', _236 => _236.trim, 'call', _237 => _237()]) || "";
3632
+ const author = _optionalChain([guide, 'access', _123 => _123.author, 'optionalAccess', _124 => _124.full_name, 'optionalAccess', _125 => _125.trim, 'call', _126 => _126()]) || "";
5405
3633
  const subtitleParts = [`Step ${guide.step_order}`, guide.section, author].filter(
5406
3634
  (s) => typeof s === "string" && s.length > 0
5407
3635
  );
@@ -5455,7 +3683,7 @@ function OnboardingGuideCard({
5455
3683
 
5456
3684
  // src/components/chat/utils/agent-status-message.ts
5457
3685
  function getStatusColorScheme(status) {
5458
- const s = _optionalChain([status, 'optionalAccess', _238 => _238.toLowerCase, 'call', _239 => _239()]) || "";
3686
+ const s = _optionalChain([status, 'optionalAccess', _127 => _127.toLowerCase, 'call', _128 => _128()]) || "";
5459
3687
  switch (status) {
5460
3688
  case "completed":
5461
3689
  case "success":
@@ -5549,7 +3777,7 @@ function RoadmapVoteButton({
5549
3777
  color,
5550
3778
  className
5551
3779
  }) {
5552
- const Icon = voteType === "up" ? _chunkLLSUVPQCcjs.ThumbsUpIcon : _chunkLLSUVPQCcjs.ThumbsDownIcon;
3780
+ const Icon = voteType === "up" ? _chunkQZVSJF2Kcjs.ThumbsUpIcon : _chunkQZVSJF2Kcjs.ThumbsDownIcon;
5553
3781
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
5554
3782
  _chunkDFQYAYBHcjs.Button,
5555
3783
  {
@@ -5706,7 +3934,7 @@ function RoadmapCard({
5706
3934
  const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
5707
3935
  const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
5708
3936
  const hasFigma = !!item.figmaUrl;
5709
- const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _240 => _240.screenshots, 'optionalAccess', _241 => _241.length]), () => ( 0))) > 0;
3937
+ const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _129 => _129.screenshots, 'optionalAccess', _130 => _130.length]), () => ( 0))) > 0;
5710
3938
  const typeLabel = getTaskTypeLabel(item.customItemId);
5711
3939
  const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
5712
3940
  const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
@@ -5725,7 +3953,7 @@ function RoadmapCard({
5725
3953
  unoptimized: true,
5726
3954
  className: "h-8 w-8 object-contain"
5727
3955
  }
5728
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "uppercase text-ods-text-secondary text-h6", children: _optionalChain([item, 'access', _242 => _242.title, 'optionalAccess', _243 => _243.substring, 'call', _244 => _244(0, 2)]) || "??" })
3956
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "uppercase text-ods-text-secondary text-h6", children: _optionalChain([item, 'access', _131 => _131.title, 'optionalAccess', _132 => _132.substring, 'call', _133 => _133(0, 2)]) || "??" })
5729
3957
  }
5730
3958
  ),
5731
3959
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
@@ -5766,14 +3994,14 @@ function RoadmapCard({
5766
3994
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _nullishCoalesce(item.downvotes, () => ( 0)) })
5767
3995
  ] })
5768
3996
  ] }) : null,
5769
- hasFigma ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "hidden shrink-0 items-center sm:flex", title: "Has Figma prototype", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.FigmaIcon, { className: "h-3 w-3" }) }) : null,
3997
+ hasFigma ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "hidden shrink-0 items-center sm:flex", title: "Has Figma prototype", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.FigmaIcon, { className: "h-3 w-3" }) }) : null,
5770
3998
  hasScreenshots ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
5771
3999
  "span",
5772
4000
  {
5773
4001
  className: "hidden shrink-0 items-center gap-0.5 text-h6 sm:flex",
5774
4002
  title: `${item.screenshots.length} screenshot${item.screenshots.length === 1 ? "" : "s"}`,
5775
4003
  children: [
5776
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.ImageIcon, { className: "h-3 w-3" }),
4004
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.ImageIcon, { className: "h-3 w-3" }),
5777
4005
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: item.screenshots.length })
5778
4006
  ]
5779
4007
  }
@@ -5809,7 +4037,7 @@ function RoadmapCard({
5809
4037
  unoptimized: true,
5810
4038
  className: "object-contain p-1"
5811
4039
  }
5812
- ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _245 => _245.title, 'optionalAccess', _246 => _246.substring, 'call', _247 => _247(0, 2)]) || "??" }) }),
4040
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access', _134 => _134.title, 'optionalAccess', _135 => _135.substring, 'call', _136 => _136(0, 2)]) || "??" }) }),
5813
4041
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
5814
4042
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[48px] items-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "line-clamp-2 flex-1 text-ods-text-primary text-h3", children: item.title }) }),
5815
4043
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[20px] items-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h5", children: [
@@ -5872,7 +4100,7 @@ function RoadmapCard({
5872
4100
  variant: "outline",
5873
4101
  size: "small-legacy",
5874
4102
  onClick: () => setShowScreenshots(true),
5875
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.ImageIcon, { className: "h-5 w-5" })
4103
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.ImageIcon, { className: "h-5 w-5" })
5876
4104
  }
5877
4105
  ),
5878
4106
  (() => {
@@ -5884,7 +4112,7 @@ function RoadmapCard({
5884
4112
  size: "small-legacy",
5885
4113
  openInNewTab: true,
5886
4114
  href: figmaSafe,
5887
- leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.FigmaIcon, { className: "h-5 w-5" })
4115
+ leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQZVSJF2Kcjs.FigmaIcon, { className: "h-5 w-5" })
5888
4116
  }
5889
4117
  ) : null;
5890
4118
  })(),
@@ -5910,10 +4138,10 @@ var MEDIA_TYPE = {
5910
4138
  VIDEO: "video"
5911
4139
  };
5912
4140
  function isVideoMedia(media) {
5913
- return _optionalChain([media, 'optionalAccess', _248 => _248.media_type]) === MEDIA_TYPE.VIDEO;
4141
+ return _optionalChain([media, 'optionalAccess', _137 => _137.media_type]) === MEDIA_TYPE.VIDEO;
5914
4142
  }
5915
4143
  function isImageMedia(media) {
5916
- return _optionalChain([media, 'optionalAccess', _249 => _249.media_type]) === MEDIA_TYPE.IMAGE;
4144
+ return _optionalChain([media, 'optionalAccess', _138 => _138.media_type]) === MEDIA_TYPE.IMAGE;
5917
4145
  }
5918
4146
  function isPublishableMediaType(mediaType) {
5919
4147
  return mediaType === MEDIA_TYPE.VIDEO || mediaType === MEDIA_TYPE.IMAGE;
@@ -6013,7 +4241,7 @@ function programItemToStripProfile(item) {
6013
4241
  const fromAuthor = toStripProfile(item.author);
6014
4242
  if (fromAuthor) return fromAuthor;
6015
4243
  const host = Array.isArray(item.hosts) ? item.hosts[0] : null;
6016
- if (!_optionalChain([host, 'optionalAccess', _250 => _250.name])) return null;
4244
+ if (!_optionalChain([host, 'optionalAccess', _139 => _139.name])) return null;
6017
4245
  return toStripProfile({ full_name: host.name, avatar_url: _nullishCoalesce(host.avatar_url, () => ( null)) });
6018
4246
  }
6019
4247
 
@@ -6189,10 +4417,10 @@ function ProgramEditorialCard({
6189
4417
  playable,
6190
4418
  className
6191
4419
  }) {
6192
- const edgeColor = _chunkLM7TXMLUcjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
4420
+ const edgeColor = _chunkRKV5B7EUcjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
6193
4421
  const meta = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: EDITORIAL_META_ROW, children: [
6194
4422
  date && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-flamingo-pink", children: date }),
6195
- [typeMeta, feature ? null : _optionalChain([profile, 'optionalAccess', _251 => _251.name])].filter((part) => !!part).map((part) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-s)] text-ods-text-secondary", children: [
4423
+ [typeMeta, feature ? null : _optionalChain([profile, 'optionalAccess', _140 => _140.name])].filter((part) => !!part).map((part) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex items-center gap-[var(--spacing-system-s)] text-ods-text-secondary", children: [
6196
4424
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
6197
4425
  part
6198
4426
  ] }, part))
@@ -6366,7 +4594,7 @@ function ProgramCard({
6366
4594
  const itemDate = compactDate;
6367
4595
  const compactCover = coverImage || placeholderUrl || null;
6368
4596
  const typeMeta = compactTypeMetaValue;
6369
- const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _252 => _252.labels, 'optionalAccess', _253 => _253.singular])].filter(
4597
+ const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _141 => _141.labels, 'optionalAccess', _142 => _142.singular])].filter(
6370
4598
  (s) => typeof s === "string" && s.length > 0
6371
4599
  );
6372
4600
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "a", { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className), children: [
@@ -6916,25 +5144,4 @@ function buildListUrl(contentRefType, ids, base = "") {
6916
5144
 
6917
5145
 
6918
5146
 
6919
-
6920
-
6921
-
6922
-
6923
-
6924
-
6925
-
6926
-
6927
-
6928
-
6929
-
6930
-
6931
-
6932
-
6933
-
6934
-
6935
-
6936
-
6937
-
6938
-
6939
-
6940
- exports.FloatingTooltip = FloatingTooltip; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.VENDOR_CLASSIFICATIONS = VENDOR_CLASSIFICATIONS; exports.OPENFRAME_CLASSIFICATIONS = OPENFRAME_CLASSIFICATIONS; exports.isVendorClassification = isVendorClassification; exports.isOpenFrameClassification = isOpenFrameClassification; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatFileSize = formatFileSize; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.nameInitials = nameInitials; exports.personInitials = personInitials; exports.personFirstName = personFirstName; exports.singleInitial = singleInitial; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.VIEWER_TIMEZONE = VIEWER_TIMEZONE; exports.formatDateWithTimezone = formatDateWithTimezone; exports.formatDateTimeYmd = formatDateTimeYmd; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatProgramDate = formatProgramDate; exports.formatProgramDateRange = formatProgramDateRange; exports.isOrderedRange = isOrderedRange; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.titleCaseFromSlug = titleCaseFromSlug; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.formatProgramTimeRange = formatProgramTimeRange; exports.formatWebinarTimeMeta = formatWebinarTimeMeta; exports.SquareAvatar = SquareAvatar; exports.InteractiveCard = InteractiveCard; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.ImageGalleryModal = ImageGalleryModal; exports.fetchPriorityProp = fetchPriorityProp; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.saveDataEnabled = saveDataEnabled; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.VideoPlayBadge = VideoPlayBadge; exports.CardHoverPlay = CardHoverPlay; exports.VideoUnmuteGlyph = VideoUnmuteGlyph; exports.extractYouTubeId = extractYouTubeId; exports.VIDEO_PLAYBACK_FAILED_EVENT = VIDEO_PLAYBACK_FAILED_EVENT; exports.Video = Video; exports.statusBadgeVariants = statusBadgeVariants; exports.genBadgeBgOpacity = genBadgeBgOpacity; exports.generationTierFromLabel = generationTierFromLabel; exports.StatusBadge = StatusBadge; exports.BADGE_PALETTE = BADGE_PALETTE; exports.isBadgePaletteKey = isBadgePaletteKey; exports.pickBadgePaletteColor = pickBadgePaletteColor; exports.PaletteBadge = PaletteBadge; exports.DepartmentBadge = DepartmentBadge; exports.AvatarStack = AvatarStack; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.ICON_ALIASES = ICON_ALIASES; exports.brandLogoForName = brandLogoForName; exports.resolveIcon = resolveIcon; exports.ICON_OPTIONS = ICON_OPTIONS; exports.FAE_AVATAR_DATA_URI = FAE_AVATAR_DATA_URI; exports.AgentMark = AgentMark; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.skipsImageOptimizer = skipsImageOptimizer; exports.EntityIcon = EntityIcon; exports.escapeRegExp = escapeRegExp; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.isSameOriginAbsoluteHref = isSameOriginAbsoluteHref; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.CONTENT_CARD_FRAME_CLASS = CONTENT_CARD_FRAME_CLASS; exports.CONTENT_CARD_SKELETON_FRAME_CLASS = CONTENT_CARD_SKELETON_FRAME_CLASS; exports.ContentCardFrame = ContentCardFrame; exports.useCoverImageFallback = useCoverImageFallback; exports.hideOnError = hideOnError; exports.EntityPortraitCard = EntityPortraitCard; exports.FlamingoLogo = FlamingoLogo2; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.ADMIN_CONTENT_CARD_GRID_CLASS = ADMIN_CONTENT_CARD_GRID_CLASS; exports.AdminContentCardSkeleton = AdminContentCardSkeleton; exports.AdminContentCardGrid = AdminContentCardGrid; exports.getProxiedImageUrl2 = getProxiedImageUrl2; exports.EmployeeEntryBadge = EmployeeEntryBadge; exports.EmployeeEntryCard = EmployeeEntryCard; exports.EmployeeEntryCardSkeleton = EmployeeEntryCardSkeleton; exports.WhatIShippedCard = WhatIShippedCard; exports.WhatIShippedCardSkeleton = WhatIShippedCardSkeleton; exports.HowIWorkCard = HowIWorkCard; exports.HowIWorkCardSkeleton = HowIWorkCardSkeleton; exports.AiPromptCard = AiPromptCard; exports.AiPromptCardSkeleton = AiPromptCardSkeleton; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.headingAccentClass = headingAccentClass; exports.accentSentenceMarks = accentSentenceMarks; exports.SectionHeading = SectionHeading; exports.DEFAULT_VIDEO_BITES_TITLE = DEFAULT_VIDEO_BITES_TITLE; exports.toStripProfile = toStripProfile; exports.sortBitesByCreatedAtDesc = sortBitesByCreatedAtDesc; exports.sortBitesByFeaturedAtDesc = sortBitesByFeaturedAtDesc; exports.VideoHoverPreviewSurface = VideoHoverPreviewSurface; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor; exports.resolveReleaseCover = resolveReleaseCover; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.UNSAFE_URL_CHARS = UNSAFE_URL_CHARS; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.useEntityCardLink = useEntityCardLink; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.getStatusColorScheme = getStatusColorScheme; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.RoadmapVoteButton = RoadmapVoteButton; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.MEDIA_TYPE = MEDIA_TYPE; exports.isVideoMedia = isVideoMedia; exports.isImageMedia = isImageMedia; exports.isPublishableMediaType = isPublishableMediaType; exports.partitionMediaByType = partitionMediaByType; exports.IMAGE_FILE_ACCEPT = IMAGE_FILE_ACCEPT; exports.MEDIA_FILE_ACCEPT = MEDIA_FILE_ACCEPT; exports.fileMediaType = fileMediaType; exports.mediaNameKey = mediaNameKey; exports.fileContentKey = fileContentKey; exports.programStr = programStr; exports.programDateInstant = programDateInstant; exports.webinarTiming = webinarTiming; exports.programMetaLine = programMetaLine; exports.eventAudience = eventAudience; exports.programMetaFormatters = programMetaFormatters; exports.PROGRAM_META_RENDERERS = PROGRAM_META_RENDERERS; exports.programItemToStripProfile = programItemToStripProfile; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.TRUST_FRAMEWORK_MONITORING = TRUST_FRAMEWORK_MONITORING; exports.trustFrameworkMonitoringEntry = trustFrameworkMonitoringEntry; exports.trustFrameworkBadge = trustFrameworkBadge; exports.TRUST_CENTER_SECTIONS = TRUST_CENTER_SECTIONS; exports.TRUST_CENTER_TITLE = TRUST_CENTER_TITLE; exports.TRUST_CENTER_TAGLINE = TRUST_CENTER_TAGLINE; exports.TRUST_CENTER_API_PATH = TRUST_CENTER_API_PATH; exports.TRUST_CENTER_CACHE_SECONDS = TRUST_CENTER_CACHE_SECONDS; exports.TRUST_CENTER_DOCUMENT_CACHE_SECONDS = TRUST_CENTER_DOCUMENT_CACHE_SECONDS; exports.TRUST_CENTER_CARD_ID = TRUST_CENTER_CARD_ID; exports.TRUST_CENTER_DOCUMENT_TYPE = TRUST_CENTER_DOCUMENT_TYPE; exports.TRUST_CENTER_PAGE_PATH = TRUST_CENTER_PAGE_PATH; exports.isTrustCenterMonitored = isTrustCenterMonitored; exports.trustFrameworksSummary = trustFrameworksSummary; exports.trustCenterDocumentUrl = trustCenterDocumentUrl; exports.TRUST_CENTER_SEARCH_PARAM = TRUST_CENTER_SEARCH_PARAM; exports.TRUST_CENTER_SEARCH_MAX_CHARS = TRUST_CENTER_SEARCH_MAX_CHARS; exports.TRUST_CENTER_SEARCH_DEBOUNCE_MS = TRUST_CENTER_SEARCH_DEBOUNCE_MS; exports.TRUST_CENTER_DOMAIN_PARAM = TRUST_CENTER_DOMAIN_PARAM; exports.normalizeTrustControlQuery = normalizeTrustControlQuery; exports.trustControlQueryMatcher = trustControlQueryMatcher; exports.filterTrustControlDomains = filterTrustControlDomains; exports.trustCenterControlsUrl = trustCenterControlsUrl; exports.extractItems = extractItems; exports.extractItemId = extractItemId; exports.extractCardItems = extractCardItems; exports.canonicalContentRefType = canonicalContentRefType; exports.buildListUrl = buildListUrl;
5147
+ exports.FloatingTooltip = FloatingTooltip; exports.tagVariants = tagVariants; exports.Tag = Tag; exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.VENDOR_CLASSIFICATIONS = VENDOR_CLASSIFICATIONS; exports.OPENFRAME_CLASSIFICATIONS = OPENFRAME_CLASSIFICATIONS; exports.isVendorClassification = isVendorClassification; exports.isOpenFrameClassification = isOpenFrameClassification; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatFileSize = formatFileSize; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.nameInitials = nameInitials; exports.personInitials = personInitials; exports.personFirstName = personFirstName; exports.singleInitial = singleInitial; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.VIEWER_TIMEZONE = VIEWER_TIMEZONE; exports.formatDateWithTimezone = formatDateWithTimezone; exports.formatDateTimeYmd = formatDateTimeYmd; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatProgramDate = formatProgramDate; exports.formatProgramDateRange = formatProgramDateRange; exports.isOrderedRange = isOrderedRange; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.formatEntryMonthUTC = formatEntryMonthUTC; exports.formatLegalDate = formatLegalDate; exports.formatCurrency = formatCurrency; exports.formatPercent = formatPercent; exports.formatWholeDollars = formatWholeDollars; exports.formatCompactMetric = formatCompactMetric; exports.getTrendColors = getTrendColors; exports.formatDateRange = formatDateRange; exports.formatDateTimeAt = formatDateTimeAt; exports.formatDurationFromMs = formatDurationFromMs; exports.formatDuration = formatDuration; exports.titleCaseFromSlug = titleCaseFromSlug; exports.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.formatProgramTimeRange = formatProgramTimeRange; exports.formatWebinarTimeMeta = formatWebinarTimeMeta; exports.SquareAvatar = SquareAvatar; exports.InteractiveCard = InteractiveCard; exports.Modal = Modal; exports.ModalContent = ModalContent; exports.ModalHeader = ModalHeader; exports.ModalTitle = ModalTitle; exports.ModalFooter = ModalFooter; exports.ImageGalleryModal = ImageGalleryModal; exports.VideoPlayBadge = VideoPlayBadge; exports.CardHoverPlay = CardHoverPlay; exports.VideoUnmuteGlyph = VideoUnmuteGlyph; exports.statusBadgeVariants = statusBadgeVariants; exports.genBadgeBgOpacity = genBadgeBgOpacity; exports.generationTierFromLabel = generationTierFromLabel; exports.StatusBadge = StatusBadge; exports.BADGE_PALETTE = BADGE_PALETTE; exports.isBadgePaletteKey = isBadgePaletteKey; exports.pickBadgePaletteColor = pickBadgePaletteColor; exports.PaletteBadge = PaletteBadge; exports.DepartmentBadge = DepartmentBadge; exports.AvatarStack = AvatarStack; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.skipsImageOptimizer = skipsImageOptimizer; exports.escapeRegExp = escapeRegExp; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.isSameOriginAbsoluteHref = isSameOriginAbsoluteHref; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.CONTENT_CARD_FRAME_CLASS = CONTENT_CARD_FRAME_CLASS; exports.CONTENT_CARD_SKELETON_FRAME_CLASS = CONTENT_CARD_SKELETON_FRAME_CLASS; exports.ContentCardFrame = ContentCardFrame; exports.useCoverImageFallback = useCoverImageFallback; exports.hideOnError = hideOnError; exports.EntityPortraitCard = EntityPortraitCard; exports.FlamingoLogo = FlamingoLogo; exports.PlatformBadge = PlatformBadge; exports.AdminContentCard = AdminContentCard; exports.ADMIN_CONTENT_CARD_GRID_CLASS = ADMIN_CONTENT_CARD_GRID_CLASS; exports.AdminContentCardSkeleton = AdminContentCardSkeleton; exports.AdminContentCardGrid = AdminContentCardGrid; exports.getProxiedImageUrl2 = getProxiedImageUrl2; exports.EmployeeEntryBadge = EmployeeEntryBadge; exports.EmployeeEntryCard = EmployeeEntryCard; exports.EmployeeEntryCardSkeleton = EmployeeEntryCardSkeleton; exports.WhatIShippedCard = WhatIShippedCard; exports.WhatIShippedCardSkeleton = WhatIShippedCardSkeleton; exports.HowIWorkCard = HowIWorkCard; exports.HowIWorkCardSkeleton = HowIWorkCardSkeleton; exports.AiPromptCard = AiPromptCard; exports.AiPromptCardSkeleton = AiPromptCardSkeleton; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.headingAccentClass = headingAccentClass; exports.accentSentenceMarks = accentSentenceMarks; exports.SectionHeading = SectionHeading; exports.DEFAULT_VIDEO_BITES_TITLE = DEFAULT_VIDEO_BITES_TITLE; exports.toStripProfile = toStripProfile; exports.sortBitesByCreatedAtDesc = sortBitesByCreatedAtDesc; exports.sortBitesByFeaturedAtDesc = sortBitesByFeaturedAtDesc; exports.ProductReleaseCard = ProductReleaseCard; exports.ProductReleaseCardSkeleton = ProductReleaseCardSkeleton; exports.formatReleaseDate = formatReleaseDate; exports.formatDateShort = formatDateShort; exports.formatDateSlashUTC = formatDateSlashUTC; exports.releaseTypeToBadgeColor = releaseTypeToBadgeColor; exports.resolveReleaseCover = resolveReleaseCover; exports.defaultBuildProductReleaseCardProps = defaultBuildProductReleaseCardProps; exports.buildProductReleaseCardProps = buildProductReleaseCardProps; exports.UNSAFE_URL_CHARS = UNSAFE_URL_CHARS; exports.COMPACT_CARD_OUTER = COMPACT_CARD_OUTER; exports.COMPACT_CARD_OUTER_STATIC = COMPACT_CARD_OUTER_STATIC; exports.COMPACT_CARD_SKELETON_OUTER = COMPACT_CARD_SKELETON_OUTER; exports.COMPACT_CARD_IMAGE_SLOT = COMPACT_CARD_IMAGE_SLOT; exports.COMPACT_CARD_SKELETON_IMAGE_SLOT = COMPACT_CARD_SKELETON_IMAGE_SLOT; exports.COMPACT_CARD_ICON_SLOT = COMPACT_CARD_ICON_SLOT; exports.COMPACT_CARD_TEXT_COL = COMPACT_CARD_TEXT_COL; exports.COMPACT_CARD_TITLE_ROW = COMPACT_CARD_TITLE_ROW; exports.COMPACT_CARD_META_ROW_BOX = COMPACT_CARD_META_ROW_BOX; exports.COMPACT_CARD_TITLE = COMPACT_CARD_TITLE; exports.COMPACT_CARD_SUBTITLE = COMPACT_CARD_SUBTITLE; exports.COMPACT_CARD_SUMMARY = COMPACT_CARD_SUMMARY; exports.COMPACT_CARD_META_ROW = COMPACT_CARD_META_ROW; exports.COMPACT_CARD_ROW_FILLER = COMPACT_CARD_ROW_FILLER; exports.safeHref = safeHref; exports.useEntityCardLink = useEntityCardLink; exports.BlogCardSkeleton = BlogCardSkeleton; exports.BlogCard = BlogCard; exports.CaseStudyCardSkeleton = CaseStudyCardSkeleton; exports.CaseStudyCard = CaseStudyCard; exports.CustomerInterviewCardSkeleton = CustomerInterviewCardSkeleton; exports.CustomerInterviewCard = CustomerInterviewCard; exports.formatInvestorUpdatePeriod = formatInvestorUpdatePeriod; exports.InvestorUpdateCardSkeleton = InvestorUpdateCardSkeleton; exports.InvestorUpdateCard = InvestorUpdateCard; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.getStatusColorScheme = getStatusColorScheme; exports.CUSTOM_ITEM_ID = CUSTOM_ITEM_ID; exports.getTaskTypeLabel = getTaskTypeLabel; exports.RoadmapVoteButton = RoadmapVoteButton; exports.TaskTypeIcon = TaskTypeIcon; exports.RoadmapCardSkeleton = RoadmapCardSkeleton; exports.RoadmapCard = RoadmapCard; exports.MEDIA_TYPE = MEDIA_TYPE; exports.isVideoMedia = isVideoMedia; exports.isImageMedia = isImageMedia; exports.isPublishableMediaType = isPublishableMediaType; exports.partitionMediaByType = partitionMediaByType; exports.IMAGE_FILE_ACCEPT = IMAGE_FILE_ACCEPT; exports.MEDIA_FILE_ACCEPT = MEDIA_FILE_ACCEPT; exports.fileMediaType = fileMediaType; exports.mediaNameKey = mediaNameKey; exports.fileContentKey = fileContentKey; exports.programStr = programStr; exports.programDateInstant = programDateInstant; exports.webinarTiming = webinarTiming; exports.programMetaLine = programMetaLine; exports.eventAudience = eventAudience; exports.programMetaFormatters = programMetaFormatters; exports.PROGRAM_META_RENDERERS = PROGRAM_META_RENDERERS; exports.programItemToStripProfile = programItemToStripProfile; exports.ProgramCardSkeleton = ProgramCardSkeleton; exports.ProgramCard = ProgramCard; exports.TRUST_FRAMEWORK_MONITORING = TRUST_FRAMEWORK_MONITORING; exports.trustFrameworkMonitoringEntry = trustFrameworkMonitoringEntry; exports.trustFrameworkBadge = trustFrameworkBadge; exports.TRUST_CENTER_SECTIONS = TRUST_CENTER_SECTIONS; exports.TRUST_CENTER_TITLE = TRUST_CENTER_TITLE; exports.TRUST_CENTER_TAGLINE = TRUST_CENTER_TAGLINE; exports.TRUST_CENTER_API_PATH = TRUST_CENTER_API_PATH; exports.TRUST_CENTER_CACHE_SECONDS = TRUST_CENTER_CACHE_SECONDS; exports.TRUST_CENTER_DOCUMENT_CACHE_SECONDS = TRUST_CENTER_DOCUMENT_CACHE_SECONDS; exports.TRUST_CENTER_CARD_ID = TRUST_CENTER_CARD_ID; exports.TRUST_CENTER_DOCUMENT_TYPE = TRUST_CENTER_DOCUMENT_TYPE; exports.TRUST_CENTER_PAGE_PATH = TRUST_CENTER_PAGE_PATH; exports.isTrustCenterMonitored = isTrustCenterMonitored; exports.trustFrameworksSummary = trustFrameworksSummary; exports.trustCenterDocumentUrl = trustCenterDocumentUrl; exports.TRUST_CENTER_SEARCH_PARAM = TRUST_CENTER_SEARCH_PARAM; exports.TRUST_CENTER_SEARCH_MAX_CHARS = TRUST_CENTER_SEARCH_MAX_CHARS; exports.TRUST_CENTER_SEARCH_DEBOUNCE_MS = TRUST_CENTER_SEARCH_DEBOUNCE_MS; exports.TRUST_CENTER_DOMAIN_PARAM = TRUST_CENTER_DOMAIN_PARAM; exports.normalizeTrustControlQuery = normalizeTrustControlQuery; exports.trustControlQueryMatcher = trustControlQueryMatcher; exports.filterTrustControlDomains = filterTrustControlDomains; exports.trustCenterControlsUrl = trustCenterControlsUrl; exports.extractItems = extractItems; exports.extractItemId = extractItemId; exports.extractCardItems = extractCardItems; exports.canonicalContentRefType = canonicalContentRefType; exports.buildListUrl = buildListUrl;