@flamingo-stack/openframe-frontend-core 0.0.285 → 0.0.286
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-3MCHAFHB.js +89 -0
- package/dist/chunk-3MCHAFHB.js.map +1 -0
- package/dist/{chunk-IMNGGLKL.js → chunk-3ZXUQQL4.js} +2 -2
- package/dist/{chunk-44ZFLMYC.cjs → chunk-4WACBTZU.cjs} +30 -30
- package/dist/{chunk-44ZFLMYC.cjs.map → chunk-4WACBTZU.cjs.map} +1 -1
- package/dist/{chunk-23UOJUDF.js → chunk-5BTZOVDQ.js} +4 -4
- package/dist/chunk-5KD3S25X.cjs +312 -0
- package/dist/chunk-5KD3S25X.cjs.map +1 -0
- package/dist/chunk-6N26CURS.cjs +2417 -0
- package/dist/chunk-6N26CURS.cjs.map +1 -0
- package/dist/{chunk-XX7P4IL2.js → chunk-7NM7DEUK.js} +4 -143
- package/dist/chunk-7NM7DEUK.js.map +1 -0
- package/dist/chunk-BBZ7AX5H.cjs +290 -0
- package/dist/chunk-BBZ7AX5H.cjs.map +1 -0
- package/dist/chunk-C6SCWXDP.js +290 -0
- package/dist/chunk-C6SCWXDP.js.map +1 -0
- package/dist/{chunk-GVSTRN36.cjs → chunk-D3LEFMOA.cjs} +3 -3
- package/dist/{chunk-GVSTRN36.cjs.map → chunk-D3LEFMOA.cjs.map} +1 -1
- package/dist/{chunk-P45Q4QCU.cjs → chunk-D5YY5U6J.cjs} +19 -15
- package/dist/chunk-D5YY5U6J.cjs.map +1 -0
- package/dist/chunk-DDAT4RKX.js +2417 -0
- package/dist/chunk-DDAT4RKX.js.map +1 -0
- package/dist/{chunk-PVXCVPJD.cjs → chunk-EI4WALN2.cjs} +67 -1626
- package/dist/chunk-EI4WALN2.cjs.map +1 -0
- package/dist/{chunk-ZIODAAFY.cjs → chunk-EL5GCMPU.cjs} +20 -159
- package/dist/chunk-EL5GCMPU.cjs.map +1 -0
- package/dist/{chunk-VQW7CEGS.js → chunk-FSBDVT6R.js} +1831 -3672
- package/dist/chunk-FSBDVT6R.js.map +1 -0
- package/dist/{chunk-DPKUSBQH.cjs → chunk-GDF2R2ER.cjs} +1073 -2914
- package/dist/chunk-GDF2R2ER.cjs.map +1 -0
- package/dist/chunk-HLQW7MWJ.cjs +1594 -0
- package/dist/chunk-HLQW7MWJ.cjs.map +1 -0
- package/dist/chunk-I6ZPGKZ2.cjs +151 -0
- package/dist/chunk-I6ZPGKZ2.cjs.map +1 -0
- package/dist/{chunk-J66U3LPZ.cjs → chunk-KBKZYJRI.cjs} +33 -332
- package/dist/chunk-KBKZYJRI.cjs.map +1 -0
- package/dist/{chunk-USPATRSC.js → chunk-N6ZM5PYZ.js} +45 -344
- package/dist/chunk-N6ZM5PYZ.js.map +1 -0
- package/dist/{chunk-RGALV4UX.js → chunk-POKKCWKF.js} +3 -82
- package/dist/chunk-POKKCWKF.js.map +1 -0
- package/dist/{chunk-XDI5JSWB.cjs → chunk-QCKN37OP.cjs} +45 -41
- package/dist/chunk-QCKN37OP.cjs.map +1 -0
- package/dist/{chunk-KNCDUWY2.js → chunk-QF2X6PTD.js} +10 -6
- package/dist/{chunk-KNCDUWY2.js.map → chunk-QF2X6PTD.js.map} +1 -1
- package/dist/{chunk-Z3V2SGQZ.js → chunk-R2KT5GDD.js} +324 -1883
- package/dist/chunk-R2KT5GDD.js.map +1 -0
- package/dist/{chunk-RJUGNL2A.cjs → chunk-RQ6RTBKF.cjs} +16 -12
- package/dist/chunk-RQ6RTBKF.cjs.map +1 -0
- package/dist/chunk-TFSYSWPS.cjs +89 -0
- package/dist/chunk-TFSYSWPS.cjs.map +1 -0
- package/dist/chunk-TYZEMPPH.js +312 -0
- package/dist/chunk-TYZEMPPH.js.map +1 -0
- package/dist/{chunk-O5N57CRV.js → chunk-VCQ3CTYK.js} +12 -8
- package/dist/{chunk-O5N57CRV.js.map → chunk-VCQ3CTYK.js.map} +1 -1
- package/dist/chunk-VRSXJ5QJ.js +1599 -0
- package/dist/chunk-VRSXJ5QJ.js.map +1 -0
- package/dist/{chunk-53CFL7PH.js → chunk-XQL4WDML.js} +11 -7
- package/dist/{chunk-53CFL7PH.js.map → chunk-XQL4WDML.js.map} +1 -1
- package/dist/chunk-Y4JNA4W6.cjs +1599 -0
- package/dist/chunk-Y4JNA4W6.cjs.map +1 -0
- package/dist/{chunk-ZSUNQJRO.cjs → chunk-YETA25JW.cjs} +2 -81
- package/dist/chunk-YETA25JW.cjs.map +1 -0
- package/dist/chunk-YVB3VDIQ.js +1594 -0
- package/dist/chunk-YVB3VDIQ.js.map +1 -0
- package/dist/chunk-ZLN6SM2U.js +151 -0
- package/dist/chunk-ZLN6SM2U.js.map +1 -0
- package/dist/components/chat/chat-attachment-bar.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +12 -6
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +45 -39
- package/dist/components/contact/index.cjs +11 -7
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +10 -6
- package/dist/components/docs/doc-navigation-context.d.ts +39 -0
- package/dist/components/docs/doc-navigation-context.d.ts.map +1 -0
- package/dist/components/docs/doc-viewer.d.ts +66 -0
- package/dist/components/docs/doc-viewer.d.ts.map +1 -0
- package/dist/components/docs/index.cjs +34 -0
- package/dist/components/docs/index.cjs.map +1 -0
- package/dist/components/docs/index.d.ts +8 -0
- package/dist/components/docs/index.d.ts.map +1 -0
- package/dist/components/docs/index.js +34 -0
- package/dist/components/docs/index.js.map +1 -0
- package/dist/components/docs/use-document-tree.d.ts +41 -0
- package/dist/components/docs/use-document-tree.d.ts.map +1 -0
- package/dist/components/docs/use-scroll-spy.d.ts +16 -0
- package/dist/components/docs/use-scroll-spy.d.ts.map +1 -0
- package/dist/components/embeds/embed-iframe.d.ts +29 -0
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -0
- package/dist/components/embeds/figma-embed.d.ts +27 -0
- package/dist/components/embeds/figma-embed.d.ts.map +1 -0
- package/dist/components/embeds/google-sheets-viewer.d.ts +8 -0
- package/dist/components/embeds/google-sheets-viewer.d.ts.map +1 -0
- package/dist/components/embeds/index.cjs +37 -0
- package/dist/components/embeds/index.cjs.map +1 -0
- package/dist/components/embeds/index.d.ts +9 -0
- package/dist/components/embeds/index.d.ts.map +1 -0
- package/dist/components/embeds/index.js +37 -0
- package/dist/components/embeds/index.js.map +1 -0
- package/dist/components/embeds/pdf-viewer.d.ts +10 -0
- package/dist/components/embeds/pdf-viewer.d.ts.map +1 -0
- package/dist/components/faq/index.cjs +12 -8
- package/dist/components/faq/index.cjs.map +1 -1
- package/dist/components/faq/index.js +11 -7
- package/dist/components/features/index.cjs +10 -6
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +9 -5
- package/dist/components/index.cjs +247 -1120
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +645 -1518
- package/dist/components/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +15 -6
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.d.ts +2 -0
- package/dist/components/navigation/index.d.ts.map +1 -1
- package/dist/components/navigation/index.js +15 -6
- package/dist/components/navigation/multi-level-navigation.d.ts +28 -0
- package/dist/components/navigation/multi-level-navigation.d.ts.map +1 -0
- package/dist/components/onboarding-guides/index.cjs +34 -29
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +13 -8
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/related-content/index.cjs +12 -8
- package/dist/components/related-content/index.cjs.map +1 -1
- package/dist/components/related-content/index.js +11 -7
- package/dist/components/tickets/index.cjs +75 -70
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +16 -11
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/index.cjs +12 -6
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.js +65 -59
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/index.cjs.map +1 -1
- package/dist/embed-shims/index.js +8 -8
- package/dist/hooks/index.cjs +6 -3
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +7 -4
- package/dist/index.cjs +62 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +257 -201
- package/dist/types/doc-source.cjs +4 -0
- package/dist/types/doc-source.cjs.map +1 -0
- package/dist/types/doc-source.d.ts +86 -0
- package/dist/types/doc-source.d.ts.map +1 -0
- package/dist/types/doc-source.js +3 -0
- package/dist/types/doc-source.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/doc-path-utils.d.ts +24 -0
- package/dist/utils/doc-path-utils.d.ts.map +1 -0
- package/dist/utils/doc-tree-nav.d.ts +35 -0
- package/dist/utils/doc-tree-nav.d.ts.map +1 -0
- package/dist/utils/embed-url-converters.d.ts +16 -0
- package/dist/utils/embed-url-converters.d.ts.map +1 -0
- package/dist/utils/format.d.ts +9 -0
- package/dist/utils/format.d.ts.map +1 -1
- package/dist/utils/index.cjs +297 -0
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +7 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +276 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/markdown-section-extractor.d.ts +23 -0
- package/dist/utils/markdown-section-extractor.d.ts.map +1 -0
- package/dist/utils/markdown-to-plain.d.ts +32 -0
- package/dist/utils/markdown-to-plain.d.ts.map +1 -0
- package/dist/utils/tree-builder.d.ts +30 -0
- package/dist/utils/tree-builder.d.ts.map +1 -0
- package/package.json +19 -1
- package/src/components/chat/chat-attachment-bar.tsx +6 -11
- package/src/components/docs/doc-navigation-context.tsx +123 -0
- package/src/components/docs/doc-viewer.tsx +345 -0
- package/src/components/docs/index.ts +12 -0
- package/src/components/docs/use-document-tree.ts +427 -0
- package/src/components/docs/use-scroll-spy.ts +93 -0
- package/src/components/embeds/embed-iframe.tsx +103 -0
- package/src/components/embeds/figma-embed.tsx +147 -0
- package/src/components/embeds/google-sheets-viewer.tsx +54 -0
- package/src/components/embeds/index.ts +11 -0
- package/src/components/embeds/pdf-viewer.tsx +64 -0
- package/src/components/index.ts +2 -0
- package/src/components/navigation/index.ts +5 -0
- package/src/components/navigation/multi-level-navigation.tsx +358 -0
- package/src/types/doc-source.ts +88 -0
- package/src/types/index.ts +4 -0
- package/src/utils/doc-path-utils.ts +47 -0
- package/src/utils/doc-tree-nav.ts +111 -0
- package/src/utils/embed-url-converters.ts +77 -0
- package/src/utils/format.ts +16 -0
- package/src/utils/index.ts +11 -0
- package/src/utils/markdown-section-extractor.ts +106 -0
- package/src/utils/markdown-to-plain.ts +69 -0
- package/src/utils/tree-builder.ts +114 -0
- package/dist/chunk-DPKUSBQH.cjs.map +0 -1
- package/dist/chunk-J66U3LPZ.cjs.map +0 -1
- package/dist/chunk-P45Q4QCU.cjs.map +0 -1
- package/dist/chunk-PVXCVPJD.cjs.map +0 -1
- package/dist/chunk-RGALV4UX.js.map +0 -1
- package/dist/chunk-RJUGNL2A.cjs.map +0 -1
- package/dist/chunk-USPATRSC.js.map +0 -1
- package/dist/chunk-VQW7CEGS.js.map +0 -1
- package/dist/chunk-XDI5JSWB.cjs.map +0 -1
- package/dist/chunk-XX7P4IL2.js.map +0 -1
- package/dist/chunk-Z3V2SGQZ.js.map +0 -1
- package/dist/chunk-ZIODAAFY.cjs.map +0 -1
- package/dist/chunk-ZSUNQJRO.cjs.map +0 -1
- /package/dist/{chunk-IMNGGLKL.js.map → chunk-3ZXUQQL4.js.map} +0 -0
- /package/dist/{chunk-23UOJUDF.js.map → chunk-5BTZOVDQ.js.map} +0 -0
|
@@ -4,13 +4,10 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var _chunkZSUNQJROcjs = require('./chunk-ZSUNQJRO.cjs');
|
|
8
7
|
|
|
9
8
|
|
|
10
|
-
var _chunkAQOWFSMBcjs = require('./chunk-AQOWFSMB.cjs');
|
|
11
9
|
|
|
12
10
|
|
|
13
|
-
var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
|
|
14
11
|
|
|
15
12
|
|
|
16
13
|
|
|
@@ -18,199 +15,48 @@ var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
|
|
|
18
15
|
|
|
19
16
|
|
|
20
17
|
|
|
21
|
-
var _chunkXXI7BNB6cjs = require('./chunk-XXI7BNB6.cjs');
|
|
22
18
|
|
|
23
19
|
|
|
24
|
-
|
|
25
|
-
var _chunkWBR7H6E3cjs = require('./chunk-WBR7H6E3.cjs');
|
|
26
|
-
|
|
20
|
+
var _chunkY4JNA4W6cjs = require('./chunk-Y4JNA4W6.cjs');
|
|
27
21
|
|
|
28
22
|
|
|
29
23
|
|
|
24
|
+
var _chunkTFSYSWPScjs = require('./chunk-TFSYSWPS.cjs');
|
|
30
25
|
|
|
31
26
|
|
|
27
|
+
var _chunkAQOWFSMBcjs = require('./chunk-AQOWFSMB.cjs');
|
|
32
28
|
|
|
33
29
|
|
|
30
|
+
var _chunkXL4V2PYGcjs = require('./chunk-XL4V2PYG.cjs');
|
|
34
31
|
|
|
35
32
|
|
|
36
33
|
|
|
37
|
-
var _chunkLGLPNWS6cjs = require('./chunk-LGLPNWS6.cjs');
|
|
38
34
|
|
|
39
35
|
|
|
40
36
|
|
|
41
37
|
|
|
42
|
-
var
|
|
38
|
+
var _chunkXXI7BNB6cjs = require('./chunk-XXI7BNB6.cjs');
|
|
43
39
|
|
|
44
40
|
|
|
45
41
|
|
|
42
|
+
var _chunkWBR7H6E3cjs = require('./chunk-WBR7H6E3.cjs');
|
|
46
43
|
|
|
47
44
|
|
|
48
45
|
|
|
46
|
+
var _chunkFIG2RKZFcjs = require('./chunk-FIG2RKZF.cjs');
|
|
49
47
|
|
|
50
48
|
|
|
51
|
-
var _chunkZS2SBWBRcjs = require('./chunk-ZS2SBWBR.cjs');
|
|
52
49
|
|
|
53
50
|
|
|
54
|
-
var _chunkWZW7C7TFcjs = require('./chunk-WZW7C7TF.cjs');
|
|
55
51
|
|
|
56
|
-
// src/components/ui/hidden-tags-popup.tsx
|
|
57
|
-
var _react = require('react'); var React = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React22 = _interopRequireWildcard(_react); var React13 = _interopRequireWildcard(_react);
|
|
58
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
59
|
-
var _jsxruntime = require('react/jsx-runtime');
|
|
60
|
-
var HiddenTagsPopup = _react.forwardRef.call(void 0, function HiddenTagsPopup2({ items, onRemove, disabled, className, style }, ref) {
|
|
61
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
62
|
-
"div",
|
|
63
|
-
{
|
|
64
|
-
ref,
|
|
65
|
-
style,
|
|
66
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
67
|
-
// Base positioning is neutral (left-anchored); consumers override via
|
|
68
|
-
// `style.left` (search-input, tag-search-input) or `className` (autocomplete).
|
|
69
|
-
"absolute top-full left-0 mt-1 z-50 min-w-[200px]",
|
|
70
|
-
"bg-ods-card border border-ods-border rounded-[6px] shadow-lg",
|
|
71
|
-
"animate-in fade-in-0 zoom-in-95 duration-150",
|
|
72
|
-
className
|
|
73
|
-
),
|
|
74
|
-
children: items.map((item) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
75
|
-
"div",
|
|
76
|
-
{
|
|
77
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
78
|
-
"flex items-center justify-between gap-3 px-3 h-11 md:h-12",
|
|
79
|
-
"border-b border-ods-border last:border-b-0"
|
|
80
|
-
),
|
|
81
|
-
children: [
|
|
82
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1 text-h5 truncate uppercase text-ods-text-primary", title: typeof item.label === "string" ? item.label : void 0, children: item.label }),
|
|
83
|
-
!disabled && onRemove && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
84
|
-
"button",
|
|
85
|
-
{
|
|
86
|
-
type: "button",
|
|
87
|
-
onClick: (e) => {
|
|
88
|
-
e.stopPropagation();
|
|
89
|
-
onRemove(item.value);
|
|
90
|
-
},
|
|
91
|
-
className: "shrink-0 text-ods-text-secondary hover:text-ods-text-primary transition-colors",
|
|
92
|
-
"aria-label": `Remove ${String(item.label)}`,
|
|
93
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.XmarkCircleIcon, { size: 20 })
|
|
94
|
-
}
|
|
95
|
-
)
|
|
96
|
-
]
|
|
97
|
-
},
|
|
98
|
-
String(item.value)
|
|
99
|
-
))
|
|
100
|
-
}
|
|
101
|
-
);
|
|
102
|
-
});
|
|
103
52
|
|
|
104
|
-
// src/components/ui/tag.tsx
|
|
105
|
-
var _classvarianceauthority = require('class-variance-authority');
|
|
106
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
107
53
|
|
|
108
|
-
var
|
|
109
|
-
[
|
|
110
|
-
"text-h5 h-8 inline-flex items-center justify-center gap-[var(--spacing-system-xxs)] p-[var(--spacing-system-xsf)] rounded-md",
|
|
111
|
-
"transition-colors duration-150"
|
|
112
|
-
],
|
|
113
|
-
{
|
|
114
|
-
variants: {
|
|
115
|
-
variant: {
|
|
116
|
-
primary: [
|
|
117
|
-
"bg-[var(--ods-open-yellow-base)] text-[var(--ods-system-greys-black)]",
|
|
118
|
-
"hover:bg-[var(--ods-open-yellow-hover)] active:bg-[var(--ods-open-yellow-action)]"
|
|
119
|
-
],
|
|
120
|
-
outline: [
|
|
121
|
-
"bg-[var(--ods-system-greys-black)] text-[var(--ods-system-greys-white)] border border-[var(--ods-system-greys-soft-grey)]",
|
|
122
|
-
"hover:bg-[var(--ods-system-greys-black-hover)] hover:border-[var(--ods-system-greys-soft-grey-hover)]",
|
|
123
|
-
"active:bg-[var(--ods-system-greys-black-action)] active:border-[var(--ods-system-greys-soft-grey-action)]"
|
|
124
|
-
],
|
|
125
|
-
success: [
|
|
126
|
-
"bg-[var(--ods-attention-green-success-secondary)] text-[var(--ods-attention-green-success)]",
|
|
127
|
-
"hover:bg-[#385029] active:bg-[#425a33]"
|
|
128
|
-
],
|
|
129
|
-
warning: [
|
|
130
|
-
"bg-[var(--ods-attention-yellow-warning-secondary)] text-[var(--ods-attention-yellow-warning)]",
|
|
131
|
-
"hover:bg-[#544729] active:bg-[#5e5133]"
|
|
132
|
-
],
|
|
133
|
-
error: [
|
|
134
|
-
"bg-[var(--ods-attention-red-error-secondary)] text-[var(--ods-attention-red-error)]",
|
|
135
|
-
"hover:bg-[#542b2b] active:bg-[#5e3535]"
|
|
136
|
-
],
|
|
137
|
-
critical: [
|
|
138
|
-
"bg-[var(--ods-attention-red-error)] text-[var(--ods-attention-red-error-secondary)]",
|
|
139
|
-
"hover:bg-[var(--ods-attention-red-error-hover)] active:bg-[var(--ods-attention-red-error-action)]"
|
|
140
|
-
],
|
|
141
|
-
grey: [
|
|
142
|
-
"bg-[var(--ods-system-greys-soft-grey)] text-[var(--ods-system-greys-grey)]",
|
|
143
|
-
"hover:bg-[var(--ods-system-greys-soft-grey-hover)] active:bg-[var(--ods-system-greys-soft-grey-action)]"
|
|
144
|
-
],
|
|
145
|
-
// Matches the EntityTagBadges / StatusBadge tag skin (ods-card + ods-border,
|
|
146
|
-
// mono uppercase) so the tag-editor chips render identically to the public
|
|
147
|
-
// tag badges. Used for FilterChipData variant 'tag' (see search-input).
|
|
148
|
-
badge: [
|
|
149
|
-
"bg-ods-card text-ods-text-primary border border-ods-border font-mono uppercase tracking-wide",
|
|
150
|
-
"hover:border-ods-accent transition-colors"
|
|
151
|
-
]
|
|
152
|
-
}
|
|
153
|
-
},
|
|
154
|
-
defaultVariants: {
|
|
155
|
-
variant: "primary"
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
);
|
|
159
|
-
var disabledTagClasses = [
|
|
160
|
-
"bg-[var(--ods-system-greys-soft-grey)] text-[var(--ods-system-greys-grey)]",
|
|
161
|
-
"border-transparent",
|
|
162
|
-
"cursor-not-allowed",
|
|
163
|
-
"pointer-events-none"
|
|
164
|
-
];
|
|
165
|
-
function Tag({
|
|
166
|
-
label,
|
|
167
|
-
variant,
|
|
168
|
-
icon,
|
|
169
|
-
onClose,
|
|
170
|
-
className,
|
|
171
|
-
labelClassName,
|
|
172
|
-
disabled,
|
|
173
|
-
...props
|
|
174
|
-
}) {
|
|
175
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
176
|
-
"div",
|
|
177
|
-
{
|
|
178
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
179
|
-
tagVariants({ variant }),
|
|
180
|
-
disabled && disabledTagClasses,
|
|
181
|
-
className
|
|
182
|
-
),
|
|
183
|
-
"aria-disabled": disabled || void 0,
|
|
184
|
-
...props,
|
|
185
|
-
children: [
|
|
186
|
-
icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex items-center justify-center size-5 shrink-0", children: icon }),
|
|
187
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "truncate", labelClassName), title: typeof label === "string" ? label : void 0, children: label }),
|
|
188
|
-
onClose && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
189
|
-
"button",
|
|
190
|
-
{
|
|
191
|
-
type: "button",
|
|
192
|
-
disabled,
|
|
193
|
-
onClick: (e) => {
|
|
194
|
-
e.stopPropagation();
|
|
195
|
-
onClose();
|
|
196
|
-
},
|
|
197
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
198
|
-
"flex items-center justify-center size-5 shrink-0 rounded-full opacity-70 transition-opacity",
|
|
199
|
-
disabled ? "cursor-not-allowed" : "hover:opacity-100"
|
|
200
|
-
),
|
|
201
|
-
"aria-label": "Remove",
|
|
202
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.XmarkCircleIcon, { className: "size-4" })
|
|
203
|
-
}
|
|
204
|
-
)
|
|
205
|
-
]
|
|
206
|
-
}
|
|
207
|
-
);
|
|
208
|
-
}
|
|
54
|
+
var _chunkZS2SBWBRcjs = require('./chunk-ZS2SBWBR.cjs');
|
|
209
55
|
|
|
210
56
|
// src/components/ui/card.tsx
|
|
211
57
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
212
|
-
|
|
213
|
-
|
|
58
|
+
var _react = require('react'); var React = _interopRequireWildcard(_react); var React2 = _interopRequireWildcard(_react); var React4 = _interopRequireWildcard(_react); var React6 = _interopRequireWildcard(_react); var React5 = _interopRequireWildcard(_react); var React22 = _interopRequireWildcard(_react);
|
|
59
|
+
var _jsxruntime = require('react/jsx-runtime');
|
|
214
60
|
var Card = React.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
215
61
|
"div",
|
|
216
62
|
{
|
|
@@ -329,7 +175,7 @@ TabsContent.displayName = TabsPrimitive.Content.displayName;
|
|
|
329
175
|
|
|
330
176
|
// src/components/ui/status-badge.tsx
|
|
331
177
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
332
|
-
|
|
178
|
+
var _classvarianceauthority = require('class-variance-authority');
|
|
333
179
|
|
|
334
180
|
var statusBadgeVariants = _classvarianceauthority.cva.call(void 0,
|
|
335
181
|
"inline-flex items-center justify-center rounded font-mono font-medium uppercase tracking-wide",
|
|
@@ -840,11 +686,11 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
840
686
|
[preprocessContent, content]
|
|
841
687
|
);
|
|
842
688
|
const makeHeading = _react.useCallback.call(void 0,
|
|
843
|
-
(
|
|
689
|
+
(Tag, level, headingClassName) => ({ children }) => {
|
|
844
690
|
const text = extractText(children);
|
|
845
|
-
const effectiveLevel =
|
|
691
|
+
const effectiveLevel = Tag === "h1" && demoteMarkdownH1ToH2 ? 2 : level;
|
|
846
692
|
const id = generateHeadingId(text, effectiveLevel);
|
|
847
|
-
const EffectiveTag =
|
|
693
|
+
const EffectiveTag = Tag === "h1" && demoteMarkdownH1ToH2 ? "h2" : Tag;
|
|
848
694
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EffectiveTag, { id, className: headingClassName, children });
|
|
849
695
|
},
|
|
850
696
|
[generateHeadingId, demoteMarkdownH1ToH2]
|
|
@@ -1051,308 +897,6 @@ var SimpleMarkdownRendererImpl = ({
|
|
|
1051
897
|
};
|
|
1052
898
|
var SimpleMarkdownRenderer = _react.memo.call(void 0, SimpleMarkdownRendererImpl);
|
|
1053
899
|
|
|
1054
|
-
// src/utils/format.ts
|
|
1055
|
-
function formatDate(date, options = {
|
|
1056
|
-
year: "numeric",
|
|
1057
|
-
month: "long",
|
|
1058
|
-
day: "numeric"
|
|
1059
|
-
}) {
|
|
1060
|
-
const dateObj = typeof date === "string" ? new Date(date) : date;
|
|
1061
|
-
if (isNaN(dateObj.getTime())) {
|
|
1062
|
-
console.warn("Invalid date provided to formatDate:", date);
|
|
1063
|
-
return "Invalid Date";
|
|
1064
|
-
}
|
|
1065
|
-
return dateObj.toLocaleDateString("en-US", options);
|
|
1066
|
-
}
|
|
1067
|
-
function formatNumber(num) {
|
|
1068
|
-
return num.toLocaleString();
|
|
1069
|
-
}
|
|
1070
|
-
function formatPrice(price, currency = "USD") {
|
|
1071
|
-
return new Intl.NumberFormat("en-US", {
|
|
1072
|
-
style: "currency",
|
|
1073
|
-
currency
|
|
1074
|
-
}).format(price);
|
|
1075
|
-
}
|
|
1076
|
-
function formatBytes(bytes, decimals = 2) {
|
|
1077
|
-
if (bytes === 0) return "0 Bytes";
|
|
1078
|
-
const k = 1024;
|
|
1079
|
-
const dm = decimals < 0 ? 0 : decimals;
|
|
1080
|
-
const sizes = ["Bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"];
|
|
1081
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
1082
|
-
return Number.parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + " " + sizes[i];
|
|
1083
|
-
}
|
|
1084
|
-
function formatBytesShort(bytes) {
|
|
1085
|
-
if (bytes === 0) return "0 B";
|
|
1086
|
-
const k = 1024;
|
|
1087
|
-
const sizes = ["B", "KB", "MB", "GB", "TB"];
|
|
1088
|
-
const i = Math.floor(Math.log(bytes) / Math.log(k));
|
|
1089
|
-
return `${parseFloat((bytes / Math.pow(k, i)).toFixed(2))} ${sizes[i]}`;
|
|
1090
|
-
}
|
|
1091
|
-
function formatLargeNumber(num) {
|
|
1092
|
-
if (num === 0) return "0";
|
|
1093
|
-
const isNegative = num < 0;
|
|
1094
|
-
const absNum = Math.abs(num);
|
|
1095
|
-
let result;
|
|
1096
|
-
if (absNum >= 1e9) {
|
|
1097
|
-
result = `${Math.floor(absNum / 1e9)}B`;
|
|
1098
|
-
} else if (absNum >= 1e6) {
|
|
1099
|
-
result = `${Math.floor(absNum / 1e6)}M`;
|
|
1100
|
-
} else if (absNum >= 1e3) {
|
|
1101
|
-
result = `${Math.floor(absNum / 1e3)}K`;
|
|
1102
|
-
} else {
|
|
1103
|
-
result = Math.floor(absNum).toString();
|
|
1104
|
-
}
|
|
1105
|
-
return isNegative ? `-${result}` : result;
|
|
1106
|
-
}
|
|
1107
|
-
function formatAbbreviatedNumber(n) {
|
|
1108
|
-
if (n >= 1e9) {
|
|
1109
|
-
const value = n / 1e9;
|
|
1110
|
-
return `${Number.isInteger(value) ? value.toFixed(0) : value.toFixed(1)}B`;
|
|
1111
|
-
}
|
|
1112
|
-
if (n >= 1e6) {
|
|
1113
|
-
const value = n / 1e6;
|
|
1114
|
-
return `${Number.isInteger(value) ? value.toFixed(0) : value.toFixed(1)}M`;
|
|
1115
|
-
}
|
|
1116
|
-
if (n >= 1e3) {
|
|
1117
|
-
const value = n / 1e3;
|
|
1118
|
-
return `${Number.isInteger(value) ? value.toFixed(0) : value.toFixed(1)}K`;
|
|
1119
|
-
}
|
|
1120
|
-
return n.toLocaleString();
|
|
1121
|
-
}
|
|
1122
|
-
function getFirstLastInitials(name) {
|
|
1123
|
-
if (!name) return "";
|
|
1124
|
-
const words = name.trim().split(/\s+/);
|
|
1125
|
-
if (words.length === 0 || !words[0]) return "";
|
|
1126
|
-
if (words.length === 1) return words[0].charAt(0).toUpperCase();
|
|
1127
|
-
return (words[0].charAt(0) + words[words.length - 1].charAt(0)).toUpperCase();
|
|
1128
|
-
}
|
|
1129
|
-
function nameInitials(name, fallback = "E") {
|
|
1130
|
-
const source = typeof name === "string" ? name.trim() : "";
|
|
1131
|
-
const words = source.length > 0 ? source.split(/\s+/) : [];
|
|
1132
|
-
const letters = words.map((w) => w[0]).filter(Boolean).slice(0, 2).join("");
|
|
1133
|
-
return (letters || fallback).toUpperCase();
|
|
1134
|
-
}
|
|
1135
|
-
function formatDurationMMSS(seconds) {
|
|
1136
|
-
if (!seconds) return "";
|
|
1137
|
-
const hours = Math.floor(seconds / 3600);
|
|
1138
|
-
const minutes = Math.floor(seconds % 3600 / 60);
|
|
1139
|
-
const secs = Math.floor(seconds % 60);
|
|
1140
|
-
if (hours > 0) {
|
|
1141
|
-
return `${hours}:${minutes.toString().padStart(2, "0")}:${secs.toString().padStart(2, "0")}`;
|
|
1142
|
-
}
|
|
1143
|
-
return `${minutes}:${secs.toString().padStart(2, "0")}`;
|
|
1144
|
-
}
|
|
1145
|
-
function formatDurationCompact(seconds) {
|
|
1146
|
-
if (!seconds) return "";
|
|
1147
|
-
const hours = Math.floor(seconds / 3600);
|
|
1148
|
-
const minutes = Math.floor(seconds % 3600 / 60);
|
|
1149
|
-
if (hours > 0) {
|
|
1150
|
-
return `${hours}h ${minutes}m`;
|
|
1151
|
-
}
|
|
1152
|
-
return `${minutes} min`;
|
|
1153
|
-
}
|
|
1154
|
-
function formatTimeWithTimezone(date, timezone) {
|
|
1155
|
-
if (!date) return "";
|
|
1156
|
-
const dateObj = typeof date === "string" ? new Date(date) : date;
|
|
1157
|
-
const timeStr = dateObj.toLocaleTimeString("en-US", {
|
|
1158
|
-
hour: "numeric",
|
|
1159
|
-
minute: "2-digit",
|
|
1160
|
-
hour12: true
|
|
1161
|
-
});
|
|
1162
|
-
return timezone ? `${timeStr} ${timezone}` : timeStr;
|
|
1163
|
-
}
|
|
1164
|
-
function formatDurationFromRange(startAt, endAt) {
|
|
1165
|
-
if (!startAt || !endAt) return "";
|
|
1166
|
-
const start = typeof startAt === "string" ? new Date(startAt) : startAt;
|
|
1167
|
-
const end = typeof endAt === "string" ? new Date(endAt) : endAt;
|
|
1168
|
-
const durationMs = end.getTime() - start.getTime();
|
|
1169
|
-
const minutes = Math.round(durationMs / 6e4);
|
|
1170
|
-
if (minutes >= 60) {
|
|
1171
|
-
const hours = Math.floor(minutes / 60);
|
|
1172
|
-
const mins = minutes % 60;
|
|
1173
|
-
return mins > 0 ? `${hours}h ${mins}m` : `${hours}h`;
|
|
1174
|
-
}
|
|
1175
|
-
return `${minutes}m`;
|
|
1176
|
-
}
|
|
1177
|
-
function formatDateUTC(value, options = {}) {
|
|
1178
|
-
const { fallback = "N/A", timezone = "UTC" } = options;
|
|
1179
|
-
if (value === null || value === void 0 || value === "") return fallback;
|
|
1180
|
-
let ms;
|
|
1181
|
-
if (typeof value === "number") {
|
|
1182
|
-
ms = value;
|
|
1183
|
-
} else {
|
|
1184
|
-
const n = Number(value);
|
|
1185
|
-
if (Number.isFinite(n) && n > 0 && /^-?\d+(\.\d+)?$/.test(value.trim())) {
|
|
1186
|
-
ms = n;
|
|
1187
|
-
} else {
|
|
1188
|
-
ms = Date.parse(value.includes("T") ? value : value + "T00:00:00Z");
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
if (!Number.isFinite(ms)) return fallback;
|
|
1192
|
-
return new Date(ms).toLocaleDateString("en-US", {
|
|
1193
|
-
year: "numeric",
|
|
1194
|
-
month: "short",
|
|
1195
|
-
day: "numeric",
|
|
1196
|
-
timeZone: timezone === "local" ? void 0 : "UTC"
|
|
1197
|
-
});
|
|
1198
|
-
}
|
|
1199
|
-
function formatEntryMonthUTC(entryMonth, style = "short") {
|
|
1200
|
-
if (!entryMonth) return null;
|
|
1201
|
-
return new Date(entryMonth).toLocaleDateString("en-US", { month: style, year: "numeric", timeZone: "UTC" });
|
|
1202
|
-
}
|
|
1203
|
-
function formatLegalDate(dateInput) {
|
|
1204
|
-
return new Intl.DateTimeFormat("en-US", {
|
|
1205
|
-
year: "numeric",
|
|
1206
|
-
month: "2-digit",
|
|
1207
|
-
day: "2-digit"
|
|
1208
|
-
}).format(new Date(dateInput));
|
|
1209
|
-
}
|
|
1210
|
-
function formatCurrency(value) {
|
|
1211
|
-
if (value == null) return "N/A";
|
|
1212
|
-
return new Intl.NumberFormat("en-US", {
|
|
1213
|
-
style: "currency",
|
|
1214
|
-
currency: "USD",
|
|
1215
|
-
maximumFractionDigits: 0
|
|
1216
|
-
}).format(value);
|
|
1217
|
-
}
|
|
1218
|
-
function formatPercent(value) {
|
|
1219
|
-
if (value == null) return "N/A";
|
|
1220
|
-
return `${value.toFixed(2)}%`;
|
|
1221
|
-
}
|
|
1222
|
-
function formatWholeDollars(price, currency = "USD") {
|
|
1223
|
-
return new Intl.NumberFormat("en-US", {
|
|
1224
|
-
style: "currency",
|
|
1225
|
-
currency,
|
|
1226
|
-
maximumFractionDigits: 0
|
|
1227
|
-
}).format(price);
|
|
1228
|
-
}
|
|
1229
|
-
function formatCompactMetric(value, format = "number", options) {
|
|
1230
|
-
if (value === 0 || value === null || value === void 0) {
|
|
1231
|
-
if (format === "currency") return `${_optionalChain([options, 'optionalAccess', _7 => _7.prefix]) || "$"}0`;
|
|
1232
|
-
if (format === "percentage") return "0%";
|
|
1233
|
-
if (format === "months") return `0 ${_optionalChain([options, 'optionalAccess', _8 => _8.suffix]) || "months"}`;
|
|
1234
|
-
return "0";
|
|
1235
|
-
}
|
|
1236
|
-
const absValue = Math.abs(value);
|
|
1237
|
-
const sign = value < 0 ? "-" : "";
|
|
1238
|
-
if (format === "currency") {
|
|
1239
|
-
const prefix = _optionalChain([options, 'optionalAccess', _9 => _9.prefix]) || "$";
|
|
1240
|
-
const compact = (val, divisor, suffix) => {
|
|
1241
|
-
const divided = val / divisor;
|
|
1242
|
-
const formatted = divided % 1 === 0 ? divided.toFixed(0) : divided.toFixed(1);
|
|
1243
|
-
return `${sign}${prefix}${formatted}${suffix}`;
|
|
1244
|
-
};
|
|
1245
|
-
if (absValue >= 1e9) return compact(absValue, 1e9, "B");
|
|
1246
|
-
if (absValue >= 1e6) return compact(absValue, 1e6, "M");
|
|
1247
|
-
if (absValue >= 1e3) return `${sign}${prefix}${(absValue / 1e3).toFixed(0)}K`;
|
|
1248
|
-
return `${sign}${prefix}${absValue.toLocaleString()}`;
|
|
1249
|
-
}
|
|
1250
|
-
if (format === "percentage") {
|
|
1251
|
-
return `${sign}${absValue}%`;
|
|
1252
|
-
}
|
|
1253
|
-
if (format === "months") {
|
|
1254
|
-
const rounded = Math.round(value * 10) / 10;
|
|
1255
|
-
return `${rounded} ${_optionalChain([options, 'optionalAccess', _10 => _10.suffix]) || "months"}`;
|
|
1256
|
-
}
|
|
1257
|
-
if (absValue >= 1e6) return `${sign}${(absValue / 1e6).toFixed(1)}M`;
|
|
1258
|
-
if (absValue >= 1e3) return `${sign}${(absValue / 1e3).toFixed(1)}K`;
|
|
1259
|
-
return value.toLocaleString();
|
|
1260
|
-
}
|
|
1261
|
-
function getTrendColors(direction, polarity = "positive") {
|
|
1262
|
-
if (direction === "neutral" || polarity === "neutral") {
|
|
1263
|
-
return {
|
|
1264
|
-
textClass: "text-ods-text-secondary",
|
|
1265
|
-
badgeClass: "bg-ods-border text-ods-text-secondary"
|
|
1266
|
-
};
|
|
1267
|
-
}
|
|
1268
|
-
const isPositiveOutcome = direction === "up" && polarity === "positive" || direction === "down" && polarity === "negative";
|
|
1269
|
-
if (isPositiveOutcome) {
|
|
1270
|
-
return {
|
|
1271
|
-
textClass: "text-ods-success",
|
|
1272
|
-
badgeClass: "bg-ods-success-secondary text-ods-success"
|
|
1273
|
-
};
|
|
1274
|
-
}
|
|
1275
|
-
return {
|
|
1276
|
-
textClass: "text-ods-error",
|
|
1277
|
-
badgeClass: "bg-ods-error-secondary text-ods-error"
|
|
1278
|
-
};
|
|
1279
|
-
}
|
|
1280
|
-
function formatDateRange(start, end) {
|
|
1281
|
-
if (!start || !end) return "";
|
|
1282
|
-
const fmt = (s) => {
|
|
1283
|
-
const bareMatch = /^(\d{4})-(\d{2})-(\d{2})$/.exec(s);
|
|
1284
|
-
const d = bareMatch ? new Date(Number(bareMatch[1]), Number(bareMatch[2]) - 1, Number(bareMatch[3])) : new Date(s);
|
|
1285
|
-
if (Number.isNaN(d.getTime())) return s;
|
|
1286
|
-
return d.toLocaleDateString(void 0, {
|
|
1287
|
-
month: "short",
|
|
1288
|
-
day: "numeric",
|
|
1289
|
-
year: "numeric"
|
|
1290
|
-
});
|
|
1291
|
-
};
|
|
1292
|
-
return `${fmt(start)} \u2014 ${fmt(end)}`;
|
|
1293
|
-
}
|
|
1294
|
-
function formatDateTimeAt(dateString) {
|
|
1295
|
-
const date = new Date(dateString);
|
|
1296
|
-
const dateStr = date.toLocaleDateString("en-US", {
|
|
1297
|
-
month: "short",
|
|
1298
|
-
day: "numeric",
|
|
1299
|
-
year: "numeric"
|
|
1300
|
-
});
|
|
1301
|
-
const timeStr = date.toLocaleTimeString("en-US", {
|
|
1302
|
-
hour: "numeric",
|
|
1303
|
-
minute: "2-digit",
|
|
1304
|
-
hour12: true
|
|
1305
|
-
});
|
|
1306
|
-
return `${dateStr} at ${timeStr}`;
|
|
1307
|
-
}
|
|
1308
|
-
function formatDurationFromMs(ms) {
|
|
1309
|
-
if (!ms || isNaN(ms) || ms < 0) return "0ms";
|
|
1310
|
-
if (ms < 1e3) return `${ms}ms`;
|
|
1311
|
-
if (ms < 6e4) return `${(ms / 1e3).toFixed(1)}s`;
|
|
1312
|
-
return `${(ms / 6e4).toFixed(1)}m`;
|
|
1313
|
-
}
|
|
1314
|
-
function formatDuration(seconds) {
|
|
1315
|
-
if (seconds < 60) return `${seconds} seconds`;
|
|
1316
|
-
if (seconds < 3600) return `${Math.floor(seconds / 60)} minutes`;
|
|
1317
|
-
const hours = Math.floor(seconds / 3600);
|
|
1318
|
-
const minutes = Math.floor(seconds % 3600 / 60);
|
|
1319
|
-
if (minutes === 0) return `${hours} hour${hours > 1 ? "s" : ""}`;
|
|
1320
|
-
return `${hours} hour${hours > 1 ? "s" : ""} ${minutes} minute${minutes > 1 ? "s" : ""}`;
|
|
1321
|
-
}
|
|
1322
|
-
function formatUnderscoreText(text) {
|
|
1323
|
-
return text.split("_").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
|
|
1324
|
-
}
|
|
1325
|
-
function stripHtml(html) {
|
|
1326
|
-
let noTags = html;
|
|
1327
|
-
let prev;
|
|
1328
|
-
do {
|
|
1329
|
-
prev = noTags;
|
|
1330
|
-
noTags = noTags.replace(/<[^<>]*>/g, "");
|
|
1331
|
-
} while (noTags !== prev);
|
|
1332
|
-
return noTags.replace(/ /g, " ").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, '"').replace(/'/g, "'").replace(/'/g, "'").replace(/'/g, "'").replace(/&/g, "&").replace(/\s+/g, " ").trim();
|
|
1333
|
-
}
|
|
1334
|
-
function formatClassification(classification) {
|
|
1335
|
-
const customMappings = {
|
|
1336
|
-
openframe_selected: "OpenFrame Selected"
|
|
1337
|
-
};
|
|
1338
|
-
return customMappings[classification] || formatUnderscoreText(classification);
|
|
1339
|
-
}
|
|
1340
|
-
function formatPricingModel(pricingModel) {
|
|
1341
|
-
const customMappings = {
|
|
1342
|
-
one_time: "One-time Purchase",
|
|
1343
|
-
self_hosted: "Self-hosted"
|
|
1344
|
-
};
|
|
1345
|
-
return customMappings[pricingModel] || formatUnderscoreText(pricingModel);
|
|
1346
|
-
}
|
|
1347
|
-
function formatBioText(aboutHtml, fallback = "") {
|
|
1348
|
-
if (!aboutHtml || !aboutHtml.trim()) return fallback;
|
|
1349
|
-
if (aboutHtml.includes("<p")) {
|
|
1350
|
-
const paragraphs = aboutHtml.split(/<p[^<>]*>/).slice(1).map((part) => part.split("</p>")[0]).map((text) => stripHtml(text).trim()).filter((text) => text.length > 0);
|
|
1351
|
-
if (paragraphs.length > 0) return paragraphs.join(" ");
|
|
1352
|
-
}
|
|
1353
|
-
return stripHtml(aboutHtml).trim() || fallback;
|
|
1354
|
-
}
|
|
1355
|
-
|
|
1356
900
|
// src/components/ui/square-avatar.tsx
|
|
1357
901
|
|
|
1358
902
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
@@ -1401,7 +945,7 @@ var SquareAvatar = React4.memo(React4.forwardRef(
|
|
|
1401
945
|
"flex items-center justify-center text-xs font-medium text-[color:var(--ods-avatar-initials,var(--color-text-primary))]",
|
|
1402
946
|
initialsClassName,
|
|
1403
947
|
src && "hidden"
|
|
1404
|
-
), children: getFirstLastInitials(fallback || alt) || "?" }),
|
|
948
|
+
), children: _chunkY4JNA4W6cjs.getFirstLastInitials.call(void 0, fallback || alt) || "?" }),
|
|
1405
949
|
src && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1406
950
|
_chunkXL4V2PYGcjs.next_image_default,
|
|
1407
951
|
{
|
|
@@ -1432,7 +976,7 @@ var _reactdropdownmenu = require('@radix-ui/react-dropdown-menu'); var DropdownM
|
|
|
1432
976
|
|
|
1433
977
|
// node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs
|
|
1434
978
|
|
|
1435
|
-
var useLayoutEffect2 = _optionalChain([globalThis, 'optionalAccess',
|
|
979
|
+
var useLayoutEffect2 = _optionalChain([globalThis, 'optionalAccess', _7 => _7.document]) ? React5.useLayoutEffect : () => {
|
|
1436
980
|
};
|
|
1437
981
|
|
|
1438
982
|
// node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs
|
|
@@ -1470,7 +1014,7 @@ function useControllableState({
|
|
|
1470
1014
|
if (isControlled) {
|
|
1471
1015
|
const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
|
|
1472
1016
|
if (value2 !== prop) {
|
|
1473
|
-
_optionalChain([onChangeRef, 'access',
|
|
1017
|
+
_optionalChain([onChangeRef, 'access', _8 => _8.current, 'optionalCall', _9 => _9(value2)]);
|
|
1474
1018
|
}
|
|
1475
1019
|
} else {
|
|
1476
1020
|
setUncontrolledProp(nextValue);
|
|
@@ -1492,7 +1036,7 @@ function useUncontrolledState({
|
|
|
1492
1036
|
}, [onChange]);
|
|
1493
1037
|
React6.useEffect(() => {
|
|
1494
1038
|
if (prevValueRef.current !== value) {
|
|
1495
|
-
_optionalChain([onChangeRef, 'access',
|
|
1039
|
+
_optionalChain([onChangeRef, 'access', _10 => _10.current, 'optionalCall', _11 => _11(value)]);
|
|
1496
1040
|
prevValueRef.current = value;
|
|
1497
1041
|
}
|
|
1498
1042
|
}, [value, prevValueRef]);
|
|
@@ -1520,7 +1064,7 @@ var SecondaryAction = ({ action }) => {
|
|
|
1520
1064
|
e.preventDefault();
|
|
1521
1065
|
return;
|
|
1522
1066
|
}
|
|
1523
|
-
_optionalChain([action, 'access',
|
|
1067
|
+
_optionalChain([action, 'access', _12 => _12.onClick, 'optionalCall', _13 => _13()]);
|
|
1524
1068
|
},
|
|
1525
1069
|
[action]
|
|
1526
1070
|
);
|
|
@@ -1561,13 +1105,13 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1561
1105
|
const activate = _react.useCallback.call(void 0, () => {
|
|
1562
1106
|
if (item.disabled) return;
|
|
1563
1107
|
if (item.type === "checkbox") {
|
|
1564
|
-
_optionalChain([item, 'access',
|
|
1565
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
1108
|
+
_optionalChain([item, 'access', _14 => _14.onClick, 'optionalCall', _15 => _15()]);
|
|
1109
|
+
_optionalChain([onItemClick, 'optionalCall', _16 => _16(item)]);
|
|
1566
1110
|
return;
|
|
1567
1111
|
}
|
|
1568
1112
|
if (item.type === "submenu") return;
|
|
1569
|
-
_optionalChain([item, 'access',
|
|
1570
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
1113
|
+
_optionalChain([item, 'access', _17 => _17.onClick, 'optionalCall', _18 => _18()]);
|
|
1114
|
+
_optionalChain([onItemClick, 'optionalCall', _19 => _19(item)]);
|
|
1571
1115
|
}, [item, onItemClick]);
|
|
1572
1116
|
const handleClick = _react.useCallback.call(void 0,
|
|
1573
1117
|
(e) => {
|
|
@@ -1593,8 +1137,8 @@ var MenuItem = ({ item, onItemClick }) => {
|
|
|
1593
1137
|
e.stopPropagation();
|
|
1594
1138
|
return;
|
|
1595
1139
|
}
|
|
1596
|
-
_optionalChain([item, 'access',
|
|
1597
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
1140
|
+
_optionalChain([item, 'access', _20 => _20.onClick, 'optionalCall', _21 => _21()]);
|
|
1141
|
+
_optionalChain([onItemClick, 'optionalCall', _22 => _22(item)]);
|
|
1598
1142
|
},
|
|
1599
1143
|
[item, onItemClick]
|
|
1600
1144
|
);
|
|
@@ -1757,7 +1301,7 @@ var ActionsMenuDropdown = ({
|
|
|
1757
1301
|
});
|
|
1758
1302
|
const handleItemClick = _react.useCallback.call(void 0,
|
|
1759
1303
|
(item) => {
|
|
1760
|
-
_optionalChain([onItemClick, 'optionalCall',
|
|
1304
|
+
_optionalChain([onItemClick, 'optionalCall', _23 => _23(item)]);
|
|
1761
1305
|
if (item.type !== "checkbox" && item.type !== "submenu" && item.closeOnSelect !== false) {
|
|
1762
1306
|
setOpen(false);
|
|
1763
1307
|
}
|
|
@@ -1799,74 +1343,11 @@ var ActionsMenuDropdown = ({
|
|
|
1799
1343
|
] });
|
|
1800
1344
|
};
|
|
1801
1345
|
|
|
1802
|
-
// src/utils/image-proxy.ts
|
|
1803
|
-
function getProxiedImageUrl(imageUrl, options) {
|
|
1804
|
-
if (!imageUrl) return null;
|
|
1805
|
-
const proxyPrefix = _optionalChain([options, 'optionalAccess', _28 => _28.proxyPrefix]);
|
|
1806
|
-
const skipDomains = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _29 => _29.skipDomains]), () => ( []));
|
|
1807
|
-
const directHttps = _nullishCoalesce(_optionalChain([options, 'optionalAccess', _30 => _30.directHttps]), () => ( false));
|
|
1808
|
-
if (proxyPrefix && imageUrl.includes(proxyPrefix)) {
|
|
1809
|
-
return imageUrl;
|
|
1810
|
-
}
|
|
1811
|
-
if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) {
|
|
1812
|
-
return imageUrl;
|
|
1813
|
-
}
|
|
1814
|
-
if (directHttps && imageUrl.startsWith("https://")) {
|
|
1815
|
-
return imageUrl;
|
|
1816
|
-
}
|
|
1817
|
-
if (!proxyPrefix) {
|
|
1818
|
-
return imageUrl;
|
|
1819
|
-
}
|
|
1820
|
-
for (const domain of skipDomains) {
|
|
1821
|
-
if (imageUrl.includes(domain)) {
|
|
1822
|
-
return imageUrl;
|
|
1823
|
-
}
|
|
1824
|
-
}
|
|
1825
|
-
return `${proxyPrefix}?url=${encodeURIComponent(imageUrl)}`;
|
|
1826
|
-
}
|
|
1827
|
-
function urlPathLooksLikeSvg(imageUrl) {
|
|
1828
|
-
try {
|
|
1829
|
-
return /\.svg$/i.test(new URL(imageUrl).pathname);
|
|
1830
|
-
} catch (e2) {
|
|
1831
|
-
return /\.svg(\?|#|$)/i.test(imageUrl);
|
|
1832
|
-
}
|
|
1833
|
-
}
|
|
1834
|
-
function shouldProxyImage(imageUrl, proxyPrefix) {
|
|
1835
|
-
if (!imageUrl) return false;
|
|
1836
|
-
if (!imageUrl.startsWith("http://") && !imageUrl.startsWith("https://")) return false;
|
|
1837
|
-
if (proxyPrefix && imageUrl.includes(proxyPrefix)) return false;
|
|
1838
|
-
return true;
|
|
1839
|
-
}
|
|
1840
|
-
function generateImageSizes(_url) {
|
|
1841
|
-
return `(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw`;
|
|
1842
|
-
}
|
|
1843
|
-
|
|
1844
|
-
// src/components/chat/utils/is-cross-origin-url.ts
|
|
1845
|
-
function isCrossOriginUrl(url) {
|
|
1846
|
-
if (!url) return false;
|
|
1847
|
-
if (url.startsWith("/") && !url.startsWith("//")) return false;
|
|
1848
|
-
return true;
|
|
1849
|
-
}
|
|
1850
|
-
|
|
1851
|
-
// src/components/chat/utils/decide-new-tab.ts
|
|
1852
|
-
function decideNewTab(input) {
|
|
1853
|
-
const { href, targetPlatform, openIn, alwaysNewTab, runtimeMode, currentSource } = input;
|
|
1854
|
-
if (runtimeMode === "embed") return true;
|
|
1855
|
-
if (openIn === "new-tab") return true;
|
|
1856
|
-
if (alwaysNewTab === true) return true;
|
|
1857
|
-
if (openIn === "same-tab") return false;
|
|
1858
|
-
if (targetPlatform !== void 0 && targetPlatform !== null && currentSource) {
|
|
1859
|
-
return targetPlatform !== currentSource;
|
|
1860
|
-
}
|
|
1861
|
-
if (!href) return false;
|
|
1862
|
-
return isCrossOriginUrl(href);
|
|
1863
|
-
}
|
|
1864
|
-
|
|
1865
1346
|
// src/components/chat/utils/nav-anchor-props.ts
|
|
1866
1347
|
function computeIsNewTab(runtime, href, targetPlatform) {
|
|
1867
1348
|
if (!href) return false;
|
|
1868
1349
|
if (runtime.navigation.mode === "embed") return true;
|
|
1869
|
-
return _nullishCoalesce(_optionalChain([runtime, 'access',
|
|
1350
|
+
return _nullishCoalesce(_optionalChain([runtime, 'access', _24 => _24.navigation, 'access', _25 => _25.decideNewTab, 'optionalCall', _26 => _26({ href, targetPlatform })]), () => ( _chunkY4JNA4W6cjs.decideNewTab.call(void 0, {
|
|
1870
1351
|
href,
|
|
1871
1352
|
targetPlatform,
|
|
1872
1353
|
currentSource: _nullishCoalesce(runtime.source, () => ( ""))
|
|
@@ -1879,53 +1360,6 @@ function buildAnchorProps(href, isNewTab) {
|
|
|
1879
1360
|
return href ? { href, ...newTabAnchorAttrs(isNewTab) } : void 0;
|
|
1880
1361
|
}
|
|
1881
1362
|
|
|
1882
|
-
// src/components/chat/utils/chat-nav-resolution.ts
|
|
1883
|
-
var NEW_TAB_FEATURES = "noopener,noreferrer";
|
|
1884
|
-
function isModifierClick(e) {
|
|
1885
|
-
return e.button !== 0 || !!e.metaKey || !!e.ctrlKey || !!e.shiftKey || !!e.altKey;
|
|
1886
|
-
}
|
|
1887
|
-
function stripSameOriginToPath(href) {
|
|
1888
|
-
if (!href.startsWith("http")) return href;
|
|
1889
|
-
try {
|
|
1890
|
-
const u = new URL(href);
|
|
1891
|
-
return u.pathname + u.search + u.hash;
|
|
1892
|
-
} catch (e3) {
|
|
1893
|
-
return href;
|
|
1894
|
-
}
|
|
1895
|
-
}
|
|
1896
|
-
function resolveHrefForRuntime(href, runtime) {
|
|
1897
|
-
if (runtime.navigation.mode !== "embed") return href;
|
|
1898
|
-
if (href.startsWith("http")) return href;
|
|
1899
|
-
if (href.startsWith("//")) return href;
|
|
1900
|
-
const origin = runtime.navigation.defaultContentOrigin;
|
|
1901
|
-
if (!origin) return href;
|
|
1902
|
-
return origin.replace(/\/+$/, "") + (href.startsWith("/") ? href : "/" + href);
|
|
1903
|
-
}
|
|
1904
|
-
function resolveExternalNavigation(args) {
|
|
1905
|
-
let abs = args.href;
|
|
1906
|
-
if (abs.startsWith("//")) abs = window.location.protocol + abs;
|
|
1907
|
-
if (!abs.startsWith("http")) {
|
|
1908
|
-
if (args.runtime.navigation.defaultContentOrigin) {
|
|
1909
|
-
let origin = args.runtime.navigation.defaultContentOrigin;
|
|
1910
|
-
while (origin.endsWith("/")) origin = origin.slice(0, -1);
|
|
1911
|
-
abs = origin + (abs.startsWith("/") ? abs : "/" + abs);
|
|
1912
|
-
} else if (args.runtime.navigation.mode === "embed" && process.env.NODE_ENV !== "production") {
|
|
1913
|
-
console.warn(
|
|
1914
|
-
"[chat-nav-resolution] relative href in embed mode with no defaultContentOrigin set on runtime.navigation \u2014 link will resolve against the embedder origin.",
|
|
1915
|
-
{ href: abs, targetPlatform: args.targetPlatform }
|
|
1916
|
-
);
|
|
1917
|
-
}
|
|
1918
|
-
}
|
|
1919
|
-
const open = () => {
|
|
1920
|
-
if (args.runtime.navigation.openExternal) {
|
|
1921
|
-
args.runtime.navigation.openExternal(abs);
|
|
1922
|
-
} else {
|
|
1923
|
-
window.open(abs, "_blank", NEW_TAB_FEATURES);
|
|
1924
|
-
}
|
|
1925
|
-
};
|
|
1926
|
-
return { href: abs, open };
|
|
1927
|
-
}
|
|
1928
|
-
|
|
1929
1363
|
// src/components/chat/entity-cards/entity-author-card.tsx
|
|
1930
1364
|
_chunkWBR7H6E3cjs.init_next_link.call(void 0, );
|
|
1931
1365
|
|
|
@@ -1959,7 +1393,7 @@ function EntityMetadataAuthorCell({
|
|
|
1959
1393
|
{
|
|
1960
1394
|
src: author.avatar_url || "",
|
|
1961
1395
|
alt: fullName,
|
|
1962
|
-
fallback: nameInitials(fullName, ""),
|
|
1396
|
+
fallback: _chunkY4JNA4W6cjs.nameInitials.call(void 0, fullName, ""),
|
|
1963
1397
|
size: "md",
|
|
1964
1398
|
variant: "round"
|
|
1965
1399
|
}
|
|
@@ -1980,10 +1414,10 @@ function EntityAuthorCard({
|
|
|
1980
1414
|
renderEmptyAuthor = false,
|
|
1981
1415
|
className
|
|
1982
1416
|
}) {
|
|
1983
|
-
const hasAuthor = !!_optionalChain([author, 'optionalAccess',
|
|
1417
|
+
const hasAuthor = !!_optionalChain([author, 'optionalAccess', _27 => _27.full_name]);
|
|
1984
1418
|
if (!hasAuthor && !renderEmptyAuthor) return null;
|
|
1985
1419
|
const effectiveAuthor = hasAuthor ? author : EMPTY_AUTHOR_PLACEHOLDER;
|
|
1986
|
-
const formatted = publishedAt ? formatDate(publishedAt) : "";
|
|
1420
|
+
const formatted = publishedAt ? _chunkY4JNA4W6cjs.formatDate.call(void 0, publishedAt) : "";
|
|
1987
1421
|
const dateLabel = formatted === "Invalid Date" ? "" : formatted;
|
|
1988
1422
|
const showDateCell = !!dateLabel;
|
|
1989
1423
|
const extras = _nullishCoalesce(extraCells, () => ( []));
|
|
@@ -2042,22 +1476,13 @@ function BlogImagePlaceholder({
|
|
|
2042
1476
|
) });
|
|
2043
1477
|
}
|
|
2044
1478
|
|
|
2045
|
-
// src/utils/fetch-priority.ts
|
|
2046
|
-
|
|
2047
|
-
var REACT_MAJOR = parseInt((React.default.version || "0").split(".")[0], 10);
|
|
2048
|
-
var USE_CAMEL_CASE_FETCH_PRIORITY = REACT_MAJOR >= 19;
|
|
2049
|
-
function fetchPriorityProp(priority) {
|
|
2050
|
-
const value = priority === void 0 ? "auto" : typeof priority === "boolean" ? priority ? "high" : "low" : priority;
|
|
2051
|
-
return USE_CAMEL_CASE_FETCH_PRIORITY ? { fetchPriority: value } : { fetchpriority: value };
|
|
2052
|
-
}
|
|
2053
|
-
|
|
2054
1479
|
// src/components/features/video.tsx
|
|
2055
1480
|
|
|
2056
1481
|
var _muxplayerreact = require('@mux/mux-player-react'); var _muxplayerreact2 = _interopRequireDefault(_muxplayerreact);
|
|
2057
1482
|
|
|
2058
1483
|
if (typeof window !== "undefined") {
|
|
2059
1484
|
const w = window;
|
|
2060
|
-
if (!_optionalChain([w, 'access',
|
|
1485
|
+
if (!_optionalChain([w, 'access', _28 => _28.chrome, 'optionalAccess', _29 => _29.cast])) {
|
|
2061
1486
|
w.chrome = { ..._nullishCoalesce(w.chrome, () => ( {})), cast: { isAvailable: false } };
|
|
2062
1487
|
}
|
|
2063
1488
|
}
|
|
@@ -2086,7 +1511,7 @@ var YT_HOSTS = /* @__PURE__ */ new Set([
|
|
|
2086
1511
|
function isYouTubeUrl(url) {
|
|
2087
1512
|
try {
|
|
2088
1513
|
return YT_HOSTS.has(new URL(url, "http://placeholder.local").hostname.toLowerCase());
|
|
2089
|
-
} catch (
|
|
1514
|
+
} catch (e2) {
|
|
2090
1515
|
return false;
|
|
2091
1516
|
}
|
|
2092
1517
|
}
|
|
@@ -2098,7 +1523,7 @@ function extractYouTubeId(url) {
|
|
|
2098
1523
|
let u;
|
|
2099
1524
|
try {
|
|
2100
1525
|
u = new URL(url, "http://placeholder.local");
|
|
2101
|
-
} catch (
|
|
1526
|
+
} catch (e3) {
|
|
2102
1527
|
return null;
|
|
2103
1528
|
}
|
|
2104
1529
|
if (!YT_HOSTS.has(u.hostname.toLowerCase())) return null;
|
|
@@ -2247,7 +1672,7 @@ function YouTubeFacadeInner({
|
|
|
2247
1672
|
const iframe = iframeRef.current;
|
|
2248
1673
|
if (!iframe) return;
|
|
2249
1674
|
function subscribe() {
|
|
2250
|
-
_optionalChain([iframe, 'optionalAccess',
|
|
1675
|
+
_optionalChain([iframe, 'optionalAccess', _30 => _30.contentWindow, 'optionalAccess', _31 => _31.postMessage, 'call', _32 => _32(
|
|
2251
1676
|
'{"event":"listening"}',
|
|
2252
1677
|
YT_NOCOOKIE_ORIGIN
|
|
2253
1678
|
)]);
|
|
@@ -2261,17 +1686,17 @@ function YouTubeFacadeInner({
|
|
|
2261
1686
|
let payload = null;
|
|
2262
1687
|
try {
|
|
2263
1688
|
payload = JSON.parse(event.data);
|
|
2264
|
-
} catch (
|
|
1689
|
+
} catch (e4) {
|
|
2265
1690
|
return;
|
|
2266
1691
|
}
|
|
2267
1692
|
if (!payload || payload.event !== "infoDelivery") return;
|
|
2268
|
-
const state = _optionalChain([payload, 'access',
|
|
1693
|
+
const state = _optionalChain([payload, 'access', _33 => _33.info, 'optionalAccess', _34 => _34.playerState]);
|
|
2269
1694
|
if (typeof state !== "number") return;
|
|
2270
1695
|
if (state === YT_STATE_PLAYING) {
|
|
2271
1696
|
if (blurTimer !== null) return;
|
|
2272
1697
|
blurTimer = setTimeout(() => {
|
|
2273
1698
|
blurTimer = null;
|
|
2274
|
-
_optionalChain([iframeRef, 'access',
|
|
1699
|
+
_optionalChain([iframeRef, 'access', _35 => _35.current, 'optionalAccess', _36 => _36.blur, 'call', _37 => _37()]);
|
|
2275
1700
|
}, YT_PLAYING_BLUR_DELAY_MS);
|
|
2276
1701
|
return;
|
|
2277
1702
|
}
|
|
@@ -2317,7 +1742,7 @@ function YouTubeFacadeInner({
|
|
|
2317
1742
|
src: posterJpg,
|
|
2318
1743
|
alt: title,
|
|
2319
1744
|
loading: "lazy",
|
|
2320
|
-
...fetchPriorityProp(priority),
|
|
1745
|
+
..._chunkY4JNA4W6cjs.fetchPriorityProp.call(void 0, priority),
|
|
2321
1746
|
decoding: priority ? "sync" : "async",
|
|
2322
1747
|
className: "absolute inset-0 w-full h-full object-cover"
|
|
2323
1748
|
}
|
|
@@ -2329,27 +1754,6 @@ function YouTubeFacadeInner({
|
|
|
2329
1754
|
) });
|
|
2330
1755
|
}
|
|
2331
1756
|
|
|
2332
|
-
// src/components/layout/page-heading.tsx
|
|
2333
|
-
|
|
2334
|
-
var PAGE_HEADING_CLASS = "text-h1 text-ods-text-primary";
|
|
2335
|
-
var SECTION_HEADING_CLASS = "text-h2 text-ods-text-primary";
|
|
2336
|
-
var DESCRIPTION_CLASS = "mt-6 max-w-[640px] font-['DM_Sans'] text-[16px] md:text-[18px] leading-[24px] md:leading-[28px] text-ods-text-secondary";
|
|
2337
|
-
function PageHeading({
|
|
2338
|
-
children,
|
|
2339
|
-
as: Tag2 = "h1",
|
|
2340
|
-
description,
|
|
2341
|
-
className,
|
|
2342
|
-
descriptionClassName
|
|
2343
|
-
}) {
|
|
2344
|
-
const headingClass = className ? `${PAGE_HEADING_CLASS} ${className}` : PAGE_HEADING_CLASS;
|
|
2345
|
-
const descClass = descriptionClassName ? `${DESCRIPTION_CLASS} ${descriptionClassName}` : DESCRIPTION_CLASS;
|
|
2346
|
-
const hasDescription = description != null && description !== "" && typeof description !== "boolean";
|
|
2347
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
2348
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, Tag2, { className: headingClass, children }),
|
|
2349
|
-
hasDescription && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: descClass, children: description })
|
|
2350
|
-
] });
|
|
2351
|
-
}
|
|
2352
|
-
|
|
2353
1757
|
// src/components/features/video-ratio-tabs.tsx
|
|
2354
1758
|
|
|
2355
1759
|
var TAB_TRIGGER_CLASS = "rounded-none border-b-2 border-transparent data-[state=active]:border-ods-accent data-[state=active]:bg-transparent data-[state=active]:shadow-none px-4 py-2 text-sm text-ods-text-secondary data-[state=active]:text-ods-text-primary";
|
|
@@ -2436,7 +1840,7 @@ var RATIO_TO_CSS_ASPECT = {
|
|
|
2436
1840
|
landscape: "16 / 9"
|
|
2437
1841
|
};
|
|
2438
1842
|
function LazyBite({ ratio, children }) {
|
|
2439
|
-
const { ref, isNear } =
|
|
1843
|
+
const { ref, isNear } = _chunkTFSYSWPScjs.useNearViewport.call(void 0, "500px");
|
|
2440
1844
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, style: { aspectRatio: RATIO_TO_CSS_ASPECT[ratio] }, children: isNear ? children : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full h-full bg-ods-card rounded-md" }) });
|
|
2441
1845
|
}
|
|
2442
1846
|
function VideoBitesDisplay({
|
|
@@ -2461,7 +1865,7 @@ function VideoBitesDisplay({
|
|
|
2461
1865
|
const totalCount = grouped.portrait.length + grouped.square.length + grouped.landscape.length;
|
|
2462
1866
|
if (totalCount === 0) return null;
|
|
2463
1867
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
2464
|
-
showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${SECTION_HEADING_CLASS} break-words`, children: title }),
|
|
1868
|
+
showTitle && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkY4JNA4W6cjs.SECTION_HEADING_CLASS} break-words`, children: title }),
|
|
2465
1869
|
grouped.hasMultiple ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2466
1870
|
RatioTabs,
|
|
2467
1871
|
{
|
|
@@ -2588,7 +1992,7 @@ function EntityVideoSection({
|
|
|
2588
1992
|
}
|
|
2589
1993
|
)),
|
|
2590
1994
|
videoSummary && MarkdownRenderer && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-6 w-full min-w-0", children: [
|
|
2591
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
|
|
1995
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: `${_chunkY4JNA4W6cjs.SECTION_HEADING_CLASS} break-words`, children: "Summary" }),
|
|
2592
1996
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-h4 text-ods-text-primary break-words overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: videoSummary }) })
|
|
2593
1997
|
] }),
|
|
2594
1998
|
videoBites && videoBites.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -2602,40 +2006,6 @@ function EntityVideoSection({
|
|
|
2602
2006
|
] });
|
|
2603
2007
|
}
|
|
2604
2008
|
|
|
2605
|
-
// src/components/chat/utils/compact-card-classes.ts
|
|
2606
|
-
var COMPACT_CARD_OUTER = "my-1.5 flex items-start gap-3 w-full p-2 rounded-lg border border-ods-border bg-ods-card no-underline transition-colors hover:border-ods-text-secondary/40";
|
|
2607
|
-
var COMPACT_CARD_OUTER_STATIC = "my-1.5 flex items-start gap-3 w-full p-2 rounded-lg border border-ods-border bg-ods-card no-underline cursor-default";
|
|
2608
|
-
var COMPACT_CARD_SKELETON_OUTER = "my-1.5 flex w-full animate-pulse items-start gap-3 rounded-lg border border-ods-border bg-ods-card p-2";
|
|
2609
|
-
var COMPACT_CARD_IMAGE_SLOT = "relative block shrink-0 self-start w-14 h-14 aspect-square overflow-hidden rounded-md bg-ods-bg";
|
|
2610
|
-
var COMPACT_CARD_SKELETON_IMAGE_SLOT = "block h-14 w-14 aspect-square shrink-0 self-start rounded-md bg-ods-bg";
|
|
2611
|
-
var COMPACT_CARD_ICON_SLOT = "flex h-14 w-14 aspect-square shrink-0 self-start items-center justify-center rounded-md bg-ods-bg text-ods-accent";
|
|
2612
|
-
var COMPACT_CARD_TEXT_COL = "flex min-w-0 flex-1 flex-col gap-0.5 min-h-14";
|
|
2613
|
-
var COMPACT_CARD_TITLE_ROW = "flex items-center min-w-0 h-5";
|
|
2614
|
-
var COMPACT_CARD_META_ROW_BOX = "flex items-center min-w-0 h-4";
|
|
2615
|
-
var COMPACT_CARD_TITLE = "truncate text-sm font-semibold leading-5 text-ods-text-primary";
|
|
2616
|
-
var COMPACT_CARD_SUBTITLE = "truncate text-[11px] leading-4 text-ods-text-secondary";
|
|
2617
|
-
var COMPACT_CARD_SUMMARY = "truncate text-[11px] leading-4 text-ods-text-secondary/80";
|
|
2618
|
-
var COMPACT_CARD_META_ROW = "flex items-center gap-1.5 min-w-0 text-[11px] leading-4 text-ods-text-secondary";
|
|
2619
|
-
var COMPACT_CARD_ROW_FILLER = "\xA0";
|
|
2620
|
-
var SAFE_URL_SCHEMES = ["http:", "https:", "mailto:"];
|
|
2621
|
-
function safeHref(url) {
|
|
2622
|
-
if (!url) return null;
|
|
2623
|
-
if (/[\u0000-\u001f\u007f\u200b-\u200d\u2028\u2029\ufeff]/.test(url)) return null;
|
|
2624
|
-
const trimmed = url.trim();
|
|
2625
|
-
if (!trimmed) return null;
|
|
2626
|
-
if (trimmed.startsWith("/") && !trimmed.startsWith("//")) return trimmed;
|
|
2627
|
-
if (trimmed.startsWith("#")) return trimmed;
|
|
2628
|
-
if (/^[a-z][a-z0-9+.-]*:$/i.test(trimmed)) return null;
|
|
2629
|
-
try {
|
|
2630
|
-
const parsed = new URL(trimmed, "https://_safehref_base.invalid");
|
|
2631
|
-
if (!SAFE_URL_SCHEMES.includes(parsed.protocol)) return null;
|
|
2632
|
-
if ((parsed.protocol === "https:" || parsed.protocol === "http:") && !parsed.hostname) return null;
|
|
2633
|
-
return trimmed;
|
|
2634
|
-
} catch (e7) {
|
|
2635
|
-
return null;
|
|
2636
|
-
}
|
|
2637
|
-
}
|
|
2638
|
-
|
|
2639
2009
|
// src/components/chat/entity-cards/onboarding-guide-card.tsx
|
|
2640
2010
|
_chunkWBR7H6E3cjs.init_next_link.call(void 0, );
|
|
2641
2011
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
@@ -2669,9 +2039,9 @@ function useEntityCardPlaceholder({
|
|
|
2669
2039
|
aspect = "wide"
|
|
2670
2040
|
}) {
|
|
2671
2041
|
const runtime = _chunkAQOWFSMBcjs.useChatRuntime.call(void 0, );
|
|
2672
|
-
const builder = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess',
|
|
2673
|
-
const enabled = placeholderUrl === void 0 && !!_optionalChain([runtime, 'optionalAccess',
|
|
2674
|
-
const derived =
|
|
2042
|
+
const builder = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _38 => _38.resolvePlaceholderUrl]), () => ( NO_OP_BUILDER));
|
|
2043
|
+
const enabled = placeholderUrl === void 0 && !!_optionalChain([runtime, 'optionalAccess', _39 => _39.resolvePlaceholderUrl]);
|
|
2044
|
+
const derived = _chunkTFSYSWPScjs.useOgPlaceholder.call(void 0, builder, title, siteName, enabled, aspect);
|
|
2675
2045
|
return placeholderUrl !== void 0 ? placeholderUrl : derived;
|
|
2676
2046
|
}
|
|
2677
2047
|
|
|
@@ -2727,12 +2097,12 @@ function OnboardingGuideCardSkeleton({ size = "default" }) {
|
|
|
2727
2097
|
] });
|
|
2728
2098
|
}
|
|
2729
2099
|
if (size === "sm") {
|
|
2730
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_SKELETON_OUTER, children: [
|
|
2731
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
2732
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
2733
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
|
|
2734
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
|
|
2735
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
|
|
2100
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_SKELETON_OUTER, children: [
|
|
2101
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_SKELETON_IMAGE_SLOT }),
|
|
2102
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_TEXT_COL, children: [
|
|
2103
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3.5 w-3/5 rounded bg-ods-bg" }) }),
|
|
2104
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3 w-2/5 rounded bg-ods-bg/70" }) }),
|
|
2105
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3 w-11/12 rounded bg-ods-bg/40" }) })
|
|
2736
2106
|
] }),
|
|
2737
2107
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex shrink-0 items-center self-start h-5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "h-3.5 w-3.5 rounded bg-ods-bg" }) })
|
|
2738
2108
|
] });
|
|
@@ -2778,7 +2148,7 @@ function OnboardingGuideCard({
|
|
|
2778
2148
|
const coverImage = guide.featured_image || guide.main_video_thumbnail || guide.og_image_url || null;
|
|
2779
2149
|
const hasVideoCover = !!(guide.main_video_thumbnail || guide.highlight_video_thumbnail);
|
|
2780
2150
|
const stepLabel = typeof guide.step_order === "number" ? String(guide.step_order).padStart(2, "0") : "\u2014";
|
|
2781
|
-
const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? formatDurationMMSS(Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
|
|
2151
|
+
const durationLabel = typeof guide.highlight_video_duration_ms === "number" && guide.highlight_video_duration_ms > 0 ? _chunkY4JNA4W6cjs.formatDurationMMSS.call(void 0, Math.floor(guide.highlight_video_duration_ms / 1e3)) : "";
|
|
2782
2152
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2783
2153
|
_chunkWBR7H6E3cjs.next_link_default,
|
|
2784
2154
|
{
|
|
@@ -2851,14 +2221,14 @@ function OnboardingGuideCard({
|
|
|
2851
2221
|
const compactCover = coverImage || placeholderUrl || null;
|
|
2852
2222
|
const hasVideoCover = !guide.featured_image && !!guide.main_video_thumbnail;
|
|
2853
2223
|
const summary2 = stripMarkdownPreview(guide.video_summary || guide.content || "");
|
|
2854
|
-
const author = _optionalChain([guide, 'access',
|
|
2224
|
+
const author = _optionalChain([guide, 'access', _40 => _40.author, 'optionalAccess', _41 => _41.full_name, 'optionalAccess', _42 => _42.trim, 'call', _43 => _43()]) || "";
|
|
2855
2225
|
const subtitleParts = [
|
|
2856
2226
|
`Step ${guide.step_order}`,
|
|
2857
2227
|
guide.section,
|
|
2858
2228
|
author
|
|
2859
2229
|
].filter((s) => typeof s === "string" && s.length > 0);
|
|
2860
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWBR7H6E3cjs.next_link_default, { href, target, rel, prefetch: false, className: _chunkFIG2RKZFcjs.cn.call(void 0, COMPACT_CARD_OUTER, className), children: [
|
|
2861
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_IMAGE_SLOT, children: [
|
|
2230
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkWBR7H6E3cjs.next_link_default, { href, target, rel, prefetch: false, className: _chunkFIG2RKZFcjs.cn.call(void 0, _chunkY4JNA4W6cjs.COMPACT_CARD_OUTER, className), children: [
|
|
2231
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_IMAGE_SLOT, children: [
|
|
2862
2232
|
compactCover ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
2863
2233
|
_chunkXL4V2PYGcjs.next_image_default,
|
|
2864
2234
|
{
|
|
@@ -2872,10 +2242,10 @@ function OnboardingGuideCard({
|
|
|
2872
2242
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex h-full w-full items-center justify-center text-ods-accent", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.GraduationCap, { className: "w-4 h-4" }) }),
|
|
2873
2243
|
hasVideoCover && compactCover && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "absolute inset-0 flex items-center justify-center bg-black/30", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Play, { className: "h-4 w-4 text-white", fill: "white" }) })
|
|
2874
2244
|
] }),
|
|
2875
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: COMPACT_CARD_TEXT_COL, children: [
|
|
2876
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkFIG2RKZFcjs.cn.call(void 0, COMPACT_CARD_TITLE, "font-['Azeret_Mono']"), children: guide.title }) }),
|
|
2877
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-[11px] leading-4 text-[var(--color-accent-primary)]", children: subtitleParts.join(" \xB7 ") }) }),
|
|
2878
|
-
/* @__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: summary2 || COMPACT_CARD_ROW_FILLER }) })
|
|
2245
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_TEXT_COL, children: [
|
|
2246
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_TITLE_ROW, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkFIG2RKZFcjs.cn.call(void 0, _chunkY4JNA4W6cjs.COMPACT_CARD_TITLE, "font-['Azeret_Mono']"), children: guide.title }) }),
|
|
2247
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "truncate text-[11px] leading-4 text-[var(--color-accent-primary)]", children: subtitleParts.join(" \xB7 ") }) }),
|
|
2248
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_META_ROW_BOX, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunkY4JNA4W6cjs.COMPACT_CARD_SUMMARY, children: summary2 || _chunkY4JNA4W6cjs.COMPACT_CARD_ROW_FILLER }) })
|
|
2879
2249
|
] }),
|
|
2880
2250
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex shrink-0 items-center self-start h-5 text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ExternalLink, { className: "w-3.5 h-3.5" }) })
|
|
2881
2251
|
] });
|
|
@@ -2915,414 +2285,6 @@ function OnboardingGuideCard({
|
|
|
2915
2285
|
);
|
|
2916
2286
|
}
|
|
2917
2287
|
|
|
2918
|
-
// src/utils/source-icons.ts
|
|
2919
|
-
var SOURCE_ICON_NAMES = {
|
|
2920
|
-
// Doc tables
|
|
2921
|
-
"openframe-docs": "openframe",
|
|
2922
|
-
"data-room-docs": "shield",
|
|
2923
|
-
// CMS / programs
|
|
2924
|
-
"blog-posts": "newspaper",
|
|
2925
|
-
"product-releases": "rocket",
|
|
2926
|
-
"case-studies": "briefcase",
|
|
2927
|
-
"onboarding-guides": "graduation-cap",
|
|
2928
|
-
webinars: "video",
|
|
2929
|
-
events: "calendar",
|
|
2930
|
-
podcasts: "headphones",
|
|
2931
|
-
"customer-interviews": "users",
|
|
2932
|
-
// Financials
|
|
2933
|
-
"investor-updates": "mail",
|
|
2934
|
-
"financial-kpis": "activity",
|
|
2935
|
-
"financial-cap-table": "table",
|
|
2936
|
-
"financial-pnl": "trending-up",
|
|
2937
|
-
"financial-balance-sheet": "dollar-sign",
|
|
2938
|
-
"financial-cash-flow": "banknote",
|
|
2939
|
-
// ClickUp
|
|
2940
|
-
"clickup-roadmap": "clickup",
|
|
2941
|
-
"clickup-delivery": "clickup",
|
|
2942
|
-
"clickup-tasks-internal": "clickup",
|
|
2943
|
-
// GitHub
|
|
2944
|
-
"github-commits": "github",
|
|
2945
|
-
"github-pull-requests": "github",
|
|
2946
|
-
"github-pr-reviews": "github",
|
|
2947
|
-
"github-commits-public": "github",
|
|
2948
|
-
"github-pull-requests-public": "github",
|
|
2949
|
-
"github-pr-reviews-public": "github",
|
|
2950
|
-
// HubSpot
|
|
2951
|
-
"hubspot-tickets": "hubspot",
|
|
2952
|
-
"hubspot-tickets-anon": "hubspot",
|
|
2953
|
-
"hubspot-tickets-self": "hubspot",
|
|
2954
|
-
// Communications
|
|
2955
|
-
"slack-messages": "slack"
|
|
2956
|
-
};
|
|
2957
|
-
function getSourceIconName(tableId) {
|
|
2958
|
-
if (!tableId) return void 0;
|
|
2959
|
-
return SOURCE_ICON_NAMES[tableId];
|
|
2960
|
-
}
|
|
2961
|
-
var SOURCE_LABELS_BY_TABLE = {
|
|
2962
|
-
// Doc tables
|
|
2963
|
-
"openframe-docs": "OpenFrame Docs",
|
|
2964
|
-
"data-room-docs": "Data Room",
|
|
2965
|
-
// CMS / programs
|
|
2966
|
-
"blog-posts": "Blog Posts",
|
|
2967
|
-
"product-releases": "Product Releases",
|
|
2968
|
-
"case-studies": "Case Studies",
|
|
2969
|
-
"onboarding-guides": "Onboarding Guides",
|
|
2970
|
-
webinars: "Webinars",
|
|
2971
|
-
events: "Events",
|
|
2972
|
-
podcasts: "Podcasts",
|
|
2973
|
-
"customer-interviews": "Customer Interviews",
|
|
2974
|
-
// Financials
|
|
2975
|
-
"investor-updates": "Investor Updates",
|
|
2976
|
-
"financial-kpis": "Financial KPIs",
|
|
2977
|
-
"financial-cap-table": "Cap Table",
|
|
2978
|
-
"financial-pnl": "Profit & Loss",
|
|
2979
|
-
"financial-balance-sheet": "Balance Sheet",
|
|
2980
|
-
"financial-cash-flow": "Cash Flow",
|
|
2981
|
-
// ClickUp
|
|
2982
|
-
"clickup-roadmap": "ClickUp Roadmap",
|
|
2983
|
-
"clickup-delivery": "ClickUp Delivery",
|
|
2984
|
-
"clickup-tasks-internal": "ClickUp Tasks",
|
|
2985
|
-
// GitHub
|
|
2986
|
-
"github-commits": "GitHub Commits",
|
|
2987
|
-
"github-pull-requests": "GitHub Pull Requests",
|
|
2988
|
-
"github-pr-reviews": "GitHub PR Reviews",
|
|
2989
|
-
"github-commits-public": "OpenFrame Commits",
|
|
2990
|
-
"github-pull-requests-public": "OpenFrame Pull Requests",
|
|
2991
|
-
"github-pr-reviews-public": "OpenFrame PR Reviews",
|
|
2992
|
-
// HubSpot
|
|
2993
|
-
"hubspot-tickets": "HubSpot Tickets",
|
|
2994
|
-
"hubspot-tickets-anon": "Known Issues",
|
|
2995
|
-
"hubspot-tickets-self": "My Tickets",
|
|
2996
|
-
// Communications
|
|
2997
|
-
"slack-messages": "OpenMSP Community"
|
|
2998
|
-
};
|
|
2999
|
-
function getSourceLabel(tableId) {
|
|
3000
|
-
return _nullishCoalesce(SOURCE_LABELS_BY_TABLE[tableId], () => ( tableId));
|
|
3001
|
-
}
|
|
3002
|
-
var DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = {
|
|
3003
|
-
// Doc tables
|
|
3004
|
-
markdown: "openframe-docs",
|
|
3005
|
-
data_room_doc: "data-room-docs",
|
|
3006
|
-
// CMS / programs
|
|
3007
|
-
blog_post: "blog-posts",
|
|
3008
|
-
product_release: "product-releases",
|
|
3009
|
-
case_study: "case-studies",
|
|
3010
|
-
onboarding_guide: "onboarding-guides",
|
|
3011
|
-
webinar: "webinars",
|
|
3012
|
-
event: "events",
|
|
3013
|
-
podcast: "podcasts",
|
|
3014
|
-
customer_interview: "customer-interviews",
|
|
3015
|
-
// Financials
|
|
3016
|
-
investor_update: "investor-updates",
|
|
3017
|
-
financial_kpi: "financial-kpis",
|
|
3018
|
-
cap_table: "financial-cap-table",
|
|
3019
|
-
profit_loss: "financial-pnl",
|
|
3020
|
-
balance_sheet: "financial-balance-sheet",
|
|
3021
|
-
cash_flow: "financial-cash-flow",
|
|
3022
|
-
// ClickUp
|
|
3023
|
-
roadmap_item: "clickup-roadmap",
|
|
3024
|
-
delivery_item: "clickup-delivery",
|
|
3025
|
-
internal_task: "clickup-tasks-internal",
|
|
3026
|
-
// GitHub
|
|
3027
|
-
github_commit: "github-commits",
|
|
3028
|
-
github_pull_request: "github-pull-requests",
|
|
3029
|
-
github_pr_review: "github-pr-reviews",
|
|
3030
|
-
github_commit_public: "github-commits-public",
|
|
3031
|
-
github_pull_request_public: "github-pull-requests-public",
|
|
3032
|
-
github_pr_review_public: "github-pr-reviews-public",
|
|
3033
|
-
// HubSpot
|
|
3034
|
-
hubspot_ticket: "hubspot-tickets",
|
|
3035
|
-
hubspot_ticket_anon: "hubspot-tickets-anon",
|
|
3036
|
-
hubspot_ticket_self: "hubspot-tickets-self",
|
|
3037
|
-
// Communications
|
|
3038
|
-
slack_message: "slack-messages"
|
|
3039
|
-
};
|
|
3040
|
-
function defaultTableIdForDocumentType(documentType) {
|
|
3041
|
-
return _nullishCoalesce(DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID[documentType], () => ( null));
|
|
3042
|
-
}
|
|
3043
|
-
|
|
3044
|
-
// src/components/chat/utils/icon-registry.ts
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3048
|
-
|
|
3049
|
-
|
|
3050
|
-
|
|
3051
|
-
|
|
3052
|
-
|
|
3053
|
-
|
|
3054
|
-
|
|
3055
|
-
|
|
3056
|
-
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
var OpenFrameLogoIcon = ({ className }) => _react.createElement.call(void 0, _chunkLGLPNWS6cjs.OpenFrameLogo, { className, upperPathColor: "currentColor" });
|
|
3084
|
-
var ICON_REGISTRY = {
|
|
3085
|
-
// lucide-react (kebab-case)
|
|
3086
|
-
activity: _lucidereact.Activity,
|
|
3087
|
-
banknote: _lucidereact.Banknote,
|
|
3088
|
-
bell: _lucidereact.Bell,
|
|
3089
|
-
"book-open": _lucidereact.BookOpen,
|
|
3090
|
-
box: _lucidereact.Box,
|
|
3091
|
-
briefcase: _lucidereact.Briefcase,
|
|
3092
|
-
calendar: _lucidereact.Calendar,
|
|
3093
|
-
"check-square": _lucidereact.CheckSquare,
|
|
3094
|
-
"dollar-sign": _lucidereact.DollarSign,
|
|
3095
|
-
// For brand-vs-lucide variants the kebab key is the BRAND (most-common
|
|
3096
|
-
// social-platform intent); `'<name>-lucide'` carries the lucide outline.
|
|
3097
|
-
facebook: _chunkLGLPNWS6cjs.FacebookIcon,
|
|
3098
|
-
"facebook-lucide": _lucidereact.Facebook,
|
|
3099
|
-
"file-text": _lucidereact.FileText,
|
|
3100
|
-
// `'github-lucide'` is the lucide outline glyph (used by
|
|
3101
|
-
// `social_platforms.icon_name='Github'`); `'github'` is the brand icon
|
|
3102
|
-
// (used by `chat_admin_slash_commands.icon_name='github'`). The PascalCase
|
|
3103
|
-
// alias `'Github' → 'github-lucide'` routes the lucide glyph for
|
|
3104
|
-
// social-platform DB rows; `'GitHubIcon' → 'github'` keeps brand routing
|
|
3105
|
-
// consistent for callers that store the PascalCase component name.
|
|
3106
|
-
github: _chunkLGLPNWS6cjs.GitHubIcon,
|
|
3107
|
-
"github-lucide": _lucidereact.Github,
|
|
3108
|
-
globe: _lucidereact.Globe,
|
|
3109
|
-
"graduation-cap": _lucidereact.GraduationCap,
|
|
3110
|
-
headphones: _lucidereact.Headphones,
|
|
3111
|
-
info: _lucidereact.Info,
|
|
3112
|
-
instagram: _chunkLGLPNWS6cjs.InstagramIcon,
|
|
3113
|
-
"instagram-lucide": _lucidereact.Instagram,
|
|
3114
|
-
mail: _lucidereact.Mail,
|
|
3115
|
-
megaphone: _lucidereact.Megaphone,
|
|
3116
|
-
"message-circle": _lucidereact.MessageCircle,
|
|
3117
|
-
"message-square": _lucidereact.MessageSquare,
|
|
3118
|
-
newspaper: _lucidereact.Newspaper,
|
|
3119
|
-
package: _lucidereact.Package,
|
|
3120
|
-
"pen-square": _lucidereact.PenSquare,
|
|
3121
|
-
rocket: _lucidereact.Rocket,
|
|
3122
|
-
search: _lucidereact.Search,
|
|
3123
|
-
send: _lucidereact.Send,
|
|
3124
|
-
shield: _lucidereact.Shield,
|
|
3125
|
-
star: _lucidereact.Star,
|
|
3126
|
-
table: _lucidereact.TableProperties,
|
|
3127
|
-
"trending-up": _lucidereact.TrendingUp,
|
|
3128
|
-
twitter: _lucidereact.Twitter,
|
|
3129
|
-
users: _lucidereact.Users,
|
|
3130
|
-
video: _lucidereact.Video,
|
|
3131
|
-
youtube: _chunkLGLPNWS6cjs.YouTubeIcon,
|
|
3132
|
-
"youtube-lucide": _lucidereact.Youtube,
|
|
3133
|
-
// brand-only icons (no lucide variant in current use)
|
|
3134
|
-
slack: _chunkLGLPNWS6cjs.SlackIcon,
|
|
3135
|
-
clickup: _chunkLGLPNWS6cjs.ClickUpIcon,
|
|
3136
|
-
hubspot: _chunkLGLPNWS6cjs.HubspotIcon,
|
|
3137
|
-
linkedin: _chunkLGLPNWS6cjs.LinkedInIcon,
|
|
3138
|
-
x: _chunkLGLPNWS6cjs.XLogo,
|
|
3139
|
-
openframe: OpenFrameLogoIcon
|
|
3140
|
-
};
|
|
3141
|
-
var PASCAL_TO_KEBAB_ALIASES = {
|
|
3142
|
-
// Lucide PascalCase names → kebab equivalents
|
|
3143
|
-
Activity: "activity",
|
|
3144
|
-
Banknote: "banknote",
|
|
3145
|
-
Bell: "bell",
|
|
3146
|
-
BookOpen: "book-open",
|
|
3147
|
-
Box: "box",
|
|
3148
|
-
Briefcase: "briefcase",
|
|
3149
|
-
Calendar: "calendar",
|
|
3150
|
-
CheckSquare: "check-square",
|
|
3151
|
-
DollarSign: "dollar-sign",
|
|
3152
|
-
// Lucide PascalCase → the `-lucide` kebab variant (kebab default is the
|
|
3153
|
-
// brand icon for the social-platform names below).
|
|
3154
|
-
Facebook: "facebook-lucide",
|
|
3155
|
-
FileText: "file-text",
|
|
3156
|
-
Github: "github-lucide",
|
|
3157
|
-
Globe: "globe",
|
|
3158
|
-
GraduationCap: "graduation-cap",
|
|
3159
|
-
Headphones: "headphones",
|
|
3160
|
-
Info: "info",
|
|
3161
|
-
Instagram: "instagram-lucide",
|
|
3162
|
-
Mail: "mail",
|
|
3163
|
-
Megaphone: "megaphone",
|
|
3164
|
-
MessageCircle: "message-circle",
|
|
3165
|
-
MessageSquare: "message-square",
|
|
3166
|
-
Newspaper: "newspaper",
|
|
3167
|
-
Package: "package",
|
|
3168
|
-
PenSquare: "pen-square",
|
|
3169
|
-
Rocket: "rocket",
|
|
3170
|
-
Search: "search",
|
|
3171
|
-
Send: "send",
|
|
3172
|
-
Shield: "shield",
|
|
3173
|
-
Star: "star",
|
|
3174
|
-
TableProperties: "table",
|
|
3175
|
-
TrendingUp: "trending-up",
|
|
3176
|
-
Twitter: "twitter",
|
|
3177
|
-
Users: "users",
|
|
3178
|
-
Video: "video",
|
|
3179
|
-
Youtube: "youtube-lucide",
|
|
3180
|
-
// Brand-icon PascalCase exports → kebab (kebab default is the brand)
|
|
3181
|
-
SlackIcon: "slack",
|
|
3182
|
-
GitHubIcon: "github",
|
|
3183
|
-
ClickUpIcon: "clickup",
|
|
3184
|
-
HubspotIcon: "hubspot",
|
|
3185
|
-
LinkedInIcon: "linkedin",
|
|
3186
|
-
FacebookIcon: "facebook",
|
|
3187
|
-
InstagramIcon: "instagram",
|
|
3188
|
-
YouTubeIcon: "youtube",
|
|
3189
|
-
XLogo: "x",
|
|
3190
|
-
OpenFrameLogo: "openframe"
|
|
3191
|
-
};
|
|
3192
|
-
function normalizeIconKey(key) {
|
|
3193
|
-
return _nullishCoalesce(PASCAL_TO_KEBAB_ALIASES[key], () => ( key));
|
|
3194
|
-
}
|
|
3195
|
-
function getIconComponent(iconName) {
|
|
3196
|
-
if (!iconName) return _lucidereact.FileText;
|
|
3197
|
-
return _nullishCoalesce(ICON_REGISTRY[normalizeIconKey(iconName)], () => ( _lucidereact.FileText));
|
|
3198
|
-
}
|
|
3199
|
-
var SIZE_CLASSES = {
|
|
3200
|
-
xs: "w-3 h-3",
|
|
3201
|
-
// 12px
|
|
3202
|
-
sm: "w-4 h-4",
|
|
3203
|
-
// 16px
|
|
3204
|
-
md: "w-6 h-6",
|
|
3205
|
-
// 24px
|
|
3206
|
-
lg: "w-8 h-8",
|
|
3207
|
-
// 32px
|
|
3208
|
-
xl: "w-12 h-12"
|
|
3209
|
-
// 48px
|
|
3210
|
-
};
|
|
3211
|
-
var ICON_COLORS = {
|
|
3212
|
-
linkedin: { color: "#0A66C2" },
|
|
3213
|
-
facebook: { color: "#1877F2" },
|
|
3214
|
-
youtube: { color: "#FF0000" }
|
|
3215
|
-
};
|
|
3216
|
-
function getDynamicIcon(iconName, size = "md", className) {
|
|
3217
|
-
if (!iconName) {
|
|
3218
|
-
console.warn("[getDynamicIcon] No iconName provided, using Globe fallback");
|
|
3219
|
-
return _react.createElement.call(void 0, _lucidereact.Globe, { className: SIZE_CLASSES[size] });
|
|
3220
|
-
}
|
|
3221
|
-
const sizeClass = SIZE_CLASSES[size];
|
|
3222
|
-
const finalClassName = className ? `${sizeClass} ${className}` : sizeClass;
|
|
3223
|
-
const canonicalKey = normalizeIconKey(iconName);
|
|
3224
|
-
const IconComponent = ICON_REGISTRY[canonicalKey];
|
|
3225
|
-
if (IconComponent) {
|
|
3226
|
-
const colorConfig = ICON_COLORS[canonicalKey] || {};
|
|
3227
|
-
return _react.createElement.call(void 0, IconComponent, { className: finalClassName, ...colorConfig });
|
|
3228
|
-
}
|
|
3229
|
-
console.error(
|
|
3230
|
-
`[getDynamicIcon] Icon NOT found in registry: "${iconName}" (normalized to "${canonicalKey}"). Available icons:`,
|
|
3231
|
-
Object.keys(ICON_REGISTRY)
|
|
3232
|
-
);
|
|
3233
|
-
return _react.createElement.call(void 0, _lucidereact.Globe, { className: finalClassName });
|
|
3234
|
-
}
|
|
3235
|
-
|
|
3236
|
-
// src/components/chat/utils/source-row-cta.ts
|
|
3237
|
-
|
|
3238
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
3239
|
-
function sanitizePath(path) {
|
|
3240
|
-
return (path || "").replace(/[^a-zA-Z0-9/_\-.]/g, "");
|
|
3241
|
-
}
|
|
3242
|
-
function sourceRowCtxFromRuntime(runtime, surface = {}) {
|
|
3243
|
-
return {
|
|
3244
|
-
currentPlatform: _nullishCoalesce(runtime.source, () => ( null)),
|
|
3245
|
-
composeContentUrl: runtime.composeContentUrl,
|
|
3246
|
-
docPlatformTargets: runtime.docPlatformTargets,
|
|
3247
|
-
baseRoute: surface.baseRoute,
|
|
3248
|
-
chipBasePlatform: surface.chipBasePlatform
|
|
3249
|
-
};
|
|
3250
|
-
}
|
|
3251
|
-
function pickSourceIcon(sourceRepo, documentType) {
|
|
3252
|
-
const iconName = sourceRepo ? getSourceIconName(sourceRepo) : void 0;
|
|
3253
|
-
const icon = iconName ? getIconComponent(iconName) : _lucidereact.FileText;
|
|
3254
|
-
const iconLabel = _nullishCoalesce(documentType, () => ( "Source"));
|
|
3255
|
-
return { icon, iconLabel };
|
|
3256
|
-
}
|
|
3257
|
-
var DOC_TABLE_TYPES = ["markdown", "data_room_doc"];
|
|
3258
|
-
function shouldFallbackToPathNav(row) {
|
|
3259
|
-
return !!row.documentType && DOC_TABLE_TYPES.includes(row.documentType);
|
|
3260
|
-
}
|
|
3261
|
-
function resolveSourceRowCTA(row, ctx = {}) {
|
|
3262
|
-
const sourceRepo = _nullishCoalesce(_nullishCoalesce(row.sourceRepo, () => ( (row.documentType && ctx.tableIdForDocumentType ? ctx.tableIdForDocumentType(row.documentType) : null))), () => ( null));
|
|
3263
|
-
const { icon, iconLabel } = pickSourceIcon(sourceRepo, row.documentType);
|
|
3264
|
-
let href = null;
|
|
3265
|
-
let targetPlatform = null;
|
|
3266
|
-
const idValue = (_nullishCoalesce(row.id, () => ( ""))).trim();
|
|
3267
|
-
if (row.path && shouldFallbackToPathNav(row) && !row.externalUrl) {
|
|
3268
|
-
const safePath = sanitizePath(row.path);
|
|
3269
|
-
if (safePath) {
|
|
3270
|
-
const docTarget = row.documentType ? _optionalChain([ctx, 'access', _51 => _51.docPlatformTargets, 'optionalAccess', _52 => _52[row.documentType]]) : void 0;
|
|
3271
|
-
if (docTarget) {
|
|
3272
|
-
const seg = docTarget.basePath.split("/").filter(Boolean).join("/");
|
|
3273
|
-
const base = `${_chunkFIG2RKZFcjs.getBaseUrl.call(void 0, docTarget.platform)}${seg ? `/${seg}` : ""}/`;
|
|
3274
|
-
href = _nullishCoalesce(safeHref(new URL(safePath, base).toString()), () => ( null));
|
|
3275
|
-
targetPlatform = docTarget.platform;
|
|
3276
|
-
} else if (ctx.chipBasePlatform) {
|
|
3277
|
-
const base = `${_chunkFIG2RKZFcjs.getBaseUrl.call(void 0, ctx.chipBasePlatform)}/knowledge-base/`;
|
|
3278
|
-
href = _nullishCoalesce(safeHref(new URL(safePath, base).toString()), () => ( null));
|
|
3279
|
-
targetPlatform = ctx.chipBasePlatform;
|
|
3280
|
-
} else if (ctx.baseRoute) {
|
|
3281
|
-
const synthetic = `https://_internal_.local${ctx.baseRoute.startsWith("/") ? ctx.baseRoute : "/" + ctx.baseRoute}/`;
|
|
3282
|
-
const absolute = new URL(safePath, synthetic).toString();
|
|
3283
|
-
href = _nullishCoalesce(safeHref(absolute.replace("https://_internal_.local", "")), () => ( null));
|
|
3284
|
-
targetPlatform = _nullishCoalesce(ctx.currentPlatform, () => ( null));
|
|
3285
|
-
}
|
|
3286
|
-
}
|
|
3287
|
-
} else if (ctx.composeContentUrl && row.documentType && row.externalUrl) {
|
|
3288
|
-
const composed = ctx.composeContentUrl({
|
|
3289
|
-
type: row.documentType,
|
|
3290
|
-
identifier: idValue,
|
|
3291
|
-
externalUrl: row.externalUrl,
|
|
3292
|
-
targetPlatform: _nullishCoalesce(row.targetPlatform, () => ( null))
|
|
3293
|
-
});
|
|
3294
|
-
href = composed.href ? _nullishCoalesce(safeHref(composed.href), () => ( null)) : null;
|
|
3295
|
-
targetPlatform = composed.targetPlatform;
|
|
3296
|
-
} else if (row.externalUrl) {
|
|
3297
|
-
href = _nullishCoalesce(safeHref(row.externalUrl), () => ( null));
|
|
3298
|
-
targetPlatform = _nullishCoalesce(row.targetPlatform, () => ( null));
|
|
3299
|
-
}
|
|
3300
|
-
const askable = !!(idValue && row.documentType);
|
|
3301
|
-
const chatRef = askable ? {
|
|
3302
|
-
type: row.documentType,
|
|
3303
|
-
...sourceRepo ? { sourceRepo } : {},
|
|
3304
|
-
id: idValue,
|
|
3305
|
-
title: row.title,
|
|
3306
|
-
url: href,
|
|
3307
|
-
targetPlatform,
|
|
3308
|
-
// Carry `path` so a downstream inline card (rendered from this
|
|
3309
|
-
// chatRef on a subsequent turn) gets the same doc-tree-swap
|
|
3310
|
-
// routing the chip already used. Without it, the Ask drill-in
|
|
3311
|
-
// would resolve to a same-tab full-page nav even when an in-app
|
|
3312
|
-
// path is available.
|
|
3313
|
-
...row.path ? { metadata: { path: row.path } } : {}
|
|
3314
|
-
} : null;
|
|
3315
|
-
return { icon, iconLabel, href, targetPlatform, askable, chatRef };
|
|
3316
|
-
}
|
|
3317
|
-
function resolveSourceIcon(input, ctx = {}) {
|
|
3318
|
-
if (!input) return { Icon: _lucidereact.FileText, label: "Source" };
|
|
3319
|
-
const { sourceRepo, documentType } = typeof input === "string" ? { sourceRepo: null, documentType: input } : input;
|
|
3320
|
-
if (!sourceRepo && !documentType) return { Icon: _lucidereact.FileText, label: "Source" };
|
|
3321
|
-
const resolvedRepo = _nullishCoalesce(_nullishCoalesce(sourceRepo, () => ( (documentType && ctx.tableIdForDocumentType ? ctx.tableIdForDocumentType(documentType) : null))), () => ( null));
|
|
3322
|
-
const { icon, iconLabel } = pickSourceIcon(resolvedRepo, documentType);
|
|
3323
|
-
return { Icon: icon, label: iconLabel };
|
|
3324
|
-
}
|
|
3325
|
-
|
|
3326
2288
|
// src/components/ui/page-actions.tsx
|
|
3327
2289
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
3328
2290
|
|
|
@@ -3455,7 +2417,7 @@ function IconButtonsVariant({
|
|
|
3455
2417
|
}) {
|
|
3456
2418
|
const desktopActions = actions.filter((a) => !a.showOnlyMobile);
|
|
3457
2419
|
const hasMenuActions = !!menuActions && menuActions.some((g) => g.items.length > 0);
|
|
3458
|
-
const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access',
|
|
2420
|
+
const isSingleAction = actions.length === 1 && !_optionalChain([actions, 'access', _44 => _44[0], 'access', _45 => _45.submenu, 'optionalAccess', _46 => _46.length]);
|
|
3459
2421
|
const singleAction = isSingleAction ? actions[0] : null;
|
|
3460
2422
|
const useSingleActionMobile = isSingleAction && !hasMenuActions;
|
|
3461
2423
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -3537,7 +2499,7 @@ function EntityImage({ src, alt, fallbackText, className }) {
|
|
|
3537
2499
|
setImageFailed(false);
|
|
3538
2500
|
}, [src]);
|
|
3539
2501
|
const showFallback = imageFailed || !src;
|
|
3540
|
-
const initials = getFirstLastInitials(_nullishCoalesce(fallbackText, () => ( alt)));
|
|
2502
|
+
const initials = _chunkY4JNA4W6cjs.getFirstLastInitials.call(void 0, _nullishCoalesce(fallbackText, () => ( alt)));
|
|
3541
2503
|
if (showFallback) {
|
|
3542
2504
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
3543
2505
|
"div",
|
|
@@ -3720,53 +2682,6 @@ function ArticleDetailLayout({ children, schemas, contentClassName }) {
|
|
|
3720
2682
|
] });
|
|
3721
2683
|
}
|
|
3722
2684
|
|
|
3723
|
-
// src/utils/content-href.ts
|
|
3724
|
-
var DEFAULT_CONTENT_SUFFIXES = {
|
|
3725
|
-
onboarding_guide: "onboarding-guides",
|
|
3726
|
-
product_release: "releases",
|
|
3727
|
-
blog_post: "blog",
|
|
3728
|
-
case_study: "case-studies",
|
|
3729
|
-
customer_interview: "interviews",
|
|
3730
|
-
investor_update: "investor-updates",
|
|
3731
|
-
webinar: "webinars",
|
|
3732
|
-
podcast: "podcasts",
|
|
3733
|
-
event: "events",
|
|
3734
|
-
// Author profile pages (`/authors/<slug>`) — identified by the profile
|
|
3735
|
-
// slug. Mirrors the hub's `PUBLIC_URL_PATHS.author`, which derives from
|
|
3736
|
-
// `AUTHORS_PATH` in the hub's `lib/utils/breadcrumbs.ts` (the hub-side
|
|
3737
|
-
// SSOT for the segment).
|
|
3738
|
-
author: "authors"
|
|
3739
|
-
};
|
|
3740
|
-
function lastPathSegment(url) {
|
|
3741
|
-
try {
|
|
3742
|
-
const pathname = new URL(url, "https://_.local").pathname;
|
|
3743
|
-
const segs = pathname.split("/").filter(Boolean);
|
|
3744
|
-
return segs.length > 0 ? segs[segs.length - 1] : null;
|
|
3745
|
-
} catch (e8) {
|
|
3746
|
-
return null;
|
|
3747
|
-
}
|
|
3748
|
-
}
|
|
3749
|
-
function makeComposeContentUrl(opts) {
|
|
3750
|
-
const suffixes = _nullishCoalesce(opts.suffixes, () => ( DEFAULT_CONTENT_SUFFIXES));
|
|
3751
|
-
return ({ type, identifier, externalUrl, targetPlatform }) => {
|
|
3752
|
-
const override = opts.overrides && Object.prototype.hasOwnProperty.call(opts.overrides, type) ? opts.overrides[type] : void 0;
|
|
3753
|
-
if (override) return override(identifier);
|
|
3754
|
-
const seg = _nullishCoalesce((Object.prototype.hasOwnProperty.call(suffixes, type) ? suffixes[type] : void 0), () => ( type));
|
|
3755
|
-
if (opts.hostedTypes.has(type)) {
|
|
3756
|
-
const recovered = externalUrl ? lastPathSegment(externalUrl) : null;
|
|
3757
|
-
const slug = recovered && recovered !== seg ? recovered : identifier;
|
|
3758
|
-
return { href: `/${seg}/${slug}`, targetPlatform: null };
|
|
3759
|
-
}
|
|
3760
|
-
return externalUrl ? { href: externalUrl, targetPlatform: _nullishCoalesce(targetPlatform, () => ( null)) } : { href: `${opts.contentOrigin}/${seg}/${identifier}`, targetPlatform: null };
|
|
3761
|
-
};
|
|
3762
|
-
}
|
|
3763
|
-
function buildDefaultHref(basePath, slug) {
|
|
3764
|
-
return { href: `${basePath}/${slug}`, targetPlatform: null };
|
|
3765
|
-
}
|
|
3766
|
-
function resolveContentHref(composeContentUrl, args) {
|
|
3767
|
-
return composeContentUrl ? composeContentUrl({ type: args.type, identifier: args.slug, platforms: args.platforms }) : buildDefaultHref(args.basePath, args.slug);
|
|
3768
|
-
}
|
|
3769
|
-
|
|
3770
2685
|
// src/components/ui/error-state.tsx
|
|
3771
2686
|
_chunkXXI7BNB6cjs.init_button2.call(void 0, );
|
|
3772
2687
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
@@ -3928,7 +2843,7 @@ function useVideoOriginPreconnect({
|
|
|
3928
2843
|
supabaseStorageOrigin
|
|
3929
2844
|
} = {}) {
|
|
3930
2845
|
const runtime = _chunkAQOWFSMBcjs.useChatRuntime.call(void 0, );
|
|
3931
|
-
const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess',
|
|
2846
|
+
const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _47 => _47.endpoints, 'access', _48 => _48.supabaseStorageOrigin])));
|
|
3932
2847
|
try {
|
|
3933
2848
|
_reactdom2.default.preconnect(MUX_STREAM_ORIGIN, { crossOrigin: "anonymous" });
|
|
3934
2849
|
_reactdom2.default.preconnect(MUX_IMAGE_ORIGIN, { crossOrigin: "anonymous" });
|
|
@@ -3947,17 +2862,17 @@ function useVideoWarmup({
|
|
|
3947
2862
|
nearMargin = "1000px"
|
|
3948
2863
|
} = {}) {
|
|
3949
2864
|
const runtime = _chunkAQOWFSMBcjs.useChatRuntime.call(void 0, );
|
|
3950
|
-
const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess',
|
|
2865
|
+
const resolvedOrigin = _nullishCoalesce(supabaseStorageOrigin, () => ( _optionalChain([runtime, 'optionalAccess', _49 => _49.endpoints, 'access', _50 => _50.supabaseStorageOrigin])));
|
|
3951
2866
|
useVideoOriginPreconnect({ supabaseStorageOrigin: resolvedOrigin });
|
|
3952
|
-
const { ref, isNear } =
|
|
2867
|
+
const { ref, isNear } = _chunkTFSYSWPScjs.useNearViewport.call(void 0, nearMargin);
|
|
3953
2868
|
_react.useEffect.call(void 0, () => {
|
|
3954
2869
|
if (!isNear || !videoUrl || !resolvedOrigin) return;
|
|
3955
2870
|
const conn = navigator.connection;
|
|
3956
|
-
if (_optionalChain([conn, 'optionalAccess',
|
|
2871
|
+
if (_optionalChain([conn, 'optionalAccess', _51 => _51.saveData]) === true) return;
|
|
3957
2872
|
let videoOrigin;
|
|
3958
2873
|
try {
|
|
3959
2874
|
videoOrigin = new URL(videoUrl, "http://placeholder.local").origin;
|
|
3960
|
-
} catch (
|
|
2875
|
+
} catch (e5) {
|
|
3961
2876
|
return;
|
|
3962
2877
|
}
|
|
3963
2878
|
if (videoOrigin !== resolvedOrigin) return;
|
|
@@ -3985,399 +2900,6 @@ function getCaptionsUrl(entityType, entityId, srtContent) {
|
|
|
3985
2900
|
return `/api/captions/${entityType}/${entityId}?v=${hash}`;
|
|
3986
2901
|
}
|
|
3987
2902
|
|
|
3988
|
-
// src/components/ui/search-input.tsx
|
|
3989
|
-
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
3990
|
-
var _reactpopover = require('@radix-ui/react-popover'); var PopoverPrimitive = _interopRequireWildcard(_reactpopover);
|
|
3991
|
-
var _reactscrollarea = require('@radix-ui/react-scroll-area'); var ScrollAreaPrimitive = _interopRequireWildcard(_reactscrollarea);
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
var containerStyles = _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
3995
|
-
// Layout & spacing — matches lib Input component
|
|
3996
|
-
"flex items-center gap-2 rounded-[6px] border px-3 h-11 md:h-12 cursor-text",
|
|
3997
|
-
"has-[:focus-visible]:outline-none",
|
|
3998
|
-
"group",
|
|
3999
|
-
"transition-colors duration-200",
|
|
4000
|
-
// Theme palette — matches lib Input component
|
|
4001
|
-
"bg-ods-card border-ods-border has-[:focus]:border-ods-accent"
|
|
4002
|
-
);
|
|
4003
|
-
var innerInputStyles = _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
4004
|
-
"flex-1 min-w-[60px] bg-transparent border-none outline-none",
|
|
4005
|
-
"text-h4",
|
|
4006
|
-
"text-ods-text-primary placeholder:text-ods-text-secondary",
|
|
4007
|
-
"disabled:cursor-not-allowed",
|
|
4008
|
-
"touch-manipulation"
|
|
4009
|
-
);
|
|
4010
|
-
function chipVariantToTagVariant(variant) {
|
|
4011
|
-
switch (variant) {
|
|
4012
|
-
case "selected":
|
|
4013
|
-
return "primary";
|
|
4014
|
-
// Content tags render with the unified badge skin (ods-card + ods-border,
|
|
4015
|
-
// mono uppercase) — identical to the public EntityTagBadges display.
|
|
4016
|
-
case "tag":
|
|
4017
|
-
return "badge";
|
|
4018
|
-
case "category":
|
|
4019
|
-
case "subcategory":
|
|
4020
|
-
default:
|
|
4021
|
-
return "outline";
|
|
4022
|
-
}
|
|
4023
|
-
}
|
|
4024
|
-
function SearchInput({
|
|
4025
|
-
placeholder = "Search...",
|
|
4026
|
-
value,
|
|
4027
|
-
defaultValue = "",
|
|
4028
|
-
onChange,
|
|
4029
|
-
onSubmit,
|
|
4030
|
-
results = [],
|
|
4031
|
-
isLoading = false,
|
|
4032
|
-
onResultSelect,
|
|
4033
|
-
debounceMs = 300,
|
|
4034
|
-
renderResult,
|
|
4035
|
-
groupBy,
|
|
4036
|
-
emptyResultsText = "No results found",
|
|
4037
|
-
showDropdown: showDropdownProp,
|
|
4038
|
-
filterChips = [],
|
|
4039
|
-
onFilterRemove,
|
|
4040
|
-
startAdornment,
|
|
4041
|
-
endAdornment,
|
|
4042
|
-
className,
|
|
4043
|
-
dropdownClassName,
|
|
4044
|
-
minQueryLength = 2,
|
|
4045
|
-
limitTags = "auto",
|
|
4046
|
-
getLimitTagsText = (more) => `+${more}`
|
|
4047
|
-
}) {
|
|
4048
|
-
const [internalValue, setInternalValue] = React13.useState(defaultValue);
|
|
4049
|
-
const currentValue = onChange ? _nullishCoalesce(value, () => ( "")) : internalValue;
|
|
4050
|
-
const debouncedValue = _chunkZSUNQJROcjs.useDebounce.call(void 0, currentValue, debounceMs);
|
|
4051
|
-
const [isOpen, setIsOpen] = React13.useState(false);
|
|
4052
|
-
const [highlightedIndex, setHighlightedIndex] = React13.useState(-1);
|
|
4053
|
-
const containerRef = React13.useRef(null);
|
|
4054
|
-
const currentPlaceholder = filterChips.length > 0 ? "Add filter..." : placeholder;
|
|
4055
|
-
const {
|
|
4056
|
-
visibleCount: rawVisibleCount,
|
|
4057
|
-
middleRef,
|
|
4058
|
-
measureRef,
|
|
4059
|
-
textMeasureRef,
|
|
4060
|
-
badgeRef,
|
|
4061
|
-
inputRef
|
|
4062
|
-
} = _chunkZSUNQJROcjs.useAutoLimitTags.call(void 0, {
|
|
4063
|
-
count: filterChips.length,
|
|
4064
|
-
limitTags,
|
|
4065
|
-
// When chips exist, pass empty placeholder so the hook only reserves input minWidth,
|
|
4066
|
-
// not the full placeholder text width — gives more room for chips on narrow screens
|
|
4067
|
-
placeholder: filterChips.length > 0 ? "" : placeholder
|
|
4068
|
-
});
|
|
4069
|
-
const visibleCount = filterChips.length > 0 ? Math.max(1, rawVisibleCount) : rawVisibleCount;
|
|
4070
|
-
const hiddenTagsRef = React13.useRef(null);
|
|
4071
|
-
const hiddenTagsPopupRef = React13.useRef(null);
|
|
4072
|
-
const [showHiddenTags, setShowHiddenTags] = React13.useState(false);
|
|
4073
|
-
React13.useEffect(() => {
|
|
4074
|
-
if (!showHiddenTags) return;
|
|
4075
|
-
const handleClick = (e) => {
|
|
4076
|
-
const target = e.target;
|
|
4077
|
-
if (!_optionalChain([hiddenTagsRef, 'access', _61 => _61.current, 'optionalAccess', _62 => _62.contains, 'call', _63 => _63(target)]) && !_optionalChain([hiddenTagsPopupRef, 'access', _64 => _64.current, 'optionalAccess', _65 => _65.contains, 'call', _66 => _66(target)])) {
|
|
4078
|
-
setShowHiddenTags(false);
|
|
4079
|
-
}
|
|
4080
|
-
};
|
|
4081
|
-
document.addEventListener("mousedown", handleClick);
|
|
4082
|
-
return () => document.removeEventListener("mousedown", handleClick);
|
|
4083
|
-
}, [showHiddenTags]);
|
|
4084
|
-
const hiddenCount = filterChips.length - visibleCount;
|
|
4085
|
-
const visibleChips = filterChips.slice(0, visibleCount);
|
|
4086
|
-
const hiddenChips = filterChips.slice(visibleCount);
|
|
4087
|
-
const { flatResults, groups } = React13.useMemo(() => {
|
|
4088
|
-
if (!groupBy) return { flatResults: results, groups: null };
|
|
4089
|
-
const grouped = /* @__PURE__ */ new Map();
|
|
4090
|
-
for (const r of results) {
|
|
4091
|
-
const key = groupBy(r);
|
|
4092
|
-
const arr = grouped.get(key);
|
|
4093
|
-
if (arr) {
|
|
4094
|
-
arr.push(r);
|
|
4095
|
-
} else {
|
|
4096
|
-
grouped.set(key, [r]);
|
|
4097
|
-
}
|
|
4098
|
-
}
|
|
4099
|
-
return { flatResults: results, groups: grouped };
|
|
4100
|
-
}, [results, groupBy]);
|
|
4101
|
-
const meetsMinQuery = debouncedValue.length >= minQueryLength;
|
|
4102
|
-
const autoShow = meetsMinQuery;
|
|
4103
|
-
const dropdownVisible = _nullishCoalesce(showDropdownProp, () => ( (isOpen && autoShow)));
|
|
4104
|
-
React13.useEffect(() => {
|
|
4105
|
-
setHighlightedIndex(-1);
|
|
4106
|
-
}, [flatResults.length]);
|
|
4107
|
-
const handleChange = (e) => {
|
|
4108
|
-
const newVal = e.target.value;
|
|
4109
|
-
if (onChange) {
|
|
4110
|
-
onChange(newVal);
|
|
4111
|
-
} else {
|
|
4112
|
-
setInternalValue(newVal);
|
|
4113
|
-
}
|
|
4114
|
-
if (!isOpen) setIsOpen(true);
|
|
4115
|
-
setHighlightedIndex(-1);
|
|
4116
|
-
};
|
|
4117
|
-
const handleClear = (e) => {
|
|
4118
|
-
e.stopPropagation();
|
|
4119
|
-
e.preventDefault();
|
|
4120
|
-
if (onChange) {
|
|
4121
|
-
onChange("");
|
|
4122
|
-
} else {
|
|
4123
|
-
setInternalValue("");
|
|
4124
|
-
}
|
|
4125
|
-
_optionalChain([inputRef, 'access', _67 => _67.current, 'optionalAccess', _68 => _68.focus, 'call', _69 => _69()]);
|
|
4126
|
-
};
|
|
4127
|
-
const handleResultClick = (result, e) => {
|
|
4128
|
-
_optionalChain([onResultSelect, 'optionalCall', _70 => _70(
|
|
4129
|
-
result,
|
|
4130
|
-
e ? {
|
|
4131
|
-
metaKey: e.metaKey,
|
|
4132
|
-
ctrlKey: e.ctrlKey,
|
|
4133
|
-
shiftKey: e.shiftKey,
|
|
4134
|
-
altKey: e.altKey,
|
|
4135
|
-
button: e.button
|
|
4136
|
-
} : void 0
|
|
4137
|
-
)]);
|
|
4138
|
-
setIsOpen(false);
|
|
4139
|
-
};
|
|
4140
|
-
const handleKeyDown = (e) => {
|
|
4141
|
-
switch (e.key) {
|
|
4142
|
-
case "ArrowDown":
|
|
4143
|
-
e.preventDefault();
|
|
4144
|
-
if (!isOpen) setIsOpen(true);
|
|
4145
|
-
setHighlightedIndex(
|
|
4146
|
-
(prev) => prev < flatResults.length - 1 ? prev + 1 : 0
|
|
4147
|
-
);
|
|
4148
|
-
break;
|
|
4149
|
-
case "ArrowUp":
|
|
4150
|
-
e.preventDefault();
|
|
4151
|
-
setHighlightedIndex(
|
|
4152
|
-
(prev) => prev > 0 ? prev - 1 : flatResults.length - 1
|
|
4153
|
-
);
|
|
4154
|
-
break;
|
|
4155
|
-
case "Enter":
|
|
4156
|
-
e.preventDefault();
|
|
4157
|
-
if (highlightedIndex >= 0 && flatResults[highlightedIndex]) {
|
|
4158
|
-
handleResultClick(flatResults[highlightedIndex]);
|
|
4159
|
-
} else {
|
|
4160
|
-
_optionalChain([onSubmit, 'optionalCall', _71 => _71(currentValue)]);
|
|
4161
|
-
}
|
|
4162
|
-
break;
|
|
4163
|
-
case "Escape":
|
|
4164
|
-
setIsOpen(false);
|
|
4165
|
-
setHighlightedIndex(-1);
|
|
4166
|
-
break;
|
|
4167
|
-
case "Backspace":
|
|
4168
|
-
if (!currentValue && filterChips.length > 0 && onFilterRemove) {
|
|
4169
|
-
onFilterRemove(filterChips[filterChips.length - 1].id);
|
|
4170
|
-
}
|
|
4171
|
-
break;
|
|
4172
|
-
}
|
|
4173
|
-
};
|
|
4174
|
-
const handleOpenChange = (open) => {
|
|
4175
|
-
setIsOpen(open);
|
|
4176
|
-
};
|
|
4177
|
-
const defaultRenderResult = (result, isHighlighted) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3 w-full min-w-0", children: [
|
|
4178
|
-
result.icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-shrink-0 text-ods-text-secondary [&_svg]:size-4", children: result.icon }),
|
|
4179
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-w-0 flex-1", children: [
|
|
4180
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
4181
|
-
"text-sm font-medium leading-5 truncate",
|
|
4182
|
-
isHighlighted ? "text-ods-accent" : "text-ods-text-primary"
|
|
4183
|
-
), title: result.title, children: result.title }),
|
|
4184
|
-
result.description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-xs leading-4 text-ods-text-secondary truncate mt-0.5", title: result.description, children: result.description })
|
|
4185
|
-
] }),
|
|
4186
|
-
result.type && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-shrink-0 text-[11px] font-medium text-ods-text-muted uppercase tracking-wider", children: result.type })
|
|
4187
|
-
] });
|
|
4188
|
-
const renderRow = (result, index) => {
|
|
4189
|
-
const isHighlighted = index === highlightedIndex;
|
|
4190
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4191
|
-
"div",
|
|
4192
|
-
{
|
|
4193
|
-
role: "option",
|
|
4194
|
-
"aria-selected": isHighlighted,
|
|
4195
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
4196
|
-
"flex items-center min-h-10 px-3 cursor-pointer transition-colors border-b border-ods-border last:border-b-0",
|
|
4197
|
-
isHighlighted && "bg-ods-bg-hover",
|
|
4198
|
-
!isHighlighted && "hover:bg-ods-bg-hover"
|
|
4199
|
-
),
|
|
4200
|
-
onClick: (e) => handleResultClick(result, e),
|
|
4201
|
-
onMouseEnter: () => setHighlightedIndex(index),
|
|
4202
|
-
children: renderResult ? renderResult(result, isHighlighted) : defaultRenderResult(result, isHighlighted)
|
|
4203
|
-
},
|
|
4204
|
-
result.id
|
|
4205
|
-
);
|
|
4206
|
-
};
|
|
4207
|
-
const renderDropdownContent = () => {
|
|
4208
|
-
if (isLoading) {
|
|
4209
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-4 py-3 text-ods-text-secondary text-[14px]", children: "Loading..." });
|
|
4210
|
-
}
|
|
4211
|
-
if (flatResults.length === 0) {
|
|
4212
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-4 py-3 text-ods-text-secondary text-[14px]", children: emptyResultsText });
|
|
4213
|
-
}
|
|
4214
|
-
if (groups) {
|
|
4215
|
-
let globalIndex = 0;
|
|
4216
|
-
return Array.from(groups.entries()).map(([groupLabel, groupResults]) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
|
|
4217
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "px-4 py-2 text-[12px] font-semibold text-ods-text-secondary uppercase tracking-wide bg-ods-bg", children: groupLabel }),
|
|
4218
|
-
groupResults.map((result) => {
|
|
4219
|
-
const idx = globalIndex++;
|
|
4220
|
-
return renderRow(result, idx);
|
|
4221
|
-
})
|
|
4222
|
-
] }, groupLabel));
|
|
4223
|
-
}
|
|
4224
|
-
return flatResults.map((result, index) => renderRow(result, index));
|
|
4225
|
-
};
|
|
4226
|
-
const hasValue = currentValue.length > 0;
|
|
4227
|
-
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunkFIG2RKZFcjs.cn.call(void 0, "relative", className), ref: containerRef, children: [
|
|
4228
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, PopoverPrimitive.Root, { open: dropdownVisible, onOpenChange: handleOpenChange, modal: false, children: [
|
|
4229
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, PopoverPrimitive.Anchor, { asChild: true, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
4230
|
-
"div",
|
|
4231
|
-
{
|
|
4232
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
4233
|
-
containerStyles,
|
|
4234
|
-
"hover:bg-ods-bg-hover hover:border-ods-border-hover active:bg-ods-bg-active active:border-ods-border-active",
|
|
4235
|
-
dropdownVisible && "!border-ods-accent"
|
|
4236
|
-
),
|
|
4237
|
-
onClick: () => {
|
|
4238
|
-
_optionalChain([inputRef, 'access', _72 => _72.current, 'optionalAccess', _73 => _73.focus, 'call', _74 => _74()]);
|
|
4239
|
-
setIsOpen(true);
|
|
4240
|
-
},
|
|
4241
|
-
children: [
|
|
4242
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "flex-shrink-0 text-ods-text-secondary transition-colors duration-200 group-has-[:focus]:text-ods-accent [&_svg]:size-4 md:[&_svg]:size-6", children: startAdornment !== void 0 ? startAdornment : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWZW7C7TFcjs.SearchIcon, {}) }),
|
|
4243
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref: middleRef, className: "flex-1 flex items-center gap-2 min-w-0 overflow-hidden", children: [
|
|
4244
|
-
visibleChips.map((chip) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4245
|
-
Tag,
|
|
4246
|
-
{
|
|
4247
|
-
variant: chipVariantToTagVariant(chip.variant),
|
|
4248
|
-
label: chip.label,
|
|
4249
|
-
labelClassName: "truncate max-w-[120px]",
|
|
4250
|
-
onClose: onFilterRemove ? () => onFilterRemove(chip.id) : void 0
|
|
4251
|
-
},
|
|
4252
|
-
chip.id
|
|
4253
|
-
)),
|
|
4254
|
-
hiddenCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: hiddenTagsRef, className: "shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4255
|
-
"button",
|
|
4256
|
-
{
|
|
4257
|
-
ref: badgeRef,
|
|
4258
|
-
type: "button",
|
|
4259
|
-
onClick: (e) => {
|
|
4260
|
-
e.stopPropagation();
|
|
4261
|
-
setShowHiddenTags((prev) => !prev);
|
|
4262
|
-
},
|
|
4263
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
4264
|
-
"flex items-center h-8 px-2",
|
|
4265
|
-
"bg-ods-card border border-ods-border rounded-[6px]",
|
|
4266
|
-
"font-mono text-[14px] font-medium leading-5 text-ods-text-secondary uppercase tracking-[-0.28px]",
|
|
4267
|
-
"hover:bg-ods-bg-hover transition-colors cursor-pointer"
|
|
4268
|
-
),
|
|
4269
|
-
"aria-label": `${hiddenCount} more selected filters`,
|
|
4270
|
-
children: getLimitTagsText(hiddenCount)
|
|
4271
|
-
}
|
|
4272
|
-
) }),
|
|
4273
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4274
|
-
"input",
|
|
4275
|
-
{
|
|
4276
|
-
ref: inputRef,
|
|
4277
|
-
type: "text",
|
|
4278
|
-
value: currentValue,
|
|
4279
|
-
onChange: handleChange,
|
|
4280
|
-
onKeyDown: handleKeyDown,
|
|
4281
|
-
onFocus: () => {
|
|
4282
|
-
setIsOpen(true);
|
|
4283
|
-
setShowHiddenTags(false);
|
|
4284
|
-
},
|
|
4285
|
-
placeholder: currentPlaceholder,
|
|
4286
|
-
className: innerInputStyles
|
|
4287
|
-
}
|
|
4288
|
-
)
|
|
4289
|
-
] }),
|
|
4290
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-1 shrink-0 ml-auto", children: [
|
|
4291
|
-
hasValue && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4292
|
-
"button",
|
|
4293
|
-
{
|
|
4294
|
-
type: "button",
|
|
4295
|
-
onClick: handleClear,
|
|
4296
|
-
className: "flex items-center justify-center hover:opacity-70 transition-opacity",
|
|
4297
|
-
"aria-label": "Clear search",
|
|
4298
|
-
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZS2SBWBRcjs.XmarkCircleIcon, { className: "text-ods-text-secondary", size: 24 })
|
|
4299
|
-
}
|
|
4300
|
-
),
|
|
4301
|
-
endAdornment
|
|
4302
|
-
] })
|
|
4303
|
-
]
|
|
4304
|
-
}
|
|
4305
|
-
) }),
|
|
4306
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4307
|
-
PopoverPrimitive.Content,
|
|
4308
|
-
{
|
|
4309
|
-
className: _chunkFIG2RKZFcjs.cn.call(void 0,
|
|
4310
|
-
"z-50 w-[var(--radix-popover-trigger-width)] mt-1",
|
|
4311
|
-
"bg-ods-card border border-ods-border rounded-[6px] overflow-hidden shadow-lg",
|
|
4312
|
-
"data-[state=open]:animate-in data-[state=closed]:animate-out",
|
|
4313
|
-
"data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0",
|
|
4314
|
-
"data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95",
|
|
4315
|
-
"data-[side=bottom]:slide-in-from-top-2 data-[side=top]:slide-in-from-bottom-2",
|
|
4316
|
-
dropdownClassName
|
|
4317
|
-
),
|
|
4318
|
-
sideOffset: 4,
|
|
4319
|
-
align: "start",
|
|
4320
|
-
onOpenAutoFocus: (e) => {
|
|
4321
|
-
e.preventDefault();
|
|
4322
|
-
_optionalChain([inputRef, 'access', _75 => _75.current, 'optionalAccess', _76 => _76.focus, 'call', _77 => _77()]);
|
|
4323
|
-
},
|
|
4324
|
-
onInteractOutside: (e) => {
|
|
4325
|
-
if (_optionalChain([containerRef, 'access', _78 => _78.current, 'optionalAccess', _79 => _79.contains, 'call', _80 => _80(e.target)])) {
|
|
4326
|
-
e.preventDefault();
|
|
4327
|
-
}
|
|
4328
|
-
},
|
|
4329
|
-
children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, ScrollAreaPrimitive.Root, { className: "overflow-hidden", children: [
|
|
4330
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScrollAreaPrimitive.Viewport, { className: "max-h-[320px] w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { role: "listbox", children: renderDropdownContent() }) }),
|
|
4331
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScrollAreaPrimitive.Scrollbar, { className: "hidden", orientation: "vertical", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScrollAreaPrimitive.Thumb, {}) })
|
|
4332
|
-
] })
|
|
4333
|
-
}
|
|
4334
|
-
)
|
|
4335
|
-
] }),
|
|
4336
|
-
showHiddenTags && hiddenCount > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4337
|
-
HiddenTagsPopup,
|
|
4338
|
-
{
|
|
4339
|
-
ref: hiddenTagsPopupRef,
|
|
4340
|
-
items: hiddenChips.map((chip) => ({ label: chip.label, value: chip.id })),
|
|
4341
|
-
style: {
|
|
4342
|
-
left: badgeRef.current ? badgeRef.current.getBoundingClientRect().left - (_nullishCoalesce(_optionalChain([containerRef, 'access', _81 => _81.current, 'optionalAccess', _82 => _82.getBoundingClientRect, 'call', _83 => _83(), 'access', _84 => _84.left]), () => ( 0))) : 0
|
|
4343
|
-
},
|
|
4344
|
-
onRemove: (value2) => {
|
|
4345
|
-
_optionalChain([onFilterRemove, 'optionalCall', _85 => _85(value2)]);
|
|
4346
|
-
if (hiddenCount <= 1) setShowHiddenTags(false);
|
|
4347
|
-
}
|
|
4348
|
-
}
|
|
4349
|
-
),
|
|
4350
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4351
|
-
"span",
|
|
4352
|
-
{
|
|
4353
|
-
ref: textMeasureRef,
|
|
4354
|
-
"aria-hidden": "true",
|
|
4355
|
-
className: "fixed -left-[9999px] top-0 pointer-events-none whitespace-nowrap text-ods-text-primary",
|
|
4356
|
-
children: currentPlaceholder
|
|
4357
|
-
}
|
|
4358
|
-
),
|
|
4359
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4360
|
-
"div",
|
|
4361
|
-
{
|
|
4362
|
-
ref: measureRef,
|
|
4363
|
-
"aria-hidden": "true",
|
|
4364
|
-
className: "fixed -left-[9999px] top-0 flex gap-2 pointer-events-none",
|
|
4365
|
-
children: filterChips.map((chip) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
4366
|
-
Tag,
|
|
4367
|
-
{
|
|
4368
|
-
variant: chipVariantToTagVariant(chip.variant),
|
|
4369
|
-
label: chip.label,
|
|
4370
|
-
labelClassName: "truncate max-w-[120px]",
|
|
4371
|
-
onClose: () => {
|
|
4372
|
-
}
|
|
4373
|
-
},
|
|
4374
|
-
`m-${chip.id}`
|
|
4375
|
-
))
|
|
4376
|
-
}
|
|
4377
|
-
)
|
|
4378
|
-
] });
|
|
4379
|
-
}
|
|
4380
|
-
|
|
4381
2903
|
// src/components/ui/filter-pill-row.tsx
|
|
4382
2904
|
_chunkXXI7BNB6cjs.init_button2.call(void 0, );
|
|
4383
2905
|
|
|
@@ -4473,86 +2995,5 @@ function FilterPillRow({
|
|
|
4473
2995
|
|
|
4474
2996
|
|
|
4475
2997
|
|
|
4476
|
-
|
|
4477
|
-
|
|
4478
|
-
|
|
4479
|
-
|
|
4480
|
-
|
|
4481
|
-
|
|
4482
|
-
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4489
|
-
|
|
4490
|
-
|
|
4491
|
-
|
|
4492
|
-
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4499
|
-
|
|
4500
|
-
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4507
|
-
|
|
4508
|
-
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4518
|
-
|
|
4519
|
-
|
|
4520
|
-
|
|
4521
|
-
|
|
4522
|
-
|
|
4523
|
-
|
|
4524
|
-
|
|
4525
|
-
|
|
4526
|
-
|
|
4527
|
-
|
|
4528
|
-
|
|
4529
|
-
|
|
4530
|
-
|
|
4531
|
-
|
|
4532
|
-
|
|
4533
|
-
|
|
4534
|
-
|
|
4535
|
-
|
|
4536
|
-
|
|
4537
|
-
|
|
4538
|
-
|
|
4539
|
-
|
|
4540
|
-
|
|
4541
|
-
|
|
4542
|
-
|
|
4543
|
-
|
|
4544
|
-
|
|
4545
|
-
|
|
4546
|
-
|
|
4547
|
-
|
|
4548
|
-
|
|
4549
|
-
|
|
4550
|
-
|
|
4551
|
-
|
|
4552
|
-
|
|
4553
|
-
|
|
4554
|
-
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
exports.HiddenTagsPopup = HiddenTagsPopup; 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.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.formatDate = formatDate; exports.formatNumber = formatNumber; exports.formatPrice = formatPrice; exports.formatBytes = formatBytes; exports.formatBytesShort = formatBytesShort; exports.formatLargeNumber = formatLargeNumber; exports.formatAbbreviatedNumber = formatAbbreviatedNumber; exports.getFirstLastInitials = getFirstLastInitials; exports.nameInitials = nameInitials; exports.formatDurationMMSS = formatDurationMMSS; exports.formatDurationCompact = formatDurationCompact; exports.formatTimeWithTimezone = formatTimeWithTimezone; exports.formatDurationFromRange = formatDurationFromRange; exports.formatDateUTC = formatDateUTC; exports.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.formatUnderscoreText = formatUnderscoreText; exports.stripHtml = stripHtml; exports.formatClassification = formatClassification; exports.formatPricingModel = formatPricingModel; exports.formatBioText = formatBioText; exports.SquareAvatar = SquareAvatar; exports.useControllableState = useControllableState; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; exports.getProxiedImageUrl = getProxiedImageUrl; exports.urlPathLooksLikeSvg = urlPathLooksLikeSvg; exports.shouldProxyImage = shouldProxyImage; exports.generateImageSizes = generateImageSizes; exports.isCrossOriginUrl = isCrossOriginUrl; exports.decideNewTab = decideNewTab; exports.computeIsNewTab = computeIsNewTab; exports.newTabAnchorAttrs = newTabAnchorAttrs; exports.buildAnchorProps = buildAnchorProps; exports.NEW_TAB_FEATURES = NEW_TAB_FEATURES; exports.isModifierClick = isModifierClick; exports.stripSameOriginToPath = stripSameOriginToPath; exports.resolveHrefForRuntime = resolveHrefForRuntime; exports.resolveExternalNavigation = resolveExternalNavigation; exports.EMPTY_AUTHOR_PLACEHOLDER = EMPTY_AUTHOR_PLACEHOLDER; exports.EntityMetadataValueCell = EntityMetadataValueCell; exports.EntityMetadataAuthorCell = EntityMetadataAuthorCell; exports.EntityAuthorCard = EntityAuthorCard; exports.BlogImagePlaceholder = BlogImagePlaceholder; exports.fetchPriorityProp = fetchPriorityProp; exports.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.PAGE_HEADING_CLASS = PAGE_HEADING_CLASS; exports.SECTION_HEADING_CLASS = SECTION_HEADING_CLASS; exports.PageHeading = PageHeading; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.useEntityCardLink = useEntityCardLink; exports.useEntityCardPlaceholder = useEntityCardPlaceholder; 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.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.SOURCE_ICON_NAMES = SOURCE_ICON_NAMES; exports.getSourceIconName = getSourceIconName; exports.SOURCE_LABELS_BY_TABLE = SOURCE_LABELS_BY_TABLE; exports.getSourceLabel = getSourceLabel; exports.DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID = DEFAULT_DOCUMENT_TYPE_TO_TABLE_ID; exports.defaultTableIdForDocumentType = defaultTableIdForDocumentType; exports.ICON_REGISTRY = ICON_REGISTRY; exports.normalizeIconKey = normalizeIconKey; exports.getIconComponent = getIconComponent; exports.getDynamicIcon = getDynamicIcon; exports.sourceRowCtxFromRuntime = sourceRowCtxFromRuntime; exports.resolveSourceRowCTA = resolveSourceRowCTA; exports.resolveSourceIcon = resolveSourceIcon; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.BackButton = BackButton; exports.EntityImage = EntityImage; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.DEFAULT_CONTENT_SUFFIXES = DEFAULT_CONTENT_SUFFIXES; exports.makeComposeContentUrl = makeComposeContentUrl; exports.buildDefaultHref = buildDefaultHref; exports.resolveContentHref = resolveContentHref; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.getCaptionsUrl = getCaptionsUrl; exports.SearchInput = SearchInput; exports.FilterPillRow = FilterPillRow;
|
|
4558
|
-
//# sourceMappingURL=chunk-PVXCVPJD.cjs.map
|
|
2998
|
+
exports.Card = Card; exports.CardHeader = CardHeader; exports.CardTitle = CardTitle; exports.CardDescription = CardDescription; exports.CardContent = CardContent; exports.CardFooter = CardFooter; exports.CardHorizontal = CardHorizontal; exports.Tabs = Tabs; exports.TabsList = TabsList; exports.TabsTrigger = TabsTrigger; exports.TabsContent = TabsContent; exports.statusBadgeVariants = statusBadgeVariants; exports.StatusBadge = StatusBadge; exports.SimpleMarkdownRenderer = SimpleMarkdownRenderer; exports.SquareAvatar = SquareAvatar; exports.useControllableState = useControllableState; exports.ActionsMenu = ActionsMenu; exports.ActionsMenuDropdown = ActionsMenuDropdown; 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.extractYouTubeId = extractYouTubeId; exports.Video = Video; exports.RATIO_GRID_CLASS = RATIO_GRID_CLASS; exports.RATIO_DISPLAY_GRID_CLASS = RATIO_DISPLAY_GRID_CLASS; exports.RatioTabs = RatioTabs; exports.detectAspectRatio = detectAspectRatio; exports.ratioToCategory = ratioToCategory; exports.groupByAspectRatio = groupByAspectRatio; exports.VideoBitesDisplay = VideoBitesDisplay; exports.VideoBiteCard = VideoBiteCard; exports.EntityVideoSection = EntityVideoSection; exports.useEntityCardLink = useEntityCardLink; exports.useEntityCardPlaceholder = useEntityCardPlaceholder; exports.OnboardingGuideCardSkeleton = OnboardingGuideCardSkeleton; exports.OnboardingGuideCard = OnboardingGuideCard; exports.PageActions = PageActions; exports.usePageActionsBottomPadding = usePageActionsBottomPadding; exports.BackButton = BackButton; exports.EntityImage = EntityImage; exports.TitleBlock = TitleBlock; exports.PageLayout = PageLayout; exports.PageShell = PageShell; exports.ArticleDetailLayout = ArticleDetailLayout; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.MUX_STREAM_ORIGIN = MUX_STREAM_ORIGIN; exports.MUX_IMAGE_ORIGIN = MUX_IMAGE_ORIGIN; exports.useVideoOriginPreconnect = useVideoOriginPreconnect; exports.useVideoWarmup = useVideoWarmup; exports.getCaptionsUrl = getCaptionsUrl; exports.FilterPillRow = FilterPillRow;
|
|
2999
|
+
//# sourceMappingURL=chunk-EI4WALN2.cjs.map
|