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,19 +124,19 @@
|
|
|
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" class="active">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><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" class="active">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><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">
|
|
137
137
|
<article class="prose">
|
|
138
138
|
<nav class="breadcrumbs"><a href="../../content/guide/approaches.html">Content</a><span class="separator">›</span><a href="../../content/reference/configuration.html">Reference</a><span class="separator">›</span><span>glossary</span></nav>
|
|
139
|
-
<div class="page-meta">Last updated: 2026-02-
|
|
139
|
+
<div class="page-meta">Last updated: 2026-02-17</div>
|
|
140
140
|
<h1 id="glossary">Glossary</h1>
|
|
141
141
|
<p>If you’re new to static sites or developer tooling, this page is for you. It’s okay to not know this stuff yet.</p>
|
|
142
142
|
<h2 id="site-root">Site root</h2>
|
|
@@ -183,18 +183,30 @@
|
|
|
183
183
|
<p>A named value provided to commands and apps by your shell or host platform (often used for secrets).</p>
|
|
184
184
|
<h2 id="secret">Secret</h2>
|
|
185
185
|
<p>A sensitive value (token/key/password) that should not be committed to git and should be stored in a secret manager or environment variable.</p>
|
|
186
|
+
<h2 id="profile">Profile</h2>
|
|
187
|
+
<p>A named content filter activated via <code>--profile</code> or <code>KITFLY_PROFILE</code>. Files tagged with <code>profile:</code> in frontmatter are only included when their profile is active. Enables single-source multi-audience workflows.</p>
|
|
188
|
+
<h2 id="kitsite">Kitsite</h2>
|
|
189
|
+
<p>The workspace Kitfly renders: typically contains <code>site.yaml</code>, content files, and optional <code>data/</code> + <code>scripts/</code>.</p>
|
|
190
|
+
<h2 id="generator">Generator</h2>
|
|
191
|
+
<p>A script that transforms external data into Kitfly’s file contract (usually writes <code>data/*.yaml</code> or <code>data/*.json</code>).</p>
|
|
192
|
+
<h2 id="data-binding">Data binding</h2>
|
|
193
|
+
<p>Build-time substitution from a bound data file into markdown (<code>{{ key }}</code> and <code>{{ snippet:name }}</code>).</p>
|
|
194
|
+
<h2 id="formatter">Formatter</h2>
|
|
195
|
+
<p>A deterministic value transform in bindings (for example <code>dollar</code>, <code>number</code>, <code>percent</code>, <code>round(n)</code>, <code>upper</code>, <code>lower</code>).</p>
|
|
196
|
+
<h2 id="snippet">Snippet</h2>
|
|
197
|
+
<p>A named markdown block in a data file that can be injected with <code>{{ snippet:name }}</code>.</p>
|
|
186
198
|
|
|
187
199
|
</article>
|
|
188
|
-
<aside class="toc"><span class="toc-title">On this page</span><ul><li><a href="#site-root">Site root</a></li><li><a href="#section">Section</a></li><li><a href="#build">Build</a></li><li><a href="#bundle">Bundle</a></li><li><a href="#dev-server">Dev server</a></li><li><a href="#hot-reload">Hot reload</a></li><li><a href="#frontmatter">Frontmatter</a></li><li><a href="#mode">Mode</a></li><li><a href="#aspect-ratio">Aspect ratio</a></li><li><a href="#static-hosting">Static hosting</a></li><li><a href="#theme">Theme</a></li><li><a href="#template">Template</a></li><li><a href="#mermaid">Mermaid</a></li><li><a href="#prism">Prism</a></li><li><a href="#cdn">CDN</a></li><li><a href="#sri-integrity-hash">SRI / integrity hash</a></li><li><a href="#environment-variable">Environment variable</a></li><li><a href="#secret">Secret</a></li></ul></aside>
|
|
200
|
+
<aside class="toc"><span class="toc-title">On this page</span><ul><li><a href="#site-root">Site root</a></li><li><a href="#section">Section</a></li><li><a href="#build">Build</a></li><li><a href="#bundle">Bundle</a></li><li><a href="#dev-server">Dev server</a></li><li><a href="#hot-reload">Hot reload</a></li><li><a href="#frontmatter">Frontmatter</a></li><li><a href="#mode">Mode</a></li><li><a href="#aspect-ratio">Aspect ratio</a></li><li><a href="#static-hosting">Static hosting</a></li><li><a href="#theme">Theme</a></li><li><a href="#template">Template</a></li><li><a href="#mermaid">Mermaid</a></li><li><a href="#prism">Prism</a></li><li><a href="#cdn">CDN</a></li><li><a href="#sri-integrity-hash">SRI / integrity hash</a></li><li><a href="#environment-variable">Environment variable</a></li><li><a href="#secret">Secret</a></li><li><a href="#profile">Profile</a></li><li><a href="#kitsite">Kitsite</a></li><li><a href="#generator">Generator</a></li><li><a href="#data-binding">Data binding</a></li><li><a href="#formatter">Formatter</a></li><li><a href="#snippet">Snippet</a></li></ul></aside>
|
|
189
201
|
</main>
|
|
190
202
|
</div>
|
|
191
203
|
|
|
192
204
|
<footer class="site-footer">
|
|
193
205
|
<div class="footer-content">
|
|
194
206
|
<div class="footer-left">
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
<span class="footer-commit" title="Commit:
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
<span class="footer-commit" title="Commit: 4062660">Published 2026-03-09</span>
|
|
198
210
|
</div>
|
|
199
211
|
<div class="footer-center">
|
|
200
212
|
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
@@ -273,6 +285,9 @@
|
|
|
273
285
|
if (window.reinitMermaid) {
|
|
274
286
|
window.reinitMermaid();
|
|
275
287
|
}
|
|
288
|
+
if (window.reinitCharts) {
|
|
289
|
+
window.reinitCharts();
|
|
290
|
+
}
|
|
276
291
|
}
|
|
277
292
|
|
|
278
293
|
// 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,19 +124,19 @@
|
|
|
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" class="active">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><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" class="active">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><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">
|
|
137
137
|
<article class="prose">
|
|
138
138
|
<nav class="breadcrumbs"><a href="../../content/guide/approaches.html">Content</a><span class="separator">›</span><a href="../../content/reference/configuration.html">Reference</a><span class="separator">›</span><span>key-concepts</span></nav>
|
|
139
|
-
<div class="page-meta">Last updated: 2026-02-
|
|
139
|
+
<div class="page-meta">Last updated: 2026-02-17</div>
|
|
140
140
|
<h1 id="key-concepts">Key Concepts</h1>
|
|
141
141
|
<p>Kitfly is intentionally small. If you understand these concepts, you understand the whole tool.</p>
|
|
142
142
|
<h2 id="site-root">Site root</h2>
|
|
@@ -194,15 +194,35 @@ description: "What this page is about"
|
|
|
194
194
|
<p>Kitfly can render the same Markdown content in two layouts:</p>
|
|
195
195
|
<ul>
|
|
196
196
|
<li><strong>docs</strong> (default): scrolling pages optimized for reading</li>
|
|
197
|
-
<li><strong>slides</strong>: fixed-aspect
|
|
197
|
+
<li><strong>slides</strong>: fixed-aspect "one page at a time" slides with keyboard navigation</li>
|
|
198
198
|
</ul>
|
|
199
199
|
<p>Slides mode is configured in <code>site.yaml</code>:</p>
|
|
200
200
|
<pre><code class="language-yaml">mode: slides
|
|
201
201
|
aspect: "16/9"
|
|
202
202
|
</code></pre>
|
|
203
|
+
<p>In both modes, organizing content into subfolders produces hierarchical sidebar navigation with collapsible groups. In slides mode, the nav links remain <code>#slide-N</code> hash anchors — the tree structure is visual grouping only.</p>
|
|
203
204
|
<h2 id="assets">Assets</h2>
|
|
204
205
|
<p>Kitfly will serve and bundle common “content-adjacent” assets referenced from Markdown, like images and PDFs.</p>
|
|
205
206
|
<p>Rule of thumb: if it lives next to your docs, Kitfly tries to do the right thing.</p>
|
|
207
|
+
<h2 id="content-profiles-v023">Content profiles (v0.2.3+)</h2>
|
|
208
|
+
<p>Profiles let you produce multiple audience-specific outputs from a single kitsite. Tag files with <code>profile:</code> in frontmatter and activate a profile via <code>--profile</code> flag or <code>KITFLY_PROFILE</code> env var.</p>
|
|
209
|
+
<ul>
|
|
210
|
+
<li>Files without <code>profile:</code> are always included (the common case).</li>
|
|
211
|
+
<li>Tagged files only appear when their profile is active.</li>
|
|
212
|
+
<li>No active profile = only untagged content.</li>
|
|
213
|
+
</ul>
|
|
214
|
+
<p>This is a startup parameter, not a runtime toggle — changing profiles requires restarting the dev server.</p>
|
|
215
|
+
<h2 id="data-bindings-v023">Data bindings (v0.2.3+)</h2>
|
|
216
|
+
<p>A page can opt into build-time bindings by setting <code>data:</code> in frontmatter.</p>
|
|
217
|
+
<ul>
|
|
218
|
+
<li><code>{{ key }}</code> resolves scalar values from a data file.</li>
|
|
219
|
+
<li><code>{{ snippet:name }}</code> injects a named markdown block.</li>
|
|
220
|
+
<li>Formatters like <code>dollar</code>, <code>number</code>, <code>percent</code>, <code>round(n)</code>, <code>upper</code>, <code>lower</code> apply with pipe syntax.</li>
|
|
221
|
+
</ul>
|
|
222
|
+
<p>No loops/conditionals are supported in bindings. If you need logic, use a generator script and write data files before render.</p>
|
|
223
|
+
<h2 id="pre-build-hooks-v023">Pre-build hooks (v0.2.3+)</h2>
|
|
224
|
+
<p><code>prebuild:</code> commands in <code>site.yaml</code> run before <code>dev</code>, <code>build</code>, and <code>bundle</code>.</p>
|
|
225
|
+
<p>Use hooks for generators (CSV/API/etc. to <code>data/*.yaml</code> or <code>data/*.json</code>). In dev mode, hook <code>watch:</code> patterns can re-run hooks when source files change.</p>
|
|
206
226
|
<h2 id="provenance">Provenance</h2>
|
|
207
227
|
<p>Kitfly can emit provenance information (version/build date/git info) so you can answer “what did we ship?”.</p>
|
|
208
228
|
<p>If you see “unversioned”, it usually means your site didn’t set a <code>version</code> in <code>site.yaml</code> and the current git commit isn’t exactly tagged.</p>
|
|
@@ -216,16 +236,16 @@ aspect: "16/9"
|
|
|
216
236
|
</ul>
|
|
217
237
|
|
|
218
238
|
</article>
|
|
219
|
-
<aside class="toc"><span class="toc-title">On this page</span><ul><li><a href="#site-root">Site root</a></li><li><a href="#sections">Sections</a></li><li><a href="#build-vs-bundle-vs-dev">Build vs Bundle vs Dev</a></li><li><a href="#build-vs-bundle">Build vs Bundle</a></li><li><a href="#markdown-frontmatter">Markdown + frontmatter</a></li><li><a href="#modes-docs-vs-slides-v020">Modes: docs vs slides (v0.2.0+)</a></li><li><a href="#assets">Assets</a></li><li><a href="#provenance">Provenance</a></li><li><a href="#static-site-plain-language">“Static site” (plain language)</a></li></ul></aside>
|
|
239
|
+
<aside class="toc"><span class="toc-title">On this page</span><ul><li><a href="#site-root">Site root</a></li><li><a href="#sections">Sections</a></li><li><a href="#build-vs-bundle-vs-dev">Build vs Bundle vs Dev</a></li><li><a href="#build-vs-bundle">Build vs Bundle</a></li><li><a href="#markdown-frontmatter">Markdown + frontmatter</a></li><li><a href="#modes-docs-vs-slides-v020">Modes: docs vs slides (v0.2.0+)</a></li><li><a href="#assets">Assets</a></li><li><a href="#content-profiles-v023">Content profiles (v0.2.3+)</a></li><li><a href="#data-bindings-v023">Data bindings (v0.2.3+)</a></li><li><a href="#pre-build-hooks-v023">Pre-build hooks (v0.2.3+)</a></li><li><a href="#provenance">Provenance</a></li><li><a href="#static-site-plain-language">“Static site” (plain language)</a></li></ul></aside>
|
|
220
240
|
</main>
|
|
221
241
|
</div>
|
|
222
242
|
|
|
223
243
|
<footer class="site-footer">
|
|
224
244
|
<div class="footer-content">
|
|
225
245
|
<div class="footer-left">
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
<span class="footer-commit" title="Commit:
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
<span class="footer-commit" title="Commit: 4062660">Published 2026-03-09</span>
|
|
229
249
|
</div>
|
|
230
250
|
<div class="footer-center">
|
|
231
251
|
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
@@ -304,6 +324,9 @@ aspect: "16/9"
|
|
|
304
324
|
if (window.reinitMermaid) {
|
|
305
325
|
window.reinitMermaid();
|
|
306
326
|
}
|
|
327
|
+
if (window.reinitCharts) {
|
|
328
|
+
window.reinitCharts();
|
|
329
|
+
}
|
|
307
330
|
}
|
|
308
331
|
|
|
309
332
|
// Slides mode hash routing
|