@flamingo-stack/openframe-frontend-core 0.0.740 → 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-3ZIQOYNX.cjs → chunk-4XL4YEZM.cjs} +3 -3
- package/dist/{chunk-WFPCCBOM.cjs → chunk-7AM3AFM4.cjs} +10 -10
- package/dist/{chunk-KHXZFLIN.cjs → chunk-DKOLQPE7.cjs} +8 -2
- package/dist/{chunk-7UIQPMBJ.cjs → chunk-FQN6STIM.cjs} +1 -144
- package/dist/{chunk-ZLTCQKTD.cjs → chunk-I6UE6YVM.cjs} +2 -2
- package/dist/{chunk-VC4IV3AY.cjs → chunk-IK2RJUEA.cjs} +2049 -199
- package/dist/{chunk-D5KEWWLW.cjs → chunk-ITPEFCQ2.cjs} +10 -10
- package/dist/{chunk-2Y5Y4FLM.cjs → chunk-JFS6TZDX.cjs} +15 -15
- package/dist/{chunk-VU4CKUJW.cjs → chunk-LZ6NOVXX.cjs} +23 -23
- package/dist/{chunk-UW3YXDC4.cjs → chunk-QEUGYHFB.cjs} +4 -4
- package/dist/{chunk-II4QMH26.cjs → chunk-STEJZPIO.cjs} +3 -3
- package/dist/{chunk-4RLGLB45.cjs → chunk-XJ36TEGE.cjs} +11 -11
- package/dist/{chunk-BDA5F6RM.cjs → chunk-YQ37ZCD2.cjs} +2 -2
- package/dist/{chunk-LLAC2UZ3.cjs → chunk-ZJPDGVA6.cjs} +3 -3
- package/dist/{chunk-SWR22DOZ.cjs → chunk-ZYOS7LVQ.cjs} +22 -22
- package/dist/{cloud-tenants-PVXDI5MU.cjs → cloud-tenants-MVJK52I2.cjs} +12 -12
- package/dist/components/case-studies/index.cjs +10 -10
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/faq/index.cjs +3 -3
- 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 +140 -2
- 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 +44 -44
- package/dist/components/index.cjs +162 -24
- package/dist/components/meeting-scheduler/index.cjs +11 -11
- package/dist/components/navigation/index.cjs +3 -3
- package/dist/components/onboarding-guides/index.cjs +4 -4
- 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/tickets/index.cjs +5 -5
- package/dist/components/ui/index.cjs +2 -2
- package/dist/{devices-TWEA7XOR.cjs → devices-W3S7Q2PG.cjs} +8 -8
- package/dist/index.cjs +143 -5
- package/dist/{knowledge-4GQDBNQB.cjs → knowledge-AIYQ4FC3.cjs} +6 -6
- package/dist/{logs-EVU6GJHZ.cjs → logs-7SHJ2ARE.cjs} +24 -24
- package/dist/{policies-OZUEA5YS.cjs → policies-EIZJ5SUP.cjs} +9 -9
- package/dist/{remote-session-DNFZ5OLY.cjs → remote-session-BZMNE6D2.cjs} +5 -5
- package/dist/scripts-J2FWC7E4.cjs +2112 -0
- package/dist/{software-update-BLIVYOY2.cjs → software-update-QAMNASVF.cjs} +13 -17
- package/dist/{tickets-board-CKZRB6YV.cjs → tickets-board-CEDHD3KB.cjs} +17 -17
- 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
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunk7AM3AFM4cjs = require('./chunk-7AM3AFM4.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
8
|
+
var _chunkSTEJZPIOcjs = require('./chunk-STEJZPIO.cjs');
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
var
|
|
18
|
+
var _chunkIK2RJUEAcjs = require('./chunk-IK2RJUEA.cjs');
|
|
19
19
|
require('./chunk-O67V3HJR.cjs');
|
|
20
20
|
require('./chunk-3HPB4H4C.cjs');
|
|
21
21
|
|
|
@@ -1879,10 +1879,6 @@ var chrome = {
|
|
|
1879
1879
|
version: "141.0.7390.66",
|
|
1880
1880
|
packageType: null
|
|
1881
1881
|
};
|
|
1882
|
-
function demoDay() {
|
|
1883
|
-
const [year, month, day] = _chunkKHXZFLINcjs.DEMO_NOW.slice(0, 10).split("-").map(Number);
|
|
1884
|
-
return new Date(year, month - 1, day);
|
|
1885
|
-
}
|
|
1886
1882
|
var TONIGHT_11_PM = { value: "23:00", label: "11:00 PM" };
|
|
1887
1883
|
var timing = {
|
|
1888
1884
|
timeReferenceOptions: [
|
|
@@ -1895,25 +1891,25 @@ var timing = {
|
|
|
1895
1891
|
TONIGHT_11_PM,
|
|
1896
1892
|
{ value: "23:30", label: "11:30 PM" }
|
|
1897
1893
|
],
|
|
1898
|
-
getEarliestDay: demoDay,
|
|
1894
|
+
getEarliestDay: _chunkDKOLQPE7cjs.demoDay,
|
|
1899
1895
|
getStartError: () => void 0
|
|
1900
1896
|
};
|
|
1901
1897
|
var initialValues = {
|
|
1902
1898
|
rows: [{ key: "row-0", packageManager: "WINGET", pkg: chrome }],
|
|
1903
1899
|
mode: "schedule",
|
|
1904
|
-
date: demoDay(),
|
|
1900
|
+
date: _chunkDKOLQPE7cjs.demoDay.call(void 0, ),
|
|
1905
1901
|
time: TONIGHT_11_PM.value,
|
|
1906
1902
|
timeReference: "SERVER"
|
|
1907
1903
|
};
|
|
1908
1904
|
function buildSoftwareUpdateFixture(cast) {
|
|
1909
|
-
const devices =
|
|
1905
|
+
const devices = _chunk7AM3AFM4cjs.buildDevicesFixture.call(void 0, cast).devices.filter((device) => device.osType === "WINDOWS");
|
|
1910
1906
|
return {
|
|
1911
1907
|
action: "UPDATE",
|
|
1912
1908
|
package: chrome,
|
|
1913
1909
|
timing,
|
|
1914
1910
|
initialValues,
|
|
1915
1911
|
devices,
|
|
1916
|
-
selectedIds: /* @__PURE__ */ new Set([
|
|
1912
|
+
selectedIds: /* @__PURE__ */ new Set([_chunkDKOLQPE7cjs.DEMO_DEVICES.reception.id, _chunkDKOLQPE7cjs.DEMO_DEVICES.samT14.id, _chunkDKOLQPE7cjs.DEMO_DEVICES.frontDesk.id])
|
|
1917
1913
|
};
|
|
1918
1914
|
}
|
|
1919
1915
|
|
|
@@ -1926,26 +1922,26 @@ function StaticPackageField({ value }) {
|
|
|
1926
1922
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1927
1923
|
_chunkDSVNFRY5cjs.Autocomplete,
|
|
1928
1924
|
{
|
|
1929
|
-
label:
|
|
1925
|
+
label: _chunkIK2RJUEAcjs.PACKAGE_SEARCH_LABEL,
|
|
1930
1926
|
labelVariant: "large",
|
|
1931
1927
|
options: value ? [{ value: value.id, label: value.name, description: _nullishCoalesce(value.description, () => ( void 0)) }] : [],
|
|
1932
1928
|
value: _nullishCoalesce(_optionalChain([value, 'optionalAccess', _ => _.id]), () => ( null)),
|
|
1933
1929
|
onChange: noop,
|
|
1934
|
-
placeholder:
|
|
1930
|
+
placeholder: _chunkIK2RJUEAcjs.PACKAGE_SEARCH_PLACEHOLDER
|
|
1935
1931
|
}
|
|
1936
1932
|
);
|
|
1937
1933
|
}
|
|
1938
1934
|
var renderPackageSearch = (field) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, StaticPackageField, { ...field });
|
|
1939
1935
|
var NO_NARROWING = { columnFilters: [], tags: [] };
|
|
1940
1936
|
function SoftwareUpdateScreen({ compact = false }) {
|
|
1941
|
-
const cast =
|
|
1937
|
+
const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
|
|
1942
1938
|
const fixture = _react.useMemo.call(void 0, () => buildSoftwareUpdateFixture(cast), [cast]);
|
|
1943
1939
|
const selected = _react.useMemo.call(void 0,
|
|
1944
1940
|
() => fixture.devices.filter((device) => fixture.selectedIds.has(device.id)),
|
|
1945
1941
|
[fixture.devices, fixture.selectedIds]
|
|
1946
1942
|
);
|
|
1947
1943
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1948
|
-
|
|
1944
|
+
_chunkIK2RJUEAcjs.SoftwareActionForm,
|
|
1949
1945
|
{
|
|
1950
1946
|
action: fixture.action,
|
|
1951
1947
|
showHeader: false,
|
|
@@ -1957,7 +1953,7 @@ function SoftwareUpdateScreen({ compact = false }) {
|
|
|
1957
1953
|
initialValues: fixture.initialValues,
|
|
1958
1954
|
renderPackageSearch,
|
|
1959
1955
|
renderDevicePicker: () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1960
|
-
|
|
1956
|
+
_chunkIK2RJUEAcjs.DeviceSelector,
|
|
1961
1957
|
{
|
|
1962
1958
|
devices: selected,
|
|
1963
1959
|
loading: false,
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
"use client";
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkSTEJZPIOcjs = require('./chunk-STEJZPIO.cjs');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
|
|
@@ -1843,8 +1843,8 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1843
1843
|
ticket("tk-1051", "Printer offline at the front desk", "ACTIVE", {
|
|
1844
1844
|
ticketNumber: "1051",
|
|
1845
1845
|
agent: "fae",
|
|
1846
|
-
deviceHostnames: [
|
|
1847
|
-
organizationName:
|
|
1846
|
+
deviceHostnames: [_chunkDKOLQPE7cjs.DEMO_DEVICES.frontDesk.hostname],
|
|
1847
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.harbor.name,
|
|
1848
1848
|
priority: "medium",
|
|
1849
1849
|
hasNewMessage: true,
|
|
1850
1850
|
activity: { kind: "ai-working" }
|
|
@@ -1852,7 +1852,7 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1852
1852
|
ticket("tk-1052", "New hire starts Monday", "ACTIVE", {
|
|
1853
1853
|
ticketNumber: "1052",
|
|
1854
1854
|
agent: "mingo",
|
|
1855
|
-
organizationName:
|
|
1855
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.acme.name,
|
|
1856
1856
|
priority: "low",
|
|
1857
1857
|
tags: ["onboarding"]
|
|
1858
1858
|
})
|
|
@@ -1861,8 +1861,8 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1861
1861
|
ticket("tk-1049", "Acrobat Pro for Maya", "TECH_REQUIRED", {
|
|
1862
1862
|
ticketNumber: "1049",
|
|
1863
1863
|
agent: "fae",
|
|
1864
|
-
deviceHostnames: [
|
|
1865
|
-
organizationName:
|
|
1864
|
+
deviceHostnames: [_chunkDKOLQPE7cjs.DEMO_DEVICES.mayaAir.hostname],
|
|
1865
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.northbridge.name,
|
|
1866
1866
|
priority: "high",
|
|
1867
1867
|
assignees: [dana],
|
|
1868
1868
|
pendingApproval: {
|
|
@@ -1874,8 +1874,8 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1874
1874
|
ticket("tk-1050", "VPN keeps dropping on the train", "TECH_REQUIRED", {
|
|
1875
1875
|
ticketNumber: "1050",
|
|
1876
1876
|
agent: "fae",
|
|
1877
|
-
deviceHostnames: [
|
|
1878
|
-
organizationName:
|
|
1877
|
+
deviceHostnames: [_chunkDKOLQPE7cjs.DEMO_DEVICES.samT14.hostname],
|
|
1878
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.northbridge.name,
|
|
1879
1879
|
priority: "medium",
|
|
1880
1880
|
assignees: [alex],
|
|
1881
1881
|
escalatedByUser: true
|
|
@@ -1884,7 +1884,7 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1884
1884
|
_chunkO67V3HJRcjs.columnFromTicketStatus.call(void 0, "ON_HOLD", [
|
|
1885
1885
|
ticket("tk-1046", "Replace the conference room display", "ON_HOLD", {
|
|
1886
1886
|
ticketNumber: "1046",
|
|
1887
|
-
organizationName:
|
|
1887
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.acme.name,
|
|
1888
1888
|
priority: "low",
|
|
1889
1889
|
assignees: [alex],
|
|
1890
1890
|
activity: { kind: "waiting-external" }
|
|
@@ -1896,20 +1896,20 @@ function buildTicketsBoardFixture(cast) {
|
|
|
1896
1896
|
ticket("tk-1048", "Slow laptop", "RESOLVED", {
|
|
1897
1897
|
ticketNumber: "1048",
|
|
1898
1898
|
agent: "fae",
|
|
1899
|
-
deviceHostnames: [
|
|
1900
|
-
organizationName:
|
|
1899
|
+
deviceHostnames: [_chunkDKOLQPE7cjs.DEMO_DEVICES.samT14.hostname],
|
|
1900
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.northbridge.name
|
|
1901
1901
|
}),
|
|
1902
1902
|
ticket("tk-1047", "Teams will not open", "RESOLVED", {
|
|
1903
1903
|
ticketNumber: "1047",
|
|
1904
1904
|
agent: "fae",
|
|
1905
|
-
deviceHostnames: [
|
|
1906
|
-
organizationName:
|
|
1905
|
+
deviceHostnames: [_chunkDKOLQPE7cjs.DEMO_DEVICES.mayaAir.hostname],
|
|
1906
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.northbridge.name
|
|
1907
1907
|
}),
|
|
1908
1908
|
ticket("tk-1045", "Turned the firewall back on", "RESOLVED", {
|
|
1909
1909
|
ticketNumber: "1045",
|
|
1910
1910
|
agent: "mingo",
|
|
1911
|
-
deviceHostnames: [
|
|
1912
|
-
organizationName:
|
|
1911
|
+
deviceHostnames: [_chunkDKOLQPE7cjs.DEMO_DEVICES.leoThinkPad.hostname],
|
|
1912
|
+
organizationName: _chunkDKOLQPE7cjs.DEMO_ORGANIZATIONS.harbor.name
|
|
1913
1913
|
})
|
|
1914
1914
|
],
|
|
1915
1915
|
{ total: 14 }
|
|
@@ -1923,7 +1923,7 @@ var noop = () => {
|
|
|
1923
1923
|
};
|
|
1924
1924
|
var FOLDED = { ON_HOLD: true, RESOLVED: true };
|
|
1925
1925
|
function TicketsBoardScreen({ compact = false }) {
|
|
1926
|
-
const cast =
|
|
1926
|
+
const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
|
|
1927
1927
|
const board = _react.useMemo.call(void 0, () => buildTicketsBoardFixture(cast), [cast]);
|
|
1928
1928
|
const columns = compact ? board.filter((column) => column.id !== "ON_HOLD") : board;
|
|
1929
1929
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-m)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkO67V3HJRcjs.Board, { columns, onChange: noop, initialCollapsed: compact ? void 0 : FOLDED }) });
|
package/package.json
CHANGED
|
@@ -91,8 +91,6 @@ const PANEL_TOP_HEIGHT_CLASS = 'h-[256px]';
|
|
|
91
91
|
const PANEL_SCREEN_HEIGHT_CLASS = 'h-[420px]';
|
|
92
92
|
const PANEL_FOOTER_HEIGHT_CLASS = 'h-[52px]';
|
|
93
93
|
const CARD_HEIGHT_CLASS = 'h-[700px]';
|
|
94
|
-
/** Both, for the box shown before the layout is known (literal, so the class is generated). */
|
|
95
|
-
const SKELETON_HEIGHT_CLASS = 'h-[700px] content-lg:h-[824px]';
|
|
96
94
|
|
|
97
95
|
/** The element id of a job's tab (never the job's own id: that is the host's anchor). */
|
|
98
96
|
export const capabilityTabId = (id: string): string => `${id}-tab`;
|
|
@@ -169,12 +167,141 @@ function Example({
|
|
|
169
167
|
);
|
|
170
168
|
}
|
|
171
169
|
|
|
172
|
-
/**
|
|
173
|
-
|
|
170
|
+
/** A text placeholder in its line's own box (`text-h…` on the line), so a placeholder line is the loaded line's height. */
|
|
171
|
+
function LineBar({ line, width }: { line: string; width: string }) {
|
|
174
172
|
return (
|
|
175
|
-
<div className={
|
|
176
|
-
<
|
|
177
|
-
|
|
173
|
+
<div className={line}>
|
|
174
|
+
<span className={cn('inline-block h-[0.7em] animate-pulse rounded bg-ods-border align-middle', width)} />
|
|
175
|
+
</div>
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** The example's two turns, in the loaded example's own box. */
|
|
180
|
+
function ExampleSkeleton({ className }: { className?: string }) {
|
|
181
|
+
const turn = (first: boolean) => (
|
|
182
|
+
<div className={cn('flex min-w-0 gap-2.5', !first && 'border-t border-ods-border pt-3')}>
|
|
183
|
+
<Skeleton className="size-6 shrink-0 rounded-full" />
|
|
184
|
+
<div className="flex min-w-0 flex-1 flex-col gap-1">
|
|
185
|
+
<LineBar line="text-h6" width="w-28" />
|
|
186
|
+
<div className="min-h-[2lh] text-h4">
|
|
187
|
+
<LineBar line="text-h4" width="w-full" />
|
|
188
|
+
<LineBar line="text-h4" width="w-2/3" />
|
|
189
|
+
</div>
|
|
190
|
+
</div>
|
|
191
|
+
</div>
|
|
192
|
+
);
|
|
193
|
+
return (
|
|
194
|
+
<div
|
|
195
|
+
className={cn(
|
|
196
|
+
'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)]',
|
|
197
|
+
className,
|
|
198
|
+
)}
|
|
199
|
+
>
|
|
200
|
+
{turn(true)}
|
|
201
|
+
{turn(false)}
|
|
202
|
+
</div>
|
|
203
|
+
);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/** One job in the list or a card's head: the icon tile, the title, the caption. */
|
|
207
|
+
function JobHeadSkeleton() {
|
|
208
|
+
return (
|
|
209
|
+
<>
|
|
210
|
+
<Skeleton className="size-9 shrink-0 rounded-lg" />
|
|
211
|
+
<div className="flex min-w-0 flex-1 flex-col">
|
|
212
|
+
<LineBar line="text-h4" width="w-32" />
|
|
213
|
+
<div className="mt-0.5">
|
|
214
|
+
<LineBar line="text-h6" width="w-40" />
|
|
215
|
+
</div>
|
|
216
|
+
</div>
|
|
217
|
+
</>
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
* The explorer while its data loads, drawn as both layouts in their own boxes
|
|
223
|
+
* (the width decides which shows, by CSS, since it is not known yet): the list
|
|
224
|
+
* of jobs beside the panel with its copy, example, screen and footer, or the
|
|
225
|
+
* first card over the carousel's controls. Every box is the loaded one's, so
|
|
226
|
+
* nothing moves when the jobs arrive.
|
|
227
|
+
*/
|
|
228
|
+
export function CapabilityExplorerSkeleton({ className, count = 8 }: { className?: string; count?: number }) {
|
|
229
|
+
return (
|
|
230
|
+
<div className={className} aria-hidden>
|
|
231
|
+
<div className="content-lg:hidden">
|
|
232
|
+
<div className="flex gap-[var(--spacing-system-sf)] overflow-hidden">
|
|
233
|
+
<div
|
|
234
|
+
className={cn(
|
|
235
|
+
'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)]',
|
|
236
|
+
CARD_HEIGHT_CLASS,
|
|
237
|
+
)}
|
|
238
|
+
>
|
|
239
|
+
<div className="flex min-w-0 items-center gap-3">
|
|
240
|
+
<JobHeadSkeleton />
|
|
241
|
+
</div>
|
|
242
|
+
<div className="min-h-[3lh] text-h6">
|
|
243
|
+
<LineBar line="text-h6" width="w-full" />
|
|
244
|
+
<LineBar line="text-h6" width="w-5/6" />
|
|
245
|
+
</div>
|
|
246
|
+
<Skeleton className="h-[300px] shrink-0 rounded-lg" />
|
|
247
|
+
<ExampleSkeleton className="shrink-0" />
|
|
248
|
+
</div>
|
|
249
|
+
</div>
|
|
250
|
+
<SnapCarouselControlsSkeleton />
|
|
251
|
+
</div>
|
|
252
|
+
|
|
253
|
+
<div
|
|
254
|
+
className={cn(
|
|
255
|
+
'hidden grid-cols-[minmax(0,360px)_minmax(0,1fr)] gap-[var(--spacing-system-lf)] content-lg:grid',
|
|
256
|
+
PANEL_HEIGHT_CLASS,
|
|
257
|
+
)}
|
|
258
|
+
>
|
|
259
|
+
<div className="flex min-h-0 flex-col gap-1 overflow-hidden">
|
|
260
|
+
{Array.from({ length: count }, (_, i) => (
|
|
261
|
+
<div
|
|
262
|
+
key={i}
|
|
263
|
+
className={cn(
|
|
264
|
+
'flex min-w-0 shrink-0 items-center gap-3.5 rounded-lg border px-3.5 py-3',
|
|
265
|
+
i === 0 ? 'border-ods-border bg-ods-card' : 'border-transparent',
|
|
266
|
+
)}
|
|
267
|
+
>
|
|
268
|
+
<JobHeadSkeleton />
|
|
269
|
+
</div>
|
|
270
|
+
))}
|
|
271
|
+
</div>
|
|
272
|
+
<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">
|
|
273
|
+
<div className={cn('grid shrink-0 grid-cols-[minmax(0,1fr)_minmax(0,380px)] gap-8', PANEL_TOP_HEIGHT_CLASS)}>
|
|
274
|
+
<div className="flex min-w-0 flex-col overflow-hidden">
|
|
275
|
+
<div className="mb-2">
|
|
276
|
+
<LineBar line="text-h2" width="w-64" />
|
|
277
|
+
</div>
|
|
278
|
+
<div className="min-h-[3lh] text-h4">
|
|
279
|
+
<LineBar line="text-h4" width="w-full" />
|
|
280
|
+
<LineBar line="text-h4" width="w-4/5" />
|
|
281
|
+
</div>
|
|
282
|
+
<div className="mt-auto grid grid-cols-1 gap-2">
|
|
283
|
+
{[0, 1, 2].map(i => (
|
|
284
|
+
<div key={i} className="flex min-w-0 items-center gap-2.5">
|
|
285
|
+
<Skeleton className="size-4 shrink-0 rounded-full" />
|
|
286
|
+
<LineBar line="text-h6" width={i === 1 ? 'w-56' : 'w-48'} />
|
|
287
|
+
</div>
|
|
288
|
+
))}
|
|
289
|
+
</div>
|
|
290
|
+
</div>
|
|
291
|
+
<ExampleSkeleton />
|
|
292
|
+
</div>
|
|
293
|
+
<Skeleton className={cn('shrink-0 rounded-xl', PANEL_SCREEN_HEIGHT_CLASS)} />
|
|
294
|
+
<div
|
|
295
|
+
className={cn(
|
|
296
|
+
'flex min-w-0 shrink-0 items-center gap-[var(--spacing-system-sf)]',
|
|
297
|
+
PANEL_FOOTER_HEIGHT_CLASS,
|
|
298
|
+
)}
|
|
299
|
+
>
|
|
300
|
+
<LineBar line="text-h5" width="w-16" />
|
|
301
|
+
<Skeleton className="h-7 w-36 rounded-md" />
|
|
302
|
+
</div>
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
178
305
|
</div>
|
|
179
306
|
);
|
|
180
307
|
}
|
|
@@ -100,6 +100,7 @@ export * from './board';
|
|
|
100
100
|
export * from './devices';
|
|
101
101
|
export * from './software';
|
|
102
102
|
export * from './logs';
|
|
103
|
+
export * from './scripts';
|
|
103
104
|
export * from './knowledge-base';
|
|
104
105
|
export * from './sortable-list';
|
|
105
106
|
export * from './ticket-status-config-list';
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
4
|
+
import { cn } from '../../../utils/cn';
|
|
5
|
+
import { AgentMark } from '../../agent-mark';
|
|
6
|
+
import { MonitorIcon } from '../../icons-v2-generated/devices/monitor-icon';
|
|
7
|
+
import { Tag } from '../../ui/tag';
|
|
8
|
+
import { TruncateText } from '../../ui/truncate-text';
|
|
9
|
+
import { scriptExecutionStatus } from './execution-status';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* The cells of the Execution History (Figma 155:38356) and the Result block
|
|
13
|
+
* of an execution's page. Each takes display values: the product maps its
|
|
14
|
+
* Relay records into them and keeps what only it has (links to an employee
|
|
15
|
+
* page, the deleted-user avatar) as slots.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
/** How an execution was dispatched, as the chip beside the person it ran for. */
|
|
19
|
+
export function ExecutionSourceBadge({ source, className }: { source: string | null | undefined; className?: string }) {
|
|
20
|
+
// A `span`: the chip sits inside a line of text. It never shrinks; the name beside it ellipsizes.
|
|
21
|
+
// Labels are sentence case here; the Tag's h5 type scale uppercases them.
|
|
22
|
+
const tagProps = { as: 'span', variant: 'outline', className: cn('shrink-0', className) } as const;
|
|
23
|
+
|
|
24
|
+
if (source === 'SCHEDULED') return <Tag {...tagProps} label="Scheduled" />;
|
|
25
|
+
if (source === 'AI_ASSISTANT') {
|
|
26
|
+
// Mingo's own mark, the way the product stamps it everywhere else.
|
|
27
|
+
return <Tag {...tagProps} label="Mingo" icon={<AgentMark agent="mingo" className="size-4" />} />;
|
|
28
|
+
}
|
|
29
|
+
// MANUAL draws nothing: the person is the technician who clicked Run, so a chip would restate the name.
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* The Execution column: when it was dispatched over its id. The date filter
|
|
35
|
+
* sits on this column's header because its first line is that date.
|
|
36
|
+
*/
|
|
37
|
+
export function ExecutionTimestampCell({ timestamp, executionId }: { timestamp: string; executionId: string }) {
|
|
38
|
+
return (
|
|
39
|
+
<div className="flex min-w-0 flex-col justify-center gap-1">
|
|
40
|
+
<TruncateText>{timestamp}</TruncateText>
|
|
41
|
+
<TruncateText variant="h6" tone="secondary">
|
|
42
|
+
{executionId}
|
|
43
|
+
</TruncateText>
|
|
44
|
+
</div>
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** A status as its tag; the flex row keeps the tag at its own width in a stretch column. */
|
|
49
|
+
export function ExecutionStatusCell({ status }: { status: string | null | undefined }) {
|
|
50
|
+
const presentation = scriptExecutionStatus(status);
|
|
51
|
+
return (
|
|
52
|
+
<div className="flex">
|
|
53
|
+
<Tag label={presentation?.label ?? String(status ?? '')} variant={presentation?.variant ?? 'grey'} />
|
|
54
|
+
</div>
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The device an execution ran on, with its customer under it. The icon rides
|
|
60
|
+
* with the name only; the customer line starts under the icon, as the design
|
|
61
|
+
* has it. `name` is a node so a host can draw its own empty mark.
|
|
62
|
+
*/
|
|
63
|
+
export function ExecutionDeviceCell({ name, organization }: { name: ReactNode; organization?: string | null }) {
|
|
64
|
+
return (
|
|
65
|
+
<div className="flex min-w-0 flex-col justify-center gap-1">
|
|
66
|
+
<div className="flex min-w-0 items-center gap-1">
|
|
67
|
+
<MonitorIcon className="size-6 shrink-0 text-ods-text-secondary" />
|
|
68
|
+
{/* So the name shrinks and ellipsizes next to the icon. */}
|
|
69
|
+
<div className="min-w-0 flex-1">{typeof name === 'string' ? <TruncateText>{name}</TruncateText> : name}</div>
|
|
70
|
+
</div>
|
|
71
|
+
{organization && (
|
|
72
|
+
<TruncateText variant="h6" tone="secondary">
|
|
73
|
+
{organization}
|
|
74
|
+
</TruncateText>
|
|
75
|
+
)}
|
|
76
|
+
</div>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Who an execution ran for, with the chip of what dispatched it: a schedule or
|
|
82
|
+
* Mingo runs on a technician's behalf, so the chip qualifies the name instead
|
|
83
|
+
* of standing in for it. The script's name is the second line where a list
|
|
84
|
+
* runs several scripts (a schedule's); a script's own list leaves it out.
|
|
85
|
+
* The avatar and the name are slots: the product links the name to the
|
|
86
|
+
* person's page and draws a deleted account its own way.
|
|
87
|
+
*/
|
|
88
|
+
export function ExecutionInitiatorCell({
|
|
89
|
+
avatar,
|
|
90
|
+
name,
|
|
91
|
+
source,
|
|
92
|
+
scriptName,
|
|
93
|
+
}: {
|
|
94
|
+
avatar: ReactNode;
|
|
95
|
+
name: ReactNode;
|
|
96
|
+
source?: string | null;
|
|
97
|
+
scriptName?: string | null;
|
|
98
|
+
}) {
|
|
99
|
+
return (
|
|
100
|
+
<div className="flex min-w-0 flex-1 items-center gap-[var(--spacing-system-xsf)]">
|
|
101
|
+
{avatar}
|
|
102
|
+
<div className="flex min-w-0 flex-1 flex-col justify-center">
|
|
103
|
+
<div className="flex min-w-0 items-center gap-[var(--spacing-system-xxs)]">
|
|
104
|
+
{typeof name === 'string' ? <TruncateText>{name}</TruncateText> : name}
|
|
105
|
+
<ExecutionSourceBadge source={source} />
|
|
106
|
+
</div>
|
|
107
|
+
{scriptName && (
|
|
108
|
+
<TruncateText variant="h6" tone="secondary">
|
|
109
|
+
{scriptName}
|
|
110
|
+
</TruncateText>
|
|
111
|
+
)}
|
|
112
|
+
</div>
|
|
113
|
+
</div>
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/** The Result column: the first two lines of what the run printed, or the host's empty mark. */
|
|
118
|
+
export function ExecutionResultCell({ result, empty = null }: { result?: string | null; empty?: ReactNode }) {
|
|
119
|
+
return result ? <TruncateText lines={2}>{result}</TruncateText> : <>{empty}</>;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/**
|
|
123
|
+
* What an execution printed, as its page shows it: the whole output with its
|
|
124
|
+
* line breaks, labelled "Result". A run still in flight with nothing printed
|
|
125
|
+
* yet says so (its page polls, so the output streams in) instead of a dead
|
|
126
|
+
* end; a finished run with no output shows the host's empty mark.
|
|
127
|
+
*/
|
|
128
|
+
export function ScriptExecutionResult({
|
|
129
|
+
result,
|
|
130
|
+
inFlight = false,
|
|
131
|
+
empty,
|
|
132
|
+
className,
|
|
133
|
+
}: {
|
|
134
|
+
result?: string | null;
|
|
135
|
+
inFlight?: boolean;
|
|
136
|
+
empty: ReactNode;
|
|
137
|
+
className?: string;
|
|
138
|
+
}) {
|
|
139
|
+
return (
|
|
140
|
+
<div className={cn('flex flex-col gap-[var(--spacing-system-xxs)] p-[var(--spacing-system-m)]', className)}>
|
|
141
|
+
{result ? (
|
|
142
|
+
<div className="whitespace-pre-wrap break-words text-ods-text-primary text-h4">{result}</div>
|
|
143
|
+
) : (
|
|
144
|
+
<div className="text-ods-text-secondary text-h4">{inFlight ? 'Waiting for output…' : empty}</div>
|
|
145
|
+
)}
|
|
146
|
+
<div className="text-ods-text-secondary text-h6">Result</div>
|
|
147
|
+
</div>
|
|
148
|
+
);
|
|
149
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a script execution's status and source are presented: one table, read
|
|
3
|
+
* by the product's Execution History, its execution page and the pictures of
|
|
4
|
+
* them. No JSX and no imports, so a server module or a skeleton can read it.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** The statuses a script execution has (the product's `ScriptExecutionStatus`). */
|
|
8
|
+
export type ScriptExecutionStatus = 'QUEUED' | 'RUNNING' | 'SUCCESS' | 'FAILED';
|
|
9
|
+
|
|
10
|
+
/** How an execution was dispatched (the product's `ExecutionSource`). */
|
|
11
|
+
export type ScriptExecutionSource = 'MANUAL' | 'SCHEDULED' | 'AI_ASSISTANT';
|
|
12
|
+
|
|
13
|
+
/** The `Tag` colour a status is drawn in. */
|
|
14
|
+
export type ScriptExecutionStatusVariant = 'success' | 'error' | 'warning' | 'grey';
|
|
15
|
+
|
|
16
|
+
export interface ScriptExecutionStatusPresentation {
|
|
17
|
+
/** Human label (SUCCESS reads as "Completed"). */
|
|
18
|
+
label: string;
|
|
19
|
+
variant: ScriptExecutionStatusVariant;
|
|
20
|
+
/** Not a final state: a page showing it polls until it is. */
|
|
21
|
+
inFlight: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Every status, exhaustively. A host whose API grows a status checks its own
|
|
26
|
+
* enum against these keys, so a new status fails to compile there instead of
|
|
27
|
+
* landing in a grey tag with its raw value.
|
|
28
|
+
*/
|
|
29
|
+
export const SCRIPT_EXECUTION_STATUS_PRESENTATION = {
|
|
30
|
+
QUEUED: { label: 'Queued', variant: 'grey', inFlight: true },
|
|
31
|
+
RUNNING: { label: 'Running', variant: 'warning', inFlight: true },
|
|
32
|
+
SUCCESS: { label: 'Completed', variant: 'success', inFlight: false },
|
|
33
|
+
FAILED: { label: 'Failed', variant: 'error', inFlight: false },
|
|
34
|
+
} as const satisfies Record<ScriptExecutionStatus, ScriptExecutionStatusPresentation>;
|
|
35
|
+
|
|
36
|
+
/** The presentation of a status, or undefined for a value the table does not know. */
|
|
37
|
+
export function scriptExecutionStatus(
|
|
38
|
+
status: string | null | undefined,
|
|
39
|
+
): ScriptExecutionStatusPresentation | undefined {
|
|
40
|
+
if (!status || !Object.prototype.hasOwnProperty.call(SCRIPT_EXECUTION_STATUS_PRESENTATION, status)) return undefined;
|
|
41
|
+
return SCRIPT_EXECUTION_STATUS_PRESENTATION[status as ScriptExecutionStatus];
|
|
42
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
export {
|
|
4
|
+
ExecutionDeviceCell,
|
|
5
|
+
ExecutionInitiatorCell,
|
|
6
|
+
ExecutionResultCell,
|
|
7
|
+
ExecutionSourceBadge,
|
|
8
|
+
ExecutionStatusCell,
|
|
9
|
+
ExecutionTimestampCell,
|
|
10
|
+
ScriptExecutionResult,
|
|
11
|
+
} from './execution-cells';
|
|
12
|
+
export { SCRIPT_EXECUTION_STATUS_PRESENTATION, scriptExecutionStatus } from './execution-status';
|
|
13
|
+
export type {
|
|
14
|
+
ScriptExecutionSource,
|
|
15
|
+
ScriptExecutionStatus,
|
|
16
|
+
ScriptExecutionStatusPresentation,
|
|
17
|
+
ScriptExecutionStatusVariant,
|
|
18
|
+
} from './execution-status';
|
|
19
|
+
export { ScheduleDateTimeCell, ScriptNameCell } from './script-cells';
|
|
20
|
+
export { ScriptExecutionsTable } from './script-executions-table';
|
|
21
|
+
export type { ScriptExecutionsTableProps, ScriptExecutionTableRow } from './script-executions-table';
|
|
22
|
+
export { ScriptSchedulesTable } from './script-schedules-table';
|
|
23
|
+
export type { ScriptScheduleTableRow, ScriptSchedulesTableProps } from './script-schedules-table';
|
|
24
|
+
export { ScriptShellBadge } from './script-shell-badge';
|
|
25
|
+
export type { ScriptShellBadgeProps } from './script-shell-badge';
|
|
26
|
+
export { ScriptsTable } from './scripts-table';
|
|
27
|
+
export type { ScriptsTableProps, ScriptTableRow } from './scripts-table';
|
|
28
|
+
export {
|
|
29
|
+
EXECUTION_COLUMNS,
|
|
30
|
+
EXECUTIONS_TABLE_COLUMNS,
|
|
31
|
+
SCHEDULE_COLUMNS,
|
|
32
|
+
SCHEDULES_TABLE_COLUMNS,
|
|
33
|
+
SCRIPT_COLUMNS,
|
|
34
|
+
SCRIPTS_TAB_WIDTHS,
|
|
35
|
+
SCRIPTS_TABLE_COLUMNS,
|
|
36
|
+
} from './scripts-table-columns';
|
|
37
|
+
export type { ScriptsTableColumnLayout } from './scripts-table-columns';
|
|
38
|
+
export { OpenInNewTabCell, RowActionsCell, scriptsColumnMeta } from './scripts-table-shared';
|
|
39
|
+
export { SCRIPTS_TABS } from './scripts-tabs';
|
|
40
|
+
export type { ScriptsTabId } from './scripts-tabs';
|
|
41
|
+
export { SCRIPT_SHELL_TYPES, scriptShellLabel, scriptShellType } from './shell-types';
|
|
42
|
+
export * from './schedule-form';
|