@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
@@ -5,14 +5,14 @@ var _chunkHF7Z2E4Wcjs = require('./chunk-HF7Z2E4W.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkTF7J6VXGcjs = require('./chunk-TF7J6VXG.cjs');
8
+ var _chunkQEUGYHFBcjs = require('./chunk-QEUGYHFB.cjs');
9
9
 
10
10
 
11
11
  var _chunkWBANGORJcjs = require('./chunk-WBANGORJ.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkV2ZFH42Ncjs = require('./chunk-V2ZFH42N.cjs');
15
+ var _chunkHYBMADYOcjs = require('./chunk-HYBMADYO.cjs');
16
16
 
17
17
 
18
18
  var _chunkB3XBJCODcjs = require('./chunk-B3XBJCOD.cjs');
@@ -27,7 +27,7 @@ var _chunkB3XBJCODcjs = require('./chunk-B3XBJCOD.cjs');
27
27
 
28
28
 
29
29
 
30
- var _chunkSB4VWA5Vcjs = require('./chunk-SB4VWA5V.cjs');
30
+ var _chunkIK2RJUEAcjs = require('./chunk-IK2RJUEA.cjs');
31
31
 
32
32
 
33
33
  var _chunkDSVNFRY5cjs = require('./chunk-DSVNFRY5.cjs');
@@ -39,7 +39,7 @@ var _chunkVA7OMDZOcjs = require('./chunk-VA7OMDZO.cjs');
39
39
 
40
40
 
41
41
 
42
- var _chunkS2CA5WE4cjs = require('./chunk-S2CA5WE4.cjs');
42
+ var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
43
43
 
44
44
 
45
45
 
@@ -102,8 +102,8 @@ var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
102
102
  // src/components/shared/product-release/product-releases-view.tsx
103
103
  var _jsxruntime = require('react/jsx-runtime');
104
104
  var DEFAULT_ENDPOINT = "/api/releases";
105
- var DEFAULT_SEARCH_PARAM_KEY = _chunkS2CA5WE4cjs.DEV_SECTION_PARAM_KEYS.search;
106
- var DEFAULT_STATUS_PARAM_KEY = _chunkS2CA5WE4cjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
105
+ var DEFAULT_SEARCH_PARAM_KEY = _chunkCWRVTQUOcjs.DEV_SECTION_PARAM_KEYS.search;
106
+ var DEFAULT_STATUS_PARAM_KEY = _chunkCWRVTQUOcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
107
107
  var DEFAULT_PAGE_PARAM_KEY = "page";
108
108
  function ReleaseRow({
109
109
  release,
@@ -112,7 +112,7 @@ function ReleaseRow({
112
112
  }) {
113
113
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
114
114
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
115
- const cta = _chunkS2CA5WE4cjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
115
+ const cta = _chunkCWRVTQUOcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
116
116
  type: "product_release",
117
117
  slug: release.slug,
118
118
  basePath,
@@ -184,10 +184,10 @@ function ProductReleasesView({
184
184
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
185
185
  };
186
186
  if (error) {
187
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
187
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
188
188
  }
189
189
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex w-full flex-col gap-[40px]", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "min-h-[600px]", children: showEmpty ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-[600px] items-center justify-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
190
- _chunkTF7J6VXGcjs.ListEmptyState,
190
+ _chunkQEUGYHFBcjs.ListEmptyState,
191
191
  {
192
192
  isFiltered: hasActiveFilters,
193
193
  filtered: {
@@ -282,7 +282,7 @@ function MediaGalleryStrip({ items, className }) {
282
282
  var _lucidereact = require('lucide-react');
283
283
 
284
284
 
285
- var DefaultMarkdownRenderer = _chunkSB4VWA5Vcjs.RichMarkdownRenderer;
285
+ var DefaultMarkdownRenderer = _chunkIK2RJUEAcjs.RichMarkdownRenderer;
286
286
  var DEFAULT_ENDPOINT2 = "/api/releases";
287
287
  function ReleaseDetailPage({
288
288
  authorHref,
@@ -301,7 +301,7 @@ function ReleaseDetailPage({
301
301
  }) {
302
302
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
303
303
  const captions = _chunkBV5WZVOPcjs.useCaptions.call(void 0, );
304
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
304
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
305
305
  const seed = initialData == null ? void 0 : initialData;
306
306
  const {
307
307
  data: release,
@@ -408,7 +408,7 @@ function ReleaseDetailPage({
408
408
  backButton: showBackButton ? { label: backLabel, onClick: () => router.push(backHref) } : void 0,
409
409
  children: [
410
410
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6 content-md:space-y-8", children: [
411
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.EntityTagBadges, { tags: release.product_release_tags }),
411
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.EntityTagBadges, { tags: release.product_release_tags }),
412
412
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid w-full grid-cols-1 overflow-hidden rounded-md border border-ods-border content-md:grid-cols-4", children: [
413
413
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col gap-3 border-b border-ods-border bg-ods-card p-4 content-md:border-b-0 content-md:border-r", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-0", children: [
414
414
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: releaseType.toLocaleUpperCase() }),
@@ -470,7 +470,7 @@ function ReleaseDetailPage({
470
470
  ] })
471
471
  ] }) }) }),
472
472
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
473
- _chunkSB4VWA5Vcjs.ReleaseChangelogSection,
473
+ _chunkIK2RJUEAcjs.ReleaseChangelogSection,
474
474
  {
475
475
  title: "Breaking Changes",
476
476
  entries: breakingChanges || [],
@@ -481,7 +481,7 @@ function ReleaseDetailPage({
481
481
  }
482
482
  ),
483
483
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
484
- _chunkSB4VWA5Vcjs.ReleaseChangelogSection,
484
+ _chunkIK2RJUEAcjs.ReleaseChangelogSection,
485
485
  {
486
486
  title: "Features Added",
487
487
  entries: featuresAdded || [],
@@ -491,7 +491,7 @@ function ReleaseDetailPage({
491
491
  }
492
492
  ),
493
493
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
494
- _chunkSB4VWA5Vcjs.ReleaseChangelogSection,
494
+ _chunkIK2RJUEAcjs.ReleaseChangelogSection,
495
495
  {
496
496
  title: "Bugs Fixed",
497
497
  entries: bugFixed || [],
@@ -501,7 +501,7 @@ function ReleaseDetailPage({
501
501
  }
502
502
  ),
503
503
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
504
- _chunkSB4VWA5Vcjs.ReleaseChangelogSection,
504
+ _chunkIK2RJUEAcjs.ReleaseChangelogSection,
505
505
  {
506
506
  title: "Improvements",
507
507
  entries: improvements || [],
@@ -527,7 +527,7 @@ function ReleaseDetailPage({
527
527
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "tracking-[-0.28px] text-ods-text-secondary text-h5", children: "Related Enhancements and Bug-fixes" }),
528
528
  (() => {
529
529
  const deliveryCount = deliveryData ? deliveryData.completed.length + deliveryData.inProgress.length : 0;
530
- return deliveryLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.FadePreview, { hiddenCount: deliveryCount - 1, collapsedHeight: 300, resetKey: deliveryCount, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: false }) }) });
530
+ return deliveryLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.FadePreview, { hiddenCount: deliveryCount - 1, collapsedHeight: 300, resetKey: deliveryCount, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: false }) }) });
531
531
  })()
532
532
  ] }),
533
533
  (_optionalChain([githubReleases, 'optionalAccess', _8 => _8.length]) || _optionalChain([knowledgeBaseLinks, 'optionalAccess', _9 => _9.length]) || migrationGuideUrl || documentationUrl) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full space-y-1", children: [
@@ -781,7 +781,7 @@ function RoadmapGridSingle({
781
781
  _chunkYXKB5WREcjs.RoadmapCard,
782
782
  {
783
783
  item,
784
- id: _chunkS2CA5WE4cjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
784
+ id: _chunkCWRVTQUOcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
785
785
  userVote: getVote(item.id),
786
786
  onVote: (voteType) => onVote(item.id, voteType),
787
787
  isVoting: votingTasks.has(item.id)
@@ -897,7 +897,7 @@ function RoadmapGrid({
897
897
  );
898
898
  }
899
899
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
900
- _chunkSB4VWA5Vcjs.Accordion,
900
+ _chunkIK2RJUEAcjs.Accordion,
901
901
  {
902
902
  type: "multiple",
903
903
  value: expandedQuarters,
@@ -907,13 +907,13 @@ function RoadmapGrid({
907
907
  const itemCount = _optionalChain([itemsByQuarter, 'access', _18 => _18[quarter], 'optionalAccess', _19 => _19.length]) || 0;
908
908
  const isExpanded = expandedQuarters.includes(quarter);
909
909
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
910
- _chunkSB4VWA5Vcjs.AccordionItem,
910
+ _chunkIK2RJUEAcjs.AccordionItem,
911
911
  {
912
912
  value: quarter,
913
913
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
914
914
  className: "border-0",
915
915
  children: [
916
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:ml-auto [&>svg]:h-5 [&>svg]:w-5 [&>svg]:shrink-0 [&>svg]:text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
916
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.AccordionTrigger, { className: "w-full p-0 hover:no-underline [&>svg]:ml-auto [&>svg]:h-5 [&>svg]:w-5 [&>svg]:shrink-0 [&>svg]:text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
917
917
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
918
918
  "h3",
919
919
  {
@@ -943,7 +943,7 @@ function RoadmapGrid({
943
943
  }
944
944
  )
945
945
  ] }) }),
946
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.AccordionContent, { className: "overflow-hidden pb-0 pt-4 data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
946
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.AccordionContent, { className: "overflow-hidden pb-0 pt-4 data-[state=closed]:animate-none data-[state=open]:animate-none", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
947
947
  RoadmapGridSingle,
948
948
  {
949
949
  items: itemsByQuarter[quarter],
@@ -995,8 +995,8 @@ function RoadmapGridSkeleton({ count = 4, showLeftMargin = true }) {
995
995
 
996
996
 
997
997
  var DEFAULT_ENDPOINT3 = "/api/roadmap";
998
- var DEFAULT_SEARCH_PARAM_KEY2 = _chunkS2CA5WE4cjs.DEV_SECTION_PARAM_KEYS.search;
999
- var DEFAULT_STATUS_PARAM_KEY2 = _chunkS2CA5WE4cjs.DEV_SECTION_PARAM_KEYS.status;
998
+ var DEFAULT_SEARCH_PARAM_KEY2 = _chunkCWRVTQUOcjs.DEV_SECTION_PARAM_KEYS.search;
999
+ var DEFAULT_STATUS_PARAM_KEY2 = _chunkCWRVTQUOcjs.DEV_SECTION_PARAM_KEYS.status;
1000
1000
  function RoadmapView({
1001
1001
  endpoint = DEFAULT_ENDPOINT3,
1002
1002
  initialItems,
@@ -1019,7 +1019,7 @@ function RoadmapView({
1019
1019
  const items = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _20 => _20.items]), () => ( []));
1020
1020
  _chunkVA7OMDZOcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkSA7LDEVJcjs.STICKY_HEADER_OFFSET_PX });
1021
1021
  if (error) {
1022
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1022
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1023
1023
  }
1024
1024
  if (isLoading && !data) {
1025
1025
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { showLeftMargin });
@@ -1072,7 +1072,7 @@ function DeliveryTable({ items, isLoading = false }) {
1072
1072
  // → `#delivery-<external_id>`; `useScrollToHash` in
1073
1073
  // `delivery-lists.tsx` finds the row by id and scrolls. The
1074
1074
  // outer wrapper here ONLY exists for the row separators.
1075
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border last:border-b-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTF7J6VXGcjs.DeliveryRow, { item, id: _chunkS2CA5WE4cjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
1075
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border last:border-b-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQEUGYHFBcjs.DeliveryRow, { item, id: _chunkCWRVTQUOcjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
1076
1076
  )) }) });
1077
1077
  }
1078
1078
 
@@ -1081,8 +1081,8 @@ function DeliveryTable({ items, isLoading = false }) {
1081
1081
 
1082
1082
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
1083
1083
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
1084
- var DEFAULT_SEARCH_PARAM_KEY3 = _chunkS2CA5WE4cjs.DEV_SECTION_PARAM_KEYS.search;
1085
- var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkS2CA5WE4cjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1084
+ var DEFAULT_SEARCH_PARAM_KEY3 = _chunkCWRVTQUOcjs.DEV_SECTION_PARAM_KEYS.search;
1085
+ var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkCWRVTQUOcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1086
1086
  function DeliveryLists({
1087
1087
  completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
1088
1088
  inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
@@ -1149,11 +1149,11 @@ function DeliveryLists({
1149
1149
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
1150
1150
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
1151
1151
  if (error) {
1152
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1152
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1153
1153
  }
1154
1154
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[40px]", children: [
1155
1155
  !isLoading && !hasResults && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1156
- _chunkTF7J6VXGcjs.ListEmptyState,
1156
+ _chunkQEUGYHFBcjs.ListEmptyState,
1157
1157
  {
1158
1158
  isFiltered: hasActiveFilters,
1159
1159
  filtered: {
@@ -1230,6 +1230,8 @@ function toLegalDocument(payload, docType) {
1230
1230
  githubSha: typeof githubSha === "string" ? githubSha : null,
1231
1231
  sections,
1232
1232
  docType: _nullishCoalesce(readString(payload, "docType"), () => ( docType)),
1233
+ version: _nullishCoalesce(readString(payload, "version"), () => ( null)),
1234
+ effectiveDate: _nullishCoalesce(readString(payload, "effectiveDate"), () => ( null)),
1233
1235
  meta: {
1234
1236
  sectionsCount: typeof sectionsCount === "number" ? sectionsCount : sections.length,
1235
1237
  contentLength: typeof contentLength === "number" ? contentLength : content.length,
@@ -1260,6 +1262,11 @@ function useLegalDocs(docType, options = {}) {
1260
1262
  const fetchDocument = async () => {
1261
1263
  try {
1262
1264
  const response = await _chunkPX7FY655cjs.contentFetch.call(void 0, effectiveEndpoint);
1265
+ if (response.status === 404) {
1266
+ if (!isCurrent()) return;
1267
+ setData(null);
1268
+ return;
1269
+ }
1263
1270
  if (!response.ok) {
1264
1271
  throw new Error(`Failed to fetch ${docType} document: ${response.status} ${response.statusText}`);
1265
1272
  }
@@ -1294,20 +1301,91 @@ function useLegalDocs(docType, options = {}) {
1294
1301
  };
1295
1302
  }
1296
1303
 
1304
+ // src/components/shared/legal-document/use-legal-documents.ts
1305
+
1306
+ function isRecord2(value) {
1307
+ return typeof value === "object" && value !== null;
1308
+ }
1309
+ function text(source, key) {
1310
+ const value = source[key];
1311
+ return typeof value === "string" && value ? value : null;
1312
+ }
1313
+ function toLegalDocumentSummaries(payload) {
1314
+ const rows = isRecord2(payload) ? payload.documents : null;
1315
+ if (!Array.isArray(rows)) return [];
1316
+ const documents = [];
1317
+ for (const row of rows) {
1318
+ if (!isRecord2(row)) continue;
1319
+ const docType = text(row, "docType");
1320
+ const title = text(row, "title");
1321
+ if (!docType || !title) continue;
1322
+ documents.push({
1323
+ docType,
1324
+ title,
1325
+ summary: _nullishCoalesce(text(row, "summary"), () => ( "")),
1326
+ route: _nullishCoalesce(text(row, "route"), () => ( "")),
1327
+ sourceFile: _nullishCoalesce(text(row, "sourceFile"), () => ( "")),
1328
+ faqTopic: text(row, "faqTopic"),
1329
+ version: text(row, "version"),
1330
+ effectiveDate: text(row, "effectiveDate"),
1331
+ published: row.published === true
1332
+ });
1333
+ }
1334
+ return documents;
1335
+ }
1336
+ function useLegalDocuments(options = {}) {
1337
+ const endpoint = _nullishCoalesce(options.apiEndpoint, () => ( "/api/legal"));
1338
+ const enabled = _nullishCoalesce(options.enabled, () => ( true));
1339
+ const [state, setState] = _react.useState.call(void 0, { documents: [], isLoading: enabled, error: null });
1340
+ _react.useEffect.call(void 0, () => {
1341
+ let current = enabled;
1342
+ const load = async () => {
1343
+ try {
1344
+ const response = await _chunkPX7FY655cjs.contentFetch.call(void 0, endpoint);
1345
+ if (!response.ok) throw new Error(`Failed to fetch legal documents: ${response.status} ${response.statusText}`);
1346
+ const payload = await response.json();
1347
+ if (current) setState({ documents: toLegalDocumentSummaries(payload), isLoading: false, error: null });
1348
+ } catch (err) {
1349
+ console.error("Error fetching legal documents:", err);
1350
+ if (current) {
1351
+ setState({
1352
+ documents: [],
1353
+ isLoading: false,
1354
+ error: err instanceof Error ? err.message : "Unknown error occurred"
1355
+ });
1356
+ }
1357
+ }
1358
+ };
1359
+ if (enabled) void load();
1360
+ return () => {
1361
+ current = false;
1362
+ };
1363
+ }, [endpoint, enabled]);
1364
+ return state;
1365
+ }
1366
+
1297
1367
  // src/components/shared/legal-document/legal-document-page.tsx
1298
1368
 
1369
+ function legalDocumentStampLabel(doc) {
1370
+ const parts = [
1371
+ _optionalChain([doc, 'optionalAccess', _23 => _23.version]) ? `Version ${doc.version}` : null,
1372
+ _optionalChain([doc, 'optionalAccess', _24 => _24.effectiveDate]) ? `Effective ${doc.effectiveDate}` : null
1373
+ ].filter((part) => part !== null);
1374
+ return parts.length > 0 ? parts.join(" \xB7 ") : null;
1375
+ }
1299
1376
  function LegalDocumentPage({
1300
1377
  docType,
1301
- title,
1302
- fallbackDescription,
1378
+ title: titleProp,
1379
+ fallbackDescription = "",
1303
1380
  contactEmail,
1304
- errorContactPrompt,
1305
- errorTitle,
1306
- emptyStateMessage,
1381
+ errorContactPrompt = "For questions about this document, please contact:",
1382
+ errorTitle: errorTitleProp,
1383
+ emptyStateMessage: emptyStateMessageProp,
1307
1384
  initialData = null,
1308
1385
  initialLastUpdatedLabel = null,
1309
1386
  apiEndpoint,
1310
- MarkdownRenderer = _chunkSB4VWA5Vcjs.RichMarkdownRenderer,
1387
+ MarkdownRenderer = _chunkIK2RJUEAcjs.RichMarkdownRenderer,
1388
+ documentsEndpoint,
1311
1389
  backButton,
1312
1390
  faq,
1313
1391
  shell = true
@@ -1315,14 +1393,21 @@ function LegalDocumentPage({
1315
1393
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
1316
1394
  const { data, isLoading, error } = useLegalDocs(docType, { initialData, apiEndpoint });
1317
1395
  const backCfg = backButton === false ? void 0 : {
1318
- label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _23 => _23.label]), () => ( "Back to home")),
1319
- onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _24 => _24.href]), () => ( "/")))
1396
+ label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _25 => _25.label]), () => ( "Back to home")),
1397
+ onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _26 => _26.href]), () => ( "/")))
1320
1398
  };
1321
- const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _25 => _25.lastSynced]) != null ? _chunk7ZFCR7UYcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1399
+ const { documents } = useLegalDocuments({ apiEndpoint: documentsEndpoint, enabled: Boolean(documentsEndpoint) });
1400
+ const listed = documents.find((doc) => doc.docType === docType);
1401
+ const title = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(titleProp, () => ( _optionalChain([data, 'optionalAccess', _27 => _27.title]))), () => ( _optionalChain([listed, 'optionalAccess', _28 => _28.title]))), () => ( "Legal document"));
1402
+ const faqTopic = faq && "topic" in faq ? faq.topic : _optionalChain([listed, 'optionalAccess', _29 => _29.faqTopic]);
1403
+ const faqSlot = faq && faqTopic ? { ...faq, topic: faqTopic } : null;
1404
+ const errorTitle = _nullishCoalesce(errorTitleProp, () => ( `Unable to load ${title}`));
1405
+ const emptyStateMessage = _nullishCoalesce(emptyStateMessageProp, () => ( `${title} is not available at this time.`));
1406
+ const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _30 => _30.lastSynced]) != null ? _chunk7ZFCR7UYcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1322
1407
  const effectiveLastUpdatedLabel = _nullishCoalesce(initialLastUpdatedLabel, () => ( fallbackLastUpdatedLabel));
1323
- const subtitle = effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription;
1408
+ const subtitle = _nullishCoalesce(legalDocumentStampLabel(data), () => ( (effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription)));
1324
1409
  const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDSVNFRY5cjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: [
1325
- _optionalChain([data, 'optionalAccess', _26 => _26.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary opacity-75 text-h6", children: [
1410
+ _optionalChain([data, 'optionalAccess', _31 => _31.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary opacity-75 text-h6", children: [
1326
1411
  "Source: ",
1327
1412
  data.sourceFile
1328
1413
  ] }),
@@ -1346,13 +1431,13 @@ function LegalDocumentPage({
1346
1431
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "mb-2 text-ods-error", children: errorTitle }),
1347
1432
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-error text-h6", children: error })
1348
1433
  ] }),
1349
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-ods-text-secondary", children: [
1434
+ contactEmail && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "text-ods-text-secondary", children: [
1350
1435
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { children: errorContactPrompt }),
1351
1436
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail })
1352
1437
  ] })
1353
1438
  ] }) : data ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: data.content, sectionIds: data.sections || [], demoteMarkdownH1ToH2: true }) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "py-16 text-center text-ods-text-secondary", children: [
1354
1439
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4", children: emptyStateMessage }),
1355
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "mt-2", children: [
1440
+ contactEmail && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "mt-2", children: [
1356
1441
  "Please contact",
1357
1442
  " ",
1358
1443
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV45KLJQPcjs.next_link_default, { href: `mailto:${contactEmail}`, className: "text-ods-accent hover:underline", children: contactEmail }),
@@ -1360,9 +1445,9 @@ function LegalDocumentPage({
1360
1445
  "for more information."
1361
1446
  ] })
1362
1447
  ] }) }) }) }) }),
1363
- faq && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkV2ZFH42Ncjs.FaqSection, { ..._chunkV2ZFH42Ncjs.pageFaqProps.call(void 0, faq) })
1448
+ faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHYBMADYOcjs.FaqSection, { ..._chunkHYBMADYOcjs.pageFaqProps.call(void 0, faqSlot) })
1364
1449
  ] });
1365
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1450
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1366
1451
  }
1367
1452
 
1368
1453
 
@@ -1378,4 +1463,7 @@ function LegalDocumentPage({
1378
1463
 
1379
1464
 
1380
1465
 
1381
- exports.ProductReleasesView = ProductReleasesView; exports.MediaGalleryStrip = MediaGalleryStrip; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.useRoadmapVoting = useRoadmapVoting; exports.RoadmapGrid = RoadmapGrid; exports.RoadmapGridSkeleton = RoadmapGridSkeleton; exports.RoadmapView = RoadmapView; exports.DeliveryTable = DeliveryTable; exports.DeliveryLists = DeliveryLists; exports.useLegalDocs = useLegalDocs; exports.LegalDocumentPage = LegalDocumentPage;
1466
+
1467
+
1468
+
1469
+ exports.ProductReleasesView = ProductReleasesView; exports.MediaGalleryStrip = MediaGalleryStrip; exports.ReleaseDetailPage = ReleaseDetailPage; exports.ReleaseDetailSkeleton = ReleaseDetailSkeleton; exports.useRoadmapVoting = useRoadmapVoting; exports.RoadmapGrid = RoadmapGrid; exports.RoadmapGridSkeleton = RoadmapGridSkeleton; exports.RoadmapView = RoadmapView; exports.DeliveryTable = DeliveryTable; exports.DeliveryLists = DeliveryLists; exports.useLegalDocs = useLegalDocs; exports.toLegalDocumentSummaries = toLegalDocumentSummaries; exports.useLegalDocuments = useLegalDocuments; exports.legalDocumentStampLabel = legalDocumentStampLabel; exports.LegalDocumentPage = LegalDocumentPage;
@@ -2,14 +2,14 @@
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
- var _chunkSB4VWA5Vcjs = require('./chunk-SB4VWA5V.cjs');
12
+ var _chunkIK2RJUEAcjs = require('./chunk-IK2RJUEA.cjs');
13
13
  require('./chunk-O67V3HJR.cjs');
14
14
  require('./chunk-3HPB4H4C.cjs');
15
15
  require('./chunk-DSVNFRY5.cjs');
@@ -22,7 +22,7 @@ require('./chunk-A6P6DHEZ.cjs');
22
22
  require('./chunk-MZ4KBSH7.cjs');
23
23
  require('./chunk-KLI4OSRA.cjs');
24
24
  require('./chunk-YUMFVQIN.cjs');
25
- require('./chunk-S2CA5WE4.cjs');
25
+ require('./chunk-CWRVTQUO.cjs');
26
26
  require('./chunk-BV5WZVOP.cjs');
27
27
  require('./chunk-GABDE3FM.cjs');
28
28
  require('./chunk-3RFQPQ7Z.cjs');
@@ -1880,35 +1880,35 @@ function buildCloudTenantsFixture(cast) {
1880
1880
  tenant(cast.organization("acme"), "MICROSOFT_365", {
1881
1881
  accessState: "WRITE_ENABLED",
1882
1882
  userCount: 212,
1883
- lastReadAt: _chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, 9)
1883
+ lastReadAt: _chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, 9)
1884
1884
  }),
1885
1885
  tenant(cast.organization("northbridge"), "GOOGLE_WORKSPACE", {
1886
1886
  accessState: "WRITE_ENABLED",
1887
1887
  userCount: 48,
1888
- lastReadAt: _chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, 15)
1888
+ lastReadAt: _chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, 15)
1889
1889
  }),
1890
1890
  tenant(cast.organization("harbor"), "GOOGLE_WORKSPACE", {
1891
1891
  accessState: "DISCONNECTED",
1892
1892
  userCount: 31,
1893
- lastReadAt: _chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, 26 * 60)
1893
+ lastReadAt: _chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, 26 * 60)
1894
1894
  }),
1895
1895
  tenant(cast.organization("northbridge"), "MICROSOFT_365", {
1896
1896
  accessState: "WRITE_ENABLED",
1897
1897
  userCount: 52,
1898
- lastReadAt: _chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, 21)
1898
+ lastReadAt: _chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, 21)
1899
1899
  }),
1900
1900
  tenant(cast.organization("acme"), "GOOGLE_WORKSPACE", {
1901
1901
  accessState: "WRITE_ENABLED",
1902
1902
  userCount: 18,
1903
- lastReadAt: _chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, 34)
1903
+ lastReadAt: _chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, 34)
1904
1904
  }),
1905
1905
  tenant(cast.organization("harbor"), "MICROSOFT_365", {
1906
1906
  accessState: "WRITE_ENABLED",
1907
1907
  userCount: 29,
1908
- lastReadAt: _chunkKHXZFLINcjs.demoMinutesAgo.call(void 0, 47)
1908
+ lastReadAt: _chunkDKOLQPE7cjs.demoMinutesAgo.call(void 0, 47)
1909
1909
  })
1910
1910
  ],
1911
- now: new Date(_chunkKHXZFLINcjs.DEMO_NOW)
1911
+ now: new Date(_chunkDKOLQPE7cjs.DEMO_NOW)
1912
1912
  };
1913
1913
  }
1914
1914
 
@@ -1916,9 +1916,9 @@ function buildCloudTenantsFixture(cast) {
1916
1916
  var _jsxruntime = require('react/jsx-runtime');
1917
1917
  var getHref = () => "#";
1918
1918
  function CloudTenantsScreen(_props) {
1919
- const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
1919
+ const cast = _chunkSTEJZPIOcjs.useProductDemoCast.call(void 0, );
1920
1920
  const fixture = _react.useMemo.call(void 0, () => buildCloudTenantsFixture(cast), [cast]);
1921
- const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.TenantsTableView, { rows: fixture.rows, getHref, now: fixture.now });
1921
+ const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.TenantsTableView, { rows: fixture.rows, getHref, now: fixture.now });
1922
1922
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-l)]", children: table });
1923
1923
  }
1924
1924
 
@@ -4,13 +4,13 @@
4
4
  var _chunkDTKGIG4Acjs = require('../../chunk-DTKGIG4A.cjs');
5
5
 
6
6
 
7
- var _chunkQ7GG3WC5cjs = require('../../chunk-Q7GG3WC5.cjs');
7
+ var _chunkZJPDGVA6cjs = require('../../chunk-ZJPDGVA6.cjs');
8
8
 
9
9
 
10
10
 
11
11
 
12
12
 
13
- var _chunkSB4VWA5Vcjs = require('../../chunk-SB4VWA5V.cjs');
13
+ var _chunkIK2RJUEAcjs = require('../../chunk-IK2RJUEA.cjs');
14
14
  require('../../chunk-O67V3HJR.cjs');
15
15
  require('../../chunk-3HPB4H4C.cjs');
16
16
  require('../../chunk-DSVNFRY5.cjs');
@@ -23,7 +23,7 @@ require('../../chunk-A6P6DHEZ.cjs');
23
23
  require('../../chunk-MZ4KBSH7.cjs');
24
24
  require('../../chunk-KLI4OSRA.cjs');
25
25
  require('../../chunk-YUMFVQIN.cjs');
26
- require('../../chunk-S2CA5WE4.cjs');
26
+ require('../../chunk-CWRVTQUO.cjs');
27
27
 
28
28
 
29
29
 
@@ -1923,9 +1923,9 @@ function ShareExperienceSection({
1923
1923
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-h2", children: howItWorksTitle }),
1924
1924
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-h4", children: howItWorksBody })
1925
1925
  ] }),
1926
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkSB4VWA5Vcjs.BenefitCardGrid, { columns: 4, children: [
1926
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkIK2RJUEAcjs.BenefitCardGrid, { columns: 4, children: [
1927
1927
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1928
- _chunkSB4VWA5Vcjs.BenefitCard,
1928
+ _chunkIK2RJUEAcjs.BenefitCard,
1929
1929
  {
1930
1930
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkMJQLBIZMcjs.G2Icon, { color: "var(--social-g2)", size: 24 }) }),
1931
1931
  title: "G2",
@@ -1934,7 +1934,7 @@ function ShareExperienceSection({
1934
1934
  }
1935
1935
  ),
1936
1936
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1937
- _chunkSB4VWA5Vcjs.BenefitCard,
1937
+ _chunkIK2RJUEAcjs.BenefitCard,
1938
1938
  {
1939
1939
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkA2VKPXOBcjs.CapterraIcon, { size: 24 }) }),
1940
1940
  title: "Capterra",
@@ -1943,7 +1943,7 @@ function ShareExperienceSection({
1943
1943
  }
1944
1944
  ),
1945
1945
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1946
- _chunkSB4VWA5Vcjs.BenefitCard,
1946
+ _chunkIK2RJUEAcjs.BenefitCard,
1947
1947
  {
1948
1948
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTLKSZG3Dcjs.TrustpilotIcon, { size: 24 }) }),
1949
1949
  title: "TrustPilot",
@@ -1952,7 +1952,7 @@ function ShareExperienceSection({
1952
1952
  }
1953
1953
  ),
1954
1954
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1955
- _chunkSB4VWA5Vcjs.BenefitCard,
1955
+ _chunkIK2RJUEAcjs.BenefitCard,
1956
1956
  {
1957
1957
  icon: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-12 w-12 items-center justify-center rounded-md border border-ods-border bg-ods-bg p-2", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkILYW6BQNcjs.GetappIcon, { size: 24 }) }),
1958
1958
  title: "GetApp",
@@ -1961,7 +1961,7 @@ function ShareExperienceSection({
1961
1961
  }
1962
1962
  )
1963
1963
  ] }),
1964
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQ7GG3WC5cjs.ContactForm, { ...DEFAULT_CONTACT_FORM_PROPS, ...contactFormProps })
1964
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkZJPDGVA6cjs.ContactForm, { ...DEFAULT_CONTACT_FORM_PROPS, ...contactFormProps })
1965
1965
  ] }) })
1966
1966
  ] });
1967
1967
  }
@@ -1971,7 +1971,7 @@ function ShareExperienceSection({
1971
1971
  function EntityQuotesPanel({ quotes, className }) {
1972
1972
  if (!quotes || quotes.length === 0) return null;
1973
1973
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1974
- _chunkSB4VWA5Vcjs.StackedRowsPanel,
1974
+ _chunkIK2RJUEAcjs.StackedRowsPanel,
1975
1975
  {
1976
1976
  className,
1977
1977
  title: `${_chunkDTKGIG4Acjs.ENTITY_QUOTES_TITLE} \xB7 ${quotes.length}`,
@@ -2015,7 +2015,7 @@ function QuoteCardsStrip({ quotes, className }) {
2015
2015
  onPointerLeave: ctx.isTouch ? void 0 : () => ctx.onDeactivate(ctx.cardKey),
2016
2016
  className: "relative shrink-0 rounded-md border-ods-border bg-ods-card p-[var(--spacing-system-sf)] shadow-none hover:border-ods-border-hover",
2017
2017
  children: [
2018
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.PersonCell, { size: "lg", name: `"${quote.text}"`, secondary: quote.attribution, avatarUrl: quote.logoUrl }),
2018
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIK2RJUEAcjs.PersonCell, { size: "lg", name: `"${quote.text}"`, secondary: quote.attribution, avatarUrl: quote.logoUrl }),
2019
2019
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkBV5WZVOPcjs.CardHitLayer, { href: quote.href, label: `${quote.text}, ${quote.attribution}`, decorative: ctx.isClone })
2020
2020
  ]
2021
2021
  },