@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.
Files changed (197) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-ENCAIAMY.cjs → chunk-4XL4YEZM.cjs} +3 -3
  3. package/dist/{chunk-FL6UO7IR.cjs → chunk-5SVOGLNK.cjs} +2 -2
  4. package/dist/{chunk-WFPCCBOM.cjs → chunk-7AM3AFM4.cjs} +10 -10
  5. package/dist/{chunk-S2CA5WE4.cjs → chunk-CWRVTQUO.cjs} +9 -1
  6. package/dist/{chunk-KHXZFLIN.cjs → chunk-DKOLQPE7.cjs} +8 -2
  7. package/dist/{chunk-UXFJXIUT.cjs → chunk-EKGL5K5K.cjs} +2 -2
  8. package/dist/{chunk-DTLHY2ZF.cjs → chunk-FQN6STIM.cjs} +12 -155
  9. package/dist/{chunk-V2ZFH42N.cjs → chunk-HYBMADYO.cjs} +3 -3
  10. package/dist/{chunk-NX6JQT25.cjs → chunk-I6UE6YVM.cjs} +4 -4
  11. package/dist/{chunk-SB4VWA5V.cjs → chunk-IK2RJUEA.cjs} +2118 -268
  12. package/dist/{chunk-CUDTMCXK.cjs → chunk-ITPEFCQ2.cjs} +13 -13
  13. package/dist/{chunk-WMKNZI4G.cjs → chunk-JFS6TZDX.cjs} +22 -22
  14. package/dist/{chunk-RGFT3P3L.cjs → chunk-LZ6NOVXX.cjs} +55 -55
  15. package/dist/{chunk-TF7J6VXG.cjs → chunk-QEUGYHFB.cjs} +9 -9
  16. package/dist/{chunk-II4QMH26.cjs → chunk-STEJZPIO.cjs} +3 -3
  17. package/dist/{chunk-UI3HROSI.cjs → chunk-XJ36TEGE.cjs} +33 -33
  18. package/dist/{chunk-UYP3G6PB.cjs → chunk-YQ37ZCD2.cjs} +2 -2
  19. package/dist/{chunk-Q7GG3WC5.cjs → chunk-ZJPDGVA6.cjs} +5 -5
  20. package/dist/{chunk-EGN4I5Q7.cjs → chunk-ZYOS7LVQ.cjs} +134 -46
  21. package/dist/{cloud-tenants-QSFSO3PA.cjs → cloud-tenants-MVJK52I2.cjs} +13 -13
  22. package/dist/components/case-studies/index.cjs +11 -11
  23. package/dist/components/chat/index.cjs +2 -2
  24. package/dist/components/contact/index.cjs +4 -4
  25. package/dist/components/docs/index.cjs +7 -7
  26. package/dist/components/embeds/index.cjs +4 -4
  27. package/dist/components/faq/index.cjs +5 -5
  28. package/dist/components/features/capability-explorer.d.ts +9 -2
  29. package/dist/components/features/capability-explorer.d.ts.map +1 -1
  30. package/dist/components/features/capability-explorer.js +113 -6
  31. package/dist/components/features/index.cjs +141 -3
  32. package/dist/components/features/index.d.ts +1 -0
  33. package/dist/components/features/index.d.ts.map +1 -1
  34. package/dist/components/features/index.js +1 -0
  35. package/dist/components/features/scripts/execution-cells.d.ts +65 -0
  36. package/dist/components/features/scripts/execution-cells.d.ts.map +1 -0
  37. package/dist/components/features/scripts/execution-cells.js +75 -0
  38. package/dist/components/features/scripts/execution-status.d.ts +48 -0
  39. package/dist/components/features/scripts/execution-status.d.ts.map +1 -0
  40. package/dist/components/features/scripts/execution-status.js +15 -0
  41. package/dist/components/features/scripts/index.d.ts +20 -0
  42. package/dist/components/features/scripts/index.d.ts.map +1 -0
  43. package/dist/components/features/scripts/index.js +59 -0
  44. package/dist/components/features/scripts/schedule-form/index.d.ts +18 -0
  45. package/dist/components/features/scripts/schedule-form/index.d.ts.map +1 -0
  46. package/dist/components/features/scripts/schedule-form/index.js +84 -0
  47. package/dist/components/features/scripts/schedule-form/schedule-enums.d.ts +24 -0
  48. package/dist/components/features/scripts/schedule-form/schedule-enums.d.ts.map +1 -0
  49. package/dist/components/features/scripts/schedule-form/schedule-enums.js +18 -0
  50. package/dist/components/features/scripts/schedule-form/schedule-form-fields.d.ts +57 -0
  51. package/dist/components/features/scripts/schedule-form/schedule-form-fields.d.ts.map +1 -0
  52. package/dist/components/features/scripts/schedule-form/schedule-form-fields.js +169 -0
  53. package/dist/components/features/scripts/schedule-form/schedule-form-types.d.ts +138 -0
  54. package/dist/components/features/scripts/schedule-form/schedule-form-types.d.ts.map +1 -0
  55. package/dist/components/features/scripts/schedule-form/schedule-form-types.js +72 -0
  56. package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts +54 -0
  57. package/dist/components/features/scripts/schedule-form/schedule-interval-input.d.ts.map +1 -0
  58. package/dist/components/features/scripts/schedule-form/schedule-interval-input.js +60 -0
  59. package/dist/components/features/scripts/schedule-form/schedule-offline-fields.d.ts +29 -0
  60. package/dist/components/features/scripts/schedule-form/schedule-offline-fields.d.ts.map +1 -0
  61. package/dist/components/features/scripts/schedule-form/schedule-offline-fields.js +124 -0
  62. package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.d.ts +52 -0
  63. package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.d.ts.map +1 -0
  64. package/dist/components/features/scripts/schedule-form/schedule-script-picker-card.js +244 -0
  65. package/dist/components/features/scripts/schedule-form/schedule-script-search-field.d.ts +35 -0
  66. package/dist/components/features/scripts/schedule-form/schedule-script-search-field.d.ts.map +1 -0
  67. package/dist/components/features/scripts/schedule-form/schedule-script-search-field.js +58 -0
  68. package/dist/components/features/scripts/schedule-form/schedule-scripts-field.d.ts +25 -0
  69. package/dist/components/features/scripts/schedule-form/schedule-scripts-field.d.ts.map +1 -0
  70. package/dist/components/features/scripts/schedule-form/schedule-scripts-field.js +66 -0
  71. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.d.ts +77 -0
  72. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.d.ts.map +1 -0
  73. package/dist/components/features/scripts/schedule-form/schedule-timing-fields.js +262 -0
  74. package/dist/components/features/scripts/schedule-form/schedule-timing.d.ts +288 -0
  75. package/dist/components/features/scripts/schedule-form/schedule-timing.d.ts.map +1 -0
  76. package/dist/components/features/scripts/schedule-form/schedule-timing.js +165 -0
  77. package/dist/components/features/scripts/script-cells.d.ts +11 -0
  78. package/dist/components/features/scripts/script-cells.d.ts.map +1 -0
  79. package/dist/components/features/scripts/script-cells.js +19 -0
  80. package/dist/components/features/scripts/script-executions-table.d.ts +58 -0
  81. package/dist/components/features/scripts/script-executions-table.d.ts.map +1 -0
  82. package/dist/components/features/scripts/script-executions-table.js +88 -0
  83. package/dist/components/features/scripts/script-schedules-table.d.ts +38 -0
  84. package/dist/components/features/scripts/script-schedules-table.d.ts.map +1 -0
  85. package/dist/components/features/scripts/script-schedules-table.js +71 -0
  86. package/dist/components/features/scripts/script-shell-badge.d.ts +9 -0
  87. package/dist/components/features/scripts/script-shell-badge.d.ts.map +1 -0
  88. package/dist/components/features/scripts/script-shell-badge.js +15 -0
  89. package/dist/components/features/scripts/scripts-table-columns.d.ts +162 -0
  90. package/dist/components/features/scripts/scripts-table-columns.d.ts.map +1 -0
  91. package/dist/components/features/scripts/scripts-table-columns.js +69 -0
  92. package/dist/components/features/scripts/scripts-table-shared.d.ts +19 -0
  93. package/dist/components/features/scripts/scripts-table-shared.d.ts.map +1 -0
  94. package/dist/components/features/scripts/scripts-table-shared.js +35 -0
  95. package/dist/components/features/scripts/scripts-table.d.ts +40 -0
  96. package/dist/components/features/scripts/scripts-table.d.ts.map +1 -0
  97. package/dist/components/features/scripts/scripts-table.js +84 -0
  98. package/dist/components/features/scripts/scripts-tabs.d.ts +5 -0
  99. package/dist/components/features/scripts/scripts-tabs.d.ts.map +1 -0
  100. package/dist/components/features/scripts/scripts-tabs.js +10 -0
  101. package/dist/components/features/scripts/shell-types.d.ts +13 -0
  102. package/dist/components/features/scripts/shell-types.d.ts.map +1 -0
  103. package/dist/components/features/scripts/shell-types.js +21 -0
  104. package/dist/components/help-center-pages/index.cjs +53 -53
  105. package/dist/components/index.cjs +178 -34
  106. package/dist/components/meeting-scheduler/index.cjs +17 -17
  107. package/dist/components/navigation/index.cjs +6 -6
  108. package/dist/components/onboarding-guides/index.cjs +5 -5
  109. package/dist/components/product-demo/fixtures/scripts.d.ts +34 -0
  110. package/dist/components/product-demo/fixtures/scripts.d.ts.map +1 -0
  111. package/dist/components/product-demo/fixtures/scripts.js +123 -0
  112. package/dist/components/product-demo/fixtures/shared.d.ts +8 -0
  113. package/dist/components/product-demo/fixtures/shared.d.ts.map +1 -1
  114. package/dist/components/product-demo/fixtures/shared.js +7 -1
  115. package/dist/components/product-demo/fixtures/software-update.d.ts.map +1 -1
  116. package/dist/components/product-demo/fixtures/software-update.js +1 -5
  117. package/dist/components/product-demo/index.cjs +16 -13
  118. package/dist/components/product-demo/product-screen.d.ts.map +1 -1
  119. package/dist/components/product-demo/product-screen.js +2 -1
  120. package/dist/components/product-demo/registry.d.ts.map +1 -1
  121. package/dist/components/product-demo/registry.js +2 -1
  122. package/dist/components/product-demo/screen-keys.cjs +2 -1
  123. package/dist/components/product-demo/screen-keys.d.ts +1 -0
  124. package/dist/components/product-demo/screen-keys.d.ts.map +1 -1
  125. package/dist/components/product-demo/screen-keys.js +2 -1
  126. package/dist/components/product-demo/screens/scripts.d.ts +11 -0
  127. package/dist/components/product-demo/screens/scripts.d.ts.map +1 -0
  128. package/dist/components/product-demo/screens/scripts.js +130 -0
  129. package/dist/components/shared/legal-document/index.d.ts +2 -1
  130. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  131. package/dist/components/shared/legal-document/index.js +10 -2
  132. package/dist/components/shared/legal-document/legal-document-page.d.ts +35 -23
  133. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  134. package/dist/components/shared/legal-document/legal-document-page.js +27 -10
  135. package/dist/components/shared/legal-document/use-legal-docs.d.ts +7 -3
  136. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  137. package/dist/components/shared/legal-document/use-legal-docs.js +7 -0
  138. package/dist/components/shared/legal-document/use-legal-documents.d.ts +31 -0
  139. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -0
  140. package/dist/components/shared/legal-document/use-legal-documents.js +67 -0
  141. package/dist/components/tickets/index.cjs +8 -8
  142. package/dist/components/ui/index.cjs +3 -3
  143. package/dist/{devices-C7XLWJFC.cjs → devices-W3S7Q2PG.cjs} +9 -9
  144. package/dist/index.cjs +150 -8
  145. package/dist/{knowledge-3QKWTOE7.cjs → knowledge-AIYQ4FC3.cjs} +7 -7
  146. package/dist/{logs-JXD75NR4.cjs → logs-7SHJ2ARE.cjs} +25 -25
  147. package/dist/{policies-ZPN53PFQ.cjs → policies-EIZJ5SUP.cjs} +10 -10
  148. package/dist/{remote-session-DNFZ5OLY.cjs → remote-session-BZMNE6D2.cjs} +5 -5
  149. package/dist/scripts-J2FWC7E4.cjs +2112 -0
  150. package/dist/{software-update-CRSIBS3K.cjs → software-update-QAMNASVF.cjs} +14 -18
  151. package/dist/{tickets-board-CKZRB6YV.cjs → tickets-board-CEDHD3KB.cjs} +17 -17
  152. package/dist/utils/index.cjs +8 -0
  153. package/dist/utils/index.d.ts +1 -0
  154. package/dist/utils/index.d.ts.map +1 -1
  155. package/dist/utils/index.js +1 -0
  156. package/dist/utils/legal-documents.d.ts +18 -0
  157. package/dist/utils/legal-documents.d.ts.map +1 -0
  158. package/dist/utils/legal-documents.js +8 -0
  159. package/package.json +1 -1
  160. package/src/components/features/capability-explorer.tsx +134 -7
  161. package/src/components/features/index.ts +1 -0
  162. package/src/components/features/scripts/execution-cells.tsx +149 -0
  163. package/src/components/features/scripts/execution-status.ts +42 -0
  164. package/src/components/features/scripts/index.ts +42 -0
  165. package/src/components/features/scripts/schedule-form/index.ts +59 -0
  166. package/src/components/features/scripts/schedule-form/schedule-enums.ts +26 -0
  167. package/src/components/features/scripts/schedule-form/schedule-form-fields.tsx +249 -0
  168. package/src/components/features/scripts/schedule-form/schedule-form-types.ts +189 -0
  169. package/src/components/features/scripts/schedule-form/schedule-interval-input.tsx +121 -0
  170. package/src/components/features/scripts/schedule-form/schedule-offline-fields.tsx +218 -0
  171. package/src/components/features/scripts/schedule-form/schedule-script-picker-card.tsx +321 -0
  172. package/src/components/features/scripts/schedule-form/schedule-script-search-field.tsx +115 -0
  173. package/src/components/features/scripts/schedule-form/schedule-scripts-field.tsx +97 -0
  174. package/src/components/features/scripts/schedule-form/schedule-timing-fields.tsx +482 -0
  175. package/src/components/features/scripts/schedule-form/schedule-timing.ts +484 -0
  176. package/src/components/features/scripts/script-cells.tsx +29 -0
  177. package/src/components/features/scripts/script-executions-table.tsx +145 -0
  178. package/src/components/features/scripts/script-schedules-table.tsx +113 -0
  179. package/src/components/features/scripts/script-shell-badge.tsx +25 -0
  180. package/src/components/features/scripts/scripts-table-columns.ts +95 -0
  181. package/src/components/features/scripts/scripts-table-shared.tsx +43 -0
  182. package/src/components/features/scripts/scripts-table.tsx +124 -0
  183. package/src/components/features/scripts/scripts-tabs.ts +11 -0
  184. package/src/components/features/scripts/shell-types.ts +26 -0
  185. package/src/components/product-demo/fixtures/scripts.ts +186 -0
  186. package/src/components/product-demo/fixtures/shared.ts +7 -0
  187. package/src/components/product-demo/fixtures/software-update.ts +1 -7
  188. package/src/components/product-demo/product-screen.tsx +3 -1
  189. package/src/components/product-demo/registry.ts +1 -0
  190. package/src/components/product-demo/screen-keys.ts +1 -0
  191. package/src/components/product-demo/screens/scripts.tsx +192 -0
  192. package/src/components/shared/legal-document/index.ts +8 -0
  193. package/src/components/shared/legal-document/legal-document-page.tsx +83 -44
  194. package/src/components/shared/legal-document/use-legal-docs.ts +18 -3
  195. package/src/components/shared/legal-document/use-legal-documents.ts +113 -0
  196. package/src/utils/index.ts +1 -0
  197. package/src/utils/legal-documents.ts +21 -0
@@ -2,20 +2,20 @@
2
2
  "use client";
3
3
 
4
4
 
5
- var _chunkWFPCCBOMcjs = require('./chunk-WFPCCBOM.cjs');
5
+ var _chunk7AM3AFM4cjs = require('./chunk-7AM3AFM4.cjs');
6
6
 
7
7
 
8
- var _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
8
+ var _chunkSTEJZPIOcjs = require('./chunk-STEJZPIO.cjs');
9
9
 
10
10
 
11
11
 
12
- var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
12
+ var _chunkDKOLQPE7cjs = require('./chunk-DKOLQPE7.cjs');
13
13
 
14
14
 
15
15
 
16
16
 
17
17
 
18
- var _chunkSB4VWA5Vcjs = require('./chunk-SB4VWA5V.cjs');
18
+ var _chunkIK2RJUEAcjs = require('./chunk-IK2RJUEA.cjs');
19
19
  require('./chunk-O67V3HJR.cjs');
20
20
  require('./chunk-3HPB4H4C.cjs');
21
21
 
@@ -30,7 +30,7 @@ require('./chunk-A6P6DHEZ.cjs');
30
30
  require('./chunk-MZ4KBSH7.cjs');
31
31
  require('./chunk-KLI4OSRA.cjs');
32
32
  require('./chunk-YUMFVQIN.cjs');
33
- require('./chunk-S2CA5WE4.cjs');
33
+ require('./chunk-CWRVTQUO.cjs');
34
34
  require('./chunk-BV5WZVOP.cjs');
35
35
  require('./chunk-GABDE3FM.cjs');
36
36
  require('./chunk-3RFQPQ7Z.cjs');
@@ -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 = _chunkWFPCCBOMcjs.buildDevicesFixture.call(void 0, cast).devices.filter((device) => device.osType === "WINDOWS");
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([_chunkKHXZFLINcjs.DEMO_DEVICES.reception.id, _chunkKHXZFLINcjs.DEMO_DEVICES.samT14.id, _chunkKHXZFLINcjs.DEMO_DEVICES.frontDesk.id])
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: _chunkSB4VWA5Vcjs.PACKAGE_SEARCH_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: _chunkSB4VWA5Vcjs.PACKAGE_SEARCH_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 = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
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
- _chunkSB4VWA5Vcjs.SoftwareActionForm,
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
- _chunkSB4VWA5Vcjs.DeviceSelector,
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 _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
5
+ var _chunkSTEJZPIOcjs = require('./chunk-STEJZPIO.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
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: [_chunkKHXZFLINcjs.DEMO_DEVICES.frontDesk.hostname],
1847
- organizationName: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.harbor.name,
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: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.acme.name,
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: [_chunkKHXZFLINcjs.DEMO_DEVICES.mayaAir.hostname],
1865
- organizationName: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.northbridge.name,
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: [_chunkKHXZFLINcjs.DEMO_DEVICES.samT14.hostname],
1878
- organizationName: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.northbridge.name,
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: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.acme.name,
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: [_chunkKHXZFLINcjs.DEMO_DEVICES.samT14.hostname],
1900
- organizationName: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.northbridge.name
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: [_chunkKHXZFLINcjs.DEMO_DEVICES.mayaAir.hostname],
1906
- organizationName: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.northbridge.name
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: [_chunkKHXZFLINcjs.DEMO_DEVICES.leoThinkPad.hostname],
1912
- organizationName: _chunkKHXZFLINcjs.DEMO_ORGANIZATIONS.harbor.name
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 = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
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 }) });
@@ -85083,6 +85083,12 @@ function captureFormRescueEvent(event, properties) {
85083
85083
  }
85084
85084
  }
85085
85085
 
85086
+ // src/utils/legal-documents.ts
85087
+ var LEGAL_DOCUMENT_TYPES = ["privacy", "terms", "payment", "license", "security"];
85088
+ function isLegalDocumentType(value) {
85089
+ return LEGAL_DOCUMENT_TYPES.includes(value);
85090
+ }
85091
+
85086
85092
  // src/utils/doc-tree-nav.ts
85087
85093
  var DEFAULT_FOLDER_INDEX_FILE = "README.md";
85088
85094
  var DEFAULT_FOLDER_INDEX = DEFAULT_FOLDER_INDEX_FILE;
@@ -85953,6 +85959,7 @@ exports.HUB_HEADER_OFFSET_PX = HUB_HEADER_OFFSET_PX;
85953
85959
  exports.HUMANITY_SIGNAL_KEYS = HUMANITY_SIGNAL_KEYS;
85954
85960
  exports.ICON_REGISTRY = ICON_REGISTRY;
85955
85961
  exports.IMAGE_FILE_ACCEPT = IMAGE_FILE_ACCEPT;
85962
+ exports.LEGAL_DOCUMENT_TYPES = LEGAL_DOCUMENT_TYPES;
85956
85963
  exports.LOCATION_HASH_SYNC_EVENT = LOCATION_HASH_SYNC_EVENT;
85957
85964
  exports.MAX_MONTH_OFFSET = MAX_MONTH_OFFSET;
85958
85965
  exports.MEDIA_FILE_ACCEPT = MEDIA_FILE_ACCEPT;
@@ -86212,6 +86219,7 @@ exports.isGenericDomain = isGenericDomain;
86212
86219
  exports.isGenericWebsiteDomain = isGenericWebsiteDomain;
86213
86220
  exports.isHumanitySignalKey = isHumanitySignalKey;
86214
86221
  exports.isImageMedia = isImageMedia;
86222
+ exports.isLegalDocumentType = isLegalDocumentType;
86215
86223
  exports.isListedSchedulingName = isListedSchedulingName;
86216
86224
  exports.isLocalUrl = isLocalUrl;
86217
86225
  exports.isOSPlatform = isOSPlatform;
@@ -73,6 +73,7 @@ export { buildSuggestionUrl, type SuggestionUrlOptions } from './suggestion-url'
73
73
  export { DEFAULT_CONTENT_SUFFIXES, makeComposeContentUrl, buildDefaultHref, type ContentHrefOptions, type ComposeContentUrl, type ComposedContentUrl, } from './content-href';
74
74
  export * from './humanity-signals';
75
75
  export * from './form-rescue';
76
+ export * from './legal-documents';
76
77
  export * from './doc-path-utils';
77
78
  export * from './doc-tree-nav';
78
79
  export * from './tree-builder';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"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"}
@@ -231,6 +231,7 @@ import {
231
231
  } from "./content-href.js";
232
232
  export * from "./humanity-signals.js";
233
233
  export * from "./form-rescue.js";
234
+ export * from "./legal-documents.js";
234
235
  export * from "./doc-path-utils.js";
235
236
  export * from "./doc-tree-nav.js";
236
237
  export * from "./tree-builder.js";
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The types of legal document a hub can publish, each with a page of its own
3
+ * (`/api/legal/<type>`, `<LegalDocumentPage docType>`).
4
+ *
5
+ * WHICH of them are published, and each one's title, version and effective
6
+ * date, is the hub's answer at run time (`GET /api/legal`, `useLegalDocuments`).
7
+ * This list exists for a host that must know every possible page before it
8
+ * runs: a statically exported app prerenders one legal page per type here and
9
+ * links only the ones the hub's list says are published.
10
+ *
11
+ * Pure and server-safe. The hub's own list of legal documents carries exactly
12
+ * these types.
13
+ */
14
+ export declare const LEGAL_DOCUMENT_TYPES: readonly ["privacy", "terms", "payment", "license", "security"];
15
+ export type LegalDocumentType = (typeof LEGAL_DOCUMENT_TYPES)[number];
16
+ /** True for a type a host has a page for (one of {@link LEGAL_DOCUMENT_TYPES}). */
17
+ export declare function isLegalDocumentType(value: string): value is LegalDocumentType;
18
+ //# sourceMappingURL=legal-documents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legal-documents.d.ts","sourceRoot":"","sources":["../../src/utils/legal-documents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,iEAAkE,CAAC;AAEpG,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEtE,mFAAmF;AACnF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E"}
@@ -0,0 +1,8 @@
1
+ const LEGAL_DOCUMENT_TYPES = ["privacy", "terms", "payment", "license", "security"];
2
+ function isLegalDocumentType(value) {
3
+ return LEGAL_DOCUMENT_TYPES.includes(value);
4
+ }
5
+ export {
6
+ LEGAL_DOCUMENT_TYPES,
7
+ isLegalDocumentType
8
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flamingo-stack/openframe-frontend-core",
3
- "version": "0.0.739",
3
+ "version": "0.0.741",
4
4
  "description": "Shared design system and components for all Flamingo platforms",
5
5
  "type": "module",
6
6
  "sideEffects": [
@@ -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
- /** The box the explorer occupies while its data loads, at both layouts: the panel, or the carousel's card over its controls. */
173
- export function CapabilityExplorerSkeleton({ className }: { className?: string }) {
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={className}>
176
- <Skeleton className={cn(SKELETON_HEIGHT_CLASS, 'w-full')} />
177
- <SnapCarouselControlsSkeleton className="content-lg:hidden" />
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
+ }