@flamingo-stack/openframe-frontend-core 0.0.847 → 0.0.849

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 (188) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{case-study-card-DJOHIHYU.cjs → case-study-card-X2HKPKT7.cjs} +5 -5
  3. package/dist/{chunk-CNMXP77I.cjs → chunk-36DUCHI7.cjs} +4 -4
  4. package/dist/{chunk-MPVOPSU6.cjs → chunk-36XWCVSM.cjs} +96 -96
  5. package/dist/{chunk-J2IXYCEH.cjs → chunk-3W4ASAXN.cjs} +15 -15
  6. package/dist/{chunk-6LDL3UZE.cjs → chunk-4YBS4HIO.cjs} +20 -20
  7. package/dist/{chunk-ABL5OBSF.cjs → chunk-533QK4R6.cjs} +296 -250
  8. package/dist/{chunk-QK2A334V.cjs → chunk-5CBI2ZYV.cjs} +12 -12
  9. package/dist/{chunk-D5DMWXF2.cjs → chunk-5PIR77V5.cjs} +4 -4
  10. package/dist/{chunk-HPXET3LH.cjs → chunk-6AJYGXXS.cjs} +27 -27
  11. package/dist/{chunk-4R4HAFXI.cjs → chunk-ALRYVZ3E.cjs} +6 -6
  12. package/dist/{chunk-FLW4WULE.cjs → chunk-BU2PSRAS.cjs} +17 -61
  13. package/dist/{chunk-HBDLJUI3.cjs → chunk-C3P7IUTU.cjs} +39 -14
  14. package/dist/{chunk-SSSI2RBV.cjs → chunk-FNQWL4W4.cjs} +14 -14
  15. package/dist/{chunk-TBOWFTEN.cjs → chunk-FRG724DU.cjs} +22 -22
  16. package/dist/{chunk-SIFRIUPW.cjs → chunk-FXLROQUT.cjs} +345 -356
  17. package/dist/{chunk-3V5JWG27.cjs → chunk-GG466XFQ.cjs} +2 -2
  18. package/dist/{chunk-XCVH5BCZ.cjs → chunk-GRCOEICK.cjs} +6 -6
  19. package/dist/{chunk-5GBLXY5F.cjs → chunk-HTYJUMFB.cjs} +7 -7
  20. package/dist/{chunk-URP6GYTD.cjs → chunk-IG6ROHPS.cjs} +56 -56
  21. package/dist/{chunk-DGQDGCQH.cjs → chunk-IHY7E4EX.cjs} +2 -2
  22. package/dist/{chunk-WCK5T3UD.cjs → chunk-IKOL6NJY.cjs} +101 -69
  23. package/dist/{chunk-RAJ5FYFL.cjs → chunk-IN3LA2FU.cjs} +14 -14
  24. package/dist/{chunk-ZTO7KNYV.cjs → chunk-KXBZCUDW.cjs} +35 -35
  25. package/dist/{chunk-57JYB3E2.cjs → chunk-MC3L525K.cjs} +3 -3
  26. package/dist/{chunk-BIOSHDXQ.cjs → chunk-MDLT6D46.cjs} +61 -61
  27. package/dist/{chunk-3TOWCFIK.cjs → chunk-PMUCEUFQ.cjs} +13 -1
  28. package/dist/{chunk-PV3NKXWS.cjs → chunk-PV2XQJ2R.cjs} +99 -178
  29. package/dist/{chunk-J2ZSGOUC.cjs → chunk-R5JPZ6TY.cjs} +27 -27
  30. package/dist/{chunk-744JXTDP.cjs → chunk-SA2NNWIJ.cjs} +23 -23
  31. package/dist/{chunk-DEEQSVLX.cjs → chunk-SHQY4GOE.cjs} +90 -90
  32. package/dist/{chunk-BHOVF4KP.cjs → chunk-SOSIXRQ3.cjs} +2 -2
  33. package/dist/{chunk-Y2OEC7UW.cjs → chunk-TEKN6TJ5.cjs} +40 -40
  34. package/dist/{chunk-PZNWIJRZ.cjs → chunk-TIVPOVIM.cjs} +2 -2
  35. package/dist/{chunk-BZZE4KIV.cjs → chunk-TX4NTH22.cjs} +155 -136
  36. package/dist/{chunk-NFNSPLGC.cjs → chunk-W7OFAROY.cjs} +14 -9
  37. package/dist/{chunk-N2A24FDF.cjs → chunk-YLETC7LP.cjs} +994 -953
  38. package/dist/{chunk-YC52LSPP.cjs → chunk-YYHQY3K6.cjs} +40 -40
  39. package/dist/{chunk-2FUTZKLB.cjs → chunk-Z5UCDEKZ.cjs} +6 -6
  40. package/dist/{chunk-SWF6TNZ3.cjs → chunk-ZGEWT3SF.cjs} +2 -2
  41. package/dist/{chunk-PQDCSZ3W.cjs → chunk-ZY34R37A.cjs} +85 -85
  42. package/dist/{chunk-5SZ4ILU3.cjs → chunk-ZZDFMUEU.cjs} +3 -3
  43. package/dist/{cloud-tenants-XEUUMABT.cjs → cloud-tenants-HKUUEUAY.cjs} +21 -21
  44. package/dist/components/case-studies/index.cjs +36 -36
  45. package/dist/components/chat/chat-composer.d.ts.map +1 -1
  46. package/dist/components/chat/chat-composer.js +4 -3
  47. package/dist/components/chat/chat-container.d.ts.map +1 -1
  48. package/dist/components/chat/chat-container.js +2 -2
  49. package/dist/components/chat/entity-cards/design-doc-card.d.ts.map +1 -1
  50. package/dist/components/chat/entity-cards/design-doc-card.js +5 -17
  51. package/dist/components/chat/entity-cards/dispatch.d.ts.map +1 -1
  52. package/dist/components/chat/entity-cards/dispatch.js +5 -7
  53. package/dist/components/chat/index.cjs +15 -15
  54. package/dist/components/contact/index.cjs +22 -22
  55. package/dist/components/docs/doc-viewer.d.ts +7 -7
  56. package/dist/components/docs/doc-viewer.d.ts.map +1 -1
  57. package/dist/components/docs/doc-viewer.js +29 -16
  58. package/dist/components/docs/docs-hub-page.d.ts +1 -1
  59. package/dist/components/docs/docs-hub-page.d.ts.map +1 -1
  60. package/dist/components/docs/docs-hub-page.js +4 -11
  61. package/dist/components/docs/index.cjs +25 -25
  62. package/dist/components/docs/use-document-tree.d.ts.map +1 -1
  63. package/dist/components/docs/use-document-tree.js +24 -24
  64. package/dist/components/embeds/claude-embed.d.ts +2 -2
  65. package/dist/components/embeds/claude-embed.d.ts.map +1 -1
  66. package/dist/components/embeds/claude-embed.js +3 -3
  67. package/dist/components/embeds/embed-iframe.d.ts +5 -3
  68. package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
  69. package/dist/components/embeds/embed-iframe.js +4 -3
  70. package/dist/components/embeds/embed-viewer-frame.d.ts +12 -9
  71. package/dist/components/embeds/embed-viewer-frame.d.ts.map +1 -1
  72. package/dist/components/embeds/embed-viewer-frame.js +21 -7
  73. package/dist/components/embeds/figma-embed.d.ts +4 -2
  74. package/dist/components/embeds/figma-embed.d.ts.map +1 -1
  75. package/dist/components/embeds/figma-embed.js +4 -3
  76. package/dist/components/embeds/file-download-card.d.ts +3 -1
  77. package/dist/components/embeds/file-download-card.d.ts.map +1 -1
  78. package/dist/components/embeds/file-download-card.js +18 -3
  79. package/dist/components/embeds/google-sheets-viewer.d.ts +3 -1
  80. package/dist/components/embeds/google-sheets-viewer.d.ts.map +1 -1
  81. package/dist/components/embeds/google-sheets-viewer.js +7 -4
  82. package/dist/components/embeds/index.cjs +22 -22
  83. package/dist/components/embeds/pdf-viewer.d.ts +3 -1
  84. package/dist/components/embeds/pdf-viewer.d.ts.map +1 -1
  85. package/dist/components/embeds/pdf-viewer.js +6 -2
  86. package/dist/components/faq/index.cjs +23 -23
  87. package/dist/components/features/index.cjs +21 -21
  88. package/dist/components/features/status-filter-component.d.ts +7 -1
  89. package/dist/components/features/status-filter-component.d.ts.map +1 -1
  90. package/dist/components/features/status-filter-component.js +9 -3
  91. package/dist/components/help-center-pages/index.cjs +140 -140
  92. package/dist/components/index.cjs +137 -135
  93. package/dist/components/layout/back-button.d.ts +7 -1
  94. package/dist/components/layout/back-button.d.ts.map +1 -1
  95. package/dist/components/layout/back-button.js +34 -2
  96. package/dist/components/loading/unified-skeleton.d.ts +6 -1
  97. package/dist/components/loading/unified-skeleton.d.ts.map +1 -1
  98. package/dist/components/loading/unified-skeleton.js +13 -1
  99. package/dist/components/meeting-scheduler/index.cjs +119 -119
  100. package/dist/components/navigation/index.cjs +24 -24
  101. package/dist/components/onboarding-guides/index.cjs +24 -24
  102. package/dist/components/product-demo/index.cjs +33 -33
  103. package/dist/components/related-content/index.cjs +11 -11
  104. package/dist/components/tickets/index.cjs +28 -28
  105. package/dist/components/ui/file-manager/file-manager-table.d.ts.map +1 -1
  106. package/dist/components/ui/file-manager/file-manager-table.js +59 -50
  107. package/dist/components/ui/file-manager/index.cjs +71 -62
  108. package/dist/components/ui/index.cjs +23 -21
  109. package/dist/components/ui/markdown/engine.d.ts +5 -4
  110. package/dist/components/ui/markdown/engine.d.ts.map +1 -1
  111. package/dist/components/ui/markdown/engine.js +15 -15
  112. package/dist/components/ui/markdown/rich/rich-markdown-renderer.d.ts.map +1 -1
  113. package/dist/components/ui/markdown/rich/rich-markdown-renderer.js +7 -3
  114. package/dist/components/ui/people-cell.d.ts +9 -2
  115. package/dist/components/ui/people-cell.d.ts.map +1 -1
  116. package/dist/components/ui/people-cell.js +39 -23
  117. package/dist/components/ui/progress-bar.d.ts +6 -0
  118. package/dist/components/ui/progress-bar.d.ts.map +1 -1
  119. package/dist/components/ui/progress-bar.js +2 -0
  120. package/dist/components/ui/tag.d.ts +8 -0
  121. package/dist/components/ui/tag.d.ts.map +1 -1
  122. package/dist/components/ui/tag.js +5 -0
  123. package/dist/{devices-7YDIHVVP.cjs → devices-P7M4Z7VP.cjs} +22 -22
  124. package/dist/embed-shims/index.cjs +3 -3
  125. package/dist/embed-shims/next-image.cjs +3 -3
  126. package/dist/{embeddable-chat-Z3S37SSM.cjs → embeddable-chat-322NDFP5.cjs} +94 -94
  127. package/dist/hooks/index.cjs +6 -6
  128. package/dist/index.cjs +32 -30
  129. package/dist/{knowledge-SQVPQSKM.cjs → knowledge-TC7JLOWI.cjs} +22 -22
  130. package/dist/{logs-M5DFGUBC.cjs → logs-GPOYCP4B.cjs} +28 -28
  131. package/dist/{policies-T3VQEJUD.cjs → policies-ZUHOUMDD.cjs} +25 -25
  132. package/dist/{remote-session-EE6477O3.cjs → remote-session-NT4NG7EF.cjs} +10 -10
  133. package/dist/{scripts-JFRFJKPH.cjs → scripts-FOEVDGTH.cjs} +28 -28
  134. package/dist/{software-update-E7W3AAIY.cjs → software-update-XGTMNFST.cjs} +25 -25
  135. package/dist/{tickets-board-44HO3LR4.cjs → tickets-board-7FLGQEHF.cjs} +10 -10
  136. package/dist/types/design-doc.d.ts +45 -8
  137. package/dist/types/design-doc.d.ts.map +1 -1
  138. package/dist/types/doc-source.d.ts +2 -2
  139. package/dist/types/doc-source.d.ts.map +1 -1
  140. package/dist/utils/design-doc-readiness.d.ts +17 -15
  141. package/dist/utils/design-doc-readiness.d.ts.map +1 -1
  142. package/dist/utils/design-doc-readiness.js +5 -11
  143. package/dist/utils/doc-tree-nav.d.ts +7 -0
  144. package/dist/utils/doc-tree-nav.d.ts.map +1 -1
  145. package/dist/utils/doc-tree-nav.js +19 -0
  146. package/dist/utils/index.cjs +30 -13
  147. package/dist/utils/list-url.d.ts.map +1 -1
  148. package/dist/utils/list-url.js +2 -1
  149. package/dist/utils/source-grouping.d.ts +2 -2
  150. package/dist/utils/source-grouping.d.ts.map +1 -1
  151. package/dist/utils/source-grouping.js +1 -1
  152. package/dist/utils/source-icons.d.ts.map +1 -1
  153. package/dist/utils/source-icons.js +3 -0
  154. package/package.json +1 -1
  155. package/src/components/chat/chat-composer.tsx +10 -3
  156. package/src/components/chat/chat-container.tsx +6 -4
  157. package/src/components/chat/entity-cards/design-doc-card.tsx +12 -17
  158. package/src/components/chat/entity-cards/dispatch.tsx +10 -10
  159. package/src/components/docs/doc-viewer.tsx +56 -35
  160. package/src/components/docs/docs-hub-page.tsx +13 -37
  161. package/src/components/docs/use-document-tree.ts +33 -23
  162. package/src/components/embeds/claude-embed.tsx +4 -4
  163. package/src/components/embeds/embed-iframe.tsx +8 -5
  164. package/src/components/embeds/embed-viewer-frame.tsx +35 -15
  165. package/src/components/embeds/figma-embed.tsx +9 -4
  166. package/src/components/embeds/file-download-card.tsx +28 -4
  167. package/src/components/embeds/google-sheets-viewer.tsx +9 -3
  168. package/src/components/embeds/pdf-viewer.tsx +9 -2
  169. package/src/components/features/status-filter-component.tsx +15 -0
  170. package/src/components/layout/back-button.tsx +54 -2
  171. package/src/components/loading/unified-skeleton.tsx +18 -2
  172. package/src/components/ui/file-manager/file-manager-table.tsx +8 -3
  173. package/src/components/ui/markdown/engine.tsx +21 -30
  174. package/src/components/ui/markdown/rich/rich-markdown-renderer.tsx +4 -0
  175. package/src/components/ui/people-cell.tsx +53 -17
  176. package/src/components/ui/progress-bar.tsx +8 -0
  177. package/src/components/ui/tag.tsx +14 -0
  178. package/src/types/design-doc.ts +59 -10
  179. package/src/types/doc-source.ts +2 -2
  180. package/src/utils/design-doc-readiness.ts +22 -23
  181. package/src/utils/doc-tree-nav.ts +27 -0
  182. package/src/utils/list-url.ts +2 -1
  183. package/src/utils/source-grouping.ts +2 -2
  184. package/src/utils/source-icons.ts +3 -0
  185. package/dist/components/docs/skeletons.d.ts +0 -25
  186. package/dist/components/docs/skeletons.d.ts.map +0 -1
  187. package/dist/components/docs/skeletons.js +0 -83
  188. package/src/components/docs/skeletons.tsx +0 -131
@@ -3,44 +3,39 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkHBDLJUI3cjs = require('./chunk-HBDLJUI3.cjs');
6
+ var _chunkC3P7IUTUcjs = require('./chunk-C3P7IUTU.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
11
 
12
- var _chunkTBOWFTENcjs = require('./chunk-TBOWFTEN.cjs');
12
+ var _chunkFRG724DUcjs = require('./chunk-FRG724DU.cjs');
13
13
 
14
14
 
15
15
 
16
- var _chunkQK2A334Vcjs = require('./chunk-QK2A334V.cjs');
16
+ var _chunk5CBI2ZYVcjs = require('./chunk-5CBI2ZYV.cjs');
17
17
 
18
18
 
19
19
 
20
20
 
21
21
 
22
+ var _chunkYLETC7LPcjs = require('./chunk-YLETC7LP.cjs');
22
23
 
23
- var _chunkN2A24FDFcjs = require('./chunk-N2A24FDF.cjs');
24
24
 
25
+ var _chunkIKOL6NJYcjs = require('./chunk-IKOL6NJY.cjs');
25
26
 
26
- var _chunkWCK5T3UDcjs = require('./chunk-WCK5T3UD.cjs');
27
27
 
28
28
 
29
29
 
30
30
 
31
31
 
32
- var _chunkBZZE4KIVcjs = require('./chunk-BZZE4KIV.cjs');
33
32
 
33
+ var _chunkTX4NTH22cjs = require('./chunk-TX4NTH22.cjs');
34
34
 
35
35
 
36
36
 
37
37
 
38
- var _chunkSIFRIUPWcjs = require('./chunk-SIFRIUPW.cjs');
39
-
40
-
41
-
42
-
43
- var _chunkXCVH5BCZcjs = require('./chunk-XCVH5BCZ.cjs');
38
+ var _chunkGRCOEICKcjs = require('./chunk-GRCOEICK.cjs');
44
39
 
45
40
 
46
41
  var _chunk7DNL734Scjs = require('./chunk-7DNL734S.cjs');
@@ -53,12 +48,6 @@ var _chunkFX35L4Y6cjs = require('./chunk-FX35L4Y6.cjs');
53
48
  var _chunkUJ7AXHRZcjs = require('./chunk-UJ7AXHRZ.cjs');
54
49
 
55
50
 
56
- var _chunk2XCORRJVcjs = require('./chunk-2XCORRJV.cjs');
57
-
58
-
59
-
60
- var _chunk3TOWCFIKcjs = require('./chunk-3TOWCFIK.cjs');
61
-
62
51
 
63
52
 
64
53
  var _chunk63A4GZMBcjs = require('./chunk-63A4GZMB.cjs');
@@ -221,7 +210,7 @@ function toResolveLinkResult(body) {
221
210
  }
222
211
  function useDocsResolveLink(sourceId, resolveLinkEndpoint) {
223
212
  const chatRuntime = _chunkUJ7AXHRZcjs.useChatRuntime.call(void 0, );
224
- const resolvedResolveLinkEndpoint = _nullishCoalesce(_nullishCoalesce(resolveLinkEndpoint, () => ( _optionalChain([chatRuntime, 'optionalAccess', _2 => _2.endpoints, 'access', _3 => _3.docsResolveLinkUrl]))), () => ( "/api/docs/resolve-link"));
213
+ const resolvedResolveLinkEndpoint = _nullishCoalesce(_nullishCoalesce(resolveLinkEndpoint, () => ( _optionalChain([chatRuntime, 'optionalAccess', _ => _.endpoints, 'access', _2 => _2.docsResolveLinkUrl]))), () => ( "/api/docs/resolve-link"));
225
214
  return _react.useCallback.call(void 0,
226
215
  async (href, currentPath) => {
227
216
  try {
@@ -251,26 +240,11 @@ function useDocsResolveLink(sourceId, resolveLinkEndpoint) {
251
240
  function scrollToContent() {
252
241
  const article = document.querySelector("article");
253
242
  if (article) {
254
- _chunkXCVH5BCZcjs.scrollElementIntoView.call(void 0, article, { headerOffset: _chunkXCVH5BCZcjs.HUB_HEADER_OFFSET_PX });
243
+ _chunkGRCOEICKcjs.scrollElementIntoView.call(void 0, article, { headerOffset: _chunkGRCOEICKcjs.HUB_HEADER_OFFSET_PX });
255
244
  } else {
256
- _chunkXCVH5BCZcjs.scrollElementIntoView.call(void 0, document.documentElement);
245
+ _chunkGRCOEICKcjs.scrollElementIntoView.call(void 0, document.documentElement);
257
246
  }
258
247
  }
259
- function findFirstDocPath(folder) {
260
- const children = _nullishCoalesce(folder.children, () => ( []));
261
- for (const child of children) {
262
- if (child.type === "file" && !child.path.toLowerCase().endsWith(".mmd")) {
263
- return child.path;
264
- }
265
- }
266
- for (const child of children) {
267
- if (child.type === "folder") {
268
- const nested = findFirstDocPath(child);
269
- if (nested) return nested;
270
- }
271
- }
272
- return null;
273
- }
274
248
  function isRecord(value) {
275
249
  return typeof value === "object" && value !== null;
276
250
  }
@@ -354,14 +328,18 @@ function toDocContent(value, requestedPath) {
354
328
  function toDataSync(value) {
355
329
  if (!isRecord(value)) return void 0;
356
330
  const source = readString(value, "source");
357
- if (!_chunkN2A24FDFcjs.isDataSyncSource.call(void 0, source)) return void 0;
331
+ if (!_chunkYLETC7LPcjs.isDataSyncSource.call(void 0, source)) return void 0;
358
332
  return { source, syncedAt: _nullishCoalesce(readString(value, "syncedAt"), () => ( null)) };
359
333
  }
360
334
  function useDocumentTree(config, initialPath) {
361
335
  const { structureEndpoint, contentEndpoint, baseRoute } = config;
362
- const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkBZZE4KIVcjs.DEFAULT_FOLDER_INDEX_FILE));
363
- const cleanInitialPath = _chunkBZZE4KIVcjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
336
+ const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkTX4NTH22cjs.DEFAULT_FOLDER_INDEX_FILE));
337
+ const cleanInitialPath = _chunkTX4NTH22cjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _3 => _3.replace, 'call', _4 => _4(/\/$/, "")]) || "", folderIndexFile);
364
338
  const [structure, setStructure] = _react.useState.call(void 0, []);
339
+ const structureRef = _react.useRef.call(void 0, structure);
340
+ _react.useEffect.call(void 0, () => {
341
+ structureRef.current = structure;
342
+ }, [structure]);
365
343
  const [selectedPath, setSelectedPath] = _react.useState.call(void 0, cleanInitialPath);
366
344
  const [content, setContent] = _react.useState.call(void 0, null);
367
345
  const [isLoadingStructure, setIsLoadingStructure] = _react.useState.call(void 0, true);
@@ -386,12 +364,12 @@ function useDocumentTree(config, initialPath) {
386
364
  } else if (pathname.startsWith(`${normalizedBaseRoute}/`)) {
387
365
  pathFromUrl = pathname.substring(`${normalizedBaseRoute}/`.length);
388
366
  }
389
- pathFromUrl = _chunkBZZE4KIVcjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
367
+ pathFromUrl = _chunkTX4NTH22cjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
390
368
  if (pathFromUrl !== selectedPathRef.current) {
391
369
  setSelectedPath(pathFromUrl);
392
370
  if (pathFromUrl) {
393
371
  const parentPath = pathFromUrl.includes("/") ? pathFromUrl.substring(0, pathFromUrl.lastIndexOf("/")) : pathFromUrl;
394
- setExpandedNodes(new Set(_chunkBZZE4KIVcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
372
+ setExpandedNodes(new Set(_chunkTX4NTH22cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
395
373
  }
396
374
  setTimeout(() => {
397
375
  scrollToContent();
@@ -409,7 +387,7 @@ function useDocumentTree(config, initialPath) {
409
387
  setSelectedPath(cleanInitialPath);
410
388
  if (cleanInitialPath) {
411
389
  const parentPath = cleanInitialPath.includes("/") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
412
- setExpandedNodes(new Set(_chunkBZZE4KIVcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
390
+ setExpandedNodes(new Set(_chunkTX4NTH22cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
413
391
  }
414
392
  setExternalNavCount((n) => n + 1);
415
393
  }
@@ -434,7 +412,7 @@ function useDocumentTree(config, initialPath) {
434
412
  if (cleanInitialPath) {
435
413
  const pathForExpansion = cleanInitialPath.includes(".") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
436
414
  if (pathForExpansion) {
437
- setExpandedNodes(new Set(_chunkBZZE4KIVcjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
415
+ setExpandedNodes(new Set(_chunkTX4NTH22cjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
438
416
  }
439
417
  } else if (nodes.length > 0) {
440
418
  const hasRootReadme = nodes.some((node) => node.type === "file" && node.path === folderIndexFile);
@@ -474,9 +452,10 @@ function useDocumentTree(config, initialPath) {
474
452
  setContent(null);
475
453
  return;
476
454
  }
477
- const probe = _chunkBZZE4KIVcjs.findDocNodeByPath.call(void 0, _chunkBZZE4KIVcjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
455
+ const latestStructure = structureRef.current;
456
+ const probe = _chunkTX4NTH22cjs.findDocNodeByPath.call(void 0, _chunkTX4NTH22cjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), latestStructure);
478
457
  const probeIsNoReadmeFolder = !!probe && probe.type === "folder" && !probe.hasReadme;
479
- const preStructureFolderLike = structure.length === 0 && !path.endsWith(".md");
458
+ const preStructureFolderLike = latestStructure.length === 0 && !path.endsWith(".md");
480
459
  if (probeIsNoReadmeFolder || preStructureFolderLike) {
481
460
  lastFetchedPath.current = null;
482
461
  setError(null);
@@ -531,11 +510,16 @@ function useDocumentTree(config, initialPath) {
531
510
  if (!structure || structure.length === 0) return;
532
511
  let pathToFetch = null;
533
512
  if (selectedPath === "") {
534
- pathToFetch = folderIndexFile;
513
+ const rootPath = _chunkTX4NTH22cjs.rootDocumentPath.call(void 0, structure, folderIndexFile);
514
+ if (!rootPath) {
515
+ lastFetchedPath.current = null;
516
+ return;
517
+ }
518
+ pathToFetch = rootPath;
535
519
  } else {
536
- const node = _chunkBZZE4KIVcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
520
+ const node = _chunkTX4NTH22cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
537
521
  if (node && node.type === "folder" && !node.hasReadme) {
538
- const firstDocPath = findFirstDocPath(node);
522
+ const firstDocPath = _chunkTX4NTH22cjs.findFirstDocPath.call(void 0, node);
539
523
  if (!firstDocPath) {
540
524
  lastFetchedPath.current = null;
541
525
  return;
@@ -574,16 +558,16 @@ function useDocumentTree(config, initialPath) {
574
558
  if (node.type === "folder") {
575
559
  setExpandedNodes((prev) => {
576
560
  if (prev.has(node.id)) {
577
- const ancestorIds = _chunkBZZE4KIVcjs.getDocAncestorNodeIds.call(void 0, node.path);
561
+ const ancestorIds = _chunkTX4NTH22cjs.getDocAncestorNodeIds.call(void 0, node.path);
578
562
  ancestorIds.pop();
579
563
  return new Set(ancestorIds);
580
564
  }
581
- return new Set(_chunkBZZE4KIVcjs.getDocAncestorNodeIds.call(void 0, node.path));
565
+ return new Set(_chunkTX4NTH22cjs.getDocAncestorNodeIds.call(void 0, node.path));
582
566
  });
583
567
  } else {
584
568
  const lastSlash = node.path.lastIndexOf("/");
585
569
  if (lastSlash > 0) {
586
- setExpandedNodes(new Set(_chunkBZZE4KIVcjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
570
+ setExpandedNodes(new Set(_chunkTX4NTH22cjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
587
571
  }
588
572
  }
589
573
  lastFetchedPath.current = null;
@@ -598,9 +582,9 @@ function useDocumentTree(config, initialPath) {
598
582
  const hashIndex = path.indexOf("#");
599
583
  const anchor = hashIndex !== -1 ? path.substring(hashIndex) : "";
600
584
  const cleanPath = path.replace(/\/$/, "").split("#")[0];
601
- const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkBZZE4KIVcjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
602
- if (anchor && _optionalChain([options, 'optionalAccess', _7 => _7.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
603
- _chunkXCVH5BCZcjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunkXCVH5BCZcjs.HUB_HEADER_OFFSET_PX });
585
+ const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _5 => _5.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkTX4NTH22cjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
586
+ if (anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
587
+ _chunkGRCOEICKcjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunkGRCOEICKcjs.HUB_HEADER_OFFSET_PX });
604
588
  return;
605
589
  }
606
590
  const scrollAfterNav = () => {
@@ -608,7 +592,7 @@ function useDocumentTree(config, initialPath) {
608
592
  setTimeout(() => {
609
593
  const el = document.getElementById(anchor.substring(1));
610
594
  if (el) {
611
- _chunkXCVH5BCZcjs.scrollElementIntoView.call(void 0, el, { headerOffset: _chunkXCVH5BCZcjs.HUB_HEADER_OFFSET_PX });
595
+ _chunkGRCOEICKcjs.scrollElementIntoView.call(void 0, el, { headerOffset: _chunkGRCOEICKcjs.HUB_HEADER_OFFSET_PX });
612
596
  } else {
613
597
  scrollToContent();
614
598
  }
@@ -619,7 +603,7 @@ function useDocumentTree(config, initialPath) {
619
603
  }, 150);
620
604
  }
621
605
  };
622
- if (_optionalChain([options, 'optionalAccess', _8 => _8.expandFolder])) {
606
+ if (_optionalChain([options, 'optionalAccess', _7 => _7.expandFolder])) {
623
607
  lastFetchedPath.current = null;
624
608
  setSelectedPath(cleanPath);
625
609
  window.history.pushState({}, "", `${normalizedBaseRoute}/${cleanPath}${anchor}`);
@@ -631,7 +615,7 @@ function useDocumentTree(config, initialPath) {
631
615
  nodeIdsToExpand.push(currentPath2.toLowerCase());
632
616
  }
633
617
  setExpandedNodes(new Set(nodeIdsToExpand));
634
- if (_optionalChain([options, 'optionalAccess', _9 => _9.fromInternalLink])) {
618
+ if (_optionalChain([options, 'optionalAccess', _8 => _8.fromInternalLink])) {
635
619
  scrollAfterNav();
636
620
  }
637
621
  setError(null);
@@ -641,7 +625,7 @@ function useDocumentTree(config, initialPath) {
641
625
  lastFetchedPath.current = null;
642
626
  setSelectedPath(pathForSelection);
643
627
  window.history.pushState({}, "", `${normalizedBaseRoute}/${urlPath}${anchor}`);
644
- if (_optionalChain([options, 'optionalAccess', _10 => _10.fromInternalLink])) {
628
+ if (_optionalChain([options, 'optionalAccess', _9 => _9.fromInternalLink])) {
645
629
  scrollAfterNav();
646
630
  }
647
631
  const pathParts = cleanPath.split("/");
@@ -662,25 +646,28 @@ function useDocumentTree(config, initialPath) {
662
646
  return docNavigation.register({
663
647
  baseRoute: normalizedBaseRoute,
664
648
  findNodeByPath: (path) => {
665
- const clean = _chunkBZZE4KIVcjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
666
- return _nullishCoalesce(_chunkBZZE4KIVcjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
649
+ const clean = _chunkTX4NTH22cjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
650
+ return _nullishCoalesce(_chunkTX4NTH22cjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
667
651
  },
668
652
  selectNode
669
653
  });
670
654
  }, [docNavigation, normalizedBaseRoute, structure, selectNode, folderIndexFile]);
671
655
  const isEmptyFolder = _react.useMemo.call(void 0, () => {
672
- if (!selectedPath || structure.length === 0) return false;
673
- const node = _chunkBZZE4KIVcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
674
- return !!node && node.type === "folder" && !node.hasReadme && !findFirstDocPath(node);
675
- }, [selectedPath, structure]);
656
+ if (structure.length === 0) return false;
657
+ if (!selectedPath) return !_chunkTX4NTH22cjs.rootDocumentPath.call(void 0, structure, folderIndexFile);
658
+ const node = _chunkTX4NTH22cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
659
+ return !!node && node.type === "folder" && !node.hasReadme && !_chunkTX4NTH22cjs.findFirstDocPath.call(void 0, node);
660
+ }, [selectedPath, structure, folderIndexFile]);
661
+ const isEmptySource = !isLoadingStructure && structure.length === 0;
662
+ const settled = isEmptyFolder || isEmptySource;
676
663
  return {
677
664
  structure,
678
665
  selectedPath,
679
666
  setSelectedPath,
680
- content: isEmptyFolder ? null : content,
667
+ content: settled ? null : content,
681
668
  isLoadingStructure,
682
- isLoadingContent: isEmptyFolder ? false : isLoadingContent,
683
- error: isEmptyFolder ? null : error,
669
+ isLoadingContent: settled ? false : isLoadingContent,
670
+ error: settled ? null : error,
684
671
  expandedNodes,
685
672
  toggleNode,
686
673
  selectNode,
@@ -706,11 +693,12 @@ function DocViewer(props) {
706
693
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, DocViewerContent, { ...props });
707
694
  }
708
695
  var ON_THIS_PAGE_LABEL = "ON THIS PAGE";
696
+ var NO_SECTION_CLICK = () => {
697
+ };
709
698
  var ON_THIS_PAGE_HEADING_CLASS = "mb-4 font-semibold text-ods-text-secondary text-h5";
710
699
  function DocViewerContent({
711
700
  sourceId,
712
701
  renderContent,
713
- renderSkeleton,
714
702
  chatSource,
715
703
  title,
716
704
  subtitle,
@@ -718,6 +706,7 @@ function DocViewerContent({
718
706
  className = "",
719
707
  shell = true,
720
708
  docPath,
709
+ initialDocumentType,
721
710
  sidebarLabel = "DOCUMENTATION",
722
711
  structureEndpoint,
723
712
  contentEndpoint,
@@ -753,14 +742,14 @@ function DocViewerContent({
753
742
  },
754
743
  docPath
755
744
  );
756
- const { activeSection, handleSectionClick } = _chunkTBOWFTENcjs.useScrollSpy.call(void 0, _optionalChain([content, 'optionalAccess', _11 => _11.sections]));
745
+ const { activeSection, handleSectionClick } = _chunkFRG724DUcjs.useScrollSpy.call(void 0, _optionalChain([content, 'optionalAccess', _10 => _10.sections]));
757
746
  const docNav = useDocNavigation();
758
747
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
759
748
  const backCfg = backButton === false ? null : {
760
- label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _12 => _12.label]), () => ( "Back to home")),
761
- onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _13 => _13.href]), () => ( "/")))
749
+ label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _11 => _11.label]), () => ( "Back to home")),
750
+ onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _12 => _12.href]), () => ( "/")))
762
751
  };
763
- const docSearch = _chunkQK2A334Vcjs.useDocSearch.call(void 0, {
752
+ const docSearch = _chunk5CBI2ZYVcjs.useDocSearch.call(void 0, {
764
753
  source: chatSource,
765
754
  baseRoute,
766
755
  searchEndpoint,
@@ -784,23 +773,28 @@ function DocViewerContent({
784
773
  onResolveLink: resolveLink
785
774
  });
786
775
  }, [content, renderContent, navigateToDoc, sourceId, resolveLink]);
787
- const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkBZZE4KIVcjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _14 => _14.documentType]) : void 0;
788
- const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _15 => _15.documentType]), () => ( selectedNodeDocType));
776
+ const selectedNodePath = structure.length > 0 && !selectedPath ? _chunkTX4NTH22cjs.rootDocumentPath.call(void 0, structure, folderIndexFile) : selectedPath;
777
+ const selectedNodeDocType = structure.length > 0 ? selectedNodePath ? _optionalChain([_chunkTX4NTH22cjs.findDocNodeByPath.call(void 0, selectedNodePath, structure), 'optionalAccess', _13 => _13.documentType]) : void 0 : initialDocumentType;
778
+ const isLoadingDocument = isLoadingContent || isLoadingStructure;
779
+ const loadingContent = isLoadingDocument ? renderContent(
780
+ { content: "", sections: [], path: _nullishCoalesce(selectedPath, () => ( "")), documentType: selectedNodeDocType },
781
+ { onInternalLinkClick: navigateToDoc, currentPath: _nullishCoalesce(selectedPath, () => ( "")), sourceId }
782
+ ) : null;
783
+ const activeDocType = isLoadingDocument ? selectedNodeDocType : _nullishCoalesce(_optionalChain([content, 'optionalAccess', _14 => _14.documentType]), () => ( selectedNodeDocType));
789
784
  const isMarkdownContent = !activeDocType || activeDocType === "markdown";
790
785
  const showStickyNav = isMarkdownContent;
791
- const stickyNavSections = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _16 => _16.sections, 'optionalAccess', _17 => _17.map, 'call', _18 => _18((s) => ({ id: s.id, label: s.title }))]), () => ( []));
786
+ const stickyNavSections = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _15 => _15.sections, 'optionalAccess', _16 => _16.map, 'call', _17 => _17((s) => ({ id: s.id, label: s.title }))]), () => ( []));
792
787
  const isColorValue = colorPalette.background.startsWith("#") || colorPalette.background.startsWith("rgb") || colorPalette.background.startsWith("var(");
793
788
  const bgStyle = isColorValue ? { backgroundColor: colorPalette.background } : {};
794
789
  const bgClass = !isColorValue ? colorPalette.background : "";
795
790
  const containerBgStyle = colorPalette.containerBackground !== "transparent" ? { backgroundColor: colorPalette.containerBackground } : {};
796
- const defaultEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : "No documents yet. Add content from the admin panel.";
797
- const resolvedEmptyText = emptyStateText || defaultEmptyText;
798
- const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkWCK5T3UDcjs.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: [
799
- synced && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN2A24FDFcjs.DataSyncLine, { sync: _optionalChain([content, 'optionalAccess', _19 => _19.sync]), loading: !content && (isLoadingContent || isLoadingStructure) }),
791
+ const resolvedEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : emptyStateText || "No documents yet.";
792
+ const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkIKOL6NJYcjs.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: [
793
+ synced && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYLETC7LPcjs.DataSyncLine, { sync: _optionalChain([content, 'optionalAccess', _18 => _18.sync]), loading: !content && (isLoadingContent || isLoadingStructure) }),
800
794
  showAIChat && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
801
- _chunkQK2A334Vcjs.DocSearchBar,
795
+ _chunk5CBI2ZYVcjs.DocSearchBar,
802
796
  {
803
- placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _20 => _20.toLowerCase, 'call', _21 => _21()]) || "documents"}...`,
797
+ placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _19 => _19.toLowerCase, 'call', _20 => _20()]) || "documents"}...`,
804
798
  query: docSearch.query,
805
799
  onQueryChange: docSearch.setQuery,
806
800
  results: docSearch.results,
@@ -819,7 +813,7 @@ function DocViewerContent({
819
813
  !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: [
820
814
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full content-lg:w-[320px] content-lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "content-lg:sticky content-lg:top-20", children: [
821
815
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentMobileDropdown, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
822
- _chunkTBOWFTENcjs.MobileNavigationDropdown,
816
+ _chunkFRG724DUcjs.MobileNavigationDropdown,
823
817
  {
824
818
  nodes: structure,
825
819
  selectedPath,
@@ -833,7 +827,7 @@ function DocViewerContent({
833
827
  /* @__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: [
834
828
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: sidebarLabel }),
835
829
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
836
- _chunkTBOWFTENcjs.MultiLevelNavigation,
830
+ _chunkFRG724DUcjs.MultiLevelNavigation,
837
831
  {
838
832
  nodes: structure,
839
833
  selectedPath,
@@ -857,22 +851,28 @@ function DocViewerContent({
857
851
  // shouldn't be on file pages" bug.
858
852
  isMarkdownContent && (showStickyNav && stickyNavSections.length > 0 || isLoadingContent || isLoadingStructure) ? "content-lg:grid-cols-[1fr_280px]" : ""} gap-8`,
859
853
  children: [
860
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full min-w-0 ${isMarkdownContent ? "mx-auto max-w-4xl" : ""}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: "space-y-2", children: isLoadingContent || isLoadingStructure ? renderSkeleton(selectedNodeDocType) : !content ? /* @__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 text-h4", children: resolvedEmptyText }) }) : renderedContent }) }),
861
- isMarkdownContent && (isLoadingContent || isLoadingStructure) && /* @__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: [
854
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full min-w-0 ${isMarkdownContent ? "mx-auto max-w-4xl" : ""}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "article", { className: "space-y-2", children: isLoadingDocument ? (
855
+ // The document being opened draws its own loading form: its renderer, in a loading scope,
856
+ // with an empty document of its type (no words, no address), never a skeleton picked here.
857
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63A4GZMBcjs.LoadingScope, { children: loadingContent })
858
+ ) : !content ? /* @__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 text-h4", children: resolvedEmptyText }) }) : renderedContent }) }),
859
+ isMarkdownContent && isLoadingDocument && /* @__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: [
862
860
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: ON_THIS_PAGE_HEADING_CLASS, children: ON_THIS_PAGE_LABEL }),
863
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "space-y-0", children: [130, 170, 190, 220, 110, 200, 80, 100, 120, 140, 90].map((w, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
864
- "div",
861
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk63A4GZMBcjs.LoadingScope, { children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
862
+ _chunkFRG724DUcjs.StickySectionNav,
865
863
  {
866
- className: `border-l-2 py-[13px] pl-3 ${i === 0 ? "border-ods-accent" : "border-transparent"}`,
867
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "h-[13px] rounded", width: w })
868
- },
869
- i
870
- )) })
864
+ sections: [],
865
+ activeSection: "",
866
+ onSectionClick: NO_SECTION_CLICK,
867
+ ribbonPosition: "left",
868
+ ribbonColor: "var(--ods-accent)"
869
+ }
870
+ ) })
871
871
  ] }) }),
872
872
  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: [
873
873
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: ON_THIS_PAGE_HEADING_CLASS, children: ON_THIS_PAGE_LABEL }),
874
874
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
875
- _chunkTBOWFTENcjs.StickySectionNav,
875
+ _chunkFRG724DUcjs.StickySectionNav,
876
876
  {
877
877
  sections: stickyNavSections,
878
878
  activeSection,
@@ -887,91 +887,18 @@ function DocViewerContent({
887
887
  ) })
888
888
  ] })
889
889
  ] }) }) });
890
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN2A24FDFcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
891
- }
892
-
893
- // src/components/docs/skeletons.tsx
894
-
895
- var MARKDOWN_SKELETON_BLOCKS = [
896
- { kind: "p", lines: 4 },
897
- { kind: "p", lines: 4 },
898
- { kind: "p", lines: 5 },
899
- { kind: "h2" },
900
- { kind: "p", lines: 4 },
901
- { kind: "p", lines: 5 },
902
- { kind: "h2" },
903
- { kind: "p", lines: 3 },
904
- { kind: "p", lines: 4 }
905
- ];
906
- var MARKDOWN_SKELETON_H2_CLASS = _chunk63A4GZMBcjs.cn.call(void 0, _chunkSIFRIUPWcjs.MARKDOWN_H2_CLASS, _chunkSIFRIUPWcjs.TEXT_SIZE_PRESETS.default.h2);
907
- var MARKDOWN_SKELETON_P_CLASS = _chunk63A4GZMBcjs.cn.call(void 0, _chunkSIFRIUPWcjs.MARKDOWN_PARAGRAPH_CLASS, _chunkSIFRIUPWcjs.TEXT_SIZE_PRESETS.default.p);
908
- function MarkdownSkeleton({
909
- region = true
910
- } = {}) {
911
- return (
912
- // The renderer's root class, and its box (no margin of its own, like the rendered body): the document's first fold.
913
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk2XCORRJVcjs.LoadingRegion, { label: "Loading the document", announce: region, className: _chunkSIFRIUPWcjs.MARKDOWN_RENDERER_CLASS, children: MARKDOWN_SKELETON_BLOCKS.map(
914
- (block, i) => block.kind === "h2" ? (
915
- // biome-ignore lint/suspicious/noArrayIndexKey: skeleton blocks never reorder
916
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: MARKDOWN_SKELETON_H2_CLASS, "aria-hidden": true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.TextLineSkeleton, { type: "inherit", as: "span", className: "w-1/3" }) }, i)
917
- ) : (
918
- // The last block ends the body with no margin, like the rendered one. Its own `last:mb-0` does not apply here:
919
- // the region's status line follows the blocks, so the paragraph is not the last child.
920
- // biome-ignore lint/suspicious/noArrayIndexKey: skeleton blocks never reorder
921
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
922
- "p",
923
- {
924
- className: _chunk63A4GZMBcjs.cn.call(void 0, MARKDOWN_SKELETON_P_CLASS, i === MARKDOWN_SKELETON_BLOCKS.length - 1 && "mb-0"),
925
- "aria-hidden": true,
926
- children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.TextLineSkeleton, { type: "inherit", as: "span", lines: block.lines, className: "w-full" })
927
- },
928
- i
929
- )
930
- )
931
- ) })
932
- );
933
- }
934
- function EmbedSkeleton({ documentType, region = true } = {}) {
935
- if (documentType === "file") {
936
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
937
- _chunk2XCORRJVcjs.LoadingRegion,
938
- {
939
- label: "Loading the document",
940
- announce: region,
941
- className: "flex flex-col items-center justify-center py-16",
942
- children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full max-w-md space-y-4 rounded-xl border border-ods-border bg-ods-card p-8 text-center", children: [
943
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "mx-auto h-16 w-16 rounded" }),
944
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
945
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "mx-auto h-5 w-2/3 rounded" }),
946
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "mx-auto h-4 w-1/2 rounded" })
947
- ] }),
948
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "h-10 w-full rounded" })
949
- ] })
950
- }
951
- );
952
- }
953
- const buttonCount = documentType === "pdf" ? 2 : 1;
954
- return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _chunk2XCORRJVcjs.LoadingRegion, { label: "Loading the document", announce: region, className: "space-y-4", children: [
955
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3 content-sm:flex-row content-sm:items-center content-sm:justify-between", children: [
956
- /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex min-w-0 flex-1 items-center gap-2", children: [
957
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "h-5 w-5 shrink-0 rounded" }),
958
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "h-6 w-2/3 rounded" })
959
- ] }),
960
- /* @__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, _chunk3TOWCFIKcjs.UnifiedSkeleton, { className: "h-10 w-full flex-1 rounded content-sm:w-32 content-sm:flex-initial" }, i)) })
961
- ] }),
962
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN2A24FDFcjs.EmbedLoadingSkeleton, { region: false })
963
- ] });
890
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYLETC7LPcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
964
891
  }
965
892
 
966
893
  // src/components/docs/docs-hub-page.tsx
967
894
 
968
895
  var DEFAULT_TITLE = "Documents";
969
896
  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" }) });
970
- var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHBDLJUI3cjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
971
- var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHBDLJUI3cjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
972
- var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkN2A24FDFcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
897
+ var defaultPdfRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkC3P7IUTUcjs.PdfViewer, { src: _nullishCoalesce(content.fileUrl, () => ( "")), fileName: content.fileName });
898
+ var defaultGoogleSheetRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkC3P7IUTUcjs.GoogleSheetsViewer, { externalUrl: _nullishCoalesce(content.externalUrl, () => ( "")), fileName: content.fileName });
899
+ var defaultFigmaRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkYLETC7LPcjs.FigmaEmbed, { url: _nullishCoalesce(content.externalUrl, () => ( "")), title: content.fileName, iframeLoading: "eager" });
973
900
  var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
974
- _chunkHBDLJUI3cjs.FileDownloadCard,
901
+ _chunkC3P7IUTUcjs.FileDownloadCard,
975
902
  {
976
903
  fileName: content.fileName,
977
904
  mimeType: content.mimeType,
@@ -979,11 +906,6 @@ var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void
979
906
  fileUrl: content.fileUrl
980
907
  }
981
908
  );
982
- var documentLoadingForm = (documentType) => !documentType || documentType === "markdown" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownSkeleton, {}) : (
983
- // Forward the documentType so the embed skeleton renders the right
984
- // shape (PDF=2 buttons, sheets/figma=1 button, file=centered card).
985
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, EmbedSkeleton, { documentType })
986
- );
987
909
  function DocsHubPage({
988
910
  title = DEFAULT_TITLE,
989
911
  documentTypeRenderers,
@@ -1013,8 +935,7 @@ function DocsHubPage({
1013
935
  showAIChat,
1014
936
  className,
1015
937
  sidebarLabel,
1016
- renderContent,
1017
- renderSkeleton: documentLoadingForm
938
+ renderContent
1018
939
  }
1019
940
  );
1020
941
  }