@flamingo-stack/openframe-frontend-core 0.0.738 → 0.0.740

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 (97) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-7GETNFZ5.cjs → chunk-2Y5Y4FLM.cjs} +38 -38
  3. package/dist/{chunk-2UZS3ZH7.cjs → chunk-3ZIQOYNX.cjs} +5 -5
  4. package/dist/{chunk-KQ4IKALJ.cjs → chunk-4RLGLB45.cjs} +35 -35
  5. package/dist/{chunk-5BKAUXLR.cjs → chunk-5SVOGLNK.cjs} +4 -4
  6. package/dist/{chunk-XGHZIYQN.cjs → chunk-7UIQPMBJ.cjs} +19 -19
  7. package/dist/{chunk-FTTLBMHU.cjs → chunk-7ZFCR7UY.cjs} +2 -2
  8. package/dist/{chunk-EG545WGV.cjs → chunk-B3XBJCOD.cjs} +9 -9
  9. package/dist/{chunk-XMNLPQ75.cjs → chunk-BDA5F6RM.cjs} +12 -12
  10. package/dist/{chunk-BRKTN6UR.cjs → chunk-BV5WZVOP.cjs} +199 -199
  11. package/dist/{chunk-4T6ETBL4.cjs → chunk-CWRVTQUO.cjs} +91 -83
  12. package/dist/{chunk-GQZOUVXC.cjs → chunk-D5KEWWLW.cjs} +34 -34
  13. package/dist/{chunk-7LTG6CJ3.cjs → chunk-DSVNFRY5.cjs} +35 -35
  14. package/dist/{chunk-2SBHPHLS.cjs → chunk-EKGL5K5K.cjs} +4 -4
  15. package/dist/{chunk-N2CISBJJ.cjs → chunk-GABDE3FM.cjs} +10 -10
  16. package/dist/{chunk-MYBTNOS6.cjs → chunk-GSWQZX23.cjs} +2 -2
  17. package/dist/{chunk-JZNESLJX.cjs → chunk-HF7Z2E4W.cjs} +2 -2
  18. package/dist/chunk-HOTM4UM6.cjs +84 -0
  19. package/dist/{chunk-HNYLTEIS.cjs → chunk-HYBMADYO.cjs} +13 -13
  20. package/dist/{chunk-EAY6ZUES.cjs → chunk-I5MSCD57.cjs} +2 -2
  21. package/dist/{chunk-3BBOAMWJ.cjs → chunk-KLI4OSRA.cjs} +2 -2
  22. package/dist/{chunk-R36NZTUJ.cjs → chunk-LLAC2UZ3.cjs} +24 -24
  23. package/dist/{chunk-FG7HTGT3.cjs → chunk-O67V3HJR.cjs} +14 -14
  24. package/dist/{chunk-UMO55S55.cjs → chunk-PQ2M7P2U.cjs} +5 -5
  25. package/dist/{chunk-MLKL2YVE.cjs → chunk-SFY4UYPY.cjs} +44 -44
  26. package/dist/{chunk-66R4NGGU.cjs → chunk-SWR22DOZ.cjs} +176 -88
  27. package/dist/{chunk-MTNNYSP3.cjs → chunk-UW3YXDC4.cjs} +20 -20
  28. package/dist/{chunk-U5BRSRXA.cjs → chunk-VC4IV3AY.cjs} +644 -621
  29. package/dist/{chunk-4YQNJJWM.cjs → chunk-VU4CKUJW.cjs} +90 -90
  30. package/dist/{chunk-GAF4L3JW.cjs → chunk-WBANGORJ.cjs} +3 -3
  31. package/dist/{chunk-LY5VOKV7.cjs → chunk-YRE3O65E.cjs} +12 -12
  32. package/dist/{chunk-7F3V45AH.cjs → chunk-YXKB5WRE.cjs} +66 -75
  33. package/dist/{chunk-N5NDPULP.cjs → chunk-ZLTCQKTD.cjs} +6 -6
  34. package/dist/{cloud-tenants-FTQGWXHS.cjs → cloud-tenants-PVXDI5MU.cjs} +15 -15
  35. package/dist/components/case-studies/index.cjs +27 -27
  36. package/dist/components/chat/index.cjs +11 -11
  37. package/dist/components/contact/index.cjs +16 -16
  38. package/dist/components/docs/index.cjs +19 -19
  39. package/dist/components/embeds/index.cjs +16 -16
  40. package/dist/components/faq/index.cjs +17 -17
  41. package/dist/components/features/index.cjs +15 -15
  42. package/dist/components/features/walkthrough-video.d.ts +3 -0
  43. package/dist/components/features/walkthrough-video.d.ts.map +1 -1
  44. package/dist/components/features/walkthrough-video.js +36 -13
  45. package/dist/components/help-center-pages/index.cjs +118 -118
  46. package/dist/components/index.cjs +86 -80
  47. package/dist/components/meeting-scheduler/index.cjs +57 -57
  48. package/dist/components/navigation/index.cjs +18 -18
  49. package/dist/components/onboarding-guides/index.cjs +18 -18
  50. package/dist/components/product-demo/index.cjs +8 -8
  51. package/dist/components/related-content/index.cjs +9 -9
  52. package/dist/components/shared/legal-document/index.d.ts +2 -1
  53. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  54. package/dist/components/shared/legal-document/index.js +10 -2
  55. package/dist/components/shared/legal-document/legal-document-page.d.ts +35 -23
  56. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  57. package/dist/components/shared/legal-document/legal-document-page.js +27 -10
  58. package/dist/components/shared/legal-document/use-legal-docs.d.ts +7 -3
  59. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  60. package/dist/components/shared/legal-document/use-legal-docs.js +7 -0
  61. package/dist/components/shared/legal-document/use-legal-documents.d.ts +31 -0
  62. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -0
  63. package/dist/components/shared/legal-document/use-legal-documents.js +67 -0
  64. package/dist/components/tickets/index.cjs +21 -21
  65. package/dist/components/ui/index.cjs +15 -15
  66. package/dist/{devices-MPI5HUQS.cjs → devices-TWEA7XOR.cjs} +16 -16
  67. package/dist/embed-shims/index.cjs +2 -2
  68. package/dist/embed-shims/next-image.cjs +2 -2
  69. package/dist/embed-shims/next-image.d.ts.map +1 -1
  70. package/dist/embed-shims/next-image.js +6 -2
  71. package/dist/{embeddable-chat-7WLUDBGK.cjs → embeddable-chat-6JKKFQEB.cjs} +82 -82
  72. package/dist/hooks/index.cjs +3 -3
  73. package/dist/index.cjs +26 -21
  74. package/dist/{knowledge-BS663XXL.cjs → knowledge-4GQDBNQB.cjs} +16 -16
  75. package/dist/{logs-KS2A2VN5.cjs → logs-EVU6GJHZ.cjs} +23 -23
  76. package/dist/{policies-H3OK6H4Q.cjs → policies-OZUEA5YS.cjs} +19 -19
  77. package/dist/{remote-session-EHKXU4HI.cjs → remote-session-DNFZ5OLY.cjs} +8 -8
  78. package/dist/{software-update-HMMMWIL3.cjs → software-update-BLIVYOY2.cjs} +19 -19
  79. package/dist/{tickets-board-3YJKOOZE.cjs → tickets-board-CKZRB6YV.cjs} +9 -9
  80. package/dist/utils/index.cjs +8 -0
  81. package/dist/utils/index.d.ts +1 -0
  82. package/dist/utils/index.d.ts.map +1 -1
  83. package/dist/utils/index.js +1 -0
  84. package/dist/utils/legal-documents.d.ts +18 -0
  85. package/dist/utils/legal-documents.d.ts.map +1 -0
  86. package/dist/utils/legal-documents.js +8 -0
  87. package/package.json +1 -1
  88. package/src/components/features/walkthrough-video.tsx +59 -18
  89. package/src/components/shared/legal-document/index.ts +8 -0
  90. package/src/components/shared/legal-document/legal-document-page.tsx +83 -44
  91. package/src/components/shared/legal-document/use-legal-docs.ts +18 -3
  92. package/src/components/shared/legal-document/use-legal-documents.ts +113 -0
  93. package/src/components/ui/dropdown-button.tsx +1 -1
  94. package/src/embed-shims/next-image.tsx +15 -4
  95. package/src/utils/index.ts +1 -0
  96. package/src/utils/legal-documents.ts +21 -0
  97. package/dist/chunk-UR4K2NSL.cjs +0 -69
@@ -1,21 +1,21 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkJZNESLJXcjs = require('./chunk-JZNESLJX.cjs');
4
+ var _chunkHF7Z2E4Wcjs = require('./chunk-HF7Z2E4W.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkMTNNYSP3cjs = require('./chunk-MTNNYSP3.cjs');
8
+ var _chunkUW3YXDC4cjs = require('./chunk-UW3YXDC4.cjs');
9
9
 
10
10
 
11
- var _chunkGAF4L3JWcjs = require('./chunk-GAF4L3JW.cjs');
11
+ var _chunkWBANGORJcjs = require('./chunk-WBANGORJ.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunkHNYLTEIScjs = require('./chunk-HNYLTEIS.cjs');
15
+ var _chunkHYBMADYOcjs = require('./chunk-HYBMADYO.cjs');
16
16
 
17
17
 
18
- var _chunkEG545WGVcjs = require('./chunk-EG545WGV.cjs');
18
+ var _chunkB3XBJCODcjs = require('./chunk-B3XBJCOD.cjs');
19
19
 
20
20
 
21
21
 
@@ -27,10 +27,10 @@ var _chunkEG545WGVcjs = require('./chunk-EG545WGV.cjs');
27
27
 
28
28
 
29
29
 
30
- var _chunkU5BRSRXAcjs = require('./chunk-U5BRSRXA.cjs');
30
+ var _chunkVC4IV3AYcjs = require('./chunk-VC4IV3AY.cjs');
31
31
 
32
32
 
33
- var _chunk7LTG6CJ3cjs = require('./chunk-7LTG6CJ3.cjs');
33
+ var _chunkDSVNFRY5cjs = require('./chunk-DSVNFRY5.cjs');
34
34
 
35
35
 
36
36
 
@@ -39,12 +39,12 @@ var _chunkVA7OMDZOcjs = require('./chunk-VA7OMDZO.cjs');
39
39
 
40
40
 
41
41
 
42
- var _chunk4T6ETBL4cjs = require('./chunk-4T6ETBL4.cjs');
42
+ var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
43
43
 
44
44
 
45
45
 
46
46
 
47
- var _chunkBRKTN6URcjs = require('./chunk-BRKTN6UR.cjs');
47
+ var _chunkBV5WZVOPcjs = require('./chunk-BV5WZVOP.cjs');
48
48
 
49
49
 
50
50
  var _chunkEWCFJLNUcjs = require('./chunk-EWCFJLNU.cjs');
@@ -58,7 +58,7 @@ var _chunkSA7LDEVJcjs = require('./chunk-SA7LDEVJ.cjs');
58
58
  var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
59
59
 
60
60
 
61
- var _chunkLY5VOKV7cjs = require('./chunk-LY5VOKV7.cjs');
61
+ var _chunkYRE3O65Ecjs = require('./chunk-YRE3O65E.cjs');
62
62
 
63
63
 
64
64
 
@@ -75,10 +75,10 @@ var _chunkLY5VOKV7cjs = require('./chunk-LY5VOKV7.cjs');
75
75
 
76
76
 
77
77
 
78
- var _chunk7F3V45AHcjs = require('./chunk-7F3V45AH.cjs');
78
+ var _chunkYXKB5WREcjs = require('./chunk-YXKB5WRE.cjs');
79
79
 
80
80
 
81
- var _chunkFTTLBMHUcjs = require('./chunk-FTTLBMHU.cjs');
81
+ var _chunk7ZFCR7UYcjs = require('./chunk-7ZFCR7UY.cjs');
82
82
 
83
83
 
84
84
 
@@ -88,7 +88,7 @@ var _chunkBLH2SFOOcjs = require('./chunk-BLH2SFOO.cjs');
88
88
  var _chunkPX7FY655cjs = require('./chunk-PX7FY655.cjs');
89
89
 
90
90
 
91
- var _chunkUR4K2NSLcjs = require('./chunk-UR4K2NSL.cjs');
91
+ var _chunkHOTM4UM6cjs = require('./chunk-HOTM4UM6.cjs');
92
92
 
93
93
 
94
94
  var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
@@ -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 = _chunk4T6ETBL4cjs.DEV_SECTION_PARAM_KEYS.search;
106
- var DEFAULT_STATUS_PARAM_KEY = _chunk4T6ETBL4cjs.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,17 +112,17 @@ 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 = _chunk4T6ETBL4cjs.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,
119
119
  platforms: release.product_release_platforms
120
120
  });
121
- const { target, rel } = _chunk7F3V45AHcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
121
+ const { target, rel } = _chunkYXKB5WREcjs.useEntityCardLink.call(void 0, { href: cta.href, targetPlatform: cta.targetPlatform });
122
122
  const onClick = (e) => {
123
- if (e.defaultPrevented || _chunk7F3V45AHcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
123
+ if (e.defaultPrevented || _chunkYXKB5WREcjs.isModifierClick.call(void 0, e) || target === "_blank") return;
124
124
  e.preventDefault();
125
- _chunkBRKTN6URcjs.executeNavigationImperative.call(void 0, {
125
+ _chunkBV5WZVOPcjs.executeNavigationImperative.call(void 0, {
126
126
  runtime,
127
127
  href: cta.href,
128
128
  targetPlatform: cta.targetPlatform,
@@ -130,7 +130,7 @@ function ReleaseRow({
130
130
  });
131
131
  };
132
132
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
133
- _chunk7F3V45AHcjs.ProductReleaseCard,
133
+ _chunkYXKB5WREcjs.ProductReleaseCard,
134
134
  {
135
135
  size: "lg",
136
136
  title: release.title,
@@ -146,7 +146,7 @@ function ProductReleasesView({
146
146
  initialData,
147
147
  itemsPerPage = 5,
148
148
  basePath = "/releases",
149
- buildCardProps = _chunk7F3V45AHcjs.buildProductReleaseCardProps,
149
+ buildCardProps = _chunkYXKB5WREcjs.buildProductReleaseCardProps,
150
150
  searchParamKey = DEFAULT_SEARCH_PARAM_KEY,
151
151
  statusParamKey = DEFAULT_STATUS_PARAM_KEY,
152
152
  pageParamKey = DEFAULT_PAGE_PARAM_KEY,
@@ -162,7 +162,7 @@ function ProductReleasesView({
162
162
  const listParams = new URLSearchParams({ limit: String(itemsPerPage), offset: String(offset) });
163
163
  if (search) listParams.set(searchParamKey, search);
164
164
  if (status && status !== "all") listParams.set(statusParamKey, status);
165
- const { data, isLoading, error, reload } = _chunkLY5VOKV7cjs.useSelfFetch.call(void 0,
165
+ const { data, isLoading, error, reload } = _chunkYRE3O65Ecjs.useSelfFetch.call(void 0,
166
166
  `${endpoint}?${listParams.toString()}`,
167
167
  { initialData }
168
168
  );
@@ -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, _chunkU5BRSRXAcjs.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, _chunkVC4IV3AYcjs.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
- _chunkMTNNYSP3cjs.ListEmptyState,
190
+ _chunkUW3YXDC4cjs.ListEmptyState,
191
191
  {
192
192
  isFiltered: hasActiveFilters,
193
193
  filtered: {
@@ -206,13 +206,13 @@ function ProductReleasesView({
206
206
  "div",
207
207
  {
208
208
  style: { visibility: isLoading || hasData ? "visible" : "hidden" },
209
- children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.ProductReleaseCardSkeleton, { size: "lg" }) : release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.ProductReleaseCardSkeleton, { size: "lg" })
209
+ children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.ProductReleaseCardSkeleton, { size: "lg" }) : release ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ReleaseRow, { release, basePath, buildCardProps }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.ProductReleaseCardSkeleton, { size: "lg" })
210
210
  },
211
211
  _nullishCoalesce(_optionalChain([release, 'optionalAccess', _5 => _5.id]), () => ( `slot-${i}`))
212
212
  );
213
213
  }) }),
214
214
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "mt-6 flex justify-center content-md:mt-8", children: isLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "m-3 h-12 w-64" }) : releases.length > 0 && totalPages > 1 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
215
- _chunkJZNESLJXcjs.PersistentPaginationWrapper,
215
+ _chunkHF7Z2E4Wcjs.PersistentPaginationWrapper,
216
216
  {
217
217
  isLoading: false,
218
218
  currentPage,
@@ -250,7 +250,7 @@ function MediaGalleryStrip({ items, className }) {
250
250
  setGalleryOpen(true);
251
251
  },
252
252
  children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
253
- _chunkUR4K2NSLcjs.next_image_default,
253
+ _chunkHOTM4UM6cjs.next_image_default,
254
254
  {
255
255
  src: mediaItem.media_url,
256
256
  alt: mediaItem.title || `Media ${index + 1}`,
@@ -264,10 +264,10 @@ function MediaGalleryStrip({ items, className }) {
264
264
  mediaItem.id || index
265
265
  );
266
266
  }
267
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
267
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: tileClass, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.Video, { url: mediaItem.media_url, layout: "native" }) }, mediaItem.id || index);
268
268
  }) }),
269
269
  galleryImages.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
270
- _chunk7F3V45AHcjs.ImageGalleryModal,
270
+ _chunkYXKB5WREcjs.ImageGalleryModal,
271
271
  {
272
272
  images: galleryImages,
273
273
  isOpen: galleryOpen,
@@ -282,7 +282,7 @@ function MediaGalleryStrip({ items, className }) {
282
282
  var _lucidereact = require('lucide-react');
283
283
 
284
284
 
285
- var DefaultMarkdownRenderer = _chunkU5BRSRXAcjs.RichMarkdownRenderer;
285
+ var DefaultMarkdownRenderer = _chunkVC4IV3AYcjs.RichMarkdownRenderer;
286
286
  var DEFAULT_ENDPOINT2 = "/api/releases";
287
287
  function ReleaseDetailPage({
288
288
  authorHref,
@@ -300,14 +300,14 @@ function ReleaseDetailPage({
300
300
  shell = true
301
301
  }) {
302
302
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
303
- const captions = _chunkBRKTN6URcjs.useCaptions.call(void 0, );
304
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkU5BRSRXAcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
303
+ const captions = _chunkBV5WZVOPcjs.useCaptions.call(void 0, );
304
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.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,
308
308
  isLoading,
309
309
  error
310
- } = _chunkLY5VOKV7cjs.useSelfFetch.call(void 0, slug ? `${endpoint}/${encodeURIComponent(slug)}` : null, {
310
+ } = _chunkYRE3O65Ecjs.useSelfFetch.call(void 0, slug ? `${endpoint}/${encodeURIComponent(slug)}` : null, {
311
311
  initialData: seed
312
312
  });
313
313
  const showBackButton = backButton !== false;
@@ -360,7 +360,7 @@ function ReleaseDetailPage({
360
360
  return renderShell(
361
361
  // Match the loaded page's top offset (TitleBlock's
362
362
  // `pt-[var(--spacing-system-l)]`) so content doesn't jump on load.
363
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEG545WGVcjs.DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) })
363
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "pt-[var(--spacing-system-l)]", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkB3XBJCODcjs.DetailPageSkeleton, { bare: true, metadataColumns: 4, showImageGallery: true }) })
364
364
  );
365
365
  }
366
366
  if (error || !release) {
@@ -399,7 +399,7 @@ function ReleaseDetailPage({
399
399
  const improvements = release.improvements;
400
400
  return renderShell(
401
401
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
402
- _chunk7LTG6CJ3cjs.PageLayout,
402
+ _chunkDSVNFRY5cjs.PageLayout,
403
403
  {
404
404
  title: releaseTitle,
405
405
  subtitle: `Version: ${releaseVersion}`,
@@ -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, _chunkU5BRSRXAcjs.EntityTagBadges, { tags: release.product_release_tags }),
411
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.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() }),
@@ -419,11 +419,11 @@ function ReleaseDetailPage({
419
419
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Release Status" })
420
420
  ] }) }),
421
421
  /* @__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: [
422
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: _chunk7F3V45AHcjs.formatReleaseDate.call(void 0, releaseDate) }),
422
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: _chunkYXKB5WREcjs.formatReleaseDate.call(void 0, releaseDate) }),
423
423
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "Release Date" })
424
424
  ] }) }),
425
425
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
426
- _chunk7F3V45AHcjs.EntityMetadataAuthorCell,
426
+ _chunkYXKB5WREcjs.EntityMetadataAuthorCell,
427
427
  {
428
428
  author: _nullishCoalesce(author, () => ( { full_name: null, avatar_url: null })),
429
429
  authorHref: _optionalChain([author, 'optionalAccess', _7 => _7.full_name]) ? authorHref : void 0
@@ -441,18 +441,18 @@ function ReleaseDetailPage({
441
441
  highlightVideoThumbnail,
442
442
  title: releaseTitle,
443
443
  videoBites,
444
- bitesTitle: _chunk7F3V45AHcjs.DEFAULT_VIDEO_BITES_TITLE,
444
+ bitesTitle: _chunkYXKB5WREcjs.DEFAULT_VIDEO_BITES_TITLE,
445
445
  filterPublishedBites: true,
446
- bitesProfile: _chunk7F3V45AHcjs.toStripProfile.call(void 0, author),
446
+ bitesProfile: _chunkYXKB5WREcjs.toStripProfile.call(void 0, author),
447
447
  bitesHref: typeof release.slug === "string" ? `/releases/${release.slug}` : void 0,
448
448
  captionsUrl,
449
449
  highlightCaptionsUrl
450
450
  }
451
451
  ) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
452
- youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.Video, { kind: "youtube", url: youtubeUrl, title: `${releaseTitle} - Video`, layout: "native" }),
453
- !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.Video, { url: mainVideoUrl, captionsUrl, layout: "centered" }),
452
+ youtubeUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.Video, { kind: "youtube", url: youtubeUrl, title: `${releaseTitle} - Video`, layout: "native" }),
453
+ !youtubeUrl && mainVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.Video, { url: mainVideoUrl, captionsUrl, layout: "centered" }),
454
454
  highlightVideoUrl && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
455
- _chunk7F3V45AHcjs.Video,
455
+ _chunkYXKB5WREcjs.Video,
456
456
  {
457
457
  url: highlightVideoUrl,
458
458
  poster: highlightVideoThumbnail,
@@ -462,7 +462,7 @@ function ReleaseDetailPage({
462
462
  )
463
463
  ] }),
464
464
  releaseContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-ods-text-primary text-h4", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownRenderer, { content: releaseContent }) }),
465
- hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.Card, { className: "border-ods-error bg-ods-error/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
465
+ hasBreakingChanges && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.Card, { className: "border-ods-error bg-ods-error/10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.CardContent, { className: "p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-3", children: [
466
466
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.AlertTriangle, { className: "h-6 w-6 text-ods-error" }),
467
467
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { children: [
468
468
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-ods-error text-h3", children: "Breaking Changes" }),
@@ -470,7 +470,7 @@ function ReleaseDetailPage({
470
470
  ] })
471
471
  ] }) }) }),
472
472
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
473
- _chunkU5BRSRXAcjs.ReleaseChangelogSection,
473
+ _chunkVC4IV3AYcjs.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
- _chunkU5BRSRXAcjs.ReleaseChangelogSection,
484
+ _chunkVC4IV3AYcjs.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
- _chunkU5BRSRXAcjs.ReleaseChangelogSection,
494
+ _chunkVC4IV3AYcjs.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
- _chunkU5BRSRXAcjs.ReleaseChangelogSection,
504
+ _chunkVC4IV3AYcjs.ReleaseChangelogSection,
505
505
  {
506
506
  title: "Improvements",
507
507
  entries: improvements || [],
@@ -527,12 +527,12 @@ 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, _chunkU5BRSRXAcjs.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, _chunkVC4IV3AYcjs.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: [
534
534
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "tracking-[-0.28px] text-ods-text-secondary text-h5", children: "Related Links" }),
535
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7F3V45AHcjs.Card, { className: "border-ods-border bg-ods-card p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
535
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYXKB5WREcjs.Card, { className: "border-ods-border bg-ods-card p-6", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
536
536
  githubReleases && githubReleases.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children: githubReleases.map((ghRelease) => /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-start gap-1", children: [
537
537
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEWCFJLNUcjs.GithubClassicIcon, { className: "shrink-0", size: 24, color: "var(--color-text-secondary)" }),
538
538
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-text-primary text-h4", children: "Github Release" }),
@@ -606,7 +606,7 @@ function ReleaseDetailPage({
606
606
  // src/components/shared/product-release/release-detail-skeleton.tsx
607
607
 
608
608
  function ReleaseDetailSkeleton() {
609
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkEG545WGVcjs.DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
609
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkB3XBJCODcjs.DetailPageSkeleton, { metadataColumns: 4, showImageGallery: true });
610
610
  }
611
611
 
612
612
  // src/components/shared/roadmap/use-roadmap-voting.ts
@@ -629,7 +629,7 @@ function useRoadmapVoting(options = {}) {
629
629
  const { getSignals } = _chunkVA7OMDZOcjs.useHumanitySignals.call(void 0, );
630
630
  const [votes, setVotes] = _react.useState.call(void 0, NO_VOTES);
631
631
  const [loadedKey, setLoadedKey] = _react.useState.call(void 0, null);
632
- const hydrated = _chunkBRKTN6URcjs.useIsHydrated.call(void 0, );
632
+ const hydrated = _chunkBV5WZVOPcjs.useIsHydrated.call(void 0, );
633
633
  if (hydrated && loadedKey !== storageKey) {
634
634
  setLoadedKey(storageKey);
635
635
  setVotes(readStoredVotes(storageKey));
@@ -778,10 +778,10 @@ function RoadmapGridSingle({
778
778
  // `useScrollToHash` in `roadmap-view.tsx` finds the card by id
779
779
  // and scrolls.
780
780
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
781
- _chunk7F3V45AHcjs.RoadmapCard,
781
+ _chunkYXKB5WREcjs.RoadmapCard,
782
782
  {
783
783
  item,
784
- id: _chunk4T6ETBL4cjs.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)
@@ -875,7 +875,7 @@ function RoadmapGrid({
875
875
  }, [hasActiveFilters, sortedQuartersKey, isInitialized, quartersToKeepClosed]);
876
876
  if (items.length === 0) {
877
877
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
878
- _chunkGAF4L3JWcjs.EmptyState,
878
+ _chunkWBANGORJcjs.EmptyState,
879
879
  {
880
880
  type: "generic",
881
881
  title: "No roadmap items",
@@ -897,7 +897,7 @@ function RoadmapGrid({
897
897
  );
898
898
  }
899
899
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
900
- _chunkU5BRSRXAcjs.Accordion,
900
+ _chunkVC4IV3AYcjs.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
- _chunkU5BRSRXAcjs.AccordionItem,
910
+ _chunkVC4IV3AYcjs.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, _chunkU5BRSRXAcjs.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, _chunkVC4IV3AYcjs.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, _chunkU5BRSRXAcjs.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, _chunkVC4IV3AYcjs.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 = _chunk4T6ETBL4cjs.DEV_SECTION_PARAM_KEYS.search;
999
- var DEFAULT_STATUS_PARAM_KEY2 = _chunk4T6ETBL4cjs.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,
@@ -1015,11 +1015,11 @@ function RoadmapView({
1015
1015
  const qs = listParams.toString();
1016
1016
  const url = qs ? `${endpoint}?${qs}` : endpoint;
1017
1017
  const initialData = _react.useMemo.call(void 0, () => initialItems ? { items: initialItems } : void 0, [initialItems]);
1018
- const { data, setData, isLoading, error, reload } = _chunkLY5VOKV7cjs.useSelfFetch.call(void 0, url, { initialData });
1018
+ const { data, setData, isLoading, error, reload } = _chunkYRE3O65Ecjs.useSelfFetch.call(void 0, url, { initialData });
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, _chunkU5BRSRXAcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1022
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.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 });
@@ -1061,18 +1061,18 @@ function SkeletonRow() {
1061
1061
  }
1062
1062
  function DeliveryTable({ items, isLoading = false }) {
1063
1063
  if (isLoading) {
1064
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${_chunk7F3V45AHcjs.CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonRow, {}, i)) }) });
1064
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${_chunkYXKB5WREcjs.CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: [1, 2, 3, 4, 5].map((i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, SkeletonRow, {}, i)) }) });
1065
1065
  }
1066
1066
  if (items.length === 0) {
1067
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${_chunk7F3V45AHcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} p-[var(--spacing-system-xlf)] text-center`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "No tasks available" }) });
1067
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${_chunkYXKB5WREcjs.CONTENT_CARD_SKELETON_FRAME_CLASS} p-[var(--spacing-system-xlf)] text-center`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary text-h6", children: "No tasks available" }) });
1068
1068
  }
1069
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${_chunk7F3V45AHcjs.CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: items.map((item) => (
1069
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${_chunkYXKB5WREcjs.CONTENT_CARD_SKELETON_FRAME_CLASS}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: items.map((item) => (
1070
1070
  // DOM id lives on DeliveryRow's own outer element (no wrapper
1071
1071
  // div). Anchor mirrors `buildDevSectionUrl('delivery', <id>)`
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, _chunkMTNNYSP3cjs.DeliveryRow, { item, id: _chunk4T6ETBL4cjs.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, _chunkUW3YXDC4cjs.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 = _chunk4T6ETBL4cjs.DEV_SECTION_PARAM_KEYS.search;
1085
- var DEFAULT_TASK_TYPE_PARAM_KEY = _chunk4T6ETBL4cjs.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, _chunkU5BRSRXAcjs.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, _chunkVC4IV3AYcjs.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
- _chunkMTNNYSP3cjs.ListEmptyState,
1156
+ _chunkUW3YXDC4cjs.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 = _chunkU5BRSRXAcjs.RichMarkdownRenderer,
1387
+ MarkdownRenderer = _chunkVC4IV3AYcjs.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 ? _chunkFTTLBMHUcjs.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;
1324
- const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk7LTG6CJ3cjs.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: [
1408
+ const subtitle = _nullishCoalesce(legalDocumentStampLabel(data), () => ( (effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription)));
1409
+ const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkDSVNFRY5cjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, 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, _chunkHNYLTEIScjs.FaqSection, { ..._chunkHNYLTEIScjs.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, _chunkU5BRSRXAcjs.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, _chunkVC4IV3AYcjs.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;