kitfly 0.1.2 → 0.2.1
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 +46 -0
- package/README.md +63 -16
- package/VERSION +1 -1
- package/dist/_raw/content/deployment/preflight.md +134 -0
- package/dist/_raw/content/deployment/recipes/aws-s3.md +128 -0
- package/dist/_raw/content/deployment/recipes/cloudflare-pages.md +73 -0
- package/dist/_raw/content/deployment/recipes/cloudflare-r2.md +156 -0
- package/dist/_raw/content/deployment/recipes/fly-io.md +57 -0
- package/dist/_raw/content/deployment/recipes/github-pages.md +112 -0
- package/dist/_raw/content/deployment/recipes/netlify.md +99 -0
- package/dist/_raw/content/deployment/recipes/vercel.md +88 -0
- package/dist/_raw/content/deployment/secrets-and-env-vars.md +75 -0
- package/dist/_raw/content/deployment.md +128 -0
- package/dist/_raw/content/guide/approaches.md +182 -0
- package/dist/_raw/content/guide/features.md +121 -0
- package/dist/_raw/content/guide/getting-started.md +112 -0
- package/dist/_raw/content/guide/kitfly-overview.md +209 -0
- package/dist/_raw/content/reference/configuration.md +259 -0
- package/dist/_raw/content/reference/design-catalog.md +167 -0
- package/dist/_raw/content/reference/environment-variables.md +66 -0
- package/dist/_raw/content/reference/glossary.md +92 -0
- package/dist/_raw/content/reference/key-concepts.md +118 -0
- package/dist/_raw/content/reference/plugins.md +220 -0
- package/dist/_raw/content/reference/slides-authoring-guidelines.md +129 -0
- package/dist/_raw/content/reference/structure.md +166 -0
- package/dist/_raw/content/reference.md +20 -0
- package/dist/_raw/content/templates/crucible.md +192 -0
- package/dist/_raw/content/templates/handbook.md +83 -0
- package/dist/_raw/content/templates/minimal.md +138 -0
- package/dist/_raw/content/templates/overview.md +187 -0
- package/dist/_raw/content/templates/pipeline.md +151 -0
- package/dist/_raw/content/templates/productbook.md +187 -0
- package/dist/_raw/content/templates/runbook.md +193 -0
- package/dist/_raw/content/templates/servicebook.md +163 -0
- package/dist/_raw/docs/decisions/ADR-0001-minimalist-site-code.md +118 -0
- package/dist/_raw/docs/decisions/ADR-0002-ai-accessibility.md +153 -0
- package/dist/_raw/docs/decisions/ADR-0003-single-file-bundle.md +93 -0
- package/dist/_raw/docs/decisions/ADR-0004-bun-runtime.md +98 -0
- package/dist/_raw/docs/decisions/ADR-0005-plugin-contract-and-distribution.md +110 -0
- package/dist/_raw/docs/decisions/DDR-0001-viewport-locked-layout.md +111 -0
- package/dist/_raw/docs/decisions/DDR-0002-theme-system.md +131 -0
- package/dist/_raw/docs/decisions/DDR-0003-bounded-logo-slot.md +106 -0
- package/dist/_raw/docs/decisions/DDR-0004-slides-rendering-model.md +113 -0
- package/dist/_raw/docs/decisions/DDR-0005-deterministic-layout-boundary.md +107 -0
- package/dist/_raw/docs/userguide/cli/build.md +85 -0
- package/dist/_raw/docs/userguide/cli/bundle.md +81 -0
- package/dist/_raw/docs/userguide/cli/dev.md +92 -0
- package/dist/_raw/docs/userguide/cli/init.md +116 -0
- package/dist/_raw/docs/userguide/cli/servers.md +69 -0
- package/dist/_raw/docs/userguide/cli/stop.md +76 -0
- package/dist/_raw/docs/userguide/cli/update.md +78 -0
- package/dist/_raw/docs/userguide/cli/version.md +65 -0
- package/dist/_raw/docs/userguide/cli.md +34 -0
- package/dist/_raw/docs/userguide/sharing.md +94 -0
- package/dist/_raw/schemas/plugin-schemas-notes.md +71 -0
- package/dist/_raw/schemas.md +42 -0
- package/dist/assets/brand/kitfly-favicon-32.png +0 -0
- package/dist/assets/brand/kitfly-icon-64.png +0 -0
- package/dist/assets/brand/kitfly-logo-128.png +0 -0
- package/dist/assets/brand/kitfly-logo-512.png +0 -0
- package/dist/assets/brand/kitfly-logo.svg +12132 -0
- package/dist/assets/brand/kitfly-neon-128.png +0 -0
- package/dist/assets/brand/kitfly-neon-192.png +0 -0
- package/dist/assets/brand/kitfly-neon-256.png +0 -0
- package/dist/assets/brand/kitfly-neon.png +0 -0
- package/dist/assets/brand/palette.md +75 -0
- package/dist/content/deployment/index.html +11 -0
- package/dist/content/deployment/preflight.html +418 -0
- package/dist/content/deployment/recipes/aws-s3.html +421 -0
- package/dist/content/deployment/recipes/cloudflare-pages.html +372 -0
- package/dist/content/deployment/recipes/cloudflare-r2.html +443 -0
- package/dist/content/deployment/recipes/fly-io.html +356 -0
- package/dist/content/deployment/recipes/github-pages.html +414 -0
- package/dist/content/deployment/recipes/index.html +11 -0
- package/dist/content/deployment/recipes/netlify.html +394 -0
- package/dist/content/deployment/recipes/vercel.html +382 -0
- package/dist/content/deployment/secrets-and-env-vars.html +380 -0
- package/dist/content/deployment.html +426 -0
- package/dist/content/guide/approaches.html +501 -0
- package/dist/content/guide/features.html +436 -0
- package/dist/content/guide/getting-started.html +403 -0
- package/dist/content/guide/index.html +11 -0
- package/dist/content/guide/kitfly-overview.html +544 -0
- package/dist/content/index.html +11 -0
- package/dist/content/reference/configuration.html +580 -0
- package/dist/content/reference/design-catalog.html +449 -0
- package/dist/content/reference/environment-variables.html +367 -0
- package/dist/content/reference/glossary.html +368 -0
- package/dist/content/reference/index.html +11 -0
- package/dist/content/reference/key-concepts.html +399 -0
- package/dist/content/reference/plugins.html +491 -0
- package/dist/content/reference/slides-authoring-guidelines.html +418 -0
- package/dist/content/reference/structure.html +463 -0
- package/dist/content/reference.html +335 -0
- package/dist/content/templates/crucible.html +546 -0
- package/dist/content/templates/handbook.html +405 -0
- package/dist/content/templates/index.html +11 -0
- package/dist/content/templates/minimal.html +447 -0
- package/dist/content/templates/overview.html +558 -0
- package/dist/content/templates/pipeline.html +494 -0
- package/dist/content/templates/productbook.html +540 -0
- package/dist/content/templates/runbook.html +543 -0
- package/dist/content/templates/servicebook.html +523 -0
- package/dist/content-index.json +549 -0
- package/dist/docs/decisions/ADR-0001-minimalist-site-code.html +491 -0
- package/dist/docs/decisions/ADR-0002-ai-accessibility.html +434 -0
- package/dist/docs/decisions/ADR-0003-single-file-bundle.html +412 -0
- package/dist/docs/decisions/ADR-0004-bun-runtime.html +409 -0
- package/dist/docs/decisions/ADR-0005-plugin-contract-and-distribution.html +402 -0
- package/dist/docs/decisions/DDR-0001-viewport-locked-layout.html +459 -0
- package/dist/docs/decisions/DDR-0002-theme-system.html +452 -0
- package/dist/docs/decisions/DDR-0003-bounded-logo-slot.html +423 -0
- package/dist/docs/decisions/DDR-0004-slides-rendering-model.html +399 -0
- package/dist/docs/decisions/DDR-0005-deterministic-layout-boundary.html +422 -0
- package/dist/docs/decisions/index.html +11 -0
- package/dist/docs/userguide/cli/build.html +408 -0
- package/dist/docs/userguide/cli/bundle.html +419 -0
- package/dist/docs/userguide/cli/dev.html +428 -0
- package/dist/docs/userguide/cli/index.html +11 -0
- package/dist/docs/userguide/cli/init.html +436 -0
- package/dist/docs/userguide/cli/servers.html +393 -0
- package/dist/docs/userguide/cli/stop.html +408 -0
- package/dist/docs/userguide/cli/update.html +406 -0
- package/dist/docs/userguide/cli/version.html +406 -0
- package/dist/docs/userguide/cli.html +386 -0
- package/dist/docs/userguide/index.html +11 -0
- package/dist/docs/userguide/sharing.html +465 -0
- package/dist/index.html +387 -0
- package/dist/llms.txt +18 -0
- package/dist/provenance.json +7 -0
- package/dist/schemas/index.html +11 -0
- package/dist/schemas/plugin-registry.schema.html +327 -0
- package/dist/schemas/plugin-schemas-notes.html +364 -0
- package/dist/schemas/plugin.schema.html +327 -0
- package/dist/schemas/plugins.schema.html +327 -0
- package/dist/schemas/v0/common.schema.html +386 -0
- package/dist/schemas/v0/index.html +11 -0
- package/dist/schemas/v0/plugin-registry.schema.html +547 -0
- package/dist/schemas/v0/plugin.schema.html +497 -0
- package/dist/schemas/v0/plugins.schema.html +406 -0
- package/dist/schemas/v0/site.schema.html +541 -0
- package/dist/schemas/v0/theme.schema.html +615 -0
- package/dist/schemas.html +351 -0
- package/dist/styles.css +1262 -0
- package/package.json +4 -2
- package/plugins-dist/callouts.css +32 -0
- package/plugins-dist/callouts.js +46 -0
- package/plugins-dist/slides-visuals.css +390 -0
- package/plugins-dist/slides-visuals.js +689 -0
- package/registry/plugins.yaml +35 -0
- package/schemas/README.md +10 -0
- package/schemas/plugin-registry.schema.json +5 -0
- package/schemas/plugin-schemas-notes.md +71 -0
- package/schemas/plugin.schema.json +5 -0
- package/schemas/plugins.schema.json +5 -0
- package/schemas/v0/common.schema.json +64 -0
- package/schemas/v0/plugin-registry.schema.json +225 -0
- package/schemas/v0/plugin.schema.json +175 -0
- package/schemas/v0/plugins.schema.json +84 -0
- package/schemas/v0/site.schema.json +56 -9
- package/schemas/v0/theme.schema.json +105 -22
- package/scripts/build.ts +158 -3
- package/scripts/bundle.ts +261 -95
- package/scripts/dev.ts +301 -11
- package/src/__tests__/build.test.ts +220 -1
- package/src/__tests__/bundle.test.ts +31 -0
- package/src/__tests__/cli.test.ts +14 -3
- package/src/__tests__/dev-plugin-errors.test.ts +20 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/bad-list-indent.md +5 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/blank-line.md +5 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/compare-object-items.md +9 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/flow-branching-no-source.md +5 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/flow-converging-no-target.md +6 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/indented-fence.md +4 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/staircase-empty-steps.md +3 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/stat-grid-missing-fields.md +5 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/timeline-horizontal-no-events.md +2 -0
- package/src/__tests__/fixtures/fences/slides-visuals/invalid/unknown-type.md +3 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/compare.md +10 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/comparison-table.md +14 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-branching-no-split.md +7 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-branching.md +8 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-converging-no-merge.md +7 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/flow-converging.md +8 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/funnel.md +7 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/kpi.md +5 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/layer-cake.md +6 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/pyramid.md +6 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/quadrant-grid.md +8 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/scorecard.md +13 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/staircase-down.md +7 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/staircase.md +8 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/stat-grid.md +8 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/timeline-horizontal.md +9 -0
- package/src/__tests__/fixtures/fences/slides-visuals/valid/timeline-vertical.md +10 -0
- package/src/__tests__/init.test.ts +35 -0
- package/src/__tests__/plugin-loader.test.ts +221 -0
- package/src/__tests__/shared.test.ts +451 -0
- package/src/__tests__/slides-visuals-fence-contract.test.ts +28 -0
- package/src/__tests__/slides-visuals-runtime-regressions.bun.test.ts +147 -0
- package/src/__tests__/styles.test.ts +35 -0
- package/src/cli.ts +9 -4
- package/src/plugin-loader.ts +245 -0
- package/src/shared.ts +650 -7
- package/src/site/styles.css +331 -0
- package/src/site/template.html +66 -5
- package/src/templates/deck.ts +186 -0
- package/src/templates/driver.ts +11 -1
- package/src/templates/minimal.ts +1 -0
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Glossary - Kitfly Docs</title>
|
|
7
|
+
<link rel="icon" type="image/png" sizes="32x32" href="../../assets/brand/kitfly-favicon-32.png">
|
|
8
|
+
<link rel="icon" type="image/png" sizes="64x64" href="../../assets/brand/kitfly-neon-256.png">
|
|
9
|
+
<link rel="stylesheet" href="../../styles.css">
|
|
10
|
+
<style id="kitfly-theme">
|
|
11
|
+
:root { --color-bg: #ffffff;
|
|
12
|
+
--color-bg-sidebar: #f5f7f8;
|
|
13
|
+
--color-text: #374151;
|
|
14
|
+
--color-text-muted: #6b7280;
|
|
15
|
+
--color-border: #e5e7eb;
|
|
16
|
+
--color-link: #007182;
|
|
17
|
+
--color-link-hover: #0a6172;
|
|
18
|
+
--color-accent: #152F46;
|
|
19
|
+
--color-code-bg: #f5f7f8;
|
|
20
|
+
--color-logo: #152F46;
|
|
21
|
+
--sidebar-width: 280px;
|
|
22
|
+
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
23
|
+
--font-headings: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
24
|
+
--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; }
|
|
25
|
+
html { font-size: 16px; }
|
|
26
|
+
@media (prefers-color-scheme: dark) {
|
|
27
|
+
:root:not([data-theme="light"]) { --color-bg: #0d1117;
|
|
28
|
+
--color-bg-sidebar: #152F46;
|
|
29
|
+
--color-text: #e5e7eb;
|
|
30
|
+
--color-text-muted: #9ca3af;
|
|
31
|
+
--color-border: #374151;
|
|
32
|
+
--color-link: #709EA6;
|
|
33
|
+
--color-link-hover: #8fb5bc;
|
|
34
|
+
--color-accent: #f9fafb;
|
|
35
|
+
--color-code-bg: #152F46;
|
|
36
|
+
--color-logo: #f9fafb; }
|
|
37
|
+
}
|
|
38
|
+
[data-theme="dark"] { --color-bg: #0d1117;
|
|
39
|
+
--color-bg-sidebar: #152F46;
|
|
40
|
+
--color-text: #e5e7eb;
|
|
41
|
+
--color-text-muted: #9ca3af;
|
|
42
|
+
--color-border: #374151;
|
|
43
|
+
--color-link: #709EA6;
|
|
44
|
+
--color-link-hover: #8fb5bc;
|
|
45
|
+
--color-accent: #f9fafb;
|
|
46
|
+
--color-code-bg: #152F46;
|
|
47
|
+
--color-logo: #f9fafb; }
|
|
48
|
+
[data-theme="light"] { --color-bg: #ffffff;
|
|
49
|
+
--color-bg-sidebar: #f5f7f8;
|
|
50
|
+
--color-text: #374151;
|
|
51
|
+
--color-text-muted: #6b7280;
|
|
52
|
+
--color-border: #e5e7eb;
|
|
53
|
+
--color-link: #007182;
|
|
54
|
+
--color-link-hover: #0a6172;
|
|
55
|
+
--color-accent: #152F46;
|
|
56
|
+
--color-code-bg: #f5f7f8;
|
|
57
|
+
--color-logo: #152F46;
|
|
58
|
+
--sidebar-width: 280px;
|
|
59
|
+
--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
60
|
+
--font-headings: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
61
|
+
--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace; }
|
|
62
|
+
</style>
|
|
63
|
+
<!-- Syntax highlighting - Prism.js -->
|
|
64
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1/themes/prism.min.css" id="prism-light">
|
|
65
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/prismjs@1/themes/prism-okaidia.min.css" id="prism-dark" disabled>
|
|
66
|
+
|
|
67
|
+
<script>
|
|
68
|
+
// Apply saved theme immediately to prevent flash
|
|
69
|
+
(function() {
|
|
70
|
+
const saved = localStorage.getItem('theme');
|
|
71
|
+
if (saved) {
|
|
72
|
+
document.documentElement.setAttribute('data-theme', saved);
|
|
73
|
+
}
|
|
74
|
+
// Set Prism theme based on saved or system preference
|
|
75
|
+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
76
|
+
const isDark = saved === 'dark' || (!saved && prefersDark);
|
|
77
|
+
if (isDark) {
|
|
78
|
+
document.getElementById('prism-light')?.setAttribute('disabled', '');
|
|
79
|
+
document.getElementById('prism-dark')?.removeAttribute('disabled');
|
|
80
|
+
}
|
|
81
|
+
})();
|
|
82
|
+
</script>
|
|
83
|
+
</head>
|
|
84
|
+
<body class="mode-docs">
|
|
85
|
+
<div class="mobile-header">
|
|
86
|
+
<button class="nav-toggle" onclick="toggleNav()" aria-label="Toggle navigation">
|
|
87
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
88
|
+
<path d="M3 12h18M3 6h18M3 18h18"/>
|
|
89
|
+
</svg>
|
|
90
|
+
</button>
|
|
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" onerror="this.onerror=null;this.style.display='none';this.parentElement.classList.add('logo-fallback')"/>
|
|
93
|
+
</a>
|
|
94
|
+
<button class="mobile-theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
95
|
+
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
96
|
+
<circle cx="12" cy="12" r="5"/>
|
|
97
|
+
<path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/>
|
|
98
|
+
</svg>
|
|
99
|
+
<svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
100
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
|
|
101
|
+
</svg>
|
|
102
|
+
</button>
|
|
103
|
+
</div>
|
|
104
|
+
<div class="layout">
|
|
105
|
+
<nav class="sidebar">
|
|
106
|
+
<div class="sidebar-header">
|
|
107
|
+
<div class="logo logo-icon">
|
|
108
|
+
<a href="/" class="logo-icon" data-initial="K">
|
|
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
|
+
</a>
|
|
111
|
+
<span class="logo-text">
|
|
112
|
+
<a href="/" class="brand">Kitfly</a>
|
|
113
|
+
<a href="../../" class="product">Kitfly Docs</a>
|
|
114
|
+
</span>
|
|
115
|
+
</div>
|
|
116
|
+
<div class="header-tools">
|
|
117
|
+
<button class="theme-toggle" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
118
|
+
<svg class="icon-sun" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
119
|
+
<circle cx="12" cy="12" r="5"/>
|
|
120
|
+
<path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/>
|
|
121
|
+
</svg>
|
|
122
|
+
<svg class="icon-moon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
123
|
+
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/>
|
|
124
|
+
</svg>
|
|
125
|
+
</button>
|
|
126
|
+
<div class="sidebar-meta">
|
|
127
|
+
<span class="meta-version">v0.2.1</span>
|
|
128
|
+
<span class="meta-branch">HEAD</span>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
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>
|
|
134
|
+
</div>
|
|
135
|
+
</nav>
|
|
136
|
+
<main class="content">
|
|
137
|
+
<article class="prose">
|
|
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-12</div>
|
|
140
|
+
<h1 id="glossary">Glossary</h1>
|
|
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
|
+
<h2 id="site-root">Site root</h2>
|
|
143
|
+
<p>The folder you run Kitfly commands from. It typically contains <code>site.yaml</code> and your <code>docroot</code> folder.</p>
|
|
144
|
+
<h2 id="docroot"><code>docroot</code></h2>
|
|
145
|
+
<p>The folder Kitfly reads as your documentation source (often <code>content/</code>).</p>
|
|
146
|
+
<h2 id="section">Section</h2>
|
|
147
|
+
<p>A left-nav grouping in Kitfly. In <code>site.yaml</code>, each <code>sections:</code> entry becomes a navigation section.</p>
|
|
148
|
+
<h2 id="dist"><code>dist/</code></h2>
|
|
149
|
+
<p>The output folder created by <code>kitfly build</code> (the folder you deploy).</p>
|
|
150
|
+
<h2 id="build">Build</h2>
|
|
151
|
+
<p>The <code>kitfly build</code> output: a folder of files (<code>dist/</code>) intended for hosting on a static site provider.</p>
|
|
152
|
+
<h2 id="bundle">Bundle</h2>
|
|
153
|
+
<p>The <code>kitfly bundle</code> output: a single HTML file intended for sending (email/Slack/upload) and offline viewing.</p>
|
|
154
|
+
<h2 id="dev-server">Dev server</h2>
|
|
155
|
+
<p>The local server started by <code>kitfly dev</code> for authoring and previewing your docs with hot reload.</p>
|
|
156
|
+
<h2 id="hot-reload">Hot reload</h2>
|
|
157
|
+
<p>When the page refreshes automatically after you edit a file. Kitfly watches your docs and config while the dev server is running.</p>
|
|
158
|
+
<h2 id="frontmatter">Frontmatter</h2>
|
|
159
|
+
<p>Optional YAML metadata at the top of a Markdown file (between <code>---</code> lines). Common fields include <code>title</code> and <code>description</code>.</p>
|
|
160
|
+
<h2 id="mode">Mode</h2>
|
|
161
|
+
<p>Kitfly site layout mode.</p>
|
|
162
|
+
<ul>
|
|
163
|
+
<li><code>docs</code> (default): scrolling pages optimized for reading</li>
|
|
164
|
+
<li><code>slides</code> (v0.2.0+): fixed-aspect slides with keyboard navigation</li>
|
|
165
|
+
</ul>
|
|
166
|
+
<h2 id="aspect-ratio">Aspect ratio</h2>
|
|
167
|
+
<p>Slides-only setting that controls the shape of the slide frame (for example <code>16/9</code> or <code>4/3</code>).</p>
|
|
168
|
+
<h2 id="static-hosting">Static hosting</h2>
|
|
169
|
+
<p>Hosting that serves files (HTML/CSS/JS/images) without running your own backend server.</p>
|
|
170
|
+
<h2 id="theme">Theme</h2>
|
|
171
|
+
<p>A set of styling choices for your site (colors, typography, layout details), typically configured in <code>theme.yaml</code>.</p>
|
|
172
|
+
<h2 id="template">Template</h2>
|
|
173
|
+
<p>An optional starting point you can generate with <code>kitfly init --template ...</code>. Templates are just folders of Markdown and config you own and can edit.</p>
|
|
174
|
+
<h2 id="mermaid">Mermaid</h2>
|
|
175
|
+
<p>A diagram syntax that Kitfly can render in the browser (via CDN) for flowcharts, sequence diagrams, and more.</p>
|
|
176
|
+
<h2 id="prism">Prism</h2>
|
|
177
|
+
<p>The syntax highlighter Kitfly uses for code blocks (via CDN).</p>
|
|
178
|
+
<h2 id="cdn">CDN</h2>
|
|
179
|
+
<p>Content Delivery Network. A fast way to load shared libraries (like Mermaid/Prism) without bundling them into Kitfly.</p>
|
|
180
|
+
<h2 id="sri-integrity-hash">SRI / integrity hash</h2>
|
|
181
|
+
<p>“Subresource Integrity” hashes help browsers verify a CDN file hasn’t been tampered with. You’ll see these as <code>integrity="sha384-..."</code> in some setups.</p>
|
|
182
|
+
<h2 id="environment-variable">Environment variable</h2>
|
|
183
|
+
<p>A named value provided to commands and apps by your shell or host platform (often used for secrets).</p>
|
|
184
|
+
<h2 id="secret">Secret</h2>
|
|
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
|
+
|
|
187
|
+
</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>
|
|
189
|
+
</main>
|
|
190
|
+
</div>
|
|
191
|
+
|
|
192
|
+
<footer class="site-footer">
|
|
193
|
+
<div class="footer-content">
|
|
194
|
+
<div class="footer-left">
|
|
195
|
+
<span class="footer-version">v0.2.1</span>
|
|
196
|
+
<span class="footer-separator">·</span>
|
|
197
|
+
<span class="footer-commit" title="Commit: 30dfc01">Published 2026-02-15</span>
|
|
198
|
+
</div>
|
|
199
|
+
<div class="footer-center">
|
|
200
|
+
<span class="footer-copyright"><a href="https://3leaps.net" class="footer-link">© 2026 3 Leaps, LLC</a></span>
|
|
201
|
+
<span class="footer-separator">·</span><a href="/" class="footer-link">Kitfly</a>
|
|
202
|
+
</div>
|
|
203
|
+
<div class="footer-right">
|
|
204
|
+
<a href="https://kitfly.dev" class="footer-link">Built with Kitfly</a>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
</footer>
|
|
208
|
+
<!-- Syntax highlighting - Prism.js -->
|
|
209
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/components/prism-core.min.js"></script>
|
|
210
|
+
<script src="https://cdn.jsdelivr.net/npm/prismjs@1/plugins/autoloader/prism-autoloader.min.js"></script>
|
|
211
|
+
<!-- Mermaid diagram support -->
|
|
212
|
+
<script type="module">
|
|
213
|
+
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@11/dist/mermaid.esm.min.mjs';
|
|
214
|
+
|
|
215
|
+
function getMermaidTheme() {
|
|
216
|
+
const theme = document.documentElement.getAttribute('data-theme');
|
|
217
|
+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
218
|
+
const isDark = theme === 'dark' || (!theme && prefersDark);
|
|
219
|
+
return isDark ? 'dark' : 'neutral';
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
mermaid.initialize({
|
|
223
|
+
startOnLoad: true,
|
|
224
|
+
theme: getMermaidTheme()
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// Re-render mermaid diagrams when theme changes
|
|
228
|
+
window.reinitMermaid = async function() {
|
|
229
|
+
mermaid.initialize({ startOnLoad: false, theme: getMermaidTheme() });
|
|
230
|
+
const diagrams = document.querySelectorAll('.mermaid');
|
|
231
|
+
for (const el of diagrams) {
|
|
232
|
+
const code = el.getAttribute('data-mermaid-source');
|
|
233
|
+
if (code) {
|
|
234
|
+
el.innerHTML = code;
|
|
235
|
+
el.removeAttribute('data-processed');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
await mermaid.run({ nodes: diagrams });
|
|
239
|
+
};
|
|
240
|
+
</script>
|
|
241
|
+
|
|
242
|
+
<script>
|
|
243
|
+
function toggleTheme() {
|
|
244
|
+
const html = document.documentElement;
|
|
245
|
+
const current = html.getAttribute('data-theme');
|
|
246
|
+
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
|
|
247
|
+
|
|
248
|
+
let next;
|
|
249
|
+
if (current === 'dark') {
|
|
250
|
+
next = 'light';
|
|
251
|
+
} else if (current === 'light') {
|
|
252
|
+
next = 'dark';
|
|
253
|
+
} else {
|
|
254
|
+
// No explicit theme set, toggle from system preference
|
|
255
|
+
next = prefersDark ? 'light' : 'dark';
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
html.setAttribute('data-theme', next);
|
|
259
|
+
localStorage.setItem('theme', next);
|
|
260
|
+
|
|
261
|
+
// Switch Prism theme
|
|
262
|
+
const prismLight = document.getElementById('prism-light');
|
|
263
|
+
const prismDark = document.getElementById('prism-dark');
|
|
264
|
+
if (next === 'dark') {
|
|
265
|
+
prismLight?.setAttribute('disabled', '');
|
|
266
|
+
prismDark?.removeAttribute('disabled');
|
|
267
|
+
} else {
|
|
268
|
+
prismLight?.removeAttribute('disabled');
|
|
269
|
+
prismDark?.setAttribute('disabled', '');
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
// Re-render mermaid diagrams with new theme
|
|
273
|
+
if (window.reinitMermaid) {
|
|
274
|
+
window.reinitMermaid();
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// Slides mode hash routing
|
|
279
|
+
(function initSlidesMode() {
|
|
280
|
+
const shell = document.querySelector('.slides-shell');
|
|
281
|
+
if (!shell) return;
|
|
282
|
+
|
|
283
|
+
const slides = Array.from(document.querySelectorAll('.slide'));
|
|
284
|
+
if (!slides.length) return;
|
|
285
|
+
|
|
286
|
+
const prevBtn = document.querySelector('.slide-prev');
|
|
287
|
+
const nextBtn = document.querySelector('.slide-next');
|
|
288
|
+
const counter = document.querySelector('.slide-counter');
|
|
289
|
+
const progressBar = document.querySelector('.slide-progress-bar');
|
|
290
|
+
const navLinks = Array.from(document.querySelectorAll('.sidebar-nav a[href^="#slide-"]'));
|
|
291
|
+
let current = 0;
|
|
292
|
+
|
|
293
|
+
function setActive(n) {
|
|
294
|
+
current = Math.max(0, Math.min(n, slides.length - 1));
|
|
295
|
+
slides.forEach((slide, idx) => slide.classList.toggle('active', idx === current));
|
|
296
|
+
navLinks.forEach((link) => {
|
|
297
|
+
const active = link.getAttribute('href') === '#' + slides[current].id;
|
|
298
|
+
link.classList.toggle('active', active);
|
|
299
|
+
});
|
|
300
|
+
if (counter) counter.textContent = (current + 1) + ' / ' + slides.length;
|
|
301
|
+
if (progressBar) progressBar.style.width = (((current + 1) / slides.length) * 100) + '%';
|
|
302
|
+
if (prevBtn) prevBtn.disabled = current === 0;
|
|
303
|
+
if (nextBtn) nextBtn.disabled = current === slides.length - 1;
|
|
304
|
+
history.replaceState(null, '', '#' + slides[current].id);
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function setFromHash() {
|
|
308
|
+
const hash = window.location.hash || '';
|
|
309
|
+
const idx = slides.findIndex((s) => '#' + s.id === hash);
|
|
310
|
+
if (idx >= 0) setActive(idx);
|
|
311
|
+
else setActive(0);
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
prevBtn?.addEventListener('click', () => setActive(current - 1));
|
|
315
|
+
nextBtn?.addEventListener('click', () => setActive(current + 1));
|
|
316
|
+
|
|
317
|
+
document.addEventListener('keydown', (e) => {
|
|
318
|
+
if (e.key === 'ArrowRight' || e.key === ' ') {
|
|
319
|
+
e.preventDefault();
|
|
320
|
+
setActive(current + 1);
|
|
321
|
+
} else if (e.key === 'ArrowLeft') {
|
|
322
|
+
e.preventDefault();
|
|
323
|
+
setActive(current - 1);
|
|
324
|
+
} else if (e.key === 'Home') {
|
|
325
|
+
e.preventDefault();
|
|
326
|
+
setActive(0);
|
|
327
|
+
} else if (e.key === 'End') {
|
|
328
|
+
e.preventDefault();
|
|
329
|
+
setActive(slides.length - 1);
|
|
330
|
+
}
|
|
331
|
+
});
|
|
332
|
+
|
|
333
|
+
window.addEventListener('hashchange', setFromHash);
|
|
334
|
+
setFromHash();
|
|
335
|
+
})();
|
|
336
|
+
|
|
337
|
+
// Copy code button
|
|
338
|
+
document.querySelectorAll('.prose pre code').forEach(block => {
|
|
339
|
+
const button = document.createElement('button');
|
|
340
|
+
button.className = 'copy-button';
|
|
341
|
+
button.textContent = 'Copy';
|
|
342
|
+
button.onclick = async () => {
|
|
343
|
+
await navigator.clipboard.writeText(block.textContent);
|
|
344
|
+
button.textContent = 'Copied!';
|
|
345
|
+
setTimeout(() => button.textContent = 'Copy', 2000);
|
|
346
|
+
};
|
|
347
|
+
block.parentElement.appendChild(button);
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
// Mobile nav toggle
|
|
351
|
+
function toggleNav() {
|
|
352
|
+
document.querySelector('.sidebar').classList.toggle('open');
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// Close nav when clicking outside on mobile
|
|
356
|
+
document.addEventListener('click', (e) => {
|
|
357
|
+
const sidebar = document.querySelector('.sidebar');
|
|
358
|
+
const toggle = document.querySelector('.nav-toggle');
|
|
359
|
+
if (sidebar.classList.contains('open') &&
|
|
360
|
+
!sidebar.contains(e.target) &&
|
|
361
|
+
!toggle.contains(e.target)) {
|
|
362
|
+
sidebar.classList.remove('open');
|
|
363
|
+
}
|
|
364
|
+
});
|
|
365
|
+
</script>
|
|
366
|
+
|
|
367
|
+
</body>
|
|
368
|
+
</html>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta http-equiv="refresh" content="0; url=./structure.html">
|
|
6
|
+
<title>Redirecting...</title>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<p>Redirecting to <a href="./structure.html">structure</a>...</p>
|
|
10
|
+
</body>
|
|
11
|
+
</html>
|