@flamingo-stack/openframe-frontend-core 0.0.756 → 0.0.758

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 (96) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-7KPU7RGS.cjs → chunk-2AEGJHW2.cjs} +83 -82
  3. package/dist/{chunk-QKFJ6ORK.cjs → chunk-3C4U4UW6.cjs} +1 -1
  4. package/dist/{chunk-57JA37HP.cjs → chunk-5THYJU3G.cjs} +123 -77
  5. package/dist/{chunk-4YL4Y3BV.cjs → chunk-ECHJO4NI.cjs} +48 -24
  6. package/dist/{chunk-TAEEGNFL.cjs → chunk-GU3M4YF3.cjs} +75 -68
  7. package/dist/{chunk-MDXZMTCK.cjs → chunk-IQFXJSAH.cjs} +22 -22
  8. package/dist/{chunk-KNNJ4WLF.cjs → chunk-JEIAB7JQ.cjs} +2 -2
  9. package/dist/{chunk-MBQTLZAG.cjs → chunk-L2RNZOCI.cjs} +11 -11
  10. package/dist/{chunk-VOXDBCBV.cjs → chunk-N2US7DLB.cjs} +47 -36
  11. package/dist/{chunk-KFUC2XF7.cjs → chunk-RPADJ2E6.cjs} +3 -3
  12. package/dist/{chunk-PUK27ZB6.cjs → chunk-RUMRBL5X.cjs} +13 -13
  13. package/dist/{chunk-CYDWQYIQ.cjs → chunk-SEPHTWFL.cjs} +5 -5
  14. package/dist/{chunk-W5MEHJRQ.cjs → chunk-U2UVB4IF.cjs} +2 -2
  15. package/dist/{chunk-BTIYXBA2.cjs → chunk-WSRMYHIV.cjs} +2 -2
  16. package/dist/{chunk-KSU3CXKY.cjs → chunk-YBOA5GZV.cjs} +3 -3
  17. package/dist/{chunk-MR5KMPSE.cjs → chunk-YLVTECAD.cjs} +4 -4
  18. package/dist/{cloud-tenants-NOZGXQZY.cjs → cloud-tenants-WJCL4P3Y.cjs} +3 -3
  19. package/dist/components/case-studies/index.cjs +11 -11
  20. package/dist/components/chat/embeddable-chat.js +8 -6
  21. package/dist/components/chat/index.cjs +2 -2
  22. package/dist/components/contact/index.cjs +4 -4
  23. package/dist/components/docs/doc-viewer.d.ts +4 -0
  24. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  25. package/dist/components/docs/doc-viewer.js +3 -0
  26. package/dist/components/docs/index.cjs +7 -7
  27. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  28. package/dist/components/docs/use-document-tree.js +9 -1
  29. package/dist/components/embeds/index.cjs +4 -4
  30. package/dist/components/faq/index.cjs +5 -5
  31. package/dist/components/features/index.cjs +3 -3
  32. package/dist/components/help-center-pages/index.cjs +57 -56
  33. package/dist/components/help-center-pages/trust-center-page.d.ts +7 -1
  34. package/dist/components/help-center-pages/trust-center-page.d.ts.map +1 -1
  35. package/dist/components/help-center-pages/trust-center-page.js +4 -3
  36. package/dist/components/index.cjs +34 -32
  37. package/dist/components/layout/page-data-sync.d.ts +18 -0
  38. package/dist/components/layout/page-data-sync.d.ts.map +1 -0
  39. package/dist/components/layout/page-data-sync.js +33 -0
  40. package/dist/components/meeting-scheduler/index.cjs +19 -19
  41. package/dist/components/navigation/index.cjs +6 -6
  42. package/dist/components/onboarding-guides/index.cjs +5 -5
  43. package/dist/components/product-demo/index.cjs +7 -7
  44. package/dist/components/shared/delivery/delivery-lists.d.ts.map +1 -1
  45. package/dist/components/shared/delivery/delivery-lists.js +6 -0
  46. package/dist/components/shared/dev-section/dev-section-view.d.ts +3 -16
  47. package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
  48. package/dist/components/shared/dev-section/dev-section-view.js +6 -13
  49. package/dist/components/shared/legal-document/legal-document-page.d.ts +1 -3
  50. package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
  51. package/dist/components/shared/legal-document/legal-document-page.js +3 -9
  52. package/dist/components/shared/roadmap/roadmap-view.d.ts.map +1 -1
  53. package/dist/components/shared/roadmap/roadmap-view.js +29 -17
  54. package/dist/components/tickets/hooks/use-tickets-list.d.ts +4 -0
  55. package/dist/components/tickets/hooks/use-tickets-list.d.ts.map +1 -1
  56. package/dist/components/tickets/hooks/use-tickets-list.js +1 -0
  57. package/dist/components/tickets/index.cjs +8 -8
  58. package/dist/components/tickets/ticket-center.d.ts.map +1 -1
  59. package/dist/components/tickets/ticket-center.js +5 -6
  60. package/dist/components/ui/data-attribution.d.ts +13 -0
  61. package/dist/components/ui/data-attribution.d.ts.map +1 -1
  62. package/dist/components/ui/data-attribution.js +30 -1
  63. package/dist/components/ui/index.cjs +5 -3
  64. package/dist/{devices-M4KBTOTC.cjs → devices-PCMSALOA.cjs} +4 -4
  65. package/dist/{embeddable-chat-KGJVVG2V.cjs → embeddable-chat-CHHWPGAY.cjs} +8 -6
  66. package/dist/index.cjs +13 -7
  67. package/dist/{knowledge-VVF6CJEG.cjs → knowledge-FVCXNAMW.cjs} +3 -3
  68. package/dist/{logs-7E6HBJ55.cjs → logs-IINFWMUF.cjs} +11 -11
  69. package/dist/{policies-UMZLJTBD.cjs → policies-P3ZT774G.cjs} +7 -7
  70. package/dist/{scripts-XVNAEYCH.cjs → scripts-KO4V2XO5.cjs} +8 -8
  71. package/dist/{software-update-U43ZFHMC.cjs → software-update-PSJUU363.cjs} +6 -6
  72. package/dist/types/data-sync.d.ts +22 -0
  73. package/dist/types/data-sync.d.ts.map +1 -0
  74. package/dist/types/data-sync.js +12 -0
  75. package/dist/types/doc-source.d.ts +4 -0
  76. package/dist/types/doc-source.d.ts.map +1 -1
  77. package/dist/types/index.cjs +12 -0
  78. package/dist/types/index.d.ts +1 -0
  79. package/dist/types/index.d.ts.map +1 -1
  80. package/dist/types/index.js +1 -0
  81. package/package.json +1 -1
  82. package/src/components/chat/embeddable-chat.tsx +10 -6
  83. package/src/components/docs/doc-viewer.tsx +9 -0
  84. package/src/components/docs/use-document-tree.ts +10 -0
  85. package/src/components/help-center-pages/trust-center-page.tsx +10 -3
  86. package/src/components/layout/page-data-sync.tsx +60 -0
  87. package/src/components/shared/delivery/delivery-lists.tsx +12 -2
  88. package/src/components/shared/dev-section/dev-section-view.tsx +37 -56
  89. package/src/components/shared/legal-document/legal-document-page.tsx +5 -13
  90. package/src/components/shared/roadmap/roadmap-view.tsx +37 -20
  91. package/src/components/tickets/hooks/use-tickets-list.ts +7 -0
  92. package/src/components/tickets/ticket-center.tsx +7 -3
  93. package/src/components/ui/data-attribution.tsx +44 -0
  94. package/src/types/data-sync.ts +26 -0
  95. package/src/types/doc-source.ts +4 -0
  96. package/src/types/index.ts +1 -0
@@ -1,11 +1,11 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }"use client";
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
4
  var _chunk5E6JHOGXcjs = require('./chunk-5E6JHOGX.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkKFUC2XF7cjs = require('./chunk-KFUC2XF7.cjs');
8
+ var _chunkRPADJ2E6cjs = require('./chunk-RPADJ2E6.cjs');
9
9
 
10
10
 
11
11
 
@@ -14,13 +14,14 @@ var _chunkHEVW75L3cjs = require('./chunk-HEVW75L3.cjs');
14
14
 
15
15
 
16
16
 
17
- var _chunk57JA37HPcjs = require('./chunk-57JA37HP.cjs');
17
+
18
+ var _chunk5THYJU3Gcjs = require('./chunk-5THYJU3G.cjs');
18
19
 
19
20
 
20
21
  var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
21
22
 
22
23
 
23
- var _chunkQKFJ6ORKcjs = require('./chunk-QKFJ6ORK.cjs');
24
+ var _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
24
25
 
25
26
 
26
27
 
@@ -29,6 +30,7 @@ var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
29
30
 
30
31
 
31
32
 
33
+
32
34
  var _chunk7Z4EQOIXcjs = require('./chunk-7Z4EQOIX.cjs');
33
35
 
34
36
 
@@ -80,8 +82,38 @@ function ListEmptyState({ isFiltered, filtered, onClearFilters, empty }) {
80
82
  // src/components/shared/dev-section/dev-section-view.tsx
81
83
  var _react = require('react');
82
84
 
83
- function DevSectionView({ sectionKey, hero, preControls, children, showHeading = true }) {
84
- const section = _chunkQKFJ6ORKcjs.OPENFRAME_DEV_SECTIONS[sectionKey];
85
+ // src/components/layout/page-data-sync.tsx
86
+
87
+
88
+ var PageDataSyncContext = _react.createContext.call(void 0, null);
89
+ var EMPTY = { sync: null, loading: false };
90
+ function PageDataSyncProvider({ children }) {
91
+ const [state, report] = _react.useState.call(void 0, EMPTY);
92
+ const value = _react.useMemo.call(void 0, () => ({ state, report }), [state]);
93
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageDataSyncContext.Provider, { value, children });
94
+ }
95
+ function PageDataSyncRow({ inline = false }) {
96
+ const context = _react.useContext.call(void 0, PageDataSyncContext);
97
+ if (!context) return null;
98
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.DataSyncLine, { sync: context.state.sync, loading: context.state.loading, inline });
99
+ }
100
+ function usePageDataSync(sync, loading) {
101
+ const context = _react.useContext.call(void 0, PageDataSyncContext);
102
+ const report = _optionalChain([context, 'optionalAccess', _2 => _2.report]);
103
+ const source = _nullishCoalesce(_optionalChain([sync, 'optionalAccess', _3 => _3.source]), () => ( null));
104
+ const syncedAt = _nullishCoalesce(_optionalChain([sync, 'optionalAccess', _4 => _4.syncedAt]), () => ( null));
105
+ _react.useEffect.call(void 0, () => {
106
+ if (!report) return;
107
+ report({ sync: source ? { source, syncedAt } : null, loading });
108
+ }, [report, source, syncedAt, loading]);
109
+ _react.useEffect.call(void 0, () => report ? () => report(EMPTY) : void 0, [report]);
110
+ return Boolean(context);
111
+ }
112
+
113
+ // src/components/shared/dev-section/dev-section-view.tsx
114
+
115
+ function DevSectionView({ sectionKey, preControls, children, showHeading = true }) {
116
+ const section = _chunk3C4U4UW6cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
85
117
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
86
118
  const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
87
119
  const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
@@ -118,21 +150,12 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
118
150
  else params.set(filter.paramKey, value);
119
151
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
120
152
  };
121
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
122
- showHeading && (hero ? /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
123
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h1", { className: "flex items-center gap-3 tracking-[-1.12px] text-ods-text-primary text-h1", children: [
124
- hero.icon,
125
- _nullishCoalesce(hero.title, () => ( section.hero.title))
126
- ] }),
127
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "max-w-3xl text-ods-text-secondary text-h4", children: hero.description })
128
- ] }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full items-center justify-between", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "h2", { className: "font-['Azeret_Mono'] text-[32px] font-semibold leading-[40px] tracking-[-0.64px] text-ods-text-primary content-md:text-[40px] content-md:leading-[48px] content-md:tracking-[-0.8px] content-lg:text-[48px] content-lg:leading-[56px] content-lg:tracking-[-0.96px]", children: [
129
- section.hero.title,
130
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: "text-ods-accent", children: ":" })
131
- ] }) })),
153
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageDataSyncProvider, { children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
154
+ showHeading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7Z4EQOIXcjs.SectionHeading, { title: section.hero.title, punctuation: ":", action: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageDataSyncRow, { inline: true }) }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PageDataSyncRow, {}),
132
155
  preControls,
133
156
  (search || filter) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
134
157
  search && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
135
- _chunk57JA37HPcjs.SearchInput,
158
+ _chunk5THYJU3Gcjs.SearchInput,
136
159
  {
137
160
  showDropdown: false,
138
161
  placeholder: search.placeholder,
@@ -142,7 +165,7 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
142
165
  }
143
166
  ),
144
167
  filter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
145
- _chunk57JA37HPcjs.StatusFilterComponent,
168
+ _chunk5THYJU3Gcjs.StatusFilterComponent,
146
169
  {
147
170
  selectedStatus: currentFilterValue,
148
171
  onStatusChange: handleFilterChange,
@@ -151,7 +174,7 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
151
174
  )
152
175
  ] }),
153
176
  children
154
- ] });
177
+ ] }) });
155
178
  }
156
179
 
157
180
  // src/components/shared/dev-section/dev-section-page.tsx
@@ -167,7 +190,7 @@ function DevSectionPage({
167
190
  shell = true
168
191
  }) {
169
192
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
170
- const section = _chunkQKFJ6ORKcjs.OPENFRAME_DEV_SECTIONS[sectionKey];
193
+ const section = _chunk3C4U4UW6cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
171
194
  const backCfg = backButton === false ? void 0 : {
172
195
  label: _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home")),
173
196
  onClick: () => router.push(_nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/")))
@@ -189,12 +212,12 @@ function DevSectionPage({
189
212
  backButton: backCfg,
190
213
  children: [
191
214
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DevSectionView, { sectionKey, showHeading: false, preControls, children }),
192
- faq && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKFUC2XF7cjs.FaqSection, { ..._chunkKFUC2XF7cjs.pageFaqProps.call(void 0, faq) })
215
+ faq && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRPADJ2E6cjs.FaqSection, { ..._chunkRPADJ2E6cjs.pageFaqProps.call(void 0, faq) })
193
216
  ]
194
217
  }
195
218
  )
196
219
  );
197
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
220
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
198
221
  }
199
222
 
200
223
  // src/components/shared/dev-section/dev-card-row.tsx
@@ -334,4 +357,5 @@ function DeliveryRow({ item, href, target, caption, id, className }) {
334
357
 
335
358
 
336
359
 
337
- exports.ListEmptyState = ListEmptyState; exports.DevSectionView = DevSectionView; exports.DevSectionPage = DevSectionPage; exports.DevCardRowContent = DevCardRowContent; exports.DevCardRowSkeleton = DevCardRowSkeleton; exports.DevCardRowSkeletonList = DevCardRowSkeletonList; exports.DeliveryRow = DeliveryRow;
360
+
361
+ exports.ListEmptyState = ListEmptyState; exports.usePageDataSync = usePageDataSync; exports.DevSectionView = DevSectionView; exports.DevSectionPage = DevSectionPage; exports.DevCardRowContent = DevCardRowContent; exports.DevCardRowSkeleton = DevCardRowSkeleton; exports.DevCardRowSkeletonList = DevCardRowSkeletonList; exports.DeliveryRow = DeliveryRow;
@@ -5,14 +5,15 @@ var _chunkWBOHLXFCcjs = require('./chunk-WBOHLXFC.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunk4YL4Y3BVcjs = require('./chunk-4YL4Y3BV.cjs');
8
+
9
+ var _chunkECHJO4NIcjs = require('./chunk-ECHJO4NI.cjs');
9
10
 
10
11
 
11
12
  var _chunk5E6JHOGXcjs = require('./chunk-5E6JHOGX.cjs');
12
13
 
13
14
 
14
15
 
15
- var _chunkKFUC2XF7cjs = require('./chunk-KFUC2XF7.cjs');
16
+ var _chunkRPADJ2E6cjs = require('./chunk-RPADJ2E6.cjs');
16
17
 
17
18
 
18
19
  var _chunkVUSXDMCEcjs = require('./chunk-VUSXDMCE.cjs');
@@ -27,7 +28,8 @@ var _chunkVUSXDMCEcjs = require('./chunk-VUSXDMCE.cjs');
27
28
 
28
29
 
29
30
 
30
- var _chunk57JA37HPcjs = require('./chunk-57JA37HP.cjs');
31
+
32
+ var _chunk5THYJU3Gcjs = require('./chunk-5THYJU3G.cjs');
31
33
 
32
34
 
33
35
  var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
@@ -39,7 +41,7 @@ var _chunkVUWPLQBYcjs = require('./chunk-VUWPLQBY.cjs');
39
41
 
40
42
 
41
43
 
42
- var _chunkQKFJ6ORKcjs = require('./chunk-QKFJ6ORK.cjs');
44
+ var _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
43
45
 
44
46
 
45
47
 
@@ -79,9 +81,6 @@ var _chunkB27XV2TCcjs = require('./chunk-B27XV2TC.cjs');
79
81
  var _chunk7Z4EQOIXcjs = require('./chunk-7Z4EQOIX.cjs');
80
82
 
81
83
 
82
- var _chunkJHQNUWFMcjs = require('./chunk-JHQNUWFM.cjs');
83
-
84
-
85
84
 
86
85
  var _chunkBLH2SFOOcjs = require('./chunk-BLH2SFOO.cjs');
87
86
 
@@ -109,8 +108,8 @@ var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
109
108
  // src/components/shared/product-release/product-releases-view.tsx
110
109
  var _jsxruntime = require('react/jsx-runtime');
111
110
  var DEFAULT_ENDPOINT = "/api/releases";
112
- var DEFAULT_SEARCH_PARAM_KEY = _chunkQKFJ6ORKcjs.DEV_SECTION_PARAM_KEYS.search;
113
- var DEFAULT_STATUS_PARAM_KEY = _chunkQKFJ6ORKcjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
111
+ var DEFAULT_SEARCH_PARAM_KEY = _chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.search;
112
+ var DEFAULT_STATUS_PARAM_KEY = _chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.releaseStatus;
114
113
  var DEFAULT_PAGE_PARAM_KEY = "page";
115
114
  function ReleaseRow({
116
115
  release,
@@ -119,7 +118,7 @@ function ReleaseRow({
119
118
  }) {
120
119
  const runtime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
121
120
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
122
- const cta = _chunkQKFJ6ORKcjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
121
+ const cta = _chunk3C4U4UW6cjs.resolveContentHref.call(void 0, _optionalChain([runtime, 'optionalAccess', _2 => _2.composeContentUrl]), {
123
122
  type: "product_release",
124
123
  slug: release.slug,
125
124
  basePath,
@@ -191,10 +190,10 @@ function ProductReleasesView({
191
190
  router.replace(`${pathname}?${params.toString()}`, { scroll: false });
192
191
  };
193
192
  if (error) {
194
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
193
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "w-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.LoadError, { message: "Failed to load releases.", onRetry: reload }) });
195
194
  }
196
195
  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,
197
- _chunk4YL4Y3BVcjs.ListEmptyState,
196
+ _chunkECHJO4NIcjs.ListEmptyState,
198
197
  {
199
198
  isFiltered: hasActiveFilters,
200
199
  filtered: {
@@ -289,7 +288,7 @@ function MediaGalleryStrip({ items, className }) {
289
288
  var _lucidereact = require('lucide-react');
290
289
 
291
290
 
292
- var DefaultMarkdownRenderer = _chunk57JA37HPcjs.RichMarkdownRenderer;
291
+ var DefaultMarkdownRenderer = _chunk5THYJU3Gcjs.RichMarkdownRenderer;
293
292
  var DEFAULT_ENDPOINT2 = "/api/releases";
294
293
  function ReleaseDetailPage({
295
294
  authorHref,
@@ -308,7 +307,7 @@ function ReleaseDetailPage({
308
307
  }) {
309
308
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
310
309
  const captions = _chunkQTYSYEHKcjs.useCaptions.call(void 0, );
311
- const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
310
+ const renderShell = (node) => shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.PageShell, { children: node }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: node });
312
311
  const seed = initialData == null ? void 0 : initialData;
313
312
  const {
314
313
  data: release,
@@ -415,7 +414,7 @@ function ReleaseDetailPage({
415
414
  backButton: showBackButton ? { label: backLabel, onClick: () => router.push(backHref) } : void 0,
416
415
  children: [
417
416
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6 content-md:space-y-8", children: [
418
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.EntityTagBadges, { tags: release.product_release_tags }),
417
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.EntityTagBadges, { tags: release.product_release_tags }),
419
418
  /* @__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: [
420
419
  /* @__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: [
421
420
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-primary text-h4", children: releaseType.toLocaleUpperCase() }),
@@ -477,7 +476,7 @@ function ReleaseDetailPage({
477
476
  ] })
478
477
  ] }) }) }),
479
478
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
480
- _chunk57JA37HPcjs.ReleaseChangelogSection,
479
+ _chunk5THYJU3Gcjs.ReleaseChangelogSection,
481
480
  {
482
481
  title: "Breaking Changes",
483
482
  entries: breakingChanges || [],
@@ -488,7 +487,7 @@ function ReleaseDetailPage({
488
487
  }
489
488
  ),
490
489
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
491
- _chunk57JA37HPcjs.ReleaseChangelogSection,
490
+ _chunk5THYJU3Gcjs.ReleaseChangelogSection,
492
491
  {
493
492
  title: "Features Added",
494
493
  entries: featuresAdded || [],
@@ -498,7 +497,7 @@ function ReleaseDetailPage({
498
497
  }
499
498
  ),
500
499
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
501
- _chunk57JA37HPcjs.ReleaseChangelogSection,
500
+ _chunk5THYJU3Gcjs.ReleaseChangelogSection,
502
501
  {
503
502
  title: "Bugs Fixed",
504
503
  entries: bugFixed || [],
@@ -508,7 +507,7 @@ function ReleaseDetailPage({
508
507
  }
509
508
  ),
510
509
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
511
- _chunk57JA37HPcjs.ReleaseChangelogSection,
510
+ _chunk5THYJU3Gcjs.ReleaseChangelogSection,
512
511
  {
513
512
  title: "Improvements",
514
513
  entries: improvements || [],
@@ -534,7 +533,7 @@ function ReleaseDetailPage({
534
533
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "tracking-[-0.28px] text-ods-text-secondary text-h5", children: "Related Enhancements and Bug-fixes" }),
535
534
  (() => {
536
535
  const deliveryCount = deliveryData ? deliveryData.completed.length + deliveryData.inProgress.length : 0;
537
- return deliveryLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.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 }) }) });
536
+ return deliveryLoading ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DeliverySection, { data: deliveryData, isLoading: deliveryLoading }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.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 }) }) });
538
537
  })()
539
538
  ] }),
540
539
  (_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: [
@@ -782,7 +781,7 @@ function RoadmapGridSingle({
782
781
  _chunk7Z4EQOIXcjs.RoadmapCard,
783
782
  {
784
783
  item,
785
- id: _chunkQKFJ6ORKcjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
784
+ id: _chunk3C4U4UW6cjs.devSectionAnchorId.call(void 0, "roadmap", item.id),
786
785
  userVote: getVote(item.id),
787
786
  onVote: (voteType) => onVote(item.id, voteType),
788
787
  isVoting: votingTasks.has(item.id)
@@ -898,7 +897,7 @@ function RoadmapGrid({
898
897
  );
899
898
  }
900
899
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
901
- _chunk57JA37HPcjs.Accordion,
900
+ _chunk5THYJU3Gcjs.Accordion,
902
901
  {
903
902
  type: "multiple",
904
903
  value: expandedQuarters,
@@ -908,13 +907,13 @@ function RoadmapGrid({
908
907
  const itemCount = _optionalChain([itemsByQuarter, 'access', _18 => _18[quarter], 'optionalAccess', _19 => _19.length]) || 0;
909
908
  const isExpanded = expandedQuarters.includes(quarter);
910
909
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
911
- _chunk57JA37HPcjs.AccordionItem,
910
+ _chunk5THYJU3Gcjs.AccordionItem,
912
911
  {
913
912
  value: quarter,
914
913
  id: `quarter-${quarter.replace(/\s+/g, "-").toLowerCase()}`,
915
914
  className: "border-0",
916
915
  children: [
917
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.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, _chunk5THYJU3Gcjs.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: [
918
917
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
919
918
  "h3",
920
919
  {
@@ -944,7 +943,7 @@ function RoadmapGrid({
944
943
  }
945
944
  )
946
945
  ] }) }),
947
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.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, _chunk5THYJU3Gcjs.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,
948
947
  RoadmapGridSingle,
949
948
  {
950
949
  items: itemsByQuarter[quarter],
@@ -982,8 +981,9 @@ function RoadmapGridSkeleton({ region = true, count = 4, showLeftMargin = true }
982
981
 
983
982
 
984
983
  var DEFAULT_ENDPOINT3 = "/api/roadmap";
985
- var DEFAULT_SEARCH_PARAM_KEY2 = _chunkQKFJ6ORKcjs.DEV_SECTION_PARAM_KEYS.search;
986
- var DEFAULT_STATUS_PARAM_KEY2 = _chunkQKFJ6ORKcjs.DEV_SECTION_PARAM_KEYS.status;
984
+ var SYNCED_LIST_CLASS = "flex w-full flex-col gap-[var(--spacing-system-lf)]";
985
+ var DEFAULT_SEARCH_PARAM_KEY2 = _chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.search;
986
+ var DEFAULT_STATUS_PARAM_KEY2 = _chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.status;
987
987
  function RoadmapView({
988
988
  endpoint = DEFAULT_ENDPOINT3,
989
989
  initialItems,
@@ -1002,29 +1002,38 @@ function RoadmapView({
1002
1002
  const qs = listParams.toString();
1003
1003
  const url = qs ? `${endpoint}?${qs}` : endpoint;
1004
1004
  const initialData = _react.useMemo.call(void 0, () => initialItems ? { items: initialItems } : void 0, [initialItems]);
1005
- const { data, setData, isLoading, error, reload } = _chunkB27XV2TCcjs.useSelfFetch.call(void 0, url, { initialData });
1005
+ const { data, setData, isLoading, error, reload } = _chunkB27XV2TCcjs.useSelfFetch.call(void 0, url, {
1006
+ initialData
1007
+ });
1006
1008
  const items = _nullishCoalesce(_optionalChain([data, 'optionalAccess', _20 => _20.items]), () => ( []));
1007
1009
  _chunkVUWPLQBYcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkCSJO7ZGNcjs.STICKY_HEADER_OFFSET_PX });
1010
+ const syncInPage = _chunkECHJO4NIcjs.usePageDataSync.call(void 0, _optionalChain([data, 'optionalAccess', _21 => _21.sync]), isLoading && !data);
1008
1011
  if (error) {
1009
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1012
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.LoadError, { message: "Failed to load roadmap.", onRetry: reload });
1010
1013
  }
1011
1014
  if (isLoading && !data) {
1012
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { showLeftMargin });
1015
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: SYNCED_LIST_CLASS, children: [
1016
+ !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.DataSyncLine, { loading: true }),
1017
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, RoadmapGridSkeleton, { showLeftMargin })
1018
+ ] });
1013
1019
  }
1014
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1015
- RoadmapGrid,
1016
- {
1017
- items,
1018
- showLeftMargin,
1019
- buildRefreshUrl,
1020
- votingOptions,
1021
- groupByQuarter: true,
1022
- hasActiveFilters: search !== "" || status !== "all",
1023
- onItemUpdate: (updated) => setData(
1024
- (prev) => prev ? { ...prev, items: (_nullishCoalesce(prev.items, () => ( []))).map((it) => it.id === updated.id ? updated : it) } : prev
1025
- )
1026
- }
1027
- );
1020
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: SYNCED_LIST_CLASS, children: [
1021
+ !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.DataSyncLine, { sync: _optionalChain([data, 'optionalAccess', _22 => _22.sync]) }),
1022
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1023
+ RoadmapGrid,
1024
+ {
1025
+ items,
1026
+ showLeftMargin,
1027
+ buildRefreshUrl,
1028
+ votingOptions,
1029
+ groupByQuarter: true,
1030
+ hasActiveFilters: search !== "" || status !== "all",
1031
+ onItemUpdate: (updated) => setData(
1032
+ (prev) => prev ? { ...prev, items: (_nullishCoalesce(prev.items, () => ( []))).map((it) => it.id === updated.id ? updated : it) } : prev
1033
+ )
1034
+ }
1035
+ )
1036
+ ] });
1028
1037
  }
1029
1038
 
1030
1039
  // src/components/shared/delivery/delivery-table.tsx
@@ -1059,7 +1068,7 @@ function DeliveryTable({ items, isLoading = false }) {
1059
1068
  // → `#delivery-<external_id>`; `useScrollToHash` in
1060
1069
  // `delivery-lists.tsx` finds the row by id and scrolls. The
1061
1070
  // outer wrapper here ONLY exists for the row separators.
1062
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border last:border-b-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4YL4Y3BVcjs.DeliveryRow, { item, id: _chunkQKFJ6ORKcjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
1071
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border last:border-b-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkECHJO4NIcjs.DeliveryRow, { item, id: _chunk3C4U4UW6cjs.devSectionAnchorId.call(void 0, "delivery", item.id) }) }, item.id)
1063
1072
  )) }) });
1064
1073
  }
1065
1074
 
@@ -1068,8 +1077,8 @@ function DeliveryTable({ items, isLoading = false }) {
1068
1077
 
1069
1078
  var DEFAULT_COMPLETED_ENDPOINT = "/api/delivery/completed";
1070
1079
  var DEFAULT_IN_PROGRESS_ENDPOINT = "/api/delivery/in-progress";
1071
- var DEFAULT_SEARCH_PARAM_KEY3 = _chunkQKFJ6ORKcjs.DEV_SECTION_PARAM_KEYS.search;
1072
- var DEFAULT_TASK_TYPE_PARAM_KEY = _chunkQKFJ6ORKcjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1080
+ var DEFAULT_SEARCH_PARAM_KEY3 = _chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.search;
1081
+ var DEFAULT_TASK_TYPE_PARAM_KEY = _chunk3C4U4UW6cjs.DEV_SECTION_PARAM_KEYS.deliveryTaskType;
1073
1082
  function DeliveryLists({
1074
1083
  completedApiEndpoint = DEFAULT_COMPLETED_ENDPOINT,
1075
1084
  inProgressApiEndpoint = DEFAULT_IN_PROGRESS_ENDPOINT,
@@ -1082,6 +1091,7 @@ function DeliveryLists({
1082
1091
  const [data, setData] = _react.useState.call(void 0, null);
1083
1092
  const [isLoading, setIsLoading] = _react.useState.call(void 0, true);
1084
1093
  const [error, setError] = _react.useState.call(void 0, null);
1094
+ const [sync, setSync] = _react.useState.call(void 0, null);
1085
1095
  const searchQuery = searchParams.get(searchParamKey) || "";
1086
1096
  const taskTypeFilter = searchParams.get(taskTypeParamKey) || "all";
1087
1097
  _react.useEffect.call(void 0, () => {
@@ -1115,6 +1125,7 @@ function DeliveryLists({
1115
1125
  completed: _nullishCoalesce(completedResult.items, () => ( [])),
1116
1126
  inProgress: _nullishCoalesce(inProgressResult.items, () => ( []))
1117
1127
  });
1128
+ setSync(_nullishCoalesce(_nullishCoalesce(completedResult.sync, () => ( inProgressResult.sync)), () => ( null)));
1118
1129
  } catch (err) {
1119
1130
  if (cancelled) return;
1120
1131
  console.error("Error fetching delivery items:", err);
@@ -1128,19 +1139,21 @@ function DeliveryLists({
1128
1139
  cancelled = true;
1129
1140
  };
1130
1141
  }, [searchQuery, taskTypeFilter, completedApiEndpoint, inProgressApiEndpoint, searchParamKey, taskTypeParamKey]);
1131
- const filteredCompleted = _optionalChain([data, 'optionalAccess', _21 => _21.completed]) || [];
1132
- const filteredInProgress = _optionalChain([data, 'optionalAccess', _22 => _22.inProgress]) || [];
1142
+ const filteredCompleted = _optionalChain([data, 'optionalAccess', _23 => _23.completed]) || [];
1143
+ const filteredInProgress = _optionalChain([data, 'optionalAccess', _24 => _24.inProgress]) || [];
1133
1144
  _chunkVUWPLQBYcjs.useScrollToHash.call(void 0, data, { headerOffset: _chunkCSJO7ZGNcjs.STICKY_HEADER_OFFSET_PX });
1145
+ const syncInPage = _chunkECHJO4NIcjs.usePageDataSync.call(void 0, sync, isLoading && !data);
1134
1146
  const showCompleted = true;
1135
1147
  const showInProgress = true;
1136
1148
  const hasActiveFilters = searchQuery !== "" || taskTypeFilter !== "all";
1137
1149
  const hasResults = showCompleted && filteredCompleted.length > 0 || showInProgress && filteredInProgress.length > 0;
1138
1150
  if (error) {
1139
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1151
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.LoadError, { message: error, onRetry: () => window.location.reload() }) });
1140
1152
  }
1141
1153
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-[40px]", children: [
1154
+ !syncInPage && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.DataSyncLine, { sync, loading: isLoading && !data }),
1142
1155
  !isLoading && !hasResults && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1143
- _chunk4YL4Y3BVcjs.ListEmptyState,
1156
+ _chunkECHJO4NIcjs.ListEmptyState,
1144
1157
  {
1145
1158
  isFiltered: hasActiveFilters,
1146
1159
  filtered: {
@@ -1355,8 +1368,8 @@ function useLegalDocuments(options = {}) {
1355
1368
 
1356
1369
  function legalDocumentStampLabel(doc) {
1357
1370
  const parts = [
1358
- _optionalChain([doc, 'optionalAccess', _23 => _23.version]) ? `Version ${doc.version}` : null,
1359
- _optionalChain([doc, 'optionalAccess', _24 => _24.effectiveDate]) ? `Effective ${doc.effectiveDate}` : null
1371
+ _optionalChain([doc, 'optionalAccess', _25 => _25.version]) ? `Version ${doc.version}` : null,
1372
+ _optionalChain([doc, 'optionalAccess', _26 => _26.effectiveDate]) ? `Effective ${doc.effectiveDate}` : null
1360
1373
  ].filter((part) => part !== null);
1361
1374
  return parts.length > 0 ? parts.join(" \xB7 ") : null;
1362
1375
  }
@@ -1369,9 +1382,8 @@ function LegalDocumentPage({
1369
1382
  errorTitle: errorTitleProp,
1370
1383
  emptyStateMessage: emptyStateMessageProp,
1371
1384
  initialData = null,
1372
- initialLastUpdatedLabel = null,
1373
1385
  apiEndpoint,
1374
- MarkdownRenderer = _chunk57JA37HPcjs.RichMarkdownRenderer,
1386
+ MarkdownRenderer = _chunk5THYJU3Gcjs.RichMarkdownRenderer,
1375
1387
  documentsEndpoint,
1376
1388
  backButton,
1377
1389
  faq,
@@ -1380,24 +1392,19 @@ function LegalDocumentPage({
1380
1392
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
1381
1393
  const { data, isLoading, error } = useLegalDocs(docType, { initialData, apiEndpoint });
1382
1394
  const backCfg = backButton === false ? void 0 : {
1383
- label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _25 => _25.label]), () => ( "Back to home")),
1384
- onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _26 => _26.href]), () => ( "/")))
1395
+ label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _27 => _27.label]), () => ( "Back to home")),
1396
+ onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _28 => _28.href]), () => ( "/")))
1385
1397
  };
1386
1398
  const { documents } = useLegalDocuments({ apiEndpoint: documentsEndpoint, enabled: Boolean(documentsEndpoint) });
1387
1399
  const listed = documents.find((doc) => doc.docType === docType);
1388
- const title = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(titleProp, () => ( _optionalChain([data, 'optionalAccess', _27 => _27.title]))), () => ( _optionalChain([listed, 'optionalAccess', _28 => _28.title]))), () => ( "Legal document"));
1389
- const faqTopic = faq && "topic" in faq ? faq.topic : _optionalChain([listed, 'optionalAccess', _29 => _29.faqTopic]);
1400
+ const title = _nullishCoalesce(_nullishCoalesce(_nullishCoalesce(titleProp, () => ( _optionalChain([data, 'optionalAccess', _29 => _29.title]))), () => ( _optionalChain([listed, 'optionalAccess', _30 => _30.title]))), () => ( "Legal document"));
1401
+ const faqTopic = faq && "topic" in faq ? faq.topic : _optionalChain([listed, 'optionalAccess', _31 => _31.faqTopic]);
1390
1402
  const faqSlot = faq && faqTopic ? { ...faq, topic: faqTopic } : null;
1391
1403
  const errorTitle = _nullishCoalesce(errorTitleProp, () => ( `Unable to load ${title}`));
1392
1404
  const emptyStateMessage = _nullishCoalesce(emptyStateMessageProp, () => ( `${title} is not available at this time.`));
1393
- const fallbackLastUpdatedLabel = _optionalChain([data, 'optionalAccess', _30 => _30.lastSynced]) != null ? _chunkJHQNUWFMcjs.formatLegalDate.call(void 0, data.lastSynced) : null;
1394
- const effectiveLastUpdatedLabel = _nullishCoalesce(initialLastUpdatedLabel, () => ( fallbackLastUpdatedLabel));
1395
- const subtitle = _nullishCoalesce(legalDocumentStampLabel(data), () => ( (effectiveLastUpdatedLabel ? `Last Updated: ${effectiveLastUpdatedLabel}` : fallbackDescription)));
1405
+ const subtitle = _nullishCoalesce(legalDocumentStampLabel(data), () => ( fallbackDescription));
1396
1406
  const inner = /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunkAXBVN5SWcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: [
1397
- _optionalChain([data, 'optionalAccess', _31 => _31.sourceFile]) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "text-ods-text-secondary opacity-75 text-h6", children: [
1398
- "Source: ",
1399
- data.sourceFile
1400
- ] }),
1407
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.DataSyncLine, { sync: data ? { source: "github", syncedAt: data.lastSynced } : null, loading: isLoading && !data }),
1401
1408
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-1 flex-col items-start gap-6 lg:flex-row lg:gap-10", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: "space-y-2", children: isLoading ? (
1402
1409
  // Loading skeleton matching Knowledge Hub pattern
1403
1410
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-6", children: [
@@ -1432,9 +1439,9 @@ function LegalDocumentPage({
1432
1439
  "for more information."
1433
1440
  ] })
1434
1441
  ] }) }) }) }) }),
1435
- faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkKFUC2XF7cjs.FaqSection, { ..._chunkKFUC2XF7cjs.pageFaqProps.call(void 0, faqSlot) })
1442
+ faqSlot && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRPADJ2E6cjs.FaqSection, { ..._chunkRPADJ2E6cjs.pageFaqProps.call(void 0, faqSlot) })
1436
1443
  ] });
1437
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk57JA37HPcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1444
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk5THYJU3Gcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
1438
1445
  }
1439
1446
 
1440
1447