kitfly 0.2.1 → 0.2.4
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 +79 -0
- package/README.md +38 -21
- package/VERSION +1 -1
- package/dist/_raw/content/guide/branding.md +146 -0
- package/dist/_raw/content/guide/data-driven-content.md +204 -0
- package/dist/_raw/content/reference/configuration.md +145 -7
- package/dist/_raw/content/reference/environment-variables.md +26 -1
- package/dist/_raw/content/reference/gantt-widget.md +468 -0
- package/dist/_raw/content/reference/glossary.md +25 -1
- package/dist/_raw/content/reference/key-concepts.md +30 -2
- package/dist/_raw/content/reference/plugins.md +170 -1
- package/dist/_raw/docs/decisions/ADR-0006-data-driven-content.md +350 -0
- package/dist/content/deployment/preflight.html +11 -8
- package/dist/content/deployment/recipes/aws-s3.html +11 -8
- package/dist/content/deployment/recipes/cloudflare-pages.html +11 -8
- package/dist/content/deployment/recipes/cloudflare-r2.html +11 -8
- package/dist/content/deployment/recipes/fly-io.html +11 -8
- package/dist/content/deployment/recipes/github-pages.html +11 -8
- package/dist/content/deployment/recipes/netlify.html +11 -8
- package/dist/content/deployment/recipes/vercel.html +11 -8
- package/dist/content/deployment/secrets-and-env-vars.html +11 -8
- package/dist/content/deployment.html +11 -8
- package/dist/content/guide/approaches.html +11 -8
- package/dist/content/guide/branding.html +509 -0
- package/dist/content/guide/data-driven-content.html +542 -0
- package/dist/content/guide/features.html +11 -8
- package/dist/content/guide/getting-started.html +11 -8
- package/dist/content/guide/kitfly-overview.html +11 -8
- package/dist/content/reference/configuration.html +136 -11
- package/dist/content/reference/design-catalog.html +11 -8
- package/dist/content/reference/environment-variables.html +51 -10
- package/dist/content/reference/gantt-widget.html +899 -0
- package/dist/content/reference/glossary.html +25 -10
- package/dist/content/reference/key-concepts.html +34 -11
- package/dist/content/reference/plugins.html +261 -10
- package/dist/content/reference/slides-authoring-guidelines.html +11 -8
- package/dist/content/reference/structure.html +11 -8
- package/dist/content/reference.html +11 -8
- package/dist/content/templates/crucible.html +11 -8
- package/dist/content/templates/handbook.html +11 -8
- package/dist/content/templates/minimal.html +11 -8
- package/dist/content/templates/overview.html +11 -8
- package/dist/content/templates/pipeline.html +11 -8
- package/dist/content/templates/productbook.html +11 -8
- package/dist/content/templates/runbook.html +11 -8
- package/dist/content/templates/servicebook.html +11 -8
- package/dist/content-index.json +37 -2
- package/dist/docs/decisions/ADR-0001-minimalist-site-code.html +11 -8
- package/dist/docs/decisions/ADR-0002-ai-accessibility.html +11 -8
- package/dist/docs/decisions/ADR-0003-single-file-bundle.html +11 -8
- package/dist/docs/decisions/ADR-0004-bun-runtime.html +11 -8
- package/dist/docs/decisions/ADR-0005-plugin-contract-and-distribution.html +11 -8
- package/dist/docs/decisions/ADR-0006-data-driven-content.html +751 -0
- package/dist/docs/decisions/DDR-0001-viewport-locked-layout.html +11 -8
- package/dist/docs/decisions/DDR-0002-theme-system.html +11 -8
- package/dist/docs/decisions/DDR-0003-bounded-logo-slot.html +11 -8
- package/dist/docs/decisions/DDR-0004-slides-rendering-model.html +11 -8
- package/dist/docs/decisions/DDR-0005-deterministic-layout-boundary.html +11 -8
- package/dist/docs/userguide/cli/build.html +11 -8
- package/dist/docs/userguide/cli/bundle.html +11 -8
- package/dist/docs/userguide/cli/dev.html +11 -8
- package/dist/docs/userguide/cli/init.html +11 -8
- package/dist/docs/userguide/cli/servers.html +11 -8
- package/dist/docs/userguide/cli/stop.html +11 -8
- package/dist/docs/userguide/cli/update.html +11 -8
- package/dist/docs/userguide/cli/version.html +11 -8
- package/dist/docs/userguide/cli.html +11 -8
- package/dist/docs/userguide/sharing.html +11 -8
- package/dist/index.html +11 -8
- package/dist/llms.txt +3 -3
- package/dist/provenance.json +4 -5
- package/dist/reports/license-inventory.csv +199 -0
- package/dist/schemas/plugin-registry.schema.html +11 -8
- package/dist/schemas/plugin-schemas-notes.html +11 -8
- package/dist/schemas/plugin.schema.html +11 -8
- package/dist/schemas/plugins.schema.html +11 -8
- package/dist/schemas/v0/common.schema.html +15 -12
- package/dist/schemas/v0/plugin-registry.schema.html +14 -11
- package/dist/schemas/v0/plugin.schema.html +14 -11
- package/dist/schemas/v0/plugins.schema.html +14 -11
- package/dist/schemas/v0/site.schema.html +68 -9
- package/dist/schemas/v0/theme.schema.html +22 -19
- package/dist/schemas.html +11 -8
- package/dist/styles.css +39 -4
- package/package.json +1 -1
- package/plugins-dist/latex-runtime.js +140 -0
- package/plugins-dist/latex.js +178 -0
- package/plugins-dist/planning-visuals.css +261 -0
- package/plugins-dist/planning-visuals.js +669 -0
- package/plugins-dist/slides-charts-lite-runtime.js +179 -0
- package/plugins-dist/slides-charts-lite.js +198 -0
- package/registry/plugins.yaml +40 -1
- package/schemas/v0/site.schema.json +56 -0
- package/scripts/build-all.ts +5 -0
- package/scripts/build.ts +264 -80
- package/scripts/bundle.ts +188 -17
- package/scripts/dev.ts +294 -171
- package/scripts/embed-docs.ts +119 -0
- package/src/__tests__/brief.test.ts +151 -0
- package/src/__tests__/build.test.ts +293 -1
- package/src/__tests__/bundle.test.ts +195 -0
- package/src/__tests__/docs.test.ts +117 -0
- package/src/__tests__/fixtures/fences/planning-visuals/invalid/bad-month-format.md +10 -0
- package/src/__tests__/fixtures/fences/planning-visuals/invalid/marker-format-mismatch.md +13 -0
- package/src/__tests__/fixtures/fences/planning-visuals/invalid/milestone-format-mismatch.md +13 -0
- package/src/__tests__/fixtures/fences/planning-visuals/invalid/missing-tracks.md +5 -0
- package/src/__tests__/fixtures/fences/planning-visuals/invalid/track-reversed.md +10 -0
- package/src/__tests__/fixtures/fences/planning-visuals/valid/markers-basic.md +15 -0
- package/src/__tests__/fixtures/fences/planning-visuals/valid/markers-no-milestones.md +13 -0
- package/src/__tests__/fixtures/fences/planning-visuals/valid/month-basic.md +16 -0
- package/src/__tests__/fixtures/fences/planning-visuals/valid/no-milestones.md +10 -0
- package/src/__tests__/fixtures/fences/planning-visuals/valid/week-basic.md +20 -0
- package/src/__tests__/init.test.ts +51 -2
- package/src/__tests__/latex-runtime.bun.test.ts +35 -0
- package/src/__tests__/planning-visuals-fence-contract.test.ts +28 -0
- package/src/__tests__/planning-visuals-runtime-regressions.bun.test.ts +68 -0
- package/src/__tests__/planning-visuals-runtime.bun.test.ts +192 -0
- package/src/__tests__/shared.test.ts +719 -1
- package/src/__tests__/slides-charts-lite-runtime.bun.test.ts +45 -0
- package/src/cli.ts +124 -22
- package/src/commands/docs.ts +71 -0
- package/src/commands/init.ts +1 -1
- package/src/generated/embedded-docs.ts +2384 -0
- package/src/server-registry.ts +50 -10
- package/src/shared.ts +1174 -43
- package/src/site/styles.css +39 -4
- package/src/site/template.html +5 -2
- package/src/templates/brief.ts +486 -0
- package/src/templates/deck.ts +59 -0
- package/src/templates/driver.ts +46 -13
- package/src/templates/handbook.ts +32 -0
- package/src/templates/runbook.ts +32 -0
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
</svg>
|
|
90
90
|
</button>
|
|
91
91
|
<a href="../../" class="mobile-logo" title="Home" data-initial="K">
|
|
92
|
-
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon"
|
|
92
|
+
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
93
93
|
</a>
|
|
94
94
|
<button class="mobile-theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
95
95
|
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
<div class="sidebar-header">
|
|
107
107
|
<div class="logo logo-icon">
|
|
108
108
|
<a href="/" class="logo-icon" data-initial="K">
|
|
109
|
-
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img"
|
|
109
|
+
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
110
110
|
</a>
|
|
111
111
|
<span class="logo-text">
|
|
112
112
|
<a href="/" class="brand">Kitfly</a>
|
|
@@ -124,13 +124,13 @@
|
|
|
124
124
|
</svg>
|
|
125
125
|
</button>
|
|
126
126
|
<div class="sidebar-meta">
|
|
127
|
-
<span class="meta-version">
|
|
128
|
-
<span class="meta-branch">
|
|
127
|
+
<span class="meta-version">unversioned</span>
|
|
128
|
+
<span class="meta-branch">main</span>
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
</div>
|
|
132
132
|
<div class="sidebar-nav">
|
|
133
|
-
<ul><li><a href="../../index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="../../content/guide/approaches.html">approaches</a></li><li><a href="../../content/guide/features.html">features</a></li><li><a href="../../content/guide/getting-started.html">getting-started</a></li><li><a href="../../content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="../../content/templates/crucible.html">crucible</a></li><li><a href="../../content/templates/handbook.html">handbook</a></li><li><a href="../../content/templates/minimal.html">minimal</a></li><li><a href="../../content/templates/overview.html">overview</a></li><li><a href="../../content/templates/pipeline.html">pipeline</a></li><li><a href="../../content/templates/productbook.html">productbook</a></li><li><a href="../../content/templates/runbook.html">runbook</a></li><li><a href="../../content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="../../content/reference.html" class="nav-section">Reference</a><ul><li><a href="../../content/reference/configuration.html">configuration</a></li><li><a href="../../content/reference/design-catalog.html">design-catalog</a></li><li><a href="../../content/reference/environment-variables.html">environment-variables</a></li><li><a href="../../content/reference/glossary.html">glossary</a></li><li><a href="../../content/reference/key-concepts.html">key-concepts</a></li><li><a href="../../content/reference/plugins.html">plugins</a></li><li><a href="../../content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="../../content/reference/structure.html">structure</a></li></ul></li><li><a href="../../content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="../../content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="../../content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="../../content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="../../content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="../../content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="../../content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="../../content/deployment/recipes/netlify.html">netlify</a></li><li><a href="../../content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="../../content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="../../docs/userguide/cli.html">cli</a></summary><ul><li><a href="../../docs/userguide/cli/build.html">build</a></li><li><a href="../../docs/userguide/cli/bundle.html">bundle</a></li><li><a href="../../docs/userguide/cli/dev.html">dev</a></li><li><a href="../../docs/userguide/cli/init.html">init</a></li><li><a href="../../docs/userguide/cli/servers.html">servers</a></li><li><a href="../../docs/userguide/cli/stop.html">stop</a></li><li><a href="../../docs/userguide/cli/update.html">update</a></li><li><a href="../../docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="../../docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="../../docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="../../docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="../../docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="../../docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="../../docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="../../docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="../../docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="../../docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="../../docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="../../docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="../../schemas.html" class="nav-section">Schemas</a><ul><li><a href="../../schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="../../schemas/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/plugins.schema.html">plugins.schema</a></li><li><details open><summary class="nav-group">v0</summary><ul><li><a href="../../schemas/v0/common.schema.html">common.schema</a></li><li><a href="../../schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/v0/plugins.schema.html" class="active">plugins.schema</a></li><li><a href="../../schemas/v0/site.schema.html">site.schema</a></li><li><a href="../../schemas/v0/theme.schema.html">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
133
|
+
<ul><li><a href="../../index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="../../content/guide/approaches.html">approaches</a></li><li><a href="../../content/guide/branding.html">branding</a></li><li><a href="../../content/guide/data-driven-content.html">data-driven-content</a></li><li><a href="../../content/guide/features.html">features</a></li><li><a href="../../content/guide/getting-started.html">getting-started</a></li><li><a href="../../content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="../../content/templates/crucible.html">crucible</a></li><li><a href="../../content/templates/handbook.html">handbook</a></li><li><a href="../../content/templates/minimal.html">minimal</a></li><li><a href="../../content/templates/overview.html">overview</a></li><li><a href="../../content/templates/pipeline.html">pipeline</a></li><li><a href="../../content/templates/productbook.html">productbook</a></li><li><a href="../../content/templates/runbook.html">runbook</a></li><li><a href="../../content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="../../content/reference.html" class="nav-section">Reference</a><ul><li><a href="../../content/reference/configuration.html">configuration</a></li><li><a href="../../content/reference/design-catalog.html">design-catalog</a></li><li><a href="../../content/reference/environment-variables.html">environment-variables</a></li><li><a href="../../content/reference/gantt-widget.html">gantt-widget</a></li><li><a href="../../content/reference/glossary.html">glossary</a></li><li><a href="../../content/reference/key-concepts.html">key-concepts</a></li><li><a href="../../content/reference/plugins.html">plugins</a></li><li><a href="../../content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="../../content/reference/structure.html">structure</a></li></ul></li><li><a href="../../content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="../../content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="../../content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="../../content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="../../content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="../../content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="../../content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="../../content/deployment/recipes/netlify.html">netlify</a></li><li><a href="../../content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="../../content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="../../docs/userguide/cli.html">cli</a></summary><ul><li><a href="../../docs/userguide/cli/build.html">build</a></li><li><a href="../../docs/userguide/cli/bundle.html">bundle</a></li><li><a href="../../docs/userguide/cli/dev.html">dev</a></li><li><a href="../../docs/userguide/cli/init.html">init</a></li><li><a href="../../docs/userguide/cli/servers.html">servers</a></li><li><a href="../../docs/userguide/cli/stop.html">stop</a></li><li><a href="../../docs/userguide/cli/update.html">update</a></li><li><a href="../../docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="../../docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="../../docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="../../docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="../../docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="../../docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="../../docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="../../docs/decisions/ADR-0006-data-driven-content.html">ADR-0006-data-driven-content</a></li><li><a href="../../docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="../../docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="../../docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="../../docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="../../docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="../../schemas.html" class="nav-section">Schemas</a><ul><li><a href="../../schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="../../schemas/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/plugins.schema.html">plugins.schema</a></li><li><details open><summary class="nav-group">v0</summary><ul><li><a href="../../schemas/v0/common.schema.html">common.schema</a></li><li><a href="../../schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/v0/plugins.schema.html" class="active">plugins.schema</a></li><li><a href="../../schemas/v0/site.schema.html">site.schema</a></li><li><a href="../../schemas/v0/theme.schema.html">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
134
134
|
</div>
|
|
135
135
|
</nav>
|
|
136
136
|
<main class="content">
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
{
|
|
162
162
|
"type": "string",
|
|
163
163
|
"description": "Canonical plugin reference with strict version pinning (name@x.y.z).",
|
|
164
|
-
"pattern": "^[a-z][a-z0-9-]*@(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)
|
|
164
|
+
"pattern": "^[a-z][a-z0-9-]*@(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?(?:\\+[0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*)?$",
|
|
165
165
|
"examples": [
|
|
166
166
|
"latex@1.0.0",
|
|
167
167
|
"slides-widgets@0.2.0-beta.1"
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
"name": {
|
|
180
180
|
"type": "string",
|
|
181
181
|
"description": "Plugin identifier (used for caching and logging).",
|
|
182
|
-
"pattern": "^[a-z][a-z0-9-]
|
|
182
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
183
183
|
"minLength": 1,
|
|
184
184
|
"maxLength": 40
|
|
185
185
|
},
|
|
@@ -192,7 +192,7 @@
|
|
|
192
192
|
"sha256": {
|
|
193
193
|
"type": "string",
|
|
194
194
|
"description": "Expected SHA256 checksum (hex) for the fetched plugin bundle.",
|
|
195
|
-
"pattern": "^[0-9a-fA-F]{64}
|
|
195
|
+
"pattern": "^[0-9a-fA-F]{64}$"
|
|
196
196
|
}
|
|
197
197
|
},
|
|
198
198
|
"additionalProperties": false
|
|
@@ -230,9 +230,9 @@
|
|
|
230
230
|
<footer class="site-footer">
|
|
231
231
|
<div class="footer-content">
|
|
232
232
|
<div class="footer-left">
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
<span class="footer-commit" title="Commit:
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
<span class="footer-commit" title="Commit: 4062660">Published 2026-03-09</span>
|
|
236
236
|
</div>
|
|
237
237
|
<div class="footer-center">
|
|
238
238
|
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
@@ -311,6 +311,9 @@
|
|
|
311
311
|
if (window.reinitMermaid) {
|
|
312
312
|
window.reinitMermaid();
|
|
313
313
|
}
|
|
314
|
+
if (window.reinitCharts) {
|
|
315
|
+
window.reinitCharts();
|
|
316
|
+
}
|
|
314
317
|
}
|
|
315
318
|
|
|
316
319
|
// Slides mode hash routing
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
</svg>
|
|
90
90
|
</button>
|
|
91
91
|
<a href="../../" class="mobile-logo" title="Home" data-initial="K">
|
|
92
|
-
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon"
|
|
92
|
+
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
93
93
|
</a>
|
|
94
94
|
<button class="mobile-theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
95
95
|
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
<div class="sidebar-header">
|
|
107
107
|
<div class="logo logo-icon">
|
|
108
108
|
<a href="/" class="logo-icon" data-initial="K">
|
|
109
|
-
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img"
|
|
109
|
+
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
110
110
|
</a>
|
|
111
111
|
<span class="logo-text">
|
|
112
112
|
<a href="/" class="brand">Kitfly</a>
|
|
@@ -124,13 +124,13 @@
|
|
|
124
124
|
</svg>
|
|
125
125
|
</button>
|
|
126
126
|
<div class="sidebar-meta">
|
|
127
|
-
<span class="meta-version">
|
|
128
|
-
<span class="meta-branch">
|
|
127
|
+
<span class="meta-version">unversioned</span>
|
|
128
|
+
<span class="meta-branch">main</span>
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
</div>
|
|
132
132
|
<div class="sidebar-nav">
|
|
133
|
-
<ul><li><a href="../../index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="../../content/guide/approaches.html">approaches</a></li><li><a href="../../content/guide/features.html">features</a></li><li><a href="../../content/guide/getting-started.html">getting-started</a></li><li><a href="../../content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="../../content/templates/crucible.html">crucible</a></li><li><a href="../../content/templates/handbook.html">handbook</a></li><li><a href="../../content/templates/minimal.html">minimal</a></li><li><a href="../../content/templates/overview.html">overview</a></li><li><a href="../../content/templates/pipeline.html">pipeline</a></li><li><a href="../../content/templates/productbook.html">productbook</a></li><li><a href="../../content/templates/runbook.html">runbook</a></li><li><a href="../../content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="../../content/reference.html" class="nav-section">Reference</a><ul><li><a href="../../content/reference/configuration.html">configuration</a></li><li><a href="../../content/reference/design-catalog.html">design-catalog</a></li><li><a href="../../content/reference/environment-variables.html">environment-variables</a></li><li><a href="../../content/reference/glossary.html">glossary</a></li><li><a href="../../content/reference/key-concepts.html">key-concepts</a></li><li><a href="../../content/reference/plugins.html">plugins</a></li><li><a href="../../content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="../../content/reference/structure.html">structure</a></li></ul></li><li><a href="../../content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="../../content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="../../content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="../../content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="../../content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="../../content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="../../content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="../../content/deployment/recipes/netlify.html">netlify</a></li><li><a href="../../content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="../../content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="../../docs/userguide/cli.html">cli</a></summary><ul><li><a href="../../docs/userguide/cli/build.html">build</a></li><li><a href="../../docs/userguide/cli/bundle.html">bundle</a></li><li><a href="../../docs/userguide/cli/dev.html">dev</a></li><li><a href="../../docs/userguide/cli/init.html">init</a></li><li><a href="../../docs/userguide/cli/servers.html">servers</a></li><li><a href="../../docs/userguide/cli/stop.html">stop</a></li><li><a href="../../docs/userguide/cli/update.html">update</a></li><li><a href="../../docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="../../docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="../../docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="../../docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="../../docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="../../docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="../../docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="../../docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="../../docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="../../docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="../../docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="../../docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="../../schemas.html" class="nav-section">Schemas</a><ul><li><a href="../../schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="../../schemas/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/plugins.schema.html">plugins.schema</a></li><li><details open><summary class="nav-group">v0</summary><ul><li><a href="../../schemas/v0/common.schema.html">common.schema</a></li><li><a href="../../schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/v0/plugins.schema.html">plugins.schema</a></li><li><a href="../../schemas/v0/site.schema.html" class="active">site.schema</a></li><li><a href="../../schemas/v0/theme.schema.html">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
133
|
+
<ul><li><a href="../../index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="../../content/guide/approaches.html">approaches</a></li><li><a href="../../content/guide/branding.html">branding</a></li><li><a href="../../content/guide/data-driven-content.html">data-driven-content</a></li><li><a href="../../content/guide/features.html">features</a></li><li><a href="../../content/guide/getting-started.html">getting-started</a></li><li><a href="../../content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="../../content/templates/crucible.html">crucible</a></li><li><a href="../../content/templates/handbook.html">handbook</a></li><li><a href="../../content/templates/minimal.html">minimal</a></li><li><a href="../../content/templates/overview.html">overview</a></li><li><a href="../../content/templates/pipeline.html">pipeline</a></li><li><a href="../../content/templates/productbook.html">productbook</a></li><li><a href="../../content/templates/runbook.html">runbook</a></li><li><a href="../../content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="../../content/reference.html" class="nav-section">Reference</a><ul><li><a href="../../content/reference/configuration.html">configuration</a></li><li><a href="../../content/reference/design-catalog.html">design-catalog</a></li><li><a href="../../content/reference/environment-variables.html">environment-variables</a></li><li><a href="../../content/reference/gantt-widget.html">gantt-widget</a></li><li><a href="../../content/reference/glossary.html">glossary</a></li><li><a href="../../content/reference/key-concepts.html">key-concepts</a></li><li><a href="../../content/reference/plugins.html">plugins</a></li><li><a href="../../content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="../../content/reference/structure.html">structure</a></li></ul></li><li><a href="../../content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="../../content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="../../content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="../../content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="../../content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="../../content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="../../content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="../../content/deployment/recipes/netlify.html">netlify</a></li><li><a href="../../content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="../../content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="../../docs/userguide/cli.html">cli</a></summary><ul><li><a href="../../docs/userguide/cli/build.html">build</a></li><li><a href="../../docs/userguide/cli/bundle.html">bundle</a></li><li><a href="../../docs/userguide/cli/dev.html">dev</a></li><li><a href="../../docs/userguide/cli/init.html">init</a></li><li><a href="../../docs/userguide/cli/servers.html">servers</a></li><li><a href="../../docs/userguide/cli/stop.html">stop</a></li><li><a href="../../docs/userguide/cli/update.html">update</a></li><li><a href="../../docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="../../docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="../../docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="../../docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="../../docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="../../docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="../../docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="../../docs/decisions/ADR-0006-data-driven-content.html">ADR-0006-data-driven-content</a></li><li><a href="../../docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="../../docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="../../docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="../../docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="../../docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="../../schemas.html" class="nav-section">Schemas</a><ul><li><a href="../../schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="../../schemas/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/plugins.schema.html">plugins.schema</a></li><li><details open><summary class="nav-group">v0</summary><ul><li><a href="../../schemas/v0/common.schema.html">common.schema</a></li><li><a href="../../schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/v0/plugins.schema.html">plugins.schema</a></li><li><a href="../../schemas/v0/site.schema.html" class="active">site.schema</a></li><li><a href="../../schemas/v0/theme.schema.html">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
134
134
|
</div>
|
|
135
135
|
</nav>
|
|
136
136
|
<main class="content">
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
"schemaVersion": {
|
|
155
155
|
"type": "string",
|
|
156
156
|
"description": "Schema version this config targets (for migration detection)",
|
|
157
|
-
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]
|
|
157
|
+
"pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$",
|
|
158
158
|
"default": "0.1.0"
|
|
159
159
|
},
|
|
160
160
|
"docroot": {
|
|
@@ -162,6 +162,11 @@
|
|
|
162
162
|
"description": "Root directory for content (relative to repo root)",
|
|
163
163
|
"default": "."
|
|
164
164
|
},
|
|
165
|
+
"dataroot": {
|
|
166
|
+
"type": "string",
|
|
167
|
+
"description": "Root directory for data binding files (relative to repo root)",
|
|
168
|
+
"default": "data"
|
|
169
|
+
},
|
|
165
170
|
"title": {
|
|
166
171
|
"type": "string",
|
|
167
172
|
"description": "Site title shown in browser tab and header",
|
|
@@ -230,6 +235,10 @@
|
|
|
230
235
|
"description": "Path to logo image (relative to site root)",
|
|
231
236
|
"default": "assets/brand/logo.png"
|
|
232
237
|
},
|
|
238
|
+
"logoDark": {
|
|
239
|
+
"type": "string",
|
|
240
|
+
"description": "Path to dark mode logo image (relative to site root). Shown when dark theme is active."
|
|
241
|
+
},
|
|
233
242
|
"favicon": {
|
|
234
243
|
"type": "string",
|
|
235
244
|
"description": "Path to favicon image (relative to site root)",
|
|
@@ -331,6 +340,29 @@
|
|
|
331
340
|
"type": "boolean",
|
|
332
341
|
"description": "Show Built with Kitfly attribution",
|
|
333
342
|
"default": true
|
|
343
|
+
},
|
|
344
|
+
"logo": {
|
|
345
|
+
"type": "string",
|
|
346
|
+
"description": "Path to footer logo image (relative to site root)"
|
|
347
|
+
},
|
|
348
|
+
"logoDark": {
|
|
349
|
+
"type": "string",
|
|
350
|
+
"description": "Path to dark mode footer logo image (relative to site root)"
|
|
351
|
+
},
|
|
352
|
+
"logoUrl": {
|
|
353
|
+
"type": "string",
|
|
354
|
+
"description": "Make footer logo a clickable link to this URL"
|
|
355
|
+
},
|
|
356
|
+
"logoAlt": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"description": "Alt text for footer logo (defaults to copyright text if set, brand name otherwise)"
|
|
359
|
+
},
|
|
360
|
+
"logoHeight": {
|
|
361
|
+
"type": "integer",
|
|
362
|
+
"description": "Max height of footer logo in pixels",
|
|
363
|
+
"minimum": 10,
|
|
364
|
+
"maximum": 40,
|
|
365
|
+
"default": 20
|
|
334
366
|
}
|
|
335
367
|
},
|
|
336
368
|
"additionalProperties": false
|
|
@@ -353,6 +385,30 @@
|
|
|
353
385
|
}
|
|
354
386
|
},
|
|
355
387
|
"additionalProperties": false
|
|
388
|
+
},
|
|
389
|
+
"prebuild": {
|
|
390
|
+
"type": "array",
|
|
391
|
+
"description": "Commands to run before dev/build/bundle",
|
|
392
|
+
"items": {
|
|
393
|
+
"type": "object",
|
|
394
|
+
"required": [
|
|
395
|
+
"command"
|
|
396
|
+
],
|
|
397
|
+
"properties": {
|
|
398
|
+
"command": {
|
|
399
|
+
"type": "string",
|
|
400
|
+
"description": "Shell command to execute"
|
|
401
|
+
},
|
|
402
|
+
"watch": {
|
|
403
|
+
"type": "array",
|
|
404
|
+
"description": "File patterns that re-run this hook in dev mode",
|
|
405
|
+
"items": {
|
|
406
|
+
"type": "string"
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
},
|
|
410
|
+
"additionalProperties": false
|
|
411
|
+
}
|
|
356
412
|
}
|
|
357
413
|
},
|
|
358
414
|
"additionalProperties": false
|
|
@@ -365,9 +421,9 @@
|
|
|
365
421
|
<footer class="site-footer">
|
|
366
422
|
<div class="footer-content">
|
|
367
423
|
<div class="footer-left">
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
<span class="footer-commit" title="Commit:
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
<span class="footer-commit" title="Commit: 4062660">Published 2026-03-09</span>
|
|
371
427
|
</div>
|
|
372
428
|
<div class="footer-center">
|
|
373
429
|
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
@@ -446,6 +502,9 @@
|
|
|
446
502
|
if (window.reinitMermaid) {
|
|
447
503
|
window.reinitMermaid();
|
|
448
504
|
}
|
|
505
|
+
if (window.reinitCharts) {
|
|
506
|
+
window.reinitCharts();
|
|
507
|
+
}
|
|
449
508
|
}
|
|
450
509
|
|
|
451
510
|
// Slides mode hash routing
|
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
</svg>
|
|
90
90
|
</button>
|
|
91
91
|
<a href="../../" class="mobile-logo" title="Home" data-initial="K">
|
|
92
|
-
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon"
|
|
92
|
+
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
93
93
|
</a>
|
|
94
94
|
<button class="mobile-theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
95
95
|
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
<div class="sidebar-header">
|
|
107
107
|
<div class="logo logo-icon">
|
|
108
108
|
<a href="/" class="logo-icon" data-initial="K">
|
|
109
|
-
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img"
|
|
109
|
+
<img src="../../assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
110
110
|
</a>
|
|
111
111
|
<span class="logo-text">
|
|
112
112
|
<a href="/" class="brand">Kitfly</a>
|
|
@@ -124,13 +124,13 @@
|
|
|
124
124
|
</svg>
|
|
125
125
|
</button>
|
|
126
126
|
<div class="sidebar-meta">
|
|
127
|
-
<span class="meta-version">
|
|
128
|
-
<span class="meta-branch">
|
|
127
|
+
<span class="meta-version">unversioned</span>
|
|
128
|
+
<span class="meta-branch">main</span>
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
</div>
|
|
132
132
|
<div class="sidebar-nav">
|
|
133
|
-
<ul><li><a href="../../index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="../../content/guide/approaches.html">approaches</a></li><li><a href="../../content/guide/features.html">features</a></li><li><a href="../../content/guide/getting-started.html">getting-started</a></li><li><a href="../../content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="../../content/templates/crucible.html">crucible</a></li><li><a href="../../content/templates/handbook.html">handbook</a></li><li><a href="../../content/templates/minimal.html">minimal</a></li><li><a href="../../content/templates/overview.html">overview</a></li><li><a href="../../content/templates/pipeline.html">pipeline</a></li><li><a href="../../content/templates/productbook.html">productbook</a></li><li><a href="../../content/templates/runbook.html">runbook</a></li><li><a href="../../content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="../../content/reference.html" class="nav-section">Reference</a><ul><li><a href="../../content/reference/configuration.html">configuration</a></li><li><a href="../../content/reference/design-catalog.html">design-catalog</a></li><li><a href="../../content/reference/environment-variables.html">environment-variables</a></li><li><a href="../../content/reference/glossary.html">glossary</a></li><li><a href="../../content/reference/key-concepts.html">key-concepts</a></li><li><a href="../../content/reference/plugins.html">plugins</a></li><li><a href="../../content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="../../content/reference/structure.html">structure</a></li></ul></li><li><a href="../../content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="../../content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="../../content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="../../content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="../../content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="../../content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="../../content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="../../content/deployment/recipes/netlify.html">netlify</a></li><li><a href="../../content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="../../content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="../../docs/userguide/cli.html">cli</a></summary><ul><li><a href="../../docs/userguide/cli/build.html">build</a></li><li><a href="../../docs/userguide/cli/bundle.html">bundle</a></li><li><a href="../../docs/userguide/cli/dev.html">dev</a></li><li><a href="../../docs/userguide/cli/init.html">init</a></li><li><a href="../../docs/userguide/cli/servers.html">servers</a></li><li><a href="../../docs/userguide/cli/stop.html">stop</a></li><li><a href="../../docs/userguide/cli/update.html">update</a></li><li><a href="../../docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="../../docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="../../docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="../../docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="../../docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="../../docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="../../docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="../../docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="../../docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="../../docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="../../docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="../../docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="../../schemas.html" class="nav-section">Schemas</a><ul><li><a href="../../schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="../../schemas/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/plugins.schema.html">plugins.schema</a></li><li><details open><summary class="nav-group">v0</summary><ul><li><a href="../../schemas/v0/common.schema.html">common.schema</a></li><li><a href="../../schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/v0/plugins.schema.html">plugins.schema</a></li><li><a href="../../schemas/v0/site.schema.html">site.schema</a></li><li><a href="../../schemas/v0/theme.schema.html" class="active">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
133
|
+
<ul><li><a href="../../index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="../../content/guide/approaches.html">approaches</a></li><li><a href="../../content/guide/branding.html">branding</a></li><li><a href="../../content/guide/data-driven-content.html">data-driven-content</a></li><li><a href="../../content/guide/features.html">features</a></li><li><a href="../../content/guide/getting-started.html">getting-started</a></li><li><a href="../../content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="../../content/templates/crucible.html">crucible</a></li><li><a href="../../content/templates/handbook.html">handbook</a></li><li><a href="../../content/templates/minimal.html">minimal</a></li><li><a href="../../content/templates/overview.html">overview</a></li><li><a href="../../content/templates/pipeline.html">pipeline</a></li><li><a href="../../content/templates/productbook.html">productbook</a></li><li><a href="../../content/templates/runbook.html">runbook</a></li><li><a href="../../content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="../../content/reference.html" class="nav-section">Reference</a><ul><li><a href="../../content/reference/configuration.html">configuration</a></li><li><a href="../../content/reference/design-catalog.html">design-catalog</a></li><li><a href="../../content/reference/environment-variables.html">environment-variables</a></li><li><a href="../../content/reference/gantt-widget.html">gantt-widget</a></li><li><a href="../../content/reference/glossary.html">glossary</a></li><li><a href="../../content/reference/key-concepts.html">key-concepts</a></li><li><a href="../../content/reference/plugins.html">plugins</a></li><li><a href="../../content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="../../content/reference/structure.html">structure</a></li></ul></li><li><a href="../../content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="../../content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="../../content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="../../content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="../../content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="../../content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="../../content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="../../content/deployment/recipes/netlify.html">netlify</a></li><li><a href="../../content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="../../content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="../../docs/userguide/cli.html">cli</a></summary><ul><li><a href="../../docs/userguide/cli/build.html">build</a></li><li><a href="../../docs/userguide/cli/bundle.html">bundle</a></li><li><a href="../../docs/userguide/cli/dev.html">dev</a></li><li><a href="../../docs/userguide/cli/init.html">init</a></li><li><a href="../../docs/userguide/cli/servers.html">servers</a></li><li><a href="../../docs/userguide/cli/stop.html">stop</a></li><li><a href="../../docs/userguide/cli/update.html">update</a></li><li><a href="../../docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="../../docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="../../docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="../../docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="../../docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="../../docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="../../docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="../../docs/decisions/ADR-0006-data-driven-content.html">ADR-0006-data-driven-content</a></li><li><a href="../../docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="../../docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="../../docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="../../docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="../../docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="../../schemas.html" class="nav-section">Schemas</a><ul><li><a href="../../schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="../../schemas/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/plugins.schema.html">plugins.schema</a></li><li><details open><summary class="nav-group">v0</summary><ul><li><a href="../../schemas/v0/common.schema.html">common.schema</a></li><li><a href="../../schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="../../schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="../../schemas/v0/plugins.schema.html">plugins.schema</a></li><li><a href="../../schemas/v0/site.schema.html">site.schema</a></li><li><a href="../../schemas/v0/theme.schema.html" class="active">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
134
134
|
</div>
|
|
135
135
|
</nav>
|
|
136
136
|
<main class="content">
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"sidebarWidth": {
|
|
168
168
|
"type": "string",
|
|
169
169
|
"description": "Sidebar width (CSS length value)",
|
|
170
|
-
"pattern": "^[0-9]+(px|rem|em|%)
|
|
170
|
+
"pattern": "^[0-9]+(px|rem|em|%)$",
|
|
171
171
|
"default": "280px",
|
|
172
172
|
"examples": [
|
|
173
173
|
"280px",
|
|
@@ -263,7 +263,7 @@
|
|
|
263
263
|
"baseSize": {
|
|
264
264
|
"type": "string",
|
|
265
265
|
"description": "Base font size",
|
|
266
|
-
"pattern": "^[0-9]+(px|rem|em)
|
|
266
|
+
"pattern": "^[0-9]+(px|rem|em)$",
|
|
267
267
|
"default": "16px",
|
|
268
268
|
"examples": [
|
|
269
269
|
"16px",
|
|
@@ -304,7 +304,7 @@
|
|
|
304
304
|
"background": {
|
|
305
305
|
"type": "string",
|
|
306
306
|
"description": "Page background color",
|
|
307
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
307
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
308
308
|
"examples": [
|
|
309
309
|
"#ffffff",
|
|
310
310
|
"#0f1e2b"
|
|
@@ -313,7 +313,7 @@
|
|
|
313
313
|
"surface": {
|
|
314
314
|
"type": "string",
|
|
315
315
|
"description": "Elevated surface color (cards, code blocks)",
|
|
316
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
316
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
317
317
|
"examples": [
|
|
318
318
|
"#f5f7f8",
|
|
319
319
|
"#152F46"
|
|
@@ -322,7 +322,7 @@
|
|
|
322
322
|
"text": {
|
|
323
323
|
"type": "string",
|
|
324
324
|
"description": "Primary body text color",
|
|
325
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
325
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
326
326
|
"examples": [
|
|
327
327
|
"#374151",
|
|
328
328
|
"#e5e7eb"
|
|
@@ -331,7 +331,7 @@
|
|
|
331
331
|
"textMuted": {
|
|
332
332
|
"type": "string",
|
|
333
333
|
"description": "Secondary/muted text color",
|
|
334
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
334
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
335
335
|
"examples": [
|
|
336
336
|
"#6b7280",
|
|
337
337
|
"#9ca3af"
|
|
@@ -340,7 +340,7 @@
|
|
|
340
340
|
"heading": {
|
|
341
341
|
"type": "string",
|
|
342
342
|
"description": "Heading text color",
|
|
343
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
343
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
344
344
|
"examples": [
|
|
345
345
|
"#152F46",
|
|
346
346
|
"#f9fafb"
|
|
@@ -349,7 +349,7 @@
|
|
|
349
349
|
"primary": {
|
|
350
350
|
"type": "string",
|
|
351
351
|
"description": "Primary accent color (links, buttons)",
|
|
352
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
352
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
353
353
|
"examples": [
|
|
354
354
|
"#007182",
|
|
355
355
|
"#4db8c7"
|
|
@@ -358,7 +358,7 @@
|
|
|
358
358
|
"primaryHover": {
|
|
359
359
|
"type": "string",
|
|
360
360
|
"description": "Primary color hover state",
|
|
361
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
361
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
362
362
|
"examples": [
|
|
363
363
|
"#005c6a",
|
|
364
364
|
"#6cc9d6"
|
|
@@ -367,7 +367,7 @@
|
|
|
367
367
|
"accent": {
|
|
368
368
|
"type": "string",
|
|
369
369
|
"description": "Secondary accent color (highlights, CTAs)",
|
|
370
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
370
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
371
371
|
"examples": [
|
|
372
372
|
"#D17059",
|
|
373
373
|
"#e8947f"
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
"border": {
|
|
377
377
|
"type": "string",
|
|
378
378
|
"description": "Border and divider color",
|
|
379
|
-
"pattern": "^#[0-9a-fA-F]{6}
|
|
379
|
+
"pattern": "^#[0-9a-fA-F]{6}$",
|
|
380
380
|
"examples": [
|
|
381
381
|
"#e5e7eb",
|
|
382
382
|
"#374151"
|
|
@@ -439,9 +439,9 @@
|
|
|
439
439
|
<footer class="site-footer">
|
|
440
440
|
<div class="footer-content">
|
|
441
441
|
<div class="footer-left">
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
<span class="footer-commit" title="Commit:
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
<span class="footer-commit" title="Commit: 4062660">Published 2026-03-09</span>
|
|
445
445
|
</div>
|
|
446
446
|
<div class="footer-center">
|
|
447
447
|
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
@@ -520,6 +520,9 @@
|
|
|
520
520
|
if (window.reinitMermaid) {
|
|
521
521
|
window.reinitMermaid();
|
|
522
522
|
}
|
|
523
|
+
if (window.reinitCharts) {
|
|
524
|
+
window.reinitCharts();
|
|
525
|
+
}
|
|
523
526
|
}
|
|
524
527
|
|
|
525
528
|
// Slides mode hash routing
|
package/dist/schemas.html
CHANGED
|
@@ -89,7 +89,7 @@
|
|
|
89
89
|
</svg>
|
|
90
90
|
</button>
|
|
91
91
|
<a href="./" class="mobile-logo" title="Home" data-initial="K">
|
|
92
|
-
<img src="./assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon"
|
|
92
|
+
<img src="./assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img logo-icon" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
93
93
|
</a>
|
|
94
94
|
<button class="mobile-theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
95
95
|
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
<div class="sidebar-header">
|
|
107
107
|
<div class="logo logo-icon">
|
|
108
108
|
<a href="/" class="logo-icon" data-initial="K">
|
|
109
|
-
<img src="./assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img"
|
|
109
|
+
<img src="./assets/brand/kitfly-neon-256.png" alt="Kitfly" class="logo-img" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')">
|
|
110
110
|
</a>
|
|
111
111
|
<span class="logo-text">
|
|
112
112
|
<a href="/" class="brand">Kitfly</a>
|
|
@@ -124,13 +124,13 @@
|
|
|
124
124
|
</svg>
|
|
125
125
|
</button>
|
|
126
126
|
<div class="sidebar-meta">
|
|
127
|
-
<span class="meta-version">
|
|
128
|
-
<span class="meta-branch">
|
|
127
|
+
<span class="meta-version">unversioned</span>
|
|
128
|
+
<span class="meta-branch">main</span>
|
|
129
129
|
</div>
|
|
130
130
|
</div>
|
|
131
131
|
</div>
|
|
132
132
|
<div class="sidebar-nav">
|
|
133
|
-
<ul><li><a href="./index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="./content/guide/approaches.html">approaches</a></li><li><a href="./content/guide/features.html">features</a></li><li><a href="./content/guide/getting-started.html">getting-started</a></li><li><a href="./content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="./content/templates/crucible.html">crucible</a></li><li><a href="./content/templates/handbook.html">handbook</a></li><li><a href="./content/templates/minimal.html">minimal</a></li><li><a href="./content/templates/overview.html">overview</a></li><li><a href="./content/templates/pipeline.html">pipeline</a></li><li><a href="./content/templates/productbook.html">productbook</a></li><li><a href="./content/templates/runbook.html">runbook</a></li><li><a href="./content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="./content/reference.html" class="nav-section">Reference</a><ul><li><a href="./content/reference/configuration.html">configuration</a></li><li><a href="./content/reference/design-catalog.html">design-catalog</a></li><li><a href="./content/reference/environment-variables.html">environment-variables</a></li><li><a href="./content/reference/glossary.html">glossary</a></li><li><a href="./content/reference/key-concepts.html">key-concepts</a></li><li><a href="./content/reference/plugins.html">plugins</a></li><li><a href="./content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="./content/reference/structure.html">structure</a></li></ul></li><li><a href="./content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="./content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="./content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="./content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="./content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="./content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="./content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="./content/deployment/recipes/netlify.html">netlify</a></li><li><a href="./content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="./content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="./docs/userguide/cli.html">cli</a></summary><ul><li><a href="./docs/userguide/cli/build.html">build</a></li><li><a href="./docs/userguide/cli/bundle.html">bundle</a></li><li><a href="./docs/userguide/cli/dev.html">dev</a></li><li><a href="./docs/userguide/cli/init.html">init</a></li><li><a href="./docs/userguide/cli/servers.html">servers</a></li><li><a href="./docs/userguide/cli/stop.html">stop</a></li><li><a href="./docs/userguide/cli/update.html">update</a></li><li><a href="./docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="./docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="./docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="./docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="./docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="./docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="./docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="./docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="./docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="./docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="./docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="./docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="./schemas.html" class="active" class="nav-section">Schemas</a><ul><li><a href="./schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="./schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="./schemas/plugin.schema.html">plugin.schema</a></li><li><a href="./schemas/plugins.schema.html">plugins.schema</a></li><li><details><summary class="nav-group">v0</summary><ul><li><a href="./schemas/v0/common.schema.html">common.schema</a></li><li><a href="./schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="./schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="./schemas/v0/plugins.schema.html">plugins.schema</a></li><li><a href="./schemas/v0/site.schema.html">site.schema</a></li><li><a href="./schemas/v0/theme.schema.html">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
133
|
+
<ul><li><a href="./index.html" class="nav-home">Home</a></li><li><span class="nav-section">Guide</span><ul><li><a href="./content/guide/approaches.html">approaches</a></li><li><a href="./content/guide/branding.html">branding</a></li><li><a href="./content/guide/data-driven-content.html">data-driven-content</a></li><li><a href="./content/guide/features.html">features</a></li><li><a href="./content/guide/getting-started.html">getting-started</a></li><li><a href="./content/guide/kitfly-overview.html">kitfly-overview</a></li></ul></li><li><span class="nav-section">Templates</span><ul><li><a href="./content/templates/crucible.html">crucible</a></li><li><a href="./content/templates/handbook.html">handbook</a></li><li><a href="./content/templates/minimal.html">minimal</a></li><li><a href="./content/templates/overview.html">overview</a></li><li><a href="./content/templates/pipeline.html">pipeline</a></li><li><a href="./content/templates/productbook.html">productbook</a></li><li><a href="./content/templates/runbook.html">runbook</a></li><li><a href="./content/templates/servicebook.html">servicebook</a></li></ul></li><li><a href="./content/reference.html" class="nav-section">Reference</a><ul><li><a href="./content/reference/configuration.html">configuration</a></li><li><a href="./content/reference/design-catalog.html">design-catalog</a></li><li><a href="./content/reference/environment-variables.html">environment-variables</a></li><li><a href="./content/reference/gantt-widget.html">gantt-widget</a></li><li><a href="./content/reference/glossary.html">glossary</a></li><li><a href="./content/reference/key-concepts.html">key-concepts</a></li><li><a href="./content/reference/plugins.html">plugins</a></li><li><a href="./content/reference/slides-authoring-guidelines.html">slides-authoring-guidelines</a></li><li><a href="./content/reference/structure.html">structure</a></li></ul></li><li><a href="./content/deployment.html" class="nav-section">Deployment</a><ul><li><a href="./content/deployment/preflight.html">preflight</a></li><li><details><summary class="nav-group">recipes</summary><ul><li><a href="./content/deployment/recipes/aws-s3.html">aws-s3</a></li><li><a href="./content/deployment/recipes/cloudflare-pages.html">cloudflare-pages</a></li><li><a href="./content/deployment/recipes/cloudflare-r2.html">cloudflare-r2</a></li><li><a href="./content/deployment/recipes/fly-io.html">fly-io</a></li><li><a href="./content/deployment/recipes/github-pages.html">github-pages</a></li><li><a href="./content/deployment/recipes/netlify.html">netlify</a></li><li><a href="./content/deployment/recipes/vercel.html">vercel</a></li></ul></details></li><li><a href="./content/deployment/secrets-and-env-vars.html">secrets-and-env-vars</a></li></ul></li><li><span class="nav-section">User Guide</span><ul><li><details><summary class="nav-group"><a href="./docs/userguide/cli.html">cli</a></summary><ul><li><a href="./docs/userguide/cli/build.html">build</a></li><li><a href="./docs/userguide/cli/bundle.html">bundle</a></li><li><a href="./docs/userguide/cli/dev.html">dev</a></li><li><a href="./docs/userguide/cli/init.html">init</a></li><li><a href="./docs/userguide/cli/servers.html">servers</a></li><li><a href="./docs/userguide/cli/stop.html">stop</a></li><li><a href="./docs/userguide/cli/update.html">update</a></li><li><a href="./docs/userguide/cli/version.html">version</a></li></ul></details></li><li><a href="./docs/userguide/sharing.html">sharing</a></li></ul></li><li><span class="nav-section">Decisions</span><ul><li><a href="./docs/decisions/ADR-0001-minimalist-site-code.html">ADR-0001-minimalist-site-code</a></li><li><a href="./docs/decisions/ADR-0002-ai-accessibility.html">ADR-0002-ai-accessibility</a></li><li><a href="./docs/decisions/ADR-0003-single-file-bundle.html">ADR-0003-single-file-bundle</a></li><li><a href="./docs/decisions/ADR-0004-bun-runtime.html">ADR-0004-bun-runtime</a></li><li><a href="./docs/decisions/ADR-0005-plugin-contract-and-distribution.html">ADR-0005-plugin-contract-and-distribution</a></li><li><a href="./docs/decisions/ADR-0006-data-driven-content.html">ADR-0006-data-driven-content</a></li><li><a href="./docs/decisions/DDR-0001-viewport-locked-layout.html">DDR-0001-viewport-locked-layout</a></li><li><a href="./docs/decisions/DDR-0002-theme-system.html">DDR-0002-theme-system</a></li><li><a href="./docs/decisions/DDR-0003-bounded-logo-slot.html">DDR-0003-bounded-logo-slot</a></li><li><a href="./docs/decisions/DDR-0004-slides-rendering-model.html">DDR-0004-slides-rendering-model</a></li><li><a href="./docs/decisions/DDR-0005-deterministic-layout-boundary.html">DDR-0005-deterministic-layout-boundary</a></li></ul></li><li><a href="./schemas.html" class="active" class="nav-section">Schemas</a><ul><li><a href="./schemas/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="./schemas/plugin-schemas-notes.html">plugin-schemas-notes</a></li><li><a href="./schemas/plugin.schema.html">plugin.schema</a></li><li><a href="./schemas/plugins.schema.html">plugins.schema</a></li><li><details><summary class="nav-group">v0</summary><ul><li><a href="./schemas/v0/common.schema.html">common.schema</a></li><li><a href="./schemas/v0/plugin-registry.schema.html">plugin-registry.schema</a></li><li><a href="./schemas/v0/plugin.schema.html">plugin.schema</a></li><li><a href="./schemas/v0/plugins.schema.html">plugins.schema</a></li><li><a href="./schemas/v0/site.schema.html">site.schema</a></li><li><a href="./schemas/v0/theme.schema.html">theme.schema</a></li></ul></details></li></ul></li></ul>
|
|
134
134
|
</div>
|
|
135
135
|
</nav>
|
|
136
136
|
<main class="content">
|
|
@@ -175,9 +175,9 @@ that <code>$ref</code> the latest <code>schemas/v0/*</code> schemas.</p>
|
|
|
175
175
|
<footer class="site-footer">
|
|
176
176
|
<div class="footer-content">
|
|
177
177
|
<div class="footer-left">
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
<span class="footer-commit" title="Commit:
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
<span class="footer-commit" title="Commit: 4062660">Published 2026-03-09</span>
|
|
181
181
|
</div>
|
|
182
182
|
<div class="footer-center">
|
|
183
183
|
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
@@ -256,6 +256,9 @@ that <code>$ref</code> the latest <code>schemas/v0/*</code> schemas.</p>
|
|
|
256
256
|
if (window.reinitMermaid) {
|
|
257
257
|
window.reinitMermaid();
|
|
258
258
|
}
|
|
259
|
+
if (window.reinitCharts) {
|
|
260
|
+
window.reinitCharts();
|
|
261
|
+
}
|
|
259
262
|
}
|
|
260
263
|
|
|
261
264
|
// Slides mode hash routing
|