@flamingo-stack/openframe-frontend-core 0.0.704 → 0.0.705-snapshot.20261006160157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-7LFIKJX2.js → chunk-3EZ4HHAP.js} +3 -3
- package/dist/{chunk-I7DFUQMN.js → chunk-3NCM4ZQB.js} +17 -18
- package/dist/{chunk-4DQMTBMK.cjs → chunk-3PLDQDE6.cjs} +15 -15
- package/dist/{chunk-VTASHWER.js → chunk-4CJMQLB5.js} +4 -4
- package/dist/{chunk-VR2ZLFCP.js → chunk-4IBPRIQH.js} +1 -1
- package/dist/{chunk-ZQFZSFQI.js → chunk-4ILM7W2R.js} +2 -2
- package/dist/{chunk-FXENTYE5.js → chunk-6232S532.js} +3 -3
- package/dist/{chunk-MMOODW57.cjs → chunk-6NTPY5QA.cjs} +1887 -94
- package/dist/{chunk-2JDVL7UV.js → chunk-7GEBFJT2.js} +1829 -3447
- package/dist/{chunk-LDPEQGKT.cjs → chunk-7OFPU7WE.cjs} +942 -2560
- package/dist/{chunk-L3IC42IF.cjs → chunk-7SCNMP2B.cjs} +57 -58
- package/dist/{chunk-2G546OND.js → chunk-BHI6GVC4.js} +1094 -693
- package/dist/{chunk-MP2C3LJ4.js → chunk-CUME3VTQ.js} +1 -1
- package/dist/{chunk-WUJNYGO2.js → chunk-CZ7Y7UG4.js} +4 -76
- package/dist/{chunk-7JIL3WOH.cjs → chunk-DDVBX42E.cjs} +21 -21
- package/dist/{chunk-6WQIUQUC.js → chunk-DWPAAWMR.js} +6 -6
- package/dist/{chunk-MFFCUVWG.js → chunk-F57ECE2I.js} +1 -1
- package/dist/{chunk-CH5232HV.js → chunk-FI6GMDO7.js} +2455 -662
- package/dist/{chunk-NDESEPW5.js → chunk-FXJ3WWUB.js} +68 -0
- package/dist/{chunk-4KGXLVCF.js → chunk-G6UMNAVI.js} +57 -61
- package/dist/{chunk-LTSTC3N5.cjs → chunk-GWQEYPYM.cjs} +728 -732
- package/dist/{chunk-N3TO7JV3.cjs → chunk-HZ7CBXPL.cjs} +89 -89
- package/dist/{chunk-XATTBO5X.js → chunk-IKJA3Y7Z.js} +2 -2
- package/dist/{chunk-5HBHO5TB.js → chunk-JPG7OHEG.js} +1 -1
- package/dist/{chunk-AMYY3PNL.cjs → chunk-K6O43WDL.cjs} +46 -46
- package/dist/{chunk-IHU5ANUY.js → chunk-KUC673HM.js} +383 -142
- package/dist/{chunk-X72J4ACL.cjs → chunk-LLSUVPQC.cjs} +252 -8
- package/dist/{chunk-RKV5B7EU.cjs → chunk-LM7TXMLU.cjs} +72 -4
- package/dist/{chunk-XJKZ4IKT.cjs → chunk-LVSFKENJ.cjs} +4 -4
- package/dist/{chunk-IZGDG5X6.cjs → chunk-M75XEEGT.cjs} +940 -539
- package/dist/{chunk-UK62YTH6.cjs → chunk-MB4PNY7C.cjs} +6 -6
- package/dist/{chunk-2YXVWZVF.js → chunk-N45D4ZXQ.js} +959 -715
- package/dist/{chunk-Z2VNQQ74.js → chunk-NCPTID44.js} +978 -942
- package/dist/{chunk-JEYRXT5L.js → chunk-O2RSAA5M.js} +11 -11
- package/dist/{chunk-ABU3TGXA.cjs → chunk-OF6GEI5A.cjs} +3 -3
- package/dist/{chunk-OHFS7VOU.cjs → chunk-PLYEKV3N.cjs} +2 -2
- package/dist/{chunk-5QJDM6UV.js → chunk-PXOQIA5K.js} +5 -5
- package/dist/{chunk-VHCACDKP.cjs → chunk-RQRX4YC3.cjs} +39 -39
- package/dist/{chunk-HFJW24JJ.cjs → chunk-RTIPR53L.cjs} +104 -104
- package/dist/{chunk-262YQFOS.cjs → chunk-SEKYEWQG.cjs} +26 -26
- package/dist/{chunk-SYXQLETR.cjs → chunk-STHZBOQI.cjs} +17 -17
- package/dist/{chunk-MI3JUJ75.cjs → chunk-SW5ZV2BN.cjs} +34 -34
- package/dist/{chunk-QVSFBSWV.js → chunk-T5TMCHWM.js} +9 -9
- package/dist/{chunk-ERCV6HHJ.js → chunk-TE773HEH.js} +10 -10
- package/dist/{chunk-C7XGRLT5.cjs → chunk-TQ4LB2DS.cjs} +14 -14
- package/dist/{chunk-XOYH2YQE.cjs → chunk-UDFRUKLC.cjs} +2 -2
- package/dist/{chunk-XIFOBQRQ.cjs → chunk-UJ33ZXDT.cjs} +6 -6
- package/dist/{chunk-C3BWIU7R.cjs → chunk-UVTD52MD.cjs} +14 -86
- package/dist/{chunk-N3COXDBH.cjs → chunk-VX4E6YSB.cjs} +41 -5
- package/dist/{chunk-HJAYVKWQ.js → chunk-VZICIQW2.js} +15 -15
- package/dist/{chunk-MGGGBHYD.cjs → chunk-WCVZCGK5.cjs} +312 -71
- package/dist/{chunk-6XIF2Z7I.js → chunk-WMX26HB5.js} +3 -3
- package/dist/{chunk-D7BTSVMS.cjs → chunk-Y2GSOUCS.cjs} +2 -2
- package/dist/{chunk-NRLJUBCS.js → chunk-YGJKKDDM.js} +6 -6
- package/dist/components/case-studies/index.cjs +30 -32
- package/dist/components/case-studies/index.js +14 -16
- package/dist/components/chat/chat-input.d.ts.map +1 -1
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.d.ts +8 -0
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/entity-cards/case-study-card.d.ts +11 -4
- package/dist/components/chat/entity-cards/case-study-card.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +11 -11
- package/dist/components/chat/index.d.ts +1 -1
- package/dist/components/chat/index.d.ts.map +1 -1
- package/dist/components/chat/index.js +16 -16
- package/dist/components/chat/mingo-chat-rail.d.ts +3 -1
- package/dist/components/chat/mingo-chat-rail.d.ts.map +1 -1
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +12 -14
- package/dist/components/contact/index.js +11 -13
- package/dist/components/docs/index.cjs +15 -17
- package/dist/components/docs/index.js +14 -16
- package/dist/components/embeds/index.cjs +12 -14
- package/dist/components/embeds/index.js +11 -13
- package/dist/components/faq/index.cjs +13 -15
- package/dist/components/faq/index.js +12 -14
- package/dist/components/features/index.cjs +12 -14
- package/dist/components/features/index.js +21 -23
- package/dist/components/help-center-pages/index.cjs +118 -120
- package/dist/components/help-center-pages/index.js +33 -35
- package/dist/components/icons/index.cjs +3 -5
- package/dist/components/icons/index.js +9 -11
- package/dist/components/icons-v2-generated/index.cjs +3 -5
- package/dist/components/icons-v2-generated/index.js +2 -4
- package/dist/components/index.cjs +89 -158
- package/dist/components/index.d.ts +0 -2
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +333 -402
- package/dist/components/loading/page-layout-skeleton.d.ts +1 -1
- package/dist/components/meeting-scheduler/index.cjs +62 -64
- package/dist/components/meeting-scheduler/index.js +12 -14
- package/dist/components/navigation/app-layout-side-panel.d.ts +18 -1
- package/dist/components/navigation/app-layout-side-panel.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +30 -16
- package/dist/components/navigation/index.d.ts +15 -10
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +40 -26
- package/dist/components/navigation/mingo-ai-button.d.ts +38 -3
- package/dist/components/navigation/mingo-ai-button.d.ts.map +1 -1
- package/dist/components/navigation/mobile-nav-sheet-id.d.ts +3 -0
- package/dist/components/navigation/mobile-nav-sheet-id.d.ts.map +1 -0
- package/dist/components/navigation/mobile-nav-sheet.d.ts +48 -0
- package/dist/components/navigation/mobile-nav-sheet.d.ts.map +1 -0
- package/dist/components/navigation/nav-item-row.d.ts +27 -0
- package/dist/components/navigation/nav-item-row.d.ts.map +1 -0
- package/dist/components/navigation/nav-panel.d.ts +43 -0
- package/dist/components/navigation/nav-panel.d.ts.map +1 -0
- package/dist/components/navigation/navigation-sidebar-item.d.ts +1 -2
- package/dist/components/navigation/navigation-sidebar-item.d.ts.map +1 -1
- package/dist/components/navigation/site-footer.d.ts +28 -0
- package/dist/components/navigation/site-footer.d.ts.map +1 -0
- package/dist/components/navigation/site-header.d.ts +61 -0
- package/dist/components/navigation/site-header.d.ts.map +1 -0
- package/dist/components/navigation/site-nav-link.d.ts +26 -0
- package/dist/components/navigation/site-nav-link.d.ts.map +1 -0
- package/dist/components/navigation/top-navigation.d.ts +2 -2
- package/dist/components/navigation/top-navigation.d.ts.map +1 -1
- package/dist/components/onboarding-guides/index.cjs +15 -17
- package/dist/components/onboarding-guides/index.js +14 -16
- package/dist/components/related-content/index.cjs +10 -8
- package/dist/components/related-content/index.js +9 -7
- package/dist/components/tickets/index.cjs +16 -18
- package/dist/components/tickets/index.js +15 -17
- package/dist/components/ui/index.cjs +14 -14
- package/dist/components/ui/index.js +19 -19
- package/dist/hooks/index.cjs +19 -11
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +19 -11
- package/dist/hooks/ui/index.d.ts +3 -0
- package/dist/hooks/ui/index.d.ts.map +1 -1
- package/dist/hooks/ui/use-active-section.d.ts +10 -0
- package/dist/hooks/ui/use-active-section.d.ts.map +1 -0
- package/dist/hooks/ui/use-nav-menus.d.ts +48 -0
- package/dist/hooks/ui/use-nav-menus.d.ts.map +1 -0
- package/dist/hooks/ui/use-visitor-os.d.ts +15 -0
- package/dist/hooks/ui/use-visitor-os.d.ts.map +1 -0
- package/dist/hooks/use-location-hash.d.ts +9 -0
- package/dist/hooks/use-location-hash.d.ts.map +1 -0
- package/dist/index.cjs +58 -21
- package/dist/index.js +233 -196
- package/dist/types/case-study.d.ts +9 -0
- package/dist/types/case-study.d.ts.map +1 -1
- package/dist/types/navigation.d.ts +95 -65
- package/dist/types/navigation.d.ts.map +1 -1
- package/dist/utils/index.cjs +55 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +50 -1
- package/dist/utils/source-icons.d.ts.map +1 -1
- package/dist/utils/visitor-os.d.ts +45 -0
- package/dist/utils/visitor-os.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/components/chat/chat-input.tsx +5 -1
- package/src/components/chat/chat-message-enhanced.tsx +4 -3
- package/src/components/chat/embeddable-chat.tsx +64 -6
- package/src/components/chat/entity-cards/case-study-card.tsx +115 -5
- package/src/components/chat/index.ts +1 -0
- package/src/components/chat/mingo-chat-rail.tsx +24 -7
- package/src/components/chat/utils/icon-library.tsx +35 -1
- package/src/components/index.ts +0 -2
- package/src/components/loading/page-layout-skeleton.tsx +1 -1
- package/src/components/navigation/app-layout-side-panel.tsx +30 -2
- package/src/components/navigation/index.ts +22 -14
- package/src/components/navigation/mingo-ai-button.tsx +139 -63
- package/src/components/navigation/mobile-nav-sheet-id.ts +2 -0
- package/src/components/navigation/mobile-nav-sheet.tsx +241 -0
- package/src/components/navigation/nav-item-row.tsx +129 -0
- package/src/components/navigation/nav-panel.tsx +196 -0
- package/src/components/navigation/navigation-sidebar-item.tsx +1 -2
- package/src/components/navigation/site-footer.tsx +256 -0
- package/src/components/navigation/site-header.tsx +339 -0
- package/src/components/navigation/site-nav-link.tsx +41 -0
- package/src/components/navigation/ticket-alerts-button.tsx +2 -2
- package/src/components/navigation/top-navigation.tsx +2 -2
- package/src/components/platform/SoftwareSourceBadge.tsx +1 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/ui/index.ts +3 -0
- package/src/hooks/ui/use-active-section.ts +44 -0
- package/src/hooks/ui/use-nav-menus.ts +200 -0
- package/src/hooks/ui/use-visitor-os.ts +33 -0
- package/src/hooks/use-location-hash.ts +34 -0
- package/src/styles/app-globals.css +13 -0
- package/src/styles/chat-animations.css +57 -2
- package/src/types/case-study.ts +16 -0
- package/src/types/navigation.ts +80 -66
- package/src/utils/index.ts +1 -0
- package/src/utils/source-icons.ts +13 -0
- package/src/utils/visitor-os.ts +84 -0
- package/dist/chunk-LMBC5FFP.js +0 -43
- package/dist/chunk-O43V3EOS.js +0 -252
- package/dist/chunk-QZVSJF2K.cjs +0 -252
- package/dist/chunk-RALRPFDW.cjs +0 -43
- package/dist/components/footer-waitlist-button.d.ts +0 -29
- package/dist/components/footer-waitlist-button.d.ts.map +0 -1
- package/dist/components/footer.d.ts +0 -47
- package/dist/components/footer.d.ts.map +0 -1
- package/dist/components/navigation/client-only-header.d.ts +0 -8
- package/dist/components/navigation/client-only-header.d.ts.map +0 -1
- package/dist/components/navigation/header-skeleton.d.ts +0 -12
- package/dist/components/navigation/header-skeleton.d.ts.map +0 -1
- package/dist/components/navigation/header.d.ts +0 -9
- package/dist/components/navigation/header.d.ts.map +0 -1
- package/dist/components/navigation/mobile-nav-panel.d.ts +0 -10
- package/dist/components/navigation/mobile-nav-panel.d.ts.map +0 -1
- package/src/components/footer-waitlist-button.tsx +0 -53
- package/src/components/footer.tsx +0 -195
- package/src/components/navigation/client-only-header.tsx +0 -22
- package/src/components/navigation/header-skeleton.tsx +0 -74
- package/src/components/navigation/header.tsx +0 -429
- package/src/components/navigation/mobile-nav-panel.tsx +0 -155
|
@@ -9,25 +9,66 @@ var _chunkMGHIV4L6cjs = require('./chunk-MGHIV4L6.cjs');
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var _chunkRKV5B7EUcjs = require('./chunk-RKV5B7EU.cjs');
|
|
13
12
|
|
|
14
13
|
|
|
15
14
|
|
|
16
15
|
|
|
16
|
+
var _chunkLM7TXMLUcjs = require('./chunk-LM7TXMLU.cjs');
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var _chunkQZVSJF2Kcjs = require('./chunk-QZVSJF2K.cjs');
|
|
23
22
|
|
|
24
23
|
|
|
25
|
-
|
|
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');
|
|
26
64
|
|
|
27
65
|
|
|
28
66
|
var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
|
|
29
67
|
|
|
30
68
|
|
|
69
|
+
var _chunk4GFNWALLcjs = require('./chunk-4GFNWALL.cjs');
|
|
70
|
+
|
|
71
|
+
|
|
31
72
|
var _chunkDFQYAYBHcjs = require('./chunk-DFQYAYBH.cjs');
|
|
32
73
|
|
|
33
74
|
|
|
@@ -267,7 +308,7 @@ var disabledTagClasses = [
|
|
|
267
308
|
];
|
|
268
309
|
function TagLabel({ label, labelClassName }) {
|
|
269
310
|
const isString = typeof label === "string";
|
|
270
|
-
const { ref, isTruncated } =
|
|
311
|
+
const { ref, isTruncated } = _chunkLM7TXMLUcjs.useIsTruncated.call(void 0, isString ? label : null);
|
|
271
312
|
if (!isString) {
|
|
272
313
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "truncate", labelClassName), children: label });
|
|
273
314
|
}
|
|
@@ -319,7 +360,7 @@ function Tag({
|
|
|
319
360
|
disabled ? "cursor-not-allowed" : "hover:opacity-100"
|
|
320
361
|
),
|
|
321
362
|
"aria-label": "Remove",
|
|
322
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
363
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVX4E6YSBcjs.XmarkCircleIcon, { className: "size-4" })
|
|
323
364
|
}
|
|
324
365
|
)
|
|
325
366
|
]
|
|
@@ -854,7 +895,7 @@ var SquareAvatar = _react3.memo.call(void 0,
|
|
|
854
895
|
style,
|
|
855
896
|
...props
|
|
856
897
|
}, ref) => {
|
|
857
|
-
const resolvedSrc =
|
|
898
|
+
const resolvedSrc = _chunkLM7TXMLUcjs.useAuthedImageSrc.call(void 0, src);
|
|
858
899
|
const sizeClasses2 = {
|
|
859
900
|
// xs (24px): dense card meta rows — avatar stacks on delivery/
|
|
860
901
|
// roadmap cards. Part of the shared scale so no caller ever
|
|
@@ -1047,7 +1088,7 @@ var Modal = _react3.forwardRef.call(void 0, ({ isOpen, onClose, children, classN
|
|
|
1047
1088
|
),
|
|
1048
1089
|
role: "dialog",
|
|
1049
1090
|
"aria-modal": "true",
|
|
1050
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1091
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLM7TXMLUcjs.ViewportBreakpoints, { children })
|
|
1051
1092
|
}
|
|
1052
1093
|
)
|
|
1053
1094
|
] });
|
|
@@ -1170,6 +1211,90 @@ function ImageGalleryModal({ images, isOpen, onClose, initialIndex = 0 }) {
|
|
|
1170
1211
|
] }) });
|
|
1171
1212
|
}
|
|
1172
1213
|
|
|
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
|
+
|
|
1173
1298
|
// src/components/features/video-center-badge.tsx
|
|
1174
1299
|
|
|
1175
1300
|
var SIZES = {
|
|
@@ -1196,7 +1321,7 @@ function VideoPlayBadge({ size: size2 = "md", className }) {
|
|
|
1196
1321
|
className
|
|
1197
1322
|
),
|
|
1198
1323
|
style: { filter: GLYPH_SHADOW },
|
|
1199
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1324
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.PlayFilledIcon, { size: SIZES[size2], color: "currentColor" })
|
|
1200
1325
|
}
|
|
1201
1326
|
);
|
|
1202
1327
|
}
|
|
@@ -1216,7 +1341,7 @@ function CardHoverPlay({ size: size2 = "md", className }) {
|
|
|
1216
1341
|
}
|
|
1217
1342
|
function VideoUnmuteGlyph({ size: size2 = "md", className }) {
|
|
1218
1343
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1219
|
-
|
|
1344
|
+
_chunkLLSUVPQCcjs.VolumeOffFilledIcon,
|
|
1220
1345
|
{
|
|
1221
1346
|
size: SIZES[size2],
|
|
1222
1347
|
color: "currentColor",
|
|
@@ -1226,6 +1351,923 @@ function VideoUnmuteGlyph({ size: size2 = "md", className }) {
|
|
|
1226
1351
|
);
|
|
1227
1352
|
}
|
|
1228
1353
|
|
|
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
|
+
|
|
1229
2271
|
// src/components/ui/status-badge.tsx
|
|
1230
2272
|
|
|
1231
2273
|
|
|
@@ -1357,8 +2399,8 @@ function DepartmentBadge({
|
|
|
1357
2399
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1358
2400
|
PaletteBadge,
|
|
1359
2401
|
{
|
|
1360
|
-
text: _optionalChain([department, 'optionalAccess',
|
|
1361
|
-
color: _optionalChain([department, 'optionalAccess',
|
|
2402
|
+
text: _optionalChain([department, 'optionalAccess', _115 => _115.name]) || emptyLabel,
|
|
2403
|
+
color: _optionalChain([department, 'optionalAccess', _116 => _116.name]) ? department.color : null,
|
|
1362
2404
|
className,
|
|
1363
2405
|
variant
|
|
1364
2406
|
}
|
|
@@ -1441,12 +2483,536 @@ function AvatarStack({
|
|
|
1441
2483
|
);
|
|
1442
2484
|
}
|
|
1443
2485
|
|
|
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
|
+
|
|
1444
3010
|
// src/utils/image-proxy.ts
|
|
1445
3011
|
function getProxiedImageUrl(imageUrl, options) {
|
|
1446
3012
|
if (!imageUrl) return null;
|
|
1447
|
-
const proxyPrefix = _optionalChain([options, 'optionalAccess',
|
|
1448
|
-
const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
1449
|
-
const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess',
|
|
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));
|
|
1450
3016
|
if (proxyPrefix && imageUrl.includes(proxyPrefix)) {
|
|
1451
3017
|
return imageUrl;
|
|
1452
3018
|
}
|
|
@@ -1469,7 +3035,7 @@ function getProxiedImageUrl(imageUrl, options) {
|
|
|
1469
3035
|
function urlPathLooksLikeSvg(imageUrl) {
|
|
1470
3036
|
try {
|
|
1471
3037
|
return /\.svg$/i.test(new URL(imageUrl).pathname);
|
|
1472
|
-
} catch (
|
|
3038
|
+
} catch (e34) {
|
|
1473
3039
|
return /\.svg(\?|#|$)/i.test(imageUrl);
|
|
1474
3040
|
}
|
|
1475
3041
|
}
|
|
@@ -1488,11 +3054,47 @@ function skipsImageOptimizer(url) {
|
|
|
1488
3054
|
try {
|
|
1489
3055
|
const hostname = new URL(url.startsWith("//") ? `https:${url}` : url).hostname.toLowerCase();
|
|
1490
3056
|
return hostname === "googleusercontent.com" || hostname.endsWith(".googleusercontent.com");
|
|
1491
|
-
} catch (
|
|
3057
|
+
} catch (e35) {
|
|
1492
3058
|
return false;
|
|
1493
3059
|
}
|
|
1494
3060
|
}
|
|
1495
3061
|
|
|
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
|
+
|
|
1496
3098
|
// src/utils/escape-regexp.ts
|
|
1497
3099
|
function escapeRegExp(value) {
|
|
1498
3100
|
return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
@@ -1526,14 +3128,14 @@ function isSameOriginAbsoluteHref(href) {
|
|
|
1526
3128
|
if (!/^https?:\/\//i.test(href)) return false;
|
|
1527
3129
|
try {
|
|
1528
3130
|
return new URL(href).origin === new URL(window.location.href).origin;
|
|
1529
|
-
} catch (
|
|
3131
|
+
} catch (e36) {
|
|
1530
3132
|
return false;
|
|
1531
3133
|
}
|
|
1532
3134
|
}
|
|
1533
3135
|
function computeIsNewTab(runtime, href, targetPlatform) {
|
|
1534
3136
|
if (!href) return false;
|
|
1535
3137
|
if (runtime.navigation.mode === "embed") return !isSameOriginAbsoluteHref(href);
|
|
1536
|
-
return _nullishCoalesce(_optionalChain([runtime, 'access',
|
|
3138
|
+
return _nullishCoalesce(_optionalChain([runtime, 'access', _125 => _125.navigation, 'access', _126 => _126.decideNewTab, 'optionalCall', _127 => _127({ href, targetPlatform })]), () => ( decideNewTab({
|
|
1537
3139
|
href,
|
|
1538
3140
|
targetPlatform,
|
|
1539
3141
|
currentSource: _nullishCoalesce(runtime.source, () => ( ""))
|
|
@@ -1599,7 +3201,7 @@ function EntityAuthorCard({
|
|
|
1599
3201
|
renderEmptyAuthor = false,
|
|
1600
3202
|
className
|
|
1601
3203
|
}) {
|
|
1602
|
-
const hasAuthor = !!_optionalChain([author, 'optionalAccess',
|
|
3204
|
+
const hasAuthor = !!_optionalChain([author, 'optionalAccess', _128 => _128.full_name]);
|
|
1603
3205
|
if (!hasAuthor && !renderEmptyAuthor) return null;
|
|
1604
3206
|
const effectiveAuthor = hasAuthor ? author : EMPTY_AUTHOR_PLACEHOLDER;
|
|
1605
3207
|
const formatted = publishedAt ? formatDate(publishedAt) : "";
|
|
@@ -1701,14 +3303,14 @@ function EntityPortraitCard({
|
|
|
1701
3303
|
}) {
|
|
1702
3304
|
const { src, onError: onMediaError } = useCoverImageFallback(imageUrl, placeholderUrl);
|
|
1703
3305
|
const [measured, setMeasured] = _react3.useState.call(void 0, null);
|
|
1704
|
-
const isWide = _optionalChain([measured, 'optionalAccess',
|
|
3306
|
+
const isWide = _optionalChain([measured, 'optionalAccess', _129 => _129.src]) === src ? measured.isWide : null;
|
|
1705
3307
|
const onMediaLoad = (e) => {
|
|
1706
3308
|
const img = e.currentTarget;
|
|
1707
3309
|
if (img.naturalWidth > 0 && img.naturalHeight > 0) {
|
|
1708
3310
|
setMeasured({ src, isWide: img.naturalWidth / img.naturalHeight >= MIN_WIDE_RATIO });
|
|
1709
3311
|
}
|
|
1710
3312
|
};
|
|
1711
|
-
const edgeColor =
|
|
3313
|
+
const edgeColor = _chunkLM7TXMLUcjs.useImageEdgeColor.call(void 0, isWide === false ? src : null, "var(--color-bg-surface)");
|
|
1712
3314
|
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: [
|
|
1713
3315
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1714
3316
|
"div",
|
|
@@ -1791,7 +3393,7 @@ function EntityPortraitCard({
|
|
|
1791
3393
|
|
|
1792
3394
|
// src/components/flamingo-logo.tsx
|
|
1793
3395
|
|
|
1794
|
-
function
|
|
3396
|
+
function FlamingoLogo2({
|
|
1795
3397
|
className = "",
|
|
1796
3398
|
color = "var(--ods-flamingo-pink-base)",
|
|
1797
3399
|
size: size2 = 120,
|
|
@@ -1821,7 +3423,7 @@ function FlamingoLogo({
|
|
|
1821
3423
|
|
|
1822
3424
|
// src/components/openmsp-logo.tsx
|
|
1823
3425
|
|
|
1824
|
-
function
|
|
3426
|
+
function OpenmspLogo2({
|
|
1825
3427
|
className = "",
|
|
1826
3428
|
frontBubbleColor = "#000000",
|
|
1827
3429
|
innerFrontBubbleColor = "#ffffff",
|
|
@@ -1891,7 +3493,7 @@ var PlatformIcon = ({ platform, className }) => {
|
|
|
1891
3493
|
switch (platform) {
|
|
1892
3494
|
case "openmsp":
|
|
1893
3495
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1894
|
-
|
|
3496
|
+
OpenmspLogo2,
|
|
1895
3497
|
{
|
|
1896
3498
|
className,
|
|
1897
3499
|
frontBubbleColor: "currentColor",
|
|
@@ -1901,17 +3503,17 @@ var PlatformIcon = ({ platform, className }) => {
|
|
|
1901
3503
|
);
|
|
1902
3504
|
case "flamingo":
|
|
1903
3505
|
case "flamingo-teaser":
|
|
1904
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3506
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FlamingoLogo2, { className });
|
|
1905
3507
|
case "openframe":
|
|
1906
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3508
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.OpenFrameLogo, { className });
|
|
1907
3509
|
case "tmcg":
|
|
1908
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3510
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.MiamiCyberGangLogoFaceOnly, { size: size2, className });
|
|
1909
3511
|
case "company-hub":
|
|
1910
3512
|
case "marketing-hub":
|
|
1911
3513
|
case "product-hub":
|
|
1912
3514
|
case "revenue-hub":
|
|
1913
3515
|
case "people-hub":
|
|
1914
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3516
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, FlamingoLogo2, { className, fill: "currentColor" });
|
|
1915
3517
|
default:
|
|
1916
3518
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Globe, { className });
|
|
1917
3519
|
}
|
|
@@ -1921,7 +3523,7 @@ function PlatformBadge({ platform, size: size2 = "sm", showLabel = true, classNa
|
|
|
1921
3523
|
return null;
|
|
1922
3524
|
}
|
|
1923
3525
|
const sizes = sizeClasses[size2];
|
|
1924
|
-
const colors =
|
|
3526
|
+
const colors = _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platform.name);
|
|
1925
3527
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1926
3528
|
"div",
|
|
1927
3529
|
{
|
|
@@ -1963,7 +3565,7 @@ function AdminContentCard({
|
|
|
1963
3565
|
const [loadedUrl, setLoadedUrl] = _react3.useState.call(void 0, null);
|
|
1964
3566
|
const displayUrl = imageUrl && !imageError ? imageUrl : placeholderUrl;
|
|
1965
3567
|
const imageLoaded = Boolean(displayUrl) && loadedUrl === displayUrl;
|
|
1966
|
-
const imageBgColor =
|
|
3568
|
+
const imageBgColor = _chunkLM7TXMLUcjs.useImageEdgeColor.call(void 0, displayUrl || null, "transparent");
|
|
1967
3569
|
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: [
|
|
1968
3570
|
/* @__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: [
|
|
1969
3571
|
!imageLoaded && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute inset-0 animate-pulse bg-ods-border/20" }),
|
|
@@ -1990,8 +3592,8 @@ function AdminContentCard({
|
|
|
1990
3592
|
/* @__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 }),
|
|
1991
3593
|
(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 }),
|
|
1992
3594
|
(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 }),
|
|
1993
|
-
(Number(_optionalChain([platforms, 'optionalAccess',
|
|
1994
|
-
_optionalChain([platforms, 'optionalAccess',
|
|
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,
|
|
1995
3597
|
PlatformBadge,
|
|
1996
3598
|
{
|
|
1997
3599
|
platform: { id: p.id || p.platform_id || "", name: p.name, display_name: p.display_name || p.name },
|
|
@@ -2134,7 +3736,7 @@ function EmployeeEntryCard({
|
|
|
2134
3736
|
] }) : null,
|
|
2135
3737
|
meta: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2136
3738
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 items-center gap-2", children: [
|
|
2137
|
-
_optionalChain([entry, 'access',
|
|
3739
|
+
_optionalChain([entry, 'access', _133 => _133.author, 'optionalAccess', _134 => _134.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2138
3740
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
2139
3741
|
{
|
|
2140
3742
|
src: _nullishCoalesce(getProxiedImageUrl2(entry.author.avatar_url), () => ( entry.author.avatar_url)),
|
|
@@ -2145,7 +3747,7 @@ function EmployeeEntryCard({
|
|
|
2145
3747
|
unoptimized: true
|
|
2146
3748
|
}
|
|
2147
3749
|
) : null,
|
|
2148
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate", children: _nullishCoalesce(_optionalChain([entry, 'access',
|
|
3750
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate", children: _nullishCoalesce(_optionalChain([entry, 'access', _135 => _135.author, 'optionalAccess', _136 => _136.full_name]), () => ( "")) })
|
|
2149
3751
|
] }),
|
|
2150
3752
|
dateLabel ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: dateLabel }) : null
|
|
2151
3753
|
] }),
|
|
@@ -2203,7 +3805,7 @@ var HowIWorkCardSkeleton = EmployeeEntryCardSkeleton;
|
|
|
2203
3805
|
// src/components/chat/entity-cards/ai-prompt-card.tsx
|
|
2204
3806
|
|
|
2205
3807
|
function AiPromptCard({ entry, placeholderUrl, actions, anchorProps, className }) {
|
|
2206
|
-
const departmentName = _optionalChain([entry, 'access',
|
|
3808
|
+
const departmentName = _optionalChain([entry, 'access', _137 => _137.department, 'optionalAccess', _138 => _138.name, 'optionalAccess', _139 => _139.trim, 'call', _140 => _140()]);
|
|
2207
3809
|
const steps = typeof entry.step_count === "number" ? entry.step_count : 0;
|
|
2208
3810
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2209
3811
|
EmployeeEntryCard,
|
|
@@ -2211,7 +3813,7 @@ function AiPromptCard({ entry, placeholderUrl, actions, anchorProps, className }
|
|
|
2211
3813
|
entry,
|
|
2212
3814
|
dateLabel: entry.published_at ? formatDateUTC(entry.published_at, { fallback: "" }) || null : null,
|
|
2213
3815
|
extraBadges: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2214
|
-
departmentName ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DepartmentBadge, { department: { name: departmentName, color: _nullishCoalesce(_optionalChain([entry, 'access',
|
|
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,
|
|
2215
3817
|
steps > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EmployeeEntryBadge, { children: `${steps} steps` }) : null
|
|
2216
3818
|
] }),
|
|
2217
3819
|
untitledLabel: "Untitled prompt",
|
|
@@ -2248,7 +3850,7 @@ function PageHeading({
|
|
|
2248
3850
|
var SENTENCE_MARK = /([.:?!]+)(?=\s|$)/g;
|
|
2249
3851
|
var ONLY_MARKS = /^\s*[.:?!]+\s*$/;
|
|
2250
3852
|
function headingAccentClass(platform) {
|
|
2251
|
-
return platform ?
|
|
3853
|
+
return platform ? _chunkLM7TXMLUcjs.getPlatformBrandClasses.call(void 0, platform).accentText : "text-ods-accent";
|
|
2252
3854
|
}
|
|
2253
3855
|
function accentSentenceMarks(node, platform) {
|
|
2254
3856
|
return accentMarks(node, headingAccentClass(platform));
|
|
@@ -2330,7 +3932,7 @@ function SectionHeading({
|
|
|
2330
3932
|
// src/components/features/video-bites-shared.ts
|
|
2331
3933
|
var DEFAULT_VIDEO_BITES_TITLE = "Key Moments";
|
|
2332
3934
|
function toStripProfile(p, fallbackSubtitle) {
|
|
2333
|
-
if (!_optionalChain([p, 'optionalAccess',
|
|
3935
|
+
if (!_optionalChain([p, 'optionalAccess', _143 => _143.full_name])) return null;
|
|
2334
3936
|
return {
|
|
2335
3937
|
name: p.full_name,
|
|
2336
3938
|
avatarUrl: _nullishCoalesce(p.avatar_url, () => ( null)),
|
|
@@ -2350,6 +3952,95 @@ function sortBitesByFeaturedAtDesc(a, b) {
|
|
|
2350
3952
|
return new Date(b.featured_at).getTime() - new Date(a.featured_at).getTime();
|
|
2351
3953
|
}
|
|
2352
3954
|
|
|
3955
|
+
// src/components/features/video-hover-preview.tsx
|
|
3956
|
+
|
|
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
|
+
|
|
2353
4044
|
// src/components/shared/product-release/product-release-card.tsx
|
|
2354
4045
|
|
|
2355
4046
|
|
|
@@ -2372,7 +4063,7 @@ function ProductReleaseCard({
|
|
|
2372
4063
|
changelogCounts
|
|
2373
4064
|
}) {
|
|
2374
4065
|
if (size2 === "lg") {
|
|
2375
|
-
const totalChangelog = (_nullishCoalesce(_optionalChain([changelogCounts, 'optionalAccess',
|
|
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)));
|
|
2376
4067
|
const valueCells = [
|
|
2377
4068
|
releaseType && releaseTypeBadgeColor ? {
|
|
2378
4069
|
value: releaseType.toUpperCase(),
|
|
@@ -2391,7 +4082,7 @@ function ProductReleaseCard({
|
|
|
2391
4082
|
uppercase: false
|
|
2392
4083
|
} : { value: "\u2014", label: "Released", uppercase: false }
|
|
2393
4084
|
];
|
|
2394
|
-
const effectiveAuthor = _optionalChain([author, 'optionalAccess',
|
|
4085
|
+
const effectiveAuthor = _optionalChain([author, 'optionalAccess', _150 => _150.full_name]) ? author : { full_name: "\u2014", avatar_url: null, job_title: "Unknown" };
|
|
2395
4086
|
const gridColsClass = "content-md:grid-cols-4";
|
|
2396
4087
|
const dividerClass = "border-b content-md:border-b-0 content-md:border-r border-ods-border";
|
|
2397
4088
|
const interactive = !!anchorProps || !!onClick;
|
|
@@ -2734,10 +4425,10 @@ function buildProductReleaseCardProps(item) {
|
|
|
2734
4425
|
job_title: release.author.job_title
|
|
2735
4426
|
} : void 0,
|
|
2736
4427
|
changelogCounts: {
|
|
2737
|
-
features: _nullishCoalesce(_optionalChain([release, 'access',
|
|
2738
|
-
fixes: _nullishCoalesce(_optionalChain([release, 'access',
|
|
2739
|
-
improvements: _nullishCoalesce(_optionalChain([release, 'access',
|
|
2740
|
-
breaking: _nullishCoalesce(_optionalChain([release, 'access',
|
|
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))
|
|
2741
4432
|
}
|
|
2742
4433
|
};
|
|
2743
4434
|
}
|
|
@@ -2748,7 +4439,7 @@ var SAME_ORIGIN_PROBE = "https://_sameorigin_.invalid";
|
|
|
2748
4439
|
function isSameOriginPath(candidate) {
|
|
2749
4440
|
try {
|
|
2750
4441
|
return new URL(candidate, SAME_ORIGIN_PROBE).origin === SAME_ORIGIN_PROBE;
|
|
2751
|
-
} catch (
|
|
4442
|
+
} catch (e37) {
|
|
2752
4443
|
return false;
|
|
2753
4444
|
}
|
|
2754
4445
|
}
|
|
@@ -2782,7 +4473,7 @@ function safeHref(url) {
|
|
|
2782
4473
|
if (!SAFE_URL_SCHEMES.includes(parsed.protocol)) return null;
|
|
2783
4474
|
if ((parsed.protocol === "https:" || parsed.protocol === "http:") && !parsed.hostname) return null;
|
|
2784
4475
|
return trimmed;
|
|
2785
|
-
} catch (
|
|
4476
|
+
} catch (e38) {
|
|
2786
4477
|
return null;
|
|
2787
4478
|
}
|
|
2788
4479
|
}
|
|
@@ -2811,7 +4502,7 @@ function useEntityCardPlaceholder({
|
|
|
2811
4502
|
siteName = "",
|
|
2812
4503
|
aspect = "wide"
|
|
2813
4504
|
}) {
|
|
2814
|
-
const derived =
|
|
4505
|
+
const derived = _chunkLM7TXMLUcjs.useOgPlaceholderUrl.call(void 0, { title, siteName, aspect });
|
|
2815
4506
|
return placeholderUrl !== void 0 ? placeholderUrl : derived;
|
|
2816
4507
|
}
|
|
2817
4508
|
|
|
@@ -2869,7 +4560,7 @@ function BlogCard({
|
|
|
2869
4560
|
const { src: displayImage, onError: onImageError } = useCoverImageFallback(post.featured_image, placeholderUrl);
|
|
2870
4561
|
if (size2 === "sm") {
|
|
2871
4562
|
const dateStr2 = post.published_at ? formatDateWithTimezone(post.published_at, null, "medium") : "";
|
|
2872
|
-
const firstCategory = _optionalChain([post, 'access',
|
|
4563
|
+
const firstCategory = _optionalChain([post, 'access', _159 => _159.categories, 'optionalAccess', _160 => _160.find, 'call', _161 => _161((c) => c && c.name), 'optionalAccess', _162 => _162.name]);
|
|
2873
4564
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
2874
4565
|
"a",
|
|
2875
4566
|
{
|
|
@@ -3008,6 +4699,7 @@ function BlogCard({
|
|
|
3008
4699
|
|
|
3009
4700
|
// src/components/chat/entity-cards/case-study-card.tsx
|
|
3010
4701
|
|
|
4702
|
+
|
|
3011
4703
|
function CaseStudyCardSkeleton({ size: size2 = "default" }) {
|
|
3012
4704
|
if (size2 === "sm") {
|
|
3013
4705
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
@@ -3034,6 +4726,13 @@ function CaseStudyCardSkeleton({ size: size2 = "default" }) {
|
|
|
3034
4726
|
] })
|
|
3035
4727
|
] });
|
|
3036
4728
|
}
|
|
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
|
+
}
|
|
3037
4736
|
function CaseStudyCard({
|
|
3038
4737
|
study,
|
|
3039
4738
|
href,
|
|
@@ -3043,8 +4742,11 @@ function CaseStudyCard({
|
|
|
3043
4742
|
placeholderUrl: placeholderUrlProp,
|
|
3044
4743
|
size: size2 = "default",
|
|
3045
4744
|
showTypeBadge = true,
|
|
4745
|
+
mediaMounted,
|
|
4746
|
+
onNavigate,
|
|
3046
4747
|
className
|
|
3047
4748
|
}) {
|
|
4749
|
+
const [hovered, setHovered] = _react3.useState.call(void 0, false);
|
|
3048
4750
|
const { target, rel } = useEntityCardLink({
|
|
3049
4751
|
href,
|
|
3050
4752
|
targetPlatform,
|
|
@@ -3063,7 +4765,7 @@ function CaseStudyCard({
|
|
|
3063
4765
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
3064
4766
|
{
|
|
3065
4767
|
src: coverImage,
|
|
3066
|
-
alt: `${_optionalChain([study, 'access',
|
|
4768
|
+
alt: `${_optionalChain([study, 'access', _163 => _163.msp, 'optionalAccess', _164 => _164.name]) || study.title} cover`,
|
|
3067
4769
|
className: "object-contain",
|
|
3068
4770
|
fill: true,
|
|
3069
4771
|
sizes: "56px",
|
|
@@ -3073,11 +4775,81 @@ function CaseStudyCard({
|
|
|
3073
4775
|
) : null }),
|
|
3074
4776
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
3075
4777
|
/* @__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 }) }),
|
|
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',
|
|
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" }) }),
|
|
3077
4779
|
/* @__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 }) })
|
|
3078
4780
|
] })
|
|
3079
4781
|
] });
|
|
3080
4782
|
}
|
|
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
|
+
}
|
|
3081
4853
|
if (size2 === "portrait") {
|
|
3082
4854
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3083
4855
|
EntityPortraitCard,
|
|
@@ -3088,13 +4860,13 @@ function CaseStudyCard({
|
|
|
3088
4860
|
typeLabel: showTypeBadge ? "Case Study" : void 0,
|
|
3089
4861
|
imageUrl: study.featured_image,
|
|
3090
4862
|
placeholderUrl,
|
|
3091
|
-
imageAlt: _optionalChain([study, 'access',
|
|
4863
|
+
imageAlt: _optionalChain([study, 'access', _175 => _175.msp, 'optionalAccess', _176 => _176.name]) || study.title,
|
|
3092
4864
|
title: study.title,
|
|
3093
4865
|
person: {
|
|
3094
|
-
name: _optionalChain([study, 'access',
|
|
3095
|
-
avatarUrl: _optionalChain([study, 'access',
|
|
3096
|
-
subtitle: _nullishCoalesce(_optionalChain([study, 'access',
|
|
3097
|
-
iconOverlayUrl: _nullishCoalesce(_optionalChain([study, 'access',
|
|
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))
|
|
3098
4870
|
},
|
|
3099
4871
|
className
|
|
3100
4872
|
}
|
|
@@ -3105,7 +4877,7 @@ function CaseStudyCard({
|
|
|
3105
4877
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
3106
4878
|
{
|
|
3107
4879
|
src: coverImage,
|
|
3108
|
-
alt: _optionalChain([study, 'access',
|
|
4880
|
+
alt: _optionalChain([study, 'access', _185 => _185.msp, 'optionalAccess', _186 => _186.name]) || study.title,
|
|
3109
4881
|
className: "h-full w-full object-cover",
|
|
3110
4882
|
sizes: "(min-width: 1545px) 515px, (min-width: 1280px) 33vw, (min-width: 800px) 50vw, 100vw",
|
|
3111
4883
|
fill: true,
|
|
@@ -3116,18 +4888,18 @@ function CaseStudyCard({
|
|
|
3116
4888
|
/* @__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 }) }),
|
|
3117
4889
|
/* @__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: [
|
|
3118
4890
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
|
|
3119
|
-
_optionalChain([study, 'access',
|
|
4891
|
+
_optionalChain([study, 'access', _187 => _187.user, 'optionalAccess', _188 => _188.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3120
4892
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
3121
4893
|
{
|
|
3122
4894
|
src: study.user.avatar_url,
|
|
3123
|
-
alt: _optionalChain([study, 'access',
|
|
4895
|
+
alt: _optionalChain([study, 'access', _189 => _189.user, 'optionalAccess', _190 => _190.full_name]) || "User",
|
|
3124
4896
|
className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
|
|
3125
4897
|
width: 48,
|
|
3126
4898
|
height: 48,
|
|
3127
4899
|
unoptimized: true
|
|
3128
4900
|
}
|
|
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',
|
|
3130
|
-
_optionalChain([study, 'access',
|
|
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,
|
|
3131
4903
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
3132
4904
|
{
|
|
3133
4905
|
src: study.msp.icon_url,
|
|
@@ -3141,13 +4913,13 @@ function CaseStudyCard({
|
|
|
3141
4913
|
] }),
|
|
3142
4914
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
|
|
3143
4915
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
|
|
3144
|
-
_optionalChain([study, 'access',
|
|
3145
|
-
_optionalChain([study, 'access',
|
|
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: [
|
|
3146
4918
|
" \u2022 ",
|
|
3147
4919
|
study.msp.name
|
|
3148
4920
|
] })
|
|
3149
4921
|
] }),
|
|
3150
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([study, 'access',
|
|
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" })
|
|
3151
4923
|
] })
|
|
3152
4924
|
] }) })
|
|
3153
4925
|
] }) });
|
|
@@ -3229,7 +5001,7 @@ function CustomerInterviewCard({
|
|
|
3229
5001
|
] }),
|
|
3230
5002
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
3231
5003
|
/* @__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 }) }),
|
|
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',
|
|
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" }) }),
|
|
3233
5005
|
/* @__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 }) })
|
|
3234
5006
|
] })
|
|
3235
5007
|
] });
|
|
@@ -3247,10 +5019,10 @@ function CustomerInterviewCard({
|
|
|
3247
5019
|
imageAlt: interview.title,
|
|
3248
5020
|
title: interview.title,
|
|
3249
5021
|
person: {
|
|
3250
|
-
name: _optionalChain([interview, 'access',
|
|
3251
|
-
avatarUrl: _optionalChain([interview, 'access',
|
|
3252
|
-
subtitle: _nullishCoalesce(_optionalChain([interview, 'access',
|
|
3253
|
-
iconOverlayUrl: _nullishCoalesce(_optionalChain([interview, 'access',
|
|
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))
|
|
3254
5026
|
},
|
|
3255
5027
|
className
|
|
3256
5028
|
}
|
|
@@ -3276,18 +5048,18 @@ function CustomerInterviewCard({
|
|
|
3276
5048
|
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 }) }),
|
|
3277
5049
|
/* @__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: [
|
|
3278
5050
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative h-12 w-12 shrink-0", children: [
|
|
3279
|
-
_optionalChain([interview, 'access',
|
|
5051
|
+
_optionalChain([interview, 'access', _213 => _213.user, 'optionalAccess', _214 => _214.avatar_url]) ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3280
5052
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
3281
5053
|
{
|
|
3282
5054
|
src: interview.user.avatar_url,
|
|
3283
|
-
alt: _optionalChain([interview, 'access',
|
|
5055
|
+
alt: _optionalChain([interview, 'access', _215 => _215.user, 'optionalAccess', _216 => _216.full_name]) || "Customer",
|
|
3284
5056
|
className: "h-12 w-12 rounded-full border border-ods-border bg-ods-bg object-cover",
|
|
3285
5057
|
width: 48,
|
|
3286
5058
|
height: 48,
|
|
3287
5059
|
unoptimized: true
|
|
3288
5060
|
}
|
|
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',
|
|
3290
|
-
_optionalChain([interview, 'access',
|
|
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,
|
|
3291
5063
|
_chunkMGHIV4L6cjs.next_image_default,
|
|
3292
5064
|
{
|
|
3293
5065
|
src: interview.msp.icon_url,
|
|
@@ -3301,13 +5073,13 @@ function CustomerInterviewCard({
|
|
|
3301
5073
|
] }),
|
|
3302
5074
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
|
|
3303
5075
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "truncate text-ods-text-primary text-h6", children: [
|
|
3304
|
-
_optionalChain([interview, 'access',
|
|
3305
|
-
_optionalChain([interview, 'access',
|
|
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: [
|
|
3306
5078
|
" \u2022 ",
|
|
3307
5079
|
interview.msp.name
|
|
3308
5080
|
] })
|
|
3309
5081
|
] }),
|
|
3310
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-ods-text-secondary text-h6", children: _optionalChain([interview, 'access',
|
|
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]) || " " })
|
|
3311
5083
|
] })
|
|
3312
5084
|
] }) })
|
|
3313
5085
|
] }) });
|
|
@@ -3316,7 +5088,7 @@ function CustomerInterviewCard({
|
|
|
3316
5088
|
// src/components/chat/types/entities/investor-update.ts
|
|
3317
5089
|
function formatInvestorUpdatePeriod(start, end, options) {
|
|
3318
5090
|
if (!start && !end) return "";
|
|
3319
|
-
const fmt = (d) => formatDateWithTimezone(d, null, _optionalChain([options, 'optionalAccess',
|
|
5091
|
+
const fmt = (d) => formatDateWithTimezone(d, null, _optionalChain([options, 'optionalAccess', _227 => _227.monthFormat]) === "long" ? "monthYear" : "monthYearShort") || "?";
|
|
3320
5092
|
const s = start ? fmt(start) : "?";
|
|
3321
5093
|
const e = end ? fmt(end) : "?";
|
|
3322
5094
|
return `${s} - ${e}`;
|
|
@@ -3427,7 +5199,7 @@ function InvestorUpdateCard({
|
|
|
3427
5199
|
imageUrl: update.featured_image,
|
|
3428
5200
|
placeholderUrl,
|
|
3429
5201
|
title: update.title || `Update #${update.update_number || "?"}`,
|
|
3430
|
-
summary: _optionalChain([update, 'access',
|
|
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",
|
|
3431
5203
|
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: [
|
|
3432
5204
|
"#",
|
|
3433
5205
|
update.update_number
|
|
@@ -3629,7 +5401,7 @@ function OnboardingGuideCard({
|
|
|
3629
5401
|
const compactCover = coverImage || placeholderUrl || null;
|
|
3630
5402
|
const hasVideoCover = !guide.featured_image && !!guide.main_video_thumbnail;
|
|
3631
5403
|
const summary2 = stripMarkdownPreview(guide.video_summary || guide.content || "");
|
|
3632
|
-
const author = _optionalChain([guide, 'access',
|
|
5404
|
+
const author = _optionalChain([guide, 'access', _234 => _234.author, 'optionalAccess', _235 => _235.full_name, 'optionalAccess', _236 => _236.trim, 'call', _237 => _237()]) || "";
|
|
3633
5405
|
const subtitleParts = [`Step ${guide.step_order}`, guide.section, author].filter(
|
|
3634
5406
|
(s) => typeof s === "string" && s.length > 0
|
|
3635
5407
|
);
|
|
@@ -3683,7 +5455,7 @@ function OnboardingGuideCard({
|
|
|
3683
5455
|
|
|
3684
5456
|
// src/components/chat/utils/agent-status-message.ts
|
|
3685
5457
|
function getStatusColorScheme(status) {
|
|
3686
|
-
const s = _optionalChain([status, 'optionalAccess',
|
|
5458
|
+
const s = _optionalChain([status, 'optionalAccess', _238 => _238.toLowerCase, 'call', _239 => _239()]) || "";
|
|
3687
5459
|
switch (status) {
|
|
3688
5460
|
case "completed":
|
|
3689
5461
|
case "success":
|
|
@@ -3777,7 +5549,7 @@ function RoadmapVoteButton({
|
|
|
3777
5549
|
color,
|
|
3778
5550
|
className
|
|
3779
5551
|
}) {
|
|
3780
|
-
const Icon = voteType === "up" ?
|
|
5552
|
+
const Icon = voteType === "up" ? _chunkLLSUVPQCcjs.ThumbsUpIcon : _chunkLLSUVPQCcjs.ThumbsDownIcon;
|
|
3781
5553
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3782
5554
|
_chunkDFQYAYBHcjs.Button,
|
|
3783
5555
|
{
|
|
@@ -3934,7 +5706,7 @@ function RoadmapCard({
|
|
|
3934
5706
|
const compactHref = safeHref(_nullishCoalesce(href, () => ( null)));
|
|
3935
5707
|
const hasVotes = (_nullishCoalesce(item.upvotes, () => ( 0))) > 0 || (_nullishCoalesce(item.downvotes, () => ( 0))) > 0;
|
|
3936
5708
|
const hasFigma = !!item.figmaUrl;
|
|
3937
|
-
const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access',
|
|
5709
|
+
const hasScreenshots = (_nullishCoalesce(_optionalChain([item, 'access', _240 => _240.screenshots, 'optionalAccess', _241 => _241.length]), () => ( 0))) > 0;
|
|
3938
5710
|
const typeLabel = getTaskTypeLabel(item.customItemId);
|
|
3939
5711
|
const useTypeIcon = cardType === "internal_task" || !iconSrc && item.customItemId != null;
|
|
3940
5712
|
const body = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -3953,7 +5725,7 @@ function RoadmapCard({
|
|
|
3953
5725
|
unoptimized: true,
|
|
3954
5726
|
className: "h-8 w-8 object-contain"
|
|
3955
5727
|
}
|
|
3956
|
-
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "uppercase text-ods-text-secondary text-h6", children: _optionalChain([item, 'access',
|
|
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)]) || "??" })
|
|
3957
5729
|
}
|
|
3958
5730
|
),
|
|
3959
5731
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
@@ -3994,14 +5766,14 @@ function RoadmapCard({
|
|
|
3994
5766
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _nullishCoalesce(item.downvotes, () => ( 0)) })
|
|
3995
5767
|
] })
|
|
3996
5768
|
] }) : 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,
|
|
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,
|
|
3998
5770
|
hasScreenshots ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
3999
5771
|
"span",
|
|
4000
5772
|
{
|
|
4001
5773
|
className: "hidden shrink-0 items-center gap-0.5 text-h6 sm:flex",
|
|
4002
5774
|
title: `${item.screenshots.length} screenshot${item.screenshots.length === 1 ? "" : "s"}`,
|
|
4003
5775
|
children: [
|
|
4004
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5776
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.ImageIcon, { className: "h-3 w-3" }),
|
|
4005
5777
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: item.screenshots.length })
|
|
4006
5778
|
]
|
|
4007
5779
|
}
|
|
@@ -4037,7 +5809,7 @@ function RoadmapCard({
|
|
|
4037
5809
|
unoptimized: true,
|
|
4038
5810
|
className: "object-contain p-1"
|
|
4039
5811
|
}
|
|
4040
|
-
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-xs font-medium uppercase text-ods-text-secondary", children: _optionalChain([item, 'access',
|
|
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)]) || "??" }) }),
|
|
4041
5813
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
4042
5814
|
/* @__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 }) }),
|
|
4043
5815
|
/* @__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: [
|
|
@@ -4100,7 +5872,7 @@ function RoadmapCard({
|
|
|
4100
5872
|
variant: "outline",
|
|
4101
5873
|
size: "small-legacy",
|
|
4102
5874
|
onClick: () => setShowScreenshots(true),
|
|
4103
|
-
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5875
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.ImageIcon, { className: "h-5 w-5" })
|
|
4104
5876
|
}
|
|
4105
5877
|
),
|
|
4106
5878
|
(() => {
|
|
@@ -4112,7 +5884,7 @@ function RoadmapCard({
|
|
|
4112
5884
|
size: "small-legacy",
|
|
4113
5885
|
openInNewTab: true,
|
|
4114
5886
|
href: figmaSafe,
|
|
4115
|
-
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
5887
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkLLSUVPQCcjs.FigmaIcon, { className: "h-5 w-5" })
|
|
4116
5888
|
}
|
|
4117
5889
|
) : null;
|
|
4118
5890
|
})(),
|
|
@@ -4138,10 +5910,10 @@ var MEDIA_TYPE = {
|
|
|
4138
5910
|
VIDEO: "video"
|
|
4139
5911
|
};
|
|
4140
5912
|
function isVideoMedia(media) {
|
|
4141
|
-
return _optionalChain([media, 'optionalAccess',
|
|
5913
|
+
return _optionalChain([media, 'optionalAccess', _248 => _248.media_type]) === MEDIA_TYPE.VIDEO;
|
|
4142
5914
|
}
|
|
4143
5915
|
function isImageMedia(media) {
|
|
4144
|
-
return _optionalChain([media, 'optionalAccess',
|
|
5916
|
+
return _optionalChain([media, 'optionalAccess', _249 => _249.media_type]) === MEDIA_TYPE.IMAGE;
|
|
4145
5917
|
}
|
|
4146
5918
|
function isPublishableMediaType(mediaType) {
|
|
4147
5919
|
return mediaType === MEDIA_TYPE.VIDEO || mediaType === MEDIA_TYPE.IMAGE;
|
|
@@ -4241,7 +6013,7 @@ function programItemToStripProfile(item) {
|
|
|
4241
6013
|
const fromAuthor = toStripProfile(item.author);
|
|
4242
6014
|
if (fromAuthor) return fromAuthor;
|
|
4243
6015
|
const host = Array.isArray(item.hosts) ? item.hosts[0] : null;
|
|
4244
|
-
if (!_optionalChain([host, 'optionalAccess',
|
|
6016
|
+
if (!_optionalChain([host, 'optionalAccess', _250 => _250.name])) return null;
|
|
4245
6017
|
return toStripProfile({ full_name: host.name, avatar_url: _nullishCoalesce(host.avatar_url, () => ( null)) });
|
|
4246
6018
|
}
|
|
4247
6019
|
|
|
@@ -4417,10 +6189,10 @@ function ProgramEditorialCard({
|
|
|
4417
6189
|
playable,
|
|
4418
6190
|
className
|
|
4419
6191
|
}) {
|
|
4420
|
-
const edgeColor =
|
|
6192
|
+
const edgeColor = _chunkLM7TXMLUcjs.useImageEdgeColor.call(void 0, feature ? cover : null, "transparent");
|
|
4421
6193
|
const meta = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: EDITORIAL_META_ROW, children: [
|
|
4422
6194
|
date && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-flamingo-pink", children: date }),
|
|
4423
|
-
[typeMeta, feature ? null : _optionalChain([profile, 'optionalAccess',
|
|
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: [
|
|
4424
6196
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", children: "\u2022" }),
|
|
4425
6197
|
part
|
|
4426
6198
|
] }, part))
|
|
@@ -4594,7 +6366,7 @@ function ProgramCard({
|
|
|
4594
6366
|
const itemDate = compactDate;
|
|
4595
6367
|
const compactCover = coverImage || placeholderUrl || null;
|
|
4596
6368
|
const typeMeta = compactTypeMetaValue;
|
|
4597
|
-
const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access',
|
|
6369
|
+
const subtitleParts = [itemDate, typeMeta, _optionalChain([config, 'access', _252 => _252.labels, 'optionalAccess', _253 => _253.singular])].filter(
|
|
4598
6370
|
(s) => typeof s === "string" && s.length > 0
|
|
4599
6371
|
);
|
|
4600
6372
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "a", { href, target, rel, className: _chunk3ATAYP36cjs.cn.call(void 0, COMPACT_CARD_OUTER, "group", className), children: [
|
|
@@ -5144,4 +6916,25 @@ function buildListUrl(contentRefType, ids, base = "") {
|
|
|
5144
6916
|
|
|
5145
6917
|
|
|
5146
6918
|
|
|
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;
|
|
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;
|