@takazudo/zudo-doc 4.4.13 → 5.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 +65 -0
- package/dist/category-nav/index.d.ts +31 -0
- package/dist/category-nav/index.js +15 -3
- package/dist/category-tree-nav/index.d.ts +32 -0
- package/dist/category-tree-nav/index.js +16 -4
- package/dist/chrome/derive.d.ts +32 -3
- package/dist/chrome/derive.js +26 -7
- package/dist/code-syntax/mermaid-init-script.d.ts +6 -7
- package/dist/config.d.ts +22 -5
- package/dist/config.js +11 -0
- package/dist/content.css +1 -0
- package/dist/desktop-toc-toggle-island/index.d.ts +7 -0
- package/dist/desktop-toc-toggle-island/index.js +64 -0
- package/dist/doc-page-renderer/index.d.ts +12 -1
- package/dist/doc-page-renderer/index.js +10 -3
- package/dist/doc-page-shell/index.d.ts +13 -0
- package/dist/doc-page-shell/index.js +37 -3
- package/dist/doclayout/doc-layout.d.ts +14 -0
- package/dist/doclayout/doc-layout.js +4 -2
- package/dist/features.css +82 -10
- package/dist/head-with-defaults/index.js +1 -0
- package/dist/header/header.d.ts +1 -1
- package/dist/header/header.js +2 -2
- package/dist/header/types.d.ts +7 -0
- package/dist/header-with-defaults/index.d.ts +2 -0
- package/dist/header-with-defaults/index.js +9 -2
- package/dist/i18n-version/version-switcher.d.ts +36 -0
- package/dist/i18n-version/version-switcher.js +43 -3
- package/dist/inline-version-switcher/index.d.ts +18 -0
- package/dist/inline-version-switcher/index.js +3 -1
- package/dist/mdx-components/index.d.ts +11 -0
- package/dist/mdx-components/index.js +4 -4
- package/dist/nav-data-prep/index.d.ts +18 -3
- package/dist/nav-data-prep/index.js +3 -3
- package/dist/plugins/internal/claude-resources/generate.d.ts +11 -0
- package/dist/plugins/internal/claude-resources/generate.js +16 -13
- package/dist/plugins/internal/claude-resources/index.js +6 -1
- package/dist/preset.d.ts +16 -7
- package/dist/preset.js +8 -6
- package/dist/routes/_context.d.ts +1 -1
- package/dist/safelist.css +1 -1
- package/dist/settings.d.ts +17 -2
- package/dist/site-tree-nav/index.d.ts +21 -0
- package/dist/site-tree-nav/index.js +26 -7
- package/dist/theme-packs/academia/meta.json +1 -1
- package/dist/theme-packs/academia/pack.css +13 -3
- package/dist/theme-packs/blueprint/meta.json +1 -1
- package/dist/theme-packs/blueprint/pack.css +9 -0
- package/dist/theme-packs/broadsheet/meta.json +1 -1
- package/dist/theme-packs/broadsheet/pack.css +9 -0
- package/dist/theme-packs/drift/meta.json +1 -1
- package/dist/theme-packs/drift/pack.css +9 -0
- package/dist/theme-packs/fjord/meta.json +1 -1
- package/dist/theme-packs/fjord/pack.css +9 -0
- package/dist/theme-packs/hearth/meta.json +1 -1
- package/dist/theme-packs/hearth/pack.css +9 -0
- package/dist/theme-packs/hollow/meta.json +1 -1
- package/dist/theme-packs/hollow/pack.css +9 -0
- package/dist/theme-packs/matcha/meta.json +1 -1
- package/dist/theme-packs/matcha/pack.css +9 -0
- package/dist/theme-packs/nocturne/meta.json +1 -1
- package/dist/theme-packs/nocturne/pack.css +9 -0
- package/dist/theme-packs/observatory/meta.json +1 -1
- package/dist/theme-packs/observatory/pack.css +18 -0
- package/dist/theme-packs/onyx/meta.json +1 -1
- package/dist/theme-packs/onyx/pack.css +9 -0
- package/dist/theme-packs/sakura/meta.json +1 -1
- package/dist/theme-packs/sakura/pack.css +9 -0
- package/dist/theme-packs/sumi/meta.json +1 -1
- package/dist/theme-packs/sumi/pack.css +9 -0
- package/dist/theme-packs/timberline/meta.json +1 -1
- package/dist/theme-packs/timberline/pack.css +9 -0
- package/dist/theme-packs-registry/validator.js +38 -6
- package/dist/toc-prepaint/index.d.ts +60 -0
- package/dist/toc-prepaint/index.js +44 -0
- package/dist/url-helpers/index.d.ts +1 -1
- package/dist/url-helpers/index.js +2 -2
- package/dist/version-availability/index.d.ts +75 -0
- package/dist/version-availability/index.js +56 -0
- package/dist/versions-page/index.d.ts +9 -1
- package/dist/versions-page/index.js +6 -2
- package/eject/header/header.tsx +3 -2
- package/eject/header/types.ts +7 -0
- package/package.json +17 -10
- package/tsconfig.base.json +2 -1
- package/zfb-config-shim.d.ts +22 -204
|
@@ -24,6 +24,17 @@ export interface CreateMdxComponentsOptions {
|
|
|
24
24
|
* drop it.
|
|
25
25
|
*/
|
|
26
26
|
locale: string;
|
|
27
|
+
/**
|
|
28
|
+
* Active version slug for a `/v/{version}` route render, or `undefined` for
|
|
29
|
+
* latest/unversioned pages. Injected into each `navData` wrapper as the
|
|
30
|
+
* `currentVersion` prop alongside `lang` (#3218) so CategoryNav /
|
|
31
|
+
* CategoryTreeNav / SiteTreeNav resolve the version's doc collection and
|
|
32
|
+
* remap emitted hrefs into their versioned form — mirroring the sidebar's
|
|
33
|
+
* `buildSidebarNodes` two-step. Applies equally to a host-supplied
|
|
34
|
+
* `ctx.components` override, since the prop is injected here regardless of
|
|
35
|
+
* which wrapper `navData` holds.
|
|
36
|
+
*/
|
|
37
|
+
currentVersion?: string;
|
|
27
38
|
/** Host-supplied locale-aware nav wrappers. */
|
|
28
39
|
navData: MdxNavData;
|
|
29
40
|
/**
|
|
@@ -109,15 +109,15 @@ function makeEnlargeableParagraph(imageEnlarge, ContentImg) {
|
|
|
109
109
|
};
|
|
110
110
|
}
|
|
111
111
|
function createMdxComponents(options) {
|
|
112
|
-
const { settings, locale, navData, extras } = options;
|
|
112
|
+
const { settings, locale, currentVersion, navData, extras } = options;
|
|
113
113
|
const ContentImg = makeContentImg(settings.base);
|
|
114
114
|
const EnlargeableParagraph = makeEnlargeableParagraph(
|
|
115
115
|
settings.imageEnlarge,
|
|
116
116
|
ContentImg
|
|
117
117
|
);
|
|
118
|
-
const CategoryNavBound = (props) => navData.CategoryNav({ ...props, lang: locale });
|
|
119
|
-
const CategoryTreeNavBound = (props) => navData.CategoryTreeNav({ ...props, lang: locale });
|
|
120
|
-
const SiteTreeNavBound = (props) => navData.SiteTreeNav({ ...props, lang: locale });
|
|
118
|
+
const CategoryNavBound = (props) => navData.CategoryNav({ ...props, lang: locale, currentVersion });
|
|
119
|
+
const CategoryTreeNavBound = (props) => navData.CategoryTreeNav({ ...props, lang: locale, currentVersion });
|
|
120
|
+
const SiteTreeNavBound = (props) => navData.SiteTreeNav({ ...props, lang: locale, currentVersion });
|
|
121
121
|
return {
|
|
122
122
|
...defaultComponents,
|
|
123
123
|
// img override: rewrites root-relative src to include settings.base.
|
|
@@ -2,7 +2,14 @@ import type { LocaleLink } from "../url-helpers/index.js";
|
|
|
2
2
|
export type { LocaleLink };
|
|
3
3
|
/** Minimal nav node shape required by nav-data-prep functions. */
|
|
4
4
|
export interface NavDataPrepNode {
|
|
5
|
-
|
|
5
|
+
/**
|
|
6
|
+
* Content slug, used to rebuild a versioned href. Optional so the public
|
|
7
|
+
* nav-wrapper node shapes (`CategoryNavNode` / `CategoryTreeNavNode`),
|
|
8
|
+
* which predate #3218 and never carried a slug, still satisfy this
|
|
9
|
+
* constraint — a node without one keeps its href verbatim through
|
|
10
|
+
* {@link remapVersionedHrefs}.
|
|
11
|
+
*/
|
|
12
|
+
slug?: string;
|
|
6
13
|
href?: string;
|
|
7
14
|
label: string;
|
|
8
15
|
children: NavDataPrepNode[];
|
|
@@ -12,10 +19,14 @@ export interface NavDataPrepHeaderNavItem {
|
|
|
12
19
|
label: string;
|
|
13
20
|
labelKey?: string;
|
|
14
21
|
path: string;
|
|
22
|
+
/** Suppress the `/v/{version}` prefix on this item's href when `false`. Default `true`. */
|
|
23
|
+
versioned?: boolean;
|
|
15
24
|
children?: Array<{
|
|
16
25
|
label: string;
|
|
17
26
|
labelKey?: string;
|
|
18
27
|
path: string;
|
|
28
|
+
/** Suppress the `/v/{version}` prefix on this child's href when `false`. Default `true`. */
|
|
29
|
+
versioned?: boolean;
|
|
19
30
|
}>;
|
|
20
31
|
}
|
|
21
32
|
/** Color mode config shape (subset of settings.colorMode). */
|
|
@@ -37,7 +48,11 @@ export interface RootMenuItem {
|
|
|
37
48
|
* `buildNavTree` always emits hrefs via `docsUrl()`; when the active route
|
|
38
49
|
* lives under `/v/{version}/...` we need the same nodes pointing at the
|
|
39
50
|
* versioned URL so internal nav clicks stay inside the version. Skips
|
|
40
|
-
* nodes without an href (link-only or category placeholders)
|
|
51
|
+
* nodes without an href (link-only or category placeholders) and nodes
|
|
52
|
+
* carrying no slug at all (the pre-#3218 public node shape — there is nothing
|
|
53
|
+
* to rebuild a versioned URL from, so the href is left verbatim). An empty
|
|
54
|
+
* slug is NOT skipped: `""` is the canonical docs-root slug (#1891) and
|
|
55
|
+
* `versionedDocsUrl("")` resolves to the per-version docs root.
|
|
41
56
|
*
|
|
42
57
|
* Parameterized version of `remapVersionedHrefs` from `_nav-data-prep.ts` —
|
|
43
58
|
* receives `versionedDocsUrl` as an argument instead of importing from `@/utils/base`.
|
|
@@ -53,7 +68,7 @@ export declare function remapVersionedHrefs<T extends NavDataPrepNode>(nodes: T[
|
|
|
53
68
|
* receives the headerNav, `t()`, and `navHref` as arguments instead of
|
|
54
69
|
* importing from `@/config/settings`, `@/config/i18n`, `@/utils/base`.
|
|
55
70
|
*/
|
|
56
|
-
export declare function buildRootMenuItems(lang: string, currentVersion: string | undefined, headerNav: NavDataPrepHeaderNavItem[], t: (key: string, lang: string) => string, navHref: (path: string, lang: string | undefined, version: string | undefined) => string): RootMenuItem[];
|
|
71
|
+
export declare function buildRootMenuItems(lang: string, currentVersion: string | undefined, headerNav: NavDataPrepHeaderNavItem[], t: (key: string, lang: string) => string, navHref: (path: string, lang: string | undefined, version: string | undefined, versioned?: boolean) => string): RootMenuItem[];
|
|
57
72
|
/**
|
|
58
73
|
* Locale-switcher links for the mobile sidebar footer and language switcher.
|
|
59
74
|
* Returns `undefined` when only one locale is configured (single-locale guard).
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function remapVersionedHrefs(nodes, version, nodeLang, versionedDocsUrl) {
|
|
2
2
|
return nodes.map((node) => {
|
|
3
3
|
const children = node.children.length > 0 ? remapVersionedHrefs(node.children, version, nodeLang, versionedDocsUrl) : node.children;
|
|
4
|
-
if (!node.href || node.slug.startsWith("__link__")) {
|
|
4
|
+
if (!node.href || node.slug === void 0 || node.slug.startsWith("__link__")) {
|
|
5
5
|
return children !== node.children ? { ...node, children } : node;
|
|
6
6
|
}
|
|
7
7
|
const newHref = versionedDocsUrl(node.slug, version, nodeLang);
|
|
@@ -11,10 +11,10 @@ function remapVersionedHrefs(nodes, version, nodeLang, versionedDocsUrl) {
|
|
|
11
11
|
function buildRootMenuItems(lang, currentVersion, headerNav, t, navHref) {
|
|
12
12
|
return headerNav.map((item) => ({
|
|
13
13
|
label: item.labelKey ? t(item.labelKey, lang) : item.label,
|
|
14
|
-
href: navHref(item.path, lang, currentVersion),
|
|
14
|
+
href: navHref(item.path, lang, currentVersion, item.versioned),
|
|
15
15
|
children: item.children?.map((child) => ({
|
|
16
16
|
label: child.labelKey ? t(child.labelKey, lang) : child.label,
|
|
17
|
-
href: navHref(child.path, lang, currentVersion)
|
|
17
|
+
href: navHref(child.path, lang, currentVersion, child.versioned)
|
|
18
18
|
}))
|
|
19
19
|
}));
|
|
20
20
|
}
|
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
export interface ClaudeResourcesConfig {
|
|
2
2
|
claudeDir: string;
|
|
3
|
+
/**
|
|
4
|
+
* The doc site's own root. Anchors project-specific excludes and defaults
|
|
5
|
+
* `scanRoot`. Note this does NOT itself decide where the `CLAUDE.md` walk
|
|
6
|
+
* runs — that is `scanRoot`.
|
|
7
|
+
*/
|
|
3
8
|
projectRoot?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Root of the `CLAUDE.md` walk and the base for the generated pages'
|
|
11
|
+
* relative paths, titles, and slugs. Defaults to `projectRoot`, so a caller
|
|
12
|
+
* that sets only `projectRoot` gets the pre-`scanRoot` behaviour.
|
|
13
|
+
*/
|
|
14
|
+
scanRoot?: string;
|
|
4
15
|
docsDir: string;
|
|
5
16
|
}
|
|
6
17
|
export declare function generateClaudeResourcesDocs(config: ClaudeResourcesConfig): {
|
|
@@ -94,6 +94,15 @@ function downgradeRepoRelativeLinks(content) {
|
|
|
94
94
|
(_, idx) => codeBlocks[Number(idx)] ?? ""
|
|
95
95
|
);
|
|
96
96
|
}
|
|
97
|
+
const EXCLUDED_DIR_NAMES = /* @__PURE__ */ new Set([
|
|
98
|
+
"node_modules",
|
|
99
|
+
"worktrees",
|
|
100
|
+
"dist",
|
|
101
|
+
"out",
|
|
102
|
+
"public",
|
|
103
|
+
"__inbox",
|
|
104
|
+
"test-results"
|
|
105
|
+
]);
|
|
97
106
|
function findClaudeMdFiles(dir, excludeDirs) {
|
|
98
107
|
const results = [];
|
|
99
108
|
if (!fs.existsSync(dir)) return results;
|
|
@@ -101,7 +110,7 @@ function findClaudeMdFiles(dir, excludeDirs) {
|
|
|
101
110
|
(d) => d.endsWith(path.sep) ? d.slice(0, -path.sep.length) : d
|
|
102
111
|
);
|
|
103
112
|
for (const item of fs.readdirSync(dir)) {
|
|
104
|
-
if (item
|
|
113
|
+
if (EXCLUDED_DIR_NAMES.has(item)) continue;
|
|
105
114
|
if (item.startsWith(".")) continue;
|
|
106
115
|
const itemPath = path.join(dir, item);
|
|
107
116
|
if (excludes.some((d) => itemPath === d || itemPath.startsWith(d + path.sep))) continue;
|
|
@@ -121,30 +130,24 @@ function findClaudeMdFiles(dir, excludeDirs) {
|
|
|
121
130
|
}
|
|
122
131
|
function generateClaudemdDocs(config) {
|
|
123
132
|
const projectRoot = config.projectRoot ?? config.claudeDir;
|
|
133
|
+
const scanRoot = config.scanRoot ?? projectRoot;
|
|
124
134
|
const outputDir = path.join(config.docsDir, "claude-md");
|
|
125
135
|
cleanDir(outputDir);
|
|
126
136
|
const excludeDirs = [
|
|
127
|
-
path.join(
|
|
128
|
-
path.join(projectRoot, "node_modules"),
|
|
129
|
-
path.join(projectRoot, "worktrees"),
|
|
130
|
-
path.join(projectRoot, "dist"),
|
|
131
|
-
path.join(projectRoot, "out"),
|
|
132
|
-
path.join(projectRoot, "public"),
|
|
133
|
-
path.join(projectRoot, "__inbox"),
|
|
134
|
-
path.join(projectRoot, "test-results"),
|
|
137
|
+
path.join(scanRoot, "e2e", "fixtures"),
|
|
135
138
|
path.join(projectRoot, "e2e", "fixtures"),
|
|
136
139
|
path.join(config.docsDir)
|
|
137
140
|
];
|
|
138
|
-
const files = findClaudeMdFiles(
|
|
141
|
+
const files = findClaudeMdFiles(scanRoot, excludeDirs);
|
|
139
142
|
if (files.length === 0) return [];
|
|
140
143
|
ensureDir(outputDir);
|
|
141
144
|
const items = [];
|
|
142
145
|
for (const filePath of files) {
|
|
143
|
-
const relPath = path.relative(
|
|
146
|
+
const relPath = path.relative(scanRoot, filePath);
|
|
144
147
|
const displayPath = `/${relPath}`;
|
|
145
148
|
const dirPart = path.dirname(relPath);
|
|
146
149
|
const slug = dirPart === "." ? "root" : dirPart.replace(/\//g, "--");
|
|
147
|
-
items.push({ displayPath, slug, relPath });
|
|
150
|
+
items.push({ displayPath, slug, relPath, absPath: filePath });
|
|
148
151
|
}
|
|
149
152
|
items.sort((a, b) => {
|
|
150
153
|
if (a.slug === "root") return -1;
|
|
@@ -164,7 +167,7 @@ function generateClaudemdDocs(config) {
|
|
|
164
167
|
);
|
|
165
168
|
}
|
|
166
169
|
emittedSlugs.set(item.slug, item.relPath);
|
|
167
|
-
const content = fs.readFileSync(
|
|
170
|
+
const content = fs.readFileSync(item.absPath, "utf8");
|
|
168
171
|
const mdx = `---
|
|
169
172
|
title: "${escapeTitle(item.displayPath)}"
|
|
170
173
|
description: "CLAUDE.md at ${escapeTitle(item.displayPath)}"
|
|
@@ -8,7 +8,12 @@ function runClaudeResourcesPreStep(options) {
|
|
|
8
8
|
const scanRoot = options.scanRoot === void 0 ? projectRoot : path.isAbsolute(options.scanRoot) ? options.scanRoot : path.resolve(projectRoot, options.scanRoot);
|
|
9
9
|
const docsDirInput = options.docsDir ?? "src/content/docs";
|
|
10
10
|
const docsDir = path.isAbsolute(docsDirInput) ? docsDirInput : path.resolve(projectRoot, docsDirInput);
|
|
11
|
-
return generateClaudeResourcesDocs({
|
|
11
|
+
return generateClaudeResourcesDocs({
|
|
12
|
+
claudeDir,
|
|
13
|
+
projectRoot,
|
|
14
|
+
scanRoot,
|
|
15
|
+
docsDir
|
|
16
|
+
});
|
|
12
17
|
}
|
|
13
18
|
export {
|
|
14
19
|
generateClaudeResourcesDocs,
|
package/dist/preset.d.ts
CHANGED
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
import { z } from "zod";
|
|
36
36
|
import type { ColorScheme } from "./color-scheme-utils.js";
|
|
37
37
|
import type { TagVocabularyEntry } from "./settings.js";
|
|
38
|
+
import type { DirectiveSpec } from "@takazudo/zfb/config";
|
|
38
39
|
/** A single locale's content directory (`settings.locales[code]`). */
|
|
39
40
|
export interface PresetLocaleConfig {
|
|
40
41
|
dir: string;
|
|
@@ -85,8 +86,6 @@ export interface PresetSettings {
|
|
|
85
86
|
docHistory?: boolean;
|
|
86
87
|
docHistoryExclude?: string[];
|
|
87
88
|
claudeResources?: PresetClaudeResourcesConfig | false;
|
|
88
|
-
/** "owner/repo" — when set, enables `#123` / SHA autolinks in markdown. Omit to disable entirely. */
|
|
89
|
-
githubAutolinksRepo?: string;
|
|
90
89
|
/**
|
|
91
90
|
* When `true` (the **default** when omitted — #2404), the preset adds the
|
|
92
91
|
* package-owned route-injection plugin (`@takazudo/zudo-doc/plugins/routes`).
|
|
@@ -139,12 +138,18 @@ export interface PresetSettings {
|
|
|
139
138
|
}
|
|
140
139
|
/**
|
|
141
140
|
* The directives recipe map (`markdown.features.directives`): directive name →
|
|
142
|
-
*
|
|
143
|
-
* `pages/_mdx-components.ts`)
|
|
144
|
-
*
|
|
145
|
-
*
|
|
141
|
+
* either a bare JSX component name string (registered in the host's
|
|
142
|
+
* `pages/_mdx-components.ts`), or a full {@link DirectiveSpec} object when a
|
|
143
|
+
* project needs a non-default shape (`kind: "leaf" | "text"`) or wants to
|
|
144
|
+
* suppress `titleFromLabel`. Mirrors zfb's own `markdown.features.directives`
|
|
145
|
+
* value type 1:1 (widened from a bare-string-only map — zfb 1.1.0's
|
|
146
|
+
* `DirectiveSpec` union was already accepted by the underlying `directives`
|
|
147
|
+
* feature; this alias had just not caught up). Passed in rather than
|
|
148
|
+
* hardcoded so a project can register its own directives without editing the
|
|
149
|
+
* preset; the showcase passes the canonical seven
|
|
150
|
+
* (note/tip/info/warning/danger/caution/details), all in short form.
|
|
146
151
|
*/
|
|
147
|
-
export type DirectiveVocabulary = Record<string,
|
|
152
|
+
export type DirectiveVocabulary = Record<string, DirectiveSpec>;
|
|
148
153
|
/**
|
|
149
154
|
* The UI-string translation table (`src/config/i18n.ts` `translations`).
|
|
150
155
|
* Locale code → key → translated string. Passed (not imported) so the preset's
|
|
@@ -220,6 +225,10 @@ export interface PresetResolveMarkdownLinks {
|
|
|
220
225
|
export interface PresetMarkdown {
|
|
221
226
|
features: Record<string, boolean | Record<string, unknown>>;
|
|
222
227
|
cjkFriendly?: boolean;
|
|
228
|
+
gfm: {
|
|
229
|
+
taskListItem: boolean;
|
|
230
|
+
footnoteDefinition: boolean;
|
|
231
|
+
};
|
|
223
232
|
}
|
|
224
233
|
export interface PresetCodeHighlight {
|
|
225
234
|
mode: "class";
|
package/dist/preset.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { assertNoCommaInVersionSlugs } from "./version-availability/index.js";
|
|
2
3
|
function zudoDocPreset({
|
|
3
4
|
settings,
|
|
4
5
|
buildDocsSchema,
|
|
@@ -7,13 +8,19 @@ function zudoDocPreset({
|
|
|
7
8
|
tagVocabulary,
|
|
8
9
|
colorSchemes
|
|
9
10
|
}) {
|
|
11
|
+
assertNoCommaInVersionSlugs(settings.versions);
|
|
10
12
|
const docsSchemaJson = z.toJSONSchema(buildDocsSchema());
|
|
11
13
|
return {
|
|
12
14
|
collections: buildCollections(settings, docsSchemaJson),
|
|
13
15
|
plugins: buildPlugins(settings, { translations, tagVocabulary, colorSchemes }),
|
|
14
16
|
markdown: {
|
|
15
17
|
features: buildMarkdownFeatures(settings, directiveVocabulary),
|
|
16
|
-
...settings.cjkFriendly !== void 0 ? { cjkFriendly: settings.cjkFriendly } : {}
|
|
18
|
+
...settings.cjkFriendly !== void 0 ? { cjkFriendly: settings.cjkFriendly } : {},
|
|
19
|
+
// zfb's gfm default is conservative (strikethrough + table only); the
|
|
20
|
+
// preset turns on the other two GFM constructs so task lists and
|
|
21
|
+
// footnotes render for real instead of as literal `[ ]` / `[^1]` text
|
|
22
|
+
// (#3197, #3208).
|
|
23
|
+
gfm: { taskListItem: true, footnoteDefinition: true }
|
|
17
24
|
},
|
|
18
25
|
// zfb class mode keeps renderer output semantic and delegates color to
|
|
19
26
|
// the package's --zfb-hi-* → --zd-syntax-* CSS adapter. Keep the upstream
|
|
@@ -88,11 +95,6 @@ function buildMarkdownFeatures(settings, directiveVocabulary) {
|
|
|
88
95
|
// Remaining opt-in features (#1804).
|
|
89
96
|
githubAlerts: true,
|
|
90
97
|
readingTime: true,
|
|
91
|
-
// owner/repo used to build `owner/repo#123`, `#123`, and SHA autolinks.
|
|
92
|
-
// Included only when settings.githubAutolinksRepo is set; omitted entirely
|
|
93
|
-
// for projects that don't configure a repo (restores old generated-project
|
|
94
|
-
// behaviour — zudo-doc#2321 Wave-0 correctness fix).
|
|
95
|
-
...settings.githubAutolinksRepo ? { githubAutolinks: { repo: settings.githubAutolinksRepo } } : {},
|
|
96
98
|
codeEnrichment: {},
|
|
97
99
|
// codeTabs accepts the `true` shorthand; <CodeGroup> is registered host-side.
|
|
98
100
|
codeTabs: true,
|
|
@@ -17,7 +17,7 @@ export declare const themePackRegistry: ThemePackRegistry | null;
|
|
|
17
17
|
export declare const i18n: import("../factory-context/index.js").FactoryI18n, defaultLocale: string, locales: readonly string[], getLocaleConfig: (locale: string) => {
|
|
18
18
|
label: string;
|
|
19
19
|
dir: string;
|
|
20
|
-
} | undefined, getLocaleLabel: (locale: string) => string, t: (key: string, locale?: string) => string, urlHelpers: import("../url-helpers/index.js").UrlHelpers, withBase: (path: string) => string, stripBase: (path: string) => string, docsUrl: (slug: string, lang?: string) => string, versionedDocsUrl: (slug: string, versionSlug: string, lang?: string) => string, navHref: (path: string, lang: string | undefined, currentVersion: string | undefined) => string, isDefaultLocaleOnlyPath: (path: string) => boolean, absoluteUrl: (pageUrl: string) => string | undefined, isExternal: (href: string) => boolean, resolveHref: (href: string) => string, buildLocaleLinks: (currentPath: string, currentLang: string) => import("../url-helpers/index.js").LocaleLink[], getCategoryOrder: () => string[], getNavSectionForSlug: (slug: string) => string | undefined, getNavSubtree: (tree: import("./_docs-helpers.js").DocNavNode[], categoryMatch?: string) => import("./_docs-helpers.js").DocNavNode[], extractHeadings: (body: string) => import("../extract-headings/index.js").HeadingItem[], resolveTagBound: (raw: string) => import("../tag-helpers/index.js").ResolvedTag, collectTags: (entries: ReadonlyArray<{
|
|
20
|
+
} | undefined, getLocaleLabel: (locale: string) => string, t: (key: string, locale?: string) => string, urlHelpers: import("../url-helpers/index.js").UrlHelpers, withBase: (path: string) => string, stripBase: (path: string) => string, docsUrl: (slug: string, lang?: string) => string, versionedDocsUrl: (slug: string, versionSlug: string, lang?: string) => string, navHref: (path: string, lang: string | undefined, currentVersion: string | undefined, versioned?: boolean) => string, isDefaultLocaleOnlyPath: (path: string) => boolean, absoluteUrl: (pageUrl: string) => string | undefined, isExternal: (href: string) => boolean, resolveHref: (href: string) => string, buildLocaleLinks: (currentPath: string, currentLang: string) => import("../url-helpers/index.js").LocaleLink[], getCategoryOrder: () => string[], getNavSectionForSlug: (slug: string) => string | undefined, getNavSubtree: (tree: import("./_docs-helpers.js").DocNavNode[], categoryMatch?: string) => import("./_docs-helpers.js").DocNavNode[], extractHeadings: (body: string) => import("../extract-headings/index.js").HeadingItem[], resolveTagBound: (raw: string) => import("../tag-helpers/index.js").ResolvedTag, collectTags: (entries: ReadonlyArray<{
|
|
21
21
|
slug: string;
|
|
22
22
|
data: {
|
|
23
23
|
slug?: string;
|
package/dist/safelist.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/* generated by gen-safelist.mjs — do not edit by hand */
|
|
2
|
-
@source inline("-link -mb-px -ml-hsp-sm -noscript -open -translate-x-full 2xl:w-[24px] [&::-webkit-details-marker]:hidden [&_a]:text-accent [&_a]:underline [&_nav]:mb-0 [data-admonition] [data-kbd-shortcut] [data-switcher-launcher] [doc-history-meta] [doc-history] [doc-layout] [llms-txt] [zudo-doc] a a2 abbr about above absent absolute accent accent- accent:accent- across activated active actual added admonition admonition- admonition-body admonition-title admonition/callout after after-breadcrumb after-content after-navigate after-sidebar after-title against agent agents ai-chat ai-chat-md ai-chat-trigger alert align-top all allow-same-origin allow-scripts allowed alone already already-executed already-multiline already-picked also always an anchor and and/or animate-pulse animate-spin announce ansehen antialiased any anywhere anzeigen app appear application/json application/xml applied applies apply approach are area arg argument aria-atomic aria-busy aria-controls aria-current aria-disabled aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-orientation aria-pressed aria-selected aria-valuemax aria-valuemin aria-valuenow arm arms arrows article as asc aside aspect-[1200/630] aspect-square asset- assets assistant async at attach attribute attributes auf authored auto auto-logo-mask autogenerated available avoid await away b back backdrop:bg-bg/30 backdrop:bg-bg/80 backdrop:bg-overlay/60 backdrop:z-modal-backdrop background background-color backtick backticks baked banner bare base base- base64 base:base- based batch be bearbeiten because been before below best between bg bg-[#fff] bg-accent bg-bg bg-chat-assistant-bg bg-chat-user-bg bg-code-bg bg-fg bg-info/10 bg-info/5 bg-muted bg-overlay/30 bg-surface bg-surface/50 bg-transparent bg-warning/10 bg-warning/5 bi bigint bin binaries bind blank blanks block blockquote blocks blur body body-end-components body-end-scripts bold boolean bootstrap border border-accent border-b border-b-2 border-b-[5px] border-bg/30 border-collapse border-danger border-dashed border-fg border-image border-info/30 border-l border-l-0 border-l-[3px] border-left-width border-muted border-none border-r border-radius border-solid border-t border-t-[2px] border-t-[3px] border-transparent border-warning/30 border-width border-y both bottom-hsp-lg bottom-vsp-xl boundaries box-border br brackets brand breadcrumb:end breadcrumb:start break-words brown browser browsers btn budget bug build built built-in bundler but button buttons by bypassed byte-identical bytes cached call callable called caller calls can cancellation cannot canonical canvas caption captures card card-grid carry cases cat-nav- catch category caught caution center center/contain ch chains change changed changelog changelogs changes child choose chrome chrome-font ci circle cite class class-less class-mode claude claude-agents claude-commands claude-md claude-skills cleaned clear clearing click client client-router client-side clip clobbering close closed closing code code-block-sr-announce code-group code-group-panel col col-resize colgroup collapses collapsible collision color color-scheme color-scheme-changed color-scheme-provider color-tweak colorization colors column comma command commands comment commercial commercial-font-denylist commit compare component component:github-link component:language-switcher component:search component:theme-toggle component:version-switcher composition compute computed concrete config configuration configure configured confuse connect const construction consumer consumes container containers containing contains content content-admonition content-layer content-link content-type content-wrapper:end content-wrapper:start contents context contract control controller controls converts copied copy corners correct correctly corrupt could count covered covers cp crashes created cross-component crumb- cs css css-presence ctx cur current cursor cursor-not-allowed cursor-pointer custom danger dark data data-active data-admonition data-auto-logo data-base data-close-search data-current-locale data-default-locale data-doc-description data-doc-metainfo data-doc-pager data-find-active data-find-match data-footer data-group-id data-header data-header-logo data-header-nav data-header-right data-kbd-shortcut data-language-switcher data-loading-index data-mermaid-enlarge-ready data-mermaid-rendered data-mermaid-src data-nav-active data-nav-item data-nav-item-dropdown data-nav-more data-nav-more-menu data-nav-more-toggle data-no-results data-open-search data-pan-active data-processed data-result-count-template data-search-count data-search-count-narrow data-search-dialog data-search-input data-search-placeholder data-search-results data-search-unavailable data-sidebar-hidden data-sidebar-resizer data-site-nav data-switcher-card data-switcher-launcher data-tab-btn data-tab-default data-tab-label data-tab-value data-tabs data-taglist-group data-testid data-theme data-theme-pack data-theme-pack-switcher data-theme/style data-trailing-slash data-variant data-version-banner data-version-latest data-version-menu data-version-rewire data-version-slug data-version-switcher data-version-toggle data-version-trigger-label data-zd-mobile-sidebar data-zd-mobile-toc data-zd-nosidebar data-zd-theme-pack-css data-zd-theme-pack-css-loading data-zd-toc data-zd-wide data-zfb-transition-persist dd decimal declaration declare declares decoration decoration-muted default default-transition-duration defaults del delegated delete deliberately dependency depth der desc description design design-token-panel design-token-trigger desktop desktop-sidebar desktop-sidebar-toggle desktop-sidebar-toggle-island destructive detach detached details determine deterministic dev develop dfn diagram diagrams dialog die dieser diff diff-line-added diff-line-content diff-line-empty diff-line-num diff-line-removed diff-row different dir directly directories directory disabled disabled:opacity-50 disabled:pointer-events-none disc display display:none dist distance distinct div dl do doc doc-card- doc-content-band doc-history doc-history-generate doc-history-panel doc-history-trigger doc-page doc-pager doc-prose doc-title docs docs- docs-v- document document-level documentation documented does dog double-registration draft drag drawer drifts drop dropdown dropdown-child dropdown-parent dropdowns dt duplicate duration-150 duration-200 during dynamically e2e each ease-in-out edge einer eject ejectable ejectables ejected el element elements els else em embedded emit emitting empty empty/undefined en enable enabled end enlarged entire entities entries entry equal error escape escaped even eventually every exactly exceeds excerpt excludes exclusively existing exists exit expected explicit export extends f factories failed fall fallback fallbacks falling falls false family fast feature fg field fields fieldset figcaption figure file fill fills finally find find-match find-match-active fire fires first fixed fixed-width fixtures flag flash flat flex flex-1 flex-col flex-wrap flip flipping flips flush-left focus focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 focus-visible:text-accent focus-visible:underline focus:border-accent focus:outline-none focus:text-accent focus:underline font font-bold font-face-parity font-family font-file-missing font-medium font-mono font-sans font-scale font-semibold font-size font-weight font-weight-bold font-weight-medium font-weight-normal font-weight-semibold font/woff2 fonts footer footer- for form format former found fox free fresh from frontmatter frontmatter-preview frozen fs-extra full fully function further g gap-[0.3em] gap-[clamp(1.5rem,3vw,4rem)] gap-hsp-2xs gap-hsp-lg gap-hsp-md gap-hsp-sm gap-hsp-xl gap-hsp-xs gap-vsp-2xs gap-vsp-3xs gap-vsp-lg gap-vsp-md gap-vsp-xs gap-x-hsp-2xs gap-x-hsp-lg gap-x-hsp-md gap-x-hsp-sm gap-x-hsp-xs gap-y-vsp-2xs gap-y-vsp-lg gap-y-vsp-md gap-y-vsp-xs gaps gate geladen2026 generate generated generation genuine geometry get github github-dark github-link give go got grab gradient granular graph gray-matter grid grid-cols-1 grid-cols-2 group group-focus-visible:text-accent group-focus-visible:underline group-focus-within:block group-hover:bg-fg group-hover:block group-hover:text-accent group-hover:text-bg group-hover:underline group-open:rotate-90 guard h-[0.5rem] h-[0.625rem] h-[0.875rem] h-[1.125rem] h-[1.25rem] h-[1.575rem] h-[10rem] h-[14px] h-[1em] h-[1lh] h-[2.5rem] h-[2rem] h-[3.5rem] h-[3rem] h-[90vh] h-[calc(100%-3rem)] h-[calc(100vh-3.5rem)] h-dvh h-full h-icon-lg h-icon-md h-icon-sm h-icon-xs h1 h1s h2 h22013h4 h2s h3 h4 h5 h6 half hand-copied hand-editable handle handled handler handlers hardcoded has hash-link have head head-links head-scripts header header- header-call:end header-call:start header-right heading heading-h2 heading-h3 heading-h4 heading-rule headings height here hex hidden hierarchical highlight history home horizontal host hover:bg-[color-mix(in_srgb,var(--color-surface)_80%,var(--color-fg)_20%)] hover:bg-accent-hover hover:bg-accent/10 hover:bg-danger/10 hover:bg-surface hover:border-accent hover:border-accent-hover hover:border-fg hover:text-accent hover:text-accent-hover hover:text-fg hover:underline hr href hrefs hsp hsp-2xl hsp-2xs hsp-lg hsp-md hsp-sm hsp-xl hsp-xs html i i18n/theme. i2 i3 i4 icon icon-lg icon-md icon-sm icon-xs identical idle idx if iframe image image-enlarge image-overlay-inset image/png img implementation import important important-allowlist imports in inactive inbox includes incomplete independently index index2026 info inherit inherited initial initialised injected inline inline-block inline-flex inner input input-clear ins inserted-after-color-mode inserted-after-color-scheme inserted-after-site-name inserted-first inset-0 inside inside-only install installation installed instance instanceof instead instructions intended intent intercept internal interpolation into invalid inverse inversion invoke is island-root issues it italic item item- items items-baseline items-center items-end items-start its itself javascript jumps justify-between justify-center justify-end justify-start katex kbd keep keeping keeps keyboard keyboard-shortcut keydown keys keystroke keyword keywords khroma known-token-names kopieren label landing language-switcher last:border-b-0 later latest launch layout lazy leading-normal leading-relaxed leading-snug leading-tight leaf- leak leaves leaving left left-0 left:calc legend legitimate length lets letter-spacing lg lg:block lg:border lg:border-fg lg:border-solid lg:flex lg:flex-col lg:flex-row lg:gap-hsp-xl lg:grid-cols-3 lg:grid-cols-[repeat(auto-fit,minmax(12rem,1fr))] lg:h-[90vh] lg:hidden lg:justify-start lg:m-auto lg:max-h-[90vh] lg:max-w-[52.5rem] lg:ml-[var(--zd-sidebar-w)] lg:pt-vsp-2xl lg:px-hsp-2xl lg:py-vsp-2xl lg:text-left lg:w-[90vw] lg:w-[clamp(16rem,25%,22rem)] li li2 library license light light/dark like likely line line-height line/statement linger link link- links list list-disc list-none listener lists literal literals lives llms llms-txt load loaded loading local local-1 local-2 local-3 locale locales log logo longer longest-match look lostpointercapture lower luminance m m-0 m-auto m21 m6 machinery main major make malformed malicious manually maps mark marks match matches matching math math-display math-inline max max-h-[85vh] max-h-[90vh] max-h-full max-h-none max-w-[64rem] max-w-[85%] max-w-[85vw] max-w-[90vw] max-w-[calc(100vw-2rem)] max-w-[clamp(50rem,75vw,90rem)] max-w-full max-w-none max-w-sm max-width may mb-0 mb-vsp-2xs mb-vsp-lg mb-vsp-md mb-vsp-sm mb-vsp-xl mb-vsp-xs measures measuring mechanism menu mermaid message messages meta meta-knob meta-schema metadata migration min-h-0 min-h-[60vh] min-h-[calc(100vh-3.5rem)] min-h-screen min-w-0 min-w-[10rem] min-w-[3rem] min-w-[8rem] minifier minor mirror mirrors missing mit ml-auto ml-hsp-2xl ml-hsp-lg ml-hsp-sm ml-hsp-xl mobile mod modal modal-backdrop mode modify module monospace more most mounted mouseenter mouseleave move mr-hsp-sm ms mt-0 mt-vsp-2xl mt-vsp-2xs mt-vsp-3xs mt-vsp-lg mt-vsp-md mt-vsp-sm mt-vsp-xl must mutates mutation mutations muted mx-auto my-vsp-lg my-vsp-md n name named names native natural nav nav-active nav-card- nav/doc navigating navigation navigations near needs neither nested neutral new newly-swapped next nicht no no-color-scheme no-data-theme-selector no-enlarge no-op no-repeat no-underline noch node node:buffer node:fs node:fs/promises node:module node:path node:url nodes nofollow noindex non-draggable non-empty non-light-dark non-literal non-persisted none noopener noreferrer normal noscript not notable note notes now null number numeric object object-contain observe observer occurred of off offsets ofl-required og:description og:image og:image:alt og:image:height og:image:width og:title og:type og:url oklch ol old older on once one only onto opacity-60 open open/close option or original other others out outgoing outline-none over overflow overflow-auto overflow-hidden overflow-x-auto overflow-y-auto overflow-y:auto override overrides overscroll-contain overwrite own owned p p-0 p-hsp-2xs p-hsp-lg p-hsp-md p-hsp-sm pack package package-owned packages packs padding page page-loading page-loading-overlay page-loading-spinner page-navigate-end page-title pages pages/. paint paint-and-read palette pan panel panels paren-balance-aware parent parse parsed parser parses part pass passed passes patch path paths pattern payload payload-budget pb-[50vh] pb-vsp-md pb-vsp-xl pb-vsp-xs per per-link permanently persisted pi pick picked picks picocolors pins pipelines pl-[1.25rem] pl-hsp-lg pl-hsp-sm pl-hsp-xl place placeholder placeholder:text-muted plain plural plus pnpm point pointer pointer-events-none pointercancel pointerdown pointermove pointerup polite polygon polyline popover populates port position position:fixed pr-[4px] pr-hsp-lg pr-hsp-md pr-hsp-sm pr-hsp-xl pre pre-lowercased preact preact/compat preact/hooks preact/jsx-runtime preconnect prefix preload pres present preserving preview preview-swatch-color previews2026 previously primary print produce produced produces producing production project project-owned project-root-relative properties property props prose provided proxy pt-[0.15rem] pt-[2px] pt-vsp-3xs pt-vsp-md pt-vsp-sm pt-vsp-xl pt-vsp-xs ptag- public purely puts px px-hsp-2xl px-hsp-2xs px-hsp-lg px-hsp-md px-hsp-sm px-hsp-xl px-hsp-xs py-0 py-[2px] py-[4px] py-[calc(var(--spacing-vsp-xs)+0.15rem)] py-hsp-2xs py-hsp-3xs py-hsp-sm py-hsp-xs py-vsp-2xs py-vsp-3xs py-vsp-lg py-vsp-md py-vsp-sm py-vsp-xl py-vsp-xs q query question quick r radius radius-full radius-lg rail ramp range rather raw re-encode/decode re-querying re-render re-renders re-run re-running re-selects reach reached reaches read reading reads/rewrites real real-value received receives recorded recovers rect redefine redistribution ref- referenced references refetch refreshes regardless regenerate regenerates regex registry reinit reinits rel relative release released reload relying rem remove removed render rendered renderer renderers renders reorder repaint repair repeated repeating replace replaced replacement replaces repopulate report repository required requires reserved resize resize-x resolve resolved resolves responded response restore restores restyle result result-click results results-area retry return returns revision revisions rewrite rewrites right right- right-0 right-hsp-lg ring-2 ring-accent risking ro robots role roles root rotate-180 rotate-90 round round-trip rounded rounded-[0.75rem] rounded-bl-[0.25rem] rounded-bl-[1rem] rounded-bl-lg rounded-br-[0.25rem] rounded-br-[1rem] rounded-full rounded-lg rounded-md rounded-t-[1rem] rounds route router routes routes-src running runs runtime s safe safely safer same same-locale samp sans sans-serif scale scanned scanning scheme scoped scoping scored script script- script-eval script-evaluation script-injection scripts scroll scrollbar scrolled scrollend scrolling seam search search-index section section- see seed sehen select select-none selection-bg selection-fg selector self self-hosted self-start semantic semibold semver sentinel separator serialised serialize server server-rendered set sets setting setup shadow-[0_1px_3px_color-mix(in_srgb,var(--color-fg)_8%,transparent)] shadow-lg shadow-md shape share shared sharing shell ship shipped ships short shortcut should show shown shrink-0 sidebar sidebar- sidebar-toggle-island sidebar-tree-island sidebar-w signal silently similarity simple since single single-line single-object-literal singular site site-search site-tree-nav-island sitemap- sites size skill skills skipping skips slash slug slug-dir-parity sm:border sm:border-muted sm:flex-row sm:grid-cols-2 sm:h-auto sm:items-center sm:justify-between sm:max-h-[80vh] sm:max-w-[52rem] sm:mx-auto sm:my-[10vh] sm:rounded-lg small smooth snapping snapshot snapshots so soft soft-nav solid some somehow source sources space-y-vsp-2xs spacing spacing-0 spacing-px span spans spec specifiers specify splitter spread spurious square sr-only src stable stack stale standalone start state state- state:state- status stay staying sticky still stock stop stops stored straddles stray strict string strings strip stripe strips stroke-linecap stroke-linejoin stroke-width strong stronger style style-attribute styled styles stylesheet sub subagents subsequent substitute substitution subtracting success successful summary sup supported surface surfaces survives svg swap swapped swaps switcher synchronous synchronously syntactically syntax t tab tab-item tab-panel tabindex table tablist tabpanel tabs tabs-container tabs-content tabs-nav tag tag- tag-item- tagged tags tags:audit take tbody td temp-element template temporary temporary-element terminal terms test-results tested text text-accent text-bg text-body text-caption text-center text-chat-assistant-text text-chat-user-text text-code-fg text-danger text-decoration text-display text-fg text-fg/60 text-heading text-info text-left text-micro text-muted text-muted/50 text-right text-scale-2xl text-scale-2xs text-scale-lg text-scale-md text-scale-sm text-scale-xl text-scale-xs text-small text-title text-warning text/css text/plain textarea tfoot th than that the thead their them theme theme-color theme-pack theme-pack-changed theme-packs theme-packs/index.json theme-toggle theme/token then there these they this those threw through throw tighten time tip title to toast toc toggle toggle-ai-chat toggle-design-token-panel toggles token tokens tolerates too toolbar tooltip top top-0 top-[3.5rem] top-full top-level total touches tp tr tracked tracking-wide tracking-wider trade-off trailing transition transition-[background,color,border-color] transition-[left,color] transition-colors transition-transform translate-x-0 translated translations transparent treats tree tree-child- tree-item- tree-top- trigger trigger:ai-chat trigger:design-token-panel triggers true truncate truncated try turn twitter:card twitter:creator twitter:description twitter:image twitter:site twitter:title two type typeface typography u ul umschalten unavailable unbalanced unchanged und undefined under underline underlines understand unit-tested unknown unlike unlisted unmaintained unobserve unreadable unrelated unreleased unresolvable unresolved unset unterminated until up up-to-date update uppercase use used useful user uses usual utf-8 utf8 utilities utility v v2 val value value-reader values var variable variant verbatim version version- version-menu version-switcher versions vertical via video viewing viewport viewports virtual:zudo-doc-chrome-bindings virtual:zudo-doc-design-token-panel-config virtual:zudo-doc-route-context visible vocabulary von vsp vsp-2xl vsp-2xs vsp-3xs vsp-lg vsp-md vsp-sm vsp-xl vsp-xs w w-1/2 w-[0.5rem] w-[0.625rem] w-[0.875rem] w-[1.125rem] w-[1.575rem] w-[1.5rem] w-[1.75rem] w-[12rem] w-[14px] w-[16px] w-[16rem] w-[18px] w-[1em] w-[2.5rem] w-[280px] w-[2rem] w-[320px] w-[360px] w-[90vw] w-[calc(100vw-2rem)] w-[var(--zd-sidebar-w)] w-dvw w-full w-icon-lg w-icon-md w-icon-sm w-icon-xs want warn warning was watching wbr wbr- we website weight went were what when where whereas whether which while whitespace-nowrap whitespace-pre whole wide wide-gamut wider-than-scrollbar width will wird wired with without word wordmark working works worktrees would wrap wrapper wrappers written wrong wrote wurde x xl:block xl:flex xl:hidden y-scrollbar yet you your z-dropdown z-local-1 z-modal z-modal-backdrop z-popover z-sidebar z-toolbar zd-content zd-desktop-sidebar-toggle zd-doc-content-band zd-enlarge-btn zd-enlarge-dialog zd-enlarge-dialog-close zd-enlargeable zd-html-preview-code zd-mermaid-dialog zd-mermaid-enlargeable zd-mermaid-tool-btn zd-mermaid-toolbar zd-mermaid-transform zd-mermaid-viewport zd-sidebar-content-wrapper zd-sidebar-open zd-theme-pack-dialog-title zfb zfb:after-swap zfb:before-preparation zfb:before-swap zod zoom zudo-design-tokens/v3 zudo-doc zudo-doc-design-token-panel-modal zudo-doc-design-tokens zudo-doc-sidebar-visible zudo-doc-sidebar-width zudo-doc-theme zudo-doc-theme-pack zudo-doc-tweak zum");
|
|
2
|
+
@source inline("-link -mb-px -ml-hsp-sm -noscript -open -translate-x-full 2xl:w-[24px] [&::-webkit-details-marker]:hidden [&_a]:text-accent [&_a]:underline [&_nav]:mb-0 [data-admonition] [data-kbd-shortcut] [data-switcher-launcher] [doc-history-meta] [doc-history] [doc-layout] [llms-txt] [zudo-doc] a a2 abbr about above absent absolute accent accent- accent:accent- across activated active actual added admonition admonition- admonition-body admonition-title admonition/callout after after-breadcrumb after-content after-navigate after-sidebar after-title against agent agents ai-chat ai-chat-md ai-chat-trigger alert align-top all allow-same-origin allow-scripts allowed alone already already-executed already-multiline already-picked also always an anchor and and/or animate-pulse animate-spin announce ansehen antialiased any anywhere anzeigen app appear application/json application/xml applied applies apply approach are area arg argument aria-atomic aria-busy aria-controls aria-current aria-disabled aria-expanded aria-haspopup aria-hidden aria-label aria-labelledby aria-live aria-orientation aria-pressed aria-selected aria-valuemax aria-valuemin aria-valuenow arm arms arrows article as asc aside aspect-[1200/630] aspect-square asset- assets assistant async at at-rule attach attribute attributes auf authored auto auto-logo-mask autogenerated availability available avoid await away b back backdrop:bg-bg/30 backdrop:bg-bg/80 backdrop:bg-overlay/60 backdrop:z-modal-backdrop background background-color backtick backticks baked banner bare base base- base64 base:base- based batch be bearbeiten because been before below best between bg bg-[#fff] bg-accent bg-bg bg-chat-assistant-bg bg-chat-user-bg bg-code-bg bg-fg bg-info/10 bg-info/5 bg-muted bg-overlay/30 bg-surface bg-surface/50 bg-transparent bg-warning/10 bg-warning/5 bi bigint bin binaries bind blank blanks block blockquote blocks blur body body-end-components body-end-scripts bold boolean bootstrap border border-accent border-b border-b-2 border-b-[5px] border-bg/30 border-collapse border-danger border-dashed border-fg border-image border-info/30 border-l border-l-0 border-l-[3px] border-left-width border-muted border-none border-r border-r-0 border-radius border-solid border-t border-t-[2px] border-t-[3px] border-transparent border-warning/30 border-width border-y both bottom-hsp-lg bottom-vsp-xl boundaries box-border br brackets brand breadcrumb:end breadcrumb:start break-words brief brown browser browsers btn budget bug build built built-in bundler but button buttons by bypassed byte-identical bytes cached call callable called caller calls can cancellation cannot canonical canvas caption captures card card-grid carry cases cat-nav- catch category caught caution center center/contain ch chains change changed changelog changelogs changes child choose chrome chrome-font ci circle cite class class-less class-mode claude claude-agents claude-commands claude-md claude-skills cleaned clear clearing click client client-router client-side clip clobber clobbering close closed closing code code-block-sr-announce code-group code-group-panel col col-resize colgroup collapses collapsible collision color color-scheme color-scheme-changed color-scheme-provider color-tweak colorization colors column comma command commands commas comment commercial commercial-font-denylist commit compare component component:github-link component:language-switcher component:search component:theme-toggle component:version-switcher composition compute computed concrete config configuration configure configured confuse connect const construction consumer consumes contain container containers containing contains content content-admonition content-layer content-link content-type content-wrapper:end content-wrapper:start contents context contract control controller controls converts copied copy corners correct correctly corrupt could count covered covers cp crashes created cross-component crumb- cs css css-presence ctx cur current cursor cursor-not-allowed cursor-pointer custom danger dark data data-active data-admonition data-auto-logo data-base data-close-search data-current-locale data-default-locale data-doc-description data-doc-metainfo data-doc-pager data-doc-unavailable-versions data-find-active data-find-match data-footer data-group-id data-header data-header-logo data-header-nav data-header-right data-kbd-shortcut data-language-switcher data-loading-index data-mermaid-enlarge-ready data-mermaid-rendered data-mermaid-src data-nav-active data-nav-item data-nav-item-dropdown data-nav-more data-nav-more-menu data-nav-more-toggle data-no-results data-open-search data-pan-active data-processed data-result-count-template data-search-count data-search-count-narrow data-search-dialog data-search-input data-search-placeholder data-search-results data-search-unavailable data-sidebar-hidden data-sidebar-resizer data-site-nav data-switcher-card data-switcher-launcher data-tab-btn data-tab-default data-tab-label data-tab-value data-tabs data-taglist-group data-testid data-theme data-theme-pack data-theme-pack-switcher data-theme/style data-toc-hidden data-trailing-slash data-unavailable-label data-variant data-version-banner data-version-latest data-version-menu data-version-rewire data-version-slug data-version-switcher data-version-toggle data-version-trigger-label data-zd-mobile-sidebar data-zd-mobile-toc data-zd-nosidebar data-zd-theme-pack-css data-zd-theme-pack-css-loading data-zd-toc data-zd-wide data-zfb-transition-persist dd decimal declaration declare declares decoration decoration-muted default default-transition-duration defaults deferral deferred del delegated delete deliberately delimiter dependency depth der desc description design design-token-panel design-token-trigger desktop desktop-sidebar desktop-sidebar-toggle desktop-sidebar-toggle-island desktop-toc-toggle destructive detach detached details determine deterministic dev develop dfn diagram diagrams dialog die dieser diff diff-line-added diff-line-content diff-line-empty diff-line-num diff-line-removed diff-row different dir directly directories directory disabled disabled:opacity-50 disabled:pointer-events-none disc display display:none dist distance distinct div dl do doc doc-card- doc-content-band doc-history doc-history-generate doc-history-panel doc-history-trigger doc-page doc-pager doc-prose doc-title docs docs- docs-v- document document-level documentation documented does dog double-registration draft drag drawer drifts drop dropdown dropdown-child dropdown-parent dropdowns dt duplicate duration-150 duration-200 during dynamically e2e each early ease-in-out edge einer eject ejectable ejectables ejected el element elements els else em embedded emit emitting empty empty/undefined en enable enabled end enlarged entire entities entries entry equal error escape escaped even eventually every everything-enabled exactly exceeds excerpt excludes exclusively existing exists exit expected explicit export extends f factories failed fall fallback fallbacks falling falls false family fast feature fg field fields fieldset figcaption figure file fill fills finally find find-match find-match-active fire fires first first-paint fix fixed fixed-width fixtures flag flash flat flex flex-1 flex-col flex-wrap flip flipping flips flush-left focus focus-visible:border-accent focus-visible:outline-2 focus-visible:outline-accent focus-visible:outline-offset-2 focus-visible:text-accent focus-visible:underline focus:border-accent focus:outline-none focus:text-accent focus:underline font font-bold font-face-parity font-family font-file-missing font-medium font-mono font-sans font-scale font-semibold font-size font-weight font-weight-bold font-weight-medium font-weight-normal font-weight-semibold font/woff2 fonts footer footer- for form format former found fox free fresh from frontmatter frontmatter-preview frozen fs-extra full fully function further g gap-[0.3em] gap-[clamp(1.5rem,3vw,4rem)] gap-hsp-2xs gap-hsp-lg gap-hsp-md gap-hsp-sm gap-hsp-xl gap-hsp-xs gap-vsp-2xs gap-vsp-3xs gap-vsp-lg gap-vsp-md gap-vsp-xs gap-x-hsp-2xs gap-x-hsp-lg gap-x-hsp-md gap-x-hsp-sm gap-x-hsp-xs gap-y-vsp-2xs gap-y-vsp-lg gap-y-vsp-md gap-y-vsp-xs gaps gate geladen2026 generate generated generation genuine geometry get getting-started github github-dark github-link give go got grab gradient granular graph gray-matter grid grid-cols-1 grid-cols-2 group group-focus-visible:text-accent group-focus-visible:underline group-focus-within:block group-hover:bg-fg group-hover:block group-hover:text-accent group-hover:text-bg group-hover:underline group-open:rotate-90 guard h-[0.5rem] h-[0.625rem] h-[0.875rem] h-[1.125rem] h-[1.25rem] h-[1.575rem] h-[10rem] h-[14px] h-[1em] h-[1lh] h-[2.5rem] h-[2rem] h-[3.5rem] h-[3rem] h-[90vh] h-[calc(100%-3rem)] h-[calc(100vh-3.5rem)] h-dvh h-full h-icon-lg h-icon-md h-icon-sm h-icon-xs h1 h1s h2 h22013h4 h2s h3 h4 h5 h6 half hand-copied hand-editable handle handled handler handlers hardcoded has hash-link have head head-links head-scripts header header- header-call:end header-call:start header-right heading heading-h2 heading-h3 heading-h4 heading-rule headings height here hex hidden hierarchical highlight history home horizontal host hover:bg-[color-mix(in_srgb,var(--color-surface)_80%,var(--color-fg)_20%)] hover:bg-accent-hover hover:bg-accent/10 hover:bg-danger/10 hover:bg-surface hover:border-accent hover:border-accent-hover hover:border-fg hover:text-accent hover:text-accent-hover hover:text-fg hover:underline hr href hrefs hsp hsp-2xl hsp-2xs hsp-lg hsp-md hsp-sm hsp-xl hsp-xs html i i18n/theme. i2 i3 i4 icon icon-lg icon-md icon-sm icon-xs identical idle idx if iframe image image-enlarge image-overlay-inset image/png img implementation import important important-allowlist imports in inactive inbox includes incomplete independently index index2026 info inherit inherited initial initialised injected inline inline-block inline-flex inner input input-clear ins inserted-after-color-mode inserted-after-color-scheme inserted-after-site-name inserted-first inset-0 inside inside-only install installation installed instance instanceof instead instructions intended intent intercept internal interpolation into invalid inverse inversion invoke is island-root issues it italic item item- items items-baseline items-center items-end items-start its itself javascript jumps justify-between justify-center justify-end justify-start katex kbd keep keeping keeps keyboard keyboard-shortcut keydown keys keystroke keyword keywords khroma known-token-names kopieren label landing language-switcher last:border-b-0 later latest launch layout lazy leading-normal leading-relaxed leading-snug leading-tight leaf- leak leaves leaving left left-0 left:calc legend legitimate length lets letter-spacing lg lg:block lg:border lg:border-fg lg:border-solid lg:flex lg:flex-col lg:flex-row lg:gap-hsp-xl lg:grid-cols-3 lg:grid-cols-[repeat(auto-fit,minmax(12rem,1fr))] lg:h-[90vh] lg:hidden lg:justify-start lg:m-auto lg:max-h-[90vh] lg:max-w-[52.5rem] lg:ml-[var(--zd-sidebar-w)] lg:pt-vsp-2xl lg:px-hsp-2xl lg:py-vsp-2xl lg:text-left lg:w-[90vw] lg:w-[clamp(16rem,25%,22rem)] li li2 library license light light/dark like likely line line-height line/statement linger link link- links list list-disc list-none listener lists literal literals lives llms llms-txt load loaded loading local local-1 local-2 local-3 locale locales log logo longer longest-match look loses lostpointercapture lower luminance m m-0 m-auto m21 m6 machinery main major make malformed malicious manually maps mark markdown marks match matches matching math math-display math-inline max max-h-[85vh] max-h-[90vh] max-h-full max-h-none max-w-[64rem] max-w-[85%] max-w-[85vw] max-w-[90vw] max-w-[calc(100vw-2rem)] max-w-[clamp(50rem,75vw,90rem)] max-w-full max-w-none max-w-sm max-width may mb-0 mb-vsp-2xs mb-vsp-lg mb-vsp-md mb-vsp-sm mb-vsp-xl mb-vsp-xs measures measuring mechanism menu mermaid message messages meta meta-knob meta-schema metadata migration min-h-0 min-h-[60vh] min-h-[calc(100vh-3.5rem)] min-h-screen min-w-0 min-w-[10rem] min-w-[3rem] min-w-[8rem] minifier minor mirror mirrors missing mit ml-auto ml-hsp-2xl ml-hsp-lg ml-hsp-sm ml-hsp-xl mobile mod modal modal-backdrop mode modify module monospace more most mounted mouseenter mouseleave move mr-hsp-sm ms mt-0 mt-vsp-2xl mt-vsp-2xs mt-vsp-3xs mt-vsp-lg mt-vsp-md mt-vsp-sm mt-vsp-xl must mutates mutation mutations muted mx-auto my-vsp-lg my-vsp-md n name named names native natural nav nav-active nav-card- nav/doc navigating navigation navigations near needs neither nested neutral new newly-swapped next nicht no no-color-scheme no-data-theme-selector no-enlarge no-op no-repeat no-underline noch node node:buffer node:fs node:fs/promises node:module node:path node:url nodes nofollow noindex non-draggable non-empty non-light-dark non-literal non-persisted none noopener noreferrer normal noscript not notable note notes now null number numeric object object-contain observe observer occurred of off offsets ofl-required og:description og:image og:image:alt og:image:height og:image:width og:title og:type og:url oklch ol old older on once one only onto opacity-60 open open/close option or original other others otherwise out outgoing outline-none over overflow overflow-auto overflow-hidden overflow-x-auto overflow-y-auto overflow-y:auto override overrides overscroll-contain overwrite own owned p p-0 p-hsp-2xs p-hsp-lg p-hsp-md p-hsp-sm pack pack-scoped package package-owned packages packs padding page page-loading page-loading-overlay page-loading-spinner page-navigate-end page-title pages pages/. paint paint-and-read palette pan panel panels paren-balance-aware parent parse parsed parser parses part pass passed passes patch path paths pattern payload payload-budget pb-[50vh] pb-vsp-md pb-vsp-xl pb-vsp-xs per per-link permanently persisted pi pick picked picks picocolors pins pipelines pl-[1.25rem] pl-hsp-lg pl-hsp-sm pl-hsp-xl place placeholder placeholder:text-muted plain plural plus pnpm point pointer pointer-events-none pointercancel pointerdown pointermove pointerup polite polygon polyline popover populates port position position:fixed pr-[4px] pr-hsp-lg pr-hsp-md pr-hsp-sm pr-hsp-xl pre pre-lowercased preact preact/compat preact/hooks preact/jsx-runtime preconnect prefix preload pres present preserving preview preview-swatch-color previews2026 previously primary print produce produced produces producing production project project-owned project-root-relative properties property props prose provided proxy pt-[0.15rem] pt-[2px] pt-vsp-3xs pt-vsp-md pt-vsp-sm pt-vsp-xl pt-vsp-xs ptag- public purely puts px px-hsp-2xl px-hsp-2xs px-hsp-lg px-hsp-md px-hsp-sm px-hsp-xl px-hsp-xs py-0 py-[2px] py-[4px] py-[calc(var(--spacing-vsp-xs)+0.15rem)] py-hsp-2xs py-hsp-3xs py-hsp-sm py-hsp-xs py-vsp-2xs py-vsp-3xs py-vsp-lg py-vsp-md py-vsp-sm py-vsp-xl py-vsp-xs q query question quick r radius radius-full radius-lg rail ramp range rather raw re-encode/decode re-querying re-render re-renders re-run re-running re-selects reach reached reaches read reading reads/rewrites real real-value received receives recorded recovers rect redefine redistribution ref- referenced references refetch refreshes regardless regenerate regenerates regex registry reinit reinits rel relative release released reload relying rem remapped remove removed render rendered renderer renderers renders reorder repaint repair repeated repeating replace replaced replacement replaces repopulate report repository required requires reserved resize resize-x resolve resolved resolves responded response restore restores restyle result result-click results results-area retry return returns revision revisions rewire rewrite rewrites right right- right-0 right-hsp-lg ring-2 ring-accent risking ro robots role roles root rotate-180 rotate-90 round round-trip rounded rounded-[0.75rem] rounded-bl-[0.25rem] rounded-bl-[1rem] rounded-bl-lg rounded-br-[0.25rem] rounded-br-[1rem] rounded-full rounded-lg rounded-md rounded-t-[1rem] rounds route router routes routes-src rule run running runs runtime s safe safely safer same same-locale samp sans sans-serif scale scanned scanning scheme scoped scoping scored script script- script-eval script-evaluation script-injection scripts scroll scrollbar scrolled scrollend scrolling seam search search-index section section- see seed sehen select select-none selection-bg selection-fg selector self self-hosted self-start semantic semibold semver sentinel separator serialised serialize server server-rendered set sets setting setup shadow-[0_1px_3px_color-mix(in_srgb,var(--color-fg)_8%,transparent)] shadow-lg shadow-md shape share shared sharing shell ship shipped ships short shortcut should show shown shrink-0 sidebar sidebar- sidebar-toggle-island sidebar-tree-island sidebar-w signal silently similarity simple since single single-line single-object-literal singular site site-search site-tree-nav-island sitemap- sites size skill skills skipping skips slash slug slug-dir-parity slugs sm:border sm:border-muted sm:flex-row sm:grid-cols-2 sm:h-auto sm:items-center sm:justify-between sm:max-h-[80vh] sm:max-w-[52rem] sm:mx-auto sm:my-[10vh] sm:rounded-lg small smooth snapping snapshot snapshots so soft soft-nav solid some somehow source sources space-y-vsp-2xs spacing spacing-0 spacing-px span spans spec specifiers specify splitter spread spurious square sr-only src stable stack stale standalone start state state- state:state- statement status stay staying sticky still stock stop stops stored straddles stray strict string strings strip stripe strips stroke-linecap stroke-linejoin stroke-width strong stronger style style-attribute styled styles stylesheet sub subagents subsequent substitute substitution subtracting success successful summary sup supported surface surfaces survives svg swap swapped swaps switcher synchronous synchronously syntactically syntax t tab tab-item tab-panel tabindex table tablist tabpanel tabs tabs-container tabs-content tabs-nav tag tag- tag-item- tagged tags tags:audit take tbody td temp-element template temporary temporary-element terminal terms test-results tested text text-accent text-bg text-body text-caption text-center text-chat-assistant-text text-chat-user-text text-code-fg text-danger text-decoration text-display text-fg text-fg/60 text-heading text-info text-left text-micro text-muted text-muted/50 text-right text-scale-2xl text-scale-2xs text-scale-lg text-scale-md text-scale-sm text-scale-xl text-scale-xs text-small text-title text-warning text/css text/plain textarea tfoot th than that the thead their them theme theme-color theme-pack theme-pack-changed theme-packs theme-packs/index.json theme-toggle theme/token then there these they this those threw through throw tighten time tip title to toast toc toggle toggle-ai-chat toggle-design-token-panel toggles token tokens tolerates too toolbar tooltip top top-0 top-[3.5rem] top-full top-level total touches tp tr tracked tracking-wide tracking-wider trade-off trailing transition transition-[background,color,border-color] transition-[left,color] transition-[right,color] transition-colors transition-transform translate-x-0 translated translations transparent treats tree tree-child- tree-item- tree-top- trigger trigger:ai-chat trigger:design-token-panel triggers true truncate truncated try turn twitter:card twitter:creator twitter:description twitter:image twitter:site twitter:title two type typeface typography u ul umschalten unavailable unbalanced unchanged und undefined under underline underlines understand unit-tested unknown unlike unlisted unmaintained unobserve unreadable unrelated unreleased unresolvable unresolved unset unterminated until up up-to-date update uppercase use used useful user uses usual utf-8 utf8 utilities utility v v2 val value value-reader values var variable variant verbatim version version- version-menu version-switcher versions vertical via video viewing viewport viewports virtual:zudo-doc-chrome-bindings virtual:zudo-doc-design-token-panel-config virtual:zudo-doc-route-context visible vocabulary von vsp vsp-2xl vsp-2xs vsp-3xs vsp-lg vsp-md vsp-sm vsp-xl vsp-xs w w-1/2 w-[0.5rem] w-[0.625rem] w-[0.875rem] w-[1.125rem] w-[1.575rem] w-[1.5rem] w-[1.75rem] w-[12rem] w-[14px] w-[16px] w-[16rem] w-[18px] w-[1em] w-[2.5rem] w-[280px] w-[2rem] w-[320px] w-[360px] w-[90vw] w-[calc(100vw-2rem)] w-[var(--zd-sidebar-w)] w-dvw w-full w-icon-lg w-icon-md w-icon-sm w-icon-xs want warn warning was watching wbr wbr- we website weight went were what when where whereas whether which while whitespace-nowrap whitespace-pre whole wide wide-gamut wider-than-scrollbar width will wird wired with without word wordmark working works worktrees would wrap wrapper wrappers written wrong wrote wurde x xl:flex xl:hidden y-scrollbar yet you your z-dropdown z-local-1 z-modal z-modal-backdrop z-popover z-sidebar z-toolbar zd-content zd-desktop-sidebar-toggle zd-desktop-toc-toggle zd-doc-content-band zd-enlarge-btn zd-enlarge-dialog zd-enlarge-dialog-close zd-enlargeable zd-html-preview-code zd-mermaid-dialog zd-mermaid-enlargeable zd-mermaid-tool-btn zd-mermaid-toolbar zd-mermaid-transform zd-mermaid-viewport zd-sidebar-content-wrapper zd-sidebar-open zd-theme-pack-dialog-title zd-toc-col zfb zfb:after-swap zfb:before-preparation zfb:before-swap zod zoom zudo-design-tokens/v3 zudo-doc zudo-doc-design-token-panel-modal zudo-doc-design-tokens zudo-doc-sidebar-visible zudo-doc-sidebar-width zudo-doc-theme zudo-doc-theme-pack zudo-doc-toc-visible zudo-doc-tweak zum");
|
package/dist/settings.d.ts
CHANGED
|
@@ -32,6 +32,13 @@ export interface HeaderNavChildItem {
|
|
|
32
32
|
labelKey?: string;
|
|
33
33
|
path: string;
|
|
34
34
|
categoryMatch?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether links built from this item's `path` carry the active `/v/{version}`
|
|
37
|
+
* prefix. `false` targets a route that has no versioned counterpart (e.g. an
|
|
38
|
+
* external-style resources page) so its href must stay unversioned even when
|
|
39
|
+
* rendered under an active version. Default `true`.
|
|
40
|
+
*/
|
|
41
|
+
versioned?: boolean;
|
|
35
42
|
}
|
|
36
43
|
export interface HeaderNavItem extends HeaderNavChildItem {
|
|
37
44
|
children?: HeaderNavChildItem[];
|
|
@@ -273,14 +280,21 @@ export interface Settings {
|
|
|
273
280
|
/** Minify production HTML output from `zfb build`. Defaults to `true` when omitted. */
|
|
274
281
|
minifyHtml?: boolean;
|
|
275
282
|
docsDir: string;
|
|
283
|
+
/**
|
|
284
|
+
* Route slug (no leading/trailing slashes, e.g. `"getting-started"` or
|
|
285
|
+
* `"overview/getting-started"`) of the doc page the versions page links to
|
|
286
|
+
* as "latest docs" / each past version's docs entry point. Not validated at
|
|
287
|
+
* runtime — an invalid slug simply 404s. Optional (recently-added field) so
|
|
288
|
+
* existing complete `Settings` literals built outside `zudoDoc()` keep
|
|
289
|
+
* compiling unchanged; defaults to `"getting-started"` when omitted.
|
|
290
|
+
*/
|
|
291
|
+
entryDocSlug?: string;
|
|
276
292
|
defaultLocale: string;
|
|
277
293
|
locales: Record<string, LocaleConfig>;
|
|
278
294
|
mermaid: boolean;
|
|
279
295
|
noindex: boolean;
|
|
280
296
|
editUrl: string | false;
|
|
281
297
|
githubUrl: string | false;
|
|
282
|
-
/** "owner/repo" — enables `#123` / SHA autolinks in markdown. Omit or leave undefined to disable. */
|
|
283
|
-
githubAutolinksRepo?: string;
|
|
284
298
|
siteUrl: string;
|
|
285
299
|
metaTags: MetaTagsConfig;
|
|
286
300
|
/**
|
|
@@ -314,6 +328,7 @@ export interface Settings {
|
|
|
314
328
|
tocMaxDepth: number;
|
|
315
329
|
sidebarResizer: boolean;
|
|
316
330
|
sidebarToggle: boolean;
|
|
331
|
+
tocToggle: boolean;
|
|
317
332
|
imageEnlarge: boolean;
|
|
318
333
|
/**
|
|
319
334
|
* Mount the `FindInPageInit` island (Cmd/Ctrl+F find bar). Self-gates on
|
|
@@ -23,6 +23,14 @@ export interface SiteTreeNavWrapperProps {
|
|
|
23
23
|
* Forwarded to the v2 SiteTreeNavDemo component.
|
|
24
24
|
*/
|
|
25
25
|
ariaLabel?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Active version slug for a `/v/{version}` route. Injected via
|
|
28
|
+
* createMdxComponents() closure alongside `lang` (#3218). When set, the nav
|
|
29
|
+
* source resolves the version's doc collection and emitted hrefs are
|
|
30
|
+
* remapped to their versioned form; omitted (latest/unversioned pages)
|
|
31
|
+
* leaves behavior unchanged.
|
|
32
|
+
*/
|
|
33
|
+
currentVersion?: string;
|
|
26
34
|
}
|
|
27
35
|
/** Injected dependencies for {@link createSiteTreeNavWrapper}. */
|
|
28
36
|
export interface SiteTreeNavDeps {
|
|
@@ -54,6 +62,19 @@ export interface SiteTreeNavDeps {
|
|
|
54
62
|
* from `@/utils/nav-scope`.
|
|
55
63
|
*/
|
|
56
64
|
getCategoryOrder: () => string[];
|
|
65
|
+
/**
|
|
66
|
+
* Build a versioned docs URL: `versionedDocsUrl(slug, versionSlug, lang)`.
|
|
67
|
+
* Host passes `ctx.versionedDocsUrl`. Used to remap the resolved tree's
|
|
68
|
+
* hrefs into their versioned form when `currentVersion` is set (#3218) —
|
|
69
|
+
* mirrors the sidebar's `buildSidebarNodes` two-step in `chrome/derive.tsx`.
|
|
70
|
+
*
|
|
71
|
+
* Optional — `./site-tree-nav` is a documented frozen-1.0 public subpath
|
|
72
|
+
* (`packages/zudo-doc/CLAUDE.md`/`API.md`), so a pre-#3218 caller that
|
|
73
|
+
* hand-constructs `SiteTreeNavDeps` without this field must keep compiling.
|
|
74
|
+
* Omitting it while passing `currentVersion` leaves hrefs unversioned (a
|
|
75
|
+
* loud dev warning is emitted) rather than throwing.
|
|
76
|
+
*/
|
|
77
|
+
versionedDocsUrl?: (slug: string, versionSlug: string, lang: string) => string;
|
|
57
78
|
}
|
|
58
79
|
/**
|
|
59
80
|
* Create the `SiteTreeNavWrapper` component bound to the host's nav source
|
|
@@ -1,27 +1,46 @@
|
|
|
1
1
|
import { jsx } from "preact/jsx-runtime";
|
|
2
2
|
import { Island } from "@takazudo/zfb";
|
|
3
3
|
import { SiteTreeNav } from "../site-tree-nav-island/index.js";
|
|
4
|
+
import { remapVersionedHrefs } from "../nav-data-prep/index.js";
|
|
4
5
|
function createSiteTreeNavWrapper(deps) {
|
|
5
|
-
const {
|
|
6
|
+
const {
|
|
7
|
+
defaultLocale,
|
|
8
|
+
resolveNavSource,
|
|
9
|
+
buildNavTree,
|
|
10
|
+
groupSatelliteNodes,
|
|
11
|
+
getCategoryOrder,
|
|
12
|
+
versionedDocsUrl
|
|
13
|
+
} = deps;
|
|
6
14
|
function SiteTreeNavWrapper({
|
|
7
15
|
lang = defaultLocale,
|
|
8
|
-
ariaLabel
|
|
16
|
+
ariaLabel,
|
|
17
|
+
currentVersion
|
|
9
18
|
}) {
|
|
10
19
|
const locale = lang;
|
|
11
|
-
const { navDocs, categoryMeta } = resolveNavSource(locale,
|
|
20
|
+
const { navDocs, categoryMeta } = resolveNavSource(locale, currentVersion, {
|
|
12
21
|
applyDefaultLocaleOnlyFilter: true,
|
|
13
22
|
keepUnlisted: true
|
|
14
23
|
});
|
|
15
|
-
const
|
|
24
|
+
const rawTree = buildNavTree(navDocs, locale, categoryMeta);
|
|
16
25
|
const categoryOrder = getCategoryOrder();
|
|
17
|
-
const groupedTree = groupSatelliteNodes(
|
|
18
|
-
|
|
26
|
+
const groupedTree = groupSatelliteNodes(rawTree, categoryOrder);
|
|
27
|
+
let tree = groupedTree;
|
|
28
|
+
if (currentVersion) {
|
|
29
|
+
if (versionedDocsUrl) {
|
|
30
|
+
tree = remapVersionedHrefs(groupedTree, currentVersion, locale, versionedDocsUrl);
|
|
31
|
+
} else {
|
|
32
|
+
console.warn(
|
|
33
|
+
"[zudo-doc] SiteTreeNavWrapper: currentVersion is set but SiteTreeNavDeps.versionedDocsUrl was not provided \u2014 nav card hrefs will NOT be remapped into the version."
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (tree.length === 0) return null;
|
|
19
38
|
return Island({
|
|
20
39
|
when: "idle",
|
|
21
40
|
children: /* @__PURE__ */ jsx(
|
|
22
41
|
SiteTreeNav,
|
|
23
42
|
{
|
|
24
|
-
tree
|
|
43
|
+
tree,
|
|
25
44
|
categoryOrder,
|
|
26
45
|
categoryIgnore: ["inbox", "develop"],
|
|
27
46
|
ariaLabel
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"name": "Academia",
|
|
5
5
|
"description": "A LaTeX paper for the web — white page, Computer-Modern-black ink, hyperref navy links, numbered theorem admonitions, booktabs tables. Dark mode is a scholarly slate.",
|
|
6
6
|
"mode": "light",
|
|
7
|
-
"version": "1.0.
|
|
7
|
+
"version": "1.0.1",
|
|
8
8
|
"fonts": {
|
|
9
9
|
"sans": "Source Serif 4",
|
|
10
10
|
"mono": "Courier Prime",
|
|
@@ -125,7 +125,7 @@ html[data-theme-pack="academia"] {
|
|
|
125
125
|
--zdc-doc-h3-weight: 700;
|
|
126
126
|
--zdc-doc-h4-weight: 600;
|
|
127
127
|
--zdc-doc-prose-font: var(--font-sans);
|
|
128
|
-
--zdc-doc-link-decoration:
|
|
128
|
+
--zdc-doc-link-decoration: underline;
|
|
129
129
|
--zdc-admonition-radius: 0;
|
|
130
130
|
--zdc-admonition-border-width: 1px;
|
|
131
131
|
--zdc-card-radius: 0;
|
|
@@ -219,11 +219,21 @@ html[data-theme-pack="academia"] .zd-content h4 {
|
|
|
219
219
|
border-top: 0;
|
|
220
220
|
}
|
|
221
221
|
|
|
222
|
-
/* ---- links: hyperref colorlinks — navy ink
|
|
222
|
+
/* ---- links: hyperref colorlinks — navy ink is the dominant cue; the
|
|
223
|
+
rest-state underline (a.text-accent.underline is the exact
|
|
224
|
+
selector consuming --zdc-doc-link-decoration, content.css:513) is
|
|
225
|
+
kept low-opacity so it reads as a subtle non-color affordance
|
|
226
|
+
rather than competing with the ink. Hover restores full opacity. ---- */
|
|
227
|
+
html[data-theme-pack="academia"] a.text-accent.underline {
|
|
228
|
+
text-decoration-color: color-mix(in srgb, currentColor 30%, transparent);
|
|
229
|
+
text-underline-offset: 0.15em;
|
|
230
|
+
}
|
|
231
|
+
html[data-theme-pack="academia"] a.text-accent.underline:hover,
|
|
223
232
|
html[data-theme-pack="academia"] .zd-content a:hover {
|
|
224
233
|
text-decoration: underline;
|
|
225
234
|
text-underline-offset: 0.15em;
|
|
226
235
|
text-decoration-thickness: 1px;
|
|
236
|
+
text-decoration-color: currentColor;
|
|
227
237
|
}
|
|
228
238
|
|
|
229
239
|
/* ---- admonitions: amsthm theorem environments in a hairline mdframed
|
|
@@ -337,7 +347,7 @@ html[data-theme-pack="academia"] .zd-content code:not(pre code) {
|
|
|
337
347
|
/* ---- code blocks: a framed verbatim listing — hairline ink box, bold
|
|
338
348
|
keywords (the loaded Courier Prime 700), italic comments ---- */
|
|
339
349
|
html[data-theme-pack="academia"] pre.hi-root {
|
|
340
|
-
font-size: 0.
|
|
350
|
+
font-size: 0.9rem;
|
|
341
351
|
line-height: 1.65;
|
|
342
352
|
border: 1px solid color-mix(in srgb, var(--zd-fg) 40%, transparent);
|
|
343
353
|
border-radius: 0;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"name": "Blueprint",
|
|
5
5
|
"description": "Cyanotype drafting sheet — pale-cyan linework on prussian grid paper, title-block caps, dashed rules, mono-caps labels. Light mode is the vellum original.",
|
|
6
6
|
"mode": "dark",
|
|
7
|
-
"version": "1.0.
|
|
7
|
+
"version": "1.0.1",
|
|
8
8
|
"fonts": {
|
|
9
9
|
"sans": "Inter",
|
|
10
10
|
"mono": "IBM Plex Mono",
|
|
@@ -245,6 +245,15 @@ html[data-theme-pack="blueprint"] body {
|
|
|
245
245
|
background-attachment: fixed;
|
|
246
246
|
}
|
|
247
247
|
|
|
248
|
+
/* Touch devices: background-attachment:fixed is unsupported (iOS Safari) or
|
|
249
|
+
repaint-heavy on scroll — fall back to scroll attachment. Catalog-wide
|
|
250
|
+
convention from issue #3070. */
|
|
251
|
+
@media (pointer: coarse) {
|
|
252
|
+
html[data-theme-pack="blueprint"] body {
|
|
253
|
+
background-attachment: scroll;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
|
|
248
257
|
/* ---- title-block header: solid strip over the sheet, heavy rule
|
|
249
258
|
with a second offset hairline (the double border of a
|
|
250
259
|
drawing's title block) ---- */
|