@flamingo-stack/openframe-frontend-core 0.0.757 → 0.0.759

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 (98) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-7RADSQJF.cjs → chunk-4IXA5CJT.cjs} +142 -96
  3. package/dist/{chunk-S5ITKW6G.cjs → chunk-6VDOHVYE.cjs} +83 -82
  4. package/dist/{chunk-RPADJ2E6.cjs → chunk-7ITYKDJN.cjs} +3 -3
  5. package/dist/{chunk-ORC3ZKHT.cjs → chunk-CDA2MY7U.cjs} +48 -24
  6. package/dist/{chunk-L2RNZOCI.cjs → chunk-DHFQECP3.cjs} +11 -11
  7. package/dist/{chunk-33RJU565.cjs → chunk-EFCX5SYN.cjs} +2 -2
  8. package/dist/{chunk-WSRMYHIV.cjs → chunk-F7WIKBRI.cjs} +2 -2
  9. package/dist/{chunk-JEIAB7JQ.cjs → chunk-G7RDJACG.cjs} +2 -2
  10. package/dist/{chunk-AZFSHHWT.cjs → chunk-I4W4DQ6C.cjs} +4 -4
  11. package/dist/{chunk-BLYP7ZT4.cjs → chunk-O75A3FBT.cjs} +47 -36
  12. package/dist/{chunk-NTGIQP7O.cjs → chunk-QU5K52OP.cjs} +8 -2
  13. package/dist/{chunk-VD4HVLXG.cjs → chunk-S23DIVIP.cjs} +25 -25
  14. package/dist/{chunk-UWXUGP3V.cjs → chunk-SIOSQMIB.cjs} +3 -3
  15. package/dist/{chunk-33PJH2TF.cjs → chunk-SYACKQYF.cjs} +13 -13
  16. package/dist/{chunk-HB3QFOHD.cjs → chunk-WBSYC6EY.cjs} +5 -5
  17. package/dist/{chunk-CT3UDNAV.cjs → chunk-WGFTIEHY.cjs} +75 -68
  18. package/dist/{chunk-3C4U4UW6.cjs → chunk-XXM74P3N.cjs} +1 -1
  19. package/dist/{cloud-tenants-PA5UU2KQ.cjs → cloud-tenants-YUMG3O36.cjs} +4 -4
  20. package/dist/components/case-studies/index.cjs +12 -12
  21. package/dist/components/chat/index.cjs +2 -2
  22. package/dist/components/contact/index.cjs +5 -5
  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 +8 -8
  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 +5 -5
  30. package/dist/components/faq/index.cjs +6 -6
  31. package/dist/components/features/index.cjs +4 -4
  32. package/dist/components/help-center-pages/index.cjs +58 -57
  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 +35 -33
  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 +20 -20
  41. package/dist/components/navigation/index.cjs +7 -7
  42. package/dist/components/onboarding-guides/index.cjs +6 -6
  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 +9 -9
  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/drawer.d.ts.map +1 -1
  64. package/dist/components/ui/drawer.js +5 -2
  65. package/dist/components/ui/index.cjs +6 -4
  66. package/dist/{devices-72YSJM4Z.cjs → devices-EFDFNWIV.cjs} +5 -5
  67. package/dist/{embeddable-chat-CHHWPGAY.cjs → embeddable-chat-LTXUQWEK.cjs} +4 -4
  68. package/dist/index.cjs +14 -8
  69. package/dist/{knowledge-76RIDA7P.cjs → knowledge-UT2XI45N.cjs} +4 -4
  70. package/dist/{logs-ODMJ3KOP.cjs → logs-ZTYEI35Y.cjs} +12 -12
  71. package/dist/{policies-5BZ5X2S4.cjs → policies-S3IF2U3D.cjs} +8 -8
  72. package/dist/{scripts-TWQPG46M.cjs → scripts-IZWNCX5A.cjs} +9 -9
  73. package/dist/{software-update-TSGISQV5.cjs → software-update-6T4GFJPA.cjs} +7 -7
  74. package/dist/types/data-sync.d.ts +22 -0
  75. package/dist/types/data-sync.d.ts.map +1 -0
  76. package/dist/types/data-sync.js +12 -0
  77. package/dist/types/doc-source.d.ts +4 -0
  78. package/dist/types/doc-source.d.ts.map +1 -1
  79. package/dist/types/index.cjs +12 -0
  80. package/dist/types/index.d.ts +1 -0
  81. package/dist/types/index.d.ts.map +1 -1
  82. package/dist/types/index.js +1 -0
  83. package/package.json +1 -1
  84. package/src/components/docs/doc-viewer.tsx +9 -0
  85. package/src/components/docs/use-document-tree.ts +10 -0
  86. package/src/components/help-center-pages/trust-center-page.tsx +10 -3
  87. package/src/components/layout/page-data-sync.tsx +60 -0
  88. package/src/components/shared/delivery/delivery-lists.tsx +12 -2
  89. package/src/components/shared/dev-section/dev-section-view.tsx +37 -56
  90. package/src/components/shared/legal-document/legal-document-page.tsx +5 -13
  91. package/src/components/shared/roadmap/roadmap-view.tsx +37 -20
  92. package/src/components/tickets/hooks/use-tickets-list.ts +7 -0
  93. package/src/components/tickets/ticket-center.tsx +7 -3
  94. package/src/components/ui/data-attribution.tsx +44 -0
  95. package/src/components/ui/drawer.tsx +12 -1
  96. package/src/types/data-sync.ts +26 -0
  97. package/src/types/doc-source.ts +4 -0
  98. 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 _chunkRPADJ2E6cjs = require('./chunk-RPADJ2E6.cjs');
8
+ var _chunk7ITYKDJNcjs = require('./chunk-7ITYKDJN.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 _chunk7RADSQJFcjs = require('./chunk-7RADSQJF.cjs');
17
+
18
+ var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
18
19
 
19
20
 
20
21
  var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
21
22
 
22
23
 
23
- var _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
24
+ var _chunkXXM74P3Ncjs = require('./chunk-XXM74P3N.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 = _chunk3C4U4UW6cjs.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, _chunk4IXA5CJTcjs.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 = _chunkXXM74P3Ncjs.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
- _chunk7RADSQJFcjs.SearchInput,
158
+ _chunk4IXA5CJTcjs.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
- _chunk7RADSQJFcjs.StatusFilterComponent,
168
+ _chunk4IXA5CJTcjs.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 = _chunk3C4U4UW6cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
193
+ const section = _chunkXXM74P3Ncjs.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, _chunkRPADJ2E6cjs.FaqSection, { ..._chunkRPADJ2E6cjs.pageFaqProps.call(void 0, faq) })
215
+ faq && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7ITYKDJNcjs.FaqSection, { ..._chunk7ITYKDJNcjs.pageFaqProps.call(void 0, faq) })
193
216
  ]
194
217
  }
195
218
  )
196
219
  );
197
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7RADSQJFcjs.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, _chunk4IXA5CJTcjs.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;
@@ -6,7 +6,7 @@ var _chunkVUWPLQBYcjs = require('./chunk-VUWPLQBY.cjs');
6
6
 
7
7
 
8
8
 
9
- var _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
9
+ var _chunkXXM74P3Ncjs = require('./chunk-XXM74P3N.cjs');
10
10
 
11
11
 
12
12
  var _chunkSXGDKNVEcjs = require('./chunk-SXGDKNVE.cjs');
@@ -166,31 +166,31 @@ CveLink.displayName = "CveLink";
166
166
  // src/components/platform/ShellTypeBadge.tsx
167
167
 
168
168
  var shellIconMap = {
169
- [_chunk3C4U4UW6cjs.ShellTypeValues.POWERSHELL]: {
169
+ [_chunkXXM74P3Ncjs.ShellTypeValues.POWERSHELL]: {
170
170
  icon: _chunkMCQY746Mcjs.PowershellLogoGreyIcon,
171
171
  props: { size: 16, className: "text-ods-text-secondary" }
172
172
  },
173
- [_chunk3C4U4UW6cjs.ShellTypeValues.CMD]: {
173
+ [_chunkXXM74P3Ncjs.ShellTypeValues.CMD]: {
174
174
  icon: _chunkUXUYT4WKcjs.CmdIcon,
175
175
  props: { size: 16, color: "var(--color-text-secondary)" }
176
176
  },
177
- [_chunk3C4U4UW6cjs.ShellTypeValues.BASH]: {
177
+ [_chunkXXM74P3Ncjs.ShellTypeValues.BASH]: {
178
178
  icon: _chunk5OG5ZTNMcjs.BashIcon,
179
179
  props: { size: 16, color: "var(--color-text-secondary)" }
180
180
  },
181
- [_chunk3C4U4UW6cjs.ShellTypeValues.PYTHON]: {
181
+ [_chunkXXM74P3Ncjs.ShellTypeValues.PYTHON]: {
182
182
  icon: _chunkBF77UKGDcjs.PythonLogoIcon,
183
183
  props: { size: 16, className: "text-ods-text-secondary" }
184
184
  },
185
- [_chunk3C4U4UW6cjs.ShellTypeValues.NUSHELL]: {
185
+ [_chunkXXM74P3Ncjs.ShellTypeValues.NUSHELL]: {
186
186
  icon: _chunkG37H4CBTcjs.NushellIcon,
187
187
  props: { size: 16, color: "var(--color-text-secondary)" }
188
188
  },
189
- [_chunk3C4U4UW6cjs.ShellTypeValues.DENO]: {
189
+ [_chunkXXM74P3Ncjs.ShellTypeValues.DENO]: {
190
190
  icon: _chunkHUL6SF5Acjs.DenoIcon,
191
191
  props: { size: 16, color: "var(--color-text-secondary)" }
192
192
  },
193
- [_chunk3C4U4UW6cjs.ShellTypeValues.SHELL]: {
193
+ [_chunkXXM74P3Ncjs.ShellTypeValues.SHELL]: {
194
194
  icon: _chunk6RMATQNNcjs.ShellIcon,
195
195
  props: { size: 16, color: "var(--color-text-secondary)" }
196
196
  }
@@ -201,7 +201,7 @@ var defaultIconConfig = {
201
201
  };
202
202
  var ShellTypeBadge = ({ shellType, className, iconClassName }) => {
203
203
  const normalizedType = _optionalChain([shellType, 'optionalAccess', _ => _.toUpperCase, 'call', _2 => _2()]);
204
- const label = _chunk3C4U4UW6cjs.getShellLabel.call(void 0, normalizedType);
204
+ const label = _chunkXXM74P3Ncjs.getShellLabel.call(void 0, normalizedType);
205
205
  const { icon: IconComponent, props: iconProps } = _nullishCoalesce(shellIconMap[normalizedType], () => ( defaultIconConfig));
206
206
  const defaultIconClassName = "className" in iconProps ? iconProps.className : void 0;
207
207
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-1", className), children: [
@@ -217,7 +217,7 @@ function formatSupportedPlatforms(platforms) {
217
217
  if (!platforms || platforms.length === 0) {
218
218
  return "All Platforms";
219
219
  }
220
- return platforms.map((platform) => _chunk3C4U4UW6cjs.getOSLabel.call(void 0, platform)).join(", ");
220
+ return platforms.map((platform) => _chunkXXM74P3Ncjs.getOSLabel.call(void 0, platform)).join(", ");
221
221
  }
222
222
  function InfoCell({ label, value, avatar, className }) {
223
223
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex min-w-0 items-center gap-2", className), children: [
@@ -237,7 +237,7 @@ var ScriptInfoSection = ({
237
237
  author,
238
238
  className
239
239
  }) => {
240
- const shellLabel = _chunk3C4U4UW6cjs.getShellLabel.call(void 0, shellType);
240
+ const shellLabel = _chunkXXM74P3Ncjs.getShellLabel.call(void 0, shellType);
241
241
  const platformsLabel = formatSupportedPlatforms(supportedPlatforms);
242
242
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "overflow-hidden rounded-[6px] border border-ods-border bg-ods-card", className), children: [
243
243
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border p-4", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-1", children: [
@@ -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 _chunk7RADSQJFcjs = require('./chunk-7RADSQJF.cjs');
4
+ var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
5
5
 
6
6
 
7
7
 
@@ -70,7 +70,7 @@ function DocSearchBar({
70
70
  renderResult
71
71
  }) {
72
72
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
73
- _chunk7RADSQJFcjs.SearchInput,
73
+ _chunk4IXA5CJTcjs.SearchInput,
74
74
  {
75
75
  placeholder,
76
76
  value: query,
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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 _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
4
+ var _chunkXXM74P3Ncjs = require('./chunk-XXM74P3N.cjs');
5
5
 
6
6
 
7
7
  var _chunkQTYSYEHKcjs = require('./chunk-QTYSYEHK.cjs');
@@ -160,7 +160,7 @@ function TicketLiveProvider({ children, enabled = true }) {
160
160
  _react2.default.useEffect(() => {
161
161
  if (!streamEnabled) return void 0;
162
162
  if (typeof window === "undefined") return void 0;
163
- subscriptionRef.current = _chunk3C4U4UW6cjs.createSseSubscription.call(void 0, {
163
+ subscriptionRef.current = _chunkXXM74P3Ncjs.createSseSubscription.call(void 0, {
164
164
  url: streamUrl,
165
165
  onEvent: (name, data) => handlersRef.current.onEvent(name, data),
166
166
  onStatusChange: (status) => handlersRef.current.onStatus(status),
@@ -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 _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
4
+ var _chunkXXM74P3Ncjs = require('./chunk-XXM74P3N.cjs');
5
5
 
6
6
 
7
7
  var _chunkQTYSYEHKcjs = require('./chunk-QTYSYEHK.cjs');
@@ -335,7 +335,7 @@ function useScrollSpy(sections, options = {}) {
335
335
  // src/components/navigation/multi-level-navigation.tsx
336
336
  var _lucidereact = require('lucide-react');
337
337
 
338
- var DEFAULT_FOLDER_INDEX_FILE2 = _chunk3C4U4UW6cjs.DEFAULT_FOLDER_INDEX_FILE;
338
+ var DEFAULT_FOLDER_INDEX_FILE2 = _chunkXXM74P3Ncjs.DEFAULT_FOLDER_INDEX_FILE;
339
339
  function isNodeVisuallySelected(node, selectedPath, folderIndexFile = DEFAULT_FOLDER_INDEX_FILE2) {
340
340
  const FOLDER_INDEX_FILE = folderIndexFile.toLowerCase();
341
341
  if (selectedPath === node.path) {
@@ -1,10 +1,10 @@
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 _chunkRPADJ2E6cjs = require('./chunk-RPADJ2E6.cjs');
4
+ var _chunk7ITYKDJNcjs = require('./chunk-7ITYKDJN.cjs');
5
5
 
6
6
 
7
- var _chunk7RADSQJFcjs = require('./chunk-7RADSQJF.cjs');
7
+ var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
8
8
 
9
9
 
10
10
  var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
@@ -35,7 +35,7 @@ function FaqDocumentPage({
35
35
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _2 => _2.href]), () => ( "/")))
36
36
  };
37
37
  const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAXBVN5SWcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
38
- _chunkRPADJ2E6cjs.FaqSection,
38
+ _chunk7ITYKDJNcjs.FaqSection,
39
39
  {
40
40
  initialFaqs,
41
41
  heading: null,
@@ -49,7 +49,7 @@ function FaqDocumentPage({
49
49
  ask
50
50
  }
51
51
  ) });
52
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7RADSQJFcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
52
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
53
53
  }
54
54
 
55
55
 
@@ -3,23 +3,25 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkUWXUGP3Vcjs = require('./chunk-UWXUGP3V.cjs');
6
+ var _chunkSIOSQMIBcjs = require('./chunk-SIOSQMIB.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- var _chunkJEIAB7JQcjs = require('./chunk-JEIAB7JQ.cjs');
12
+ var _chunkG7RDJACGcjs = require('./chunk-G7RDJACG.cjs');
13
13
 
14
14
 
15
15
 
16
- var _chunk33RJU565cjs = require('./chunk-33RJU565.cjs');
16
+ var _chunkEFCX5SYNcjs = require('./chunk-EFCX5SYN.cjs');
17
17
 
18
18
 
19
19
 
20
20
 
21
21
 
22
- var _chunk7RADSQJFcjs = require('./chunk-7RADSQJF.cjs');
22
+
23
+
24
+ var _chunk4IXA5CJTcjs = require('./chunk-4IXA5CJT.cjs');
23
25
 
24
26
 
25
27
  var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
@@ -28,7 +30,7 @@ var _chunkAXBVN5SWcjs = require('./chunk-AXBVN5SW.cjs');
28
30
 
29
31
 
30
32
 
31
- var _chunk3C4U4UW6cjs = require('./chunk-3C4U4UW6.cjs');
33
+ var _chunkXXM74P3Ncjs = require('./chunk-XXM74P3N.cjs');
32
34
 
33
35
 
34
36
 
@@ -339,13 +341,20 @@ function toDocContent(value, requestedPath) {
339
341
  fileName: readString(value, "fileName"),
340
342
  fileSize: typeof fileSize === "number" ? fileSize : void 0,
341
343
  publishedAt: readString(value, "publishedAt"),
342
- updatedAt: readString(value, "updatedAt")
344
+ updatedAt: readString(value, "updatedAt"),
345
+ sync: toDataSync(value.sync)
343
346
  };
344
347
  }
348
+ function toDataSync(value) {
349
+ if (!isRecord(value)) return void 0;
350
+ const source = readString(value, "source");
351
+ if (!_chunk4IXA5CJTcjs.isDataSyncSource.call(void 0, source)) return void 0;
352
+ return { source, syncedAt: _nullishCoalesce(readString(value, "syncedAt"), () => ( null)) };
353
+ }
345
354
  function useDocumentTree(config, initialPath) {
346
355
  const { structureEndpoint, contentEndpoint, baseRoute } = config;
347
- const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunk3C4U4UW6cjs.DEFAULT_FOLDER_INDEX_FILE));
348
- const cleanInitialPath = _chunk3C4U4UW6cjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
356
+ const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkXXM74P3Ncjs.DEFAULT_FOLDER_INDEX_FILE));
357
+ const cleanInitialPath = _chunkXXM74P3Ncjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
349
358
  const [structure, setStructure] = _react.useState.call(void 0, []);
350
359
  const [selectedPath, setSelectedPath] = _react.useState.call(void 0, cleanInitialPath);
351
360
  const [content, setContent] = _react.useState.call(void 0, null);
@@ -369,12 +378,12 @@ function useDocumentTree(config, initialPath) {
369
378
  } else if (pathname.startsWith(`${normalizedBaseRoute}/`)) {
370
379
  pathFromUrl = pathname.substring(`${normalizedBaseRoute}/`.length);
371
380
  }
372
- pathFromUrl = _chunk3C4U4UW6cjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
381
+ pathFromUrl = _chunkXXM74P3Ncjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
373
382
  if (pathFromUrl !== selectedPathRef.current) {
374
383
  setSelectedPath(pathFromUrl);
375
384
  if (pathFromUrl) {
376
385
  const parentPath = pathFromUrl.includes("/") ? pathFromUrl.substring(0, pathFromUrl.lastIndexOf("/")) : pathFromUrl;
377
- setExpandedNodes(new Set(_chunk3C4U4UW6cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
386
+ setExpandedNodes(new Set(_chunkXXM74P3Ncjs.getDocAncestorNodeIds.call(void 0, parentPath)));
378
387
  }
379
388
  setTimeout(() => {
380
389
  scrollToContent();
@@ -392,7 +401,7 @@ function useDocumentTree(config, initialPath) {
392
401
  setSelectedPath(cleanInitialPath);
393
402
  if (cleanInitialPath) {
394
403
  const parentPath = cleanInitialPath.includes("/") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
395
- setExpandedNodes(new Set(_chunk3C4U4UW6cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
404
+ setExpandedNodes(new Set(_chunkXXM74P3Ncjs.getDocAncestorNodeIds.call(void 0, parentPath)));
396
405
  }
397
406
  setExternalNavCount((n) => n + 1);
398
407
  }
@@ -417,7 +426,7 @@ function useDocumentTree(config, initialPath) {
417
426
  if (cleanInitialPath) {
418
427
  const pathForExpansion = cleanInitialPath.includes(".") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
419
428
  if (pathForExpansion) {
420
- setExpandedNodes(new Set(_chunk3C4U4UW6cjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
429
+ setExpandedNodes(new Set(_chunkXXM74P3Ncjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
421
430
  }
422
431
  } else if (nodes.length > 0) {
423
432
  const hasRootReadme = nodes.some((node) => node.type === "file" && node.path === folderIndexFile);
@@ -457,7 +466,7 @@ function useDocumentTree(config, initialPath) {
457
466
  setContent(null);
458
467
  return;
459
468
  }
460
- const probe = _chunk3C4U4UW6cjs.findDocNodeByPath.call(void 0, _chunk3C4U4UW6cjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
469
+ const probe = _chunkXXM74P3Ncjs.findDocNodeByPath.call(void 0, _chunkXXM74P3Ncjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
461
470
  const probeIsNoReadmeFolder = !!probe && probe.type === "folder" && !probe.hasReadme;
462
471
  const preStructureFolderLike = structure.length === 0 && !path.endsWith(".md");
463
472
  if (probeIsNoReadmeFolder || preStructureFolderLike) {
@@ -514,7 +523,7 @@ function useDocumentTree(config, initialPath) {
514
523
  if (selectedPath === "") {
515
524
  pathToFetch = folderIndexFile;
516
525
  } else {
517
- const node = _chunk3C4U4UW6cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
526
+ const node = _chunkXXM74P3Ncjs.findDocNodeByPath.call(void 0, selectedPath, structure);
518
527
  if (node && node.type === "folder" && !node.hasReadme) {
519
528
  const firstDocPath = findFirstDocPath(node);
520
529
  if (!firstDocPath) {
@@ -555,16 +564,16 @@ function useDocumentTree(config, initialPath) {
555
564
  if (node.type === "folder") {
556
565
  setExpandedNodes((prev) => {
557
566
  if (prev.has(node.id)) {
558
- const ancestorIds = _chunk3C4U4UW6cjs.getDocAncestorNodeIds.call(void 0, node.path);
567
+ const ancestorIds = _chunkXXM74P3Ncjs.getDocAncestorNodeIds.call(void 0, node.path);
559
568
  ancestorIds.pop();
560
569
  return new Set(ancestorIds);
561
570
  }
562
- return new Set(_chunk3C4U4UW6cjs.getDocAncestorNodeIds.call(void 0, node.path));
571
+ return new Set(_chunkXXM74P3Ncjs.getDocAncestorNodeIds.call(void 0, node.path));
563
572
  });
564
573
  } else {
565
574
  const lastSlash = node.path.lastIndexOf("/");
566
575
  if (lastSlash > 0) {
567
- setExpandedNodes(new Set(_chunk3C4U4UW6cjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
576
+ setExpandedNodes(new Set(_chunkXXM74P3Ncjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
568
577
  }
569
578
  }
570
579
  lastFetchedPath.current = null;
@@ -579,7 +588,7 @@ function useDocumentTree(config, initialPath) {
579
588
  const hashIndex = path.indexOf("#");
580
589
  const anchor = hashIndex !== -1 ? path.substring(hashIndex) : "";
581
590
  const cleanPath = path.replace(/\/$/, "").split("#")[0];
582
- const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunk3C4U4UW6cjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
591
+ const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkXXM74P3Ncjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
583
592
  if (anchor && _optionalChain([options, 'optionalAccess', _7 => _7.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
584
593
  _chunkCSJO7ZGNcjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunkCSJO7ZGNcjs.HUB_HEADER_OFFSET_PX });
585
594
  return;
@@ -643,15 +652,15 @@ function useDocumentTree(config, initialPath) {
643
652
  return docNavigation.register({
644
653
  baseRoute: normalizedBaseRoute,
645
654
  findNodeByPath: (path) => {
646
- const clean = _chunk3C4U4UW6cjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
647
- return _nullishCoalesce(_chunk3C4U4UW6cjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
655
+ const clean = _chunkXXM74P3Ncjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
656
+ return _nullishCoalesce(_chunkXXM74P3Ncjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
648
657
  },
649
658
  selectNode
650
659
  });
651
660
  }, [docNavigation, normalizedBaseRoute, structure, selectNode, folderIndexFile]);
652
661
  const isEmptyFolder = _react.useMemo.call(void 0, () => {
653
662
  if (!selectedPath || structure.length === 0) return false;
654
- const node = _chunk3C4U4UW6cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
663
+ const node = _chunkXXM74P3Ncjs.findDocNodeByPath.call(void 0, selectedPath, structure);
655
664
  return !!node && node.type === "folder" && !node.hasReadme && !findFirstDocPath(node);
656
665
  }, [selectedPath, structure]);
657
666
  return {
@@ -705,6 +714,7 @@ function DocViewerContent({
705
714
  baseRoute,
706
715
  emptyStateText,
707
716
  showAIChat = false,
717
+ synced = false,
708
718
  folderIndexFile,
709
719
  backButton
710
720
  }) {
@@ -731,14 +741,14 @@ function DocViewerContent({
731
741
  },
732
742
  docPath
733
743
  );
734
- const { activeSection, handleSectionClick } = _chunkJEIAB7JQcjs.useScrollSpy.call(void 0, _optionalChain([content, 'optionalAccess', _11 => _11.sections]));
744
+ const { activeSection, handleSectionClick } = _chunkG7RDJACGcjs.useScrollSpy.call(void 0, _optionalChain([content, 'optionalAccess', _11 => _11.sections]));
735
745
  const docNav = useDocNavigation();
736
746
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
737
747
  const backCfg = backButton === false ? null : {
738
748
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _12 => _12.label]), () => ( "Back to home")),
739
749
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _13 => _13.href]), () => ( "/")))
740
750
  };
741
- const docSearch = _chunk33RJU565cjs.useDocSearch.call(void 0, {
751
+ const docSearch = _chunkEFCX5SYNcjs.useDocSearch.call(void 0, {
742
752
  source: chatSource,
743
753
  baseRoute,
744
754
  searchEndpoint,
@@ -762,7 +772,7 @@ function DocViewerContent({
762
772
  onResolveLink: resolveLink
763
773
  });
764
774
  }, [content, renderContent, navigateToDoc, sourceId, resolveLink]);
765
- const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunk3C4U4UW6cjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _14 => _14.documentType]) : void 0;
775
+ const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkXXM74P3Ncjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _14 => _14.documentType]) : void 0;
766
776
  const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _15 => _15.documentType]), () => ( selectedNodeDocType));
767
777
  const isMarkdownContent = !activeDocType || activeDocType === "markdown";
768
778
  const showStickyNav = isMarkdownContent;
@@ -774,10 +784,11 @@ function DocViewerContent({
774
784
  const defaultEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : "No documents yet. Add content from the admin panel.";
775
785
  const resolvedEmptyText = emptyStateText || defaultEmptyText;
776
786
  const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkAXBVN5SWcjs.PageLayout, { title, subtitle, titleSize: "h1", titleWrap: true, backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
787
+ synced && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.DataSyncLine, { sync: _optionalChain([content, 'optionalAccess', _19 => _19.sync]), loading: isLoadingContent && !content }),
777
788
  showAIChat && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
778
- _chunk33RJU565cjs.DocSearchBar,
789
+ _chunkEFCX5SYNcjs.DocSearchBar,
779
790
  {
780
- placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _19 => _19.toLowerCase, 'call', _20 => _20()]) || "documents"}...`,
791
+ placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _20 => _20.toLowerCase, 'call', _21 => _21()]) || "documents"}...`,
781
792
  query: docSearch.query,
782
793
  onQueryChange: docSearch.setQuery,
783
794
  results: docSearch.results,
@@ -794,9 +805,9 @@ function DocViewerContent({
794
805
  ] })
795
806
  ] }) }),
796
807
  !error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col items-start gap-6 content-lg:flex-row content-lg:gap-10", children: [
797
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full content-lg:w-[320px] content-lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "content-lg:sticky content-lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7RADSQJFcjs.CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
808
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full content-lg:w-[320px] content-lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "content-lg:sticky content-lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
798
809
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentMobileDropdown, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
799
- _chunkJEIAB7JQcjs.MobileNavigationDropdown,
810
+ _chunkG7RDJACGcjs.MobileNavigationDropdown,
800
811
  {
801
812
  nodes: structure,
802
813
  selectedPath,
@@ -810,7 +821,7 @@ function DocViewerContent({
810
821
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentSidebar, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden content-lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
811
822
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: sidebarLabel }),
812
823
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
813
- _chunkJEIAB7JQcjs.MultiLevelNavigation,
824
+ _chunkG7RDJACGcjs.MultiLevelNavigation,
814
825
  {
815
826
  nodes: structure,
816
827
  selectedPath,
@@ -849,7 +860,7 @@ function DocViewerContent({
849
860
  showStickyNav && content && stickyNavSections.length > 0 && !isLoadingContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden content-lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "sticky top-24", children: [
850
861
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "mb-4 font-semibold text-ods-text-secondary text-h5", children: "ON THIS PAGE" }),
851
862
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
852
- _chunkJEIAB7JQcjs.StickySectionNav,
863
+ _chunkG7RDJACGcjs.StickySectionNav,
853
864
  {
854
865
  sections: stickyNavSections,
855
866
  activeSection,
@@ -864,7 +875,7 @@ function DocViewerContent({
864
875
  ) })
865
876
  ] })
866
877
  ] }) }) });
867
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7RADSQJFcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
878
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
868
879
  }
869
880
 
870
881
  // src/components/docs/skeletons.tsx
@@ -950,7 +961,7 @@ function EmbedSkeleton({ documentType, region = true } = {}) {
950
961
  ] }),
951
962
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex w-full items-center gap-2 content-sm:w-auto", children: Array.from({ length: buttonCount }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkH3RYUTNDcjs.UnifiedSkeleton, { className: "h-10 w-full flex-1 rounded content-sm:w-32 content-sm:flex-initial" }, i)) })
952
963
  ] }),
953
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7RADSQJFcjs.EmbedLoadingSkeleton, { region: false })
964
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.EmbedLoadingSkeleton, { region: false })
954
965
  ] });
955
966
  }
956
967
 
@@ -958,11 +969,11 @@ function EmbedSkeleton({ documentType, region = true } = {}) {
958
969
 
959
970
  var DEFAULT_TITLE = "Documents";
960
971
  var defaultFallbackRenderer = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "py-16 text-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: "Unsupported document type" }) });
961
- var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUWXUGP3Vcjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
962
- var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUWXUGP3Vcjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
963
- var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk7RADSQJFcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
972
+ var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSIOSQMIBcjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
973
+ var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkSIOSQMIBcjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
974
+ var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk4IXA5CJTcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
964
975
  var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
965
- _chunkUWXUGP3Vcjs.FileDownloadCard,
976
+ _chunkSIOSQMIBcjs.FileDownloadCard,
966
977
  {
967
978
  fileName: content.fileName,
968
979
  mimeType: content.mimeType,
@@ -17,6 +17,10 @@ var _chunkDGFDBPO7cjs = require('./chunk-DGFDBPO7.cjs');
17
17
  var _chunkV45KLJQPcjs = require('./chunk-V45KLJQP.cjs');
18
18
 
19
19
 
20
+
21
+ var _chunkRB6BSE3Ocjs = require('./chunk-RB6BSE3O.cjs');
22
+
23
+
20
24
  var _chunk3ATAYP36cjs = require('./chunk-3ATAYP36.cjs');
21
25
 
22
26
  // src/components/ui/drawer.tsx
@@ -351,6 +355,7 @@ var DrawerContent = _react.forwardRef.call(void 0,
351
355
  }, [mobileBreakpoint]);
352
356
  const available = useViewportExtent(resizable, isHorizontal);
353
357
  const panelRef = _react.useRef.call(void 0, null);
358
+ const [portalHost, setPortalHost] = _react.useState.call(void 0, null);
354
359
  const {
355
360
  size: resizedSize,
356
361
  setSize,
@@ -396,9 +401,10 @@ var DrawerContent = _react.forwardRef.call(void 0,
396
401
  ref: panelRef,
397
402
  className: _chunk3ATAYP36cjs.cn.call(void 0, drawerPanelVariants({ side, flush, size }), className, panelClassName),
398
403
  style: { ...sizeStyle, ...panelStyle },
399
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR34JD6NPcjs.ViewportBreakpoints, { children })
404
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRB6BSE3Ocjs.PortalContainerContext.Provider, { value: portalHost, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkRB6BSE3Ocjs.CollisionBoundaryContext.Provider, { value: null, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkR34JD6NPcjs.ViewportBreakpoints, { children }) }) })
400
405
  }
401
- )
406
+ ),
407
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { ref: setPortalHost, className: "contents" })
402
408
  ]
403
409
  }
404
410
  )