@takazudo/zudo-doc 5.28.2 → 6.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/CHANGELOG.md +22 -0
- package/README.md +49 -16
- package/bin/gen-z-index.mjs +18 -18
- package/dist/agent-docs/identity.d.ts +4 -0
- package/dist/agent-docs/identity.js +24 -0
- package/dist/agent-docs/index.d.ts +5 -0
- package/dist/agent-docs/index.js +5 -0
- package/dist/agent-docs/limits.d.ts +11 -0
- package/dist/agent-docs/limits.js +24 -0
- package/dist/agent-docs/search.d.ts +14 -0
- package/dist/agent-docs/search.js +82 -0
- package/dist/agent-docs/tokenize.d.ts +2 -0
- package/dist/agent-docs/tokenize.js +22 -0
- package/dist/agent-docs/types.d.ts +68 -0
- package/dist/agent-docs/types.js +0 -0
- package/dist/ai-chat-modal/index.d.ts +1 -4
- package/dist/ai-chat-modal/index.js +183 -123
- package/dist/asset-components/asset-card.d.ts +1 -2
- package/dist/asset-components/asset-card.js +12 -12
- package/dist/asset-components/asset-code.d.ts +1 -2
- package/dist/asset-components/asset-code.js +10 -10
- package/dist/asset-components/shared.d.ts +3 -4
- package/dist/asset-components/shared.js +4 -4
- package/dist/asset-index-page/body.d.ts +5 -6
- package/dist/asset-index-page/body.js +6 -6
- package/dist/asset-index-page/index.d.ts +1 -2
- package/dist/asset-index-page/index.js +1 -1
- package/dist/asset-page/body.d.ts +5 -9
- package/dist/asset-page/body.js +3 -3
- package/dist/asset-page/components.d.ts +16 -17
- package/dist/asset-page/components.js +10 -9
- package/dist/asset-page/index.d.ts +1 -2
- package/dist/asset-page/index.js +1 -1
- package/dist/auto-logo/index.d.ts +1 -2
- package/dist/auto-logo/index.js +2 -2
- package/dist/body-foot-util/body-foot-util-area.d.ts +3 -4
- package/dist/body-foot-util/body-foot-util-area.js +1 -2
- package/dist/body-foot-util/edit-link.d.ts +2 -3
- package/dist/body-foot-util/edit-link.js +1 -2
- package/dist/breadcrumb/breadcrumb.d.ts +6 -6
- package/dist/breadcrumb/breadcrumb.js +3 -4
- package/dist/category-nav/index.d.ts +1 -2
- package/dist/category-nav/index.js +11 -5
- package/dist/category-tree-nav/index.d.ts +1 -2
- package/dist/category-tree-nav/index.js +3 -3
- package/dist/chrome/derive.d.ts +18 -27
- package/dist/chrome/derive.js +47 -29
- package/dist/chrome/index.d.ts +5 -5
- package/dist/chrome/index.js +1 -1
- package/dist/chrome/island-data.d.ts +4 -0
- package/dist/chrome/island-data.js +52 -0
- package/dist/chrome/primary-slots.d.ts +2 -3
- package/dist/chrome-bindings.d.ts +28 -22
- package/dist/code-group/index.d.ts +3 -4
- package/dist/code-group/index.js +3 -7
- package/dist/code-syntax/code-block-enhancer.d.ts +1 -2
- package/dist/code-syntax/code-block-enhancer.js +2 -2
- package/dist/code-syntax/mermaid-init.d.ts +1 -2
- package/dist/code-syntax/mermaid-init.js +5 -2
- package/dist/code-syntax/tabs-init-script.js +1 -1
- package/dist/code-syntax/tabs-init.d.ts +1 -2
- package/dist/code-syntax/tabs-init.js +2 -2
- package/dist/code-syntax/tabs.d.ts +6 -6
- package/dist/code-syntax/tabs.js +8 -8
- package/dist/compiled.css +2933 -2943
- package/dist/config-assertions/index.d.ts +13 -0
- package/dist/config-assertions/index.js +14 -0
- package/dist/config.d.ts +36 -17
- package/dist/config.js +23 -95
- package/dist/content/content-blockquote.d.ts +2 -3
- package/dist/content/content-blockquote.js +3 -3
- package/dist/content/content-code.d.ts +3 -4
- package/dist/content/content-code.js +5 -5
- package/dist/content/content-link.d.ts +3 -4
- package/dist/content/content-link.js +10 -10
- package/dist/content/content-ol.d.ts +2 -3
- package/dist/content/content-ol.js +5 -4
- package/dist/content/content-paragraph.d.ts +2 -3
- package/dist/content/content-paragraph.js +1 -1
- package/dist/content/content-strong.d.ts +2 -3
- package/dist/content/content-strong.js +3 -3
- package/dist/content/content-table.d.ts +2 -3
- package/dist/content/content-table.js +4 -4
- package/dist/content/content-ul.d.ts +2 -3
- package/dist/content/content-ul.js +4 -4
- package/dist/content/heading-h2.d.ts +2 -3
- package/dist/content/heading-h2.js +4 -4
- package/dist/content/heading-h3.d.ts +2 -3
- package/dist/content/heading-h3.js +4 -4
- package/dist/content/heading-h4.d.ts +2 -3
- package/dist/content/heading-h4.js +4 -4
- package/dist/content-admonition/index.d.ts +3 -4
- package/dist/content-admonition/index.js +2 -2
- package/dist/content.css +35 -33
- package/dist/design-token-panel-bootstrap-controller.d.ts +178 -0
- package/dist/design-token-panel-bootstrap-controller.js +359 -0
- package/dist/design-token-panel-bootstrap-island.d.ts +5 -0
- package/dist/design-token-panel-bootstrap-island.js +19 -0
- package/dist/design-token-panel-bootstrap.d.ts +5 -195
- package/dist/design-token-panel-bootstrap.js +3 -288
- package/dist/desktop-sidebar-toggle-island/index.d.ts +2 -7
- package/dist/desktop-sidebar-toggle-island/index.js +2 -58
- package/dist/desktop-sidebar-toggle-island/island.d.ts +4 -0
- package/dist/desktop-sidebar-toggle-island/island.js +43 -0
- package/dist/desktop-sidebar-toggle-island/storage.d.ts +4 -0
- package/dist/desktop-sidebar-toggle-island/storage.js +29 -0
- package/dist/desktop-toc-toggle-island/index.d.ts +2 -7
- package/dist/desktop-toc-toggle-island/index.js +2 -58
- package/dist/desktop-toc-toggle-island/island.d.ts +4 -0
- package/dist/desktop-toc-toggle-island/island.js +43 -0
- package/dist/desktop-toc-toggle-island/storage.d.ts +4 -0
- package/dist/desktop-toc-toggle-island/storage.js +29 -0
- package/dist/details/details.d.ts +3 -4
- package/dist/details/details.js +1 -1
- package/dist/doc-body-end/index.d.ts +1 -2
- package/dist/doc-body-end/index.js +1 -1
- package/dist/doc-body-end-islands/design-token-panel-island.d.ts +2 -2
- package/dist/doc-body-end-islands/design-token-panel-island.js +3 -7
- package/dist/doc-body-end-islands/index.d.ts +4 -21
- package/dist/doc-body-end-islands/index.js +5 -3
- package/dist/doc-body-end-islands/theme-pack-switcher-island.d.ts +3 -13
- package/dist/doc-body-end-islands/theme-pack-switcher-island.js +11 -13
- package/dist/doc-content-header/index.d.ts +1 -2
- package/dist/doc-content-header/index.js +1 -1
- package/dist/doc-history/index.d.ts +1 -1
- package/dist/doc-history/index.js +166 -141
- package/dist/doc-history-area/index.d.ts +6 -4
- package/dist/doc-history-area/index.js +17 -16
- package/dist/doc-metainfo-area/index.d.ts +2 -3
- package/dist/doc-metainfo-area/index.js +1 -1
- package/dist/doc-page-renderer/index.d.ts +13 -7
- package/dist/doc-page-renderer/index.js +10 -1
- package/dist/doc-page-shell/index.d.ts +20 -7
- package/dist/doc-page-shell/index.js +17 -6
- package/dist/doc-pager/index.d.ts +1 -2
- package/dist/doc-pager/index.js +3 -3
- package/dist/doc-tags-area/index.d.ts +2 -3
- package/dist/doc-tags-area/index.js +1 -1
- package/dist/doclayout/doc-layout-with-defaults.d.ts +9 -9
- package/dist/doclayout/doc-layout-with-defaults.js +5 -15
- package/dist/doclayout/doc-layout.d.ts +26 -27
- package/dist/doclayout/doc-layout.js +23 -14
- package/dist/docs-schema/index.d.ts +4 -0
- package/dist/docs-schema/index.js +1 -0
- package/dist/extract-headings/index.js +43 -12
- package/dist/factory-context/index.d.ts +22 -19
- package/dist/features.css +70 -8
- package/dist/find-in-page/find-bar.d.ts +4 -2
- package/dist/find-in-page/find-bar.js +58 -69
- package/dist/find-in-page/index.d.ts +2 -8
- package/dist/find-in-page/index.js +33 -30
- package/dist/footer/footer.d.ts +3 -4
- package/dist/footer/footer.js +3 -3
- package/dist/footer-with-defaults/index.d.ts +2 -3
- package/dist/footer-with-defaults/index.js +1 -1
- package/dist/frontmatter-preview-defaults/index.js +1 -0
- package/dist/head/doc-head.d.ts +1 -1
- package/dist/head/doc-head.js +24 -32
- package/dist/head/og-tags.d.ts +1 -1
- package/dist/head/og-tags.js +8 -7
- package/dist/head/twitter-card.d.ts +1 -1
- package/dist/head/twitter-card.js +1 -1
- package/dist/head-with-defaults/index.d.ts +7 -2
- package/dist/head-with-defaults/index.js +46 -32
- package/dist/header/header.d.ts +8 -8
- package/dist/header/header.js +9 -11
- package/dist/header/types.d.ts +7 -7
- package/dist/header-with-defaults/index.d.ts +1 -2
- package/dist/header-with-defaults/index.js +18 -8
- package/dist/home-intro/index.d.ts +2 -5
- package/dist/home-intro/index.js +7 -5
- package/dist/home-intro/prepare.js +4 -3
- package/dist/home-page/index.d.ts +3 -3
- package/dist/home-page/index.js +19 -17
- package/dist/html-preview-wrapper/highlighted-code.d.ts +3 -4
- package/dist/html-preview-wrapper/highlighted-code.js +19 -17
- package/dist/html-preview-wrapper/html-preview-wrapper.d.ts +4 -25
- package/dist/html-preview-wrapper/html-preview-wrapper.js +2 -87
- package/dist/html-preview-wrapper/html-preview.d.ts +3 -10
- package/dist/html-preview-wrapper/html-preview.js +13 -37
- package/dist/html-preview-wrapper/index.d.ts +2 -1
- package/dist/html-preview-wrapper/index.js +1 -1
- package/dist/html-preview-wrapper/preview-base.d.ts +3 -5
- package/dist/html-preview-wrapper/preview-base.js +56 -59
- package/dist/html-preview-wrapper/wrapper.d.ts +20 -0
- package/dist/html-preview-wrapper/wrapper.js +37 -0
- package/dist/hydration-pending.d.ts +3 -5
- package/dist/hydration-pending.js +7 -5
- package/dist/i18n-version/language-switcher.d.ts +5 -32
- package/dist/i18n-version/language-switcher.js +5 -106
- package/dist/i18n-version/switcher-generated-scripts.d.ts +2 -0
- package/dist/i18n-version/switcher-generated-scripts.js +107 -0
- package/dist/i18n-version/switcher-url-state.d.ts +76 -0
- package/dist/i18n-version/switcher-url-state.js +103 -0
- package/dist/i18n-version/version-banner.d.ts +2 -3
- package/dist/i18n-version/version-banner.js +1 -1
- package/dist/i18n-version/version-switcher.d.ts +5 -50
- package/dist/i18n-version/version-switcher.js +5 -157
- package/dist/icons/index.d.ts +18 -19
- package/dist/icons/index.js +17 -33
- package/dist/image-enlarge/index.d.ts +1 -10
- package/dist/image-enlarge/index.js +80 -55
- package/dist/image-enlarge/public.d.ts +2 -0
- package/dist/image-enlarge/public.js +6 -0
- package/dist/image-enlarge/ssr-fallback.d.ts +2 -0
- package/dist/image-enlarge/ssr-fallback.js +8 -0
- package/dist/index.d.ts +11 -4
- package/dist/inline-version-switcher/index.d.ts +1 -2
- package/dist/inline-version-switcher/index.js +1 -1
- package/dist/island-types/index.d.ts +2 -2
- package/dist/island-types/index.js +1 -5
- package/dist/math-block/index.d.ts +4 -7
- package/dist/math-block/index.js +5 -5
- package/dist/mcp/handler.d.ts +8 -0
- package/dist/mcp/handler.js +129 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/loader.d.ts +19 -0
- package/dist/mcp/loader.js +202 -0
- package/dist/mdx-components/index.js +40 -108
- package/dist/mermaid-enlarge/index.d.ts +1 -8
- package/dist/mermaid-enlarge/index.js +174 -158
- package/dist/mermaid-enlarge/public.d.ts +2 -0
- package/dist/mermaid-enlarge/public.js +6 -0
- package/dist/mermaid-enlarge/ssr-fallback.d.ts +2 -0
- package/dist/mermaid-enlarge/ssr-fallback.js +8 -0
- package/dist/metainfo/doc-metainfo.d.ts +2 -3
- package/dist/metainfo/doc-metainfo.js +1 -4
- package/dist/metainfo/doc-tags.d.ts +2 -3
- package/dist/metainfo/doc-tags.js +1 -1
- package/dist/metainfo/frontmatter-preview.d.ts +3 -4
- package/dist/metainfo/frontmatter-preview.js +1 -1
- package/dist/nav-data-prep/index.js +6 -4
- package/dist/nav-indexing/category-nav.d.ts +2 -3
- package/dist/nav-indexing/category-nav.js +1 -2
- package/dist/nav-indexing/category-tree-nav.d.ts +2 -3
- package/dist/nav-indexing/category-tree-nav.js +1 -1
- package/dist/nav-indexing/doc-card-grid.d.ts +2 -3
- package/dist/nav-indexing/doc-card-grid.js +1 -2
- package/dist/nav-indexing/docs-sitemap.d.ts +2 -3
- package/dist/nav-indexing/docs-sitemap.js +2 -2
- package/dist/nav-indexing/index.d.ts +1 -1
- package/dist/nav-indexing/nav-card-grid.d.ts +2 -3
- package/dist/nav-indexing/nav-card-grid.js +1 -2
- package/dist/nav-indexing/note-tray-index-parts/card-list.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index-parts/card-list.js +4 -4
- package/dist/nav-indexing/note-tray-index-parts/date-line.d.ts +2 -3
- package/dist/nav-indexing/note-tray-index-parts/date-line.js +1 -1
- package/dist/nav-indexing/note-tray-index-parts/index-list.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index-parts/index-list.js +2 -2
- package/dist/nav-indexing/note-tray-index-parts/timeline.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index-parts/timeline.js +2 -2
- package/dist/nav-indexing/note-tray-index.d.ts +1 -2
- package/dist/nav-indexing/note-tray-index.js +1 -1
- package/dist/nav-indexing/site-tree-nav-demo.d.ts +2 -3
- package/dist/nav-indexing/site-tree-nav-demo.js +2 -2
- package/dist/nav-indexing/tag-nav.d.ts +1 -2
- package/dist/nav-indexing/tag-nav.js +1 -1
- package/dist/nav-indexing/types.d.ts +2 -2
- package/dist/nav-indexing/versions-page-content.d.ts +2 -3
- package/dist/nav-indexing/versions-page-content.js +8 -8
- package/dist/note-tray-index/index.d.ts +1 -2
- package/dist/note-tray-index/index.js +1 -1
- package/dist/page-loading/page-loading-overlay.d.ts +1 -2
- package/dist/page-loading/page-loading-overlay.js +3 -5
- package/dist/plugins/agent-export.d.ts +3 -0
- package/dist/plugins/agent-export.js +34 -0
- package/dist/plugins/internal/agent-export/chunk.d.ts +5 -0
- package/dist/plugins/internal/agent-export/chunk.js +90 -0
- package/dist/plugins/internal/agent-export/index.d.ts +24 -0
- package/dist/plugins/internal/agent-export/index.js +123 -0
- package/dist/plugins/internal/agent-export/normalize.d.ts +5 -0
- package/dist/plugins/internal/agent-export/normalize.js +73 -0
- package/dist/plugins/internal/llms-txt/dev-middleware.d.ts +6 -0
- package/dist/plugins/internal/llms-txt/dev-middleware.js +8 -3
- package/dist/plugins/internal/llms-txt/emit.js +23 -6
- package/dist/plugins/internal/llms-txt/generate.d.ts +7 -1
- package/dist/plugins/internal/llms-txt/generate.js +9 -2
- package/dist/plugins/internal/llms-txt/load.d.ts +2 -0
- package/dist/plugins/internal/llms-txt/load.js +20 -4
- package/dist/plugins/internal/llms-txt/types.d.ts +10 -0
- package/dist/plugins/routes.js +4 -0
- package/dist/preset.d.ts +19 -9
- package/dist/preset.js +20 -1
- package/dist/route-context-payload/index.js +1 -1
- package/dist/routes/404.d.ts +2 -3
- package/dist/routes/404.js +1 -1
- package/dist/routes/_chrome.d.ts +5 -5
- package/dist/routes/_chrome.js +7 -2
- package/dist/routes/_context.d.ts +4 -4
- package/dist/routes/_design-token-panel-bootstrap.d.ts +1 -4
- package/dist/routes/_design-token-panel-bootstrap.js +9 -1
- package/dist/routes/docs-slug.d.ts +2 -3
- package/dist/routes/docs-tags-index.d.ts +2 -3
- package/dist/routes/docs-tags-index.js +1 -1
- package/dist/routes/docs-tags-tag.d.ts +2 -3
- package/dist/routes/docs-tags-tag.js +1 -1
- package/dist/routes/docs-versions.d.ts +2 -3
- package/dist/routes/docs-versions.js +1 -1
- package/dist/routes/files-path.d.ts +2 -3
- package/dist/routes/files-path.js +1 -1
- package/dist/routes/index.d.ts +2 -3
- package/dist/routes/index.js +1 -1
- package/dist/routes/locale-docs-slug.d.ts +2 -3
- package/dist/routes/locale-docs-tags-index.d.ts +2 -3
- package/dist/routes/locale-docs-tags-index.js +1 -1
- package/dist/routes/locale-docs-tags-tag.d.ts +2 -3
- package/dist/routes/locale-docs-tags-tag.js +1 -1
- package/dist/routes/locale-docs-versions.d.ts +2 -3
- package/dist/routes/locale-docs-versions.js +1 -1
- package/dist/routes/locale-files-path.d.ts +2 -3
- package/dist/routes/locale-files-path.js +1 -1
- package/dist/routes/locale-index.d.ts +2 -3
- package/dist/routes/locale-index.js +1 -1
- package/dist/routes/mcp.d.ts +5 -0
- package/dist/routes/mcp.js +25 -0
- package/dist/routes/v-docs-slug.d.ts +2 -3
- package/dist/routes/v-locale-docs-slug.d.ts +2 -3
- package/dist/search-widget/index.d.ts +1 -2
- package/dist/search-widget/index.js +4 -7
- package/dist/search-widget-script/generated-script.js +12 -5
- package/dist/settings-defaults.d.ts +2 -0
- package/dist/settings-defaults.js +93 -0
- package/dist/settings.d.ts +8 -2
- package/dist/sidebar/index.d.ts +1 -1
- package/dist/sidebar/sidebar.d.ts +12 -44
- package/dist/sidebar/sidebar.js +4 -3
- package/dist/sidebar/types.d.ts +14 -0
- package/dist/sidebar-prepaint/index.d.ts +1 -2
- package/dist/sidebar-prepaint/index.js +4 -6
- package/dist/sidebar-resizer/sidebar-resizer-init.d.ts +2 -3
- package/dist/sidebar-resizer/sidebar-resizer-init.js +3 -3
- package/dist/sidebar-toggle-island/index.d.ts +8 -11
- package/dist/sidebar-toggle-island/index.js +75 -62
- package/dist/sidebar-tree/build-tree.js +5 -6
- package/dist/sidebar-tree/types.d.ts +2 -0
- package/dist/sidebar-tree-island/index.d.ts +4 -19
- package/dist/sidebar-tree-island/index.js +782 -436
- package/dist/sidebar-tree-island/scope-state.d.ts +38 -0
- package/dist/sidebar-tree-island/scope-state.js +151 -0
- package/dist/sidebar-tree-island/sidebar-scroll-preserve.js +6 -2
- package/dist/sidebar-utils/index.d.ts +17 -19
- package/dist/sidebar-utils/index.js +100 -3
- package/dist/sidebar-utils/scope.d.ts +11 -0
- package/dist/sidebar-utils/scope.js +67 -0
- package/dist/sidebar-with-defaults/index.d.ts +1 -2
- package/dist/sidebar-with-defaults/index.js +19 -18
- package/dist/site-schema/nav-tree.js +15 -15
- package/dist/site-schema/types.d.ts +1 -0
- package/dist/site-tree-nav/index.d.ts +2 -3
- package/dist/site-tree-nav/index.js +11 -12
- package/dist/site-tree-nav/normalize-island-props.d.ts +16 -0
- package/dist/site-tree-nav/normalize-island-props.js +122 -0
- package/dist/site-tree-nav-island/index.d.ts +3 -3
- package/dist/site-tree-nav-island/index.js +243 -144
- package/dist/smart-break/index.d.ts +3 -4
- package/dist/smart-break/index.js +1 -1
- package/dist/tab-item/tab-item.d.ts +3 -4
- package/dist/tab-item/tab-item.js +1 -1
- package/dist/tag-pages/index.d.ts +3 -3
- package/dist/tag-pages/index.js +10 -10
- package/dist/theme/color-scheme-provider.d.ts +3 -3
- package/dist/theme/color-scheme-provider.js +3 -3
- package/dist/theme/theme-pack-provider.d.ts +1 -1
- package/dist/theme/theme-pack-provider.js +3 -3
- package/dist/theme/theme-toggle.d.ts +2 -3
- package/dist/theme/theme-toggle.js +1 -1
- package/dist/theme-pack-dialog/index.d.ts +1 -1
- package/dist/theme-pack-dialog/index.js +69 -75
- package/dist/theme-pack-dialog/theme-pack-card.d.ts +3 -4
- package/dist/theme-pack-dialog/theme-pack-card.js +19 -17
- package/dist/theme-pack-switcher/index.d.ts +4 -5
- package/dist/theme-pack-switcher/index.js +52 -49
- package/dist/theme-toggle/index.d.ts +1 -1
- package/dist/theme-toggle/index.js +154 -167
- package/dist/theme.css +47 -121
- package/dist/toc/mobile-toc.d.ts +3 -5
- package/dist/toc/mobile-toc.js +29 -27
- package/dist/toc/toc.d.ts +3 -4
- package/dist/toc/toc.js +18 -18
- package/dist/toc/use-active-heading.d.ts +5 -4
- package/dist/toc/use-active-heading.js +36 -30
- package/dist/toc-prepaint/index.d.ts +1 -2
- package/dist/toc-prepaint/index.js +4 -6
- package/dist/transitions/nested-island-props-refresh.d.ts +3 -16
- package/dist/transitions/nested-island-props-refresh.js +133 -151
- package/dist/transitions/page-events.d.ts +8 -13
- package/dist/tree-nav-shared/index.d.ts +4 -5
- package/dist/tree-nav-shared/index.js +6 -7
- package/dist/use-modal-dialog/index.d.ts +9 -63
- package/dist/use-modal-dialog/index.js +41 -59
- package/dist/versions-page/index.d.ts +3 -3
- package/dist/versions-page/index.js +5 -5
- package/dist/wind/index.d.ts +5 -0
- package/dist/wind/index.js +169 -0
- package/dist/wind.json +498 -0
- package/dist/z-index-defaults/index.d.ts +4 -4
- package/dist/zdtp-loader.d.ts +7 -0
- package/dist/zdtp-loader.js +8 -0
- package/eject/asset-components/asset-card.tsx +14 -16
- package/eject/asset-components/asset-code.tsx +10 -12
- package/eject/asset-components/shared.tsx +5 -7
- package/eject/breadcrumb/breadcrumb.tsx +15 -16
- package/eject/code-group/index.tsx +4 -10
- package/eject/content-admonition/index.tsx +5 -6
- package/eject/desktop-sidebar-toggle-island/index.ts +4 -0
- package/eject/desktop-sidebar-toggle-island/island.tsx +50 -0
- package/eject/desktop-sidebar-toggle-island/storage.ts +27 -0
- package/eject/details/details.tsx +3 -5
- package/eject/doc-history/index.tsx +193 -179
- package/eject/doc-pager/index.tsx +3 -4
- package/eject/footer/footer.tsx +7 -9
- package/eject/header/header.tsx +42 -54
- package/eject/header/nav-overflow-script.ts +1 -1
- package/eject/header/types.ts +12 -13
- package/eject/image-enlarge/index.tsx +84 -69
- package/eject/image-enlarge/public.ts +2 -0
- package/eject/image-enlarge/ssr-fallback.tsx +7 -0
- package/eject/page-loading/page-loading-overlay.tsx +8 -15
- package/eject/sidebar/index.ts +1 -0
- package/eject/sidebar/sidebar.tsx +16 -97
- package/eject/sidebar/types.ts +15 -0
- package/eject/sidebar-toggle-island/index.tsx +103 -102
- package/eject/sidebar-tree-island/index.tsx +827 -615
- package/eject/sidebar-tree-island/scope-state.ts +154 -0
- package/eject/sidebar-tree-island/sidebar-scroll-preserve.ts +8 -2
- package/eject/site-tree-nav-island/index.tsx +349 -222
- package/eject/tab-item/tab-item.tsx +2 -4
- package/eject/theme-toggle/hydration-pending.ts +6 -10
- package/eject/theme-toggle/index.tsx +133 -173
- package/eject/toc/mobile-toc.tsx +27 -31
- package/eject/toc/toc.tsx +21 -24
- package/eject/toc/use-active-heading.ts +43 -38
- package/package.json +40 -22
- package/routes-src/404.tsx +2 -3
- package/routes-src/_chrome.tsx +7 -2
- package/routes-src/_design-token-panel-bootstrap.tsx +1 -63
- package/routes-src/docs-slug.tsx +2 -3
- package/routes-src/docs-tags-index.tsx +2 -3
- package/routes-src/docs-tags-tag.tsx +2 -3
- package/routes-src/docs-versions.tsx +2 -3
- package/routes-src/files-path.tsx +2 -4
- package/routes-src/index.tsx +2 -3
- package/routes-src/locale-docs-slug.tsx +2 -3
- package/routes-src/locale-docs-tags-index.tsx +2 -3
- package/routes-src/locale-docs-tags-tag.tsx +2 -3
- package/routes-src/locale-docs-versions.tsx +2 -3
- package/routes-src/locale-files-path.tsx +2 -4
- package/routes-src/locale-index.tsx +2 -3
- package/routes-src/mcp.tsx +25 -0
- package/routes-src/v-docs-slug.tsx +2 -3
- package/routes-src/v-locale-docs-slug.tsx +2 -3
- package/tsconfig.base.json +1 -1
- package/dist/safelist.css +0 -2
- package/dist/theme-no-reset.css +0 -379
- package/eject/desktop-sidebar-toggle-island/index.tsx +0 -110
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type { VNode } from "preact";
|
|
2
|
+
import type { Child } from "@takazudo/zfb/zudo-react";
|
|
4
3
|
/**
|
|
5
4
|
* Heuristic: does `text` look like a URL, filesystem path, or similar
|
|
6
5
|
* structure where inserting <wbr> after delimiters aids line-wrapping?
|
|
@@ -20,14 +19,14 @@ export declare function isPathLike(text: string): boolean;
|
|
|
20
19
|
* the input string unchanged so callers can trust non-path prose passes
|
|
21
20
|
* through untouched.
|
|
22
21
|
*/
|
|
23
|
-
export declare function smartBreak(text: string):
|
|
22
|
+
export declare function smartBreak(text: string): Child;
|
|
24
23
|
/**
|
|
25
24
|
* Preact function component wrapper — pure, server-renderable.
|
|
26
25
|
* Stringifies children and defers to smartBreak.
|
|
27
26
|
*/
|
|
28
27
|
export declare function SmartBreak({ children }: {
|
|
29
28
|
children?: unknown;
|
|
30
|
-
}):
|
|
29
|
+
}): Child;
|
|
31
30
|
/**
|
|
32
31
|
* HTML-escape `text` and inject a literal "<wbr>" tag after every
|
|
33
32
|
* delimiter character. Unlike smartBreakToHtml, this does NOT check
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type { ComponentChildren } from "preact";
|
|
2
|
+
import type { Child } from "@takazudo/zfb/zudo-react";
|
|
4
3
|
export interface TabItemProps {
|
|
5
4
|
/** Human-readable label rendered by the parent Tabs trigger row. */
|
|
6
5
|
label: string;
|
|
@@ -16,7 +15,7 @@ export interface TabItemProps {
|
|
|
16
15
|
*/
|
|
17
16
|
default?: boolean;
|
|
18
17
|
/** Panel body. */
|
|
19
|
-
children?:
|
|
18
|
+
children?: Child;
|
|
20
19
|
}
|
|
21
20
|
/**
|
|
22
21
|
* One tab panel.
|
|
@@ -33,5 +32,5 @@ export interface TabItemProps {
|
|
|
33
32
|
* `[data-tab-default]` and reapplies `hidden` / `aria-selected` so
|
|
34
33
|
* the SSR-rendered defaults survive group sync and View Transitions.
|
|
35
34
|
*/
|
|
36
|
-
export declare function TabItem({ label, value, default: isDefault, children, }: TabItemProps): import("
|
|
35
|
+
export declare function TabItem({ label, value, default: isDefault, children, }: TabItemProps): import("@takazudo/zfb").Description;
|
|
37
36
|
export default TabItem;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type {
|
|
2
|
+
import type { Child } from "@takazudo/zfb/zudo-react";
|
|
3
|
+
import type { JSX } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
4
4
|
import type { ChromeContext } from "../factory-context/index.js";
|
|
5
5
|
import type { Settings } from "../settings.js";
|
|
6
6
|
import type { DocPageEntry } from "../doc-page-props/index.js";
|
|
@@ -95,7 +95,7 @@ export interface TagPagesAPI {
|
|
|
95
95
|
/** "All Tags" index page — computes the tag map at render time. */
|
|
96
96
|
TagsIndexPageView: (props: {
|
|
97
97
|
locale: string;
|
|
98
|
-
children?:
|
|
98
|
+
children?: Child;
|
|
99
99
|
}) => JSX.Element;
|
|
100
100
|
}
|
|
101
101
|
/**
|
package/dist/tag-pages/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "
|
|
1
|
+
import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
2
2
|
import { DocLayoutWithDefaults } from "../doclayout/index.js";
|
|
3
3
|
import { DocCardGrid, TagNav } from "../nav-indexing/index.js";
|
|
4
4
|
import { memoizeDerived } from "../nav-source-cache/index.js";
|
|
@@ -76,16 +76,16 @@ function createTagPages(ctx) {
|
|
|
76
76
|
const cardItems = tagInfo.docs.map((doc) => ({
|
|
77
77
|
href: docsUrl(doc.slug, locale),
|
|
78
78
|
title: doc.title,
|
|
79
|
-
description: doc.description
|
|
79
|
+
...doc.description !== void 0 ? { description: doc.description } : {}
|
|
80
80
|
}));
|
|
81
81
|
return /* @__PURE__ */ jsxs(
|
|
82
82
|
DocLayoutWithDefaults,
|
|
83
83
|
{
|
|
84
84
|
title: composeMetaTitle(pageTitle),
|
|
85
85
|
head: /* @__PURE__ */ jsx(HeadWithDefaults, { title: pageTitle }),
|
|
86
|
-
|
|
87
|
-
dataThemePack,
|
|
88
|
-
noindex: settings.noindex,
|
|
86
|
+
...isDefault ? {} : { lang: locale },
|
|
87
|
+
...dataThemePack !== void 0 ? { dataThemePack } : {},
|
|
88
|
+
...settings.noindex !== void 0 ? { noindex: settings.noindex } : {},
|
|
89
89
|
hideSidebar: true,
|
|
90
90
|
hideToc: true,
|
|
91
91
|
sidebarOverride: /* @__PURE__ */ jsx(Fragment, {}),
|
|
@@ -93,7 +93,7 @@ function createTagPages(ctx) {
|
|
|
93
93
|
breadcrumbOverride: /* @__PURE__ */ jsx(Breadcrumb, { items: breadcrumbItems }),
|
|
94
94
|
footerOverride: /* @__PURE__ */ jsx(FooterWithDefaults, { lang: locale }),
|
|
95
95
|
bodyEndComponents: /* @__PURE__ */ jsx(BodyEndIslands, { basePath: settings.base ?? "/" }),
|
|
96
|
-
enableClientRouter: settings.dynamicPageTransition,
|
|
96
|
+
...settings.dynamicPageTransition !== void 0 ? { enableClientRouter: settings.dynamicPageTransition } : {},
|
|
97
97
|
children: [
|
|
98
98
|
/* @__PURE__ */ jsx("h1", { class: "text-heading font-bold mb-vsp-xs break-words", children: pageTitle }),
|
|
99
99
|
/* @__PURE__ */ jsx("p", { class: "text-muted mb-vsp-lg", children: countText }),
|
|
@@ -127,9 +127,9 @@ function createTagPages(ctx) {
|
|
|
127
127
|
{
|
|
128
128
|
title: composeMetaTitle(pageTitle),
|
|
129
129
|
head: /* @__PURE__ */ jsx(HeadWithDefaults, { title: pageTitle }),
|
|
130
|
-
|
|
131
|
-
dataThemePack,
|
|
132
|
-
noindex: settings.noindex,
|
|
130
|
+
...isDefault ? {} : { lang: locale },
|
|
131
|
+
...dataThemePack !== void 0 ? { dataThemePack } : {},
|
|
132
|
+
...settings.noindex !== void 0 ? { noindex: settings.noindex } : {},
|
|
133
133
|
hideSidebar: true,
|
|
134
134
|
hideToc: true,
|
|
135
135
|
sidebarOverride: /* @__PURE__ */ jsx(Fragment, {}),
|
|
@@ -137,7 +137,7 @@ function createTagPages(ctx) {
|
|
|
137
137
|
breadcrumbOverride: /* @__PURE__ */ jsx(Breadcrumb, { items: breadcrumbItems }),
|
|
138
138
|
footerOverride: /* @__PURE__ */ jsx(FooterWithDefaults, { lang: locale }),
|
|
139
139
|
bodyEndComponents: /* @__PURE__ */ jsx(BodyEndIslands, { basePath: settings.base ?? "/" }),
|
|
140
|
-
enableClientRouter: settings.dynamicPageTransition,
|
|
140
|
+
...settings.dynamicPageTransition !== void 0 ? { enableClientRouter: settings.dynamicPageTransition } : {},
|
|
141
141
|
children: [
|
|
142
142
|
/* @__PURE__ */ jsx("h1", { class: "text-heading font-bold mb-vsp-lg break-words", children: pageTitle }),
|
|
143
143
|
!settings.docTags || tags.length === 0 ? /* @__PURE__ */ jsx("p", { class: "text-muted", children: t("doc.noTags", locale) }) : /* @__PURE__ */ jsx(TagNav, { variant: "all", tags, labels }),
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Child } from "@takazudo/zfb/zudo-react";
|
|
2
2
|
/**
|
|
3
3
|
* Subset of the host's `ColorModeConfig` that the v2 provider actually
|
|
4
4
|
* consumes. Kept locally so the v2 package does not need to import a host
|
|
@@ -22,6 +22,6 @@ export interface ColorSchemeProviderProps {
|
|
|
22
22
|
*/
|
|
23
23
|
colorMode: ColorSchemeProviderColorMode | null;
|
|
24
24
|
/** Optional children; preserved for forward compatibility. */
|
|
25
|
-
children?:
|
|
25
|
+
children?: Child;
|
|
26
26
|
}
|
|
27
|
-
export default function ColorSchemeProvider({ cssText, colorMode, }: ColorSchemeProviderProps): import("
|
|
27
|
+
export default function ColorSchemeProvider({ cssText, colorMode, }: ColorSchemeProviderProps): import("@takazudo/zfb").Description;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "
|
|
1
|
+
import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
2
2
|
import { AFTER_NAVIGATE_EVENT } from "../transitions/page-events.js";
|
|
3
3
|
import {
|
|
4
4
|
COLOR_SCHEME_CHANGED_EVENT,
|
|
@@ -56,8 +56,8 @@ function ColorSchemeProvider({
|
|
|
56
56
|
Boolean(colorMode.respectPrefersColorScheme)
|
|
57
57
|
) : null;
|
|
58
58
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
59
|
-
/* @__PURE__ */ jsx("style", {
|
|
60
|
-
bootstrap !== null && /* @__PURE__ */ jsx("script", {
|
|
59
|
+
/* @__PURE__ */ jsx("style", { rawHtml: cssText }),
|
|
60
|
+
bootstrap !== null && /* @__PURE__ */ jsx("script", { rawHtml: bootstrap })
|
|
61
61
|
] });
|
|
62
62
|
}
|
|
63
63
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Fragment, jsx, jsxs } from "
|
|
1
|
+
import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
2
2
|
import {
|
|
3
3
|
AFTER_NAVIGATE_EVENT,
|
|
4
4
|
BEFORE_SWAP_EVENT
|
|
@@ -105,8 +105,8 @@ function ThemePackProvider({
|
|
|
105
105
|
const configuredVersion = enabled[configuredSlug];
|
|
106
106
|
const noscriptHref = configuredSlug !== DEFAULT_THEME_PACK_SLUG && configuredVersion !== void 0 ? buildPackCssUrl(base, configuredSlug, configuredVersion) : null;
|
|
107
107
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
108
|
-
/* @__PURE__ */ jsx("style", {
|
|
109
|
-
/* @__PURE__ */ jsx("script", {
|
|
108
|
+
/* @__PURE__ */ jsx("style", { rawHtml: THEME_PACK_LATCH_CSS }),
|
|
109
|
+
/* @__PURE__ */ jsx("script", { rawHtml: bootstrap }),
|
|
110
110
|
noscriptHref !== null && /* @__PURE__ */ jsx("noscript", { children: /* @__PURE__ */ jsx("link", { rel: "stylesheet", href: noscriptHref }) })
|
|
111
111
|
] });
|
|
112
112
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type { VNode } from "preact";
|
|
2
|
+
import type { Description } from "@takazudo/zfb/zudo-react";
|
|
4
3
|
import { type ThemeToggleProps } from "../theme-toggle/index.js";
|
|
5
4
|
/**
|
|
6
5
|
* Default-export appearance menu for theme preference. Wraps the bare
|
|
@@ -10,4 +9,4 @@ import { type ThemeToggleProps } from "../theme-toggle/index.js";
|
|
|
10
9
|
* want to control hydration timing themselves) should import the bare
|
|
11
10
|
* component from `@takazudo/zudo-doc/theme-toggle` instead.
|
|
12
11
|
*/
|
|
13
|
-
export default function ThemeToggle(props?: ThemeToggleProps):
|
|
12
|
+
export default function ThemeToggle(props?: ThemeToggleProps): Description;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ThemePackDialogProps } from "../theme-pack-switcher/index.js";
|
|
2
|
-
export declare function ThemePackDialog({ open, onClose, order, active, base }: ThemePackDialogProps): import("
|
|
2
|
+
export declare function ThemePackDialog({ open, onClose, order, active, base }: ThemePackDialogProps): import("@takazudo/zfb").Description;
|
|
3
3
|
export declare namespace ThemePackDialog {
|
|
4
4
|
var displayName: string;
|
|
5
5
|
}
|
|
@@ -1,69 +1,70 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { Fragment, jsx, jsxs } from "
|
|
3
|
-
import {
|
|
2
|
+
import { Fragment, jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
3
|
+
import { computed, For, getScope, Show, signal } from "@takazudo/zfb/zudo-react";
|
|
4
4
|
import { Close } from "../icons/index.js";
|
|
5
5
|
import { AFTER_NAVIGATE_EVENT } from "../transitions/index.js";
|
|
6
6
|
import { applyThemePack, DEFAULT_THEME_PACK_SLUG } from "../theme-pack-switcher/theme-pack-sync.js";
|
|
7
7
|
import { connectActivePackSync } from "../theme-pack-switcher/switcher-state.js";
|
|
8
|
-
import {
|
|
8
|
+
import { modalDialog } from "../use-modal-dialog/index.js";
|
|
9
9
|
import { parseThemePackRegistryPayload, resolveDialogMode } from "./dialog-state.js";
|
|
10
10
|
import { ThemePackCard } from "./theme-pack-card.js";
|
|
11
11
|
const COLOR_SCHEME_CHANGED_EVENT = "color-scheme-changed";
|
|
12
12
|
const LAUNCHER_SELECTOR = "[data-switcher-launcher]";
|
|
13
13
|
function ThemePackDialog({ open, onClose, order, active, base }) {
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
);
|
|
19
|
-
const
|
|
20
|
-
const launcherFocusRef =
|
|
14
|
+
const scope = getScope();
|
|
15
|
+
const registryState = signal("idle");
|
|
16
|
+
const packs = signal(null);
|
|
17
|
+
const mode = signal("light");
|
|
18
|
+
const activeSlug = signal(active);
|
|
19
|
+
const retryToken = signal(0);
|
|
20
|
+
const launcherFocusRef = { current: null };
|
|
21
21
|
const hasBrowsablePacks = order.some((entry) => entry.slug !== DEFAULT_THEME_PACK_SLUG);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
scope.onActivate(() => connectActivePackSync((slug) => {
|
|
23
|
+
activeSlug.value = slug;
|
|
24
|
+
}));
|
|
25
|
+
scope.onActivate(() => {
|
|
26
|
+
const sync = () => {
|
|
27
|
+
mode.value = resolveDialogMode(document.documentElement.getAttribute("data-theme"));
|
|
28
|
+
};
|
|
29
|
+
sync();
|
|
27
30
|
window.addEventListener(COLOR_SCHEME_CHANGED_EVENT, sync);
|
|
28
31
|
return () => window.removeEventListener(COLOR_SCHEME_CHANGED_EVENT, sync);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
}, [open, hasBrowsablePacks]);
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
if (fetchToken === 0) return;
|
|
44
|
-
let cancelled = false;
|
|
45
|
-
setRegistryState("loading");
|
|
46
|
-
fetch(`${base}theme-packs/index.json`).then((res) => {
|
|
32
|
+
});
|
|
33
|
+
scope.effect(() => {
|
|
34
|
+
if (open.value) launcherFocusRef.current = document.querySelector(LAUNCHER_SELECTOR);
|
|
35
|
+
});
|
|
36
|
+
scope.effect(() => {
|
|
37
|
+
if (!open.value || !hasBrowsablePacks || packs.value !== null) return;
|
|
38
|
+
retryToken.value;
|
|
39
|
+
const controller = new AbortController();
|
|
40
|
+
const abortFromScope = () => controller.abort();
|
|
41
|
+
scope.abortSignal.addEventListener("abort", abortFromScope, { once: true });
|
|
42
|
+
registryState.value = "loading";
|
|
43
|
+
void fetch(`${base}theme-packs/index.json`, { signal: controller.signal }).then((res) => {
|
|
47
44
|
if (!res.ok) throw new Error(`theme-packs/index.json responded ${res.status}`);
|
|
48
45
|
return res.json();
|
|
49
46
|
}).then((data) => {
|
|
50
|
-
if (
|
|
47
|
+
if (controller.signal.aborted || scope.abortSignal.aborted) return;
|
|
51
48
|
const parsed = parseThemePackRegistryPayload(data);
|
|
52
49
|
if (parsed === null) {
|
|
53
|
-
|
|
50
|
+
registryState.value = "error";
|
|
54
51
|
return;
|
|
55
52
|
}
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
packs.value = parsed;
|
|
54
|
+
registryState.value = "loaded";
|
|
58
55
|
}).catch(() => {
|
|
59
|
-
if (!
|
|
56
|
+
if (!controller.signal.aborted && !scope.abortSignal.aborted) registryState.value = "error";
|
|
60
57
|
});
|
|
61
58
|
return () => {
|
|
62
|
-
|
|
59
|
+
controller.abort();
|
|
60
|
+
scope.abortSignal.removeEventListener("abort", abortFromScope);
|
|
61
|
+
if (registryState.value === "loading") registryState.value = "idle";
|
|
63
62
|
};
|
|
64
|
-
}
|
|
65
|
-
const retry =
|
|
66
|
-
|
|
63
|
+
});
|
|
64
|
+
const retry = () => {
|
|
65
|
+
retryToken.value++;
|
|
66
|
+
};
|
|
67
|
+
const { dialogRef, handleBackdropClick } = modalDialog(scope, {
|
|
67
68
|
isOpen: open,
|
|
68
69
|
onClose,
|
|
69
70
|
navigateEvent: AFTER_NAVIGATE_EVENT,
|
|
@@ -75,72 +76,65 @@ function ThemePackDialog({ open, onClose, order, active, base }) {
|
|
|
75
76
|
"dialog",
|
|
76
77
|
{
|
|
77
78
|
ref: dialogRef,
|
|
78
|
-
|
|
79
|
+
"on:click": handleBackdropClick,
|
|
79
80
|
"aria-labelledby": "zd-theme-pack-dialog-title",
|
|
80
|
-
|
|
81
|
-
children: /* @__PURE__ */ jsxs("div", {
|
|
82
|
-
/* @__PURE__ */ jsxs("div", {
|
|
83
|
-
/* @__PURE__ */ jsx("h2", { id: "zd-theme-pack-dialog-title",
|
|
81
|
+
class: "z-modal m-auto max-h-[85vh] w-[calc(100vw_-_2rem)] max-w-[64rem] rounded-lg border border-muted bg-surface p-0 text-fg backdrop:z-modal-backdrop backdrop:bg-bg/80",
|
|
82
|
+
children: /* @__PURE__ */ jsxs("div", { class: "flex max-h-[85vh] flex-col", children: [
|
|
83
|
+
/* @__PURE__ */ jsxs("div", { class: "flex shrink-0 items-center justify-between gap-hsp-sm border-b border-muted px-hsp-lg py-vsp-sm", children: [
|
|
84
|
+
/* @__PURE__ */ jsx("h2", { id: "zd-theme-pack-dialog-title", class: "text-title font-bold text-fg", children: "Preview theme" }),
|
|
84
85
|
/* @__PURE__ */ jsx(
|
|
85
86
|
"button",
|
|
86
87
|
{
|
|
87
88
|
type: "button",
|
|
88
|
-
|
|
89
|
+
"on:click": () => dialogRef.current?.close(),
|
|
89
90
|
"aria-label": "Close",
|
|
90
|
-
|
|
91
|
-
children: /* @__PURE__ */ jsx(Close, {
|
|
91
|
+
class: "flex items-center justify-center text-muted transition-colors duration-0 hover:text-fg",
|
|
92
|
+
children: /* @__PURE__ */ jsx(Close, { class: "h-icon-sm w-icon-sm" })
|
|
92
93
|
}
|
|
93
94
|
)
|
|
94
95
|
] }),
|
|
95
|
-
/* @__PURE__ */ jsx("div", {
|
|
96
|
-
registryState === "error"
|
|
96
|
+
/* @__PURE__ */ jsx("div", { class: "min-h-0 flex-1 overflow-y-auto overscroll-contain px-hsp-lg py-vsp-lg", children: !hasBrowsablePacks ? /* @__PURE__ */ jsx("p", { class: "py-vsp-xl text-center text-small text-muted", children: "No other theme packs are configured \u2014 only the default look is available." }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
97
|
+
/* @__PURE__ */ jsx(Show, { when: computed(() => registryState.value === "error"), children: () => /* @__PURE__ */ jsxs(
|
|
97
98
|
"div",
|
|
98
99
|
{
|
|
99
100
|
role: "alert",
|
|
100
|
-
|
|
101
|
+
class: "mx-auto flex flex-col items-center gap-vsp-xs rounded-[0.75rem] border border-danger bg-bg px-hsp-lg py-vsp-lg text-center text-small text-danger",
|
|
101
102
|
children: [
|
|
102
103
|
/* @__PURE__ */ jsx("p", { children: "Could not load theme previews." }),
|
|
103
104
|
/* @__PURE__ */ jsx(
|
|
104
105
|
"button",
|
|
105
106
|
{
|
|
106
107
|
type: "button",
|
|
107
|
-
|
|
108
|
-
|
|
108
|
+
"on:click": retry,
|
|
109
|
+
class: "rounded border border-danger px-hsp-md py-hsp-2xs text-caption text-danger transition-colors hover:bg-danger/10",
|
|
109
110
|
children: "Retry"
|
|
110
111
|
}
|
|
111
112
|
)
|
|
112
113
|
]
|
|
113
114
|
}
|
|
114
|
-
),
|
|
115
|
-
(registryState === "idle" || registryState === "loading")
|
|
116
|
-
/* @__PURE__ */ jsx("p", { role: "status",
|
|
115
|
+
) }),
|
|
116
|
+
/* @__PURE__ */ jsx(Show, { when: computed(() => registryState.value === "idle" || registryState.value === "loading"), children: () => /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
117
|
+
/* @__PURE__ */ jsx("p", { role: "status", class: "sr-only", children: "Loading theme previews\u2026" }),
|
|
117
118
|
/* @__PURE__ */ jsx(
|
|
118
119
|
"div",
|
|
119
120
|
{
|
|
120
121
|
"aria-hidden": "true",
|
|
121
|
-
|
|
122
|
-
children: order
|
|
123
|
-
"div",
|
|
124
|
-
{
|
|
125
|
-
className: "h-[10rem] animate-pulse rounded-lg border border-muted bg-surface/50"
|
|
126
|
-
},
|
|
127
|
-
entry.slug
|
|
128
|
-
))
|
|
122
|
+
class: "grid grid-cols-1 gap-hsp-lg sm:grid-cols-2 lg:grid-cols-3",
|
|
123
|
+
children: /* @__PURE__ */ jsx(For, { each: computed(() => order), by: (entry) => entry.slug, children: () => /* @__PURE__ */ jsx("div", { class: "h-[10rem] rounded-lg border border-muted bg-surface/50" }) })
|
|
129
124
|
}
|
|
130
125
|
)
|
|
131
|
-
] }),
|
|
132
|
-
packs !== null
|
|
126
|
+
] }) }),
|
|
127
|
+
/* @__PURE__ */ jsx(Show, { when: computed(() => packs.value !== null), children: () => /* @__PURE__ */ jsx("div", { class: "grid grid-cols-1 gap-hsp-lg sm:grid-cols-2 lg:grid-cols-3", children: /* @__PURE__ */ jsx(For, { each: computed(() => (packs.value ?? []).map((meta) => ({ meta, key: `${meta.slug}:${mode.value}` }))), by: (item) => item.key, children: (item) => /* @__PURE__ */ jsx(
|
|
133
128
|
ThemePackCard,
|
|
134
129
|
{
|
|
135
|
-
meta,
|
|
136
|
-
mode,
|
|
137
|
-
isActive: meta.slug === activeSlug,
|
|
130
|
+
meta: item.value.meta,
|
|
131
|
+
mode: mode.value,
|
|
132
|
+
isActive: computed(() => item.value.meta.slug === activeSlug.value),
|
|
138
133
|
onSelect: () => {
|
|
139
|
-
void applyThemePack(meta.slug);
|
|
134
|
+
void applyThemePack(item.value.meta.slug);
|
|
140
135
|
}
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
)) })
|
|
136
|
+
}
|
|
137
|
+
) }) }) })
|
|
144
138
|
] }) })
|
|
145
139
|
] })
|
|
146
140
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type { VNode } from "preact";
|
|
2
|
+
import { type Child, type ReadonlySignal } from "@takazudo/zfb/zudo-react";
|
|
4
3
|
import type { ThemePackMeta } from "../theme-packs-registry/index.js";
|
|
5
4
|
export interface ThemePackCardProps {
|
|
6
5
|
/** Full pack meta (incl. resolved preview swatches) for one registry entry. */
|
|
@@ -10,7 +9,7 @@ export interface ThemePackCardProps {
|
|
|
10
9
|
* badge shown alongside the name). */
|
|
11
10
|
mode: "light" | "dark";
|
|
12
11
|
/** Whether this card's pack is the currently active one (selected ring). */
|
|
13
|
-
isActive: boolean
|
|
12
|
+
isActive: boolean | ReadonlySignal<boolean>;
|
|
14
13
|
/** Apply this pack — the caller wires this to `applyThemePack(meta.slug)`;
|
|
15
14
|
* this component stays a plain presentational click forwarder. */
|
|
16
15
|
onSelect: () => void;
|
|
@@ -22,4 +21,4 @@ export interface ThemePackCardProps {
|
|
|
22
21
|
* — ADR Decision 7 — so the selected ring is driven by `isActive`, not by
|
|
23
22
|
* the click itself).
|
|
24
23
|
*/
|
|
25
|
-
export declare function ThemePackCard({ meta, mode, isActive, onSelect }: ThemePackCardProps):
|
|
24
|
+
export declare function ThemePackCard({ meta, mode, isActive, onSelect }: ThemePackCardProps): Child;
|
|
@@ -1,39 +1,41 @@
|
|
|
1
|
-
import { jsx, jsxs } from "
|
|
1
|
+
import { jsx, jsxs } from "@takazudo/zfb/zudo-react/jsx-runtime";
|
|
2
|
+
import { computed } from "@takazudo/zfb/zudo-react";
|
|
2
3
|
function ThemePackCard({ meta, mode, isActive, onSelect }) {
|
|
3
4
|
const swatches = meta.preview[mode];
|
|
5
|
+
const selected = computed(() => typeof isActive === "boolean" ? isActive : isActive.value);
|
|
4
6
|
const fontCaption = meta.fonts.display ?? meta.fonts.sans;
|
|
5
7
|
return /* @__PURE__ */ jsxs(
|
|
6
8
|
"button",
|
|
7
9
|
{
|
|
8
10
|
type: "button",
|
|
9
|
-
|
|
10
|
-
"aria-pressed":
|
|
11
|
+
"on:click": onSelect,
|
|
12
|
+
"aria-pressed": selected,
|
|
11
13
|
"aria-label": `Apply ${meta.name} theme pack \u2014 ${meta.mode === "dark" ? "Dark" : "Light"}. ${meta.description}`,
|
|
12
|
-
|
|
14
|
+
class: computed(() => `flex flex-col gap-vsp-2xs rounded-lg border p-hsp-sm text-left transition-colors duration-0 focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 ${selected.value ? "border-accent zd-theme-pack-active-ring" : "border-muted hover:border-accent"}`),
|
|
13
15
|
children: [
|
|
14
16
|
/* @__PURE__ */ jsxs(
|
|
15
17
|
"div",
|
|
16
18
|
{
|
|
17
19
|
"aria-hidden": "true",
|
|
18
|
-
|
|
20
|
+
class: "flex flex-col gap-vsp-3xs border p-hsp-sm",
|
|
19
21
|
style: {
|
|
20
|
-
|
|
22
|
+
"background-color": swatches.bg,
|
|
21
23
|
color: swatches.fg,
|
|
22
|
-
|
|
24
|
+
"border-color": `color-mix(in oklch, ${swatches.fg} 15%, transparent)`
|
|
23
25
|
},
|
|
24
26
|
children: [
|
|
25
|
-
/* @__PURE__ */ jsx("p", {
|
|
26
|
-
/* @__PURE__ */ jsxs("p", {
|
|
27
|
+
/* @__PURE__ */ jsx("p", { class: "text-title font-bold", children: "Aa Heading" }),
|
|
28
|
+
/* @__PURE__ */ jsxs("p", { class: "text-small", children: [
|
|
27
29
|
"The quick brown fox jumps over",
|
|
28
30
|
" ",
|
|
29
|
-
/* @__PURE__ */ jsx("span", {
|
|
31
|
+
/* @__PURE__ */ jsx("span", { class: "underline", style: { color: swatches.accent }, children: "the lazy dog" }),
|
|
30
32
|
"."
|
|
31
33
|
] }),
|
|
32
34
|
/* @__PURE__ */ jsxs(
|
|
33
35
|
"p",
|
|
34
36
|
{
|
|
35
|
-
|
|
36
|
-
style: {
|
|
37
|
+
class: "rounded px-hsp-2xs font-mono text-caption",
|
|
38
|
+
style: { "background-color": `color-mix(in oklch, ${swatches.fg} 8%, transparent)` },
|
|
37
39
|
children: [
|
|
38
40
|
/* @__PURE__ */ jsx("span", { style: { color: swatches.syntax.keyword }, children: "const" }),
|
|
39
41
|
" ",
|
|
@@ -57,12 +59,12 @@ function ThemePackCard({ meta, mode, isActive, onSelect }) {
|
|
|
57
59
|
]
|
|
58
60
|
}
|
|
59
61
|
),
|
|
60
|
-
/* @__PURE__ */ jsxs("div", {
|
|
61
|
-
/* @__PURE__ */ jsx("span", {
|
|
62
|
-
/* @__PURE__ */ jsx("span", {
|
|
62
|
+
/* @__PURE__ */ jsxs("div", { class: "flex items-center justify-between gap-hsp-sm", children: [
|
|
63
|
+
/* @__PURE__ */ jsx("span", { class: "min-w-0 truncate text-body font-bold text-fg", children: meta.name }),
|
|
64
|
+
/* @__PURE__ */ jsx("span", { class: "shrink-0 rounded-full border border-muted px-hsp-sm text-micro tracking-wide text-muted uppercase", children: meta.mode === "dark" ? "Dark" : "Light" })
|
|
63
65
|
] }),
|
|
64
|
-
/* @__PURE__ */ jsx("p", {
|
|
65
|
-
/* @__PURE__ */ jsx("p", {
|
|
66
|
+
/* @__PURE__ */ jsx("p", { class: "text-caption text-muted", children: meta.description }),
|
|
67
|
+
/* @__PURE__ */ jsx("p", { class: "text-micro text-muted", children: fontCaption })
|
|
66
68
|
]
|
|
67
69
|
}
|
|
68
70
|
);
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
/** @jsxRuntime automatic */
|
|
2
|
-
|
|
3
|
-
import type { JSX } from "preact";
|
|
2
|
+
import { type Component, type Child, type ReadonlySignal } from "@takazudo/zfb/zudo-react";
|
|
4
3
|
import { type ThemePackOrderEntry } from "./switcher-state.js";
|
|
5
4
|
export type { ThemePackOrderEntry } from "./switcher-state.js";
|
|
6
5
|
/**
|
|
@@ -27,7 +26,7 @@ export interface ThemePackSwitcherProps {
|
|
|
27
26
|
* via `applyThemePack(slug)` and the dialog stays open (ADR Decision 7). */
|
|
28
27
|
export interface ThemePackDialogProps {
|
|
29
28
|
/** Whether the dialog is currently open. */
|
|
30
|
-
open: boolean
|
|
29
|
+
open: ReadonlySignal<boolean>;
|
|
31
30
|
/** Close callback (Esc / ✕ / backdrop — the dialog's own close paths). */
|
|
32
31
|
onClose: () => void;
|
|
33
32
|
/** The switcher order — also the dialog grid order. */
|
|
@@ -38,14 +37,14 @@ export interface ThemePackDialogProps {
|
|
|
38
37
|
base: string;
|
|
39
38
|
}
|
|
40
39
|
/** The browse-all dialog component contract (#2825). */
|
|
41
|
-
export type ThemePackDialogComponent =
|
|
40
|
+
export type ThemePackDialogComponent = Component<ThemePackDialogProps>;
|
|
42
41
|
/**
|
|
43
42
|
* The bottom-right theme-pack switcher flyout. Mounted (settings-gated on
|
|
44
43
|
* `themePackSwitcher`) by the package body-end islands via
|
|
45
44
|
* `Island({ when: "load" })` — see
|
|
46
45
|
* `../doc-body-end-islands/theme-pack-switcher-island.tsx`.
|
|
47
46
|
*/
|
|
48
|
-
export declare function ThemePackSwitcher({ active, order, base, pendingUntilHydrated, }: ThemePackSwitcherProps):
|
|
47
|
+
export declare function ThemePackSwitcher({ active, order, base, pendingUntilHydrated, }: ThemePackSwitcherProps): Child;
|
|
49
48
|
export declare namespace ThemePackSwitcher {
|
|
50
49
|
var displayName: string;
|
|
51
50
|
}
|