@flamingo-stack/openframe-frontend-core 0.0.739 → 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 (65) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-WMKNZI4G.cjs → chunk-2Y5Y4FLM.cjs} +22 -22
  3. package/dist/{chunk-ENCAIAMY.cjs → chunk-3ZIQOYNX.cjs} +3 -3
  4. package/dist/{chunk-UI3HROSI.cjs → chunk-4RLGLB45.cjs} +33 -33
  5. package/dist/{chunk-FL6UO7IR.cjs → chunk-5SVOGLNK.cjs} +2 -2
  6. package/dist/{chunk-DTLHY2ZF.cjs → chunk-7UIQPMBJ.cjs} +11 -11
  7. package/dist/{chunk-UYP3G6PB.cjs → chunk-BDA5F6RM.cjs} +2 -2
  8. package/dist/{chunk-S2CA5WE4.cjs → chunk-CWRVTQUO.cjs} +9 -1
  9. package/dist/{chunk-CUDTMCXK.cjs → chunk-D5KEWWLW.cjs} +13 -13
  10. package/dist/{chunk-UXFJXIUT.cjs → chunk-EKGL5K5K.cjs} +2 -2
  11. package/dist/{chunk-V2ZFH42N.cjs → chunk-HYBMADYO.cjs} +3 -3
  12. package/dist/{chunk-Q7GG3WC5.cjs → chunk-LLAC2UZ3.cjs} +5 -5
  13. package/dist/{chunk-EGN4I5Q7.cjs → chunk-SWR22DOZ.cjs} +134 -46
  14. package/dist/{chunk-TF7J6VXG.cjs → chunk-UW3YXDC4.cjs} +9 -9
  15. package/dist/{chunk-SB4VWA5V.cjs → chunk-VC4IV3AY.cjs} +70 -70
  16. package/dist/{chunk-RGFT3P3L.cjs → chunk-VU4CKUJW.cjs} +55 -55
  17. package/dist/{chunk-NX6JQT25.cjs → chunk-ZLTCQKTD.cjs} +4 -4
  18. package/dist/{cloud-tenants-QSFSO3PA.cjs → cloud-tenants-PVXDI5MU.cjs} +3 -3
  19. package/dist/components/case-studies/index.cjs +11 -11
  20. package/dist/components/chat/index.cjs +2 -2
  21. package/dist/components/contact/index.cjs +4 -4
  22. package/dist/components/docs/index.cjs +7 -7
  23. package/dist/components/embeds/index.cjs +4 -4
  24. package/dist/components/faq/index.cjs +5 -5
  25. package/dist/components/features/index.cjs +3 -3
  26. package/dist/components/help-center-pages/index.cjs +53 -53
  27. package/dist/components/index.cjs +39 -33
  28. package/dist/components/meeting-scheduler/index.cjs +17 -17
  29. package/dist/components/navigation/index.cjs +6 -6
  30. package/dist/components/onboarding-guides/index.cjs +5 -5
  31. package/dist/components/product-demo/index.cjs +6 -6
  32. package/dist/components/shared/legal-document/index.d.ts +2 -1
  33. package/dist/components/shared/legal-document/index.d.ts.map +1 -1
  34. package/dist/components/shared/legal-document/index.js +10 -2
  35. package/dist/components/shared/legal-document/legal-document-page.d.ts +35 -23
  36. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  37. package/dist/components/shared/legal-document/legal-document-page.js +27 -10
  38. package/dist/components/shared/legal-document/use-legal-docs.d.ts +7 -3
  39. package/dist/components/shared/legal-document/use-legal-docs.d.ts.map +1 -1
  40. package/dist/components/shared/legal-document/use-legal-docs.js +7 -0
  41. package/dist/components/shared/legal-document/use-legal-documents.d.ts +31 -0
  42. package/dist/components/shared/legal-document/use-legal-documents.d.ts.map +1 -0
  43. package/dist/components/shared/legal-document/use-legal-documents.js +67 -0
  44. package/dist/components/tickets/index.cjs +8 -8
  45. package/dist/components/ui/index.cjs +3 -3
  46. package/dist/{devices-C7XLWJFC.cjs → devices-TWEA7XOR.cjs} +4 -4
  47. package/dist/index.cjs +11 -7
  48. package/dist/{knowledge-3QKWTOE7.cjs → knowledge-4GQDBNQB.cjs} +3 -3
  49. package/dist/{logs-JXD75NR4.cjs → logs-EVU6GJHZ.cjs} +11 -11
  50. package/dist/{policies-ZPN53PFQ.cjs → policies-OZUEA5YS.cjs} +7 -7
  51. package/dist/{software-update-CRSIBS3K.cjs → software-update-BLIVYOY2.cjs} +6 -6
  52. package/dist/utils/index.cjs +8 -0
  53. package/dist/utils/index.d.ts +1 -0
  54. package/dist/utils/index.d.ts.map +1 -1
  55. package/dist/utils/index.js +1 -0
  56. package/dist/utils/legal-documents.d.ts +18 -0
  57. package/dist/utils/legal-documents.d.ts.map +1 -0
  58. package/dist/utils/legal-documents.js +8 -0
  59. package/package.json +1 -1
  60. package/src/components/shared/legal-document/index.ts +8 -0
  61. package/src/components/shared/legal-document/legal-document-page.tsx +83 -44
  62. package/src/components/shared/legal-document/use-legal-docs.ts +18 -3
  63. package/src/components/shared/legal-document/use-legal-documents.ts +113 -0
  64. package/src/utils/index.ts +1 -0
  65. package/src/utils/legal-documents.ts +21 -0
@@ -6,20 +6,20 @@ var _chunkB3XBJCODcjs = require('./chunk-B3XBJCOD.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunkUYP3G6PBcjs = require('./chunk-UYP3G6PB.cjs');
9
+ var _chunkBDA5F6RMcjs = require('./chunk-BDA5F6RM.cjs');
10
10
 
11
11
 
12
12
 
13
13
 
14
14
 
15
15
 
16
- var _chunkSB4VWA5Vcjs = require('./chunk-SB4VWA5V.cjs');
16
+ var _chunkVC4IV3AYcjs = require('./chunk-VC4IV3AY.cjs');
17
17
 
18
18
 
19
19
  var _chunkDSVNFRY5cjs = require('./chunk-DSVNFRY5.cjs');
20
20
 
21
21
 
22
- var _chunkS2CA5WE4cjs = require('./chunk-S2CA5WE4.cjs');
22
+ var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
23
23
 
24
24
 
25
25
 
@@ -138,14 +138,14 @@ function OnboardingGuidesCatalogView({
138
138
  });
139
139
  };
140
140
  const source = _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _6 => _6.source]), () => ( "openframe"));
141
- const docSearch = _chunkUYP3G6PBcjs.useDocSearch.call(void 0, {
141
+ const docSearch = _chunkBDA5F6RMcjs.useDocSearch.call(void 0, {
142
142
  source,
143
143
  baseRoute: basePath,
144
144
  onNavigate: (path) => router.push(path),
145
145
  tableIds: ["onboarding-guides"]
146
146
  });
147
147
  const defaultRenderCard = (guide) => {
148
- const cta = _chunkS2CA5WE4cjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _7 => _7.composeContentUrl]), {
148
+ const cta = _chunkCWRVTQUOcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _7 => _7.composeContentUrl]), {
149
149
  type: "onboarding_guide",
150
150
  slug: guide.slug,
151
151
  basePath,
@@ -156,7 +156,7 @@ function OnboardingGuidesCatalogView({
156
156
  const renderCardFn = _nullishCoalesce(renderCard, () => ( defaultRenderCard));
157
157
  const preControls = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
158
158
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
159
- _chunkUYP3G6PBcjs.DocSearchBar,
159
+ _chunkBDA5F6RMcjs.DocSearchBar,
160
160
  {
161
161
  placeholder: "Search onboarding guides, releases, case studies\u2026",
162
162
  query: docSearch.query,
@@ -168,7 +168,7 @@ function OnboardingGuidesCatalogView({
168
168
  }
169
169
  ),
170
170
  sections.length > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
171
- _chunkSB4VWA5Vcjs.FilterPillRow,
171
+ _chunkVC4IV3AYcjs.FilterPillRow,
172
172
  {
173
173
  label: "Section",
174
174
  selectedValue: activeSection,
@@ -178,7 +178,7 @@ function OnboardingGuidesCatalogView({
178
178
  )
179
179
  ] });
180
180
  if (selfFetch && guidesRes.error) {
181
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.LoadError, { message: "Failed to load onboarding guides.", onRetry: guidesRes.reload });
181
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.LoadError, { message: "Failed to load onboarding guides.", onRetry: guidesRes.reload });
182
182
  }
183
183
  if (selfFetch && guidesRes.data == null && isLoading) {
184
184
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, OnboardingGuidesCatalogSkeleton, {});
@@ -210,7 +210,7 @@ function OnboardingGuideDetailView({
210
210
  slug,
211
211
  guideEndpoint,
212
212
  related = [],
213
- MarkdownRenderer = _chunkSB4VWA5Vcjs.RichMarkdownRenderer,
213
+ MarkdownRenderer = _chunkVC4IV3AYcjs.RichMarkdownRenderer,
214
214
  renderRelatedCard,
215
215
  backHref,
216
216
  backLabel = "Back to Getting Started",
@@ -222,7 +222,7 @@ function OnboardingGuideDetailView({
222
222
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
223
223
  const captions = _chunkBV5WZVOPcjs.useCaptions.call(void 0, );
224
224
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
225
- 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 });
225
+ 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 });
226
226
  const url = initialData ? null : slug && guideEndpoint ? guideEndpoint(slug) : null;
227
227
  const { data: guide, isLoading, error, reload } = _chunkYRE3O65Ecjs.useSelfFetch.call(void 0, url, { initialData });
228
228
  const { ref: videoWarmupRef } = _chunk3RFQPQ7Zcjs.useVideoWarmup.call(void 0, {
@@ -230,7 +230,7 @@ function OnboardingGuideDetailView({
230
230
  supabaseStorageOrigin: _optionalChain([runtime, 'optionalAccess', _9 => _9.endpoints, 'access', _10 => _10.supabaseStorageOrigin])
231
231
  });
232
232
  if (error || !guide && !isLoading) {
233
- return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.LoadError, { message: "Guide not found.", onRetry: reload }));
233
+ return renderShell(/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.LoadError, { message: "Guide not found.", onRetry: reload }));
234
234
  }
235
235
  if (!guide) {
236
236
  return renderShell(
@@ -244,7 +244,7 @@ function OnboardingGuideDetailView({
244
244
  // worst), so it's the terminal fallback — no trailing `|| undefined` needed.
245
245
  _chunkI5MSCD57cjs.buildOgPlaceholderUrl.call(void 0, _optionalChain([runtime, 'optionalAccess', _11 => _11.endpoints]), guide.title, { aspect: "wide" });
246
246
  const defaultRenderRelatedCard = (g) => {
247
- const cta = _chunkS2CA5WE4cjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _12 => _12.composeContentUrl]), {
247
+ const cta = _chunkCWRVTQUOcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _12 => _12.composeContentUrl]), {
248
248
  type: "onboarding_guide",
249
249
  slug: g.slug,
250
250
  basePath,
@@ -262,7 +262,7 @@ function OnboardingGuideDetailView({
262
262
  titleWrap: true,
263
263
  backButton: { label: backLabel, onClick: () => router.push(resolvedBackHref) },
264
264
  children: [
265
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.EntityTagBadges, { tags: guide.onboarding_guide_tags }),
265
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.EntityTagBadges, { tags: guide.onboarding_guide_tags }),
266
266
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
267
267
  _chunkYXKB5WREcjs.EntityAuthorCard,
268
268
  {
@@ -1,7 +1,7 @@
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 _chunkS2CA5WE4cjs = require('./chunk-S2CA5WE4.cjs');
4
+ var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
5
5
 
6
6
 
7
7
  var _chunkBV5WZVOPcjs = require('./chunk-BV5WZVOP.cjs');
@@ -332,7 +332,7 @@ function useScrollSpy(sections, options = {}) {
332
332
  // src/components/navigation/multi-level-navigation.tsx
333
333
  var _lucidereact = require('lucide-react');
334
334
 
335
- var DEFAULT_FOLDER_INDEX_FILE2 = _chunkS2CA5WE4cjs.DEFAULT_FOLDER_INDEX_FILE;
335
+ var DEFAULT_FOLDER_INDEX_FILE2 = _chunkCWRVTQUOcjs.DEFAULT_FOLDER_INDEX_FILE;
336
336
  function isNodeVisuallySelected(node, selectedPath, folderIndexFile = DEFAULT_FOLDER_INDEX_FILE2) {
337
337
  const FOLDER_INDEX_FILE = folderIndexFile.toLowerCase();
338
338
  if (selectedPath === node.path) {
@@ -5,7 +5,7 @@ var _chunkVA7OMDZOcjs = require('./chunk-VA7OMDZO.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkS2CA5WE4cjs = require('./chunk-S2CA5WE4.cjs');
8
+ var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
9
9
 
10
10
 
11
11
 
@@ -110,14 +110,14 @@ function FaqAccordion({ items, defaultOpenIds = [] }) {
110
110
 
111
111
  var PICK_ROOT_MARGIN = "600px";
112
112
  function faqAskCardShown(assistant) {
113
- return _chunkS2CA5WE4cjs.assistantAvailable.call(void 0, assistant) && !!assistant.name;
113
+ return _chunkCWRVTQUOcjs.assistantAvailable.call(void 0, assistant) && !!assistant.name;
114
114
  }
115
115
  function FaqAskCard({ topic, exclude, count, title, description, onOpen }) {
116
116
  const { ref, inView } = _chunkSA7LDEVJcjs.useInView.call(void 0, { rootMargin: PICK_ROOT_MARGIN });
117
117
  const [reached, setReached] = _react.useState.call(void 0, false);
118
118
  if (inView && !reached) setReached(true);
119
119
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
120
- _chunkS2CA5WE4cjs.AssistantAskPrompts,
120
+ _chunkCWRVTQUOcjs.AssistantAskPrompts,
121
121
  {
122
122
  variant: "card",
123
123
  topic,
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- var _chunkSB4VWA5Vcjs = require('./chunk-SB4VWA5V.cjs');
5
+ var _chunkVC4IV3AYcjs = require('./chunk-VC4IV3AY.cjs');
6
6
 
7
7
 
8
8
 
@@ -17,7 +17,7 @@ var _chunkDSVNFRY5cjs = require('./chunk-DSVNFRY5.cjs');
17
17
  var _chunkVA7OMDZOcjs = require('./chunk-VA7OMDZO.cjs');
18
18
 
19
19
 
20
- var _chunkS2CA5WE4cjs = require('./chunk-S2CA5WE4.cjs');
20
+ var _chunkCWRVTQUOcjs = require('./chunk-CWRVTQUO.cjs');
21
21
 
22
22
 
23
23
 
@@ -203,13 +203,13 @@ function ContactForm({
203
203
  );
204
204
  }),
205
205
  className: "flex flex-grow flex-col space-y-4 content-md:space-y-6",
206
- ..._chunkS2CA5WE4cjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
206
+ ..._chunkCWRVTQUOcjs.HUBSPOT_DO_NOT_COLLECT_FORM_PROPS,
207
207
  children: [
208
208
  !showName && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("name") }),
209
209
  !showEmail && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("email") }),
210
210
  !showHelpCategory && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("helpCategory") }),
211
211
  !showMessage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "input", { type: "hidden", ...register("message") }),
212
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSB4VWA5Vcjs.HoneypotField, { ...honeypotInputProps }),
212
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkVC4IV3AYcjs.HoneypotField, { ...honeypotInputProps }),
213
213
  extraTopField,
214
214
  showNameEmailRow && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "grid grid-cols-1 gap-4 content-md:grid-cols-2 content-md:gap-6", children: [
215
215
  showName && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col", children: [
@@ -334,7 +334,7 @@ function ContactForm({
334
334
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHTRILBJDcjs.RequiredMark, {})
335
335
  ] }),
336
336
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
337
- _chunkSB4VWA5Vcjs.Textarea,
337
+ _chunkVC4IV3AYcjs.Textarea,
338
338
  {
339
339
  id: "message",
340
340
  ...register("message"),
@@ -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 _chunkUW3YXDC4cjs = require('./chunk-UW3YXDC4.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 _chunkVC4IV3AYcjs = require('./chunk-VC4IV3AY.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, _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
- _chunkTF7J6VXGcjs.ListEmptyState,
190
+ _chunkUW3YXDC4cjs.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 = _chunkVC4IV3AYcjs.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, _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,
@@ -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, _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() }),
@@ -470,7 +470,7 @@ function ReleaseDetailPage({
470
470
  ] })
471
471
  ] }) }) }),
472
472
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
473
- _chunkSB4VWA5Vcjs.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
- _chunkSB4VWA5Vcjs.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
- _chunkSB4VWA5Vcjs.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
- _chunkSB4VWA5Vcjs.ReleaseChangelogSection,
504
+ _chunkVC4IV3AYcjs.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, _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: [
@@ -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
+ _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
- _chunkSB4VWA5Vcjs.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, _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, _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, _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, _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 = _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, _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 });
@@ -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, _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 = _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, _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
- _chunkTF7J6VXGcjs.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 = _chunkSB4VWA5Vcjs.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 ? _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, _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;