@takazudo/zudo-doc 0.2.21 → 1.0.0
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/bin/gen-z-index.mjs +164 -0
- package/bin/tags-audit-runner.ts +126 -0
- package/bin/tags-audit.mjs +64 -0
- package/bin/zudo-doc.mjs +83 -0
- package/dist/ai-chat-modal/index.d.ts +8 -0
- package/dist/ai-chat-modal/index.js +243 -0
- package/dist/body-foot-util/body-foot-util-area.d.ts +4 -8
- package/dist/body-foot-util/edit-link.d.ts +4 -8
- package/dist/body-foot-util/index.d.ts +4 -3
- package/dist/breadcrumb/breadcrumb.d.ts +5 -9
- package/dist/breadcrumb/find-path.d.ts +2 -5
- package/dist/breadcrumb/index.d.ts +4 -4
- package/dist/breadcrumb/types.d.ts +3 -5
- package/dist/category-nav/index.d.ts +86 -0
- package/dist/category-nav/index.js +44 -0
- package/dist/category-tree-nav/index.d.ts +65 -0
- package/dist/category-tree-nav/index.js +24 -0
- package/dist/code-group/index.d.ts +10 -0
- package/dist/code-group/index.js +37 -0
- package/dist/code-syntax/code-block-enhancer-script.d.ts +1 -3
- package/dist/code-syntax/code-block-enhancer.d.ts +3 -6
- package/dist/code-syntax/index.d.ts +9 -8
- package/dist/code-syntax/mermaid-init-script.d.ts +3 -5
- package/dist/code-syntax/mermaid-init.d.ts +4 -7
- package/dist/code-syntax/tabs-init-script.d.ts +1 -3
- package/dist/code-syntax/tabs-init.d.ts +3 -6
- package/dist/code-syntax/tabs.d.ts +4 -7
- package/dist/color-scheme-utils.d.ts +125 -0
- package/dist/color-scheme-utils.js +151 -0
- package/dist/compose-meta-title/index.d.ts +7 -0
- package/dist/compose-meta-title/index.js +10 -0
- package/dist/content/component-map.d.ts +13 -17
- package/dist/content/content-blockquote.d.ts +3 -6
- package/dist/content/content-code.d.ts +3 -6
- package/dist/content/content-code.js +1 -1
- package/dist/content/content-link.d.ts +3 -6
- package/dist/content/content-link.js +1 -1
- package/dist/content/content-ol.d.ts +3 -6
- package/dist/content/content-paragraph.d.ts +3 -6
- package/dist/content/content-strong.d.ts +3 -6
- package/dist/content/content-table.d.ts +3 -6
- package/dist/content/content-ul.d.ts +3 -6
- package/dist/content/heading-h2.d.ts +3 -6
- package/dist/content/heading-h3.d.ts +3 -6
- package/dist/content/heading-h4.d.ts +3 -6
- package/dist/content/index.d.ts +29 -13
- package/dist/content-admonition/index.d.ts +15 -0
- package/dist/content-admonition/index.js +14 -0
- package/dist/design-token-panel-bootstrap.d.ts +38 -0
- package/dist/design-token-panel-bootstrap.js +29 -0
- package/dist/desktop-sidebar-toggle-island/index.d.ts +5 -0
- package/dist/desktop-sidebar-toggle-island/index.js +62 -0
- package/dist/details/details.d.ts +3 -7
- package/dist/details/index.d.ts +2 -2
- package/dist/doc-body-end/index.d.ts +21 -0
- package/dist/doc-body-end/index.js +15 -0
- package/dist/doc-content-header/index.d.ts +69 -0
- package/dist/doc-content-header/index.js +49 -0
- package/dist/doc-history/index.d.ts +10 -0
- package/dist/doc-history/index.js +407 -0
- package/dist/doc-history-area/index.d.ts +84 -0
- package/dist/doc-history-area/index.js +76 -0
- package/dist/doc-metainfo-area/index.d.ts +46 -0
- package/dist/doc-metainfo-area/index.js +41 -0
- package/dist/doc-page-props/index.d.ts +93 -0
- package/dist/doc-page-props/index.js +0 -0
- package/dist/doc-page-renderer/index.d.ts +128 -0
- package/dist/doc-page-renderer/index.js +103 -0
- package/dist/doc-page-shell/index.d.ts +136 -0
- package/dist/doc-page-shell/index.js +127 -0
- package/dist/doc-pager/index.d.ts +25 -0
- package/dist/doc-pager/index.js +41 -0
- package/dist/doc-route-entries/index.d.ts +125 -0
- package/dist/doc-route-entries/index.js +76 -0
- package/dist/doc-route-paths/index.d.ts +54 -0
- package/dist/doc-route-paths/index.js +61 -0
- package/dist/doc-tags-area/index.d.ts +38 -0
- package/dist/doc-tags-area/index.js +30 -0
- package/dist/doclayout/anchors.d.ts +7 -9
- package/dist/doclayout/doc-layout-with-defaults.d.ts +16 -12
- package/dist/doclayout/doc-layout.d.ts +5 -9
- package/dist/doclayout/index.d.ts +6 -6
- package/dist/eject/index.d.ts +33 -0
- package/dist/eject/index.js +229 -0
- package/dist/extract-headings/index.d.ts +43 -0
- package/dist/extract-headings/index.js +111 -0
- package/dist/factory-context/index.d.ts +80 -0
- package/dist/factory-context/index.js +0 -0
- package/dist/features.css +882 -0
- package/dist/footer/footer.d.ts +4 -8
- package/dist/footer/index.d.ts +13 -3
- package/dist/footer/types.d.ts +4 -6
- package/dist/footer-with-defaults/index.d.ts +63 -0
- package/dist/footer-with-defaults/index.js +128 -0
- package/dist/frontmatter-preview-data/index.d.ts +26 -0
- package/dist/frontmatter-preview-data/index.js +23 -0
- package/dist/github-helpers/index.d.ts +17 -0
- package/dist/github-helpers/index.js +16 -0
- package/dist/head/doc-head.d.ts +3 -6
- package/dist/head/index.d.ts +9 -5
- package/dist/head/og-tags.d.ts +4 -7
- package/dist/head/twitter-card.d.ts +3 -6
- package/dist/head/types.d.ts +1 -3
- package/dist/head-with-defaults/index.d.ts +49 -0
- package/dist/head-with-defaults/index.js +62 -0
- package/dist/header/header.d.ts +6 -10
- package/dist/header/index.d.ts +16 -6
- package/dist/header/nav-active.d.ts +5 -7
- package/dist/header/nav-overflow-script.d.ts +1 -3
- package/dist/header/right-items.d.ts +3 -6
- package/dist/header/types.d.ts +10 -12
- package/dist/header-with-defaults/index.d.ts +77 -0
- package/dist/header-with-defaults/index.js +163 -0
- package/dist/html-preview-wrapper/dedent.d.ts +1 -3
- package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -7
- package/dist/html-preview-wrapper/html-preview-wrapper.d.ts +6 -10
- package/dist/html-preview-wrapper/html-preview.d.ts +5 -9
- package/dist/html-preview-wrapper/index.d.ts +8 -5
- package/dist/html-preview-wrapper/preflight.d.ts +1 -3
- package/dist/html-preview-wrapper/preview-base.d.ts +4 -8
- package/dist/i18n-version/index.d.ts +7 -5
- package/dist/i18n-version/language-switcher.d.ts +5 -8
- package/dist/i18n-version/types.d.ts +3 -5
- package/dist/i18n-version/version-banner.d.ts +4 -8
- package/dist/i18n-version/version-switcher.d.ts +7 -10
- package/dist/icons/index.d.ts +9 -13
- package/dist/image-enlarge/index.d.ts +13 -0
- package/dist/image-enlarge/index.js +176 -0
- package/dist/index.d.ts +26 -2
- package/dist/inline-version-switcher/index.d.ts +31 -0
- package/dist/inline-version-switcher/index.js +44 -0
- package/dist/integrations/claude-resources/escape-for-mdx.d.ts +1 -3
- package/dist/integrations/claude-resources/generate.d.ts +2 -4
- package/dist/integrations/claude-resources/index.d.ts +7 -10
- package/dist/integrations/doc-history/index.d.ts +21 -24
- package/dist/integrations/doc-history/pre-build.d.ts +7 -9
- package/dist/integrations/llms-txt/dev-middleware.d.ts +7 -11
- package/dist/integrations/llms-txt/emit.d.ts +2 -7
- package/dist/integrations/llms-txt/generate.d.ts +3 -8
- package/dist/integrations/llms-txt/index.d.ts +33 -8
- package/dist/integrations/llms-txt/load.d.ts +3 -7
- package/dist/integrations/llms-txt/strip.d.ts +2 -6
- package/dist/integrations/llms-txt/types.d.ts +9 -13
- package/dist/integrations/search-index/build-emitter.d.ts +4 -7
- package/dist/integrations/search-index/collect.d.ts +2 -5
- package/dist/integrations/search-index/dev-middleware.d.ts +5 -8
- package/dist/integrations/search-index/index.d.ts +7 -5
- package/dist/integrations/search-index/types.d.ts +5 -7
- package/dist/island-types/index.d.ts +44 -0
- package/dist/island-types/index.js +12 -0
- package/dist/locale-merge/index.d.ts +114 -0
- package/dist/locale-merge/index.js +27 -0
- package/dist/math-block/index.d.ts +18 -0
- package/dist/math-block/index.js +29 -0
- package/dist/md-utils/index.d.ts +6 -8
- package/dist/md-utils/index.js +2 -1
- package/dist/mdx-components/index.d.ts +46 -0
- package/dist/mdx-components/index.js +161 -0
- package/dist/mermaid-enlarge/index.d.ts +11 -0
- package/dist/mermaid-enlarge/index.js +290 -0
- package/dist/metainfo/doc-metainfo.d.ts +5 -9
- package/dist/metainfo/doc-tags.d.ts +7 -11
- package/dist/metainfo/frontmatter-preview.d.ts +8 -12
- package/dist/metainfo/index.d.ts +6 -4
- package/dist/nav-data-prep/index.d.ts +72 -0
- package/dist/nav-data-prep/index.js +34 -0
- package/dist/nav-indexing/category-nav.d.ts +4 -8
- package/dist/nav-indexing/category-tree-nav.d.ts +4 -8
- package/dist/nav-indexing/doc-card-grid.d.ts +4 -8
- package/dist/nav-indexing/docs-sitemap.d.ts +4 -8
- package/dist/nav-indexing/index.d.ts +37 -10
- package/dist/nav-indexing/nav-card-grid.d.ts +4 -8
- package/dist/nav-indexing/site-tree-nav-demo.d.ts +4 -8
- package/dist/nav-indexing/tag-nav.d.ts +6 -10
- package/dist/nav-indexing/types.d.ts +6 -8
- package/dist/nav-indexing/versions-page-content.d.ts +4 -8
- package/dist/nav-scope/index.d.ts +41 -0
- package/dist/nav-scope/index.js +41 -0
- package/dist/nav-source-cache/index.d.ts +13 -0
- package/dist/nav-source-cache/index.js +28 -0
- package/dist/nav-source-docs/index.d.ts +169 -0
- package/dist/nav-source-docs/index.js +123 -0
- package/dist/page-loading/index.d.ts +1 -2
- package/dist/page-loading/page-loading-overlay.d.ts +4 -8
- package/dist/plugins/claude-resources.d.ts +3 -0
- package/dist/plugins/claude-resources.js +27 -0
- package/dist/plugins/connect-adapter.d.ts +31 -0
- package/dist/plugins/connect-adapter.js +78 -0
- package/dist/plugins/doc-history.d.ts +3 -0
- package/dist/plugins/doc-history.js +54 -0
- package/dist/plugins/llms-txt.d.ts +3 -0
- package/dist/plugins/llms-txt.js +48 -0
- package/dist/plugins/plugin-utils.d.ts +17 -0
- package/dist/plugins/plugin-utils.js +11 -0
- package/dist/plugins/routes.d.ts +2 -0
- package/dist/plugins/routes.js +100 -0
- package/dist/plugins/search-index.d.ts +3 -0
- package/dist/plugins/search-index.js +24 -0
- package/dist/preset.d.ts +198 -0
- package/dist/preset.js +185 -0
- package/dist/render-markdown/index.d.ts +5 -0
- package/dist/render-markdown/index.js +115 -0
- package/dist/robots.d.ts +36 -0
- package/dist/robots.js +17 -0
- package/dist/route-enumerators/index.d.ts +204 -0
- package/dist/route-enumerators/index.js +156 -0
- package/dist/routes/404.d.ts +7 -0
- package/dist/routes/404.js +47 -0
- package/dist/routes/_chrome.d.ts +32 -0
- package/dist/routes/_chrome.js +365 -0
- package/dist/routes/_context.d.ts +56 -0
- package/dist/routes/_context.js +222 -0
- package/dist/routes/_docs-helpers.d.ts +43 -0
- package/dist/routes/_docs-helpers.js +173 -0
- package/dist/routes/_virtual.d.js +0 -0
- package/dist/routes/api-ai-chat.d.ts +5 -0
- package/dist/routes/api-ai-chat.js +24 -0
- package/dist/routes/docs-slug.d.ts +21 -0
- package/dist/routes/docs-slug.js +26 -0
- package/dist/routes/docs-tags-index.d.ts +7 -0
- package/dist/routes/docs-tags-index.js +11 -0
- package/dist/routes/docs-tags-tag.d.ts +23 -0
- package/dist/routes/docs-tags-tag.js +19 -0
- package/dist/routes/docs-versions.d.ts +7 -0
- package/dist/routes/docs-versions.js +11 -0
- package/dist/routes/index.d.ts +7 -0
- package/dist/routes/index.js +117 -0
- package/dist/routes/locale-docs-slug.d.ts +27 -0
- package/dist/routes/locale-docs-slug.js +40 -0
- package/dist/routes/locale-docs-tags-index.d.ts +18 -0
- package/dist/routes/locale-docs-tags-index.js +15 -0
- package/dist/routes/locale-docs-tags-tag.d.ts +25 -0
- package/dist/routes/locale-docs-tags-tag.js +22 -0
- package/dist/routes/locale-docs-versions.d.ts +18 -0
- package/dist/routes/locale-docs-versions.js +15 -0
- package/dist/routes/locale-index.d.ts +24 -0
- package/dist/routes/locale-index.js +132 -0
- package/dist/routes/robots.txt.d.ts +3 -0
- package/dist/routes/robots.txt.js +8 -0
- package/dist/routes/sitemap.xml.d.ts +5 -0
- package/dist/routes/sitemap.xml.js +31 -0
- package/dist/routes/v-docs-slug.d.ts +27 -0
- package/dist/routes/v-docs-slug.js +34 -0
- package/dist/routes/v-locale-docs-slug.d.ts +31 -0
- package/dist/routes/v-locale-docs-slug.js +50 -0
- package/dist/safelist.css +1 -1
- package/dist/search-widget/index.d.ts +38 -0
- package/dist/search-widget/index.js +169 -0
- package/dist/search-widget-script/index.d.ts +18 -0
- package/dist/search-widget-script/index.js +465 -0
- package/dist/settings.d.ts +270 -0
- package/dist/settings.js +0 -0
- package/dist/sidebar/index.d.ts +21 -3
- package/dist/sidebar/sidebar.d.ts +5 -9
- package/dist/sidebar/types.d.ts +4 -6
- package/dist/sidebar-prepaint/index.d.ts +21 -0
- package/dist/sidebar-prepaint/index.js +23 -0
- package/dist/sidebar-resizer/index.d.ts +2 -6
- package/dist/sidebar-resizer/sidebar-resizer-init.d.ts +6 -10
- package/dist/sidebar-toggle-island/index.d.ts +13 -0
- package/dist/sidebar-toggle-island/index.js +122 -0
- package/dist/sidebar-tree/build-tree.d.ts +4 -8
- package/dist/sidebar-tree/category-meta.d.ts +3 -6
- package/dist/sidebar-tree/index.d.ts +18 -3
- package/dist/sidebar-tree/types.d.ts +6 -8
- package/dist/sidebar-tree-island/index.d.ts +13 -0
- package/dist/sidebar-tree-island/index.js +454 -0
- package/dist/sidebar-utils/index.d.ts +64 -0
- package/dist/sidebar-utils/index.js +88 -0
- package/dist/sidebar-with-defaults/index.d.ts +38 -0
- package/dist/sidebar-with-defaults/index.js +45 -0
- package/dist/site-tree-nav/index.d.ts +71 -0
- package/dist/site-tree-nav/index.js +36 -0
- package/dist/site-tree-nav-island/index.d.ts +11 -0
- package/dist/site-tree-nav-island/index.js +176 -0
- package/dist/slug/index.d.ts +4 -0
- package/dist/slug/index.js +19 -0
- package/dist/smart-break/index.d.ts +55 -0
- package/dist/{toc/smart-break.js → smart-break/index.js} +30 -3
- package/dist/tab-item/index.d.ts +2 -2
- package/dist/tab-item/tab-item.d.ts +6 -7
- package/dist/tag-helpers/index.d.ts +40 -0
- package/dist/tag-helpers/index.js +54 -0
- package/dist/tag-pages/index.d.ts +114 -0
- package/dist/tag-pages/index.js +146 -0
- package/dist/tags-audit.d.ts +107 -0
- package/dist/tags-audit.js +321 -0
- package/dist/theme/color-scheme-provider.d.ts +4 -8
- package/dist/theme/color-tweak-export-modal.d.ts +4 -7
- package/dist/theme/design-token-serde.d.ts +14 -17
- package/dist/theme/design-token-types.d.ts +4 -6
- package/dist/theme/iframe-bridge.d.ts +12 -14
- package/dist/theme/index.d.ts +7 -9
- package/dist/theme/theme-toggle.d.ts +3 -8
- package/dist/theme-toggle/color-scheme-sync.d.ts +5 -7
- package/dist/theme-toggle/index.d.ts +4 -8
- package/dist/toc/cx.d.ts +2 -3
- package/dist/toc/index.d.ts +8 -6
- package/dist/toc/mobile-toc.d.ts +5 -9
- package/dist/toc/mobile-toc.js +1 -1
- package/dist/toc/toc-title.d.ts +1 -3
- package/dist/toc/toc.d.ts +5 -9
- package/dist/toc/toc.js +1 -1
- package/dist/toc/types.d.ts +1 -3
- package/dist/toc/use-active-heading.d.ts +4 -7
- package/dist/transitions/index.d.ts +1 -1
- package/dist/transitions/page-events.d.ts +4 -6
- package/dist/tree-nav-shared/index.d.ts +22 -0
- package/dist/tree-nav-shared/index.js +66 -0
- package/dist/url-helpers/index.d.ts +37 -0
- package/dist/url-helpers/index.js +106 -0
- package/dist/url-normalizer/index.d.ts +39 -1
- package/dist/url-normalizer/normalize.d.ts +3 -5
- package/dist/use-modal-dialog/index.d.ts +70 -0
- package/dist/use-modal-dialog/index.js +73 -0
- package/dist/versions-page/index.d.ts +55 -0
- package/dist/versions-page/index.js +73 -0
- package/eject/breadcrumb/breadcrumb.tsx +194 -0
- package/eject/breadcrumb/find-path.ts +26 -0
- package/eject/breadcrumb/index.ts +4 -0
- package/eject/breadcrumb/types.ts +32 -0
- package/eject/code-group/index.tsx +78 -0
- package/eject/content-admonition/index.tsx +50 -0
- package/eject/details/details.tsx +34 -0
- package/eject/details/index.ts +4 -0
- package/eject/doc-pager/index.tsx +91 -0
- package/eject/footer/footer.tsx +167 -0
- package/eject/footer/index.ts +19 -0
- package/eject/footer/types.ts +60 -0
- package/eject/header/header.tsx +725 -0
- package/eject/header/index.ts +36 -0
- package/eject/header/nav-active.ts +122 -0
- package/eject/header/nav-overflow-script.ts +302 -0
- package/eject/header/right-items.ts +78 -0
- package/eject/header/types.ts +69 -0
- package/eject/page-loading/index.ts +10 -0
- package/eject/page-loading/page-loading-overlay.tsx +103 -0
- package/eject/sidebar/index.ts +27 -0
- package/eject/sidebar/sidebar.tsx +137 -0
- package/eject/sidebar/types.ts +73 -0
- package/eject/tab-item/index.ts +7 -0
- package/eject/tab-item/tab-item.tsx +70 -0
- package/eject/theme-toggle/color-scheme-sync.ts +73 -0
- package/eject/theme-toggle/index.tsx +120 -0
- package/eject/toc/cx.ts +38 -0
- package/eject/toc/index.ts +11 -0
- package/eject/toc/mobile-toc.tsx +133 -0
- package/eject/toc/toc-title.ts +33 -0
- package/eject/toc/toc.tsx +119 -0
- package/eject/toc/types.ts +14 -0
- package/eject/toc/use-active-heading.ts +162 -0
- package/package.json +371 -11
- package/routes-src/404.tsx +49 -0
- package/routes-src/_chrome.tsx +470 -0
- package/routes-src/_context.ts +314 -0
- package/routes-src/_docs-helpers.ts +284 -0
- package/routes-src/_virtual.d.ts +15 -0
- package/routes-src/api-ai-chat.tsx +46 -0
- package/routes-src/docs-slug.tsx +43 -0
- package/routes-src/docs-tags-index.tsx +14 -0
- package/routes-src/docs-tags-tag.tsx +29 -0
- package/routes-src/docs-versions.tsx +15 -0
- package/routes-src/index.tsx +134 -0
- package/routes-src/locale-docs-slug.tsx +69 -0
- package/routes-src/locale-docs-tags-index.tsx +23 -0
- package/routes-src/locale-docs-tags-tag.tsx +39 -0
- package/routes-src/locale-docs-versions.tsx +23 -0
- package/routes-src/locale-index.tsx +150 -0
- package/routes-src/robots.txt.tsx +13 -0
- package/routes-src/sitemap.xml.tsx +48 -0
- package/routes-src/v-docs-slug.tsx +64 -0
- package/routes-src/v-locale-docs-slug.tsx +85 -0
- package/dist/toc/smart-break.d.ts +0 -27
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import type { NavSourceDocs } from "../nav-source-docs/index.js";
|
|
2
|
+
import type { DocPageEntry, DocNavNode } from "../doc-page-props/index.js";
|
|
3
|
+
export type { DocPageEntry, DocNavNode, NavSourceDocs };
|
|
4
|
+
/**
|
|
5
|
+
* Minimal docs entry shape needed for tag enumeration (no Content/module_specifier).
|
|
6
|
+
*/
|
|
7
|
+
export interface DocsEntryForTags {
|
|
8
|
+
id: string;
|
|
9
|
+
data: {
|
|
10
|
+
slug?: string;
|
|
11
|
+
draft?: boolean;
|
|
12
|
+
unlisted?: boolean;
|
|
13
|
+
category_no_page?: boolean;
|
|
14
|
+
tags?: string[];
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Minimal version config shape needed for route enumeration.
|
|
20
|
+
*/
|
|
21
|
+
export interface VersionConfigForEnum {
|
|
22
|
+
slug: string;
|
|
23
|
+
docsDir?: string;
|
|
24
|
+
locales?: Record<string, {
|
|
25
|
+
dir?: string;
|
|
26
|
+
}>;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Minimal tag info shape — only the keys the tag URL enumerator needs.
|
|
30
|
+
*/
|
|
31
|
+
export interface TagInfoForEnum {
|
|
32
|
+
tag: string;
|
|
33
|
+
count: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Injected context for `createRouteEnumerators`.
|
|
37
|
+
*
|
|
38
|
+
* All host-specific singletons and utilities are passed in so the package
|
|
39
|
+
* factory never imports `@/` aliases.
|
|
40
|
+
*/
|
|
41
|
+
export interface RouteEnumeratorsContext {
|
|
42
|
+
/** Default locale code. Host passes `defaultLocale` from `@/config/i18n`. */
|
|
43
|
+
defaultLocale: string;
|
|
44
|
+
/**
|
|
45
|
+
* Getter for all non-default locale codes.
|
|
46
|
+
* Host passes `() => Object.keys(settings.locales)`.
|
|
47
|
+
* Called per invocation so mutations to settings.locales are picked up.
|
|
48
|
+
*/
|
|
49
|
+
getLocaleKeys: () => readonly string[];
|
|
50
|
+
/**
|
|
51
|
+
* Getter for the configured versions list (or false/undefined).
|
|
52
|
+
* Host passes `() => settings.versions`.
|
|
53
|
+
* Called per invocation so mutations to settings.versions are picked up.
|
|
54
|
+
*/
|
|
55
|
+
getVersions: () => VersionConfigForEnum[] | false | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Getter for whether tag pages are enabled.
|
|
58
|
+
* Host passes `() => settings.docTags`.
|
|
59
|
+
*/
|
|
60
|
+
getDocTags: () => boolean | undefined;
|
|
61
|
+
/** `docsUrl(slug, lang)` from `@/utils/base` (resolved with settings). */
|
|
62
|
+
docsUrl: (slug: string, lang?: string) => string;
|
|
63
|
+
/** `versionedDocsUrl(slug, versionSlug, lang)` from `@/utils/base`. */
|
|
64
|
+
versionedDocsUrl: (slug: string, versionSlug: string, lang?: string) => string;
|
|
65
|
+
/** `withBase(path)` from `@/utils/base`. */
|
|
66
|
+
withBase: (path: string) => string;
|
|
67
|
+
/**
|
|
68
|
+
* Load docs from a named collection.
|
|
69
|
+
* Host passes `loadDocs` from `pages/_data.ts`.
|
|
70
|
+
*/
|
|
71
|
+
loadDocs: (collectionName: string) => DocsEntryForTags[];
|
|
72
|
+
/**
|
|
73
|
+
* Returns true for paths that are only shown in the default locale.
|
|
74
|
+
* Host passes `isDefaultLocaleOnlyPath` from `@/utils/base`.
|
|
75
|
+
*/
|
|
76
|
+
isDefaultLocaleOnlyPath: (path: string) => boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Collect tags from a docs array.
|
|
79
|
+
* Host passes `collectTags` from `@/utils/tags`.
|
|
80
|
+
*/
|
|
81
|
+
collectTags: (docs: DocsEntryForTags[], slugFn: (id: string, data: {
|
|
82
|
+
slug?: string;
|
|
83
|
+
}) => string) => Map<string, TagInfoForEnum>;
|
|
84
|
+
/**
|
|
85
|
+
* Convert a content entry slug to a canonical route slug.
|
|
86
|
+
* Host passes `toRouteSlug` from `@/utils/slug`.
|
|
87
|
+
*/
|
|
88
|
+
toRouteSlug: (id: string) => string;
|
|
89
|
+
/**
|
|
90
|
+
* Build the nav tree for a locale.
|
|
91
|
+
* Host passes `buildNavTree` from `@/utils/docs`.
|
|
92
|
+
*/
|
|
93
|
+
buildNavTree: (docs: DocPageEntry[], locale: string, categoryMeta: Map<string, unknown>) => DocNavNode[];
|
|
94
|
+
/**
|
|
95
|
+
* Collect auto-generated index nodes.
|
|
96
|
+
* Host passes `collectAutoIndexNodes` from `@/utils/docs`.
|
|
97
|
+
*/
|
|
98
|
+
collectAutoIndexNodes: (tree: DocNavNode[]) => DocNavNode[];
|
|
99
|
+
/**
|
|
100
|
+
* Resolve the identity-stable nav source for an EN/locale context.
|
|
101
|
+
* Host passes `resolveNavSource` from `pages/lib/_nav-source-docs.ts`.
|
|
102
|
+
*/
|
|
103
|
+
resolveNavSource: (lang: string, currentVersion: string | undefined, options?: {
|
|
104
|
+
applyDefaultLocaleOnlyFilter?: boolean;
|
|
105
|
+
keepUnlisted?: boolean;
|
|
106
|
+
}) => NavSourceDocs;
|
|
107
|
+
/**
|
|
108
|
+
* Resolve the identity-stable nav source for a versioned non-default-locale
|
|
109
|
+
* context.
|
|
110
|
+
* Host passes `resolveVersionedLocaleSource` from `pages/lib/_nav-source-docs.ts`.
|
|
111
|
+
*/
|
|
112
|
+
resolveVersionedLocaleSource: (versionSlug: string, versionDocsDir: string | undefined, lang: string, localeDir: string | undefined, options?: {
|
|
113
|
+
applyDefaultLocaleOnlyFilter?: boolean;
|
|
114
|
+
keepUnlisted?: boolean;
|
|
115
|
+
}) => NavSourceDocs;
|
|
116
|
+
/**
|
|
117
|
+
* Merge locale docs with base-locale fallbacks.
|
|
118
|
+
* Host passes `mergeLocaleDocs` from `pages/lib/locale-merge.ts`.
|
|
119
|
+
*/
|
|
120
|
+
mergeLocaleDocs: (options: {
|
|
121
|
+
baseDocs: DocsEntryForTags[];
|
|
122
|
+
localeDocs: DocsEntryForTags[];
|
|
123
|
+
applyDefaultLocaleOnlyFilter?: boolean;
|
|
124
|
+
keepUnlisted?: boolean;
|
|
125
|
+
isDefaultLocaleOnlyPath?: (path: string) => boolean;
|
|
126
|
+
}) => {
|
|
127
|
+
docs: DocsEntryForTags[];
|
|
128
|
+
localeSlugSet: ReadonlySet<string>;
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
export interface RouteEnumeratorsAPI {
|
|
132
|
+
/**
|
|
133
|
+
* Enumerate all doc page URLs for a locale.
|
|
134
|
+
*
|
|
135
|
+
* For the default locale: loads the "docs" collection directly.
|
|
136
|
+
* For non-default locales: locale-first merge with EN fallback, with
|
|
137
|
+
* default-locale-only paths excluded. A nav-tree pass adds auto-generated
|
|
138
|
+
* category index pages.
|
|
139
|
+
*/
|
|
140
|
+
enumerateDocsRoutes: (locale: string) => string[];
|
|
141
|
+
/**
|
|
142
|
+
* Enumerate tag-index and per-tag URLs for a locale.
|
|
143
|
+
*
|
|
144
|
+
* Returns `/docs/tags/` and `/docs/tags/{tag}/` for each unique tag.
|
|
145
|
+
*/
|
|
146
|
+
enumerateTagsRoutes: (locale: string) => string[];
|
|
147
|
+
/**
|
|
148
|
+
* Enumerate doc URLs for a single (version, locale) combination.
|
|
149
|
+
*
|
|
150
|
+
* For the default locale: loads the versioned EN collection.
|
|
151
|
+
* For non-default locales: locale-first merge over the version's EN base.
|
|
152
|
+
*/
|
|
153
|
+
enumerateVersionedRoutes: (version: VersionConfigForEnum, locale: string) => string[];
|
|
154
|
+
/**
|
|
155
|
+
* Compose all route enumerators into a deduped Map<url, lastmod>.
|
|
156
|
+
*
|
|
157
|
+
* Covers site root, default-locale docs + tags, per-locale docs + tags,
|
|
158
|
+
* versioned EN docs, and versioned locale docs.
|
|
159
|
+
*/
|
|
160
|
+
enumerateAllRoutes: () => Map<string, string>;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Create the route-enumeration functions bound to the host's injected context.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* // pages/lib/route-enumerators.ts (thin stub)
|
|
168
|
+
* import { createRouteEnumerators } from "@takazudo/zudo-doc/route-enumerators";
|
|
169
|
+
* import { settings } from "@/config/settings";
|
|
170
|
+
* import { defaultLocale } from "@/config/i18n";
|
|
171
|
+
* import { docsUrl, versionedDocsUrl, withBase, isDefaultLocaleOnlyPath } from "@/utils/base";
|
|
172
|
+
* import { buildNavTree, collectAutoIndexNodes } from "@/utils/docs";
|
|
173
|
+
* import { collectTags } from "@/utils/tags";
|
|
174
|
+
* import { toRouteSlug } from "@/utils/slug";
|
|
175
|
+
* import { loadDocs } from "../_data";
|
|
176
|
+
* import { resolveNavSource, resolveVersionedLocaleSource } from "./_nav-source-docs";
|
|
177
|
+
* import { mergeLocaleDocs } from "./locale-merge";
|
|
178
|
+
*
|
|
179
|
+
* export const {
|
|
180
|
+
* enumerateDocsRoutes,
|
|
181
|
+
* enumerateTagsRoutes,
|
|
182
|
+
* enumerateVersionedRoutes,
|
|
183
|
+
* enumerateAllRoutes,
|
|
184
|
+
* } = createRouteEnumerators({
|
|
185
|
+
* defaultLocale,
|
|
186
|
+
* getLocaleKeys: () => Object.keys(settings.locales),
|
|
187
|
+
* getVersions: () => settings.versions,
|
|
188
|
+
* getDocTags: () => settings.docTags,
|
|
189
|
+
* docsUrl,
|
|
190
|
+
* versionedDocsUrl,
|
|
191
|
+
* withBase,
|
|
192
|
+
* loadDocs,
|
|
193
|
+
* isDefaultLocaleOnlyPath,
|
|
194
|
+
* collectTags,
|
|
195
|
+
* toRouteSlug,
|
|
196
|
+
* buildNavTree,
|
|
197
|
+
* collectAutoIndexNodes,
|
|
198
|
+
* resolveNavSource,
|
|
199
|
+
* resolveVersionedLocaleSource,
|
|
200
|
+
* mergeLocaleDocs,
|
|
201
|
+
* });
|
|
202
|
+
* ```
|
|
203
|
+
*/
|
|
204
|
+
export declare function createRouteEnumerators(ctx: RouteEnumeratorsContext): RouteEnumeratorsAPI;
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
function createRouteEnumerators(ctx) {
|
|
2
|
+
const {
|
|
3
|
+
defaultLocale,
|
|
4
|
+
getLocaleKeys,
|
|
5
|
+
getVersions,
|
|
6
|
+
getDocTags,
|
|
7
|
+
docsUrl,
|
|
8
|
+
versionedDocsUrl,
|
|
9
|
+
withBase,
|
|
10
|
+
loadDocs,
|
|
11
|
+
isDefaultLocaleOnlyPath,
|
|
12
|
+
collectTags,
|
|
13
|
+
toRouteSlug,
|
|
14
|
+
buildNavTree,
|
|
15
|
+
collectAutoIndexNodes,
|
|
16
|
+
resolveNavSource,
|
|
17
|
+
resolveVersionedLocaleSource,
|
|
18
|
+
mergeLocaleDocs
|
|
19
|
+
} = ctx;
|
|
20
|
+
function enumerateDocsRoutes(locale) {
|
|
21
|
+
const urls = [];
|
|
22
|
+
const { docs: allDocs, navDocs, categoryMeta } = resolveNavSource(
|
|
23
|
+
locale,
|
|
24
|
+
void 0,
|
|
25
|
+
{ applyDefaultLocaleOnlyFilter: true, keepUnlisted: true }
|
|
26
|
+
);
|
|
27
|
+
const tree = buildNavTree(navDocs, locale, categoryMeta);
|
|
28
|
+
for (const doc of allDocs) {
|
|
29
|
+
if (doc.data.category_no_page === true) continue;
|
|
30
|
+
urls.push(docsUrl(doc.data.slug ?? toRouteSlug(doc.id), locale));
|
|
31
|
+
}
|
|
32
|
+
for (const node of collectAutoIndexNodes(tree)) {
|
|
33
|
+
urls.push(docsUrl(node.slug, locale));
|
|
34
|
+
}
|
|
35
|
+
return [...new Set(urls)];
|
|
36
|
+
}
|
|
37
|
+
function enumerateTagsRoutes(locale) {
|
|
38
|
+
if (!getDocTags()) return [];
|
|
39
|
+
const urls = [];
|
|
40
|
+
const tagsBase = locale === defaultLocale ? "/docs/tags" : `/${locale}/docs/tags`;
|
|
41
|
+
urls.push(withBase(tagsBase));
|
|
42
|
+
let docs;
|
|
43
|
+
if (locale === defaultLocale) {
|
|
44
|
+
docs = loadDocs("docs").filter(
|
|
45
|
+
(d) => !d.data.unlisted && !d.data.draft && !d.data.category_no_page
|
|
46
|
+
);
|
|
47
|
+
} else {
|
|
48
|
+
const result = mergeLocaleDocs({
|
|
49
|
+
baseDocs: loadDocs("docs").filter((d) => !d.data.draft),
|
|
50
|
+
localeDocs: loadDocs(`docs-${locale}`).filter((d) => !d.data.draft),
|
|
51
|
+
applyDefaultLocaleOnlyFilter: true,
|
|
52
|
+
isDefaultLocaleOnlyPath
|
|
53
|
+
});
|
|
54
|
+
docs = result.docs.filter((d) => !d.data.category_no_page);
|
|
55
|
+
}
|
|
56
|
+
const tagMap = collectTags(docs, (id, data) => data.slug ?? toRouteSlug(id));
|
|
57
|
+
for (const tag of tagMap.keys()) {
|
|
58
|
+
const encoded = encodeURIComponent(tag);
|
|
59
|
+
const tagPath = locale === defaultLocale ? `/docs/tags/${encoded}` : `/${locale}/docs/tags/${encoded}`;
|
|
60
|
+
urls.push(withBase(tagPath));
|
|
61
|
+
}
|
|
62
|
+
return urls;
|
|
63
|
+
}
|
|
64
|
+
function enumerateVersionedRoutes(version, locale) {
|
|
65
|
+
const urls = [];
|
|
66
|
+
if (locale === defaultLocale) {
|
|
67
|
+
const { docs: allDocs, navDocs, categoryMeta } = resolveNavSource(
|
|
68
|
+
defaultLocale,
|
|
69
|
+
version.slug
|
|
70
|
+
);
|
|
71
|
+
const tree = buildNavTree(navDocs, defaultLocale, categoryMeta);
|
|
72
|
+
for (const doc of allDocs) {
|
|
73
|
+
if (doc.data.category_no_page === true) continue;
|
|
74
|
+
const slug = doc.data.slug ?? toRouteSlug(doc.id);
|
|
75
|
+
urls.push(versionedDocsUrl(slug, version.slug));
|
|
76
|
+
}
|
|
77
|
+
for (const node of collectAutoIndexNodes(tree)) {
|
|
78
|
+
urls.push(versionedDocsUrl(node.slug, version.slug));
|
|
79
|
+
}
|
|
80
|
+
} else {
|
|
81
|
+
const localeDir = version.locales?.[locale]?.dir;
|
|
82
|
+
const { docs: allDocs, navDocs, categoryMeta } = resolveVersionedLocaleSource(
|
|
83
|
+
version.slug,
|
|
84
|
+
version.docsDir,
|
|
85
|
+
locale,
|
|
86
|
+
localeDir,
|
|
87
|
+
{ applyDefaultLocaleOnlyFilter: true, keepUnlisted: true }
|
|
88
|
+
);
|
|
89
|
+
const tree = buildNavTree(navDocs, locale, categoryMeta);
|
|
90
|
+
for (const doc of allDocs) {
|
|
91
|
+
if (doc.data.category_no_page === true) continue;
|
|
92
|
+
const slug = doc.data.slug ?? toRouteSlug(doc.id);
|
|
93
|
+
urls.push(versionedDocsUrl(slug, version.slug, locale));
|
|
94
|
+
}
|
|
95
|
+
for (const node of collectAutoIndexNodes(tree)) {
|
|
96
|
+
urls.push(versionedDocsUrl(node.slug, version.slug, locale));
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return [...new Set(urls)];
|
|
100
|
+
}
|
|
101
|
+
function enumerateAllRoutes() {
|
|
102
|
+
const today = (/* @__PURE__ */ new Date()).toISOString().split("T")[0] ?? "";
|
|
103
|
+
const routes = /* @__PURE__ */ new Map();
|
|
104
|
+
const localeKeys = getLocaleKeys();
|
|
105
|
+
const versions = getVersions();
|
|
106
|
+
function add(url) {
|
|
107
|
+
if (!routes.has(url)) {
|
|
108
|
+
routes.set(url, today);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
add(withBase("/"));
|
|
112
|
+
for (const url of enumerateDocsRoutes(defaultLocale)) {
|
|
113
|
+
add(url);
|
|
114
|
+
}
|
|
115
|
+
for (const url of enumerateTagsRoutes(defaultLocale)) {
|
|
116
|
+
add(url);
|
|
117
|
+
}
|
|
118
|
+
for (const locale of localeKeys) {
|
|
119
|
+
add(withBase(`/${locale}`));
|
|
120
|
+
for (const url of enumerateDocsRoutes(locale)) {
|
|
121
|
+
add(url);
|
|
122
|
+
}
|
|
123
|
+
for (const url of enumerateTagsRoutes(locale)) {
|
|
124
|
+
add(url);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (versions) {
|
|
128
|
+
add(withBase("/docs/versions"));
|
|
129
|
+
for (const locale of localeKeys) {
|
|
130
|
+
add(withBase(`/${locale}/docs/versions`));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if (versions) {
|
|
134
|
+
for (const version of versions) {
|
|
135
|
+
for (const url of enumerateVersionedRoutes(version, defaultLocale)) {
|
|
136
|
+
add(url);
|
|
137
|
+
}
|
|
138
|
+
for (const locale of localeKeys) {
|
|
139
|
+
for (const url of enumerateVersionedRoutes(version, locale)) {
|
|
140
|
+
add(url);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return routes;
|
|
146
|
+
}
|
|
147
|
+
return {
|
|
148
|
+
enumerateDocsRoutes,
|
|
149
|
+
enumerateTagsRoutes,
|
|
150
|
+
enumerateVersionedRoutes,
|
|
151
|
+
enumerateAllRoutes
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
export {
|
|
155
|
+
createRouteEnumerators
|
|
156
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { Fragment, jsx, jsxs } from "preact/jsx-runtime";
|
|
2
|
+
import { DocLayoutWithDefaults } from "../doclayout/index.js";
|
|
3
|
+
import { settings, defaultLocale, withBase } from "./_context.js";
|
|
4
|
+
import {
|
|
5
|
+
HeadWithDefaults,
|
|
6
|
+
HeaderWithDefaults,
|
|
7
|
+
FooterWithDefaults,
|
|
8
|
+
BodyEndIslandsStub,
|
|
9
|
+
composeMetaTitle
|
|
10
|
+
} from "./_chrome.js";
|
|
11
|
+
const frontmatter = { title: "404" };
|
|
12
|
+
function NotFoundPage() {
|
|
13
|
+
const locale = defaultLocale;
|
|
14
|
+
const title = "Page Not Found";
|
|
15
|
+
return /* @__PURE__ */ jsx(
|
|
16
|
+
DocLayoutWithDefaults,
|
|
17
|
+
{
|
|
18
|
+
title: composeMetaTitle(title),
|
|
19
|
+
head: /* @__PURE__ */ jsx(HeadWithDefaults, { title }),
|
|
20
|
+
lang: locale,
|
|
21
|
+
noindex: true,
|
|
22
|
+
hideSidebar: true,
|
|
23
|
+
hideToc: true,
|
|
24
|
+
sidebarOverride: /* @__PURE__ */ jsx(Fragment, {}),
|
|
25
|
+
headerOverride: /* @__PURE__ */ jsx(HeaderWithDefaults, { lang: locale }),
|
|
26
|
+
footerOverride: /* @__PURE__ */ jsx(FooterWithDefaults, { lang: locale }),
|
|
27
|
+
bodyEndComponents: /* @__PURE__ */ jsx(BodyEndIslandsStub, { basePath: settings.base ?? "/" }),
|
|
28
|
+
enableClientRouter: settings.dynamicPageTransition,
|
|
29
|
+
children: /* @__PURE__ */ jsxs("div", { class: "min-h-[60vh] flex flex-col items-center justify-center px-hsp-2xl py-vsp-xl", children: [
|
|
30
|
+
/* @__PURE__ */ jsx("h1", { class: "text-display font-bold mb-vsp-md", children: "404" }),
|
|
31
|
+
/* @__PURE__ */ jsx("p", { class: "text-title text-muted mb-vsp-xl", children: "Page not found." }),
|
|
32
|
+
/* @__PURE__ */ jsx(
|
|
33
|
+
"a",
|
|
34
|
+
{
|
|
35
|
+
href: withBase("/"),
|
|
36
|
+
class: "bg-accent px-hsp-lg py-vsp-xs font-medium text-bg hover:bg-accent-hover",
|
|
37
|
+
children: "Back to Home"
|
|
38
|
+
}
|
|
39
|
+
)
|
|
40
|
+
] })
|
|
41
|
+
}
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
NotFoundPage as default,
|
|
46
|
+
frontmatter
|
|
47
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** @jsxRuntime automatic */
|
|
2
|
+
/** @jsxImportSource preact */
|
|
3
|
+
import type { JSX, VNode } from "preact";
|
|
4
|
+
import type { DocNavNode } from "./_docs-helpers.js";
|
|
5
|
+
/** Package no-op body-end islands. The host's `BodyEndIslands` wires project
|
|
6
|
+
* island bootstraps (client-router / design-token-panel) that cannot live in
|
|
7
|
+
* the package; the package default renders nothing. */
|
|
8
|
+
declare function BodyEndIslandsStub(_props: {
|
|
9
|
+
basePath: string;
|
|
10
|
+
}): JSX.Element;
|
|
11
|
+
export declare const composeMetaTitle: (title: string) => string;
|
|
12
|
+
export declare const HeadWithDefaults: (props: import("../head-with-defaults/index.js").HeadWithDefaultsProps) => JSX.Element;
|
|
13
|
+
export declare const HeaderWithDefaults: (props: import("../header-with-defaults/index.js").HeaderWithDefaultsProps) => JSX.Element;
|
|
14
|
+
export declare const FooterWithDefaults: (props: {
|
|
15
|
+
lang?: string;
|
|
16
|
+
}) => VNode;
|
|
17
|
+
export declare const SidebarWithDefaults: (props: import("../sidebar-with-defaults/index.js").SidebarWithDefaultsProps) => JSX.Element;
|
|
18
|
+
declare const SiteTreeNavWrapper: (props: import("../site-tree-nav/index.js").SiteTreeNavWrapperProps) => JSX.Element | null;
|
|
19
|
+
export declare function createMdxComponentsBound(lang?: string): Record<string, unknown>;
|
|
20
|
+
export declare const renderDocPage: (props: import("../doc-page-props/index.js").DocPageBaseProps, opts: import("../doc-page-renderer/index.js").RenderDocPageOptions) => JSX.Element;
|
|
21
|
+
export declare const VersionsPageView: (props: import("../versions-page/index.js").VersionsPageViewProps) => JSX.Element;
|
|
22
|
+
export declare const collectTagMapForLocale: (locale: string) => Map<string, import("../tag-pages/index.js").TagInfo>, TagDetailPageView: (props: {
|
|
23
|
+
locale: string;
|
|
24
|
+
tag: string;
|
|
25
|
+
tagInfo: import("../tag-pages/index.js").TagInfo;
|
|
26
|
+
}) => JSX.Element, TagsIndexPageView: (props: {
|
|
27
|
+
locale: string;
|
|
28
|
+
children?: import("preact").ComponentChildren;
|
|
29
|
+
}) => JSX.Element;
|
|
30
|
+
export { SiteTreeNavWrapper, BodyEndIslandsStub };
|
|
31
|
+
export { buildDocRouteEntries, } from "./_context.js";
|
|
32
|
+
export type { DocNavNode };
|