@flamingo-stack/openframe-frontend-core 0.0.296 → 0.0.297
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.
- package/README.md +9 -0
- package/dist/{chunk-7RIYT7ZH.js → chunk-2QG57XOJ.js} +1067 -205
- package/dist/chunk-2QG57XOJ.js.map +1 -0
- package/dist/{chunk-WHMATDVP.js → chunk-3JIQVE7T.js} +9 -15
- package/dist/{chunk-WHMATDVP.js.map → chunk-3JIQVE7T.js.map} +1 -1
- package/dist/{chunk-GLLDTKZK.cjs → chunk-4PSQS3SW.cjs} +7 -9
- package/dist/chunk-4PSQS3SW.cjs.map +1 -0
- package/dist/{chunk-OY7OF7E7.js → chunk-4TLE6VLU.js} +30 -24
- package/dist/chunk-4TLE6VLU.js.map +1 -0
- package/dist/{chunk-W6M2FLLT.cjs → chunk-53FUMSZ5.cjs} +40 -46
- package/dist/chunk-53FUMSZ5.cjs.map +1 -0
- package/dist/{chunk-D3LEFMOA.cjs → chunk-54KNMC2R.cjs} +3 -3
- package/dist/{chunk-D3LEFMOA.cjs.map → chunk-54KNMC2R.cjs.map} +1 -1
- package/dist/{chunk-EYEW6PTA.cjs → chunk-6C526VNN.cjs} +358 -118
- package/dist/chunk-6C526VNN.cjs.map +1 -0
- package/dist/{chunk-XREEV72C.cjs → chunk-7OVGB2DQ.cjs} +19 -25
- package/dist/chunk-7OVGB2DQ.cjs.map +1 -0
- package/dist/{chunk-6GCI7JOE.js → chunk-AD6C23QY.js} +8 -7
- package/dist/{chunk-6GCI7JOE.js.map → chunk-AD6C23QY.js.map} +1 -1
- package/dist/chunk-F5OB2YAL.cjs +144 -0
- package/dist/chunk-F5OB2YAL.cjs.map +1 -0
- package/dist/chunk-FBWXMMRB.cjs +2 -0
- package/dist/chunk-FBWXMMRB.cjs.map +1 -0
- package/dist/{chunk-YIGPRLQY.cjs → chunk-FCDQNTDG.cjs} +21 -20
- package/dist/chunk-FCDQNTDG.cjs.map +1 -0
- package/dist/{chunk-IE6OU3WQ.cjs → chunk-FQOTC3UU.cjs} +318 -16
- package/dist/chunk-FQOTC3UU.cjs.map +1 -0
- package/dist/{chunk-QHIXS3W2.cjs → chunk-GUTS7HGA.cjs} +11590 -2105
- package/dist/chunk-GUTS7HGA.cjs.map +1 -0
- package/dist/chunk-GZ4C3XW6.js +2 -0
- package/dist/chunk-GZ4C3XW6.js.map +1 -0
- package/dist/{chunk-5P3B2LZW.js → chunk-IL47XWV5.js} +8 -14
- package/dist/{chunk-5P3B2LZW.js.map → chunk-IL47XWV5.js.map} +1 -1
- package/dist/{chunk-LCNMR277.js → chunk-IZ7JSBFP.js} +1 -1
- package/dist/chunk-IZ7JSBFP.js.map +1 -0
- package/dist/{chunk-EL6QLAWX.js → chunk-JALO4TAZ.js} +357 -55
- package/dist/chunk-JALO4TAZ.js.map +1 -0
- package/dist/{chunk-AQOWFSMB.cjs → chunk-L6PSSIUQ.cjs} +1 -1
- package/dist/chunk-L6PSSIUQ.cjs.map +1 -0
- package/dist/{chunk-MBFWU2EM.js → chunk-L7ULJKG7.js} +6 -10
- package/dist/{chunk-MBFWU2EM.js.map → chunk-L7ULJKG7.js.map} +1 -1
- package/dist/{chunk-K2PFPBMF.js → chunk-PC746XCO.js} +15050 -5565
- package/dist/chunk-PC746XCO.js.map +1 -0
- package/dist/{chunk-3ZXUQQL4.js → chunk-PI4WSYQV.js} +2 -2
- package/dist/{chunk-E4XABBSU.js → chunk-PWQUAVA3.js} +338 -98
- package/dist/chunk-PWQUAVA3.js.map +1 -0
- package/dist/chunk-SA2WPJVO.js +144 -0
- package/dist/chunk-SA2WPJVO.js.map +1 -0
- package/dist/{chunk-X6BV7MB7.cjs → chunk-UNVE2SDJ.cjs} +37 -31
- package/dist/chunk-UNVE2SDJ.cjs.map +1 -0
- package/dist/{chunk-5E2HOSSH.cjs → chunk-WMSTJAZT.cjs} +913 -51
- package/dist/chunk-WMSTJAZT.cjs.map +1 -0
- package/dist/{chunk-ZP4AVIZP.js → chunk-X4DOXQRT.js} +4 -6
- package/dist/{chunk-ZP4AVIZP.js.map → chunk-X4DOXQRT.js.map} +1 -1
- package/dist/{chunk-X647HY3F.cjs → chunk-YBYI62OE.cjs} +33 -37
- package/dist/chunk-YBYI62OE.cjs.map +1 -0
- package/dist/components/case-studies/index.cjs +126 -0
- package/dist/components/case-studies/index.cjs.map +1 -0
- package/dist/components/case-studies/index.d.ts +2 -0
- package/dist/components/case-studies/index.d.ts.map +1 -0
- package/dist/components/case-studies/index.js +126 -0
- package/dist/components/case-studies/index.js.map +1 -0
- package/dist/components/case-studies/share-experience-section.d.ts +48 -0
- package/dist/components/case-studies/share-experience-section.d.ts.map +1 -0
- package/dist/components/chat/index.cjs +8 -18
- package/dist/components/chat/index.cjs.map +1 -1
- package/dist/components/chat/index.js +75 -85
- package/dist/components/contact/index.cjs +8 -15
- package/dist/components/contact/index.cjs.map +1 -1
- package/dist/components/contact/index.js +7 -14
- package/dist/components/docs/doc-viewer.d.ts +39 -2
- package/dist/components/docs/doc-viewer.d.ts.map +1 -1
- package/dist/components/docs/docs-hub-page.d.ts +46 -0
- package/dist/components/docs/docs-hub-page.d.ts.map +1 -0
- package/dist/components/docs/index.cjs +17 -9
- package/dist/components/docs/index.cjs.map +1 -1
- package/dist/components/docs/index.d.ts +4 -0
- package/dist/components/docs/index.d.ts.map +1 -1
- package/dist/components/docs/index.js +16 -8
- package/dist/components/docs/skeletons.d.ts +32 -0
- package/dist/components/docs/skeletons.d.ts.map +1 -0
- package/dist/components/docs/use-docs-resolve-link.d.ts +20 -0
- package/dist/components/docs/use-docs-resolve-link.d.ts.map +1 -0
- package/dist/components/docs/use-document-tree.d.ts.map +1 -1
- package/dist/components/embeds/embed-container.d.ts +37 -0
- package/dist/components/embeds/embed-container.d.ts.map +1 -0
- package/dist/components/embeds/embed-iframe.d.ts.map +1 -1
- package/dist/components/embeds/file-download-card.d.ts +18 -0
- package/dist/components/embeds/file-download-card.d.ts.map +1 -0
- package/dist/components/embeds/index.cjs +38 -15
- package/dist/components/embeds/index.cjs.map +1 -1
- package/dist/components/embeds/index.d.ts +8 -0
- package/dist/components/embeds/index.d.ts.map +1 -1
- package/dist/components/embeds/index.js +40 -17
- package/dist/components/embeds/linkedin-embed-client.d.ts +8 -0
- package/dist/components/embeds/linkedin-embed-client.d.ts.map +1 -0
- package/dist/components/embeds/markdown-image.d.ts +5 -0
- package/dist/components/embeds/markdown-image.d.ts.map +1 -0
- package/dist/components/embeds/reddit-embed-client.d.ts +7 -0
- package/dist/components/embeds/reddit-embed-client.d.ts.map +1 -0
- package/dist/components/embeds/rich-markdown-runtime.d.ts +46 -0
- package/dist/components/embeds/rich-markdown-runtime.d.ts.map +1 -0
- package/dist/components/embeds/twitter-embed-client.d.ts +8 -0
- package/dist/components/embeds/twitter-embed-client.d.ts.map +1 -0
- package/dist/components/faq/index.cjs +9 -16
- package/dist/components/faq/index.cjs.map +1 -1
- package/dist/components/faq/index.js +8 -15
- package/dist/components/features/index.cjs +8 -16
- package/dist/components/features/index.cjs.map +1 -1
- package/dist/components/features/index.js +24 -32
- package/dist/components/index.cjs +257 -452
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +781 -976
- package/dist/components/index.js.map +1 -1
- package/dist/components/layout/page-header.d.ts +78 -0
- package/dist/components/layout/page-header.d.ts.map +1 -0
- package/dist/components/layout/page-layout.d.ts +10 -1
- package/dist/components/layout/page-layout.d.ts.map +1 -1
- package/dist/components/layout/page-with-header.d.ts +67 -0
- package/dist/components/layout/page-with-header.d.ts.map +1 -0
- package/dist/components/layout/title-block.d.ts +17 -1
- package/dist/components/layout/title-block.d.ts.map +1 -1
- package/dist/components/navigation/index.cjs +7 -15
- package/dist/components/navigation/index.cjs.map +1 -1
- package/dist/components/navigation/index.js +9 -17
- package/dist/components/onboarding-guides/index.cjs +35 -36
- package/dist/components/onboarding-guides/index.cjs.map +1 -1
- package/dist/components/onboarding-guides/index.js +13 -14
- package/dist/components/onboarding-guides/index.js.map +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts +1 -1
- package/dist/components/onboarding-guides/onboarding-guide-detail-view.d.ts.map +1 -1
- package/dist/components/related-content/index.cjs +9 -16
- package/dist/components/related-content/index.cjs.map +1 -1
- package/dist/components/related-content/index.js +8 -15
- package/dist/components/shared/dev-section/dev-section-page.d.ts +9 -0
- package/dist/components/shared/dev-section/dev-section-page.d.ts.map +1 -1
- package/dist/components/shared/dev-section/dev-section-view.d.ts.map +1 -1
- package/dist/components/shared/dev-section/index.d.ts +1 -1
- package/dist/components/shared/dev-section/index.d.ts.map +1 -1
- package/dist/components/shared/doc-search/use-doc-search.d.ts.map +1 -1
- package/dist/components/shared/legal-document/legal-document-page.d.ts.map +1 -1
- package/dist/components/shared/product-release/release-detail-page.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +100 -112
- package/dist/components/tickets/index.cjs.map +1 -1
- package/dist/components/tickets/index.js +20 -32
- package/dist/components/tickets/index.js.map +1 -1
- package/dist/components/ui/file-manager/index.cjs +50 -52
- package/dist/components/ui/file-manager/index.cjs.map +1 -1
- package/dist/components/ui/file-manager/index.js +4 -6
- package/dist/components/ui/file-manager/index.js.map +1 -1
- package/dist/components/ui/index.cjs +13 -19
- package/dist/components/ui/index.cjs.map +1 -1
- package/dist/components/ui/index.d.ts +2 -0
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +133 -139
- package/dist/components/ui/release-changelog-section.d.ts +6 -2
- package/dist/components/ui/release-changelog-section.d.ts.map +1 -1
- package/dist/components/ui/rich-markdown-renderer.d.ts +34 -0
- package/dist/components/ui/rich-markdown-renderer.d.ts.map +1 -0
- package/dist/components/ui/simple-markdown-renderer.d.ts +2 -8
- package/dist/components/ui/simple-markdown-renderer.d.ts.map +1 -1
- package/dist/contexts/chat-runtime-context.d.ts +14 -0
- package/dist/contexts/chat-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +3 -3
- package/dist/contexts/index.js +5 -5
- package/dist/embed-shims/index.cjs +3 -3
- package/dist/embed-shims/index.cjs.map +1 -1
- package/dist/embed-shims/index.js +4 -4
- package/dist/hooks/index.cjs +4 -9
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.js +6 -11
- package/dist/index.cjs +14 -20
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +362 -368
- package/dist/types/doc-source.d.ts +31 -1
- package/dist/types/doc-source.d.ts.map +1 -1
- package/dist/utils/index.cjs +4 -0
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/page-header-constants.d.ts +15 -0
- package/dist/utils/page-header-constants.d.ts.map +1 -0
- package/dist/utils/social-embed-cache.d.ts +29 -0
- package/dist/utils/social-embed-cache.d.ts.map +1 -0
- package/package.json +7 -1
- package/src/components/case-studies/index.ts +4 -0
- package/src/components/case-studies/share-experience-section.tsx +185 -0
- package/src/components/chat/embeddable-chat.tsx +1 -1
- package/src/components/docs/doc-viewer.tsx +111 -19
- package/src/components/docs/docs-hub-page.tsx +149 -0
- package/src/components/docs/index.ts +17 -0
- package/src/components/docs/skeletons.tsx +138 -0
- package/src/components/docs/use-docs-resolve-link.ts +52 -0
- package/src/components/docs/use-document-tree.ts +21 -0
- package/src/components/embeds/embed-container.tsx +80 -0
- package/src/components/embeds/embed-iframe.tsx +7 -9
- package/src/components/embeds/file-download-card.tsx +54 -0
- package/src/components/embeds/index.ts +30 -0
- package/src/components/embeds/linkedin-embed-client.tsx +100 -0
- package/src/components/embeds/markdown-image.tsx +88 -0
- package/src/components/embeds/og-link-preview.tsx +13 -13
- package/src/components/embeds/reddit-embed-client.tsx +550 -0
- package/src/components/embeds/rich-markdown-runtime.tsx +79 -0
- package/src/components/embeds/twitter-embed-client.tsx +308 -0
- package/src/components/layout/page-header.tsx +182 -0
- package/src/components/layout/page-layout.tsx +14 -1
- package/src/components/layout/page-with-header.tsx +110 -0
- package/src/components/layout/title-block.tsx +40 -62
- package/src/components/onboarding-guides/onboarding-guide-detail-view.tsx +3 -3
- package/src/components/shared/dev-section/dev-section-page.tsx +9 -1
- package/src/components/shared/dev-section/dev-section-view.tsx +14 -9
- package/src/components/shared/dev-section/index.ts +1 -1
- package/src/components/shared/doc-search/use-doc-search.ts +7 -3
- package/src/components/shared/legal-document/legal-document-page.tsx +2 -2
- package/src/components/shared/product-release/release-detail-page.tsx +6 -4
- package/src/components/ui/index.ts +2 -0
- package/src/components/ui/release-changelog-section.tsx +7 -2
- package/src/components/ui/rich-markdown-renderer.tsx +1203 -0
- package/src/components/ui/simple-markdown-renderer.tsx +7 -11
- package/src/contexts/chat-runtime-context.tsx +14 -0
- package/src/types/doc-source.ts +33 -1
- package/src/utils/index.ts +1 -0
- package/src/utils/page-header-constants.ts +15 -0
- package/src/utils/social-embed-cache.ts +391 -0
- package/dist/chunk-26PKDALD.js +0 -2379
- package/dist/chunk-26PKDALD.js.map +0 -1
- package/dist/chunk-3MCHAFHB.js +0 -89
- package/dist/chunk-3MCHAFHB.js.map +0 -1
- package/dist/chunk-5E2HOSSH.cjs.map +0 -1
- package/dist/chunk-66AANIOC.cjs +0 -619
- package/dist/chunk-66AANIOC.cjs.map +0 -1
- package/dist/chunk-6JINAOI7.cjs +0 -311
- package/dist/chunk-6JINAOI7.cjs.map +0 -1
- package/dist/chunk-7RIYT7ZH.js.map +0 -1
- package/dist/chunk-AQOWFSMB.cjs.map +0 -1
- package/dist/chunk-BOCFIKYS.cjs +0 -3009
- package/dist/chunk-BOCFIKYS.cjs.map +0 -1
- package/dist/chunk-D652TJBQ.js +0 -3009
- package/dist/chunk-D652TJBQ.js.map +0 -1
- package/dist/chunk-E4XABBSU.js.map +0 -1
- package/dist/chunk-EL6QLAWX.js.map +0 -1
- package/dist/chunk-EYEW6PTA.cjs.map +0 -1
- package/dist/chunk-FQJK446R.js +0 -1606
- package/dist/chunk-FQJK446R.js.map +0 -1
- package/dist/chunk-GLLDTKZK.cjs.map +0 -1
- package/dist/chunk-IE6OU3WQ.cjs.map +0 -1
- package/dist/chunk-J54Z3OCR.cjs +0 -1606
- package/dist/chunk-J54Z3OCR.cjs.map +0 -1
- package/dist/chunk-K2PFPBMF.js.map +0 -1
- package/dist/chunk-KXCRGTRN.cjs +0 -2379
- package/dist/chunk-KXCRGTRN.cjs.map +0 -1
- package/dist/chunk-LCNMR277.js.map +0 -1
- package/dist/chunk-LFGGF7OT.cjs +0 -449
- package/dist/chunk-LFGGF7OT.cjs.map +0 -1
- package/dist/chunk-M2OCXTNT.js +0 -311
- package/dist/chunk-M2OCXTNT.js.map +0 -1
- package/dist/chunk-ME4EVDFP.js +0 -619
- package/dist/chunk-ME4EVDFP.js.map +0 -1
- package/dist/chunk-OQ6X7ZOC.js +0 -449
- package/dist/chunk-OQ6X7ZOC.js.map +0 -1
- package/dist/chunk-OY7OF7E7.js.map +0 -1
- package/dist/chunk-POKKCWKF.js +0 -354
- package/dist/chunk-POKKCWKF.js.map +0 -1
- package/dist/chunk-QHIXS3W2.cjs.map +0 -1
- package/dist/chunk-TFSYSWPS.cjs +0 -89
- package/dist/chunk-TFSYSWPS.cjs.map +0 -1
- package/dist/chunk-W6M2FLLT.cjs.map +0 -1
- package/dist/chunk-X647HY3F.cjs.map +0 -1
- package/dist/chunk-X6BV7MB7.cjs.map +0 -1
- package/dist/chunk-XREEV72C.cjs.map +0 -1
- package/dist/chunk-YETA25JW.cjs +0 -354
- package/dist/chunk-YETA25JW.cjs.map +0 -1
- package/dist/chunk-YIGPRLQY.cjs.map +0 -1
- /package/dist/{chunk-3ZXUQQL4.js.map → chunk-PI4WSYQV.js.map} +0 -0
|
@@ -2,24 +2,37 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var _chunkYIGPRLQYcjs = require('./chunk-YIGPRLQY.cjs');
|
|
6
5
|
|
|
6
|
+
var _chunkF5OB2YALcjs = require('./chunk-F5OB2YAL.cjs');
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
var _chunkFCDQNTDGcjs = require('./chunk-FCDQNTDG.cjs');
|
|
10
11
|
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
|
|
14
|
-
var _chunkKXCRGTRNcjs = require('./chunk-KXCRGTRN.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
|
|
19
|
-
var _chunkLFGGF7OTcjs = require('./chunk-LFGGF7OT.cjs');
|
|
20
19
|
|
|
21
20
|
|
|
22
|
-
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
var _chunkGUTS7HGAcjs = require('./chunk-GUTS7HGA.cjs');
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
var _chunkWMSTJAZTcjs = require('./chunk-WMSTJAZT.cjs');
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
var _chunkL6PSSIUQcjs = require('./chunk-L6PSSIUQ.cjs');
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
var _chunkG7UE6RKVcjs = require('./chunk-G7UE6RKV.cjs');
|
|
23
36
|
|
|
24
37
|
|
|
25
38
|
|
|
@@ -27,6 +40,7 @@ var _chunkFIG2RKZFcjs = require('./chunk-FIG2RKZF.cjs');
|
|
|
27
40
|
|
|
28
41
|
// src/components/docs/doc-viewer.tsx
|
|
29
42
|
var _react = require('react'); var _react2 = _interopRequireDefault(_react);
|
|
43
|
+
_chunkG7UE6RKVcjs.init_next_navigation.call(void 0, );
|
|
30
44
|
|
|
31
45
|
// src/components/persistent-filter-controls.tsx
|
|
32
46
|
_chunkFIG2RKZFcjs.init_cn.call(void 0, );
|
|
@@ -1029,15 +1043,15 @@ function useDocNavigation() {
|
|
|
1029
1043
|
function scrollToContent() {
|
|
1030
1044
|
const article = document.querySelector("article");
|
|
1031
1045
|
if (article) {
|
|
1032
|
-
|
|
1046
|
+
_chunkWMSTJAZTcjs.scrollElementIntoView.call(void 0, article, { headerOffset: _chunkWMSTJAZTcjs.HUB_HEADER_OFFSET_PX });
|
|
1033
1047
|
} else {
|
|
1034
1048
|
window.scrollTo({ top: 0, behavior: "smooth" });
|
|
1035
1049
|
}
|
|
1036
1050
|
}
|
|
1037
1051
|
function useDocumentTree(config, initialPath) {
|
|
1038
1052
|
const { structureEndpoint, contentEndpoint, baseRoute } = config;
|
|
1039
|
-
const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => (
|
|
1040
|
-
const cleanInitialPath =
|
|
1053
|
+
const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkGUTS7HGAcjs.DEFAULT_FOLDER_INDEX_FILE));
|
|
1054
|
+
const cleanInitialPath = _chunkGUTS7HGAcjs.stripFolderIndexFromPath.call(void 0,
|
|
1041
1055
|
_optionalChain([initialPath, 'optionalAccess', _2 => _2.replace, 'call', _3 => _3(/\/$/, "")]) || "",
|
|
1042
1056
|
folderIndexFile
|
|
1043
1057
|
);
|
|
@@ -1063,12 +1077,12 @@ function useDocumentTree(config, initialPath) {
|
|
|
1063
1077
|
} else if (pathname.startsWith(`${normalizedBaseRoute}/`)) {
|
|
1064
1078
|
pathFromUrl = pathname.substring(`${normalizedBaseRoute}/`.length);
|
|
1065
1079
|
}
|
|
1066
|
-
pathFromUrl =
|
|
1080
|
+
pathFromUrl = _chunkGUTS7HGAcjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
|
|
1067
1081
|
if (pathFromUrl !== selectedPathRef.current) {
|
|
1068
1082
|
setSelectedPath(pathFromUrl);
|
|
1069
1083
|
if (pathFromUrl) {
|
|
1070
1084
|
const parentPath = pathFromUrl.includes("/") ? pathFromUrl.substring(0, pathFromUrl.lastIndexOf("/")) : pathFromUrl;
|
|
1071
|
-
setExpandedNodes(new Set(
|
|
1085
|
+
setExpandedNodes(new Set(_chunkGUTS7HGAcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
|
|
1072
1086
|
}
|
|
1073
1087
|
setTimeout(() => {
|
|
1074
1088
|
scrollToContent();
|
|
@@ -1078,6 +1092,15 @@ function useDocumentTree(config, initialPath) {
|
|
|
1078
1092
|
window.addEventListener("popstate", handlePopState);
|
|
1079
1093
|
return () => window.removeEventListener("popstate", handlePopState);
|
|
1080
1094
|
}, [normalizedBaseRoute, folderIndexFile]);
|
|
1095
|
+
_react.useEffect.call(void 0, () => {
|
|
1096
|
+
if (cleanInitialPath === selectedPathRef.current) return;
|
|
1097
|
+
setSelectedPath(cleanInitialPath);
|
|
1098
|
+
if (cleanInitialPath) {
|
|
1099
|
+
const parentPath = cleanInitialPath.includes("/") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
|
|
1100
|
+
setExpandedNodes(new Set(_chunkGUTS7HGAcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
|
|
1101
|
+
}
|
|
1102
|
+
setTimeout(scrollToContent, 150);
|
|
1103
|
+
}, [cleanInitialPath]);
|
|
1081
1104
|
_react.useEffect.call(void 0, () => {
|
|
1082
1105
|
if (!isInitialized) {
|
|
1083
1106
|
const speculativeContentPath = cleanInitialPath || folderIndexFile;
|
|
@@ -1094,7 +1117,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1094
1117
|
if (selectedPath === "") {
|
|
1095
1118
|
pathToFetch = folderIndexFile;
|
|
1096
1119
|
} else {
|
|
1097
|
-
const node =
|
|
1120
|
+
const node = _chunkGUTS7HGAcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
|
|
1098
1121
|
if (node && node.type === "folder" && !node.hasReadme) {
|
|
1099
1122
|
return;
|
|
1100
1123
|
}
|
|
@@ -1125,7 +1148,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1125
1148
|
if (cleanInitialPath) {
|
|
1126
1149
|
const pathForExpansion = cleanInitialPath.includes(".") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
|
|
1127
1150
|
if (pathForExpansion) {
|
|
1128
|
-
setExpandedNodes(new Set(
|
|
1151
|
+
setExpandedNodes(new Set(_chunkGUTS7HGAcjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
|
|
1129
1152
|
}
|
|
1130
1153
|
} else if (result.data.length > 0) {
|
|
1131
1154
|
const hasRootReadme = result.data.some(
|
|
@@ -1212,11 +1235,11 @@ function useDocumentTree(config, initialPath) {
|
|
|
1212
1235
|
if (node.type === "folder") {
|
|
1213
1236
|
setExpandedNodes((prev) => {
|
|
1214
1237
|
if (prev.has(node.id)) {
|
|
1215
|
-
const ancestorIds =
|
|
1238
|
+
const ancestorIds = _chunkGUTS7HGAcjs.getDocAncestorNodeIds.call(void 0, node.path);
|
|
1216
1239
|
ancestorIds.pop();
|
|
1217
1240
|
return new Set(ancestorIds);
|
|
1218
1241
|
} else {
|
|
1219
|
-
return new Set(
|
|
1242
|
+
return new Set(_chunkGUTS7HGAcjs.getDocAncestorNodeIds.call(void 0, node.path));
|
|
1220
1243
|
}
|
|
1221
1244
|
});
|
|
1222
1245
|
if (node.hasReadme) {
|
|
@@ -1233,7 +1256,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1233
1256
|
const lastSlash = node.path.lastIndexOf("/");
|
|
1234
1257
|
if (lastSlash > 0) {
|
|
1235
1258
|
const parentPath = node.path.substring(0, lastSlash);
|
|
1236
|
-
setExpandedNodes(new Set(
|
|
1259
|
+
setExpandedNodes(new Set(_chunkGUTS7HGAcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
|
|
1237
1260
|
}
|
|
1238
1261
|
lastFetchedPath.current = null;
|
|
1239
1262
|
setSelectedPath(node.path);
|
|
@@ -1247,9 +1270,9 @@ function useDocumentTree(config, initialPath) {
|
|
|
1247
1270
|
const hashIndex = path.indexOf("#");
|
|
1248
1271
|
const anchor = hashIndex !== -1 ? path.substring(hashIndex) : "";
|
|
1249
1272
|
const cleanPath = path.replace(/\/$/, "").split("#")[0];
|
|
1250
|
-
const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _4 => _4.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current :
|
|
1273
|
+
const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _4 => _4.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkGUTS7HGAcjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
|
|
1251
1274
|
if (anchor && _optionalChain([options, 'optionalAccess', _5 => _5.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
|
|
1252
|
-
|
|
1275
|
+
_chunkWMSTJAZTcjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunkWMSTJAZTcjs.HUB_HEADER_OFFSET_PX });
|
|
1253
1276
|
return;
|
|
1254
1277
|
}
|
|
1255
1278
|
const scrollAfterNav = () => {
|
|
@@ -1257,7 +1280,7 @@ function useDocumentTree(config, initialPath) {
|
|
|
1257
1280
|
setTimeout(() => {
|
|
1258
1281
|
const el = document.getElementById(anchor.substring(1));
|
|
1259
1282
|
if (el) {
|
|
1260
|
-
|
|
1283
|
+
_chunkWMSTJAZTcjs.scrollElementIntoView.call(void 0, el, { headerOffset: _chunkWMSTJAZTcjs.HUB_HEADER_OFFSET_PX });
|
|
1261
1284
|
} else {
|
|
1262
1285
|
scrollToContent();
|
|
1263
1286
|
}
|
|
@@ -1309,8 +1332,8 @@ function useDocumentTree(config, initialPath) {
|
|
|
1309
1332
|
return docNavigation.register({
|
|
1310
1333
|
baseRoute: normalizedBaseRoute,
|
|
1311
1334
|
findNodeByPath: (path) => {
|
|
1312
|
-
const clean =
|
|
1313
|
-
return _nullishCoalesce(
|
|
1335
|
+
const clean = _chunkGUTS7HGAcjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
|
|
1336
|
+
return _nullishCoalesce(_chunkGUTS7HGAcjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
|
|
1314
1337
|
},
|
|
1315
1338
|
selectNode
|
|
1316
1339
|
});
|
|
@@ -1351,7 +1374,7 @@ function useScrollSpy(sections) {
|
|
|
1351
1374
|
if (!targetElement) return;
|
|
1352
1375
|
isScrollingFromClick.current = true;
|
|
1353
1376
|
setActiveSection(sectionId);
|
|
1354
|
-
|
|
1377
|
+
_chunkWMSTJAZTcjs.scrollElementIntoView.call(void 0, targetElement, { headerOffset: SCROLL_OFFSET });
|
|
1355
1378
|
setTimeout(() => {
|
|
1356
1379
|
isScrollingFromClick.current = false;
|
|
1357
1380
|
}, 800);
|
|
@@ -1387,6 +1410,35 @@ function useScrollSpy(sections) {
|
|
|
1387
1410
|
return { activeSection, handleSectionClick };
|
|
1388
1411
|
}
|
|
1389
1412
|
|
|
1413
|
+
// src/components/docs/use-docs-resolve-link.ts
|
|
1414
|
+
|
|
1415
|
+
function useDocsResolveLink(sourceId, resolveLinkEndpoint) {
|
|
1416
|
+
const chatRuntime = _chunkL6PSSIUQcjs.useChatRuntime.call(void 0, );
|
|
1417
|
+
const resolvedResolveLinkEndpoint = _nullishCoalesce(_nullishCoalesce(resolveLinkEndpoint, () => ( _optionalChain([chatRuntime, 'optionalAccess', _20 => _20.endpoints, 'access', _21 => _21.docsResolveLinkUrl]))), () => ( "/api/docs/resolve-link"));
|
|
1418
|
+
return _react.useCallback.call(void 0,
|
|
1419
|
+
async (href, currentPath) => {
|
|
1420
|
+
try {
|
|
1421
|
+
const response = await fetch(resolvedResolveLinkEndpoint, {
|
|
1422
|
+
method: "POST",
|
|
1423
|
+
headers: { "Content-Type": "application/json" },
|
|
1424
|
+
body: JSON.stringify({ link: href, currentPath, source: sourceId })
|
|
1425
|
+
});
|
|
1426
|
+
if (!response.ok) {
|
|
1427
|
+
return { success: false, error: `Resolve failed: ${response.status}` };
|
|
1428
|
+
}
|
|
1429
|
+
const json = await response.json();
|
|
1430
|
+
return _nullishCoalesce(json.data, () => ( json));
|
|
1431
|
+
} catch (error) {
|
|
1432
|
+
return {
|
|
1433
|
+
success: false,
|
|
1434
|
+
error: error instanceof Error ? error.message : "Resolve failed"
|
|
1435
|
+
};
|
|
1436
|
+
}
|
|
1437
|
+
},
|
|
1438
|
+
[resolvedResolveLinkEndpoint, sourceId]
|
|
1439
|
+
);
|
|
1440
|
+
}
|
|
1441
|
+
|
|
1390
1442
|
// src/components/docs/doc-viewer.tsx
|
|
1391
1443
|
|
|
1392
1444
|
var DEFAULT_DOC_VIEWER_PALETTE = {
|
|
@@ -1408,19 +1460,26 @@ function DocViewerContent({
|
|
|
1408
1460
|
renderSkeleton,
|
|
1409
1461
|
chatSource,
|
|
1410
1462
|
title,
|
|
1463
|
+
titleIcon,
|
|
1464
|
+
subtitle,
|
|
1465
|
+
accentDot,
|
|
1411
1466
|
colorPalette = DEFAULT_DOC_VIEWER_PALETTE,
|
|
1412
1467
|
className = "",
|
|
1413
1468
|
docPath,
|
|
1414
1469
|
sidebarLabel = "DOCUMENTATION",
|
|
1415
1470
|
structureEndpoint,
|
|
1416
1471
|
contentEndpoint,
|
|
1472
|
+
searchEndpoint,
|
|
1473
|
+
resolveLinkEndpoint,
|
|
1417
1474
|
baseRoute,
|
|
1418
1475
|
emptyStateText,
|
|
1419
1476
|
showAIChat = false,
|
|
1420
|
-
folderIndexFile
|
|
1477
|
+
folderIndexFile,
|
|
1478
|
+
backButton
|
|
1421
1479
|
}) {
|
|
1422
1480
|
const resolvedStructureEndpoint = _nullishCoalesce(structureEndpoint, () => ( `/api/docs/sources/${sourceId}/structure`));
|
|
1423
1481
|
const resolvedContentEndpoint = _nullishCoalesce(contentEndpoint, () => ( `/api/docs/sources/${sourceId}/content`));
|
|
1482
|
+
const resolveLink = useDocsResolveLink(sourceId, resolveLinkEndpoint);
|
|
1424
1483
|
const {
|
|
1425
1484
|
structure,
|
|
1426
1485
|
selectedPath,
|
|
@@ -1441,11 +1500,17 @@ function DocViewerContent({
|
|
|
1441
1500
|
},
|
|
1442
1501
|
docPath
|
|
1443
1502
|
);
|
|
1444
|
-
const { activeSection, handleSectionClick } = useScrollSpy(_optionalChain([content, 'optionalAccess',
|
|
1503
|
+
const { activeSection, handleSectionClick } = useScrollSpy(_optionalChain([content, 'optionalAccess', _22 => _22.sections]));
|
|
1445
1504
|
const docNav = useDocNavigation();
|
|
1446
|
-
const
|
|
1505
|
+
const router = _chunkG7UE6RKVcjs.useRouter.call(void 0, );
|
|
1506
|
+
const backCfg = backButton === false ? null : {
|
|
1507
|
+
label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _23 => _23.label]), () => ( "Back to home")),
|
|
1508
|
+
onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _24 => _24.href]), () => ( "/")))
|
|
1509
|
+
};
|
|
1510
|
+
const docSearch = _chunkFCDQNTDGcjs.useDocSearch.call(void 0, {
|
|
1447
1511
|
source: chatSource,
|
|
1448
1512
|
baseRoute,
|
|
1513
|
+
searchEndpoint,
|
|
1449
1514
|
onNavigate: (path) => navigateToDoc(path, { fromInternalLink: true }),
|
|
1450
1515
|
onInPageSwap: (path) => docNav.navigate(path)
|
|
1451
1516
|
});
|
|
@@ -1454,50 +1519,85 @@ function DocViewerContent({
|
|
|
1454
1519
|
return renderContent(content, {
|
|
1455
1520
|
onInternalLinkClick: navigateToDoc,
|
|
1456
1521
|
currentPath: selectedPath,
|
|
1457
|
-
sourceId
|
|
1522
|
+
sourceId,
|
|
1523
|
+
onResolveLink: resolveLink
|
|
1458
1524
|
});
|
|
1459
|
-
}, [content, selectedPath, renderContent, navigateToDoc, sourceId]);
|
|
1460
|
-
const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([
|
|
1461
|
-
const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess',
|
|
1525
|
+
}, [content, selectedPath, renderContent, navigateToDoc, sourceId, resolveLink]);
|
|
1526
|
+
const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkGUTS7HGAcjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _25 => _25.documentType]) : void 0;
|
|
1527
|
+
const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _26 => _26.documentType]), () => ( selectedNodeDocType));
|
|
1462
1528
|
const isMarkdownContent = !activeDocType || activeDocType === "markdown";
|
|
1463
1529
|
const showStickyNav = isMarkdownContent;
|
|
1464
|
-
const stickyNavSections = _nullishCoalesce(_optionalChain([content, 'optionalAccess',
|
|
1530
|
+
const stickyNavSections = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _27 => _27.sections, 'optionalAccess', _28 => _28.map, 'call', _29 => _29((s) => ({ id: s.id, label: s.title }))]), () => ( []));
|
|
1465
1531
|
const isColorValue = colorPalette.background.startsWith("#") || colorPalette.background.startsWith("rgb") || colorPalette.background.startsWith("var(");
|
|
1466
1532
|
const bgStyle = isColorValue ? { backgroundColor: colorPalette.background } : {};
|
|
1467
1533
|
const bgClass = !isColorValue ? colorPalette.background : "";
|
|
1468
1534
|
const containerBgStyle = colorPalette.containerBackground !== "transparent" ? { backgroundColor: colorPalette.containerBackground } : {};
|
|
1469
1535
|
const defaultEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : "No documents yet. Add content from the admin panel.";
|
|
1470
1536
|
const resolvedEmptyText = emptyStateText || defaultEmptyText;
|
|
1471
|
-
return
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1537
|
+
return (
|
|
1538
|
+
// STRUCTURAL UNIFICATION: render through the IDENTICAL wrapper chain
|
|
1539
|
+
// `<DevSectionPage>` uses (PageShell → PageLayout → `gap-10 flex-col`),
|
|
1540
|
+
// not a hand-rolled custom container with similar-looking spacing.
|
|
1541
|
+
// PageLayout owns the back-button row; the inner `gap-10` div +
|
|
1542
|
+
// `<PageHeader noTopPadding noBottomMargin>` renders the title section
|
|
1543
|
+
// the same way `<DevSectionView>`'s hero does. This is the only way to
|
|
1544
|
+
// guarantee /knowledge-base sits at pixel-identical vertical rhythm to
|
|
1545
|
+
// /roadmap / /releases / /onboarding-guides — same components, same DOM,
|
|
1546
|
+
// not "same CSS classes that look similar on paper."
|
|
1547
|
+
//
|
|
1548
|
+
// `colorPalette` / `className` / `bgStyle` flow through PageShell's
|
|
1549
|
+
// contentClassName + an inner style-passthrough wrapper so legacy
|
|
1550
|
+
// palette overrides still apply (none in the codebase today; the API
|
|
1551
|
+
// surface is preserved).
|
|
1552
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGUTS7HGAcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGUTS7HGAcjs.PageLayout, { backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "w-full flex flex-col gap-10", children: [
|
|
1553
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1554
|
+
_chunkGUTS7HGAcjs.PageHeader,
|
|
1555
|
+
{
|
|
1556
|
+
title,
|
|
1557
|
+
titleIcon,
|
|
1558
|
+
subtitle,
|
|
1559
|
+
accentDot,
|
|
1560
|
+
noTopPadding: true,
|
|
1561
|
+
noBottomMargin: true
|
|
1562
|
+
}
|
|
1563
|
+
),
|
|
1564
|
+
showAIChat && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1565
|
+
_chunkFCDQNTDGcjs.DocSearchBar,
|
|
1566
|
+
{
|
|
1567
|
+
placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _30 => _30.toLowerCase, 'call', _31 => _31()]) || "documents"}...`,
|
|
1568
|
+
query: docSearch.query,
|
|
1569
|
+
onQueryChange: docSearch.setQuery,
|
|
1570
|
+
results: docSearch.results,
|
|
1571
|
+
isLoading: docSearch.isLoading,
|
|
1572
|
+
onResultSelect: docSearch.handleResultSelect,
|
|
1573
|
+
showDropdown: docSearch.keepDropdownOpen
|
|
1574
|
+
}
|
|
1575
|
+
),
|
|
1576
|
+
error && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex justify-center", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "rounded-lg border bg-ods-card p-8 text-center max-w-md border-ods-border", children: [
|
|
1577
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h2", { className: "text-xl font-semibold text-ods-text-primary", children: "Error Loading Documents" }),
|
|
1578
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "p", { className: "mt-2 text-ods-text-secondary", children: [
|
|
1579
|
+
error,
|
|
1580
|
+
". Please try again later."
|
|
1581
|
+
] })
|
|
1582
|
+
] }) }),
|
|
1583
|
+
!error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col lg:flex-row gap-6 lg:gap-10 items-start flex-1", children: [
|
|
1584
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full lg:w-[320px] lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "lg:sticky lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
|
|
1585
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentMobileDropdown, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1586
|
+
_chunkGUTS7HGAcjs.MobileNavigationDropdown,
|
|
1587
|
+
{
|
|
1588
|
+
nodes: structure,
|
|
1589
|
+
selectedPath,
|
|
1590
|
+
expandedNodes,
|
|
1591
|
+
onNodeClick: selectNode,
|
|
1592
|
+
onToggleExpand: toggleNode,
|
|
1593
|
+
isLoading: false,
|
|
1594
|
+
folderIndexFile
|
|
1595
|
+
}
|
|
1596
|
+
) }),
|
|
1597
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentSidebar, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
|
|
1598
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-[14px] font-['Azeret_Mono'] font-semibold uppercase text-ods-text-secondary tracking-[-0.02em] leading-[1.43em]", children: sidebarLabel }),
|
|
1599
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1600
|
+
_chunkGUTS7HGAcjs.MultiLevelNavigation,
|
|
1501
1601
|
{
|
|
1502
1602
|
nodes: structure,
|
|
1503
1603
|
selectedPath,
|
|
@@ -1507,66 +1607,203 @@ function DocViewerContent({
|
|
|
1507
1607
|
isLoading: false,
|
|
1508
1608
|
folderIndexFile
|
|
1509
1609
|
}
|
|
1510
|
-
)
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
)
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
ribbonPosition: "left",
|
|
1559
|
-
ribbonColor: "var(--ods-accent)"
|
|
1560
|
-
}
|
|
1561
|
-
)
|
|
1562
|
-
] }) })
|
|
1563
|
-
]
|
|
1564
|
-
}
|
|
1565
|
-
) })
|
|
1566
|
-
] })
|
|
1610
|
+
)
|
|
1611
|
+
] }) }) })
|
|
1612
|
+
] }) }) }),
|
|
1613
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex-1 min-w-0 w-full", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
1614
|
+
"div",
|
|
1615
|
+
{
|
|
1616
|
+
className: `grid grid-cols-1 ${// "On this page" right column only makes sense for
|
|
1617
|
+
// MARKDOWN content (PDFs / Sheets / Figma / file have no
|
|
1618
|
+
// sections to navigate to). Gating the grid template on
|
|
1619
|
+
// `isMarkdownContent` also suppresses the section-skeleton
|
|
1620
|
+
// bars during embed loads — the user-reported "skeleton
|
|
1621
|
+
// shouldn't be on file pages" bug.
|
|
1622
|
+
isMarkdownContent && (showStickyNav && stickyNavSections.length > 0 || isLoadingContent || isLoadingStructure) ? "lg:grid-cols-[1fr_280px]" : ""} gap-8`,
|
|
1623
|
+
children: [
|
|
1624
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `w-full ${isMarkdownContent ? "max-w-4xl mx-auto" : ""}`, 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: "text-center py-16", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-xl text-ods-text-secondary", children: resolvedEmptyText }) }) : renderedContent }) }),
|
|
1625
|
+
isMarkdownContent && (isLoadingContent || isLoadingStructure) && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "sticky top-24", children: [
|
|
1626
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[14px] w-28 bg-ods-border rounded animate-pulse mb-5" }),
|
|
1627
|
+
/* @__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,
|
|
1628
|
+
"div",
|
|
1629
|
+
{
|
|
1630
|
+
className: `py-[13px] pl-3 border-l-2 ${i === 0 ? "border-ods-accent" : "border-transparent"}`,
|
|
1631
|
+
children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1632
|
+
"div",
|
|
1633
|
+
{
|
|
1634
|
+
className: "h-[13px] bg-ods-border rounded animate-pulse",
|
|
1635
|
+
style: { width: w }
|
|
1636
|
+
}
|
|
1637
|
+
)
|
|
1638
|
+
},
|
|
1639
|
+
i
|
|
1640
|
+
)) })
|
|
1641
|
+
] }) }),
|
|
1642
|
+
showStickyNav && content && stickyNavSections.length > 0 && !isLoadingContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "sticky top-24", children: [
|
|
1643
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "text-[14px] font-['Azeret_Mono'] font-semibold uppercase text-ods-text-secondary tracking-[-0.02em] leading-[1.43em] mb-4", children: "ON THIS PAGE" }),
|
|
1644
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1645
|
+
_chunkGUTS7HGAcjs.StickySectionNav,
|
|
1646
|
+
{
|
|
1647
|
+
sections: stickyNavSections,
|
|
1648
|
+
activeSection,
|
|
1649
|
+
onSectionClick: handleSectionClick,
|
|
1650
|
+
ribbonPosition: "left",
|
|
1651
|
+
ribbonColor: "var(--ods-accent)"
|
|
1652
|
+
}
|
|
1653
|
+
)
|
|
1654
|
+
] }) })
|
|
1655
|
+
]
|
|
1656
|
+
}
|
|
1657
|
+
) })
|
|
1567
1658
|
] })
|
|
1659
|
+
] }) }) }) })
|
|
1660
|
+
);
|
|
1661
|
+
}
|
|
1662
|
+
|
|
1663
|
+
// src/components/docs/skeletons.tsx
|
|
1664
|
+
|
|
1665
|
+
function MarkdownSkeleton() {
|
|
1666
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-7 mt-6", children: [
|
|
1667
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1668
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1669
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1670
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1671
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-3/4 animate-pulse" })
|
|
1672
|
+
] }),
|
|
1673
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1674
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1675
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1676
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1677
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-5/6 animate-pulse" })
|
|
1678
|
+
] }),
|
|
1679
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1680
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1681
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1682
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1683
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1684
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-2/3 animate-pulse" })
|
|
1685
|
+
] }),
|
|
1686
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[88px] bg-ods-card border border-ods-border rounded-lg animate-pulse" }),
|
|
1687
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-7 bg-ods-border rounded w-1/3 animate-pulse" }),
|
|
1688
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1689
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1690
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1691
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1692
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-[72%] animate-pulse" })
|
|
1693
|
+
] }),
|
|
1694
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1695
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1696
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1697
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1698
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1699
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-[58%] animate-pulse" })
|
|
1700
|
+
] }),
|
|
1701
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-7 bg-ods-border rounded w-2/5 animate-pulse" }),
|
|
1702
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1703
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1704
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1705
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-[90%] animate-pulse" })
|
|
1706
|
+
] }),
|
|
1707
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-[14px]", children: [
|
|
1708
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1709
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1710
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-full animate-pulse" }),
|
|
1711
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[16px] bg-ods-border rounded w-[70%] animate-pulse" })
|
|
1712
|
+
] }),
|
|
1713
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-[88px] bg-ods-card border border-ods-border rounded-lg animate-pulse" })
|
|
1714
|
+
] });
|
|
1715
|
+
}
|
|
1716
|
+
function EmbedSkeleton({ documentType } = {}) {
|
|
1717
|
+
if (documentType === "file") {
|
|
1718
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex flex-col items-center justify-center py-16", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "bg-ods-card border border-ods-border rounded-xl p-8 max-w-md w-full text-center space-y-4", children: [
|
|
1719
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-16 h-16 rounded mx-auto bg-ods-border animate-pulse" }),
|
|
1720
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-2", children: [
|
|
1721
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-5 w-2/3 mx-auto rounded bg-ods-border animate-pulse" }),
|
|
1722
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-4 w-1/2 mx-auto rounded bg-ods-border animate-pulse" })
|
|
1723
|
+
] }),
|
|
1724
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-10 w-full rounded bg-ods-border animate-pulse" })
|
|
1725
|
+
] }) });
|
|
1726
|
+
}
|
|
1727
|
+
const buttonCount = documentType === "pdf" ? 2 : 1;
|
|
1728
|
+
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
|
|
1729
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between", children: [
|
|
1730
|
+
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex items-center gap-2 min-w-0 flex-1", children: [
|
|
1731
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-5 h-5 shrink-0 rounded bg-ods-border animate-pulse" }),
|
|
1732
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-6 w-2/3 rounded bg-ods-border animate-pulse" })
|
|
1733
|
+
] }),
|
|
1734
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex items-center gap-2 w-full sm:w-auto", children: Array.from({ length: buttonCount }).map((_, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1735
|
+
"div",
|
|
1736
|
+
{
|
|
1737
|
+
className: "h-10 w-full sm:w-32 rounded bg-ods-border animate-pulse flex-1 sm:flex-initial"
|
|
1738
|
+
},
|
|
1739
|
+
i
|
|
1740
|
+
)) })
|
|
1741
|
+
] }),
|
|
1742
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1743
|
+
"div",
|
|
1744
|
+
{
|
|
1745
|
+
className: "w-full rounded-lg border border-ods-border bg-ods-card animate-pulse",
|
|
1746
|
+
style: { height: "calc(100vh - 250px)" }
|
|
1747
|
+
}
|
|
1748
|
+
)
|
|
1749
|
+
] });
|
|
1750
|
+
}
|
|
1751
|
+
|
|
1752
|
+
// src/components/docs/docs-hub-page.tsx
|
|
1753
|
+
|
|
1754
|
+
var DEFAULT_TITLE = "Documents";
|
|
1755
|
+
var defaultFallbackRenderer = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "text-center py-16", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: "Unsupported document type" }) });
|
|
1756
|
+
var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkF5OB2YALcjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
|
|
1757
|
+
var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkF5OB2YALcjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
|
|
1758
|
+
var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGUTS7HGAcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
|
|
1759
|
+
var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1760
|
+
_chunkF5OB2YALcjs.FileDownloadCard,
|
|
1761
|
+
{
|
|
1762
|
+
fileName: content.fileName,
|
|
1763
|
+
mimeType: content.mimeType,
|
|
1764
|
+
fileSize: content.fileSize,
|
|
1765
|
+
fileUrl: content.fileUrl
|
|
1766
|
+
}
|
|
1767
|
+
);
|
|
1768
|
+
var defaultRenderSkeleton = (documentType) => !documentType || documentType === "markdown" ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, MarkdownSkeleton, {}) : (
|
|
1769
|
+
// Forward the documentType so the embed skeleton renders the right
|
|
1770
|
+
// shape (PDF=2 buttons, sheets/figma=1 button, file=centered card).
|
|
1771
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, EmbedSkeleton, { documentType })
|
|
1772
|
+
);
|
|
1773
|
+
function DocsHubPage({
|
|
1774
|
+
title = DEFAULT_TITLE,
|
|
1775
|
+
documentTypeRenderers,
|
|
1776
|
+
fallbackRenderer = defaultFallbackRenderer,
|
|
1777
|
+
renderSkeleton = defaultRenderSkeleton,
|
|
1778
|
+
showAIChat = true,
|
|
1779
|
+
className = "min-h-screen",
|
|
1780
|
+
sidebarLabel = "DOCUMENTATION",
|
|
1781
|
+
...docViewerProps
|
|
1782
|
+
}) {
|
|
1783
|
+
const resolvedRenderers = {
|
|
1784
|
+
markdown: documentTypeRenderers.markdown,
|
|
1785
|
+
pdf: _nullishCoalesce(documentTypeRenderers.pdf, () => ( defaultPdfRenderer)),
|
|
1786
|
+
google_sheet: _nullishCoalesce(documentTypeRenderers.google_sheet, () => ( defaultGoogleSheetRenderer)),
|
|
1787
|
+
figma: _nullishCoalesce(documentTypeRenderers.figma, () => ( defaultFigmaRenderer)),
|
|
1788
|
+
file: _nullishCoalesce(documentTypeRenderers.file, () => ( defaultFileRenderer))
|
|
1789
|
+
};
|
|
1790
|
+
const renderContent = (content, handlers) => {
|
|
1791
|
+
const type = _nullishCoalesce(content.documentType, () => ( "markdown"));
|
|
1792
|
+
const renderer = _nullishCoalesce(resolvedRenderers[type], () => ( fallbackRenderer));
|
|
1793
|
+
return renderer(content, handlers);
|
|
1794
|
+
};
|
|
1795
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1796
|
+
DocViewer,
|
|
1797
|
+
{
|
|
1798
|
+
...docViewerProps,
|
|
1799
|
+
title,
|
|
1800
|
+
showAIChat,
|
|
1801
|
+
className,
|
|
1802
|
+
sidebarLabel,
|
|
1803
|
+
renderContent,
|
|
1804
|
+
renderSkeleton
|
|
1568
1805
|
}
|
|
1569
|
-
)
|
|
1806
|
+
);
|
|
1570
1807
|
}
|
|
1571
1808
|
|
|
1572
1809
|
|
|
@@ -1598,5 +1835,8 @@ function DocViewerContent({
|
|
|
1598
1835
|
|
|
1599
1836
|
|
|
1600
1837
|
|
|
1601
|
-
|
|
1602
|
-
|
|
1838
|
+
|
|
1839
|
+
|
|
1840
|
+
|
|
1841
|
+
exports.PersistentFilterControls = PersistentFilterControls; exports.PersistentSearchContainer = PersistentSearchContainer; exports.PersistentSidebar = PersistentSidebar; exports.PersistentMobileDropdown = PersistentMobileDropdown; exports.UnifiedSkeleton = UnifiedSkeleton; exports.TextSkeleton = TextSkeleton; exports.InteractiveSkeleton = InteractiveSkeleton; exports.MediaSkeleton = MediaSkeleton; exports.CardSkeleton = CardSkeleton; exports.CardSkeletonGrid = CardSkeletonGrid; exports.AnnouncementBarSkeleton = AnnouncementBarSkeleton; exports.HeroSkeleton = HeroSkeleton; exports.SearchContainerSkeleton = SearchContainerSkeleton; exports.CategorySidebarSkeleton = CategorySidebarSkeleton; exports.BreadcrumbSkeleton = BreadcrumbSkeleton; exports.ResultsHeaderSkeleton = ResultsHeaderSkeleton; exports.TwoColumnLayoutSkeleton = TwoColumnLayoutSkeleton; exports.ArticleLayoutSkeleton = ArticleLayoutSkeleton; exports.VendorDetailLayoutSkeleton = VendorDetailLayoutSkeleton; exports.StatsSectionSkeleton = StatsSectionSkeleton; exports.BlogCardGridSkeleton = BlogCardGridSkeleton; exports.VendorGridSkeleton = VendorGridSkeleton; exports.SlackCommunitySkeleton = SlackCommunitySkeleton; exports.DocNavigationProvider = DocNavigationProvider; exports.useDocNavigation = useDocNavigation; exports.useDocumentTree = useDocumentTree; exports.useScrollSpy = useScrollSpy; exports.DocViewer = DocViewer; exports.MarkdownSkeleton = MarkdownSkeleton; exports.EmbedSkeleton = EmbedSkeleton; exports.DocsHubPage = DocsHubPage;
|
|
1842
|
+
//# sourceMappingURL=chunk-6C526VNN.cjs.map
|