@flamingo-stack/openframe-frontend-core 0.0.739 → 0.0.741
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/build/export-map.json +1 -1
- package/dist/{chunk-ENCAIAMY.cjs → chunk-4XL4YEZM.cjs} +3 -3
- package/dist/{chunk-FL6UO7IR.cjs → chunk-5SVOGLNK.cjs} +2 -2
- package/dist/{chunk-WFPCCBOM.cjs → chunk-7AM3AFM4.cjs} +10 -10
- package/dist/{chunk-S2CA5WE4.cjs → chunk-CWRVTQUO.cjs} +9 -1
- package/dist/{chunk-KHXZFLIN.cjs → chunk-DKOLQPE7.cjs} +8 -2
- package/dist/{chunk-UXFJXIUT.cjs → chunk-EKGL5K5K.cjs} +2 -2
- package/dist/{chunk-DTLHY2ZF.cjs → chunk-FQN6STIM.cjs} +12 -155
- package/dist/{chunk-V2ZFH42N.cjs → chunk-HYBMADYO.cjs} +3 -3
- package/dist/{chunk-NX6JQT25.cjs → chunk-I6UE6YVM.cjs} +4 -4
- package/dist/{chunk-SB4VWA5V.cjs → chunk-IK2RJUEA.cjs} +2118 -268
- package/dist/{chunk-CUDTMCXK.cjs → chunk-ITPEFCQ2.cjs} +13 -13
- package/dist/{chunk-WMKNZI4G.cjs → chunk-JFS6TZDX.cjs} +22 -22
- package/dist/{chunk-RGFT3P3L.cjs → chunk-LZ6NOVXX.cjs} +55 -55
- package/dist/{chunk-TF7J6VXG.cjs → chunk-QEUGYHFB.cjs} +9 -9
- package/dist/{chunk-II4QMH26.cjs → chunk-STEJZPIO.cjs} +3 -3
- package/dist/{chunk-UI3HROSI.cjs → chunk-XJ36TEGE.cjs} +33 -33
- package/dist/{chunk-UYP3G6PB.cjs → chunk-YQ37ZCD2.cjs} +2 -2
- package/dist/{chunk-Q7GG3WC5.cjs → chunk-ZJPDGVA6.cjs} +5 -5
- package/dist/{chunk-EGN4I5Q7.cjs → chunk-ZYOS7LVQ.cjs} +134 -46
- package/dist/{cloud-tenants-QSFSO3PA.cjs → cloud-tenants-MVJK52I2.cjs} +13 -13
- package/dist/components/case-studies/index.cjs +11 -11
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/contact/index.cjs +4 -4
- package/dist/components/docs/index.cjs +7 -7
- package/dist/components/embeds/index.cjs +4 -4
- package/dist/components/faq/index.cjs +5 -5
- package/dist/components/features/capability-explorer.d.ts +9 -2
- package/dist/components/features/capability-explorer.d.ts.map +1 -1
- package/dist/components/features/capability-explorer.js +113 -6
- package/dist/components/features/index.cjs +141 -3
- package/dist/components/features/index.d.ts +1 -0
- package/dist/components/features/index.d.ts.map +1 -1
- package/dist/components/features/index.js +1 -0
- package/dist/components/features/scripts/execution-cells.d.ts +65 -0
- package/dist/components/features/scripts/execution-cells.d.ts.map +1 -0
- package/dist/components/features/scripts/execution-cells.js +75 -0
- package/dist/components/features/scripts/execution-status.d.ts +48 -0
- package/dist/components/features/scripts/execution-status.d.ts.map +1 -0
- package/dist/components/features/scripts/execution-status.js +15 -0
- package/dist/components/features/scripts/index.d.ts +20 -0
- package/dist/components/features/scripts/index.d.ts.map +1 -0
- package/dist/components/features/scripts/index.js +59 -0
- package/dist/components/features/scripts/schedule-form/index.d.ts +18 -0
- package/dist/components/features/scripts/schedule-form/index.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/index.js +84 -0
- package/dist/components/features/scripts/schedule-form/schedule-enums.d.ts +24 -0
- package/dist/components/features/scripts/schedule-form/schedule-enums.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-enums.js +18 -0
- package/dist/components/features/scripts/schedule-form/schedule-form-fields.d.ts +57 -0
- package/dist/components/features/scripts/schedule-form/schedule-form-fields.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-form-fields.js +169 -0
- package/dist/components/features/scripts/schedule-form/schedule-form-types.d.ts +138 -0
- package/dist/components/features/scripts/schedule-form/schedule-form-types.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-form-types.js +72 -0
- package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts +54 -0
- package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-interval-input.js +60 -0
- package/dist/components/features/scripts/schedule-form/schedule-offline-fields.d.ts +29 -0
- package/dist/components/features/scripts/schedule-form/schedule-offline-fields.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-offline-fields.js +124 -0
- package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.d.ts +52 -0
- package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.js +244 -0
- package/dist/components/features/scripts/schedule-form/schedule-script-search-field.d.ts +35 -0
- package/dist/components/features/scripts/schedule-form/schedule-script-search-field.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-script-search-field.js +58 -0
- package/dist/components/features/scripts/schedule-form/schedule-scripts-field.d.ts +25 -0
- package/dist/components/features/scripts/schedule-form/schedule-scripts-field.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-scripts-field.js +66 -0
- package/dist/components/features/scripts/schedule-form/schedule-timing-fields.d.ts +77 -0
- package/dist/components/features/scripts/schedule-form/schedule-timing-fields.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-timing-fields.js +262 -0
- package/dist/components/features/scripts/schedule-form/schedule-timing.d.ts +288 -0
- package/dist/components/features/scripts/schedule-form/schedule-timing.d.ts.map +1 -0
- package/dist/components/features/scripts/schedule-form/schedule-timing.js +165 -0
- package/dist/components/features/scripts/script-cells.d.ts +11 -0
- package/dist/components/features/scripts/script-cells.d.ts.map +1 -0
- package/dist/components/features/scripts/script-cells.js +19 -0
- package/dist/components/features/scripts/script-executions-table.d.ts +58 -0
- package/dist/components/features/scripts/script-executions-table.d.ts.map +1 -0
- package/dist/components/features/scripts/script-executions-table.js +88 -0
- package/dist/components/features/scripts/script-schedules-table.d.ts +38 -0
- package/dist/components/features/scripts/script-schedules-table.d.ts.map +1 -0
- package/dist/components/features/scripts/script-schedules-table.js +71 -0
- package/dist/components/features/scripts/script-shell-badge.d.ts +9 -0
- package/dist/components/features/scripts/script-shell-badge.d.ts.map +1 -0
- package/dist/components/features/scripts/script-shell-badge.js +15 -0
- package/dist/components/features/scripts/scripts-table-columns.d.ts +162 -0
- package/dist/components/features/scripts/scripts-table-columns.d.ts.map +1 -0
- package/dist/components/features/scripts/scripts-table-columns.js +69 -0
- package/dist/components/features/scripts/scripts-table-shared.d.ts +19 -0
- package/dist/components/features/scripts/scripts-table-shared.d.ts.map +1 -0
- package/dist/components/features/scripts/scripts-table-shared.js +35 -0
- package/dist/components/features/scripts/scripts-table.d.ts +40 -0
- package/dist/components/features/scripts/scripts-table.d.ts.map +1 -0
- package/dist/components/features/scripts/scripts-table.js +84 -0
- package/dist/components/features/scripts/scripts-tabs.d.ts +5 -0
- package/dist/components/features/scripts/scripts-tabs.d.ts.map +1 -0
- package/dist/components/features/scripts/scripts-tabs.js +10 -0
- package/dist/components/features/scripts/shell-types.d.ts +13 -0
- package/dist/components/features/scripts/shell-types.d.ts.map +1 -0
- package/dist/components/features/scripts/shell-types.js +21 -0
- package/dist/components/help-center-pages/index.cjs +53 -53
- package/dist/components/index.cjs +178 -34
- package/dist/components/meeting-scheduler/index.cjs +17 -17
- package/dist/components/navigation/index.cjs +6 -6
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/product-demo/fixtures/scripts.d.ts +34 -0
- package/dist/components/product-demo/fixtures/scripts.d.ts.map +1 -0
- package/dist/components/product-demo/fixtures/scripts.js +123 -0
- package/dist/components/product-demo/fixtures/shared.d.ts +8 -0
- package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -1
- package/dist/components/product-demo/fixtures/shared.js +7 -1
- package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -1
- package/dist/components/product-demo/fixtures/software-update.js +1 -5
- package/dist/components/product-demo/index.cjs +16 -13
- package/dist/components/product-demo/product-screen.d.ts.map +1 -1
- package/dist/components/product-demo/product-screen.js +2 -1
- package/dist/components/product-demo/registry.d.ts.map +1 -1
- package/dist/components/product-demo/registry.js +2 -1
- package/dist/components/product-demo/screen-keys.cjs +2 -1
- package/dist/components/product-demo/screen-keys.d.ts +1 -0
- package/dist/components/product-demo/screen-keys.d.ts.map +1 -1
- package/dist/components/product-demo/screen-keys.js +2 -1
- package/dist/components/product-demo/screens/scripts.d.ts +11 -0
- package/dist/components/product-demo/screens/scripts.d.ts.map +1 -0
- package/dist/components/product-demo/screens/scripts.js +130 -0
- package/dist/components/shared/legal-document/index.d.ts +2 -1
- package/dist/components/shared/legal-document/index.d.ts.map +1 -1
- package/dist/components/shared/legal-document/index.js +10 -2
- package/dist/components/shared/legal-document/legal-document-page.d.ts +35 -23
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.js +27 -10
- package/dist/components/shared/legal-document/use-legal-docs.d.ts +7 -3
- package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
- package/dist/components/shared/legal-document/use-legal-docs.js +7 -0
- package/dist/components/shared/legal-document/use-legal-documents.d.ts +31 -0
- package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -0
- package/dist/components/shared/legal-document/use-legal-documents.js +67 -0
- package/dist/components/tickets/index.cjs +8 -8
- package/dist/components/ui/index.cjs +3 -3
- package/dist/{devices-C7XLWJFC.cjs → devices-W3S7Q2PG.cjs} +9 -9
- package/dist/index.cjs +150 -8
- package/dist/{knowledge-3QKWTOE7.cjs → knowledge-AIYQ4FC3.cjs} +7 -7
- package/dist/{logs-JXD75NR4.cjs → logs-7SHJ2ARE.cjs} +25 -25
- package/dist/{policies-ZPN53PFQ.cjs → policies-EIZJ5SUP.cjs} +10 -10
- package/dist/{remote-session-DNFZ5OLY.cjs → remote-session-BZMNE6D2.cjs} +5 -5
- package/dist/scripts-J2FWC7E4.cjs +2112 -0
- package/dist/{software-update-CRSIBS3K.cjs → software-update-QAMNASVF.cjs} +14 -18
- package/dist/{tickets-board-CKZRB6YV.cjs → tickets-board-CEDHD3KB.cjs} +17 -17
- package/dist/utils/index.cjs +8 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/legal-documents.d.ts +18 -0
- package/dist/utils/legal-documents.d.ts.map +1 -0
- package/dist/utils/legal-documents.js +8 -0
- package/package.json +1 -1
- package/src/components/features/capability-explorer.tsx +134 -7
- package/src/components/features/index.ts +1 -0
- package/src/components/features/scripts/execution-cells.tsx +149 -0
- package/src/components/features/scripts/execution-status.ts +42 -0
- package/src/components/features/scripts/index.ts +42 -0
- package/src/components/features/scripts/schedule-form/index.ts +59 -0
- package/src/components/features/scripts/schedule-form/schedule-enums.ts +26 -0
- package/src/components/features/scripts/schedule-form/schedule-form-fields.tsx +249 -0
- package/src/components/features/scripts/schedule-form/schedule-form-types.ts +189 -0
- package/src/components/features/scripts/schedule-form/schedule-interval-input.tsx +121 -0
- package/src/components/features/scripts/schedule-form/schedule-offline-fields.tsx +218 -0
- package/src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx +321 -0
- package/src/components/features/scripts/schedule-form/schedule-script-search-field.tsx +115 -0
- package/src/components/features/scripts/schedule-form/schedule-scripts-field.tsx +97 -0
- package/src/components/features/scripts/schedule-form/schedule-timing-fields.tsx +482 -0
- package/src/components/features/scripts/schedule-form/schedule-timing.ts +484 -0
- package/src/components/features/scripts/script-cells.tsx +29 -0
- package/src/components/features/scripts/script-executions-table.tsx +145 -0
- package/src/components/features/scripts/script-schedules-table.tsx +113 -0
- package/src/components/features/scripts/script-shell-badge.tsx +25 -0
- package/src/components/features/scripts/scripts-table-columns.ts +95 -0
- package/src/components/features/scripts/scripts-table-shared.tsx +43 -0
- package/src/components/features/scripts/scripts-table.tsx +124 -0
- package/src/components/features/scripts/scripts-tabs.ts +11 -0
- package/src/components/features/scripts/shell-types.ts +26 -0
- package/src/components/product-demo/fixtures/scripts.ts +186 -0
- package/src/components/product-demo/fixtures/shared.ts +7 -0
- package/src/components/product-demo/fixtures/software-update.ts +1 -7
- package/src/components/product-demo/product-screen.tsx +3 -1
- package/src/components/product-demo/registry.ts +1 -0
- package/src/components/product-demo/screen-keys.ts +1 -0
- package/src/components/product-demo/screens/scripts.tsx +192 -0
- package/src/components/shared/legal-document/index.ts +8 -0
- package/src/components/shared/legal-document/legal-document-page.tsx +83 -44
- package/src/components/shared/legal-document/use-legal-docs.ts +18 -3
- package/src/components/shared/legal-document/use-legal-documents.ts +113 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/legal-documents.ts +21 -0
|
@@ -107,7 +107,9 @@ var _chunkYUMFVQINcjs = require('./chunk-YUMFVQIN.cjs');
|
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
|
|
111
113
|
|
|
112
114
|
|
|
113
115
|
|
|
@@ -142,6 +144,7 @@ var _chunkBV5WZVOPcjs = require('./chunk-BV5WZVOP.cjs');
|
|
|
142
144
|
|
|
143
145
|
|
|
144
146
|
|
|
147
|
+
|
|
145
148
|
var _chunkGABDE3FMcjs = require('./chunk-GABDE3FM.cjs');
|
|
146
149
|
|
|
147
150
|
|
|
@@ -188,6 +191,15 @@ var _chunkRNZYBODMcjs = require('./chunk-RNZYBODM.cjs');
|
|
|
188
191
|
var _chunkJQEOUB5Fcjs = require('./chunk-JQEOUB5F.cjs');
|
|
189
192
|
|
|
190
193
|
|
|
194
|
+
var _chunkTPKKRHUMcjs = require('./chunk-TPKKRHUM.cjs');
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
var _chunkNIVJEJSGcjs = require('./chunk-NIVJEJSG.cjs');
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
var _chunkTRUW6DDAcjs = require('./chunk-TRUW6DDA.cjs');
|
|
201
|
+
|
|
202
|
+
|
|
191
203
|
var _chunkTG6OBLADcjs = require('./chunk-TG6OBLAD.cjs');
|
|
192
204
|
|
|
193
205
|
|
|
@@ -224,6 +236,9 @@ var _chunk7GO2BPMRcjs = require('./chunk-7GO2BPMR.cjs');
|
|
|
224
236
|
var _chunkFO6DOP6Mcjs = require('./chunk-FO6DOP6M.cjs');
|
|
225
237
|
|
|
226
238
|
|
|
239
|
+
var _chunkMCQY746Mcjs = require('./chunk-MCQY746M.cjs');
|
|
240
|
+
|
|
241
|
+
|
|
227
242
|
var _chunk3JLYHTN6cjs = require('./chunk-3JLYHTN6.cjs');
|
|
228
243
|
|
|
229
244
|
|
|
@@ -257,6 +272,9 @@ var _chunkPTK7GOIIcjs = require('./chunk-PTK7GOII.cjs');
|
|
|
257
272
|
var _chunkTTVGV2DYcjs = require('./chunk-TTVGV2DY.cjs');
|
|
258
273
|
|
|
259
274
|
|
|
275
|
+
var _chunkMT45XX7Icjs = require('./chunk-MT45XX7I.cjs');
|
|
276
|
+
|
|
277
|
+
|
|
260
278
|
var _chunk7O43PYUZcjs = require('./chunk-7O43PYUZ.cjs');
|
|
261
279
|
|
|
262
280
|
|
|
@@ -389,6 +407,9 @@ var _chunk4TUSPDNScjs = require('./chunk-4TUSPDNS.cjs');
|
|
|
389
407
|
var _chunkHFNBMV5Mcjs = require('./chunk-HFNBMV5M.cjs');
|
|
390
408
|
|
|
391
409
|
|
|
410
|
+
var _chunkSAPD55KQcjs = require('./chunk-SAPD55KQ.cjs');
|
|
411
|
+
|
|
412
|
+
|
|
392
413
|
var _chunkKFICYKQQcjs = require('./chunk-KFICYKQQ.cjs');
|
|
393
414
|
|
|
394
415
|
|
|
@@ -4325,7 +4346,7 @@ function AdminFormDrawer({
|
|
|
4325
4346
|
"form",
|
|
4326
4347
|
{
|
|
4327
4348
|
id: formId,
|
|
4328
|
-
...
|
|
4349
|
+
..._chunkCWRVTQUOcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
|
|
4329
4350
|
className: "flex flex-col gap-[var(--spacing-system-lf)]",
|
|
4330
4351
|
onSubmit: (e) => {
|
|
4331
4352
|
e.preventDefault();
|
|
@@ -4435,7 +4456,7 @@ function AdminFormModal({
|
|
|
4435
4456
|
"form",
|
|
4436
4457
|
{
|
|
4437
4458
|
id: formId,
|
|
4438
|
-
...
|
|
4459
|
+
..._chunkCWRVTQUOcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
|
|
4439
4460
|
className: "flex min-h-0 flex-1 flex-col",
|
|
4440
4461
|
onSubmit: (e) => {
|
|
4441
4462
|
e.preventDefault();
|
|
@@ -5711,7 +5732,7 @@ function EmbedViewerFrame({
|
|
|
5711
5732
|
const controllerRef = _react.useRef.call(void 0, null);
|
|
5712
5733
|
_react.useEffect.call(void 0, () => {
|
|
5713
5734
|
if (!fullscreenControl) return void 0;
|
|
5714
|
-
const controller = new (0,
|
|
5735
|
+
const controller = new (0, _chunkCWRVTQUOcjs.FullscreenSwitchController)({
|
|
5715
5736
|
target: () => frameRef.current,
|
|
5716
5737
|
onFullscreenChange: setIsFullscreen
|
|
5717
5738
|
});
|
|
@@ -7636,7 +7657,7 @@ var processShortcodes = (content) => {
|
|
|
7636
7657
|
try {
|
|
7637
7658
|
const urlObj = new URL(url);
|
|
7638
7659
|
const hostname = urlObj.hostname.toLowerCase();
|
|
7639
|
-
const hostIs = (domain) =>
|
|
7660
|
+
const hostIs = (domain) => _chunkCWRVTQUOcjs.hostMatches.call(void 0, hostname, domain);
|
|
7640
7661
|
const isYouTubeVideo = hostIs("youtube.com") && urlObj.searchParams.has("v") || hostIs("youtu.be");
|
|
7641
7662
|
if (isYouTubeVideo || hostIs("reddit.com") || hostIs("twitter.com") || hostIs("x.com") || hostIs("figma.com")) {
|
|
7642
7663
|
return match;
|
|
@@ -9771,10 +9792,10 @@ var OSTypeBadge = ({
|
|
|
9771
9792
|
if (!osType) {
|
|
9772
9793
|
return labelOnly ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "text-ods-text-secondary", className), children: "Unknown" }) : null;
|
|
9773
9794
|
}
|
|
9774
|
-
const normalized =
|
|
9795
|
+
const normalized = _chunkCWRVTQUOcjs.normalizeOSType.call(void 0, osType);
|
|
9775
9796
|
if (!normalized && !labelOnly) return null;
|
|
9776
|
-
const label =
|
|
9777
|
-
const IconComponent =
|
|
9797
|
+
const label = _chunkCWRVTQUOcjs.getOSLabel.call(void 0, osType);
|
|
9798
|
+
const IconComponent = _chunkCWRVTQUOcjs.getOSIcon.call(void 0, osType);
|
|
9778
9799
|
if (iconOnly && IconComponent) {
|
|
9779
9800
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, IconComponent, { className: _chunk3ATAYP36cjs.cn.call(void 0, iconSize, "text-ods-text-secondary", className) });
|
|
9780
9801
|
}
|
|
@@ -10006,7 +10027,7 @@ function ComplianceLogo({
|
|
|
10006
10027
|
fallback = null,
|
|
10007
10028
|
className
|
|
10008
10029
|
}) {
|
|
10009
|
-
const standard =
|
|
10030
|
+
const standard = _chunkCWRVTQUOcjs.complianceStandardForName.call(void 0, ...names);
|
|
10010
10031
|
if (!standard) return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: fallback });
|
|
10011
10032
|
const Official = standard.logo ? COMPLIANCE_LOGOS[standard.logo] : null;
|
|
10012
10033
|
return Official ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -11623,7 +11644,7 @@ function TableHeader({
|
|
|
11623
11644
|
onFilterChange
|
|
11624
11645
|
}
|
|
11625
11646
|
),
|
|
11626
|
-
column.hint ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11647
|
+
column.hint ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCWRVTQUOcjs.InfoHint, { label: column.label, children: column.hint }) : null
|
|
11627
11648
|
] })
|
|
11628
11649
|
) : (
|
|
11629
11650
|
/* Non-filterable column — regular label with optional sort */
|
|
@@ -11649,7 +11670,7 @@ function TableHeader({
|
|
|
11649
11670
|
hint exists, so a hint-less header keeps its DOM. */
|
|
11650
11671
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 items-start gap-[var(--spacing-system-xxs)]", children: [
|
|
11651
11672
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: TABLE_HEADER_LABEL_CLASS, children: column.label }),
|
|
11652
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
11673
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCWRVTQUOcjs.InfoHint, { label: column.label, children: column.hint })
|
|
11653
11674
|
] })
|
|
11654
11675
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: TABLE_HEADER_LABEL_CLASS, children: column.label }),
|
|
11655
11676
|
getSortIcon(column)
|
|
@@ -12990,7 +13011,7 @@ function HeaderCell({ header, sort, onSortChange }) {
|
|
|
12990
13011
|
// child of the cell.
|
|
12991
13012
|
_optionalChain([meta, 'optionalAccess', _234 => _234.hint]) ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-[var(--spacing-system-xxs)]", children: [
|
|
12992
13013
|
filterTrigger,
|
|
12993
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13014
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCWRVTQUOcjs.InfoHint, { label: resolveHeaderLabel(header), children: meta.hint })
|
|
12994
13015
|
] }) : filterTrigger
|
|
12995
13016
|
) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
12996
13017
|
"div",
|
|
@@ -13015,7 +13036,7 @@ function HeaderCell({ header, sort, onSortChange }) {
|
|
|
13015
13036
|
// centred on the row.
|
|
13016
13037
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex min-w-0 items-start gap-[var(--spacing-system-xxs)]", children: [
|
|
13017
13038
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
|
|
13018
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
13039
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCWRVTQUOcjs.InfoHint, { label: resolveHeaderLabel(header), children: meta.hint })
|
|
13019
13040
|
] })
|
|
13020
13041
|
) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, HeaderLabel, { header }),
|
|
13021
13042
|
canSort && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortIcon, { sorted: sortDir })
|
|
@@ -13234,7 +13255,7 @@ function PhoneInput({
|
|
|
13234
13255
|
placeholder = "Phone Number (optional)",
|
|
13235
13256
|
onKeyDown
|
|
13236
13257
|
}) {
|
|
13237
|
-
const { priority, others } = _react.useMemo.call(void 0, () =>
|
|
13258
|
+
const { priority, others } = _react.useMemo.call(void 0, () => _chunkCWRVTQUOcjs.getCountryPhoneData.call(void 0, ), []);
|
|
13238
13259
|
const selectedCountry = _react.useMemo.call(void 0,
|
|
13239
13260
|
() => [...priority, ...others].find((c) => c.code === countryCode),
|
|
13240
13261
|
[countryCode, priority, others]
|
|
@@ -13249,7 +13270,7 @@ function PhoneInput({
|
|
|
13249
13270
|
_optionalChain([onValidationChange, 'optionalCall', _247 => _247(false)]);
|
|
13250
13271
|
return;
|
|
13251
13272
|
}
|
|
13252
|
-
const invalid = !
|
|
13273
|
+
const invalid = !_chunkCWRVTQUOcjs.validatePhoneNumber.call(void 0, phone, countryCode);
|
|
13253
13274
|
setIsInvalid(invalid);
|
|
13254
13275
|
_optionalChain([onValidationChange, 'optionalCall', _248 => _248(invalid)]);
|
|
13255
13276
|
},
|
|
@@ -16724,7 +16745,7 @@ var TRIAL_TERM_ICONS = {
|
|
|
16724
16745
|
};
|
|
16725
16746
|
var DEFAULT_TRIAL_TERMS = ["cancel", "length", "noContract"];
|
|
16726
16747
|
function trialBenefits(trialDays, terms = DEFAULT_TRIAL_TERMS) {
|
|
16727
|
-
const labels =
|
|
16748
|
+
const labels = _chunkCWRVTQUOcjs.trialLabels.call(void 0, trialDays);
|
|
16728
16749
|
return terms.flatMap((term) => {
|
|
16729
16750
|
const label = labels[term];
|
|
16730
16751
|
return label ? [{ icon: TRIAL_TERM_ICONS[term], label }] : [];
|
|
@@ -22264,14 +22285,14 @@ var MODEL_TOKEN_RATES_COPY = {
|
|
|
22264
22285
|
empty: "No token rates are in effect right now."
|
|
22265
22286
|
};
|
|
22266
22287
|
function providerMark(providerType, stated, className) {
|
|
22267
|
-
const Mark = _chunkFICJS5OAcjs.findIcon.call(void 0,
|
|
22288
|
+
const Mark = _chunkFICJS5OAcjs.findIcon.call(void 0, _chunkCWRVTQUOcjs.aiProvider.call(void 0, providerType, { icon: stated }).icon);
|
|
22268
22289
|
return Mark ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Mark, { className }) : void 0;
|
|
22269
22290
|
}
|
|
22270
22291
|
var PAD_X = "px-[var(--spacing-system-s)]";
|
|
22271
22292
|
var ROW = "flex items-center gap-[var(--spacing-system-s)]";
|
|
22272
22293
|
var NUMBER_CELL = "w-16 shrink-0 whitespace-nowrap text-right tabular-nums";
|
|
22273
22294
|
function useProviderGroup(rates) {
|
|
22274
|
-
const groups =
|
|
22295
|
+
const groups = _chunkCWRVTQUOcjs.groupTokenRatesByProvider.call(void 0, rates);
|
|
22275
22296
|
const [picked, setPicked] = _react.useState.call(void 0, null);
|
|
22276
22297
|
return { groups, group: _nullishCoalesce(groups.find((candidate) => candidate.providerType === picked), () => ( groups[0])), setPicked };
|
|
22277
22298
|
}
|
|
@@ -22290,7 +22311,7 @@ function ProviderTabs({
|
|
|
22290
22311
|
onValueChange,
|
|
22291
22312
|
items: groups.map((candidate) => ({
|
|
22292
22313
|
id: candidate.providerType,
|
|
22293
|
-
label:
|
|
22314
|
+
label: _chunkCWRVTQUOcjs.tokenRateProviderLabel.call(void 0, candidate.providerType, _optionalChain([candidate, 'access', _432 => _432.rates, 'access', _433 => _433[0], 'optionalAccess', _434 => _434.providerLabel])),
|
|
22294
22315
|
icon: providerMark(candidate.providerType, _optionalChain([candidate, 'access', _435 => _435.rates, 'access', _436 => _436[0], 'optionalAccess', _437 => _437.providerIcon]), "size-full")
|
|
22295
22316
|
})),
|
|
22296
22317
|
className
|
|
@@ -22391,8 +22412,8 @@ function ModelTokenRatesTable({ rates }) {
|
|
|
22391
22412
|
className: _chunk3ATAYP36cjs.cn.call(void 0, ROW, PAD_X, "py-[var(--spacing-system-xxs)] text-ods-text-primary text-h6"),
|
|
22392
22413
|
children: [
|
|
22393
22414
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "rowheader", className: "min-w-0 flex-1 truncate", children: rate.displayName || rate.modelName }),
|
|
22394
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "cell", className: NUMBER_CELL, children:
|
|
22395
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "cell", className: NUMBER_CELL, children:
|
|
22415
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "cell", className: NUMBER_CELL, children: _chunkCWRVTQUOcjs.formatTokenRate.call(void 0, rate.inputTokenRate) }),
|
|
22416
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { role: "cell", className: NUMBER_CELL, children: _chunkCWRVTQUOcjs.formatTokenRate.call(void 0, rate.outputTokenRate) })
|
|
22396
22417
|
]
|
|
22397
22418
|
},
|
|
22398
22419
|
rate.modelName
|
|
@@ -22464,7 +22485,7 @@ function modelOption(rate) {
|
|
|
22464
22485
|
return {
|
|
22465
22486
|
label: rate.displayName || rate.modelName,
|
|
22466
22487
|
value: rate.modelName,
|
|
22467
|
-
description:
|
|
22488
|
+
description: _chunkCWRVTQUOcjs.tokenRateProviderLabel.call(void 0, rate.providerType, rate.providerLabel),
|
|
22468
22489
|
icon: providerMark(rate.providerType, rate.providerIcon, "size-full text-ods-text-secondary")
|
|
22469
22490
|
};
|
|
22470
22491
|
}
|
|
@@ -22518,8 +22539,8 @@ function ModelTokenExchange({
|
|
|
22518
22539
|
const [chosen, setChosen] = _react.useState.call(void 0, null);
|
|
22519
22540
|
const balance = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(chosen, () => ( defaultAmount)), () => ( _optionalChain([tokenPrice, 'optionalAccess', _438 => _438.tokens]))), () => ( MODEL_TOKEN_EXCHANGE_BALANCE));
|
|
22520
22541
|
const max = Math.max(amountRange.max, balance, ...presets.map((preset) => preset.tokens));
|
|
22521
|
-
const tokens =
|
|
22522
|
-
const cost =
|
|
22542
|
+
const tokens = _chunkCWRVTQUOcjs.formatTokenAmount.call(void 0, balance);
|
|
22543
|
+
const cost = _chunkCWRVTQUOcjs.tokenCost.call(void 0, balance, tokenPrice);
|
|
22523
22544
|
const balancePrice = cost === null ? null : _chunk7ZFCR7UYcjs.formatPrice.call(void 0, cost);
|
|
22524
22545
|
const model = rate ? rate.displayName || rate.modelName : "";
|
|
22525
22546
|
const options = models.map(modelOption);
|
|
@@ -22561,7 +22582,7 @@ function ModelTokenExchange({
|
|
|
22561
22582
|
variant: preset.tokens === balance ? "accent" : "outline",
|
|
22562
22583
|
size: "small",
|
|
22563
22584
|
onClick: () => setChosen(preset.tokens),
|
|
22564
|
-
children: copy.buy.preset(
|
|
22585
|
+
children: copy.buy.preset(_chunkCWRVTQUOcjs.formatTokenAmount.call(void 0, preset.tokens), preset.label)
|
|
22565
22586
|
},
|
|
22566
22587
|
preset.label
|
|
22567
22588
|
)) })
|
|
@@ -22580,7 +22601,7 @@ function ModelTokenExchange({
|
|
|
22580
22601
|
const stated = _nullishCoalesce(models.find((option) => option.providerType === providerType), () => ( (_optionalChain([rate, 'optionalAccess', _439 => _439.providerType]) === providerType ? rate : null)));
|
|
22581
22602
|
return {
|
|
22582
22603
|
id: providerType,
|
|
22583
|
-
name:
|
|
22604
|
+
name: _chunkCWRVTQUOcjs.tokenRateProviderLabel.call(void 0, providerType, _optionalChain([stated, 'optionalAccess', _440 => _440.providerLabel])),
|
|
22584
22605
|
icon: providerMark(providerType, _optionalChain([stated, 'optionalAccess', _441 => _441.providerIcon]), "size-8 text-ods-text-secondary")
|
|
22585
22606
|
};
|
|
22586
22607
|
}),
|
|
@@ -22618,7 +22639,7 @@ function ModelTokenExchange({
|
|
|
22618
22639
|
{
|
|
22619
22640
|
size: "plain",
|
|
22620
22641
|
loading,
|
|
22621
|
-
figure:
|
|
22642
|
+
figure: _chunkCWRVTQUOcjs.formatTokenRate.call(void 0, _optionalChain([rate, 'optionalAccess', _446 => _446.inputTokenRate])),
|
|
22622
22643
|
words: copy.charge.input
|
|
22623
22644
|
}
|
|
22624
22645
|
),
|
|
@@ -22627,7 +22648,7 @@ function ModelTokenExchange({
|
|
|
22627
22648
|
{
|
|
22628
22649
|
size: "plain",
|
|
22629
22650
|
loading,
|
|
22630
|
-
figure:
|
|
22651
|
+
figure: _chunkCWRVTQUOcjs.formatTokenRate.call(void 0, _optionalChain([rate, 'optionalAccess', _447 => _447.outputTokenRate])),
|
|
22631
22652
|
words: copy.charge.output
|
|
22632
22653
|
}
|
|
22633
22654
|
)
|
|
@@ -22639,9 +22660,9 @@ function ModelTokenExchange({
|
|
|
22639
22660
|
className: "mt-auto flex flex-col rounded-md border border-ods-accent bg-ods-bg p-[var(--spacing-system-mf)]",
|
|
22640
22661
|
children: [
|
|
22641
22662
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-h-[2lh] text-ods-text-secondary text-h4", children: loading || !rate ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Bar, { className: "w-full max-w-xs" }) : copy.charge.so(_nullishCoalesce(balancePrice, () => ( copy.buy.tokens(tokens))), model) }),
|
|
22642
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-h-[1lh] whitespace-nowrap tabular-nums text-ods-text-primary text-h1", children: loading || !rate ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Bar, { className: "w-40" }) :
|
|
22663
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-h-[1lh] whitespace-nowrap tabular-nums text-ods-text-primary text-h1", children: loading || !rate ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Bar, { className: "w-40" }) : _chunkCWRVTQUOcjs.formatTokenAmount.call(void 0, _chunkCWRVTQUOcjs.tokensForBalance.call(void 0, balance, rate.inputTokenRate)) }),
|
|
22643
22664
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-h-[1lh] text-ods-text-primary text-h3", children: copy.charge.read }),
|
|
22644
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-h-[1lh] text-ods-text-secondary text-h4", children: loading || !rate ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Bar, { className: "w-48" }) : copy.charge.orWritten(
|
|
22665
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-h-[1lh] text-ods-text-secondary text-h4", children: loading || !rate ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Bar, { className: "w-48" }) : copy.charge.orWritten(_chunkCWRVTQUOcjs.formatTokenAmount.call(void 0, _chunkCWRVTQUOcjs.tokensForBalance.call(void 0, balance, rate.outputTokenRate))) })
|
|
22645
22666
|
]
|
|
22646
22667
|
}
|
|
22647
22668
|
)
|
|
@@ -23139,14 +23160,14 @@ var ConfidenceBadge = ({
|
|
|
23139
23160
|
size = "sm",
|
|
23140
23161
|
className
|
|
23141
23162
|
}) => {
|
|
23142
|
-
const level =
|
|
23163
|
+
const level = _chunkCWRVTQUOcjs.getConfidenceLevel.call(void 0, confidence);
|
|
23143
23164
|
if (level === "none") {
|
|
23144
23165
|
return null;
|
|
23145
23166
|
}
|
|
23146
|
-
const label =
|
|
23147
|
-
const borderClass =
|
|
23148
|
-
const textClass =
|
|
23149
|
-
const bgClass =
|
|
23167
|
+
const label = _chunkCWRVTQUOcjs.getConfidenceLabel.call(void 0, confidence);
|
|
23168
|
+
const borderClass = _chunkCWRVTQUOcjs.getConfidenceBorderClass.call(void 0, confidence);
|
|
23169
|
+
const textClass = _chunkCWRVTQUOcjs.getConfidenceTextClass.call(void 0, confidence);
|
|
23170
|
+
const bgClass = _chunkCWRVTQUOcjs.getConfidenceBgClass.call(void 0, confidence);
|
|
23150
23171
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
23151
23172
|
"span",
|
|
23152
23173
|
{
|
|
@@ -23197,9 +23218,9 @@ function SEOEditorPreview({
|
|
|
23197
23218
|
const [isUploading, setIsUploading] = _react.useState.call(void 0, false);
|
|
23198
23219
|
const [fileInputRef, setFileInputRef] = _react.useState.call(void 0, null);
|
|
23199
23220
|
const seoTitleLength = (seoTitle || "").length;
|
|
23200
|
-
const seoTitleTooLong = seoTitleLength >
|
|
23221
|
+
const seoTitleTooLong = seoTitleLength > _chunkCWRVTQUOcjs.SEO_TITLE_MAX_LENGTH;
|
|
23201
23222
|
const seoDescriptionLength = (seoDescription || "").length;
|
|
23202
|
-
const seoDescriptionTooLong = seoDescriptionLength >
|
|
23223
|
+
const seoDescriptionTooLong = seoDescriptionLength > _chunkCWRVTQUOcjs.SEO_DESCRIPTION_MAX_LENGTH;
|
|
23203
23224
|
const displayTitle = seoTitle.trim() || title || "Untitled";
|
|
23204
23225
|
const displayDescription = seoDescription.trim() || summary || "No description";
|
|
23205
23226
|
const hasOgImage = ogImageUrl.trim();
|
|
@@ -23224,10 +23245,10 @@ function SEOEditorPreview({
|
|
|
23224
23245
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 content-lg:grid-cols-2", children: [
|
|
23225
23246
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
|
|
23226
23247
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23227
|
-
|
|
23248
|
+
_chunkCWRVTQUOcjs.Field,
|
|
23228
23249
|
{
|
|
23229
23250
|
label: "SEO Title",
|
|
23230
|
-
error: seoTitleTooLong ? `Too long: search engines may truncate this title (keep it under ${
|
|
23251
|
+
error: seoTitleTooLong ? `Too long: search engines may truncate this title (keep it under ${_chunkCWRVTQUOcjs.SEO_TITLE_MAX_LENGTH})` : null,
|
|
23231
23252
|
labelExtras: aiConfidenceSeoTitle !== void 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
23232
23253
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AIGeneratedBadge, {}),
|
|
23233
23254
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ConfidenceBadge, { confidence: aiConfidenceSeoTitle, showLabel: true, showPercentage: true, size: "sm" })
|
|
@@ -23242,7 +23263,7 @@ function SEOEditorPreview({
|
|
|
23242
23263
|
children: [
|
|
23243
23264
|
seoTitleLength,
|
|
23244
23265
|
"/",
|
|
23245
|
-
|
|
23266
|
+
_chunkCWRVTQUOcjs.SEO_TITLE_MAX_LENGTH
|
|
23246
23267
|
]
|
|
23247
23268
|
}
|
|
23248
23269
|
),
|
|
@@ -23253,7 +23274,7 @@ function SEOEditorPreview({
|
|
|
23253
23274
|
value: seoTitle || "",
|
|
23254
23275
|
onChange: (e) => onSeoTitleChange(e.target.value),
|
|
23255
23276
|
disabled,
|
|
23256
|
-
maxLength:
|
|
23277
|
+
maxLength: _chunkCWRVTQUOcjs.SEO_TITLE_MAX_LENGTH,
|
|
23257
23278
|
invalid: seoTitleTooLong,
|
|
23258
23279
|
placeholder: "Enter SEO meta title...",
|
|
23259
23280
|
className: "border-ods-border bg-ods-bg text-ods-text-primary"
|
|
@@ -23264,7 +23285,7 @@ function SEOEditorPreview({
|
|
|
23264
23285
|
!seoTitle && title && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-accent text-h6", children: "Auto-populated from title" })
|
|
23265
23286
|
] }),
|
|
23266
23287
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23267
|
-
|
|
23288
|
+
_chunkCWRVTQUOcjs.Field,
|
|
23268
23289
|
{
|
|
23269
23290
|
label: "SEO Keywords",
|
|
23270
23291
|
labelExtras: aiConfidenceSeoKeywords !== void 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
@@ -23296,10 +23317,10 @@ function SEOEditorPreview({
|
|
|
23296
23317
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 content-lg:grid-cols-2", children: [
|
|
23297
23318
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
|
|
23298
23319
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
23299
|
-
|
|
23320
|
+
_chunkCWRVTQUOcjs.Field,
|
|
23300
23321
|
{
|
|
23301
23322
|
label: "SEO Description",
|
|
23302
|
-
error: seoDescriptionTooLong ? `Too long: search engines may truncate this description (keep it under ${
|
|
23323
|
+
error: seoDescriptionTooLong ? `Too long: search engines may truncate this description (keep it under ${_chunkCWRVTQUOcjs.SEO_DESCRIPTION_MAX_LENGTH})` : null,
|
|
23303
23324
|
labelExtras: aiConfidenceSeoDescription !== void 0 ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
23304
23325
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AIGeneratedBadge, {}),
|
|
23305
23326
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -23322,7 +23343,7 @@ function SEOEditorPreview({
|
|
|
23322
23343
|
children: [
|
|
23323
23344
|
seoDescriptionLength,
|
|
23324
23345
|
"/",
|
|
23325
|
-
|
|
23346
|
+
_chunkCWRVTQUOcjs.SEO_DESCRIPTION_MAX_LENGTH
|
|
23326
23347
|
]
|
|
23327
23348
|
}
|
|
23328
23349
|
),
|
|
@@ -23333,7 +23354,7 @@ function SEOEditorPreview({
|
|
|
23333
23354
|
value: seoDescription || "",
|
|
23334
23355
|
onChange: (e) => onSeoDescriptionChange(e.target.value),
|
|
23335
23356
|
disabled,
|
|
23336
|
-
maxLength:
|
|
23357
|
+
maxLength: _chunkCWRVTQUOcjs.SEO_DESCRIPTION_MAX_LENGTH,
|
|
23337
23358
|
invalid: seoDescriptionTooLong,
|
|
23338
23359
|
placeholder: "Enter SEO meta description...",
|
|
23339
23360
|
className: _chunk3ATAYP36cjs.cn.call(void 0, "resize-none border-ods-border bg-ods-bg text-ods-text-primary", SEO_MEDIA_BOX_HEIGHT)
|
|
@@ -23486,7 +23507,7 @@ function socialIcon(platform) {
|
|
|
23486
23507
|
return _nullishCoalesce(_chunkFICJS5OAcjs.iconOf.call(void 0, SOCIAL_ICONS[platform]), () => ( void 0));
|
|
23487
23508
|
}
|
|
23488
23509
|
function renderSocialIcon(platform) {
|
|
23489
|
-
const key = _nullishCoalesce(
|
|
23510
|
+
const key = _nullishCoalesce(_chunkCWRVTQUOcjs.normalizeSocialPlatform.call(void 0, platform), () => ( "website"));
|
|
23490
23511
|
const icon = _nullishCoalesce(socialIcon(key), () => ( socialIcon("website")));
|
|
23491
23512
|
return icon ? _react.createElement.call(void 0, icon, { className: "h-5 w-5" }) : null;
|
|
23492
23513
|
}
|
|
@@ -23569,7 +23590,7 @@ function SocialLinksManager({
|
|
|
23569
23590
|
};
|
|
23570
23591
|
const getIcon = (link, platform) => {
|
|
23571
23592
|
const iconKey = _optionalChain([platform, 'optionalAccess', _457 => _457.icon_name]) || link.platform;
|
|
23572
|
-
const key =
|
|
23593
|
+
const key = _chunkCWRVTQUOcjs.normalizeSocialPlatform.call(void 0, iconKey);
|
|
23573
23594
|
if (!key) return null;
|
|
23574
23595
|
const icon = socialIcon(key);
|
|
23575
23596
|
return icon ? _react.createElement.call(void 0, icon, { className: "h-5 w-5 text-ods-text-secondary" }) : null;
|
|
@@ -24007,7 +24028,7 @@ function WalkthroughVideo({
|
|
|
24007
24028
|
onOpenChange,
|
|
24008
24029
|
defaultOpen,
|
|
24009
24030
|
defaultOpenPaused,
|
|
24010
|
-
deepLinkParam =
|
|
24031
|
+
deepLinkParam = _chunkCWRVTQUOcjs.WALKTHROUGH_OPEN_QUERY_PARAM,
|
|
24011
24032
|
autoPlayCard = false,
|
|
24012
24033
|
label = "Play Demo Video",
|
|
24013
24034
|
placement,
|
|
@@ -24023,7 +24044,7 @@ function WalkthroughVideo({
|
|
|
24023
24044
|
}) {
|
|
24024
24045
|
const inline = placement === "inline";
|
|
24025
24046
|
const dismissEnabled = dismissal !== false;
|
|
24026
|
-
const storageKey = dismissEnabled && dismissal.storageKey ||
|
|
24047
|
+
const storageKey = dismissEnabled && dismissal.storageKey || _chunkCWRVTQUOcjs.WALKTHROUGH_VIDEO_DISMISS_KEY;
|
|
24027
24048
|
const dismissalId = _optionalChain([video, 'optionalAccess', _463 => _463.id]) != null ? String(video.id) : "dismissed";
|
|
24028
24049
|
const [mounted, setMounted] = _react.useState.call(void 0, false);
|
|
24029
24050
|
const [dismissed, setDismissed] = _react.useState.call(void 0, false);
|
|
@@ -24035,7 +24056,7 @@ function WalkthroughVideo({
|
|
|
24035
24056
|
let delayElapsed = false;
|
|
24036
24057
|
let interacted = inline;
|
|
24037
24058
|
const reveal = () => {
|
|
24038
|
-
if (dismissEnabled &&
|
|
24059
|
+
if (dismissEnabled && _chunkCWRVTQUOcjs.isWalkthroughDismissed.call(void 0, storageKey, dismissalId)) {
|
|
24039
24060
|
setDismissed(true);
|
|
24040
24061
|
return;
|
|
24041
24062
|
}
|
|
@@ -24322,7 +24343,7 @@ function WalkthroughVideo({
|
|
|
24322
24343
|
(e) => {
|
|
24323
24344
|
e.stopPropagation();
|
|
24324
24345
|
pausePreviewNow();
|
|
24325
|
-
if (dismissEnabled)
|
|
24346
|
+
if (dismissEnabled) _chunkCWRVTQUOcjs.dismissWalkthrough.call(void 0, storageKey, dismissalId);
|
|
24326
24347
|
setDismissed(true);
|
|
24327
24348
|
},
|
|
24328
24349
|
[dismissEnabled, storageKey, dismissalId, pausePreviewNow]
|
|
@@ -25410,7 +25431,7 @@ function HighlightConfigSection({
|
|
|
25410
25431
|
disabled = false,
|
|
25411
25432
|
className = ""
|
|
25412
25433
|
}) {
|
|
25413
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `space-y-3 rounded-lg border border-ods-border bg-ods-card p-4 ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
25434
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `space-y-3 rounded-lg border border-ods-border bg-ods-card p-4 ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCWRVTQUOcjs.Field, { label: "Target Duration", children: (f) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
25414
25435
|
_chunkDSVNFRY5cjs.Select,
|
|
25415
25436
|
{
|
|
25416
25437
|
value: targetDurationSeconds.toString(),
|
|
@@ -25511,7 +25532,7 @@ var AIStatusIndicator = ({
|
|
|
25511
25532
|
}) => {
|
|
25512
25533
|
const config = statusConfig[status];
|
|
25513
25534
|
const displayText = message || config.label;
|
|
25514
|
-
const confidenceLabel = showConfidence && confidence !== void 0 ? `${
|
|
25535
|
+
const confidenceLabel = showConfidence && confidence !== void 0 ? `${_chunkCWRVTQUOcjs.getConfidenceLabel.call(void 0, confidence)} (${confidence}%)` : null;
|
|
25515
25536
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "inline-flex items-center gap-2 rounded-lg px-3 py-1.5", config.bgColor, className), children: [
|
|
25516
25537
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
25517
25538
|
_chunkUNFCRSYIcjs.SparklesIcon,
|
|
@@ -25519,7 +25540,7 @@ var AIStatusIndicator = ({
|
|
|
25519
25540
|
size: 16,
|
|
25520
25541
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
25521
25542
|
status === "loading" && "animate-pulse",
|
|
25522
|
-
confidence !== void 0 && status === "success" ?
|
|
25543
|
+
confidence !== void 0 && status === "success" ? _chunkCWRVTQUOcjs.getConfidenceTextClass.call(void 0, confidence) : config.color
|
|
25523
25544
|
)
|
|
25524
25545
|
}
|
|
25525
25546
|
),
|
|
@@ -25528,7 +25549,7 @@ var AIStatusIndicator = ({
|
|
|
25528
25549
|
{
|
|
25529
25550
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
25530
25551
|
"text-h6",
|
|
25531
|
-
confidence !== void 0 && status === "success" ?
|
|
25552
|
+
confidence !== void 0 && status === "success" ? _chunkCWRVTQUOcjs.getConfidenceTextClass.call(void 0, confidence) : config.color
|
|
25532
25553
|
),
|
|
25533
25554
|
children: displayText
|
|
25534
25555
|
}
|
|
@@ -25538,8 +25559,8 @@ var AIStatusIndicator = ({
|
|
|
25538
25559
|
{
|
|
25539
25560
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
25540
25561
|
"rounded-full border px-2 py-0.5 text-h6",
|
|
25541
|
-
|
|
25542
|
-
|
|
25562
|
+
_chunkCWRVTQUOcjs.getConfidenceBorderClass.call(void 0, confidence),
|
|
25563
|
+
_chunkCWRVTQUOcjs.getConfidenceTextClass.call(void 0, confidence)
|
|
25543
25564
|
),
|
|
25544
25565
|
children: confidenceLabel
|
|
25545
25566
|
}
|
|
@@ -26435,7 +26456,7 @@ function PoliciesTable({
|
|
|
26435
26456
|
cell: ({ row }) => row.original.href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-no-row-click": true, className: "pointer-events-auto flex items-center justify-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
26436
26457
|
_chunk2QMBXGMQcjs.Button,
|
|
26437
26458
|
{
|
|
26438
|
-
onClick:
|
|
26459
|
+
onClick: _chunkCWRVTQUOcjs.openInNewTab.call(void 0, row.original.href),
|
|
26439
26460
|
variant: "outline",
|
|
26440
26461
|
size: "icon",
|
|
26441
26462
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANTDIQKKcjs.ArrowRightUpIcon, { className: "h-5 w-5" }),
|
|
@@ -26761,7 +26782,7 @@ function TenantsTableView({
|
|
|
26761
26782
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-no-row-click": true, className: "pointer-events-auto flex items-center justify-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
26762
26783
|
_chunk2QMBXGMQcjs.Button,
|
|
26763
26784
|
{
|
|
26764
|
-
onClick:
|
|
26785
|
+
onClick: _chunkCWRVTQUOcjs.openInNewTab.call(void 0, getHref(row.original)),
|
|
26765
26786
|
variant: "outline",
|
|
26766
26787
|
size: "icon",
|
|
26767
26788
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANTDIQKKcjs.ArrowRightUpIcon, { className: "h-5 w-5" }),
|
|
@@ -26857,7 +26878,7 @@ function WaitlistForm({
|
|
|
26857
26878
|
_react.useEffect.call(void 0, () => {
|
|
26858
26879
|
rescue.track({ email, phone }, null);
|
|
26859
26880
|
}, [email, phone, rescue]);
|
|
26860
|
-
const isMailDomainGeneric =
|
|
26881
|
+
const isMailDomainGeneric = _chunkCWRVTQUOcjs.hasGenericEmailDomain.call(void 0, email);
|
|
26861
26882
|
const [syncedDefaultEmail, setSyncedDefaultEmail] = _react.useState.call(void 0, defaultEmail);
|
|
26862
26883
|
if (syncedDefaultEmail !== defaultEmail) {
|
|
26863
26884
|
setSyncedDefaultEmail(defaultEmail);
|
|
@@ -26891,7 +26912,7 @@ function WaitlistForm({
|
|
|
26891
26912
|
setShowConsentError(true);
|
|
26892
26913
|
return;
|
|
26893
26914
|
}
|
|
26894
|
-
const finalPhone = phone ?
|
|
26915
|
+
const finalPhone = phone ? _chunkCWRVTQUOcjs.formatPhoneE164.call(void 0, phone, countryCode) : void 0;
|
|
26895
26916
|
try {
|
|
26896
26917
|
await onRegister(email, finalPhone, getSignals(), rescue.submitFields());
|
|
26897
26918
|
rescue.complete();
|
|
@@ -28983,7 +29004,7 @@ function getDeviceStatusConfig(status) {
|
|
|
28983
29004
|
}
|
|
28984
29005
|
}
|
|
28985
29006
|
function getDeviceOperatingSystem(osType) {
|
|
28986
|
-
return
|
|
29007
|
+
return _chunkCWRVTQUOcjs.getOSPlatformId.call(void 0, osType);
|
|
28987
29008
|
}
|
|
28988
29009
|
|
|
28989
29010
|
// src/components/features/devices/device-statuses.ts
|
|
@@ -31046,7 +31067,7 @@ var ToolBadge = ({
|
|
|
31046
31067
|
className,
|
|
31047
31068
|
iconClassName
|
|
31048
31069
|
}) => {
|
|
31049
|
-
const text = _nullishCoalesce(label, () => ( (toolType ?
|
|
31070
|
+
const text = _nullishCoalesce(label, () => ( (toolType ? _chunkCWRVTQUOcjs.getToolLabel.call(void 0, toolType) : "")));
|
|
31050
31071
|
const mark = _nullishCoalesce(icon, () => ( (toolType ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkNTJE6SM6cjs.ToolIcon, { toolType, className: iconClassName, size: 16 }) : null)));
|
|
31051
31072
|
const linked = (node, linkClassName) => href && targetPlatform ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31052
31073
|
_chunkBV5WZVOPcjs.NavLinkAnchorViaRuntime,
|
|
@@ -31156,7 +31177,7 @@ function LogsTableView({
|
|
|
31156
31177
|
cell: ({ row }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31157
31178
|
ToolBadge,
|
|
31158
31179
|
{
|
|
31159
|
-
toolType:
|
|
31180
|
+
toolType: _chunkCWRVTQUOcjs.normalizeToolTypeWithFallback.call(void 0, row.original.source.toolType),
|
|
31160
31181
|
iconClassName: "h-4 w-4 content-md:h-6 content-md:w-6"
|
|
31161
31182
|
}
|
|
31162
31183
|
),
|
|
@@ -31168,7 +31189,7 @@ function LogsTableView({
|
|
|
31168
31189
|
filter: {
|
|
31169
31190
|
options: _nullishCoalesce(_optionalChain([facets, 'optionalAccess', _652 => _652.toolTypes, 'access', _653 => _653.map, 'call', _654 => _654((toolType) => ({
|
|
31170
31191
|
id: toolType,
|
|
31171
|
-
label:
|
|
31192
|
+
label: _chunkCWRVTQUOcjs.toToolLabel.call(void 0, toolType),
|
|
31172
31193
|
value: toolType
|
|
31173
31194
|
}))]), () => ( []))
|
|
31174
31195
|
}
|
|
@@ -31226,7 +31247,7 @@ function LogsTableView({
|
|
|
31226
31247
|
cell: ({ row }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-no-row-click": true, className: "pointer-events-auto flex items-center justify-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31227
31248
|
_chunk2QMBXGMQcjs.Button,
|
|
31228
31249
|
{
|
|
31229
|
-
onClick: getLogHref ?
|
|
31250
|
+
onClick: getLogHref ? _chunkCWRVTQUOcjs.openInNewTab.call(void 0, getLogHref(row.original)) : void 0,
|
|
31230
31251
|
variant: "outline",
|
|
31231
31252
|
size: "icon",
|
|
31232
31253
|
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANTDIQKKcjs.ArrowRightUpIcon, { className: "h-5 w-5" }),
|
|
@@ -31431,197 +31452,822 @@ function logSeverityVariant(severity) {
|
|
|
31431
31452
|
}
|
|
31432
31453
|
}
|
|
31433
31454
|
|
|
31434
|
-
// src/components/features/
|
|
31435
|
-
var
|
|
31436
|
-
|
|
31437
|
-
|
|
31455
|
+
// src/components/features/scripts/execution-status.ts
|
|
31456
|
+
var SCRIPT_EXECUTION_STATUS_PRESENTATION = {
|
|
31457
|
+
QUEUED: { label: "Queued", variant: "grey", inFlight: true },
|
|
31458
|
+
RUNNING: { label: "Running", variant: "warning", inFlight: true },
|
|
31459
|
+
SUCCESS: { label: "Completed", variant: "success", inFlight: false },
|
|
31460
|
+
FAILED: { label: "Failed", variant: "error", inFlight: false }
|
|
31438
31461
|
};
|
|
31462
|
+
function scriptExecutionStatus(status) {
|
|
31463
|
+
if (!status || !Object.prototype.hasOwnProperty.call(SCRIPT_EXECUTION_STATUS_PRESENTATION, status)) return void 0;
|
|
31464
|
+
return SCRIPT_EXECUTION_STATUS_PRESENTATION[status];
|
|
31465
|
+
}
|
|
31439
31466
|
|
|
31440
|
-
// src/components/features/
|
|
31467
|
+
// src/components/features/scripts/execution-cells.tsx
|
|
31468
|
+
|
|
31469
|
+
function ExecutionSourceBadge({ source, className }) {
|
|
31470
|
+
const tagProps = { as: "span", variant: "outline", className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0", className) };
|
|
31471
|
+
if (source === "SCHEDULED") return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ZFCR7UYcjs.Tag, { ...tagProps, label: "Scheduled" });
|
|
31472
|
+
if (source === "AI_ASSISTANT") {
|
|
31473
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ZFCR7UYcjs.Tag, { ...tagProps, label: "Mingo", icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGABDE3FMcjs.AgentMark, { agent: "mingo", className: "size-4" }) });
|
|
31474
|
+
}
|
|
31475
|
+
return null;
|
|
31476
|
+
}
|
|
31477
|
+
function ExecutionTimestampCell({ timestamp, executionId }) {
|
|
31478
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col justify-center gap-1", children: [
|
|
31479
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: timestamp }),
|
|
31480
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", tone: "secondary", children: executionId })
|
|
31481
|
+
] });
|
|
31482
|
+
}
|
|
31483
|
+
function ExecutionStatusCell({ status }) {
|
|
31484
|
+
const presentation = scriptExecutionStatus(status);
|
|
31485
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ZFCR7UYcjs.Tag, { label: _nullishCoalesce(_optionalChain([presentation, 'optionalAccess', _667 => _667.label]), () => ( String(_nullishCoalesce(status, () => ( ""))))), variant: _nullishCoalesce(_optionalChain([presentation, 'optionalAccess', _668 => _668.variant]), () => ( "grey")) }) });
|
|
31486
|
+
}
|
|
31487
|
+
function ExecutionDeviceCell({ name, organization }) {
|
|
31488
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col justify-center gap-1", children: [
|
|
31489
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center gap-1", children: [
|
|
31490
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkPTK7GOIIcjs.MonitorIcon, { className: "size-6 shrink-0 text-ods-text-secondary" }),
|
|
31491
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1", children: typeof name === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: name }) : name })
|
|
31492
|
+
] }),
|
|
31493
|
+
organization && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", tone: "secondary", children: organization })
|
|
31494
|
+
] });
|
|
31495
|
+
}
|
|
31496
|
+
function ExecutionInitiatorCell({
|
|
31497
|
+
avatar,
|
|
31498
|
+
name,
|
|
31499
|
+
source,
|
|
31500
|
+
scriptName
|
|
31501
|
+
}) {
|
|
31502
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
31503
|
+
avatar,
|
|
31504
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col justify-center", children: [
|
|
31505
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center gap-[var(--spacing-system-xxs)]", children: [
|
|
31506
|
+
typeof name === "string" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: name }) : name,
|
|
31507
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExecutionSourceBadge, { source })
|
|
31508
|
+
] }),
|
|
31509
|
+
scriptName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", tone: "secondary", children: scriptName })
|
|
31510
|
+
] })
|
|
31511
|
+
] });
|
|
31512
|
+
}
|
|
31513
|
+
function ExecutionResultCell({ result, empty = null }) {
|
|
31514
|
+
return result ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { lines: 2, children: result }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: empty });
|
|
31515
|
+
}
|
|
31516
|
+
function ScriptExecutionResult({
|
|
31517
|
+
result,
|
|
31518
|
+
inFlight = false,
|
|
31519
|
+
empty,
|
|
31520
|
+
className
|
|
31521
|
+
}) {
|
|
31522
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col gap-[var(--spacing-system-xxs)] p-[var(--spacing-system-m)]", className), children: [
|
|
31523
|
+
result ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "whitespace-pre-wrap break-words text-ods-text-primary text-h4", children: result }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-secondary text-h4", children: inFlight ? "Waiting for output\u2026" : empty }),
|
|
31524
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-secondary text-h6", children: "Result" })
|
|
31525
|
+
] });
|
|
31526
|
+
}
|
|
31441
31527
|
|
|
31528
|
+
// src/components/features/scripts/script-cells.tsx
|
|
31442
31529
|
|
|
31443
|
-
|
|
31444
|
-
|
|
31445
|
-
|
|
31446
|
-
|
|
31447
|
-
|
|
31530
|
+
function ScriptNameCell({ name, description }) {
|
|
31531
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col justify-center gap-1", children: [
|
|
31532
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: name }),
|
|
31533
|
+
description && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", tone: "secondary", children: description })
|
|
31534
|
+
] });
|
|
31535
|
+
}
|
|
31536
|
+
function ScheduleDateTimeCell({ date, time }) {
|
|
31537
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col justify-center gap-1", children: [
|
|
31538
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: date }),
|
|
31539
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", tone: "secondary", children: time })
|
|
31540
|
+
] });
|
|
31541
|
+
}
|
|
31542
|
+
|
|
31543
|
+
// src/components/features/scripts/script-executions-table.tsx
|
|
31544
|
+
|
|
31545
|
+
|
|
31546
|
+
// src/components/features/scripts/scripts-table-columns.ts
|
|
31547
|
+
var SCRIPT_COLUMNS = {
|
|
31548
|
+
name: { id: "name", header: "Name", width: "flex-1 min-w-0" },
|
|
31549
|
+
shellType: { id: "shellType", header: "Shell Type", width: "w-[100px] content-md:w-[160px]", filterable: true },
|
|
31550
|
+
supportedPlatforms: { id: "supportedPlatforms", header: "OS", width: "w-[80px]", hideAt: "lg", filterable: true },
|
|
31551
|
+
authorId: { id: "authorId", header: "Added by", width: "w-[250px]", hideAt: "lg", filterable: true },
|
|
31552
|
+
actions: { id: "actions", width: "w-12 shrink-0 flex-none", align: "right" },
|
|
31553
|
+
open: { id: "open", width: "w-12 shrink-0 flex-none", hideAt: "md", align: "right" }
|
|
31554
|
+
};
|
|
31555
|
+
var SCHEDULE_COLUMNS = {
|
|
31556
|
+
name: { id: "name", header: "Script", width: "flex-1 min-w-0" },
|
|
31557
|
+
supportedPlatforms: { id: "supportedPlatforms", header: "OS", width: "w-[90px]", hideAt: "lg", filterable: true },
|
|
31558
|
+
dateTime: {
|
|
31559
|
+
id: "dateTime",
|
|
31560
|
+
header: "Date & Time",
|
|
31561
|
+
width: "w-[100px] content-md:w-[160px]",
|
|
31562
|
+
hideAt: "md",
|
|
31563
|
+
dateFilterable: true
|
|
31564
|
+
},
|
|
31565
|
+
repeat: { id: "repeat", header: "Repeat", width: "w-[120px]", hideAt: "md", sortable: true },
|
|
31566
|
+
deviceCount: { id: "deviceCount", header: "Devices", width: "w-[100px] content-md:w-[140px]", hideAt: "lg" },
|
|
31567
|
+
actions: { id: "actions", width: "w-12 shrink-0 flex-none", align: "right" },
|
|
31568
|
+
open: { id: "open", width: "w-12 shrink-0 flex-none", hideAt: "md", align: "right" }
|
|
31569
|
+
};
|
|
31570
|
+
var EXECUTION_COLUMNS = {
|
|
31571
|
+
executionId: { id: "executionId", header: "Execution", width: "w-[160px]", dateFilterable: true },
|
|
31572
|
+
status: { id: "status", header: "Status", width: "w-[120px]", filterable: true },
|
|
31573
|
+
machineId: { id: "machineId", header: "Device", width: "w-[200px]", hideAt: "lg", filterable: true },
|
|
31574
|
+
initiatorId: { id: "initiatorId", header: "Executed by", width: "flex-1 min-w-0", hideAt: "md", filterable: true },
|
|
31575
|
+
result: { id: "result", header: "Result", width: "flex-1 min-w-0", hideAt: "xl" },
|
|
31576
|
+
actions: { id: "actions", width: "w-12 shrink-0 flex-none", align: "right" },
|
|
31577
|
+
open: { id: "open", width: "w-12 shrink-0 flex-none", hideAt: "md", align: "right" }
|
|
31448
31578
|
};
|
|
31579
|
+
var SCRIPTS_TAB_WIDTHS = ["w-[160px]", "w-[200px]"];
|
|
31580
|
+
var SCRIPTS_TABLE_COLUMNS = [
|
|
31581
|
+
SCRIPT_COLUMNS.name,
|
|
31582
|
+
SCRIPT_COLUMNS.shellType,
|
|
31583
|
+
SCRIPT_COLUMNS.supportedPlatforms,
|
|
31584
|
+
SCRIPT_COLUMNS.authorId,
|
|
31585
|
+
SCRIPT_COLUMNS.actions,
|
|
31586
|
+
SCRIPT_COLUMNS.open
|
|
31587
|
+
];
|
|
31588
|
+
var SCHEDULES_TABLE_COLUMNS = [
|
|
31589
|
+
SCHEDULE_COLUMNS.name,
|
|
31590
|
+
SCHEDULE_COLUMNS.supportedPlatforms,
|
|
31591
|
+
SCHEDULE_COLUMNS.dateTime,
|
|
31592
|
+
SCHEDULE_COLUMNS.repeat,
|
|
31593
|
+
SCHEDULE_COLUMNS.deviceCount,
|
|
31594
|
+
SCHEDULE_COLUMNS.actions,
|
|
31595
|
+
SCHEDULE_COLUMNS.open
|
|
31596
|
+
];
|
|
31597
|
+
var EXECUTIONS_TABLE_COLUMNS = [
|
|
31598
|
+
EXECUTION_COLUMNS.executionId,
|
|
31599
|
+
EXECUTION_COLUMNS.status,
|
|
31600
|
+
EXECUTION_COLUMNS.machineId,
|
|
31601
|
+
EXECUTION_COLUMNS.initiatorId,
|
|
31602
|
+
EXECUTION_COLUMNS.result,
|
|
31603
|
+
EXECUTION_COLUMNS.actions,
|
|
31604
|
+
EXECUTION_COLUMNS.open
|
|
31605
|
+
];
|
|
31449
31606
|
|
|
31450
|
-
// src/components/features/
|
|
31607
|
+
// src/components/features/scripts/scripts-table-shared.tsx
|
|
31451
31608
|
|
|
31452
|
-
function
|
|
31609
|
+
function scriptsColumnMeta(column) {
|
|
31453
31610
|
return {
|
|
31454
|
-
|
|
31455
|
-
|
|
31456
|
-
|
|
31457
|
-
|
|
31458
|
-
|
|
31459
|
-
variant: "outline",
|
|
31460
|
-
size: "icon",
|
|
31461
|
-
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANTDIQKKcjs.ArrowRightUpIcon, { className: "h-5 w-5" }),
|
|
31462
|
-
"aria-label": "Open in new tab",
|
|
31463
|
-
className: "bg-ods-card"
|
|
31464
|
-
}
|
|
31465
|
-
) }),
|
|
31466
|
-
enableSorting: false,
|
|
31467
|
-
meta: { width: "w-12 shrink-0 flex-none", hideAt: "md", align: "right" }
|
|
31611
|
+
width: column.width,
|
|
31612
|
+
hideAt: column.hideAt,
|
|
31613
|
+
align: column.align,
|
|
31614
|
+
sortable: column.sortable,
|
|
31615
|
+
alwaysShowHeader: column.dateFilterable
|
|
31468
31616
|
};
|
|
31469
31617
|
}
|
|
31470
|
-
function
|
|
31471
|
-
return
|
|
31618
|
+
function RowActionsCell({ children }) {
|
|
31619
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-no-row-click": true, className: "pointer-events-auto flex items-center justify-end gap-2", children });
|
|
31620
|
+
}
|
|
31621
|
+
function OpenInNewTabCell({ href }) {
|
|
31622
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-no-row-click": true, className: "pointer-events-auto flex items-center justify-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31623
|
+
_chunk2QMBXGMQcjs.Button,
|
|
31472
31624
|
{
|
|
31473
|
-
|
|
31474
|
-
|
|
31475
|
-
|
|
31476
|
-
|
|
31477
|
-
|
|
31478
|
-
|
|
31479
|
-
|
|
31480
|
-
|
|
31481
|
-
|
|
31482
|
-
|
|
31483
|
-
|
|
31484
|
-
|
|
31485
|
-
|
|
31486
|
-
|
|
31487
|
-
|
|
31488
|
-
|
|
31489
|
-
|
|
31490
|
-
|
|
31491
|
-
|
|
31492
|
-
|
|
31493
|
-
|
|
31494
|
-
|
|
31495
|
-
|
|
31496
|
-
|
|
31497
|
-
|
|
31625
|
+
onClick: _chunkCWRVTQUOcjs.openInNewTab.call(void 0, href),
|
|
31626
|
+
variant: "outline",
|
|
31627
|
+
size: "icon",
|
|
31628
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANTDIQKKcjs.ArrowRightUpIcon, { className: "h-5 w-5" }),
|
|
31629
|
+
"aria-label": "Open in new tab",
|
|
31630
|
+
className: "bg-ods-card"
|
|
31631
|
+
}
|
|
31632
|
+
) });
|
|
31633
|
+
}
|
|
31634
|
+
|
|
31635
|
+
// src/components/features/scripts/script-executions-table.tsx
|
|
31636
|
+
|
|
31637
|
+
function ScriptExecutionsTable({
|
|
31638
|
+
rows,
|
|
31639
|
+
columns: layout = EXECUTIONS_TABLE_COLUMNS,
|
|
31640
|
+
hideColumns,
|
|
31641
|
+
renderSubRow,
|
|
31642
|
+
compact = false,
|
|
31643
|
+
isLoading = false,
|
|
31644
|
+
emptyMessage = "No executions found.",
|
|
31645
|
+
showHeader: withHeader = true,
|
|
31646
|
+
rightSlot,
|
|
31647
|
+
skeletonRows = 10
|
|
31648
|
+
}) {
|
|
31649
|
+
const columns = _react.useMemo.call(void 0, () => {
|
|
31650
|
+
const renderers = {
|
|
31651
|
+
[EXECUTION_COLUMNS.executionId.id]: (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExecutionTimestampCell, { timestamp: row.timestamp, executionId: row.executionId }),
|
|
31652
|
+
[EXECUTION_COLUMNS.status.id]: (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExecutionStatusCell, { status: row.status }),
|
|
31653
|
+
[EXECUTION_COLUMNS.machineId.id]: (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExecutionDeviceCell, { name: row.machineName, organization: row.organization }),
|
|
31654
|
+
[EXECUTION_COLUMNS.initiatorId.id]: (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31655
|
+
ExecutionInitiatorCell,
|
|
31656
|
+
{
|
|
31657
|
+
avatar: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31658
|
+
_chunk7ZFCR7UYcjs.SquareAvatar,
|
|
31659
|
+
{
|
|
31660
|
+
variant: "round",
|
|
31661
|
+
size: "md",
|
|
31662
|
+
src: row.initiator.image,
|
|
31663
|
+
fallback: row.initiator.initials,
|
|
31664
|
+
alt: row.initiator.name,
|
|
31665
|
+
initialsClassName: "text-ods-text-secondary"
|
|
31666
|
+
}
|
|
31667
|
+
),
|
|
31668
|
+
name: row.initiator.name,
|
|
31669
|
+
source: row.source,
|
|
31670
|
+
scriptName: row.scriptName
|
|
31671
|
+
}
|
|
31672
|
+
),
|
|
31673
|
+
[EXECUTION_COLUMNS.result.id]: (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExecutionResultCell, { result: row.result }),
|
|
31674
|
+
[EXECUTION_COLUMNS.open.id]: (row) => row.href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OpenInNewTabCell, { href: row.href }) : null
|
|
31675
|
+
};
|
|
31676
|
+
return layout.filter((column) => renderers[column.id] && !_optionalChain([hideColumns, 'optionalAccess', _669 => _669.includes, 'call', _670 => _670(column.id)])).map((column) => ({
|
|
31677
|
+
id: column.id,
|
|
31678
|
+
header: _nullishCoalesce(column.header, () => ( "")),
|
|
31679
|
+
cell: ({ row }) => renderers[column.id](row.original),
|
|
31498
31680
|
enableSorting: false,
|
|
31499
|
-
meta:
|
|
31500
|
-
}
|
|
31501
|
-
|
|
31502
|
-
|
|
31503
|
-
|
|
31504
|
-
|
|
31505
|
-
|
|
31506
|
-
|
|
31507
|
-
|
|
31508
|
-
|
|
31509
|
-
|
|
31510
|
-
|
|
31511
|
-
|
|
31512
|
-
|
|
31681
|
+
meta: scriptsColumnMeta(column)
|
|
31682
|
+
}));
|
|
31683
|
+
}, [layout, hideColumns]);
|
|
31684
|
+
const table = useDataTable({
|
|
31685
|
+
data: rows,
|
|
31686
|
+
columns,
|
|
31687
|
+
getRowId: (row) => row.id,
|
|
31688
|
+
enableSorting: false
|
|
31689
|
+
});
|
|
31690
|
+
const rowHref = _react.useCallback.call(void 0, (row) => row.href, []);
|
|
31691
|
+
const showHeader = withHeader && (isLoading || rows.length > 0);
|
|
31692
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DataTable, { table, children: [
|
|
31693
|
+
showHeader && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DataTable.Header, { rightSlot }),
|
|
31694
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31695
|
+
DataTable.Body,
|
|
31696
|
+
{
|
|
31697
|
+
loading: isLoading,
|
|
31698
|
+
skeletonRows,
|
|
31699
|
+
emptyMessage,
|
|
31700
|
+
rowClassName: "mb-1",
|
|
31701
|
+
compact,
|
|
31702
|
+
rowHref,
|
|
31703
|
+
renderSubRow
|
|
31704
|
+
}
|
|
31705
|
+
)
|
|
31706
|
+
] });
|
|
31707
|
+
}
|
|
31708
|
+
|
|
31709
|
+
// src/components/features/scripts/script-schedules-table.tsx
|
|
31710
|
+
|
|
31711
|
+
|
|
31712
|
+
var VALUE_CLASS = "text-ods-text-primary text-h4";
|
|
31713
|
+
function ScriptSchedulesTable({
|
|
31714
|
+
rows,
|
|
31715
|
+
isLoading = false,
|
|
31716
|
+
hideColumns,
|
|
31717
|
+
renderActions,
|
|
31718
|
+
emptyMessage = "No schedules found.",
|
|
31719
|
+
stickyHeader = false,
|
|
31720
|
+
stickyHeaderOffset,
|
|
31721
|
+
rightSlot,
|
|
31722
|
+
skeletonRows = 10
|
|
31723
|
+
}) {
|
|
31724
|
+
const columns = _react.useMemo.call(void 0, () => {
|
|
31725
|
+
const cell = (layout, render) => ({
|
|
31726
|
+
id: layout.id,
|
|
31727
|
+
header: _nullishCoalesce(layout.header, () => ( "")),
|
|
31728
|
+
cell: ({ row }) => render(row.original),
|
|
31513
31729
|
enableSorting: false,
|
|
31514
|
-
|
|
31730
|
+
// A picture of the table sorts nothing: the layout's sort icon is the live page's.
|
|
31731
|
+
meta: { ...scriptsColumnMeta(layout), sortable: false }
|
|
31732
|
+
});
|
|
31733
|
+
const all = [
|
|
31734
|
+
cell(SCHEDULE_COLUMNS.name, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScriptNameCell, { name: row.name, description: row.description })),
|
|
31735
|
+
cell(SCHEDULE_COLUMNS.supportedPlatforms, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OSTypeBadgeGroup, { osTypes: row.supportedPlatforms, iconSize: "w-4 h-4 content-md:w-6 content-md:h-6" })),
|
|
31736
|
+
cell(
|
|
31737
|
+
SCHEDULE_COLUMNS.dateTime,
|
|
31738
|
+
(row) => row.startsAt ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScheduleDateTimeCell, { date: row.startsAt.date, time: row.startsAt.time }) : row.trigger ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { tone: "secondary", children: row.trigger }) : null
|
|
31739
|
+
),
|
|
31740
|
+
cell(SCHEDULE_COLUMNS.repeat, (row) => row.repeat ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: VALUE_CLASS, children: row.repeat }) : null),
|
|
31741
|
+
cell(SCHEDULE_COLUMNS.deviceCount, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: VALUE_CLASS, children: row.deviceCount }))
|
|
31742
|
+
];
|
|
31743
|
+
if (renderActions) {
|
|
31744
|
+
all.push(cell(SCHEDULE_COLUMNS.actions, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RowActionsCell, { children: renderActions(row) })));
|
|
31515
31745
|
}
|
|
31516
|
-
|
|
31746
|
+
all.push(cell(SCHEDULE_COLUMNS.open, (row) => row.href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OpenInNewTabCell, { href: row.href }) : null));
|
|
31747
|
+
return hideColumns ? all.filter((column) => !hideColumns.includes(_nullishCoalesce(column.id, () => ( "")))) : all;
|
|
31748
|
+
}, [hideColumns, renderActions]);
|
|
31749
|
+
const table = useDataTable({
|
|
31750
|
+
data: rows,
|
|
31751
|
+
columns,
|
|
31752
|
+
getRowId: (row) => row.id,
|
|
31753
|
+
enableSorting: false
|
|
31754
|
+
});
|
|
31755
|
+
const rowHref = _react.useCallback.call(void 0, (row) => row.href, []);
|
|
31756
|
+
const showHeader = isLoading || rows.length > 0;
|
|
31757
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DataTable, { table, children: [
|
|
31758
|
+
showHeader && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DataTable.Header, { stickyHeader, stickyHeaderOffset, rightSlot }),
|
|
31759
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31760
|
+
DataTable.Body,
|
|
31761
|
+
{
|
|
31762
|
+
loading: isLoading,
|
|
31763
|
+
skeletonRows,
|
|
31764
|
+
emptyMessage,
|
|
31765
|
+
rowClassName: "mb-1",
|
|
31766
|
+
rowHref
|
|
31767
|
+
}
|
|
31768
|
+
)
|
|
31769
|
+
] });
|
|
31517
31770
|
}
|
|
31518
|
-
|
|
31519
|
-
|
|
31520
|
-
|
|
31521
|
-
|
|
31522
|
-
|
|
31523
|
-
|
|
31524
|
-
|
|
31771
|
+
|
|
31772
|
+
// src/components/features/scripts/shell-types.ts
|
|
31773
|
+
var SCRIPT_SHELL_TYPES = [
|
|
31774
|
+
{ id: _chunkCWRVTQUOcjs.ShellTypeValues.POWERSHELL, label: "PowerShell", value: "powershell", icon: _chunkMCQY746Mcjs.PowershellLogoGreyIcon },
|
|
31775
|
+
{ id: _chunkCWRVTQUOcjs.ShellTypeValues.CMD, label: "CMD", value: "cmd", icon: _chunkNIVJEJSGcjs.TerminalSquareIcon },
|
|
31776
|
+
{ id: _chunkCWRVTQUOcjs.ShellTypeValues.BASH, label: "Bash", value: "bash", icon: _chunkTRUW6DDAcjs.TerminalIcon }
|
|
31777
|
+
];
|
|
31778
|
+
function scriptShellType(value) {
|
|
31779
|
+
return SCRIPT_SHELL_TYPES.find((shell) => shell.value === value);
|
|
31780
|
+
}
|
|
31781
|
+
function scriptShellLabel(value) {
|
|
31782
|
+
return _nullishCoalesce(_optionalChain([scriptShellType, 'call', _671 => _671(value), 'optionalAccess', _672 => _672.label]), () => ( value));
|
|
31783
|
+
}
|
|
31784
|
+
|
|
31785
|
+
// src/components/features/scripts/script-shell-badge.tsx
|
|
31786
|
+
|
|
31787
|
+
function ScriptShellBadge({ value, className, iconClassName }) {
|
|
31788
|
+
const shell = scriptShellType(value);
|
|
31789
|
+
const Icon = _optionalChain([shell, 'optionalAccess', _673 => _673.icon]);
|
|
31790
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-2", className), children: [
|
|
31791
|
+
Icon && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, { className: _chunk3ATAYP36cjs.cn.call(void 0, "h-5 w-5 text-ods-text-secondary", iconClassName) }),
|
|
31792
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { children: _nullishCoalesce(_optionalChain([shell, 'optionalAccess', _674 => _674.label]), () => ( value)) })
|
|
31793
|
+
] });
|
|
31794
|
+
}
|
|
31795
|
+
|
|
31796
|
+
// src/components/features/scripts/scripts-table.tsx
|
|
31797
|
+
|
|
31798
|
+
|
|
31799
|
+
var BADGE_ICON = "h-4 w-4 content-md:h-6 content-md:w-6";
|
|
31800
|
+
function ScriptsTable({
|
|
31801
|
+
rows,
|
|
31802
|
+
isLoading = false,
|
|
31803
|
+
hideColumns,
|
|
31804
|
+
renderActions,
|
|
31805
|
+
emptyMessage = "No scripts found.",
|
|
31806
|
+
stickyHeader = false,
|
|
31525
31807
|
stickyHeaderOffset,
|
|
31526
|
-
|
|
31527
|
-
|
|
31528
|
-
totalCount,
|
|
31529
|
-
compact = false
|
|
31808
|
+
rightSlot,
|
|
31809
|
+
skeletonRows = 10
|
|
31530
31810
|
}) {
|
|
31531
31811
|
const columns = _react.useMemo.call(void 0, () => {
|
|
31532
|
-
const
|
|
31533
|
-
|
|
31534
|
-
|
|
31535
|
-
|
|
31536
|
-
|
|
31812
|
+
const cell = (layout, render) => ({
|
|
31813
|
+
id: layout.id,
|
|
31814
|
+
header: _nullishCoalesce(layout.header, () => ( "")),
|
|
31815
|
+
cell: ({ row }) => render(row.original),
|
|
31816
|
+
enableSorting: false,
|
|
31817
|
+
meta: scriptsColumnMeta(layout)
|
|
31818
|
+
});
|
|
31819
|
+
const all = [
|
|
31820
|
+
cell(SCRIPT_COLUMNS.name, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScriptNameCell, { name: row.name, description: row.description })),
|
|
31821
|
+
cell(SCRIPT_COLUMNS.shellType, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScriptShellBadge, { value: row.shellType, iconClassName: BADGE_ICON })),
|
|
31822
|
+
cell(SCRIPT_COLUMNS.supportedPlatforms, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OSTypeBadgeGroup, { osTypes: row.supportedPlatforms, iconSize: "w-4 h-4 content-md:w-6 content-md:h-6" })),
|
|
31823
|
+
cell(
|
|
31824
|
+
SCRIPT_COLUMNS.authorId,
|
|
31825
|
+
(row) => row.author ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
31826
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31827
|
+
_chunk7ZFCR7UYcjs.SquareAvatar,
|
|
31828
|
+
{
|
|
31829
|
+
variant: "round",
|
|
31830
|
+
size: "sm",
|
|
31831
|
+
src: row.author.image,
|
|
31832
|
+
fallback: row.author.initials,
|
|
31833
|
+
alt: row.author.name,
|
|
31834
|
+
initialsClassName: "text-ods-text-secondary"
|
|
31835
|
+
}
|
|
31836
|
+
),
|
|
31837
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: row.author.name }) })
|
|
31838
|
+
] }) : null
|
|
31839
|
+
)
|
|
31840
|
+
];
|
|
31841
|
+
if (renderActions) {
|
|
31842
|
+
all.push(cell(SCRIPT_COLUMNS.actions, (row) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RowActionsCell, { children: renderActions(row) })));
|
|
31843
|
+
}
|
|
31844
|
+
all.push(cell(SCRIPT_COLUMNS.open, (row) => row.href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OpenInNewTabCell, { href: row.href }) : null));
|
|
31845
|
+
return hideColumns ? all.filter((column) => !hideColumns.includes(_nullishCoalesce(column.id, () => ( "")))) : all;
|
|
31846
|
+
}, [hideColumns, renderActions]);
|
|
31537
31847
|
const table = useDataTable({
|
|
31538
|
-
data:
|
|
31848
|
+
data: rows,
|
|
31539
31849
|
columns,
|
|
31540
31850
|
getRowId: (row) => row.id,
|
|
31541
31851
|
enableSorting: false
|
|
31542
31852
|
});
|
|
31853
|
+
const rowHref = _react.useCallback.call(void 0, (row) => row.href, []);
|
|
31854
|
+
const showHeader = isLoading || rows.length > 0;
|
|
31543
31855
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DataTable, { table, children: [
|
|
31856
|
+
showHeader && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DataTable.Header, { stickyHeader, stickyHeaderOffset, rightSlot }),
|
|
31544
31857
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31545
|
-
DataTable.
|
|
31858
|
+
DataTable.Body,
|
|
31546
31859
|
{
|
|
31547
|
-
|
|
31548
|
-
|
|
31549
|
-
|
|
31860
|
+
loading: isLoading,
|
|
31861
|
+
skeletonRows,
|
|
31862
|
+
emptyMessage,
|
|
31863
|
+
rowClassName: "mb-1",
|
|
31864
|
+
rowHref
|
|
31550
31865
|
}
|
|
31551
|
-
)
|
|
31552
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, DataTable.Body, { loading: isLoading, skeletonRows, emptyMessage, rowHref: getHref }),
|
|
31553
|
-
footerSlot
|
|
31866
|
+
)
|
|
31554
31867
|
] });
|
|
31555
31868
|
}
|
|
31556
31869
|
|
|
31557
|
-
// src/components/features/
|
|
31870
|
+
// src/components/features/scripts/scripts-tabs.ts
|
|
31871
|
+
var SCRIPTS_TABS = [
|
|
31872
|
+
{ id: "list", label: "Scripts List", icon: _chunkSAPD55KQcjs.BracketCurlyIcon },
|
|
31873
|
+
{ id: "schedules", label: "Scripts Schedules", icon: _chunkTPKKRHUMcjs.TimerIcon }
|
|
31874
|
+
];
|
|
31558
31875
|
|
|
31559
|
-
|
|
31560
|
-
|
|
31561
|
-
|
|
31562
|
-
|
|
31563
|
-
|
|
31564
|
-
|
|
31565
|
-
|
|
31566
|
-
|
|
31567
|
-
|
|
31568
|
-
|
|
31569
|
-
|
|
31570
|
-
|
|
31571
|
-
|
|
31876
|
+
// src/components/features/scripts/schedule-form/schedule-enums.ts
|
|
31877
|
+
var SCRIPT_SCHEDULE_TRIGGER = {
|
|
31878
|
+
DATE_TIME: "DATE_TIME",
|
|
31879
|
+
DEVICE_ONLINE: "DEVICE_ONLINE"
|
|
31880
|
+
};
|
|
31881
|
+
var SCHEDULE_TIME_REFERENCE = {
|
|
31882
|
+
SERVER: "SERVER",
|
|
31883
|
+
DEVICE_LOCAL: "DEVICE_LOCAL"
|
|
31884
|
+
};
|
|
31885
|
+
var SCHEDULE_OFFLINE_BEHAVIOR = {
|
|
31886
|
+
SKIP: "SKIP",
|
|
31887
|
+
RETRY_ON_RECONNECT: "RETRY_ON_RECONNECT"
|
|
31888
|
+
};
|
|
31889
|
+
|
|
31890
|
+
// src/components/features/scripts/schedule-form/schedule-form-fields.tsx
|
|
31891
|
+
|
|
31892
|
+
var _reacthookform = require('react-hook-form');
|
|
31893
|
+
|
|
31894
|
+
// src/components/features/scripts/schedule-form/schedule-timing.ts
|
|
31895
|
+
function isEventTrigger(trigger) {
|
|
31896
|
+
return trigger === SCRIPT_SCHEDULE_TRIGGER.DEVICE_ONLINE;
|
|
31897
|
+
}
|
|
31898
|
+
function isDeviceLocalTime(timeReference) {
|
|
31899
|
+
return timeReference === SCHEDULE_TIME_REFERENCE.DEVICE_LOCAL;
|
|
31900
|
+
}
|
|
31901
|
+
var DURATION_UNIT_VALUES = ["minute", "hour", "day", "week", "month"];
|
|
31902
|
+
var DURATION_UNIT_SECONDS = {
|
|
31903
|
+
minute: 60,
|
|
31904
|
+
hour: 3600,
|
|
31905
|
+
day: 86400,
|
|
31906
|
+
week: 604800,
|
|
31907
|
+
month: 2592e3
|
|
31908
|
+
// 30 days — the only "calendar" unit the seconds model can approximate
|
|
31909
|
+
};
|
|
31910
|
+
var DURATION_UNIT_LABELS = {
|
|
31911
|
+
minute: "Minute",
|
|
31912
|
+
hour: "Hour",
|
|
31913
|
+
day: "Day",
|
|
31914
|
+
week: "Week",
|
|
31915
|
+
month: "Month"
|
|
31916
|
+
};
|
|
31917
|
+
var MIN_REPEAT_MINUTES = 30;
|
|
31918
|
+
var DURATION_UNIT_OPTIONS = DURATION_UNIT_VALUES.map((value) => ({
|
|
31919
|
+
value,
|
|
31920
|
+
label: DURATION_UNIT_LABELS[value]
|
|
31921
|
+
}));
|
|
31922
|
+
function snapRepeatInterval(interval, unit) {
|
|
31923
|
+
if (unit !== "minute" || interval === null) return interval;
|
|
31924
|
+
if (!Number.isFinite(interval) || interval < MIN_REPEAT_MINUTES) return MIN_REPEAT_MINUTES;
|
|
31925
|
+
return Math.ceil(interval / MIN_REPEAT_MINUTES) * MIN_REPEAT_MINUTES;
|
|
31926
|
+
}
|
|
31927
|
+
function isRetryOnReconnect(behavior) {
|
|
31928
|
+
return behavior === SCHEDULE_OFFLINE_BEHAVIOR.RETRY_ON_RECONNECT;
|
|
31929
|
+
}
|
|
31930
|
+
var MIN_RECONNECT_MINUTES = 30;
|
|
31931
|
+
function snapReconnectInterval(interval, unit) {
|
|
31932
|
+
if (unit !== "minute" || interval === null) return interval;
|
|
31933
|
+
return Math.max(interval, MIN_RECONNECT_MINUTES);
|
|
31934
|
+
}
|
|
31935
|
+
var DEFAULT_RECONNECT_WINDOW = {
|
|
31936
|
+
interval: MIN_RECONNECT_MINUTES,
|
|
31937
|
+
unit: "minute"
|
|
31938
|
+
};
|
|
31939
|
+
var SLOTS_PER_DAY = 48;
|
|
31940
|
+
var SLOT_MINUTES = 30;
|
|
31941
|
+
function slotBaseMinutes(timeReference) {
|
|
31942
|
+
if (isDeviceLocalTime(timeReference)) return 0;
|
|
31943
|
+
const offset = (/* @__PURE__ */ new Date()).getTimezoneOffset();
|
|
31944
|
+
return (-offset % SLOT_MINUTES + SLOT_MINUTES) % SLOT_MINUTES;
|
|
31945
|
+
}
|
|
31946
|
+
function isSlotOnGrid(slot, timeReference) {
|
|
31947
|
+
if (!slot) return true;
|
|
31948
|
+
const [hours, minutes] = slot.split(":").map(Number);
|
|
31949
|
+
const offGrid = (hours * 60 + minutes - slotBaseMinutes(timeReference)) % SLOT_MINUTES;
|
|
31950
|
+
return (offGrid % SLOT_MINUTES + SLOT_MINUTES) % SLOT_MINUTES === 0;
|
|
31951
|
+
}
|
|
31952
|
+
function slotValue(minutesOfDay) {
|
|
31953
|
+
const hours = Math.floor(minutesOfDay / 60);
|
|
31954
|
+
const minutes = minutesOfDay % 60;
|
|
31955
|
+
return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}`;
|
|
31956
|
+
}
|
|
31957
|
+
function slotLabel(minutesOfDay) {
|
|
31958
|
+
return _chunkPQ2M7P2Ucjs.formatTime.call(void 0, new Date(1970, 0, 1, Math.floor(minutesOfDay / 60), minutesOfDay % 60));
|
|
31959
|
+
}
|
|
31960
|
+
function getTimeSlotOptions(forDate, timeReference) {
|
|
31961
|
+
const base = slotBaseMinutes(timeReference);
|
|
31962
|
+
const cutoff = !isDeviceLocalTime(timeReference) && forDate && isToday(forDate) ? nowMinutesOfDay() : -1;
|
|
31963
|
+
return Array.from({ length: SLOTS_PER_DAY }, (_, slot) => {
|
|
31964
|
+
const minutesOfDay = base + slot * SLOT_MINUTES;
|
|
31965
|
+
return { value: slotValue(minutesOfDay), label: slotLabel(minutesOfDay), minutesOfDay };
|
|
31966
|
+
}).filter((slot) => slot.minutesOfDay > cutoff).map(({ value, label }) => ({ value, label }));
|
|
31967
|
+
}
|
|
31968
|
+
function slotToLabel(slot) {
|
|
31969
|
+
const [hours, minutes] = slot.split(":").map(Number);
|
|
31970
|
+
return slotLabel(hours * 60 + minutes);
|
|
31971
|
+
}
|
|
31972
|
+
function nowMinutesOfDay() {
|
|
31973
|
+
const now = /* @__PURE__ */ new Date();
|
|
31974
|
+
return now.getHours() * 60 + now.getMinutes();
|
|
31975
|
+
}
|
|
31976
|
+
function isToday(date) {
|
|
31977
|
+
const now = /* @__PURE__ */ new Date();
|
|
31978
|
+
return date.getFullYear() === now.getFullYear() && date.getMonth() === now.getMonth() && date.getDate() === now.getDate();
|
|
31979
|
+
}
|
|
31980
|
+
function startOfToday() {
|
|
31981
|
+
const now = /* @__PURE__ */ new Date();
|
|
31982
|
+
return new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
31983
|
+
}
|
|
31984
|
+
function earliestDeviceLocalDay() {
|
|
31985
|
+
const westernmostNow = new Date(Date.now() - 12 * 60 * 60 * 1e3);
|
|
31986
|
+
return new Date(westernmostNow.getUTCFullYear(), westernmostNow.getUTCMonth(), westernmostNow.getUTCDate());
|
|
31987
|
+
}
|
|
31988
|
+
function earliestScheduleDay(timeReference) {
|
|
31989
|
+
return isDeviceLocalTime(timeReference) ? earliestDeviceLocalDay() : startOfToday();
|
|
31990
|
+
}
|
|
31991
|
+
function isScheduleStartInPast(date, slot, timeReference) {
|
|
31992
|
+
if (!date || !slot || isDeviceLocalTime(timeReference)) return false;
|
|
31993
|
+
return applyTimeSlot(date, slot).getTime() < Date.now();
|
|
31994
|
+
}
|
|
31995
|
+
var PAST_START_MESSAGE = "Start time must be in the future";
|
|
31996
|
+
var NO_SLOTS_TODAY_MESSAGE = "No start times left today \u2014 pick another day";
|
|
31997
|
+
function isStartInPastAndChanged(date, slot, storedIso, timeReference) {
|
|
31998
|
+
if (!isScheduleStartInPast(date, slot, timeReference) || !date) return false;
|
|
31999
|
+
const stored = storedIso ? fromScheduleInstant(storedIso, timeReference).getTime() : null;
|
|
32000
|
+
return applyTimeSlot(date, slot).getTime() !== stored;
|
|
32001
|
+
}
|
|
32002
|
+
function dateToTimeSlot(date, timeReference) {
|
|
32003
|
+
if (!date) return "";
|
|
32004
|
+
const base = slotBaseMinutes(timeReference);
|
|
32005
|
+
const minutesOfDay = date.getHours() * 60 + date.getMinutes();
|
|
32006
|
+
const slot = Math.min(SLOTS_PER_DAY - 1, Math.max(0, Math.floor((minutesOfDay - base) / SLOT_MINUTES)));
|
|
32007
|
+
return slotValue(base + slot * SLOT_MINUTES);
|
|
32008
|
+
}
|
|
32009
|
+
function applyTimeSlot(date, slot) {
|
|
32010
|
+
const [hours, minutes] = slot.split(":").map(Number);
|
|
32011
|
+
const next = date ? new Date(date) : /* @__PURE__ */ new Date();
|
|
32012
|
+
next.setHours(hours, minutes, 0, 0);
|
|
32013
|
+
return next;
|
|
32014
|
+
}
|
|
32015
|
+
function fromScheduleInstant(iso, timeReference) {
|
|
32016
|
+
const instant = new Date(iso);
|
|
32017
|
+
if (!isDeviceLocalTime(timeReference)) return instant;
|
|
32018
|
+
return new Date(
|
|
32019
|
+
instant.getUTCFullYear(),
|
|
32020
|
+
instant.getUTCMonth(),
|
|
32021
|
+
instant.getUTCDate(),
|
|
32022
|
+
instant.getUTCHours(),
|
|
32023
|
+
instant.getUTCMinutes()
|
|
32024
|
+
);
|
|
32025
|
+
}
|
|
32026
|
+
|
|
32027
|
+
// src/components/features/scripts/schedule-form/schedule-form-types.ts
|
|
32028
|
+
var EMPTY_SCHEDULE_SCRIPT_ROW = {
|
|
32029
|
+
scriptId: "",
|
|
32030
|
+
name: "",
|
|
32031
|
+
supportedPlatforms: [],
|
|
32032
|
+
// 0 keeps the Timeout field locked and empty until a script is picked.
|
|
32033
|
+
timeoutSeconds: 0,
|
|
32034
|
+
args: [],
|
|
32035
|
+
envVars: [],
|
|
32036
|
+
defaultArgs: [],
|
|
32037
|
+
defaultEnvVars: []
|
|
32038
|
+
};
|
|
32039
|
+
var SCHEDULE_TRIGGER_OPTIONS = [
|
|
32040
|
+
{
|
|
32041
|
+
value: SCRIPT_SCHEDULE_TRIGGER.DATE_TIME,
|
|
32042
|
+
label: "Run on schedule",
|
|
32043
|
+
description: "Runs at the set date and time, whether or not the device is online."
|
|
32044
|
+
},
|
|
32045
|
+
{
|
|
32046
|
+
value: SCRIPT_SCHEDULE_TRIGGER.DEVICE_ONLINE,
|
|
32047
|
+
label: "Run when device comes online",
|
|
32048
|
+
description: "Waits for the device to connect, then runs as soon as it's reachable."
|
|
32049
|
+
}
|
|
32050
|
+
];
|
|
32051
|
+
var SCHEDULE_TIME_REFERENCE_OPTIONS = [
|
|
32052
|
+
{ value: SCHEDULE_TIME_REFERENCE.SERVER, label: "Your account timezone" },
|
|
32053
|
+
{ value: SCHEDULE_TIME_REFERENCE.DEVICE_LOCAL, label: "Device local timezone" }
|
|
32054
|
+
];
|
|
32055
|
+
var SCHEDULE_OFFLINE_BEHAVIOR_OPTIONS = [
|
|
32056
|
+
{
|
|
32057
|
+
value: SCHEDULE_OFFLINE_BEHAVIOR.SKIP,
|
|
32058
|
+
label: "Skip this Run",
|
|
32059
|
+
description: "Next run stays on schedule. Missed runs are logged."
|
|
32060
|
+
},
|
|
32061
|
+
{
|
|
32062
|
+
value: SCHEDULE_OFFLINE_BEHAVIOR.RETRY_ON_RECONNECT,
|
|
32063
|
+
label: "Run when device comes back online",
|
|
32064
|
+
description: "Executes on the next reconnect."
|
|
32065
|
+
}
|
|
32066
|
+
];
|
|
32067
|
+
var DEFAULT_SCHEDULE_FORM_VALUES = {
|
|
32068
|
+
name: "",
|
|
32069
|
+
description: "",
|
|
32070
|
+
trigger: SCRIPT_SCHEDULE_TRIGGER.DATE_TIME,
|
|
32071
|
+
scheduledDate: null,
|
|
32072
|
+
scheduledTime: "",
|
|
32073
|
+
timeReference: SCHEDULE_TIME_REFERENCE.SERVER,
|
|
32074
|
+
repeatEnabled: false,
|
|
32075
|
+
repeatInterval: 1,
|
|
32076
|
+
repeatUnit: "day",
|
|
32077
|
+
repeatSecondsStored: null,
|
|
32078
|
+
startAtStored: null,
|
|
32079
|
+
offlineBehavior: SCHEDULE_OFFLINE_BEHAVIOR.SKIP,
|
|
32080
|
+
reconnectInterval: DEFAULT_RECONNECT_WINDOW.interval,
|
|
32081
|
+
reconnectUnit: DEFAULT_RECONNECT_WINDOW.unit,
|
|
32082
|
+
reconnectWindowSecondsStored: null,
|
|
32083
|
+
supportedPlatforms: ["windows"],
|
|
32084
|
+
scripts: [EMPTY_SCHEDULE_SCRIPT_ROW]
|
|
32085
|
+
};
|
|
32086
|
+
|
|
32087
|
+
// src/components/features/scripts/schedule-form/schedule-offline-fields.tsx
|
|
32088
|
+
|
|
32089
|
+
|
|
32090
|
+
// src/components/features/scripts/schedule-form/schedule-interval-input.tsx
|
|
32091
|
+
|
|
32092
|
+
|
|
32093
|
+
function ScheduleIntervalInput({
|
|
32094
|
+
value,
|
|
32095
|
+
onChange,
|
|
32096
|
+
onBlur,
|
|
32097
|
+
disabled,
|
|
32098
|
+
invalid,
|
|
32099
|
+
error,
|
|
32100
|
+
min,
|
|
32101
|
+
className,
|
|
32102
|
+
"aria-label": ariaLabel,
|
|
32103
|
+
"data-invalid-focus": invalidFocus
|
|
31572
32104
|
}) {
|
|
31573
|
-
|
|
31574
|
-
|
|
32105
|
+
const [text, setText] = _react.useState.call(void 0, () => value === null ? "" : String(value));
|
|
32106
|
+
const focused = _react.useRef.call(void 0, false);
|
|
32107
|
+
_react.useEffect.call(void 0, () => {
|
|
32108
|
+
if (focused.current) return;
|
|
32109
|
+
const next = value === null ? "" : String(value);
|
|
32110
|
+
setText((current) => current === next ? current : next);
|
|
32111
|
+
}, [value]);
|
|
32112
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32113
|
+
_chunkHTRILBJDcjs.Input,
|
|
31575
32114
|
{
|
|
31576
|
-
|
|
31577
|
-
|
|
31578
|
-
|
|
31579
|
-
|
|
31580
|
-
|
|
32115
|
+
type: "number",
|
|
32116
|
+
min,
|
|
32117
|
+
inputMode: "numeric",
|
|
32118
|
+
"aria-label": ariaLabel,
|
|
32119
|
+
"data-invalid-focus": invalidFocus || void 0,
|
|
31581
32120
|
className,
|
|
31582
|
-
|
|
31583
|
-
|
|
31584
|
-
|
|
31585
|
-
|
|
31586
|
-
|
|
31587
|
-
|
|
32121
|
+
value: text,
|
|
32122
|
+
onFocus: () => {
|
|
32123
|
+
focused.current = true;
|
|
32124
|
+
},
|
|
32125
|
+
onBlur: () => {
|
|
32126
|
+
focused.current = false;
|
|
32127
|
+
setText(value === null ? "" : String(value));
|
|
32128
|
+
_optionalChain([onBlur, 'optionalCall', _675 => _675()]);
|
|
32129
|
+
},
|
|
32130
|
+
onChange: (e) => {
|
|
32131
|
+
const raw = e.target.value;
|
|
32132
|
+
setText(raw);
|
|
32133
|
+
if (raw.trim() === "") {
|
|
32134
|
+
onChange(null);
|
|
32135
|
+
return;
|
|
32136
|
+
}
|
|
32137
|
+
const parsed = Number(raw);
|
|
32138
|
+
onChange(Number.isFinite(parsed) ? parsed : null);
|
|
32139
|
+
},
|
|
32140
|
+
disabled,
|
|
32141
|
+
invalid,
|
|
32142
|
+
error
|
|
32143
|
+
}
|
|
32144
|
+
);
|
|
32145
|
+
}
|
|
32146
|
+
|
|
32147
|
+
// src/components/features/scripts/schedule-form/schedule-offline-fields.tsx
|
|
32148
|
+
|
|
32149
|
+
function ReconnectWindowFields({
|
|
32150
|
+
interval,
|
|
32151
|
+
unit,
|
|
32152
|
+
onIntervalChange,
|
|
32153
|
+
onIntervalBlur,
|
|
32154
|
+
onUnitChange,
|
|
32155
|
+
disabled,
|
|
32156
|
+
invalid,
|
|
32157
|
+
fluid = false,
|
|
32158
|
+
className
|
|
32159
|
+
}) {
|
|
32160
|
+
const controlWidth = fluid ? "flex-1 min-w-0" : "w-[120px]";
|
|
32161
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-[var(--spacing-system-xsf)]", className), children: [
|
|
32162
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0 text-h4", disabled ? "text-ods-text-disabled" : "text-ods-text-secondary"), children: "Stop Retry after" }),
|
|
32163
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32164
|
+
ScheduleIntervalInput,
|
|
32165
|
+
{
|
|
32166
|
+
min: unit === "minute" ? MIN_RECONNECT_MINUTES : 1,
|
|
32167
|
+
"aria-label": "Stop retry after",
|
|
32168
|
+
className: controlWidth,
|
|
32169
|
+
value: interval,
|
|
32170
|
+
onChange: onIntervalChange,
|
|
32171
|
+
onBlur: onIntervalBlur,
|
|
32172
|
+
"data-invalid-focus": true,
|
|
32173
|
+
disabled,
|
|
32174
|
+
invalid
|
|
32175
|
+
}
|
|
32176
|
+
),
|
|
32177
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDSVNFRY5cjs.Select, { value: unit, onValueChange: (next) => onUnitChange(next), disabled, children: [
|
|
32178
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectTrigger, { className: controlWidth, "aria-label": "Stop retry after unit", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectValue, {}) }),
|
|
32179
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectContent, { children: DURATION_UNIT_OPTIONS.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
32180
|
+
] })
|
|
32181
|
+
] });
|
|
32182
|
+
}
|
|
32183
|
+
function ScheduleOfflineFields({ showErrors, disabled = false }) {
|
|
32184
|
+
const { control } = _reacthookform.useFormContext.call(void 0, );
|
|
32185
|
+
const trigger = _reacthookform.useWatch.call(void 0, { control, name: "trigger" });
|
|
32186
|
+
const collapsed = isEventTrigger(trigger);
|
|
32187
|
+
const { field: behaviorField } = _reacthookform.useController.call(void 0, { control, name: "offlineBehavior" });
|
|
32188
|
+
const { field: intervalField, fieldState: intervalState } = _reacthookform.useController.call(void 0, { control, name: "reconnectInterval" });
|
|
32189
|
+
const { field: unitField } = _reacthookform.useController.call(void 0, { control, name: "reconnectUnit" });
|
|
32190
|
+
const windowDisabled = disabled || !isRetryOnReconnect(behaviorField.value);
|
|
32191
|
+
const intervalError = showErrors ? _optionalChain([intervalState, 'access', _676 => _676.error, 'optionalAccess', _677 => _677.message]) : void 0;
|
|
32192
|
+
const handleUnitChange = (next) => {
|
|
32193
|
+
unitField.onChange(next);
|
|
32194
|
+
const snapped = snapReconnectInterval(intervalField.value, next);
|
|
32195
|
+
if (snapped !== intervalField.value) intervalField.onChange(snapped);
|
|
32196
|
+
};
|
|
32197
|
+
const windowFieldsFor = (fluid) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32198
|
+
ReconnectWindowFields,
|
|
32199
|
+
{
|
|
32200
|
+
interval: intervalField.value,
|
|
32201
|
+
unit: unitField.value,
|
|
32202
|
+
onIntervalChange: intervalField.onChange,
|
|
32203
|
+
onIntervalBlur: intervalField.onBlur,
|
|
32204
|
+
onUnitChange: handleUnitChange,
|
|
32205
|
+
disabled: windowDisabled,
|
|
32206
|
+
invalid: !!intervalError,
|
|
32207
|
+
fluid
|
|
32208
|
+
}
|
|
32209
|
+
);
|
|
32210
|
+
const options = SCHEDULE_OFFLINE_BEHAVIOR_OPTIONS.map(
|
|
32211
|
+
(option) => isRetryOnReconnect(option.value) ? (
|
|
32212
|
+
// Desktop only. Below `md` the caption plus two controls cannot share a
|
|
32213
|
+
// row with the option's own label without squeezing it to nothing, so
|
|
32214
|
+
// the same fields render full-width under the group instead.
|
|
32215
|
+
{ ...option, trailing: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden content-md:flex", children: windowFieldsFor(false) }) }
|
|
32216
|
+
) : option
|
|
32217
|
+
);
|
|
32218
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32219
|
+
"div",
|
|
32220
|
+
{
|
|
32221
|
+
inert: collapsed,
|
|
32222
|
+
style: {
|
|
32223
|
+
gridTemplateRows: collapsed ? "0fr" : "1fr",
|
|
32224
|
+
opacity: collapsed ? 0 : 1
|
|
32225
|
+
},
|
|
32226
|
+
className: "mb-[calc(-1*var(--spacing-system-lf))] grid transition-[grid-template-rows,opacity] duration-200 ease-out motion-reduce:transition-none",
|
|
32227
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pb-[var(--spacing-system-lf)]", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
32228
|
+
"div",
|
|
32229
|
+
{
|
|
32230
|
+
className: "relative flex flex-col gap-[var(--spacing-system-xxs)]",
|
|
32231
|
+
"data-invalid": intervalError ? true : void 0,
|
|
32232
|
+
children: [
|
|
32233
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "If device is offline at scheduled time" }),
|
|
32234
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32235
|
+
RadioGroupBlock,
|
|
31588
32236
|
{
|
|
31589
|
-
|
|
31590
|
-
|
|
31591
|
-
|
|
31592
|
-
|
|
31593
|
-
|
|
32237
|
+
variant: "grouped",
|
|
32238
|
+
value: behaviorField.value,
|
|
32239
|
+
onValueChange: behaviorField.onChange,
|
|
32240
|
+
disabled,
|
|
32241
|
+
options
|
|
31594
32242
|
}
|
|
31595
32243
|
),
|
|
31596
|
-
/* @__PURE__ */ _jsxruntime.
|
|
31597
|
-
|
|
31598
|
-
|
|
31599
|
-
|
|
31600
|
-
|
|
31601
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 min-w-0 flex-col justify-center", children: [
|
|
31602
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: updatedLabel }),
|
|
31603
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-heading-5 text-ods-text-secondary", children: "Updated" })
|
|
31604
|
-
] }),
|
|
31605
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31606
|
-
"div",
|
|
31607
|
-
{
|
|
31608
|
-
className: "col-span-2 -mx-[var(--spacing-system-mf)] border-t border-ods-border content-lg:hidden",
|
|
31609
|
-
"aria-hidden": true
|
|
31610
|
-
}
|
|
31611
|
-
),
|
|
31612
|
-
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 min-w-0 flex-col items-start justify-center gap-[var(--spacing-system-xxs)]", children: [
|
|
31613
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ZFCR7UYcjs.Tag, { variant: KNOWLEDGE_BASE_STATUS_VARIANT[status], label: status }),
|
|
31614
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-heading-5 text-ods-text-secondary", children: "Status" })
|
|
31615
|
-
] })
|
|
31616
|
-
] }) }),
|
|
31617
|
-
content,
|
|
31618
|
-
attachments.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketDetailSection, { label: "Attachments", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketAttachmentsList, { attachments }) }),
|
|
31619
|
-
children
|
|
31620
|
-
]
|
|
32244
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-xs)] content-md:hidden", children: windowFieldsFor(true) }),
|
|
32245
|
+
intervalError && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute bottom-0 left-0 right-0 translate-y-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", className: "text-ods-error", children: intervalError }) })
|
|
32246
|
+
]
|
|
32247
|
+
}
|
|
32248
|
+
) }) })
|
|
31621
32249
|
}
|
|
31622
32250
|
);
|
|
31623
32251
|
}
|
|
31624
32252
|
|
|
32253
|
+
// src/components/features/scripts/schedule-form/schedule-scripts-field.tsx
|
|
32254
|
+
|
|
32255
|
+
|
|
32256
|
+
// src/components/features/sortable-list/sortable-list.tsx
|
|
32257
|
+
var _combine = require('@atlaskit/pragmatic-drag-and-drop/combine');
|
|
32258
|
+
var _adapter = require('@atlaskit/pragmatic-drag-and-drop/element/adapter');
|
|
32259
|
+
var _preventunhandled = require('@atlaskit/pragmatic-drag-and-drop/utils/prevent-unhandled');
|
|
32260
|
+
|
|
32261
|
+
|
|
32262
|
+
|
|
32263
|
+
|
|
32264
|
+
|
|
32265
|
+
|
|
32266
|
+
|
|
32267
|
+
|
|
32268
|
+
|
|
32269
|
+
|
|
32270
|
+
|
|
31625
32271
|
// src/components/features/sortable-list/slot-geometry.ts
|
|
31626
32272
|
var SLOT_STICKINESS = 0.25;
|
|
31627
32273
|
function measureSlots(items, from, gap, origin) {
|
|
@@ -31658,37 +32304,7 @@ function shiftFor(slots, index, to) {
|
|
|
31658
32304
|
return 0;
|
|
31659
32305
|
}
|
|
31660
32306
|
|
|
31661
|
-
// src/components/features/sortable-list/sortable-drag-handle.tsx
|
|
31662
|
-
|
|
31663
|
-
function SortableDragHandle({ handleProps, label, className }) {
|
|
31664
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
31665
|
-
_chunk2QMBXGMQcjs.Button,
|
|
31666
|
-
{
|
|
31667
|
-
type: "button",
|
|
31668
|
-
variant: "transparent",
|
|
31669
|
-
size: "icon-sm",
|
|
31670
|
-
"aria-label": label ? `Drag ${label} to reorder` : "Drag to reorder",
|
|
31671
|
-
...handleProps,
|
|
31672
|
-
className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0 cursor-grab touch-none text-ods-text-secondary hover:text-ods-text-primary", className),
|
|
31673
|
-
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJAWIFYB2cjs.DraggerIcon, {})
|
|
31674
|
-
}
|
|
31675
|
-
);
|
|
31676
|
-
}
|
|
31677
|
-
|
|
31678
32307
|
// src/components/features/sortable-list/sortable-list.tsx
|
|
31679
|
-
var _combine = require('@atlaskit/pragmatic-drag-and-drop/combine');
|
|
31680
|
-
var _adapter = require('@atlaskit/pragmatic-drag-and-drop/element/adapter');
|
|
31681
|
-
var _preventunhandled = require('@atlaskit/pragmatic-drag-and-drop/utils/prevent-unhandled');
|
|
31682
|
-
|
|
31683
|
-
|
|
31684
|
-
|
|
31685
|
-
|
|
31686
|
-
|
|
31687
|
-
|
|
31688
|
-
|
|
31689
|
-
|
|
31690
|
-
|
|
31691
|
-
|
|
31692
32308
|
|
|
31693
32309
|
var SORTABLE_ITEM_ATTRIBUTE = "data-sortable-item";
|
|
31694
32310
|
var SHIFT_MS = 200;
|
|
@@ -31715,13 +32331,13 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
|
|
|
31715
32331
|
const [flipTick, setFlipTick] = _react.useState.call(void 0, 0);
|
|
31716
32332
|
const flipTimer = _react.useRef.call(void 0, null);
|
|
31717
32333
|
const readItems = _react.useCallback.call(void 0,
|
|
31718
|
-
() => [..._nullishCoalesce(_optionalChain([listRef, 'access',
|
|
32334
|
+
() => [..._nullishCoalesce(_optionalChain([listRef, 'access', _678 => _678.current, 'optionalAccess', _679 => _679.querySelectorAll, 'call', _680 => _680(`[${SORTABLE_ITEM_ATTRIBUTE}]`)]), () => ( []))],
|
|
31719
32335
|
[]
|
|
31720
32336
|
);
|
|
31721
32337
|
const reorder = _react.useCallback.call(void 0,
|
|
31722
32338
|
(from, to) => {
|
|
31723
32339
|
if (from === to) return;
|
|
31724
|
-
const label = _nullishCoalesce(_optionalChain([getItemLabelRef, 'access',
|
|
32340
|
+
const label = _nullishCoalesce(_optionalChain([getItemLabelRef, 'access', _681 => _681.current, 'optionalCall', _682 => _682(from)]), () => ( "Item"));
|
|
31725
32341
|
setAnnouncement(`${label} moved to position ${to + 1} of ${readItems().length}.`);
|
|
31726
32342
|
onReorderRef.current(from, to);
|
|
31727
32343
|
},
|
|
@@ -31809,7 +32425,7 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
|
|
|
31809
32425
|
moving.push(item);
|
|
31810
32426
|
}
|
|
31811
32427
|
if (moving.length === 0) return;
|
|
31812
|
-
void _optionalChain([listRef, 'access',
|
|
32428
|
+
void _optionalChain([listRef, 'access', _683 => _683.current, 'optionalAccess', _684 => _684.offsetHeight]);
|
|
31813
32429
|
for (const item of moving) {
|
|
31814
32430
|
item.style.transition = `transform ${DROP_MS}ms ${EASING}`;
|
|
31815
32431
|
item.style.transform = "";
|
|
@@ -31834,6 +32450,136 @@ function SortableList({ onReorder, getItemLabel, disabled = false, className, ch
|
|
|
31834
32450
|
] }) });
|
|
31835
32451
|
}
|
|
31836
32452
|
|
|
32453
|
+
// src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx
|
|
32454
|
+
|
|
32455
|
+
|
|
32456
|
+
// src/components/platform/ScriptArguments.tsx
|
|
32457
|
+
|
|
32458
|
+
|
|
32459
|
+
var SECRET_MASK = "**********";
|
|
32460
|
+
var STORED_SECRET_KEY_HINT = "A stored secret can't be renamed \u2014 delete it and add a new one";
|
|
32461
|
+
var ScriptArguments = ({
|
|
32462
|
+
arguments: args,
|
|
32463
|
+
onArgumentsChange,
|
|
32464
|
+
keyPlaceholder = "Enter Key",
|
|
32465
|
+
valuePlaceholder = "Enter Value (empty=flag)",
|
|
32466
|
+
addButtonLabel = "Add Script Argument",
|
|
32467
|
+
addSecretButtonLabel,
|
|
32468
|
+
disabled = false,
|
|
32469
|
+
className,
|
|
32470
|
+
titleLabel
|
|
32471
|
+
}) => {
|
|
32472
|
+
const handleKeyChange = (id, newKey) => {
|
|
32473
|
+
if (!onArgumentsChange) return;
|
|
32474
|
+
const updated = args.map((arg) => arg.id === id ? { ...arg, key: newKey } : arg);
|
|
32475
|
+
onArgumentsChange(updated);
|
|
32476
|
+
};
|
|
32477
|
+
const handleValueChange = (id, newValue) => {
|
|
32478
|
+
if (!onArgumentsChange) return;
|
|
32479
|
+
const updated = args.map((arg) => arg.id === id ? { ...arg, value: newValue } : arg);
|
|
32480
|
+
onArgumentsChange(updated);
|
|
32481
|
+
};
|
|
32482
|
+
const handleDelete = (id) => {
|
|
32483
|
+
if (!onArgumentsChange) return;
|
|
32484
|
+
const updated = args.filter((arg) => arg.id !== id);
|
|
32485
|
+
onArgumentsChange(updated);
|
|
32486
|
+
};
|
|
32487
|
+
const handleAdd = (secret = false) => {
|
|
32488
|
+
if (!onArgumentsChange) return;
|
|
32489
|
+
const newArg = {
|
|
32490
|
+
id: _chunkJKX2C3I2cjs.randomId.call(void 0, ),
|
|
32491
|
+
key: "",
|
|
32492
|
+
value: "",
|
|
32493
|
+
// Only set on a secret, so a plain pair keeps the shape it always had.
|
|
32494
|
+
...secret && { secret: true }
|
|
32495
|
+
};
|
|
32496
|
+
onArgumentsChange([...args, newArg]);
|
|
32497
|
+
};
|
|
32498
|
+
const isFirstRow = (index) => index === 0;
|
|
32499
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex flex-col gap-2", className), children: [
|
|
32500
|
+
args.map((arg, index) => {
|
|
32501
|
+
const isStoredSecret = Boolean(arg.secret && arg.hasStoredValue);
|
|
32502
|
+
const showsMask = isStoredSecret && !arg.value;
|
|
32503
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full items-end gap-2", children: [
|
|
32504
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
32505
|
+
isFirstRow(index) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { spacing: "tight", children: titleLabel }),
|
|
32506
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32507
|
+
_chunkHTRILBJDcjs.Input,
|
|
32508
|
+
{
|
|
32509
|
+
value: arg.key,
|
|
32510
|
+
onChange: (e) => handleKeyChange(arg.id, e.target.value),
|
|
32511
|
+
placeholder: keyPlaceholder,
|
|
32512
|
+
disabled,
|
|
32513
|
+
readOnly: isStoredSecret,
|
|
32514
|
+
title: isStoredSecret ? STORED_SECRET_KEY_HINT : void 0,
|
|
32515
|
+
startAdornment: arg.secret ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMT45XX7Icjs.LockIcon, { role: "img", "aria-label": "Secret" }) : void 0
|
|
32516
|
+
}
|
|
32517
|
+
)
|
|
32518
|
+
] }),
|
|
32519
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
|
|
32520
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32521
|
+
_chunkHTRILBJDcjs.Input,
|
|
32522
|
+
{
|
|
32523
|
+
type: arg.secret ? "password" : void 0,
|
|
32524
|
+
autoComplete: arg.secret ? "new-password" : void 0,
|
|
32525
|
+
value: arg.value,
|
|
32526
|
+
onChange: (e) => handleValueChange(arg.id, e.target.value),
|
|
32527
|
+
placeholder: showsMask ? SECRET_MASK : valuePlaceholder,
|
|
32528
|
+
disabled,
|
|
32529
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
32530
|
+
!arg.value && "placeholder:text-ods-text-muted",
|
|
32531
|
+
// The mask reads as a value that is there, not as a prompt to fill one in.
|
|
32532
|
+
showsMask && "[&_input]:placeholder:text-ods-text-primary"
|
|
32533
|
+
)
|
|
32534
|
+
}
|
|
32535
|
+
) }),
|
|
32536
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32537
|
+
_chunk2QMBXGMQcjs.Button,
|
|
32538
|
+
{
|
|
32539
|
+
type: "button",
|
|
32540
|
+
variant: "outline",
|
|
32541
|
+
size: "icon",
|
|
32542
|
+
onClick: () => handleDelete(arg.id),
|
|
32543
|
+
disabled,
|
|
32544
|
+
"aria-label": "Delete argument",
|
|
32545
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.Trash2, { className: "size-4 content-md:size-6", color: "var(--color-error)" })
|
|
32546
|
+
}
|
|
32547
|
+
)
|
|
32548
|
+
] })
|
|
32549
|
+
] }, arg.id);
|
|
32550
|
+
}),
|
|
32551
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-wrap justify-start gap-[var(--spacing-system-xs)]", children: [
|
|
32552
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32553
|
+
_chunk2QMBXGMQcjs.Button,
|
|
32554
|
+
{
|
|
32555
|
+
type: "button",
|
|
32556
|
+
variant: "outline",
|
|
32557
|
+
size: "small",
|
|
32558
|
+
onClick: () => handleAdd(),
|
|
32559
|
+
disabled,
|
|
32560
|
+
className: "self-start",
|
|
32561
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEETTUAAFcjs.PlusCircleIcon, { className: "text-ods-text-secondary" }),
|
|
32562
|
+
children: addButtonLabel
|
|
32563
|
+
}
|
|
32564
|
+
),
|
|
32565
|
+
addSecretButtonLabel && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32566
|
+
_chunk2QMBXGMQcjs.Button,
|
|
32567
|
+
{
|
|
32568
|
+
type: "button",
|
|
32569
|
+
variant: "outline",
|
|
32570
|
+
size: "small",
|
|
32571
|
+
onClick: () => handleAdd(true),
|
|
32572
|
+
disabled,
|
|
32573
|
+
className: "self-start",
|
|
32574
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMT45XX7Icjs.LockIcon, { className: "text-ods-text-secondary" }),
|
|
32575
|
+
children: addSecretButtonLabel
|
|
32576
|
+
}
|
|
32577
|
+
)
|
|
32578
|
+
] })
|
|
32579
|
+
] });
|
|
32580
|
+
};
|
|
32581
|
+
ScriptArguments.displayName = "ScriptArguments";
|
|
32582
|
+
|
|
31837
32583
|
// src/components/features/sortable-list/sortable-move-buttons.tsx
|
|
31838
32584
|
|
|
31839
32585
|
|
|
@@ -31846,8 +32592,8 @@ function SortableMoveButtons({ index, count, label, className }) {
|
|
|
31846
32592
|
if (to < 0 || to >= count) return;
|
|
31847
32593
|
reorder(index, to);
|
|
31848
32594
|
requestAnimationFrame(() => {
|
|
31849
|
-
if (step === -1 && to === 0) _optionalChain([downRef, 'access',
|
|
31850
|
-
if (step === 1 && to === count - 1) _optionalChain([upRef, 'access',
|
|
32595
|
+
if (step === -1 && to === 0) _optionalChain([downRef, 'access', _685 => _685.current, 'optionalAccess', _686 => _686.focus, 'call', _687 => _687()]);
|
|
32596
|
+
if (step === 1 && to === count - 1) _optionalChain([upRef, 'access', _688 => _688.current, 'optionalAccess', _689 => _689.focus, 'call', _690 => _690()]);
|
|
31851
32597
|
});
|
|
31852
32598
|
};
|
|
31853
32599
|
const subject = _nullishCoalesce(label, () => ( "item"));
|
|
@@ -31895,7 +32641,7 @@ function useSortableItem() {
|
|
|
31895
32641
|
const [handle, setHandle] = _react.useState.call(void 0, null);
|
|
31896
32642
|
const [isDragging, setIsDragging] = _react.useState.call(void 0, false);
|
|
31897
32643
|
const itemRef = _react.useCallback.call(void 0, (node) => {
|
|
31898
|
-
_optionalChain([node, 'optionalAccess',
|
|
32644
|
+
_optionalChain([node, 'optionalAccess', _691 => _691.setAttribute, 'call', _692 => _692(SORTABLE_ITEM_ATTRIBUTE, "")]);
|
|
31899
32645
|
setItem(node);
|
|
31900
32646
|
}, []);
|
|
31901
32647
|
_react.useEffect.call(void 0, () => {
|
|
@@ -31925,13 +32671,940 @@ function useSortableItem() {
|
|
|
31925
32671
|
if (from < 0 || to < 0 || to >= items.length) return;
|
|
31926
32672
|
event.preventDefault();
|
|
31927
32673
|
reorder(from, to);
|
|
31928
|
-
requestAnimationFrame(() => _optionalChain([handle, 'optionalAccess',
|
|
32674
|
+
requestAnimationFrame(() => _optionalChain([handle, 'optionalAccess', _693 => _693.focus, 'call', _694 => _694()]));
|
|
31929
32675
|
},
|
|
31930
32676
|
[inert, readItems, reorder, handle]
|
|
31931
32677
|
);
|
|
31932
32678
|
return { itemRef, dragHandleProps: { ref: setHandle, onKeyDown }, isDragging, dragAndDropEnabled };
|
|
31933
32679
|
}
|
|
31934
32680
|
|
|
32681
|
+
// src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx
|
|
32682
|
+
|
|
32683
|
+
var UNSET_TIMEOUT = 0;
|
|
32684
|
+
function ScheduleScriptPickerCard({
|
|
32685
|
+
index,
|
|
32686
|
+
count,
|
|
32687
|
+
supportedPlatforms,
|
|
32688
|
+
renderScriptSearch,
|
|
32689
|
+
onRemove,
|
|
32690
|
+
canRemove,
|
|
32691
|
+
disabled = false,
|
|
32692
|
+
showErrors = true,
|
|
32693
|
+
showParams = true
|
|
32694
|
+
}) {
|
|
32695
|
+
const { control, setValue, watch } = _reacthookform.useFormContext.call(void 0, );
|
|
32696
|
+
const selected = watch(`scripts.${index}`);
|
|
32697
|
+
const runParamsLocked = disabled || !_optionalChain([selected, 'optionalAccess', _695 => _695.scriptId]);
|
|
32698
|
+
const { itemRef, dragHandleProps, isDragging, dragAndDropEnabled } = useSortableItem();
|
|
32699
|
+
const isMdUp = _chunkGVTDVS5Ucjs.useContentMdUp.call(void 0, );
|
|
32700
|
+
const handleScriptPick = (row) => {
|
|
32701
|
+
if (!row) {
|
|
32702
|
+
setValue(`scripts.${index}`, EMPTY_SCHEDULE_SCRIPT_ROW, { shouldValidate: true });
|
|
32703
|
+
return;
|
|
32704
|
+
}
|
|
32705
|
+
setValue(`scripts.${index}`, row, { shouldValidate: true, shouldDirty: true });
|
|
32706
|
+
};
|
|
32707
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
32708
|
+
"div",
|
|
32709
|
+
{
|
|
32710
|
+
ref: itemRef,
|
|
32711
|
+
className: `flex flex-col gap-[var(--spacing-system-sf)] rounded-[6px] border bg-ods-bg p-[var(--spacing-system-l)] content-md:gap-[var(--spacing-system-lf)] ${isDragging ? "relative z-10 border-ods-accent shadow-lg" : "border-ods-border"}`,
|
|
32712
|
+
children: [
|
|
32713
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
32714
|
+
"div",
|
|
32715
|
+
{
|
|
32716
|
+
className: `flex flex-col gap-[var(--spacing-system-sf)] content-md:gap-[var(--spacing-system-lf)] ${dragAndDropEnabled ? "content-md:flex-row content-md:items-end" : ""}`,
|
|
32717
|
+
children: [
|
|
32718
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
32719
|
+
"div",
|
|
32720
|
+
{
|
|
32721
|
+
className: `flex min-w-0 flex-1 items-end ${dragAndDropEnabled ? "gap-[var(--spacing-system-xs)]" : "gap-[var(--spacing-system-xsf)]"}`,
|
|
32722
|
+
children: [
|
|
32723
|
+
dragAndDropEnabled && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32724
|
+
"button",
|
|
32725
|
+
{
|
|
32726
|
+
type: "button",
|
|
32727
|
+
...dragHandleProps,
|
|
32728
|
+
disabled,
|
|
32729
|
+
"aria-label": `Reorder ${_optionalChain([selected, 'optionalAccess', _696 => _696.name]) || `script ${index + 1}`}`,
|
|
32730
|
+
className: `flex size-12 shrink-0 items-center justify-center rounded-[6px] text-ods-text-secondary hover:text-ods-text-primary focus-visible:outline focus-visible:outline-2 focus-visible:outline-ods-border-focus disabled:cursor-not-allowed disabled:opacity-30 ${isDragging ? "cursor-grabbing text-ods-text-primary" : "cursor-grab"}`,
|
|
32731
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJAWIFYB2cjs.DraggerIcon, { size: 24 })
|
|
32732
|
+
}
|
|
32733
|
+
),
|
|
32734
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32735
|
+
_reacthookform.Controller,
|
|
32736
|
+
{
|
|
32737
|
+
name: `scripts.${index}.scriptId`,
|
|
32738
|
+
control,
|
|
32739
|
+
render: ({ fieldState }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: renderScriptSearch({
|
|
32740
|
+
scriptId: _nullishCoalesce(_optionalChain([selected, 'optionalAccess', _697 => _697.scriptId]), () => ( "")),
|
|
32741
|
+
name: _nullishCoalesce(_optionalChain([selected, 'optionalAccess', _698 => _698.name]), () => ( "")),
|
|
32742
|
+
supportedPlatforms,
|
|
32743
|
+
onPick: handleScriptPick,
|
|
32744
|
+
disabled,
|
|
32745
|
+
error: showErrors ? _optionalChain([fieldState, 'access', _699 => _699.error, 'optionalAccess', _700 => _700.message]) : void 0,
|
|
32746
|
+
invalid: showErrors && !!fieldState.error
|
|
32747
|
+
}) })
|
|
32748
|
+
}
|
|
32749
|
+
),
|
|
32750
|
+
!dragAndDropEnabled && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
32751
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortableMoveButtons, { index, count, label: _optionalChain([selected, 'optionalAccess', _701 => _701.name]) || `script ${index + 1}` }),
|
|
32752
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32753
|
+
_chunk2QMBXGMQcjs.Button,
|
|
32754
|
+
{
|
|
32755
|
+
variant: "outline",
|
|
32756
|
+
size: "icon",
|
|
32757
|
+
onClick: onRemove,
|
|
32758
|
+
disabled: !canRemove || disabled,
|
|
32759
|
+
"aria-label": "Remove script from schedule",
|
|
32760
|
+
className: "text-ods-error disabled:opacity-30",
|
|
32761
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIYHH5EIOcjs.TrashIcon, { size: 20 })
|
|
32762
|
+
}
|
|
32763
|
+
)
|
|
32764
|
+
] })
|
|
32765
|
+
]
|
|
32766
|
+
}
|
|
32767
|
+
),
|
|
32768
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-end gap-[var(--spacing-system-xs)]", children: [
|
|
32769
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
32770
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Timeout" }),
|
|
32771
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32772
|
+
_reacthookform.Controller,
|
|
32773
|
+
{
|
|
32774
|
+
name: `scripts.${index}.timeoutSeconds`,
|
|
32775
|
+
control,
|
|
32776
|
+
render: ({ field, fieldState }) => (
|
|
32777
|
+
// Locked until a script is picked: the timeout belongs to the
|
|
32778
|
+
// script, so the field stays EMPTY until there is one — the
|
|
32779
|
+
// sentinel is a "nothing here yet" marker, and rendering it as
|
|
32780
|
+
// a literal 0 would read as a real (and invalid) timeout.
|
|
32781
|
+
// Picking a script writes its own timeout in.
|
|
32782
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32783
|
+
_chunkHTRILBJDcjs.Input,
|
|
32784
|
+
{
|
|
32785
|
+
type: "number",
|
|
32786
|
+
min: 1,
|
|
32787
|
+
className: "w-full",
|
|
32788
|
+
value: field.value ? String(field.value) : "",
|
|
32789
|
+
onChange: (e) => field.onChange(e.target.value ? Number(e.target.value) : UNSET_TIMEOUT),
|
|
32790
|
+
disabled: runParamsLocked,
|
|
32791
|
+
endAdornment: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-secondary text-h6", children: "Seconds" }),
|
|
32792
|
+
error: showErrors ? _optionalChain([fieldState, 'access', _702 => _702.error, 'optionalAccess', _703 => _703.message]) : void 0,
|
|
32793
|
+
invalid: showErrors && !!fieldState.error
|
|
32794
|
+
}
|
|
32795
|
+
)
|
|
32796
|
+
)
|
|
32797
|
+
}
|
|
32798
|
+
)
|
|
32799
|
+
] }),
|
|
32800
|
+
dragAndDropEnabled && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32801
|
+
_chunk2QMBXGMQcjs.Button,
|
|
32802
|
+
{
|
|
32803
|
+
variant: "outline",
|
|
32804
|
+
size: "icon",
|
|
32805
|
+
onClick: onRemove,
|
|
32806
|
+
disabled: !canRemove || disabled,
|
|
32807
|
+
"aria-label": "Remove script from schedule",
|
|
32808
|
+
className: "text-ods-error disabled:opacity-30",
|
|
32809
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIYHH5EIOcjs.TrashIcon, { size: 20 })
|
|
32810
|
+
}
|
|
32811
|
+
)
|
|
32812
|
+
] })
|
|
32813
|
+
]
|
|
32814
|
+
}
|
|
32815
|
+
),
|
|
32816
|
+
!showParams ? null : isMdUp === false ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, Accordion, { type: "multiple", className: "overflow-hidden rounded-[6px] border border-ods-border", children: [
|
|
32817
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AccordionItem, { value: "args", className: "border-ods-border data-[state=closed]:bg-ods-card", children: [
|
|
32818
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionTrigger, { className: "h-14 px-[var(--spacing-system-sf)] py-0 text-ods-text-primary text-h6 hover:no-underline [&>svg]:text-ods-text-secondary", children: "Edit Default Script Arguments" }),
|
|
32819
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionContent, { className: "px-[var(--spacing-system-sf)] [&_label:empty]:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32820
|
+
_reacthookform.Controller,
|
|
32821
|
+
{
|
|
32822
|
+
name: `scripts.${index}.args`,
|
|
32823
|
+
control,
|
|
32824
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32825
|
+
ScriptArguments,
|
|
32826
|
+
{
|
|
32827
|
+
arguments: field.value,
|
|
32828
|
+
onArgumentsChange: field.onChange,
|
|
32829
|
+
keyPlaceholder: "Key",
|
|
32830
|
+
valuePlaceholder: "Enter Value (empty=flag)",
|
|
32831
|
+
addButtonLabel: "Add Script Argument",
|
|
32832
|
+
titleLabel: "",
|
|
32833
|
+
disabled: runParamsLocked
|
|
32834
|
+
}
|
|
32835
|
+
)
|
|
32836
|
+
}
|
|
32837
|
+
) })
|
|
32838
|
+
] }),
|
|
32839
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, AccordionItem, { value: "env", className: "border-b-0 border-ods-border data-[state=closed]:bg-ods-card", children: [
|
|
32840
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionTrigger, { className: "h-14 px-[var(--spacing-system-sf)] py-0 text-ods-text-primary text-h6 hover:no-underline [&>svg]:text-ods-text-secondary", children: "Edit Default Environment Vars" }),
|
|
32841
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, AccordionContent, { className: "px-[var(--spacing-system-sf)] [&_label:empty]:hidden", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32842
|
+
_reacthookform.Controller,
|
|
32843
|
+
{
|
|
32844
|
+
name: `scripts.${index}.envVars`,
|
|
32845
|
+
control,
|
|
32846
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32847
|
+
ScriptArguments,
|
|
32848
|
+
{
|
|
32849
|
+
arguments: field.value,
|
|
32850
|
+
onArgumentsChange: field.onChange,
|
|
32851
|
+
keyPlaceholder: "Key",
|
|
32852
|
+
valuePlaceholder: "Enter Value",
|
|
32853
|
+
addButtonLabel: "Add Environment Var",
|
|
32854
|
+
addSecretButtonLabel: "Add Secret",
|
|
32855
|
+
titleLabel: "",
|
|
32856
|
+
disabled: runParamsLocked
|
|
32857
|
+
}
|
|
32858
|
+
)
|
|
32859
|
+
}
|
|
32860
|
+
) })
|
|
32861
|
+
] })
|
|
32862
|
+
] }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col items-start gap-[var(--spacing-system-lf)] content-md:flex-row", children: [
|
|
32863
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full min-w-0 flex-1 [&_label]:text-h4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32864
|
+
_reacthookform.Controller,
|
|
32865
|
+
{
|
|
32866
|
+
name: `scripts.${index}.args`,
|
|
32867
|
+
control,
|
|
32868
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32869
|
+
ScriptArguments,
|
|
32870
|
+
{
|
|
32871
|
+
arguments: field.value,
|
|
32872
|
+
onArgumentsChange: field.onChange,
|
|
32873
|
+
keyPlaceholder: "Key",
|
|
32874
|
+
valuePlaceholder: "Enter Value (empty=flag)",
|
|
32875
|
+
addButtonLabel: "Add Script Argument",
|
|
32876
|
+
titleLabel: "Script Arguments",
|
|
32877
|
+
disabled: runParamsLocked
|
|
32878
|
+
}
|
|
32879
|
+
)
|
|
32880
|
+
}
|
|
32881
|
+
) }),
|
|
32882
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full min-w-0 flex-1 [&_label]:text-h4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32883
|
+
_reacthookform.Controller,
|
|
32884
|
+
{
|
|
32885
|
+
name: `scripts.${index}.envVars`,
|
|
32886
|
+
control,
|
|
32887
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32888
|
+
ScriptArguments,
|
|
32889
|
+
{
|
|
32890
|
+
arguments: field.value,
|
|
32891
|
+
onArgumentsChange: field.onChange,
|
|
32892
|
+
keyPlaceholder: "Key",
|
|
32893
|
+
valuePlaceholder: "Enter Value",
|
|
32894
|
+
addButtonLabel: "Add Environment Var",
|
|
32895
|
+
addSecretButtonLabel: "Add Secret",
|
|
32896
|
+
titleLabel: "Environment Vars",
|
|
32897
|
+
disabled: runParamsLocked
|
|
32898
|
+
}
|
|
32899
|
+
)
|
|
32900
|
+
}
|
|
32901
|
+
) })
|
|
32902
|
+
] })
|
|
32903
|
+
]
|
|
32904
|
+
}
|
|
32905
|
+
);
|
|
32906
|
+
}
|
|
32907
|
+
|
|
32908
|
+
// src/components/features/scripts/schedule-form/schedule-scripts-field.tsx
|
|
32909
|
+
|
|
32910
|
+
function ScheduleScriptsField({
|
|
32911
|
+
showErrors,
|
|
32912
|
+
disabled = false,
|
|
32913
|
+
renderScriptSearch,
|
|
32914
|
+
showHeading = true,
|
|
32915
|
+
showScriptParams = true,
|
|
32916
|
+
addScripts = true
|
|
32917
|
+
}) {
|
|
32918
|
+
const { control, getValues } = _reacthookform.useFormContext.call(void 0, );
|
|
32919
|
+
const { fields, append, remove, move } = _reacthookform.useFieldArray.call(void 0, { control, name: "scripts" });
|
|
32920
|
+
const supportedPlatforms = _reacthookform.useWatch.call(void 0, { control, name: "supportedPlatforms" });
|
|
32921
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-lf)]", children: [
|
|
32922
|
+
showHeading && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-[72px] items-end pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-ods-text-primary text-h2", children: "Scheduled Scripts" }) }),
|
|
32923
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32924
|
+
SortableList,
|
|
32925
|
+
{
|
|
32926
|
+
onReorder: move,
|
|
32927
|
+
disabled,
|
|
32928
|
+
getItemLabel: (index) => getValues(`scripts.${index}.name`) || `script ${index + 1}`,
|
|
32929
|
+
className: "flex flex-col gap-[var(--spacing-system-lf)]",
|
|
32930
|
+
children: fields.map((field, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32931
|
+
ScheduleScriptPickerCard,
|
|
32932
|
+
{
|
|
32933
|
+
index,
|
|
32934
|
+
count: fields.length,
|
|
32935
|
+
supportedPlatforms,
|
|
32936
|
+
renderScriptSearch,
|
|
32937
|
+
onRemove: () => remove(index),
|
|
32938
|
+
canRemove: fields.length > 1,
|
|
32939
|
+
disabled,
|
|
32940
|
+
showErrors,
|
|
32941
|
+
showParams: showScriptParams
|
|
32942
|
+
},
|
|
32943
|
+
field.id
|
|
32944
|
+
))
|
|
32945
|
+
}
|
|
32946
|
+
),
|
|
32947
|
+
addScripts && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32948
|
+
_chunk2QMBXGMQcjs.Button,
|
|
32949
|
+
{
|
|
32950
|
+
type: "button",
|
|
32951
|
+
variant: "outline",
|
|
32952
|
+
size: "small",
|
|
32953
|
+
onClick: () => append(EMPTY_SCHEDULE_SCRIPT_ROW),
|
|
32954
|
+
disabled,
|
|
32955
|
+
className: "self-start",
|
|
32956
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEETTUAAFcjs.PlusCircleIcon, { className: "text-ods-text-secondary" }),
|
|
32957
|
+
children: "Add Script"
|
|
32958
|
+
}
|
|
32959
|
+
)
|
|
32960
|
+
] });
|
|
32961
|
+
}
|
|
32962
|
+
|
|
32963
|
+
// src/components/features/scripts/schedule-form/schedule-timing-fields.tsx
|
|
32964
|
+
|
|
32965
|
+
|
|
32966
|
+
|
|
32967
|
+
function ScheduleTimingFields({
|
|
32968
|
+
showErrors,
|
|
32969
|
+
disabled = false,
|
|
32970
|
+
timeReferenceGate = "off",
|
|
32971
|
+
getTimeSlots = getTimeSlotOptions
|
|
32972
|
+
}) {
|
|
32973
|
+
const { control, getValues, setValue, trigger: triggerValidation } = _reacthookform.useFormContext.call(void 0, );
|
|
32974
|
+
const showTimeReference = timeReferenceGate === "on";
|
|
32975
|
+
const fieldsDisabled = disabled || timeReferenceGate === "loading";
|
|
32976
|
+
const recheckReconnectWindow = _react.useCallback.call(void 0, () => {
|
|
32977
|
+
if (showErrors) void triggerValidation("reconnectInterval");
|
|
32978
|
+
}, [showErrors, triggerValidation]);
|
|
32979
|
+
const trigger = _reacthookform.useWatch.call(void 0, { control, name: "trigger" });
|
|
32980
|
+
const repeatEnabled = _reacthookform.useWatch.call(void 0, { control, name: "repeatEnabled" });
|
|
32981
|
+
const repeatUnit = _reacthookform.useWatch.call(void 0, { control, name: "repeatUnit" });
|
|
32982
|
+
const scheduledDate = _reacthookform.useWatch.call(void 0, { control, name: "scheduledDate" });
|
|
32983
|
+
const scheduledTime = _reacthookform.useWatch.call(void 0, { control, name: "scheduledTime" });
|
|
32984
|
+
const timeReference = _reacthookform.useWatch.call(void 0, { control, name: "timeReference" });
|
|
32985
|
+
const eventDriven = isEventTrigger(trigger);
|
|
32986
|
+
const intervalStep = repeatUnit === "minute" ? MIN_REPEAT_MINUTES : 1;
|
|
32987
|
+
const timeSlots = _react.useMemo.call(void 0, () => {
|
|
32988
|
+
const slots = getTimeSlots(scheduledDate, timeReference);
|
|
32989
|
+
if (!scheduledTime || slots.some((slot) => slot.value === scheduledTime)) return slots;
|
|
32990
|
+
return [{ value: scheduledTime, label: slotToLabel(scheduledTime) }, ...slots];
|
|
32991
|
+
}, [getTimeSlots, scheduledDate, scheduledTime, timeReference]);
|
|
32992
|
+
const minDate = _react.useMemo.call(void 0, () => earliestScheduleDay(timeReference), [timeReference]);
|
|
32993
|
+
const handleDateChange = _react.useCallback.call(void 0,
|
|
32994
|
+
(onChange, date) => {
|
|
32995
|
+
onChange(date);
|
|
32996
|
+
const time = getValues("scheduledTime");
|
|
32997
|
+
if (date && time && date >= minDate && isScheduleStartInPast(date, time, getValues("timeReference")))
|
|
32998
|
+
setValue("scheduledTime", "");
|
|
32999
|
+
},
|
|
33000
|
+
[getValues, setValue, minDate]
|
|
33001
|
+
);
|
|
33002
|
+
const handleTimeReferenceChange = _react.useCallback.call(void 0,
|
|
33003
|
+
(onChange, next) => {
|
|
33004
|
+
onChange(next);
|
|
33005
|
+
const time = getValues("scheduledTime");
|
|
33006
|
+
if (time && !isSlotOnGrid(time, next)) setValue("scheduledTime", "");
|
|
33007
|
+
},
|
|
33008
|
+
[getValues, setValue]
|
|
33009
|
+
);
|
|
33010
|
+
const startAtStored = _reacthookform.useWatch.call(void 0, { control, name: "startAtStored" });
|
|
33011
|
+
const startsInPast = !eventDriven && isStartInPastAndChanged(scheduledDate, scheduledTime, startAtStored, timeReference);
|
|
33012
|
+
const pastDateError = startsInPast && scheduledDate && scheduledDate < minDate ? PAST_START_MESSAGE : void 0;
|
|
33013
|
+
const pastTimeError = startsInPast && !pastDateError ? PAST_START_MESSAGE : void 0;
|
|
33014
|
+
const noSlotsLeftToday = !eventDriven && timeSlots.length === 0;
|
|
33015
|
+
const dateError = _nullishCoalesce(pastDateError, () => ( (noSlotsLeftToday ? NO_SLOTS_TODAY_MESSAGE : void 0)));
|
|
33016
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33017
|
+
"div",
|
|
33018
|
+
{
|
|
33019
|
+
inert: eventDriven,
|
|
33020
|
+
style: {
|
|
33021
|
+
gridTemplateRows: eventDriven ? "0fr" : "1fr",
|
|
33022
|
+
opacity: eventDriven ? 0 : 1
|
|
33023
|
+
},
|
|
33024
|
+
className: "mb-[calc(-1*var(--spacing-system-lf))] grid transition-[grid-template-rows,opacity] duration-200 ease-out motion-reduce:transition-none",
|
|
33025
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-0 overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-[var(--spacing-system-lf)] pb-[var(--spacing-system-lf)] content-md:grid-cols-4 content-md:items-end", children: [
|
|
33026
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33027
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Date" }),
|
|
33028
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33029
|
+
_reacthookform.Controller,
|
|
33030
|
+
{
|
|
33031
|
+
name: "scheduledDate",
|
|
33032
|
+
control,
|
|
33033
|
+
render: ({ field, fieldState }) => (
|
|
33034
|
+
// The core picker has no clear affordance, so the design's xmark
|
|
33035
|
+
// rides on top of the trigger's free right edge.
|
|
33036
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative", children: [
|
|
33037
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33038
|
+
DatePickerInputSimple,
|
|
33039
|
+
{
|
|
33040
|
+
placeholder: "Select date",
|
|
33041
|
+
value: _nullishCoalesce(field.value, () => ( void 0)),
|
|
33042
|
+
onChange: (date) => handleDateChange(field.onChange, _nullishCoalesce(date, () => ( null))),
|
|
33043
|
+
fromDate: minDate,
|
|
33044
|
+
disabled: fieldsDisabled,
|
|
33045
|
+
className: "w-full",
|
|
33046
|
+
error: _nullishCoalesce(dateError, () => ( (showErrors ? _optionalChain([fieldState, 'access', _704 => _704.error, 'optionalAccess', _705 => _705.message]) : void 0))),
|
|
33047
|
+
invalid: !!dateError || showErrors && !!fieldState.error
|
|
33048
|
+
}
|
|
33049
|
+
),
|
|
33050
|
+
field.value && !fieldsDisabled && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33051
|
+
"button",
|
|
33052
|
+
{
|
|
33053
|
+
type: "button",
|
|
33054
|
+
onClick: () => field.onChange(null),
|
|
33055
|
+
"aria-label": "Clear date",
|
|
33056
|
+
className: "absolute right-3 top-6 -translate-y-1/2 text-ods-text-secondary hover:text-ods-text-primary",
|
|
33057
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRUHKTWGBcjs.XmarkCircleIcon, { size: 24 })
|
|
33058
|
+
}
|
|
33059
|
+
)
|
|
33060
|
+
] })
|
|
33061
|
+
)
|
|
33062
|
+
}
|
|
33063
|
+
)
|
|
33064
|
+
] }),
|
|
33065
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33066
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Time" }),
|
|
33067
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33068
|
+
_reacthookform.Controller,
|
|
33069
|
+
{
|
|
33070
|
+
name: "scheduledTime",
|
|
33071
|
+
control,
|
|
33072
|
+
render: ({ field, fieldState }) => (
|
|
33073
|
+
// `''` reads as "no selection" to Radix, so the placeholder shows
|
|
33074
|
+
// until a slot is picked — a date at midnight no longer
|
|
33075
|
+
// masquerades as a chosen 12:00 AM.
|
|
33076
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDSVNFRY5cjs.Select, { value: field.value, onValueChange: field.onChange, disabled: fieldsDisabled, children: [
|
|
33077
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33078
|
+
_chunkDSVNFRY5cjs.SelectTrigger,
|
|
33079
|
+
{
|
|
33080
|
+
className: "w-full",
|
|
33081
|
+
error: _nullishCoalesce(pastTimeError, () => ( (showErrors ? _optionalChain([fieldState, 'access', _706 => _706.error, 'optionalAccess', _707 => _707.message]) : void 0))),
|
|
33082
|
+
invalid: !!pastTimeError || showErrors && !!fieldState.error,
|
|
33083
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectValue, { placeholder: "Select time" })
|
|
33084
|
+
}
|
|
33085
|
+
),
|
|
33086
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectContent, { children: timeSlots.length === 0 ? (
|
|
33087
|
+
// Deliberately NOT a `SelectItem` — there is nothing here
|
|
33088
|
+
// to select, and a selectable row would put a bogus value
|
|
33089
|
+
// in the form. It replaces a popup that opened blank; the
|
|
33090
|
+
// Date field carries the same sentence for whoever never
|
|
33091
|
+
// opens this one.
|
|
33092
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "px-4 py-[var(--spacing-system-sf)] text-ods-text-secondary text-h6", children: NO_SLOTS_TODAY_MESSAGE })
|
|
33093
|
+
) : timeSlots.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
33094
|
+
] })
|
|
33095
|
+
)
|
|
33096
|
+
}
|
|
33097
|
+
)
|
|
33098
|
+
] }),
|
|
33099
|
+
showTimeReference && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33100
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Timezone" }),
|
|
33101
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33102
|
+
_reacthookform.Controller,
|
|
33103
|
+
{
|
|
33104
|
+
name: "timeReference",
|
|
33105
|
+
control,
|
|
33106
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33107
|
+
_chunkDSVNFRY5cjs.Select,
|
|
33108
|
+
{
|
|
33109
|
+
value: field.value,
|
|
33110
|
+
onValueChange: (next) => handleTimeReferenceChange(field.onChange, next),
|
|
33111
|
+
disabled: fieldsDisabled,
|
|
33112
|
+
children: [
|
|
33113
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectTrigger, { className: "w-full", "aria-label": "Timezone", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectValue, {}) }),
|
|
33114
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectContent, { children: SCHEDULE_TIME_REFERENCE_OPTIONS.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
33115
|
+
]
|
|
33116
|
+
}
|
|
33117
|
+
)
|
|
33118
|
+
}
|
|
33119
|
+
)
|
|
33120
|
+
] }),
|
|
33121
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "min-w-0", showTimeReference && "content-md:col-start-1"), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33122
|
+
_reacthookform.Controller,
|
|
33123
|
+
{
|
|
33124
|
+
name: "repeatEnabled",
|
|
33125
|
+
control,
|
|
33126
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33127
|
+
CheckboxBlock,
|
|
33128
|
+
{
|
|
33129
|
+
label: "Repeat Script Run",
|
|
33130
|
+
checked: field.value,
|
|
33131
|
+
onCheckedChange: (next) => {
|
|
33132
|
+
field.onChange(next);
|
|
33133
|
+
recheckReconnectWindow();
|
|
33134
|
+
},
|
|
33135
|
+
disabled: fieldsDisabled,
|
|
33136
|
+
className: "w-full"
|
|
33137
|
+
}
|
|
33138
|
+
)
|
|
33139
|
+
}
|
|
33140
|
+
) }),
|
|
33141
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-end gap-[var(--spacing-system-xs)]", children: [
|
|
33142
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33143
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Repeat in" }),
|
|
33144
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33145
|
+
_reacthookform.Controller,
|
|
33146
|
+
{
|
|
33147
|
+
name: "repeatInterval",
|
|
33148
|
+
control,
|
|
33149
|
+
render: ({ field, fieldState }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33150
|
+
ScheduleIntervalInput,
|
|
33151
|
+
{
|
|
33152
|
+
min: intervalStep,
|
|
33153
|
+
className: "w-full",
|
|
33154
|
+
value: field.value,
|
|
33155
|
+
onChange: field.onChange,
|
|
33156
|
+
onBlur: () => {
|
|
33157
|
+
field.onBlur();
|
|
33158
|
+
recheckReconnectWindow();
|
|
33159
|
+
},
|
|
33160
|
+
disabled: fieldsDisabled || !repeatEnabled,
|
|
33161
|
+
error: showErrors ? _optionalChain([fieldState, 'access', _708 => _708.error, 'optionalAccess', _709 => _709.message]) : void 0,
|
|
33162
|
+
invalid: showErrors && !!fieldState.error
|
|
33163
|
+
}
|
|
33164
|
+
)
|
|
33165
|
+
}
|
|
33166
|
+
)
|
|
33167
|
+
] }),
|
|
33168
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33169
|
+
_reacthookform.Controller,
|
|
33170
|
+
{
|
|
33171
|
+
name: "repeatUnit",
|
|
33172
|
+
control,
|
|
33173
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33174
|
+
_chunkDSVNFRY5cjs.Select,
|
|
33175
|
+
{
|
|
33176
|
+
value: field.value,
|
|
33177
|
+
onValueChange: (next) => {
|
|
33178
|
+
field.onChange(next);
|
|
33179
|
+
const snapped = snapRepeatInterval(getValues("repeatInterval"), next);
|
|
33180
|
+
if (snapped !== getValues("repeatInterval")) setValue("repeatInterval", snapped);
|
|
33181
|
+
recheckReconnectWindow();
|
|
33182
|
+
},
|
|
33183
|
+
disabled: fieldsDisabled || !repeatEnabled,
|
|
33184
|
+
children: [
|
|
33185
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectTrigger, { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectValue, {}) }),
|
|
33186
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectContent, { children: DURATION_UNIT_OPTIONS.map((opt) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.SelectItem, { value: opt.value, children: opt.label }, opt.value)) })
|
|
33187
|
+
]
|
|
33188
|
+
}
|
|
33189
|
+
)
|
|
33190
|
+
}
|
|
33191
|
+
) })
|
|
33192
|
+
] })
|
|
33193
|
+
] }) })
|
|
33194
|
+
}
|
|
33195
|
+
);
|
|
33196
|
+
}
|
|
33197
|
+
|
|
33198
|
+
// src/components/features/scripts/schedule-form/schedule-form-fields.tsx
|
|
33199
|
+
|
|
33200
|
+
function ScheduleFormFields({
|
|
33201
|
+
showErrors,
|
|
33202
|
+
disabled = false,
|
|
33203
|
+
renderScriptSearch,
|
|
33204
|
+
timeReferenceGate = "off",
|
|
33205
|
+
platforms = _chunkCWRVTQUOcjs.OS_PLATFORMS,
|
|
33206
|
+
comingSoonPlatforms = [],
|
|
33207
|
+
getTimeSlots,
|
|
33208
|
+
nameLayout = "stacked",
|
|
33209
|
+
showNote = true,
|
|
33210
|
+
showTrigger = true,
|
|
33211
|
+
showPlatforms = true,
|
|
33212
|
+
showOfflineBehavior = true,
|
|
33213
|
+
showScriptsHeading = true,
|
|
33214
|
+
showScriptParams = true,
|
|
33215
|
+
addScripts = true
|
|
33216
|
+
}) {
|
|
33217
|
+
const { control, formState, getValues, setValue } = _reacthookform.useFormContext.call(void 0, );
|
|
33218
|
+
const isMdUp = _chunkGVTDVS5Ucjs.useContentMdUp.call(void 0, );
|
|
33219
|
+
const supportedPlatforms = _reacthookform.useWatch.call(void 0, { control, name: "supportedPlatforms" });
|
|
33220
|
+
const togglePlatform = _react.useCallback.call(void 0,
|
|
33221
|
+
(platform) => {
|
|
33222
|
+
const current = getValues("supportedPlatforms");
|
|
33223
|
+
const has = current.includes(platform);
|
|
33224
|
+
setValue("supportedPlatforms", has ? current.filter((p) => p !== platform) : [...current, platform], {
|
|
33225
|
+
shouldValidate: true,
|
|
33226
|
+
shouldDirty: true
|
|
33227
|
+
});
|
|
33228
|
+
},
|
|
33229
|
+
[getValues, setValue]
|
|
33230
|
+
);
|
|
33231
|
+
const nameField = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33232
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Schedule Name" }),
|
|
33233
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33234
|
+
_reacthookform.Controller,
|
|
33235
|
+
{
|
|
33236
|
+
name: "name",
|
|
33237
|
+
control,
|
|
33238
|
+
render: ({ field, fieldState }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33239
|
+
_chunkHTRILBJDcjs.Input,
|
|
33240
|
+
{
|
|
33241
|
+
placeholder: "Enter schedule name",
|
|
33242
|
+
value: field.value,
|
|
33243
|
+
onChange: field.onChange,
|
|
33244
|
+
disabled,
|
|
33245
|
+
className: "w-full",
|
|
33246
|
+
error: showErrors ? _optionalChain([fieldState, 'access', _710 => _710.error, 'optionalAccess', _711 => _711.message]) : void 0,
|
|
33247
|
+
invalid: showErrors && !!fieldState.error
|
|
33248
|
+
}
|
|
33249
|
+
)
|
|
33250
|
+
}
|
|
33251
|
+
)
|
|
33252
|
+
] });
|
|
33253
|
+
const platformField = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33254
|
+
"div",
|
|
33255
|
+
{
|
|
33256
|
+
className: "relative flex flex-col gap-[var(--spacing-system-xxs)]",
|
|
33257
|
+
"data-invalid": showErrors && !!formState.errors.supportedPlatforms || void 0,
|
|
33258
|
+
children: [
|
|
33259
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Supported Platform" }),
|
|
33260
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "grid grid-cols-2 gap-[var(--spacing-system-mf)] content-md:grid-cols-4", children: platforms.map((platform) => {
|
|
33261
|
+
const comingSoon = comingSoonPlatforms.includes(platform.id);
|
|
33262
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33263
|
+
SelectButton,
|
|
33264
|
+
{
|
|
33265
|
+
title: platform.name,
|
|
33266
|
+
icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, platform.icon, { className: "h-5 w-5" }),
|
|
33267
|
+
selected: !comingSoon && supportedPlatforms.includes(platform.id),
|
|
33268
|
+
disabled: comingSoon || disabled,
|
|
33269
|
+
tag: comingSoon ? isMdUp ? "Coming Soon" : "Soon" : void 0,
|
|
33270
|
+
onClick: comingSoon || disabled ? void 0 : () => togglePlatform(platform.id)
|
|
33271
|
+
},
|
|
33272
|
+
platform.id
|
|
33273
|
+
);
|
|
33274
|
+
}) }),
|
|
33275
|
+
showErrors && formState.errors.supportedPlatforms && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "absolute bottom-0 left-0 right-0 translate-y-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", className: "text-ods-error", children: _nullishCoalesce(formState.errors.supportedPlatforms.message, () => ( "")) }) })
|
|
33276
|
+
]
|
|
33277
|
+
}
|
|
33278
|
+
);
|
|
33279
|
+
const timingFields = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33280
|
+
ScheduleTimingFields,
|
|
33281
|
+
{
|
|
33282
|
+
showErrors,
|
|
33283
|
+
disabled,
|
|
33284
|
+
timeReferenceGate,
|
|
33285
|
+
getTimeSlots
|
|
33286
|
+
}
|
|
33287
|
+
);
|
|
33288
|
+
const nameInline = nameLayout === "inline";
|
|
33289
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-lf)]", children: [
|
|
33290
|
+
nameInline ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-lf)] content-md:flex-row content-md:items-start", children: [
|
|
33291
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 content-md:flex-1", children: nameField }),
|
|
33292
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0 content-md:flex-[3]", children: timingFields })
|
|
33293
|
+
] }) : nameField,
|
|
33294
|
+
showNote && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-[var(--spacing-system-xxs)]", children: [
|
|
33295
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Note" }),
|
|
33296
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33297
|
+
_reacthookform.Controller,
|
|
33298
|
+
{
|
|
33299
|
+
name: "description",
|
|
33300
|
+
control,
|
|
33301
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33302
|
+
Textarea,
|
|
33303
|
+
{
|
|
33304
|
+
placeholder: "Enter note here (optional)",
|
|
33305
|
+
value: field.value,
|
|
33306
|
+
onChange: field.onChange,
|
|
33307
|
+
disabled,
|
|
33308
|
+
className: "min-h-[96px] w-full"
|
|
33309
|
+
}
|
|
33310
|
+
)
|
|
33311
|
+
}
|
|
33312
|
+
)
|
|
33313
|
+
] }),
|
|
33314
|
+
showTrigger && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33315
|
+
_reacthookform.Controller,
|
|
33316
|
+
{
|
|
33317
|
+
name: "trigger",
|
|
33318
|
+
control,
|
|
33319
|
+
render: ({ field }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33320
|
+
RadioGroupBlock,
|
|
33321
|
+
{
|
|
33322
|
+
variant: "grouped",
|
|
33323
|
+
value: field.value,
|
|
33324
|
+
onValueChange: field.onChange,
|
|
33325
|
+
disabled,
|
|
33326
|
+
options: SCHEDULE_TRIGGER_OPTIONS
|
|
33327
|
+
}
|
|
33328
|
+
)
|
|
33329
|
+
}
|
|
33330
|
+
),
|
|
33331
|
+
showPlatforms && platformField,
|
|
33332
|
+
!nameInline && timingFields,
|
|
33333
|
+
showOfflineBehavior && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScheduleOfflineFields, { showErrors, disabled }),
|
|
33334
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33335
|
+
ScheduleScriptsField,
|
|
33336
|
+
{
|
|
33337
|
+
showErrors,
|
|
33338
|
+
disabled,
|
|
33339
|
+
renderScriptSearch,
|
|
33340
|
+
showHeading: showScriptsHeading,
|
|
33341
|
+
showScriptParams,
|
|
33342
|
+
addScripts
|
|
33343
|
+
}
|
|
33344
|
+
)
|
|
33345
|
+
] });
|
|
33346
|
+
}
|
|
33347
|
+
|
|
33348
|
+
// src/components/features/scripts/schedule-form/schedule-script-search-field.tsx
|
|
33349
|
+
|
|
33350
|
+
function ScriptPlatformIcons({ platforms }) {
|
|
33351
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "inline-flex shrink-0 items-center gap-0.5", children: _chunkCWRVTQUOcjs.OS_PLATFORMS.filter((p) => platforms.includes(p.id)).map((p) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, p.icon, { className: "h-3.5 w-3.5 text-ods-text-secondary opacity-60" }, p.id)) });
|
|
33352
|
+
}
|
|
33353
|
+
function ScheduleScriptSearchField({
|
|
33354
|
+
scriptId,
|
|
33355
|
+
name,
|
|
33356
|
+
scripts,
|
|
33357
|
+
isLoading = false,
|
|
33358
|
+
inputValue = "",
|
|
33359
|
+
onInputChange,
|
|
33360
|
+
onOpen,
|
|
33361
|
+
onClose,
|
|
33362
|
+
onChange,
|
|
33363
|
+
disabled = false,
|
|
33364
|
+
error,
|
|
33365
|
+
invalid = false
|
|
33366
|
+
}) {
|
|
33367
|
+
const handleBlur = (e) => {
|
|
33368
|
+
if (!e.currentTarget.contains(e.relatedTarget)) _optionalChain([onClose, 'optionalCall', _712 => _712()]);
|
|
33369
|
+
};
|
|
33370
|
+
const options = scripts.map((s) => ({ label: s.name, value: s.id }));
|
|
33371
|
+
if (scriptId && !options.some((o) => o.value === scriptId)) {
|
|
33372
|
+
options.unshift({ label: name, value: scriptId });
|
|
33373
|
+
}
|
|
33374
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-[var(--spacing-system-xxs)]", onFocus: onOpen, onBlur: handleBlur, children: [
|
|
33375
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkK6VWTUCHcjs.Label, { className: "text-h4", children: "Select Script" }),
|
|
33376
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33377
|
+
_chunkDSVNFRY5cjs.Autocomplete,
|
|
33378
|
+
{
|
|
33379
|
+
options,
|
|
33380
|
+
value: scriptId || null,
|
|
33381
|
+
onChange,
|
|
33382
|
+
placeholder: "Select a script...",
|
|
33383
|
+
disableClientFilter: true,
|
|
33384
|
+
onInputChange,
|
|
33385
|
+
loading: isLoading,
|
|
33386
|
+
loadingText: "Searching scripts...",
|
|
33387
|
+
noOptionsText: inputValue ? "No scripts match your search" : "No scripts available",
|
|
33388
|
+
disabled,
|
|
33389
|
+
error,
|
|
33390
|
+
invalid,
|
|
33391
|
+
renderOption: (option, isSelected) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "span", { className: "flex w-full min-w-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33392
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "min-w-0 flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { className: isSelected ? "text-ods-accent" : void 0, children: option.label }) }),
|
|
33393
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ScriptPlatformIcons, { platforms: _nullishCoalesce(_optionalChain([scripts, 'access', _713 => _713.find, 'call', _714 => _714((s) => s.id === option.value), 'optionalAccess', _715 => _715.supportedPlatforms]), () => ( [])) })
|
|
33394
|
+
] })
|
|
33395
|
+
}
|
|
33396
|
+
)
|
|
33397
|
+
] });
|
|
33398
|
+
}
|
|
33399
|
+
|
|
33400
|
+
// src/components/features/knowledge-base/knowledge-base-item-icon.ts
|
|
33401
|
+
var KNOWLEDGE_BASE_ITEM_ICON = {
|
|
33402
|
+
ARTICLE: _chunkAGGRYMOJcjs.BookTextIcon,
|
|
33403
|
+
FOLDER: _chunkQ6Z5Z3C4cjs.FolderIcon
|
|
33404
|
+
};
|
|
33405
|
+
|
|
33406
|
+
// src/components/features/knowledge-base/knowledge-base-table.tsx
|
|
33407
|
+
|
|
33408
|
+
|
|
33409
|
+
// src/components/features/knowledge-base/knowledge-base-status.ts
|
|
33410
|
+
var KNOWLEDGE_BASE_STATUS_VARIANT = {
|
|
33411
|
+
PUBLISHED: "success",
|
|
33412
|
+
DRAFT: "warning",
|
|
33413
|
+
ARCHIVED: "grey"
|
|
33414
|
+
};
|
|
33415
|
+
|
|
33416
|
+
// src/components/features/knowledge-base/knowledge-base-table.tsx
|
|
33417
|
+
|
|
33418
|
+
function getKnowledgeBaseOpenColumn(getHref) {
|
|
33419
|
+
return {
|
|
33420
|
+
id: "open",
|
|
33421
|
+
cell: ({ row }) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { "data-no-row-click": true, className: "pointer-events-auto flex items-center justify-end", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33422
|
+
_chunk2QMBXGMQcjs.Button,
|
|
33423
|
+
{
|
|
33424
|
+
onClick: _chunkCWRVTQUOcjs.openInNewTab.call(void 0, getHref(row.original)),
|
|
33425
|
+
variant: "outline",
|
|
33426
|
+
size: "icon",
|
|
33427
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkANTDIQKKcjs.ArrowRightUpIcon, { className: "h-5 w-5" }),
|
|
33428
|
+
"aria-label": "Open in new tab",
|
|
33429
|
+
className: "bg-ods-card"
|
|
33430
|
+
}
|
|
33431
|
+
) }),
|
|
33432
|
+
enableSorting: false,
|
|
33433
|
+
meta: { width: "w-12 shrink-0 flex-none", hideAt: "md", align: "right" }
|
|
33434
|
+
};
|
|
33435
|
+
}
|
|
33436
|
+
function getKnowledgeBaseColumns(mode) {
|
|
33437
|
+
return [
|
|
33438
|
+
{
|
|
33439
|
+
accessorKey: "name",
|
|
33440
|
+
header: "Name",
|
|
33441
|
+
cell: ({ row }) => {
|
|
33442
|
+
const item = row.original;
|
|
33443
|
+
const Icon = item.type === "FOLDER" ? KNOWLEDGE_BASE_ITEM_ICON.FOLDER : KNOWLEDGE_BASE_ITEM_ICON.ARTICLE;
|
|
33444
|
+
const status = item.status;
|
|
33445
|
+
const tagStatus = status === "DRAFT" || status === "ARCHIVED" ? status : null;
|
|
33446
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "relative box-border flex h-20 w-full shrink-0 content-stretch items-center justify-start gap-[var(--spacing-system-m)] py-0", children: [
|
|
33447
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "relative flex h-8 w-8 shrink-0 items-center justify-center rounded-[6px] border border-ods-border", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, Icon, { size: 16, className: "shrink-0 text-ods-text-secondary" }) }),
|
|
33448
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
33449
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33450
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-w-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: item.name }) }),
|
|
33451
|
+
tagStatus && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33452
|
+
_chunk7ZFCR7UYcjs.Tag,
|
|
33453
|
+
{
|
|
33454
|
+
variant: KNOWLEDGE_BASE_STATUS_VARIANT[tagStatus],
|
|
33455
|
+
label: tagStatus,
|
|
33456
|
+
className: "shrink-0"
|
|
33457
|
+
}
|
|
33458
|
+
)
|
|
33459
|
+
] }),
|
|
33460
|
+
item.type === "ARTICLE" && item.summary && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { variant: "h6", tone: "secondary", children: item.summary })
|
|
33461
|
+
] })
|
|
33462
|
+
] });
|
|
33463
|
+
},
|
|
33464
|
+
enableSorting: false,
|
|
33465
|
+
meta: { width: "flex-1 min-w-0" }
|
|
33466
|
+
},
|
|
33467
|
+
{
|
|
33468
|
+
accessorKey: mode === "archive" ? "updatedAt" : "createdAt",
|
|
33469
|
+
header: mode === "archive" ? "Archived" : "Created",
|
|
33470
|
+
cell: ({ row }) => {
|
|
33471
|
+
if (row.original.type !== "ARTICLE") return null;
|
|
33472
|
+
const ts = mode === "archive" ? _nullishCoalesce(row.original.updatedAt, () => ( row.original.createdAt)) : row.original.createdAt;
|
|
33473
|
+
if (!ts) return null;
|
|
33474
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col whitespace-nowrap", children: [
|
|
33475
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: _chunkPQ2M7P2Ucjs.formatDate.call(void 0, ts) }),
|
|
33476
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-heading-5 text-ods-text-secondary", children: _chunkPQ2M7P2Ucjs.formatTime.call(void 0, ts) })
|
|
33477
|
+
] });
|
|
33478
|
+
},
|
|
33479
|
+
enableSorting: false,
|
|
33480
|
+
meta: { width: "w-[140px]", hideAt: "lg" }
|
|
33481
|
+
}
|
|
33482
|
+
];
|
|
33483
|
+
}
|
|
33484
|
+
function KnowledgeBaseTableBody({
|
|
33485
|
+
items,
|
|
33486
|
+
getHref,
|
|
33487
|
+
mode = "standard",
|
|
33488
|
+
isLoading,
|
|
33489
|
+
emptyMessage = "No items found.",
|
|
33490
|
+
skeletonRows,
|
|
33491
|
+
stickyHeaderOffset,
|
|
33492
|
+
footerSlot,
|
|
33493
|
+
actionsColumn,
|
|
33494
|
+
totalCount,
|
|
33495
|
+
compact = false
|
|
33496
|
+
}) {
|
|
33497
|
+
const columns = _react.useMemo.call(void 0, () => {
|
|
33498
|
+
const base = getKnowledgeBaseColumns(mode);
|
|
33499
|
+
const leading = compact ? base.slice(0, 1) : base;
|
|
33500
|
+
const trailing = compact ? [] : [getKnowledgeBaseOpenColumn(getHref)];
|
|
33501
|
+
return actionsColumn ? [...leading, actionsColumn, ...trailing] : [...leading, ...trailing];
|
|
33502
|
+
}, [mode, actionsColumn, getHref, compact]);
|
|
33503
|
+
const table = useDataTable({
|
|
33504
|
+
data: items,
|
|
33505
|
+
columns,
|
|
33506
|
+
getRowId: (row) => row.id,
|
|
33507
|
+
enableSorting: false
|
|
33508
|
+
});
|
|
33509
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, DataTable, { table, children: [
|
|
33510
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33511
|
+
DataTable.Header,
|
|
33512
|
+
{
|
|
33513
|
+
stickyHeader: !!stickyHeaderOffset,
|
|
33514
|
+
stickyHeaderOffset,
|
|
33515
|
+
rightSlot: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DataTable.RowCount, { itemName: mode === "archive" ? "article" : "item", totalCount })
|
|
33516
|
+
}
|
|
33517
|
+
),
|
|
33518
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, DataTable.Body, { loading: isLoading, skeletonRows, emptyMessage, rowHref: getHref }),
|
|
33519
|
+
footerSlot
|
|
33520
|
+
] });
|
|
33521
|
+
}
|
|
33522
|
+
|
|
33523
|
+
// src/components/features/knowledge-base/knowledge-base-article-view.tsx
|
|
33524
|
+
|
|
33525
|
+
function KnowledgeBaseArticleView({
|
|
33526
|
+
title,
|
|
33527
|
+
onBack,
|
|
33528
|
+
actions,
|
|
33529
|
+
menuActions,
|
|
33530
|
+
tags = [],
|
|
33531
|
+
author,
|
|
33532
|
+
updatedLabel,
|
|
33533
|
+
status,
|
|
33534
|
+
content,
|
|
33535
|
+
attachments = [],
|
|
33536
|
+
children,
|
|
33537
|
+
className = "px-[var(--spacing-system-l)] pb-[var(--spacing-system-l)]"
|
|
33538
|
+
}) {
|
|
33539
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33540
|
+
_chunkDSVNFRY5cjs.PageLayout,
|
|
33541
|
+
{
|
|
33542
|
+
title,
|
|
33543
|
+
backButton: onBack ? { label: "Back", onClick: onBack } : void 0,
|
|
33544
|
+
actionsVariant: "menu-primary",
|
|
33545
|
+
actions,
|
|
33546
|
+
menuActions,
|
|
33547
|
+
className,
|
|
33548
|
+
children: [
|
|
33549
|
+
tags.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-wrap gap-[var(--spacing-system-xsf)]", children: tags.map((tag) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ZFCR7UYcjs.Tag, { label: tag.label, variant: "outline", className: "max-w-full" }, tag.id)) }),
|
|
33550
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.Card, { className: "border-ods-border px-[var(--spacing-system-mf)] py-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-2 gap-x-[var(--spacing-system-mf)] content-lg:grid-cols-3", children: [
|
|
33551
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 min-w-0 items-center gap-[var(--spacing-system-xsf)]", children: [
|
|
33552
|
+
author.deleted ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkO67V3HJRcjs.DeletedUserAvatar, { size: "md" }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33553
|
+
_chunk7ZFCR7UYcjs.SquareAvatar,
|
|
33554
|
+
{
|
|
33555
|
+
src: author.imageUrl,
|
|
33556
|
+
fallback: _nullishCoalesce(author.name, () => ( "A")),
|
|
33557
|
+
alt: _nullishCoalesce(author.name, () => ( "Author")),
|
|
33558
|
+
size: "md",
|
|
33559
|
+
variant: "round"
|
|
33560
|
+
}
|
|
33561
|
+
),
|
|
33562
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
33563
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { className: author.deleted ? "text-ods-error" : void 0, children: _nullishCoalesce(author.name, () => ( "Unknown")) }),
|
|
33564
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-heading-5 text-ods-text-secondary", children: "Author" })
|
|
33565
|
+
] })
|
|
33566
|
+
] }),
|
|
33567
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 min-w-0 flex-col justify-center", children: [
|
|
33568
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { children: updatedLabel }),
|
|
33569
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-heading-5 text-ods-text-secondary", children: "Updated" })
|
|
33570
|
+
] }),
|
|
33571
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33572
|
+
"div",
|
|
33573
|
+
{
|
|
33574
|
+
className: "col-span-2 -mx-[var(--spacing-system-mf)] border-t border-ods-border content-lg:hidden",
|
|
33575
|
+
"aria-hidden": true
|
|
33576
|
+
}
|
|
33577
|
+
),
|
|
33578
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex h-20 min-w-0 flex-col items-start justify-center gap-[var(--spacing-system-xxs)]", children: [
|
|
33579
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ZFCR7UYcjs.Tag, { variant: KNOWLEDGE_BASE_STATUS_VARIANT[status], label: status }),
|
|
33580
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "truncate text-heading-5 text-ods-text-secondary", children: "Status" })
|
|
33581
|
+
] })
|
|
33582
|
+
] }) }),
|
|
33583
|
+
content,
|
|
33584
|
+
attachments.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketDetailSection, { label: "Attachments", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TicketAttachmentsList, { attachments }) }),
|
|
33585
|
+
children
|
|
33586
|
+
]
|
|
33587
|
+
}
|
|
33588
|
+
);
|
|
33589
|
+
}
|
|
33590
|
+
|
|
33591
|
+
// src/components/features/sortable-list/sortable-drag-handle.tsx
|
|
33592
|
+
|
|
33593
|
+
function SortableDragHandle({ handleProps, label, className }) {
|
|
33594
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33595
|
+
_chunk2QMBXGMQcjs.Button,
|
|
33596
|
+
{
|
|
33597
|
+
type: "button",
|
|
33598
|
+
variant: "transparent",
|
|
33599
|
+
size: "icon-sm",
|
|
33600
|
+
"aria-label": label ? `Drag ${label} to reorder` : "Drag to reorder",
|
|
33601
|
+
...handleProps,
|
|
33602
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0 cursor-grab touch-none text-ods-text-secondary hover:text-ods-text-primary", className),
|
|
33603
|
+
leftIcon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkJAWIFYB2cjs.DraggerIcon, {})
|
|
33604
|
+
}
|
|
33605
|
+
);
|
|
33606
|
+
}
|
|
33607
|
+
|
|
31935
33608
|
// src/components/features/ticket-status-config-list/ticket-status-config-list.tsx
|
|
31936
33609
|
|
|
31937
33610
|
function TicketStatusConfigList({
|
|
@@ -31947,7 +33620,7 @@ function TicketStatusConfigList({
|
|
|
31947
33620
|
onReorder,
|
|
31948
33621
|
getItemLabel,
|
|
31949
33622
|
className: _chunk3ATAYP36cjs.cn.call(void 0, "flex w-full flex-col gap-[var(--spacing-system-xs)]", className),
|
|
31950
|
-
children: items.map((item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortableRow, { index, count: items.length, label: _optionalChain([getItemLabel, 'optionalCall',
|
|
33623
|
+
children: items.map((item, index) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SortableRow, { index, count: items.length, label: _optionalChain([getItemLabel, 'optionalCall', _716 => _716(index)]), children: (args) => renderRow(item, args) }, item.id))
|
|
31951
33624
|
}
|
|
31952
33625
|
);
|
|
31953
33626
|
}
|
|
@@ -31996,13 +33669,13 @@ function ConversationCard({
|
|
|
31996
33669
|
),
|
|
31997
33670
|
style: tint,
|
|
31998
33671
|
children: [
|
|
31999
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33672
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkCWRVTQUOcjs.ChatTurn, { avatar: requester.avatar, name: requester.name, meta: requester.meta, time: requester.time, children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "m-0 line-clamp-2 min-h-[2lh] text-ods-text-primary text-h3", title: request, children: [
|
|
32000
33673
|
"\u201C",
|
|
32001
33674
|
request,
|
|
32002
33675
|
"\u201D"
|
|
32003
33676
|
] }) }),
|
|
32004
33677
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
32005
|
-
|
|
33678
|
+
_chunkCWRVTQUOcjs.ChatTurn,
|
|
32006
33679
|
{
|
|
32007
33680
|
avatar: responder.avatar,
|
|
32008
33681
|
name: responder.name,
|
|
@@ -32033,7 +33706,6 @@ var PANEL_TOP_HEIGHT_CLASS = "h-[256px]";
|
|
|
32033
33706
|
var PANEL_SCREEN_HEIGHT_CLASS = "h-[420px]";
|
|
32034
33707
|
var PANEL_FOOTER_HEIGHT_CLASS = "h-[52px]";
|
|
32035
33708
|
var CARD_HEIGHT_CLASS = "h-[700px]";
|
|
32036
|
-
var SKELETON_HEIGHT_CLASS = "h-[700px] content-lg:h-[824px]";
|
|
32037
33709
|
var capabilityTabId = (id) => `${id}-tab`;
|
|
32038
33710
|
function Highlights({ items, className }) {
|
|
32039
33711
|
if (items.length === 0) return null;
|
|
@@ -32065,16 +33737,16 @@ function Example({
|
|
|
32065
33737
|
),
|
|
32066
33738
|
children: [
|
|
32067
33739
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 gap-2.5", children: [
|
|
32068
|
-
mark(_nullishCoalesce(_optionalChain([requester, 'optionalAccess',
|
|
33740
|
+
mark(_nullishCoalesce(_optionalChain([requester, 'optionalAccess', _717 => _717.mark]), () => ( requesterMark))),
|
|
32069
33741
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
32070
|
-
who(_nullishCoalesce(_optionalChain([requester, 'optionalAccess',
|
|
33742
|
+
who(_nullishCoalesce(_optionalChain([requester, 'optionalAccess', _718 => _718.name]), () => ( labels.requester)), _nullishCoalesce(_optionalChain([requester, 'optionalAccess', _719 => _719.note]), () => ( labels.requesterNote))),
|
|
32071
33743
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { lines: 2, variant: "h4", className: "min-h-[2lh]", children: `\u201C${example.request}\u201D` })
|
|
32072
33744
|
] })
|
|
32073
33745
|
] }),
|
|
32074
33746
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 gap-2.5 border-t border-ods-border pt-3", children: [
|
|
32075
|
-
mark(_nullishCoalesce(_optionalChain([responder, 'optionalAccess',
|
|
33747
|
+
mark(_nullishCoalesce(_optionalChain([responder, 'optionalAccess', _720 => _720.mark]), () => ( responderMark))),
|
|
32076
33748
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
32077
|
-
who(_nullishCoalesce(_optionalChain([responder, 'optionalAccess',
|
|
33749
|
+
who(_nullishCoalesce(_optionalChain([responder, 'optionalAccess', _721 => _721.name]), () => ( labels.responder)), _nullishCoalesce(_optionalChain([responder, 'optionalAccess', _722 => _722.note]), () => ( labels.responderNote))),
|
|
32078
33750
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-start gap-2", children: [
|
|
32079
33751
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkXIBCMGBWcjs.CheckIcon, { size: 16, className: "mt-0.5 shrink-0 text-ods-flamingo-cyan" }),
|
|
32080
33752
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDSVNFRY5cjs.TruncateText, { lines: 2, variant: "h6", tone: "secondary", className: "min-h-[2lh]", triggerClassName: "flex-1", children: example.outcome })
|
|
@@ -32085,10 +33757,118 @@ function Example({
|
|
|
32085
33757
|
}
|
|
32086
33758
|
);
|
|
32087
33759
|
}
|
|
32088
|
-
function
|
|
32089
|
-
return /* @__PURE__ */ _jsxruntime.
|
|
32090
|
-
|
|
32091
|
-
|
|
33760
|
+
function LineBar2({ line, width }) {
|
|
33761
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: line, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: _chunk3ATAYP36cjs.cn.call(void 0, "inline-block h-[0.7em] animate-pulse rounded bg-ods-border align-middle", width) }) });
|
|
33762
|
+
}
|
|
33763
|
+
function ExampleSkeleton({ className }) {
|
|
33764
|
+
const turn = (first) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex min-w-0 gap-2.5", !first && "border-t border-ods-border pt-3"), children: [
|
|
33765
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "size-6 shrink-0 rounded-full" }),
|
|
33766
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col gap-1", children: [
|
|
33767
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h6", width: "w-28" }),
|
|
33768
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-[2lh] text-h4", children: [
|
|
33769
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h4", width: "w-full" }),
|
|
33770
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h4", width: "w-2/3" })
|
|
33771
|
+
] })
|
|
33772
|
+
] })
|
|
33773
|
+
] });
|
|
33774
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33775
|
+
"div",
|
|
33776
|
+
{
|
|
33777
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
33778
|
+
"flex min-w-0 flex-col justify-center gap-3 overflow-hidden rounded-xl border border-ods-border bg-ods-bg px-[var(--spacing-system-mf)] py-[var(--spacing-system-sf)]",
|
|
33779
|
+
className
|
|
33780
|
+
),
|
|
33781
|
+
children: [
|
|
33782
|
+
turn(true),
|
|
33783
|
+
turn(false)
|
|
33784
|
+
]
|
|
33785
|
+
}
|
|
33786
|
+
);
|
|
33787
|
+
}
|
|
33788
|
+
function JobHeadSkeleton() {
|
|
33789
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
33790
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "size-9 shrink-0 rounded-lg" }),
|
|
33791
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
33792
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h4", width: "w-32" }),
|
|
33793
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-0.5", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h6", width: "w-40" }) })
|
|
33794
|
+
] })
|
|
33795
|
+
] });
|
|
33796
|
+
}
|
|
33797
|
+
function CapabilityExplorerSkeleton({ className, count = 8 }) {
|
|
33798
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className, "aria-hidden": true, children: [
|
|
33799
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "content-lg:hidden", children: [
|
|
33800
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex gap-[var(--spacing-system-sf)] overflow-hidden", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33801
|
+
"div",
|
|
33802
|
+
{
|
|
33803
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
33804
|
+
"flex min-w-0 shrink-0 basis-[86%] flex-col gap-[var(--spacing-system-sf)] overflow-hidden rounded-xl border border-ods-border bg-ods-card p-[var(--spacing-system-mf)]",
|
|
33805
|
+
CARD_HEIGHT_CLASS
|
|
33806
|
+
),
|
|
33807
|
+
children: [
|
|
33808
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-w-0 items-center gap-3", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, JobHeadSkeleton, {}) }),
|
|
33809
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-[3lh] text-h6", children: [
|
|
33810
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h6", width: "w-full" }),
|
|
33811
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h6", width: "w-5/6" })
|
|
33812
|
+
] }),
|
|
33813
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-[300px] shrink-0 rounded-lg" }),
|
|
33814
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExampleSkeleton, { className: "shrink-0" })
|
|
33815
|
+
]
|
|
33816
|
+
}
|
|
33817
|
+
) }),
|
|
33818
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, SnapCarouselControlsSkeleton, {})
|
|
33819
|
+
] }),
|
|
33820
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33821
|
+
"div",
|
|
33822
|
+
{
|
|
33823
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
33824
|
+
"hidden grid-cols-[minmax(0,360px)_minmax(0,1fr)] gap-[var(--spacing-system-lf)] content-lg:grid",
|
|
33825
|
+
PANEL_HEIGHT_CLASS
|
|
33826
|
+
),
|
|
33827
|
+
children: [
|
|
33828
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex min-h-0 flex-col gap-1 overflow-hidden", children: Array.from({ length: count }, (_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
33829
|
+
"div",
|
|
33830
|
+
{
|
|
33831
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
33832
|
+
"flex min-w-0 shrink-0 items-center gap-3.5 rounded-lg border px-3.5 py-3",
|
|
33833
|
+
i === 0 ? "border-ods-border bg-ods-card" : "border-transparent"
|
|
33834
|
+
),
|
|
33835
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, JobHeadSkeleton, {})
|
|
33836
|
+
},
|
|
33837
|
+
i
|
|
33838
|
+
)) }),
|
|
33839
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-h-0 min-w-0 flex-col gap-5 overflow-hidden rounded-xl border border-ods-border bg-ods-card px-8 py-7", children: [
|
|
33840
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "grid shrink-0 grid-cols-[minmax(0,1fr)_minmax(0,380px)] gap-8", PANEL_TOP_HEIGHT_CLASS), children: [
|
|
33841
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-col overflow-hidden", children: [
|
|
33842
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mb-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h2", width: "w-64" }) }),
|
|
33843
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "min-h-[3lh] text-h4", children: [
|
|
33844
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h4", width: "w-full" }),
|
|
33845
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h4", width: "w-4/5" })
|
|
33846
|
+
] }),
|
|
33847
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-auto grid grid-cols-1 gap-2", children: [0, 1, 2].map((i) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 items-center gap-2.5", children: [
|
|
33848
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "size-4 shrink-0 rounded-full" }),
|
|
33849
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h6", width: i === 1 ? "w-56" : "w-48" })
|
|
33850
|
+
] }, i)) })
|
|
33851
|
+
] }),
|
|
33852
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, ExampleSkeleton, {})
|
|
33853
|
+
] }),
|
|
33854
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: _chunk3ATAYP36cjs.cn.call(void 0, "shrink-0 rounded-xl", PANEL_SCREEN_HEIGHT_CLASS) }),
|
|
33855
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
33856
|
+
"div",
|
|
33857
|
+
{
|
|
33858
|
+
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
33859
|
+
"flex min-w-0 shrink-0 items-center gap-[var(--spacing-system-sf)]",
|
|
33860
|
+
PANEL_FOOTER_HEIGHT_CLASS
|
|
33861
|
+
),
|
|
33862
|
+
children: [
|
|
33863
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, LineBar2, { line: "text-h5", width: "w-16" }),
|
|
33864
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5M5C6UV4cjs.Skeleton, { className: "h-7 w-36 rounded-md" })
|
|
33865
|
+
]
|
|
33866
|
+
}
|
|
33867
|
+
)
|
|
33868
|
+
] })
|
|
33869
|
+
]
|
|
33870
|
+
}
|
|
33871
|
+
)
|
|
32092
33872
|
] });
|
|
32093
33873
|
}
|
|
32094
33874
|
function CapabilityExplorer({
|
|
@@ -32166,7 +33946,7 @@ function CapabilityExplorer({
|
|
|
32166
33946
|
if (next === null) return;
|
|
32167
33947
|
event.preventDefault();
|
|
32168
33948
|
onActiveChange(items[next].id);
|
|
32169
|
-
_optionalChain([listRef, 'access',
|
|
33949
|
+
_optionalChain([listRef, 'access', _723 => _723.current, 'optionalAccess', _724 => _724.querySelectorAll, 'call', _725 => _725('[role="tab"]'), 'access', _726 => _726[next], 'optionalAccess', _727 => _727.focus, 'call', _728 => _728()]);
|
|
32170
33950
|
};
|
|
32171
33951
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
32172
33952
|
"div",
|
|
@@ -32900,4 +34680,74 @@ function CapabilityExplorer({
|
|
|
32900
34680
|
|
|
32901
34681
|
|
|
32902
34682
|
|
|
32903
|
-
exports.AllowedDomainsInput = AllowedDomainsInput; exports.AnnouncementBarView = AnnouncementBarView; exports.timezoneLabel = timezoneLabel; exports.timezoneOptions = timezoneOptions; exports.TimezoneSelect = TimezoneSelect; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.DatePickerCalendar = DatePickerCalendar; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.DateFilterPanel = DateFilterPanel; exports.DateFilterMenu = DateFilterMenu; exports.DurationInput = DurationInput; exports.HoneypotField = HoneypotField; exports.JsonDetailList = JsonDetailList; exports.ProgressBar = ProgressBar; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.SearchableSelect = SearchableSelect; exports.AssigneeDropdown = AssigneeDropdown; exports.InfoSection = InfoSection; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.noDataIconClasses = noDataIconClasses; exports.noDataActionsVariants = noDataActionsVariants; exports.NoDataAction = NoDataAction; exports.NoDataActions = NoDataActions; exports.NoDataMessage = NoDataMessage; exports.NoData = NoData; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.Switch = Switch; exports.TagSelectDropdown = TagSelectDropdown; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.Textarea = Textarea; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.useConfirm = useConfirm; exports.useGuardedClose = useGuardedClose; exports.UnsavedChangesChip = UnsavedChangesChip; exports.AdminFormDrawer = AdminFormDrawer; exports.AdminFormModal = AdminFormModal; exports.Separator = Separator; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.CrossfadePanels = CrossfadePanels; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.AIGeneratedBadge = AIGeneratedBadge; exports.FADE_PREVIEW_MAX_UNMEASURED_ITEMS = FADE_PREVIEW_MAX_UNMEASURED_ITEMS; exports.FadePreview = FadePreview; exports.TextHold = TextHold; exports.LayoutHold = LayoutHold; exports.Progress = Progress; exports.RichMarkdownRuntimeProvider = RichMarkdownRuntimeProvider; exports.useRichMarkdownRuntime = useRichMarkdownRuntime; exports.EmbedIframe = EmbedIframe; exports.EmbedViewerFrame = EmbedViewerFrame; exports.ClaudeEmbed = ClaudeEmbed; exports.FigmaEmbed = FigmaEmbed; exports.EMBED_SIZES = EMBED_SIZES; exports.EmbedContainer = EmbedContainer; exports.YouTubeContainer = YouTubeContainer; exports.TwitterContainer = TwitterContainer; exports.RedditContainer = RedditContainer; exports.LinkPreviewContainer = LinkPreviewContainer; exports.LinkedInContainer = LinkedInContainer; exports.LinkedInEmbedClient = LinkedInEmbedClient; exports.MarkdownImage = MarkdownImage; exports.OGLinkErrorBoundary = OGLinkErrorBoundary; exports.OGLinkPreview = OGLinkPreview; exports.MediaCarousel = MediaCarousel; exports.RedditEmbedClient = RedditEmbedClient; exports.TwitterEmbedClient = TwitterEmbedClient; exports.processShortcodes = processShortcodes; exports.RichMarkdownRenderer = RichMarkdownRenderer; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.StackedRowsPanel = StackedRowsPanel; exports.SlackChannelChip = SlackChannelChip; exports.AppStoreBadge = AppStoreBadge; exports.GooglePlayBadge = GooglePlayBadge; exports.StoreBadgeLinks = StoreBadgeLinks; exports.MobileAppQr = MobileAppQr; exports.StatusIndicator = StatusIndicator; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.ListPageLayout = ListPageLayout; exports.PageShell = PageShell; exports.PageMain = PageMain; exports.ArticleDetailLayout = ArticleDetailLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.benefitCardBorderClass = benefitCardBorderClass; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.ChevronButton = ChevronButton; exports.CircularProgress = CircularProgress; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon2; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon2; exports.XCircleIcon = XCircleIcon; exports.DashboardInfoCard = DashboardInfoCard; exports.InfoCardRow = InfoCardRow; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.DataAttribution = DataAttribution; exports.DownloadButton = DownloadButton; exports.ComplianceBadge = ComplianceBadge; exports.ComplianceLogo = ComplianceLogo; exports.FeatureCardGrid = FeatureCardGrid; exports.StepNumber = StepNumber; exports.NumberedStep = NumberedStep; exports.FeatureList = FeatureList; exports.SourceTooltip = SourceTooltip; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.DropdownButton = DropdownButton; exports.MoreActionsMenu = MoreActionsMenu; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.Slider = Slider; exports.PersonCell = PersonCell; exports.PeopleCell = PeopleCell; exports.TitleContentBlock = TitleContentBlock; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE; exports.ROW_SHELL_CLASSES = ROW_SHELL_CLASSES; exports.DataTableSkeleton = DataTableSkeleton; exports.TableEmptyState = TableEmptyState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.PasswordInput = PasswordInput; exports.AccountDetailsFields = AccountDetailsFields; exports.TRIAL_TERM_ICONS = TRIAL_TERM_ICONS; exports.DEFAULT_TRIAL_TERMS = DEFAULT_TRIAL_TERMS; exports.trialBenefits = trialBenefits; exports.BenefitList = BenefitList; exports.AuthBenefitsPanel = AuthBenefitsPanel; exports.OpenFrameWordmark = OpenFrameWordmark; exports.PoweredByFlamingo = PoweredByFlamingo; exports.AuthShell = AuthShell; exports.BackToLoginLink = BackToLoginLink; exports.CompactAuthShell = CompactAuthShell; exports.LabeledDivider = LabeledDivider; exports.PROVIDER_META = PROVIDER_META; exports.SsoProviderButtons = SsoProviderButtons; exports.CompleteAccountForm = CompleteAccountForm; exports.PolicyLink = PolicyLink; exports.TermsAgreementLabel = TermsAgreementLabel; exports.CreateOrganizationForm = CreateOrganizationForm; exports.InviteLinkInvalidModal = InviteLinkInvalidModal; exports.LegalLinks = LegalLinks; exports.LoginForm = LoginForm; exports.NoAccountNotice = NoAccountNotice; exports.OpenFrameSsoLoginForm = OpenFrameSsoLoginForm; exports.OpenFrameSsoSignUpForm = OpenFrameSsoSignUpForm; exports.PasswordResetForm = PasswordResetForm; exports.SsoAuthShell = SsoAuthShell; exports.SsoJoinForm = SsoJoinForm; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.ErrorBoundary = ErrorBoundary; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.useMediaIntake = useMediaIntake; exports.MediaUploadArea = MediaUploadArea; exports.MediaGalleryManager = MediaGalleryManager; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.PushButtonSelector = PushButtonSelector; exports.MODEL_TOKEN_RATES_COPY = MODEL_TOKEN_RATES_COPY; exports.ModelTokenRates = ModelTokenRates; exports.ModelTokenRatesPopover = ModelTokenRatesPopover; exports.ModelTokenRatesUnavailable = ModelTokenRatesUnavailable; exports.ModelTokenRatesSkeleton = ModelTokenRatesSkeleton; exports.MODEL_TOKEN_EXCHANGE_BALANCE = MODEL_TOKEN_EXCHANGE_BALANCE; exports.MODEL_TOKEN_EXCHANGE_RANGE = MODEL_TOKEN_EXCHANGE_RANGE; exports.ModelTokenExchange = ModelTokenExchange; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.OPENFRAME_DOCTOR_COMMANDS = OPENFRAME_DOCTOR_COMMANDS; exports.getOpenFrameDoctorCommand = getOpenFrameDoctorCommand; exports.PlatformFilterComponent = PlatformFilterComponent; exports.SelectButton = SelectButton; exports.ConfidenceBadge = ConfidenceBadge; exports.SEOEditorPreview = SEOEditorPreview; exports.socialIcon = socialIcon; exports.SocialIconRow = SocialIconRow; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.WarningBlock = WarningBlock; exports.VideoBitesDisplay = VideoBitesDisplay; exports.FloatingWalkthroughVideo = FloatingWalkthroughVideo; exports.InlineWalkthroughVideo = InlineWalkthroughVideo; exports.useWalkthroughVideo = useWalkthroughVideo; exports.VideoSourceSelector = VideoSourceSelector; exports.SubtitlesEditor = SubtitlesEditor; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.APPROVAL_LEVELS = APPROVAL_LEVELS; exports.APPROVAL_LEVEL_META = APPROVAL_LEVEL_META; exports.ApprovalLevelView = ApprovalLevelView; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.DataTableEmpty = DataTableEmpty; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableHeader = DataTableHeader; exports.DATA_TABLE_HEADER_LABEL_CLASS = DATA_TABLE_HEADER_LABEL_CLASS; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.PoliciesTable = PoliciesTable; exports.PolicySummaryCards = PolicySummaryCards; exports.POLICY_STATUS_CONFIG = POLICY_STATUS_CONFIG; exports.getPolicyStatus = getPolicyStatus; exports.getPolicyTableStatus = getPolicyTableStatus; exports.computePolicySummary = computePolicySummary; exports.TENANT_EMPTY_VALUE = TENANT_EMPTY_VALUE; exports.accessStateTag = accessStateTag; exports.providerMark = providerMark2; exports.lastReadAt = lastReadAt; exports.formatLastRead = formatLastRead; exports.usersCountLabel = usersCountLabel; exports.TenantAccessCell = TenantAccessCell; exports.TenantCell = TenantCell; exports.TenantCustomerCell = TenantCustomerCell; exports.TENANT_COLUMNS = TENANT_COLUMNS; exports.TENANTS_TABLE_COLUMNS = TENANTS_TABLE_COLUMNS; exports.TenantsTableView = TenantsTableView; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.AppLayoutDrawerContainerContext = AppLayoutDrawerContainerContext; exports.useAppLayoutDrawerContainer = useAppLayoutDrawerContainer; exports.AppLayoutDrawerCoordinationContext = AppLayoutDrawerCoordinationContext; exports.AppLayoutDrawerRoot = AppLayoutDrawerRoot; exports.AppLayoutDrawerTrigger = AppLayoutDrawerTrigger; exports.AppLayoutDrawerClose = AppLayoutDrawerClose; exports.AppLayoutDrawerContent = AppLayoutDrawerContent; exports.AppLayoutDrawerHeader = AppLayoutDrawerHeader; exports.AppLayoutDrawerTitle = AppLayoutDrawerTitle; exports.AppLayoutDrawerDescription = AppLayoutDrawerDescription; exports.AppLayoutDrawerBody = AppLayoutDrawerBody; exports.AppLayoutDrawerFooter = AppLayoutDrawerFooter; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.NotificationPopups = NotificationPopups; exports.TICKET_APPROVAL_REQUEST_TYPE = TICKET_APPROVAL_REQUEST_TYPE; exports.MINGO_APPROVAL_REQUEST_TYPE = MINGO_APPROVAL_REQUEST_TYPE; exports.isApprovalNotificationType = isApprovalNotificationType; exports.isApprovalNotification = isApprovalNotification; exports.getApprovalMeta = getApprovalMeta; exports.resolutionToStatus = resolutionToStatus; exports.approvalMetaToBatchData = approvalMetaToBatchData; exports.ApprovalRequestNotificationTile = ApprovalRequestNotificationTile; exports.TimeTrackerProvider = TimeTrackerProvider; exports.useTimeTracker = useTimeTracker; exports.useOptionalTimeTracker = useOptionalTimeTracker; exports.useTrackerClock = useTrackerClock; exports.TimeTrackerPanel = TimeTrackerPanel; exports.UnreadDot = UnreadDot; exports.UnreadCountBadge = UnreadCountBadge; exports.HeaderButton = HeaderButton; exports.TimeTrackerHeaderButton = TimeTrackerHeaderButton; exports.formatLastOnline = formatLastOnline; exports.getDeviceName = getDeviceName; exports.matchesDeviceName = matchesDeviceName; exports.DevicesViewConfigProvider = DevicesViewConfigProvider; exports.useDevicesViewConfig = useDevicesViewConfig; exports.useDeviceImageUrl = useDeviceImageUrl; exports.DeviceSelectionModeRadio = DeviceSelectionModeRadio; exports.getDeviceStatusConfig = getDeviceStatusConfig; exports.getDeviceOperatingSystem = getDeviceOperatingSystem; exports.DEVICE_STATUS = DEVICE_STATUS; exports.DEFAULT_VISIBLE_STATUSES = DEFAULT_VISIBLE_STATUSES; exports.DEFAULT_DASHBOARD_STATUSES = DEFAULT_DASHBOARD_STATUSES; exports.DEFAULT_DEVICES_LIST_STATUSES = DEFAULT_DEVICES_LIST_STATUSES; exports.DEVICE_ENRICHMENT_STATUSES = DEVICE_ENRICHMENT_STATUSES; exports.DEVICE_ENRICHMENT_FILTER = DEVICE_ENRICHMENT_FILTER; exports.HIDDEN_DEVICE_STATUSES = HIDDEN_DEVICE_STATUSES; exports.renderDeviceTypeIcon = renderDeviceTypeIcon; exports.DeviceTypeTile = DeviceTypeTile; exports.DeviceTagsFilterButton = DeviceTagsFilterButton; exports.DevicesFilterToolbar = DevicesFilterToolbar; exports.getDeviceActionsColumn = getDeviceActionsColumn; exports.getDeviceOpenColumn = getDeviceOpenColumn; exports.DevicesTableBody = DevicesTableBody; exports.getDeviceFilterColumns = getDeviceFilterColumns; exports.getDeviceTableColumns = getDeviceTableColumns; exports.useTagFilterModal = useTagFilterModal; exports.DeviceSelector = DeviceSelector; exports.DeviceSelectorSkeleton = DeviceSelectorSkeleton; exports.EMPTY_NARROWING = EMPTY_NARROWING; exports.narrowingToFilter = narrowingToFilter; exports.DevicesGrid = DevicesGrid; exports.DevicesGridFilters = DevicesGridFilters; exports.EMPTY_DEVICES_NARROWING = EMPTY_DEVICES_NARROWING; exports.isNarrowed = isNarrowed; exports.DevicesList = DevicesList; exports.DEVICE_VIEW_MODE_ITEMS = DEVICE_VIEW_MODE_ITEMS; exports.buildDevicePanelActions = buildDevicePanelActions; exports.IDLE_DEVICES_TOOLBAR = IDLE_DEVICES_TOOLBAR; exports.DevicesPanelView = DevicesPanelView; exports.PACKAGE_MANAGERS = PACKAGE_MANAGERS; exports.PACKAGE_MANAGER_LABEL = PACKAGE_MANAGER_LABEL; exports.PACKAGE_MANAGER_ICON = PACKAGE_MANAGER_ICON; exports.PACKAGE_MANAGER_OS = PACKAGE_MANAGER_OS; exports.packageManagerLabel = packageManagerLabel; exports.SOFTWARE_SOURCE_LABEL = SOFTWARE_SOURCE_LABEL; exports.PACKAGE_SEARCH_LABEL = PACKAGE_SEARCH_LABEL; exports.PACKAGE_SEARCH_PLACEHOLDER = PACKAGE_SEARCH_PLACEHOLDER; exports.PackageSearchFieldPlaceholder = PackageSearchFieldPlaceholder; exports.SoftwareScheduleFields = SoftwareScheduleFields; exports.SOFTWARE_ACTION_COPY = SOFTWARE_ACTION_COPY; exports.SOFTWARE_ACTION_DETAIL_TITLE = SOFTWARE_ACTION_DETAIL_TITLE; exports.softwareActionCopy = softwareActionCopy; exports.newSoftwareRow = newSoftwareRow; exports.SoftwareRowFields = SoftwareRowFields; exports.SoftwareActionForm = SoftwareActionForm; exports.LogDrawer = LogDrawer; exports.SYSTEM_SOURCE_LABEL = SYSTEM_SOURCE_LABEL; exports.logSourceLabels = logSourceLabels; exports.LogsPageView = LogsPageView; exports.LogCopyIconButton = LogCopyIconButton; exports.LOG_COLUMN_WIDTHS = LOG_COLUMN_WIDTHS; exports.ToolBadge = ToolBadge; exports.LogsTableView = LogsTableView; exports.LogsTableSkeleton = LogsTableSkeleton; exports.logSeverityVariant = logSeverityVariant; exports.KNOWLEDGE_BASE_ITEM_ICON = KNOWLEDGE_BASE_ITEM_ICON; exports.getKnowledgeBaseOpenColumn = getKnowledgeBaseOpenColumn; exports.getKnowledgeBaseColumns = getKnowledgeBaseColumns; exports.KnowledgeBaseTableBody = KnowledgeBaseTableBody; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketDetailSection = TicketDetailSection; exports.KnowledgeBaseArticleView = KnowledgeBaseArticleView; exports.SLOT_STICKINESS = SLOT_STICKINESS; exports.SortableDragHandle = SortableDragHandle; exports.SortableList = SortableList; exports.SortableMoveButtons = SortableMoveButtons; exports.useSortableItem = useSortableItem; exports.TicketStatusConfigList = TicketStatusConfigList; exports.ConversationCard = ConversationCard; exports.SnapCarouselControlsSkeleton = SnapCarouselControlsSkeleton; exports.SnapCarousel = SnapCarousel; exports.capabilityTabId = capabilityTabId; exports.CapabilityExplorerSkeleton = CapabilityExplorerSkeleton; exports.CapabilityExplorer = CapabilityExplorer; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.TICKET_STATUS_COLOR_PRESETS = TICKET_STATUS_COLOR_PRESETS; exports.CUSTOM_PRESET_KEY = CUSTOM_PRESET_KEY; exports.DEFAULT_CUSTOM_STATUS_COLOR = DEFAULT_CUSTOM_STATUS_COLOR; exports.ColorPresetSelect = ColorPresetSelect; exports.ColorPickerInput = ColorPickerInput; exports.TicketStatusConfigRow = TicketStatusConfigRow; exports.formatTestRunDuration = formatTestRunDuration; exports.TestResultsSkeleton = TestResultsSkeleton; exports.TestResultsTable = TestResultsTable; exports.TestRunErrorBanner = TestRunErrorBanner; exports.TestRunResults = TestRunResults; exports.TimingStat = TimingStat; exports.TestRunStatusStat = TestRunStatusStat; exports.useTestRunState = useTestRunState; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.renderTicketStatusOption = renderTicketStatusOption; exports.renderTicketAssigneeOption = renderTicketAssigneeOption; exports.TakeOverTicketModal = TakeOverTicketModal; exports.ReopenTicketModal = ReopenTicketModal; exports.ReopenTicketRequestModal = ReopenTicketRequestModal; exports.PHOTO_WALL_FRAME = PHOTO_WALL_FRAME; exports.photoWallRequestWidth = photoWallRequestWidth; exports.photoOrientation = photoOrientation; exports.arrangePhotoWall = arrangePhotoWall; exports.PhotoWall = PhotoWall; exports.FilterPillRow = FilterPillRow; exports.LazyMount = LazyMount; exports.AppWindowFrame = AppWindowFrame; exports.PhoneFrame = PhoneFrame; exports.NotificationStack = NotificationStack; exports.StripCard = StripCard; exports.LeaderRow = LeaderRow; exports.AnalyzingState = AnalyzingState; exports.IncidentStatusLine = IncidentStatusLine; exports.IncidentFeed = IncidentFeed; exports.useBetweenAnchors = useBetweenAnchors; exports.StickyActionBar = StickyActionBar; exports.IconTile = IconTile;
|
|
34683
|
+
|
|
34684
|
+
|
|
34685
|
+
|
|
34686
|
+
|
|
34687
|
+
|
|
34688
|
+
|
|
34689
|
+
|
|
34690
|
+
|
|
34691
|
+
|
|
34692
|
+
|
|
34693
|
+
|
|
34694
|
+
|
|
34695
|
+
|
|
34696
|
+
|
|
34697
|
+
|
|
34698
|
+
|
|
34699
|
+
|
|
34700
|
+
|
|
34701
|
+
|
|
34702
|
+
|
|
34703
|
+
|
|
34704
|
+
|
|
34705
|
+
|
|
34706
|
+
|
|
34707
|
+
|
|
34708
|
+
|
|
34709
|
+
|
|
34710
|
+
|
|
34711
|
+
|
|
34712
|
+
|
|
34713
|
+
|
|
34714
|
+
|
|
34715
|
+
|
|
34716
|
+
|
|
34717
|
+
|
|
34718
|
+
|
|
34719
|
+
|
|
34720
|
+
|
|
34721
|
+
|
|
34722
|
+
|
|
34723
|
+
|
|
34724
|
+
|
|
34725
|
+
|
|
34726
|
+
|
|
34727
|
+
|
|
34728
|
+
|
|
34729
|
+
|
|
34730
|
+
|
|
34731
|
+
|
|
34732
|
+
|
|
34733
|
+
|
|
34734
|
+
|
|
34735
|
+
|
|
34736
|
+
|
|
34737
|
+
|
|
34738
|
+
|
|
34739
|
+
|
|
34740
|
+
|
|
34741
|
+
|
|
34742
|
+
|
|
34743
|
+
|
|
34744
|
+
|
|
34745
|
+
|
|
34746
|
+
|
|
34747
|
+
|
|
34748
|
+
|
|
34749
|
+
|
|
34750
|
+
|
|
34751
|
+
|
|
34752
|
+
|
|
34753
|
+
exports.AllowedDomainsInput = AllowedDomainsInput; exports.AnnouncementBarView = AnnouncementBarView; exports.timezoneLabel = timezoneLabel; exports.timezoneOptions = timezoneOptions; exports.TimezoneSelect = TimezoneSelect; exports.CheckboxBlock = CheckboxBlock; exports.CheckboxWithDescription = CheckboxWithDescription; exports.DatePickerCalendar = DatePickerCalendar; exports.DatePicker = DatePicker; exports.DatePickerInput = DatePickerInput; exports.DatePickerInputSimple = DatePickerInputSimple; exports.DateFilterPanel = DateFilterPanel; exports.DateFilterMenu = DateFilterMenu; exports.DurationInput = DurationInput; exports.HoneypotField = HoneypotField; exports.JsonDetailList = JsonDetailList; exports.ProgressBar = ProgressBar; exports.InfoCard = InfoCard; exports.InfoRow = InfoRow; exports.SearchableSelect = SearchableSelect; exports.AssigneeDropdown = AssigneeDropdown; exports.InfoSection = InfoSection; exports.InputTrigger = InputTrigger; exports.MediaTypeSelector = MediaTypeSelector; exports.noDataIconClasses = noDataIconClasses; exports.noDataActionsVariants = noDataActionsVariants; exports.NoDataAction = NoDataAction; exports.NoDataActions = NoDataActions; exports.NoDataMessage = NoDataMessage; exports.NoData = NoData; exports.PageLoader = PageLoader; exports.CompactPageLoader = CompactPageLoader; exports.RadioGroup = RadioGroup; exports.RadioGroupItem = RadioGroupItem; exports.RadioGroupBlock = RadioGroupBlock; exports.Switch = Switch; exports.TagSelectDropdown = TagSelectDropdown; exports.badgeVariants = badgeVariants; exports.Badge = Badge; exports.TagsInput = TagsInput; exports.TagsManager = TagsManager; exports.Textarea = Textarea; exports.AlertDialog = AlertDialog; exports.AlertDialogTrigger = AlertDialogTrigger; exports.AlertDialogPortal = AlertDialogPortal; exports.AlertDialogOverlay = AlertDialogOverlay; exports.AlertDialogContent = AlertDialogContent; exports.AlertDialogHeader = AlertDialogHeader; exports.AlertDialogFooter = AlertDialogFooter; exports.AlertDialogTitle = AlertDialogTitle; exports.AlertDialogDescription = AlertDialogDescription; exports.AlertDialogAction = AlertDialogAction; exports.AlertDialogCancel = AlertDialogCancel; exports.AspectRatio = AspectRatio; exports.Dialog = Dialog; exports.DialogTrigger = DialogTrigger; exports.DialogPortal = DialogPortal; exports.DialogClose = DialogClose; exports.DialogOverlay = DialogOverlay; exports.DialogContent = DialogContent; exports.DialogHeader = DialogHeader; exports.DialogFooter = DialogFooter; exports.DialogTitle = DialogTitle; exports.DialogDescription = DialogDescription; exports.useConfirm = useConfirm; exports.useGuardedClose = useGuardedClose; exports.UnsavedChangesChip = UnsavedChangesChip; exports.AdminFormDrawer = AdminFormDrawer; exports.AdminFormModal = AdminFormModal; exports.Separator = Separator; exports.Sheet = Sheet; exports.SheetTrigger = SheetTrigger; exports.SheetClose = SheetClose; exports.SheetPortal = SheetPortal; exports.SheetOverlay = SheetOverlay; exports.SheetContent = SheetContent; exports.SheetHeader = SheetHeader; exports.SheetFooter = SheetFooter; exports.SheetTitle = SheetTitle; exports.SheetDescription = SheetDescription; exports.Accordion = Accordion; exports.AccordionItem = AccordionItem; exports.AccordionTrigger = AccordionTrigger; exports.AccordionContent = AccordionContent; exports.Breadcrumb = Breadcrumb; exports.BreadcrumbList = BreadcrumbList; exports.BreadcrumbItem = BreadcrumbItem; exports.BreadcrumbLink = BreadcrumbLink; exports.BreadcrumbPage = BreadcrumbPage; exports.BreadcrumbSeparator = BreadcrumbSeparator; exports.BreadcrumbEllipsis = BreadcrumbEllipsis; exports.MenubarMenu = MenubarMenu; exports.MenubarGroup = MenubarGroup; exports.MenubarPortal = MenubarPortal; exports.MenubarSub = MenubarSub; exports.MenubarRadioGroup = MenubarRadioGroup; exports.Menubar = Menubar; exports.MenubarTrigger = MenubarTrigger; exports.MenubarSubTrigger = MenubarSubTrigger; exports.MenubarSubContent = MenubarSubContent; exports.MenubarContent = MenubarContent; exports.MenubarItem = MenubarItem; exports.MenubarCheckboxItem = MenubarCheckboxItem; exports.MenubarRadioItem = MenubarRadioItem; exports.MenubarLabel = MenubarLabel; exports.MenubarSeparator = MenubarSeparator; exports.MenubarShortcut = MenubarShortcut; exports.NavigationMenuViewport = NavigationMenuViewport; exports.NavigationMenu = NavigationMenu; exports.NavigationMenuList = NavigationMenuList; exports.NavigationMenuItem = NavigationMenuItem; exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle; exports.NavigationMenuTrigger = NavigationMenuTrigger; exports.NavigationMenuContent = NavigationMenuContent; exports.NavigationMenuLink = NavigationMenuLink; exports.NavigationMenuIndicator = NavigationMenuIndicator; exports.CrossfadePanels = CrossfadePanels; exports.TabContent = TabContent; exports.TabNavigation = TabNavigation; exports.getTabById = getTabById; exports.getTabComponent = getTabComponent; exports.Alert = Alert; exports.AlertTitle = AlertTitle; exports.AlertDescription = AlertDescription; exports.AIGeneratedBadge = AIGeneratedBadge; exports.FADE_PREVIEW_MAX_UNMEASURED_ITEMS = FADE_PREVIEW_MAX_UNMEASURED_ITEMS; exports.FadePreview = FadePreview; exports.TextHold = TextHold; exports.LayoutHold = LayoutHold; exports.Progress = Progress; exports.RichMarkdownRuntimeProvider = RichMarkdownRuntimeProvider; exports.useRichMarkdownRuntime = useRichMarkdownRuntime; exports.EmbedIframe = EmbedIframe; exports.EmbedViewerFrame = EmbedViewerFrame; exports.ClaudeEmbed = ClaudeEmbed; exports.FigmaEmbed = FigmaEmbed; exports.EMBED_SIZES = EMBED_SIZES; exports.EmbedContainer = EmbedContainer; exports.YouTubeContainer = YouTubeContainer; exports.TwitterContainer = TwitterContainer; exports.RedditContainer = RedditContainer; exports.LinkPreviewContainer = LinkPreviewContainer; exports.LinkedInContainer = LinkedInContainer; exports.LinkedInEmbedClient = LinkedInEmbedClient; exports.MarkdownImage = MarkdownImage; exports.OGLinkErrorBoundary = OGLinkErrorBoundary; exports.OGLinkPreview = OGLinkPreview; exports.MediaCarousel = MediaCarousel; exports.RedditEmbedClient = RedditEmbedClient; exports.TwitterEmbedClient = TwitterEmbedClient; exports.processShortcodes = processShortcodes; exports.RichMarkdownRenderer = RichMarkdownRenderer; exports.ReleaseChangelogSection = ReleaseChangelogSection; exports.StackedRowsPanel = StackedRowsPanel; exports.SlackChannelChip = SlackChannelChip; exports.AppStoreBadge = AppStoreBadge; exports.GooglePlayBadge = GooglePlayBadge; exports.StoreBadgeLinks = StoreBadgeLinks; exports.MobileAppQr = MobileAppQr; exports.StatusIndicator = StatusIndicator; exports.ErrorState = ErrorState; exports.PageError = PageError; exports.LoadError = LoadError; exports.NotFoundError = NotFoundError; exports.FilterCheckboxItem = FilterCheckboxItem; exports.TagKeyValueFilter = TagKeyValueFilter; exports.FilterModal = FilterModal; exports.PageContainer = PageContainer; exports.ListPageContainer = ListPageContainer; exports.DetailPageContainer = DetailPageContainer; exports.FormPageContainer = FormPageContainer; exports.ContentPageContainer = ContentPageContainer; exports.ListPageLayout = ListPageLayout; exports.PageShell = PageShell; exports.PageMain = PageMain; exports.ArticleDetailLayout = ArticleDetailLayout; exports.toggleVariants = toggleVariants; exports.Toggle = Toggle; exports.ToggleGroup = ToggleGroup; exports.ToggleGroupItem = ToggleGroupItem; exports.BenefitCard = BenefitCard; exports.benefitCardBorderClass = benefitCardBorderClass; exports.BenefitCardGrid = BenefitCardGrid; exports.BrandAssociationCard = BrandAssociationCard; exports.BrandAssociationGrid = BrandAssociationGrid; exports.BulletList = BulletList; exports.ChevronButton = ChevronButton; exports.CircularProgress = CircularProgress; exports.CheckIcon = CheckIcon2; exports.XIcon = XIcon2; exports.MinusIcon = MinusIcon; exports.CheckCircleIcon = CheckCircleIcon2; exports.XCircleIcon = XCircleIcon; exports.DashboardInfoCard = DashboardInfoCard; exports.InfoCardRow = InfoCardRow; exports.OSTypeBadge = OSTypeBadge; exports.OSTypeIcon = OSTypeIcon; exports.OSTypeLabel = OSTypeLabel; exports.DeviceCard = DeviceCard; exports.DeviceCardCompact = DeviceCardCompact; exports.DataAttribution = DataAttribution; exports.DownloadButton = DownloadButton; exports.ComplianceBadge = ComplianceBadge; exports.ComplianceLogo = ComplianceLogo; exports.FeatureCardGrid = FeatureCardGrid; exports.StepNumber = StepNumber; exports.NumberedStep = NumberedStep; exports.FeatureList = FeatureList; exports.SourceTooltip = SourceTooltip; exports.HighlightCard = HighlightCard; exports.HighlightCardGrid = HighlightCardGrid; exports.IconsBlock = IconsBlock; exports.DropdownButton = DropdownButton; exports.MoreActionsMenu = MoreActionsMenu; exports.OrganizationCard = OrganizationCard; exports.ServiceCard = ServiceCard; exports.Slider = Slider; exports.PersonCell = PersonCell; exports.PeopleCell = PeopleCell; exports.TitleContentBlock = TitleContentBlock; exports.ContentLoader = ContentLoader; exports.CardLoader = CardLoader; exports.FormLoader = FormLoader; exports.DetailLoader = DetailLoader; exports.ListLoader = ListLoader; exports.CursorPagination = CursorPagination; exports.CursorPaginationSimple = CursorPaginationSimple; exports.useDataTableContext = useDataTableContext; exports.DataTableRoot = DataTableRoot; exports.getHideClasses = getHideClasses; exports.alignJustify = alignJustify; exports.multiSelectFilterFn = multiSelectFilterFn; exports.ROW_HEIGHT_DESKTOP = ROW_HEIGHT_DESKTOP; exports.ROW_HEIGHT_MOBILE = ROW_HEIGHT_MOBILE; exports.ROW_SHELL_CLASSES = ROW_SHELL_CLASSES; exports.DataTableSkeleton = DataTableSkeleton; exports.TableEmptyState = TableEmptyState; exports.DynamicThemeProvider = DynamicThemeProvider; exports.useDynamicTheme = useDynamicTheme; exports.THEME_STORAGE_KEY = THEME_STORAGE_KEY; exports.THEME_ATTRIBUTE = THEME_ATTRIBUTE; exports.DEFAULT_THEME = DEFAULT_THEME; exports.ThemeProvider = ThemeProvider; exports.useTheme = useTheme; exports.useThemeToggle = useThemeToggle; exports.ArrayEntryManager = ArrayEntryManager; exports.PasswordInput = PasswordInput; exports.AccountDetailsFields = AccountDetailsFields; exports.TRIAL_TERM_ICONS = TRIAL_TERM_ICONS; exports.DEFAULT_TRIAL_TERMS = DEFAULT_TRIAL_TERMS; exports.trialBenefits = trialBenefits; exports.BenefitList = BenefitList; exports.AuthBenefitsPanel = AuthBenefitsPanel; exports.OpenFrameWordmark = OpenFrameWordmark; exports.PoweredByFlamingo = PoweredByFlamingo; exports.AuthShell = AuthShell; exports.BackToLoginLink = BackToLoginLink; exports.CompactAuthShell = CompactAuthShell; exports.LabeledDivider = LabeledDivider; exports.PROVIDER_META = PROVIDER_META; exports.SsoProviderButtons = SsoProviderButtons; exports.CompleteAccountForm = CompleteAccountForm; exports.PolicyLink = PolicyLink; exports.TermsAgreementLabel = TermsAgreementLabel; exports.CreateOrganizationForm = CreateOrganizationForm; exports.InviteLinkInvalidModal = InviteLinkInvalidModal; exports.LegalLinks = LegalLinks; exports.LoginForm = LoginForm; exports.NoAccountNotice = NoAccountNotice; exports.OpenFrameSsoLoginForm = OpenFrameSsoLoginForm; exports.OpenFrameSsoSignUpForm = OpenFrameSsoSignUpForm; exports.PasswordResetForm = PasswordResetForm; exports.SsoAuthShell = SsoAuthShell; exports.SsoJoinForm = SsoJoinForm; exports.ProviderButton = ProviderButton; exports.AuthProvidersList = AuthProvidersList; exports.ChangelogManager = ChangelogManager; exports.ChangelogSectionsManager = ChangelogSectionsManager; exports.ClickUpTasksManager = ClickUpTasksManager; exports.CommandBox = CommandBox; exports.TAG_BADGE_CLASS = TAG_BADGE_CLASS; exports.EntityTagBadges = EntityTagBadges; exports.ErrorBoundary = ErrorBoundary; exports.SectionSelector = SectionSelector; exports.FigmaPrototypeViewer = FigmaPrototypeViewer; exports.FiltersDropdown = FiltersDropdown; exports.useFiltersDropdown = useFiltersDropdown; exports.GitHubReleasesManager = GitHubReleasesManager; exports.KnowledgeBaseLinksManager = KnowledgeBaseLinksManager; exports.LoadingProvider = LoadingProvider; exports.useLoading = useLoading; exports.useMediaIntake = useMediaIntake; exports.MediaUploadArea = MediaUploadArea; exports.MediaGalleryManager = MediaGalleryManager; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.ContentLoadingContainer = ContentLoadingContainer; exports.useContentLoading = useContentLoading; exports.ParagraphSkeleton = ParagraphSkeleton; exports.ListSkeleton = ListSkeleton; exports.TableSkeleton = TableSkeleton; exports.FormSkeleton = FormSkeleton; exports.NavigationSkeleton = NavigationSkeleton; exports.ProfileSkeleton = ProfileSkeleton; exports.CommentSkeleton = CommentSkeleton; exports.FeatureListSkeleton = FeatureListSkeleton; exports.TimelineSkeleton = TimelineSkeleton; exports.PricingSkeleton = PricingSkeleton; exports.ProfileLoadingSkeleton = ProfileLoadingSkeleton; exports.MspProfileFormSkeleton = MspProfileFormSkeleton; exports.CategoryCardSkeleton = CategoryCardSkeleton; exports.CategoryVendorSelectorSkeleton = CategoryVendorSelectorSkeleton; exports.WizardLayoutSkeleton = WizardLayoutSkeleton; exports.MarginReportSkeleton = MarginReportSkeleton; exports.UsersGridSkeleton = UsersGridSkeleton; exports.DynamicSkeleton = DynamicSkeleton; exports.SkeletonPresets = SkeletonPresets; exports.PlatformSkeletonContainer = PlatformSkeletonContainer; exports.ProgressiveSkeleton = ProgressiveSkeleton; exports.OrganizationIconSkeleton = OrganizationIconSkeleton; exports.OrganizationCardSkeleton = OrganizationCardSkeleton; exports.OrganizationCardSkeletonGrid = OrganizationCardSkeletonGrid; exports.DeviceCardSkeleton = DeviceCardSkeleton; exports.DeviceCardSkeletonGrid = DeviceCardSkeletonGrid; exports.PushButtonSelector = PushButtonSelector; exports.MODEL_TOKEN_RATES_COPY = MODEL_TOKEN_RATES_COPY; exports.ModelTokenRates = ModelTokenRates; exports.ModelTokenRatesPopover = ModelTokenRatesPopover; exports.ModelTokenRatesUnavailable = ModelTokenRatesUnavailable; exports.ModelTokenRatesSkeleton = ModelTokenRatesSkeleton; exports.MODEL_TOKEN_EXCHANGE_BALANCE = MODEL_TOKEN_EXCHANGE_BALANCE; exports.MODEL_TOKEN_EXCHANGE_RANGE = MODEL_TOKEN_EXCHANGE_RANGE; exports.ModelTokenExchange = ModelTokenExchange; exports.MoreAboutButton = MoreAboutButton; exports.OSTypeBadgeGroup = OSTypeBadgeGroup; exports.ParallaxImageShowcase = ParallaxImageShowcase; exports.PathsDisplay = PathsDisplay; exports.OPENFRAME_PATHS = OPENFRAME_PATHS; exports.getOpenFramePaths = getOpenFramePaths; exports.OPENFRAME_DOCTOR_COMMANDS = OPENFRAME_DOCTOR_COMMANDS; exports.getOpenFrameDoctorCommand = getOpenFrameDoctorCommand; exports.PlatformFilterComponent = PlatformFilterComponent; exports.SelectButton = SelectButton; exports.ConfidenceBadge = ConfidenceBadge; exports.SEOEditorPreview = SEOEditorPreview; exports.socialIcon = socialIcon; exports.SocialIconRow = SocialIconRow; exports.SocialLinksManager = SocialLinksManager; exports.StartWithOpenFrameButton = StartWithOpenFrameButton; exports.StatusFilterComponent = StatusFilterComponent; exports.TagsSelector = TagsSelector; exports.WarningBlock = WarningBlock; exports.VideoBitesDisplay = VideoBitesDisplay; exports.FloatingWalkthroughVideo = FloatingWalkthroughVideo; exports.InlineWalkthroughVideo = InlineWalkthroughVideo; exports.useWalkthroughVideo = useWalkthroughVideo; exports.VideoSourceSelector = VideoSourceSelector; exports.SubtitlesEditor = SubtitlesEditor; exports.TranscriptSummaryEditor = TranscriptSummaryEditor; exports.AIEnrichButton = AIEnrichButton; exports.AIWarningsSection = AIWarningsSection; exports.AIEnrichSection = AIEnrichSection; exports.HighlightVideoSection = HighlightVideoSection; exports.HighlightConfigSection = HighlightConfigSection; exports.EntitySummaryEditor = EntitySummaryEditor; exports.AIStatusIndicator = AIStatusIndicator; exports.AIRequiredBadge = AIRequiredBadge; exports.TranscribeSummarizeSection = TranscribeSummarizeSection; exports.VideoClipsSection = VideoClipsSection; exports.HighlightGenerationSection = HighlightGenerationSection; exports.HighlightVideoPreview = HighlightVideoPreview; exports.TranscribeAndSummarizeCombinedSection = TranscribeAndSummarizeCombinedSection; exports.HighlightVideoCombinedSection = HighlightVideoCombinedSection; exports.ViewToggle = ViewToggle; exports.APPROVAL_LEVELS = APPROVAL_LEVELS; exports.APPROVAL_LEVEL_META = APPROVAL_LEVEL_META; exports.ApprovalLevelView = ApprovalLevelView; exports.PolicyConfigurationPanel = PolicyConfigurationPanel; exports.DataTableEmpty = DataTableEmpty; exports.DataTableRow = DataTableRow; exports.DataTableBody = DataTableBody; exports.DataTableCursorFooter = DataTableCursorFooter; exports.DataTableHeader = DataTableHeader; exports.DATA_TABLE_HEADER_LABEL_CLASS = DATA_TABLE_HEADER_LABEL_CLASS; exports.DataTableInfiniteFooter = DataTableInfiniteFooter; exports.DataTableRowCount = DataTableRowCount; exports.useDataTable = useDataTable; exports.DataTable = DataTable; exports.flexRender = _reacttable.flexRender; exports.createColumnHelper = _reacttable.createColumnHelper; exports.getCoreRowModel = _reacttable.getCoreRowModel; exports.getExpandedRowModel = _reacttable.getExpandedRowModel; exports.getFacetedRowModel = _reacttable.getFacetedRowModel; exports.getFacetedUniqueValues = _reacttable.getFacetedUniqueValues; exports.getFilteredRowModel = _reacttable.getFilteredRowModel; exports.getGroupedRowModel = _reacttable.getGroupedRowModel; exports.getPaginationRowModel = _reacttable.getPaginationRowModel; exports.getSortedRowModel = _reacttable.getSortedRowModel; exports.PoliciesTable = PoliciesTable; exports.PolicySummaryCards = PolicySummaryCards; exports.POLICY_STATUS_CONFIG = POLICY_STATUS_CONFIG; exports.getPolicyStatus = getPolicyStatus; exports.getPolicyTableStatus = getPolicyTableStatus; exports.computePolicySummary = computePolicySummary; exports.TENANT_EMPTY_VALUE = TENANT_EMPTY_VALUE; exports.accessStateTag = accessStateTag; exports.providerMark = providerMark2; exports.lastReadAt = lastReadAt; exports.formatLastRead = formatLastRead; exports.usersCountLabel = usersCountLabel; exports.TenantAccessCell = TenantAccessCell; exports.TenantCell = TenantCell; exports.TenantCustomerCell = TenantCustomerCell; exports.TENANT_COLUMNS = TENANT_COLUMNS; exports.TENANTS_TABLE_COLUMNS = TENANTS_TABLE_COLUMNS; exports.TenantsTableView = TenantsTableView; exports.PhoneInput = PhoneInput; exports.WaitlistForm = WaitlistForm; exports.NotificationsProvider = NotificationsProvider; exports.useNotifications = useNotifications; exports.useOptionalNotifications = useOptionalNotifications; exports.AppLayoutDrawerContainerContext = AppLayoutDrawerContainerContext; exports.useAppLayoutDrawerContainer = useAppLayoutDrawerContainer; exports.AppLayoutDrawerCoordinationContext = AppLayoutDrawerCoordinationContext; exports.AppLayoutDrawerRoot = AppLayoutDrawerRoot; exports.AppLayoutDrawerTrigger = AppLayoutDrawerTrigger; exports.AppLayoutDrawerClose = AppLayoutDrawerClose; exports.AppLayoutDrawerContent = AppLayoutDrawerContent; exports.AppLayoutDrawerHeader = AppLayoutDrawerHeader; exports.AppLayoutDrawerTitle = AppLayoutDrawerTitle; exports.AppLayoutDrawerDescription = AppLayoutDrawerDescription; exports.AppLayoutDrawerBody = AppLayoutDrawerBody; exports.AppLayoutDrawerFooter = AppLayoutDrawerFooter; exports.NotificationTile = NotificationTile; exports.NotificationDrawer = NotificationDrawer; exports.NotificationPopups = NotificationPopups; exports.TICKET_APPROVAL_REQUEST_TYPE = TICKET_APPROVAL_REQUEST_TYPE; exports.MINGO_APPROVAL_REQUEST_TYPE = MINGO_APPROVAL_REQUEST_TYPE; exports.isApprovalNotificationType = isApprovalNotificationType; exports.isApprovalNotification = isApprovalNotification; exports.getApprovalMeta = getApprovalMeta; exports.resolutionToStatus = resolutionToStatus; exports.approvalMetaToBatchData = approvalMetaToBatchData; exports.ApprovalRequestNotificationTile = ApprovalRequestNotificationTile; exports.TimeTrackerProvider = TimeTrackerProvider; exports.useTimeTracker = useTimeTracker; exports.useOptionalTimeTracker = useOptionalTimeTracker; exports.useTrackerClock = useTrackerClock; exports.TimeTrackerPanel = TimeTrackerPanel; exports.UnreadDot = UnreadDot; exports.UnreadCountBadge = UnreadCountBadge; exports.HeaderButton = HeaderButton; exports.TimeTrackerHeaderButton = TimeTrackerHeaderButton; exports.formatLastOnline = formatLastOnline; exports.getDeviceName = getDeviceName; exports.matchesDeviceName = matchesDeviceName; exports.DevicesViewConfigProvider = DevicesViewConfigProvider; exports.useDevicesViewConfig = useDevicesViewConfig; exports.useDeviceImageUrl = useDeviceImageUrl; exports.DeviceSelectionModeRadio = DeviceSelectionModeRadio; exports.getDeviceStatusConfig = getDeviceStatusConfig; exports.getDeviceOperatingSystem = getDeviceOperatingSystem; exports.DEVICE_STATUS = DEVICE_STATUS; exports.DEFAULT_VISIBLE_STATUSES = DEFAULT_VISIBLE_STATUSES; exports.DEFAULT_DASHBOARD_STATUSES = DEFAULT_DASHBOARD_STATUSES; exports.DEFAULT_DEVICES_LIST_STATUSES = DEFAULT_DEVICES_LIST_STATUSES; exports.DEVICE_ENRICHMENT_STATUSES = DEVICE_ENRICHMENT_STATUSES; exports.DEVICE_ENRICHMENT_FILTER = DEVICE_ENRICHMENT_FILTER; exports.HIDDEN_DEVICE_STATUSES = HIDDEN_DEVICE_STATUSES; exports.renderDeviceTypeIcon = renderDeviceTypeIcon; exports.DeviceTypeTile = DeviceTypeTile; exports.DeviceTagsFilterButton = DeviceTagsFilterButton; exports.DevicesFilterToolbar = DevicesFilterToolbar; exports.getDeviceActionsColumn = getDeviceActionsColumn; exports.getDeviceOpenColumn = getDeviceOpenColumn; exports.DevicesTableBody = DevicesTableBody; exports.getDeviceFilterColumns = getDeviceFilterColumns; exports.getDeviceTableColumns = getDeviceTableColumns; exports.useTagFilterModal = useTagFilterModal; exports.DeviceSelector = DeviceSelector; exports.DeviceSelectorSkeleton = DeviceSelectorSkeleton; exports.EMPTY_NARROWING = EMPTY_NARROWING; exports.narrowingToFilter = narrowingToFilter; exports.DevicesGrid = DevicesGrid; exports.DevicesGridFilters = DevicesGridFilters; exports.EMPTY_DEVICES_NARROWING = EMPTY_DEVICES_NARROWING; exports.isNarrowed = isNarrowed; exports.DevicesList = DevicesList; exports.DEVICE_VIEW_MODE_ITEMS = DEVICE_VIEW_MODE_ITEMS; exports.buildDevicePanelActions = buildDevicePanelActions; exports.IDLE_DEVICES_TOOLBAR = IDLE_DEVICES_TOOLBAR; exports.DevicesPanelView = DevicesPanelView; exports.PACKAGE_MANAGERS = PACKAGE_MANAGERS; exports.PACKAGE_MANAGER_LABEL = PACKAGE_MANAGER_LABEL; exports.PACKAGE_MANAGER_ICON = PACKAGE_MANAGER_ICON; exports.PACKAGE_MANAGER_OS = PACKAGE_MANAGER_OS; exports.packageManagerLabel = packageManagerLabel; exports.SOFTWARE_SOURCE_LABEL = SOFTWARE_SOURCE_LABEL; exports.PACKAGE_SEARCH_LABEL = PACKAGE_SEARCH_LABEL; exports.PACKAGE_SEARCH_PLACEHOLDER = PACKAGE_SEARCH_PLACEHOLDER; exports.PackageSearchFieldPlaceholder = PackageSearchFieldPlaceholder; exports.SoftwareScheduleFields = SoftwareScheduleFields; exports.SOFTWARE_ACTION_COPY = SOFTWARE_ACTION_COPY; exports.SOFTWARE_ACTION_DETAIL_TITLE = SOFTWARE_ACTION_DETAIL_TITLE; exports.softwareActionCopy = softwareActionCopy; exports.newSoftwareRow = newSoftwareRow; exports.SoftwareRowFields = SoftwareRowFields; exports.SoftwareActionForm = SoftwareActionForm; exports.LogDrawer = LogDrawer; exports.SYSTEM_SOURCE_LABEL = SYSTEM_SOURCE_LABEL; exports.logSourceLabels = logSourceLabels; exports.LogsPageView = LogsPageView; exports.LogCopyIconButton = LogCopyIconButton; exports.LOG_COLUMN_WIDTHS = LOG_COLUMN_WIDTHS; exports.ToolBadge = ToolBadge; exports.LogsTableView = LogsTableView; exports.LogsTableSkeleton = LogsTableSkeleton; exports.logSeverityVariant = logSeverityVariant; exports.SCRIPT_EXECUTION_STATUS_PRESENTATION = SCRIPT_EXECUTION_STATUS_PRESENTATION; exports.scriptExecutionStatus = scriptExecutionStatus; exports.ExecutionSourceBadge = ExecutionSourceBadge; exports.ExecutionTimestampCell = ExecutionTimestampCell; exports.ExecutionStatusCell = ExecutionStatusCell; exports.ExecutionDeviceCell = ExecutionDeviceCell; exports.ExecutionInitiatorCell = ExecutionInitiatorCell; exports.ExecutionResultCell = ExecutionResultCell; exports.ScriptExecutionResult = ScriptExecutionResult; exports.ScriptNameCell = ScriptNameCell; exports.ScheduleDateTimeCell = ScheduleDateTimeCell; exports.SCRIPT_COLUMNS = SCRIPT_COLUMNS; exports.SCHEDULE_COLUMNS = SCHEDULE_COLUMNS; exports.EXECUTION_COLUMNS = EXECUTION_COLUMNS; exports.SCRIPTS_TAB_WIDTHS = SCRIPTS_TAB_WIDTHS; exports.SCRIPTS_TABLE_COLUMNS = SCRIPTS_TABLE_COLUMNS; exports.SCHEDULES_TABLE_COLUMNS = SCHEDULES_TABLE_COLUMNS; exports.EXECUTIONS_TABLE_COLUMNS = EXECUTIONS_TABLE_COLUMNS; exports.scriptsColumnMeta = scriptsColumnMeta; exports.RowActionsCell = RowActionsCell; exports.OpenInNewTabCell = OpenInNewTabCell; exports.ScriptExecutionsTable = ScriptExecutionsTable; exports.ScriptSchedulesTable = ScriptSchedulesTable; exports.SCRIPT_SHELL_TYPES = SCRIPT_SHELL_TYPES; exports.scriptShellType = scriptShellType; exports.scriptShellLabel = scriptShellLabel; exports.ScriptShellBadge = ScriptShellBadge; exports.ScriptsTable = ScriptsTable; exports.SCRIPTS_TABS = SCRIPTS_TABS; exports.SCRIPT_SCHEDULE_TRIGGER = SCRIPT_SCHEDULE_TRIGGER; exports.SCHEDULE_TIME_REFERENCE = SCHEDULE_TIME_REFERENCE; exports.SCHEDULE_OFFLINE_BEHAVIOR = SCHEDULE_OFFLINE_BEHAVIOR; exports.isEventTrigger = isEventTrigger; exports.isDeviceLocalTime = isDeviceLocalTime; exports.DURATION_UNIT_VALUES = DURATION_UNIT_VALUES; exports.DURATION_UNIT_SECONDS = DURATION_UNIT_SECONDS; exports.DURATION_UNIT_LABELS = DURATION_UNIT_LABELS; exports.MIN_REPEAT_MINUTES = MIN_REPEAT_MINUTES; exports.DURATION_UNIT_OPTIONS = DURATION_UNIT_OPTIONS; exports.snapRepeatInterval = snapRepeatInterval; exports.isRetryOnReconnect = isRetryOnReconnect; exports.MIN_RECONNECT_MINUTES = MIN_RECONNECT_MINUTES; exports.snapReconnectInterval = snapReconnectInterval; exports.DEFAULT_RECONNECT_WINDOW = DEFAULT_RECONNECT_WINDOW; exports.isSlotOnGrid = isSlotOnGrid; exports.getTimeSlotOptions = getTimeSlotOptions; exports.slotToLabel = slotToLabel; exports.startOfToday = startOfToday; exports.earliestDeviceLocalDay = earliestDeviceLocalDay; exports.earliestScheduleDay = earliestScheduleDay; exports.isScheduleStartInPast = isScheduleStartInPast; exports.PAST_START_MESSAGE = PAST_START_MESSAGE; exports.NO_SLOTS_TODAY_MESSAGE = NO_SLOTS_TODAY_MESSAGE; exports.isStartInPastAndChanged = isStartInPastAndChanged; exports.dateToTimeSlot = dateToTimeSlot; exports.applyTimeSlot = applyTimeSlot; exports.fromScheduleInstant = fromScheduleInstant; exports.EMPTY_SCHEDULE_SCRIPT_ROW = EMPTY_SCHEDULE_SCRIPT_ROW; exports.SCHEDULE_TRIGGER_OPTIONS = SCHEDULE_TRIGGER_OPTIONS; exports.SCHEDULE_TIME_REFERENCE_OPTIONS = SCHEDULE_TIME_REFERENCE_OPTIONS; exports.SCHEDULE_OFFLINE_BEHAVIOR_OPTIONS = SCHEDULE_OFFLINE_BEHAVIOR_OPTIONS; exports.DEFAULT_SCHEDULE_FORM_VALUES = DEFAULT_SCHEDULE_FORM_VALUES; exports.ScheduleIntervalInput = ScheduleIntervalInput; exports.ScheduleOfflineFields = ScheduleOfflineFields; exports.SLOT_STICKINESS = SLOT_STICKINESS; exports.SortableList = SortableList; exports.ScriptArguments = ScriptArguments; exports.SortableMoveButtons = SortableMoveButtons; exports.useSortableItem = useSortableItem; exports.ScheduleScriptPickerCard = ScheduleScriptPickerCard; exports.ScheduleScriptsField = ScheduleScriptsField; exports.ScheduleTimingFields = ScheduleTimingFields; exports.ScheduleFormFields = ScheduleFormFields; exports.ScheduleScriptSearchField = ScheduleScriptSearchField; exports.KNOWLEDGE_BASE_ITEM_ICON = KNOWLEDGE_BASE_ITEM_ICON; exports.getKnowledgeBaseOpenColumn = getKnowledgeBaseOpenColumn; exports.getKnowledgeBaseColumns = getKnowledgeBaseColumns; exports.KnowledgeBaseTableBody = KnowledgeBaseTableBody; exports.TicketAttachmentsList = TicketAttachmentsList; exports.TicketDetailSection = TicketDetailSection; exports.KnowledgeBaseArticleView = KnowledgeBaseArticleView; exports.SortableDragHandle = SortableDragHandle; exports.TicketStatusConfigList = TicketStatusConfigList; exports.ConversationCard = ConversationCard; exports.SnapCarouselControlsSkeleton = SnapCarouselControlsSkeleton; exports.SnapCarousel = SnapCarousel; exports.capabilityTabId = capabilityTabId; exports.CapabilityExplorerSkeleton = CapabilityExplorerSkeleton; exports.CapabilityExplorer = CapabilityExplorer; exports.TableHeader = TableHeader; exports.TableCell = TableCell; exports.TableCardSkeleton = TableCardSkeleton; exports.TableRow = TableRow; exports.Table = Table; exports.TableDescriptionCell = TableDescriptionCell; exports.TableTimestampCell = TableTimestampCell; exports.QueryReportTableHeader = QueryReportTableHeader; exports.QueryReportTableRow = QueryReportTableRow; exports.QueryReportTableSkeleton = QueryReportTableSkeleton; exports.deriveColumns = deriveColumns; exports.exportToCSV = exportToCSV; exports.QueryReportTable = QueryReportTable; exports.SearchInput = SearchInput; exports.FilterListItem = FilterListItem; exports.FilterList = FilterList; exports.TagSearchInput = TagSearchInput; exports.MarkdownEditor = MarkdownEditor; exports.FileUpload = FileUpload; exports.ImageUploader = ImageUploader; exports.TICKET_STATUS_COLOR_PRESETS = TICKET_STATUS_COLOR_PRESETS; exports.CUSTOM_PRESET_KEY = CUSTOM_PRESET_KEY; exports.DEFAULT_CUSTOM_STATUS_COLOR = DEFAULT_CUSTOM_STATUS_COLOR; exports.ColorPresetSelect = ColorPresetSelect; exports.ColorPickerInput = ColorPickerInput; exports.TicketStatusConfigRow = TicketStatusConfigRow; exports.formatTestRunDuration = formatTestRunDuration; exports.TestResultsSkeleton = TestResultsSkeleton; exports.TestResultsTable = TestResultsTable; exports.TestRunErrorBanner = TestRunErrorBanner; exports.TestRunResults = TestRunResults; exports.TimingStat = TimingStat; exports.TestRunStatusStat = TestRunStatusStat; exports.useTestRunState = useTestRunState; exports.TicketNoteCard = TicketNoteCard; exports.TicketNotesSection = TicketNotesSection; exports.TicketInfoSection = TicketInfoSection; exports.renderTicketStatusOption = renderTicketStatusOption; exports.renderTicketAssigneeOption = renderTicketAssigneeOption; exports.TakeOverTicketModal = TakeOverTicketModal; exports.ReopenTicketModal = ReopenTicketModal; exports.ReopenTicketRequestModal = ReopenTicketRequestModal; exports.PHOTO_WALL_FRAME = PHOTO_WALL_FRAME; exports.photoWallRequestWidth = photoWallRequestWidth; exports.photoOrientation = photoOrientation; exports.arrangePhotoWall = arrangePhotoWall; exports.PhotoWall = PhotoWall; exports.FilterPillRow = FilterPillRow; exports.LazyMount = LazyMount; exports.AppWindowFrame = AppWindowFrame; exports.PhoneFrame = PhoneFrame; exports.NotificationStack = NotificationStack; exports.StripCard = StripCard; exports.LeaderRow = LeaderRow; exports.AnalyzingState = AnalyzingState; exports.IncidentStatusLine = IncidentStatusLine; exports.IncidentFeed = IncidentFeed; exports.useBetweenAnchors = useBetweenAnchors; exports.StickyActionBar = StickyActionBar; exports.IconTile = IconTile;
|