jekyll-theme-zer0 0.22.5 → 0.22.19

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.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +187 -0
  3. data/README.md +66 -19
  4. data/_data/navigation/admin.yml +53 -0
  5. data/_data/theme_backgrounds.yml +121 -0
  6. data/_includes/components/admin-tabs.html +59 -0
  7. data/_includes/components/analytics-dashboard.html +232 -0
  8. data/_includes/components/background-customizer.html +159 -0
  9. data/_includes/components/background-settings.html +137 -0
  10. data/_includes/components/collection-manager.html +151 -0
  11. data/_includes/components/component-showcase.html +452 -0
  12. data/_includes/components/config-editor.html +207 -0
  13. data/_includes/components/config-viewer.html +479 -0
  14. data/_includes/components/env-dashboard.html +154 -0
  15. data/_includes/components/feature-card.html +94 -0
  16. data/_includes/components/info-section.html +172 -149
  17. data/_includes/components/js-cdn.html +4 -1
  18. data/_includes/components/nav-editor.html +99 -0
  19. data/_includes/components/setup-banner.html +28 -0
  20. data/_includes/components/setup-check.html +53 -0
  21. data/_includes/components/svg-background.html +42 -0
  22. data/_includes/components/theme-customizer.html +46 -0
  23. data/_includes/content/seo.html +68 -135
  24. data/_includes/core/footer.html +1 -1
  25. data/_includes/core/head.html +3 -2
  26. data/_includes/core/header.html +14 -7
  27. data/_includes/landing/landing-install-cards.html +18 -7
  28. data/_includes/navigation/admin-nav.html +95 -0
  29. data/_includes/navigation/navbar.html +43 -5
  30. data/_includes/navigation/sidebar-left.html +1 -1
  31. data/_includes/setup/wizard.html +330 -0
  32. data/_layouts/admin.html +166 -0
  33. data/_layouts/landing.html +1 -1
  34. data/_layouts/root.html +12 -6
  35. data/_layouts/setup.html +73 -0
  36. data/_plugins/preview_image_generator.rb +26 -12
  37. data/_sass/core/_navbar.scss +2 -2
  38. data/_sass/custom.scss +6 -6
  39. data/_sass/theme/_background-mixins.scss +95 -0
  40. data/_sass/theme/_backgrounds.scss +156 -0
  41. data/_sass/theme/_color-modes.scss +2 -1
  42. data/assets/backgrounds/gradients/air.svg +15 -0
  43. data/assets/backgrounds/gradients/aqua.svg +15 -0
  44. data/assets/backgrounds/gradients/contrast.svg +15 -0
  45. data/assets/backgrounds/gradients/dark.svg +15 -0
  46. data/assets/backgrounds/gradients/dirt.svg +15 -0
  47. data/assets/backgrounds/gradients/mint.svg +15 -0
  48. data/assets/backgrounds/gradients/neon.svg +15 -0
  49. data/assets/backgrounds/gradients/plum.svg +15 -0
  50. data/assets/backgrounds/gradients/sunrise.svg +15 -0
  51. data/assets/backgrounds/noise/air.svg +8 -0
  52. data/assets/backgrounds/noise/aqua.svg +8 -0
  53. data/assets/backgrounds/noise/contrast.svg +8 -0
  54. data/assets/backgrounds/noise/dark.svg +8 -0
  55. data/assets/backgrounds/noise/dirt.svg +8 -0
  56. data/assets/backgrounds/noise/mint.svg +8 -0
  57. data/assets/backgrounds/noise/neon.svg +8 -0
  58. data/assets/backgrounds/noise/plum.svg +8 -0
  59. data/assets/backgrounds/noise/sunrise.svg +8 -0
  60. data/assets/backgrounds/patterns/air.svg +7 -0
  61. data/assets/backgrounds/patterns/aqua.svg +7 -0
  62. data/assets/backgrounds/patterns/contrast.svg +4 -0
  63. data/assets/backgrounds/patterns/dark.svg +5 -0
  64. data/assets/backgrounds/patterns/dirt.svg +5 -0
  65. data/assets/backgrounds/patterns/mint.svg +6 -0
  66. data/assets/backgrounds/patterns/neon.svg +6 -0
  67. data/assets/backgrounds/patterns/plum.svg +6 -0
  68. data/assets/backgrounds/patterns/sunrise.svg +5 -0
  69. data/assets/js/background-customizer.js +73 -0
  70. data/assets/js/code-copy.js +18 -47
  71. data/assets/js/config-utility.js +307 -0
  72. data/assets/js/nav-editor.js +39 -0
  73. data/assets/js/palette-generator.js +415 -0
  74. data/assets/js/search-modal.js +31 -11
  75. data/assets/js/setup-wizard.js +306 -0
  76. data/assets/js/skin-editor.js +645 -0
  77. data/assets/js/theme-customizer.js +102 -0
  78. data/assets/js/ui-enhancements.js +2 -24
  79. data/assets/vendor/bootstrap/css/bootstrap.min.css +1 -0
  80. data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js +1 -0
  81. data/scripts/README.md +45 -0
  82. data/scripts/features/generate-preview-images +297 -7
  83. data/scripts/features/install-preview-generator +51 -33
  84. data/scripts/fork-cleanup.sh +92 -19
  85. data/scripts/github-setup.sh +284 -0
  86. data/scripts/init_setup.sh +0 -1
  87. data/scripts/lib/frontmatter.sh +543 -0
  88. data/scripts/lib/migrate.sh +265 -0
  89. data/scripts/lib/preview_generator.py +607 -32
  90. data/scripts/lint-pages +505 -0
  91. data/scripts/migrate.sh +201 -0
  92. data/scripts/platform/setup-linux.sh +244 -0
  93. data/scripts/platform/setup-macos.sh +187 -0
  94. data/scripts/platform/setup-wsl.sh +196 -0
  95. metadata +71 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eac91220efeb718a11a68d175f397e3bdf908d3864d7d25aaf0bc7ed12ab9221
4
- data.tar.gz: d14789dfa2b994ddf8e710293df339868efa0f76717eafeef872eb8ed38b2724
3
+ metadata.gz: ba91ba02a96ff1b026fe82adedbebd79b476a48bc3534ff7b1799ebbf9e593d7
4
+ data.tar.gz: 4d1470d33ae3e6d41def0fbd22e05c07bf9597efa9f5c5e655f3dd61088896a4
5
5
  SHA512:
6
- metadata.gz: dac3337f672daa444e6994c53ef642ae0d6d9d90084743b2f8164ecfbb357c741caf4de88546af9747b22b6b2d37ba0fba26809f6ec2585010adbf260c16c5e0
7
- data.tar.gz: 32e504a5639fc44a4e400e97f1c02d723f4c7ca40881b5e1b0aeec8da19feae343c11acdcc751d51d41fe2b3462fab13e9b0a0ac23f95f016a3cc47013a522e2
6
+ metadata.gz: f643278addd297e92c075dc79f9802daf61bc9ca2bb4c5cde4dec6842da25895e0c9ea75f597cdc718fbc5dcc4b078f752f3e32ae310b3ca884d9fd82fc1c1d9
7
+ data.tar.gz: e2318d7d03c184b9a053d59c2130b818486d1cb20ce6938ec38e88e0b2459bee62108abfa223941857e4707f32313b5fefa5bef01682c4800f3a9c25f112159f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,192 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.22.19] - 2026-04-18
4
+
5
+ ### Changed
6
+ - Version bump: patch release
7
+
8
+ ### Commits in this release
9
+ - 1b3993e docs(fork): add fork-to-deploy workflow and user site guidance (#56)
10
+
11
+
12
+ ## [Unreleased]
13
+
14
+ ### Added
15
+ - **Docs**: `docs/FORKING.md` — progressive fork → configure → personalize workflow for the `username.github.io` user-site pattern
16
+ - **Tests**: `test/test_fork_cleanup.sh` — 32-assertion suite covering CLI parsing, dry-run, real cleanup, YAML anchor preservation, and idempotency
17
+
18
+ ### Changed
19
+ - **Landing page**: `_includes/landing/landing-install-cards.html` — “Fork & Deploy” card now guides users to fork into `<username>.github.io` and run `scripts/fork-cleanup.sh`; safer `github_fork` URL handling
20
+ - **README**: `README.md` — Method 3 (Fork & Customize) reframed as “Fork & Deploy as Your Site” with a 4-step path; deployment section updated for user-site flow
21
+ - **Docs**: `pages/_quickstart/github-setup.md`, `pages/_quickstart/index.md`, `pages/_docs/getting-started/quick-start.md`, `pages/_docs/deployment/github-pages.md`, `docs/configuration/url-configuration-guide.md` — aligned with the user-site fork pattern (`baseurl: ""`)
22
+ - **Templates**: `templates/cleanup/reset-fields.yml` — annotated `baseurl` reasoning; clarified user-site vs. project-site behavior
23
+ - **Templates**: `templates/config/install.conf` — minor consistency tweaks
24
+
25
+ ### Fixed
26
+ - **Fork cleanup**: `scripts/fork-cleanup.sh` — `get_reset_field_value()` now uses `YAML.safe_load_file(..., aliases: true)` so anchors in `reset-fields.yml` no longer break parsing under newer Ruby
27
+ - **Fork cleanup**: `scripts/fork-cleanup.sh` — repository name derivation now strips `.git` suffix and falls back gracefully when `origin` is missing (no `set -euo pipefail` aborts)
28
+ - **Fork cleanup**: `scripts/fork-cleanup.sh` — `posthog`/`giscus` blocks reset only within their own YAML range (no stray matches in unrelated blocks)
29
+ - **Welcome post**: `templates/pages/welcome-post.md.template` and embedded fallback in `scripts/fork-cleanup.sh` — corrected `layout: journals` → `layout: article` so the generated welcome post builds without “Layout does not exist” warnings on a freshly cleaned fork
30
+
31
+ ## [0.22.18] - 2026-04-18
32
+
33
+ ### Changed
34
+ - Version bump: patch release
35
+
36
+ ### Commits in this release
37
+ - 02d0295 feat(setup): add site configuration detection and smart 404 page (#58)
38
+
39
+
40
+ ## [0.22.17] - 2026-04-18
41
+
42
+ ### Changed
43
+ - Version bump: patch release
44
+
45
+ ### Commits in this release
46
+ - 10ba722 Add config-driven frontmatter validation system with review fixes (#34)
47
+
48
+
49
+ ## [0.22.16] - 2026-04-18
50
+
51
+ ### Changed
52
+ - Version bump: patch release
53
+
54
+ ### Commits in this release
55
+ - bc41b0d Add AGENTS.md and refresh stale agent instructions (#70)
56
+
57
+
58
+ ## [0.22.15] - 2026-04-18
59
+
60
+ ### Changed
61
+ - Version bump: patch release
62
+
63
+ ### Commits in this release
64
+ - 939af77 feat(nav): dynamic collection-based navigation fallback for zero-config sites (#64)
65
+ - ca7da2e docs: align project documentation with v0.22.13 (#66)
66
+ - 9b23b63 chore(deps-dev): bump dompurify from 3.3.3 to 3.4.0 (#68)
67
+
68
+
69
+ ## [0.22.14] - 2026-04-18
70
+
71
+ ### Changed
72
+ - Version bump: patch release
73
+
74
+ ### Commits in this release
75
+ - f0a1cac fix: correct comments for clarity in SEO-related files
76
+ - d1998ff chore(deps): update Ruby gem dependencies (#67)
77
+
78
+
79
+ ## [0.22.13] - 2026-04-10
80
+
81
+ ### Changed
82
+ - Version bump: patch release
83
+
84
+ ### Commits in this release
85
+ - 3c00a3d refactor: remove duplicate code — use standard libraries and existing plugins (#59)
86
+
87
+
88
+ ## [0.22.12] - 2026-04-10
89
+
90
+ ### Changed
91
+ - Version bump: patch release
92
+
93
+ ### Commits in this release
94
+ - 7ba0f83 feat(news): add data-driven feature showcase & live Bootstrap components to news index (#54)
95
+
96
+
97
+ ## [0.22.11] - 2026-04-09
98
+
99
+ ### Changed
100
+ - Version bump: patch release
101
+
102
+ ### Commits in this release
103
+ - 8e83a51 Create SECURITY.md for security policy and reporting
104
+
105
+
106
+ ## [0.22.10] - 2026-04-06
107
+
108
+ ### Changed
109
+ - Version bump: patch release
110
+
111
+ ### Commits in this release
112
+ - 27550da feat(admin): add admin layout and configuration dashboards (#57)
113
+
114
+
115
+ ## [0.22.9] - 2026-04-05
116
+
117
+ ### Added
118
+ - **Skin Editor**: New colorffy-inspired skin editor (`assets/js/skin-editor.js`) for creating and customizing theme skins from the browser
119
+ - Edit all 9 built-in skin gradient colors with live color pickers
120
+ - Auto-generated palettes: primary tints, surface, tonal surface, semantic colors (success/warning/danger/info)
121
+ - WCAG contrast ratio badges on all palette swatches
122
+ - Random skin generation, save/load custom skins to localStorage
123
+ - Export SVGs and copy CSS custom properties to clipboard
124
+ - Advanced SVG filter controls (turbulence, octaves, seed, scale, overlay opacity)
125
+ - **Palette Generator**: New standalone palette generator (`assets/js/palette-generator.js`) with chroma.js-powered color mixing and live CSS variable editor
126
+ - **Playwright Tests**: 12 new visual regression test specs (skins, backgrounds, accessibility, admin layout, config editor/viewer, env dashboard, security, theme colors)
127
+
128
+ ### Fixed
129
+ - **Skin Rendering**: Added `.zer0-bg-hero` class to landing layout to prevent Bootstrap `.bg-primary` from overriding skin background gradients
130
+ - **CSS Scoping**: Added `.bg-primary:not(.zer0-bg-hero)` in custom SCSS to isolate skin backgrounds from Bootstrap utility classes
131
+
132
+ ### Changed
133
+ - **Theme Customizer**: Expanded to 6 tabs — added Skin Editor between Skins and Palette Generator
134
+ - **Admin Navigation**: Minor layout adjustment
135
+ - **Environment Dashboard**: Minor component update
136
+
137
+ ## [0.22.8] - 2026-04-04
138
+
139
+ ### Changed
140
+ - Version bump: patch release
141
+
142
+ ### Commits in this release
143
+ - e0b4f13 fix: cross-platform installation compatibility — Gemfile platform sections, fork mode tests, portable sed replacements (#55)
144
+
145
+
146
+ ## [0.22.7] - 2026-04-03
147
+
148
+ ### Changed
149
+ - Version bump: patch release
150
+
151
+ ### Commits in this release
152
+ - a70ae8a chore: consolidate configuration, dependencies, and installation (PRs #48, #51, #52, #53) (#51)
153
+
154
+
155
+ ## [Unreleased] — Universal Installer
156
+
157
+ ### Added
158
+ - **Installer**: New `--remote` install mode — forks repo and creates an orphan `gh-pages` branch with only the bare minimum files needed to render via `remote_theme` (no local theme source)
159
+ - **Installer**: New `--github` install mode — interactive fork via `gh` CLI with automatic platform detection and setup
160
+ - **Installer**: New `--codespaces` flag — adds `.devcontainer/devcontainer.json` for GitHub Codespaces support (auto-included in remote mode, opt-in for full/minimal)
161
+ - **Installer**: Cross-platform setup scripts: `scripts/platform/setup-macos.sh`, `setup-linux.sh`, `setup-wsl.sh`
162
+ - **Installer**: GitHub CLI fork/clone helper: `scripts/github-setup.sh`
163
+ - **Installer**: Platform auto-detection (`detect_platform()`) for macOS, Linux, and WSL
164
+ - **Templates**: `_config.remote.yml.template` — minimal config for remote-theme consumer sites
165
+ - **Templates**: `_config.starter.yml.template` — heavily annotated full starter config
166
+ - **Templates**: `Gemfile.remote.template` — minimal Gemfile (github-pages + jekyll-remote-theme)
167
+ - **Templates**: `devcontainer.json.template` — lightweight devcontainer for consumer sites
168
+ - **Templates**: `theming.md.template` — Bootstrap 5 customization guide (dark mode, typography, layouts)
169
+ - **Templates**: `setup.html.template` — dev-only setup wizard page
170
+ - **Wizard**: Interactive browser-based config wizard (`pages/setup.html`, `_includes/setup/wizard.html`, `assets/js/setup-wizard.js`) for generating `_config.yml` via a 5-step Bootstrap form
171
+ - **CI**: `.github/workflows/setup-template.yml` — auto-detects non-upstream repos and creates PR with prefilled config
172
+
173
+ ### Changed
174
+ - **Installer**: `install.sh` — added `--remote`, `--github`, `--codespaces` flags and corresponding mode dispatchers
175
+ - **Installer**: `render_template()` now substitutes `REPOSITORY_NAME`, `RAW_GITHUB_URL`, `FORK_GITHUB_USER` variables
176
+ - **Installer**: `install.conf` — added `remote` and `github` to `VALID_INSTALL_MODES`, platform detection vars, wizard config, expanded `TEMPLATE_VARS`
177
+ - **Templates**: `quickstart.md.template` — enhanced with Bootstrap pill tabs for macOS/Linux/WSL/GitHub Fork platform-specific instructions
178
+ - **Templates**: `configuration.md.template` — comprehensive rewrite with URL tables, all config sections, cookie consent, dev config
179
+ - **Templates**: `welcome-post.md.template` — enhanced Day 1 tutorial with folder structure diagram, commands table, feature checklist
180
+
181
+ ## [0.22.6] - 2026-04-03
182
+
183
+ ### Changed
184
+ - Version bump: patch release
185
+
186
+ ### Commits in this release
187
+ - 0117620 chore(ci): streamline CI workflows with path-based change detection - Bump version to 0.22.5
188
+
189
+
3
190
  ## [0.22.5] - 2026-04-03
4
191
 
5
192
  ### Changed
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
  title: zer0-mistakes
3
3
  sub-title: Jekyll Theme
4
4
  description: GitHub Pages compatible Jekyll theme with Bootstrap 5.3, featuring automated installation and comprehensive documentation.
5
- version: 0.22.4
5
+ version: 0.22.19
6
6
  layout: landing
7
7
  tags:
8
8
  - jekyll
@@ -14,7 +14,7 @@ categories:
14
14
  - docker
15
15
  - bootstrap
16
16
  created: 2024-02-10T23:51:11.480Z
17
- lastmod: 2026-04-03T04:14:02.000Z
17
+ lastmod: 2026-04-18T21:22:34.000Z
18
18
  draft: false
19
19
  permalink: /
20
20
  slug: zer0
@@ -402,14 +402,26 @@ plugins:
402
402
  - jekyll-remote-theme
403
403
  ```
404
404
 
405
- ### Method 3: Fork & Customize
405
+ ### Method 3: Fork & Deploy as Your Site
406
+
407
+ Fork into `<your-username>.github.io` for a working site in minutes:
408
+
409
+ 1. Go to [bamr87/zer0-mistakes](https://github.com/bamr87/zer0-mistakes) → **Fork**
410
+ 2. Set repository name to **`<your-username>.github.io`**
411
+ 3. Enable **Settings → Pages → Deploy from branch: `main`**
412
+ 4. Visit `https://<your-username>.github.io`
413
+
414
+ Then personalize locally:
406
415
 
407
416
  ```bash
408
- gh repo fork bamr87/zer0-mistakes --clone
409
- cd zer0-mistakes
417
+ git clone https://github.com/<your-username>/<your-username>.github.io.git
418
+ cd <your-username>.github.io
419
+ ./scripts/fork-cleanup.sh # interactive config wizard
410
420
  docker-compose up
411
421
  ```
412
422
 
423
+ See [docs/FORKING.md](docs/FORKING.md) for the full progressive workflow.
424
+
413
425
  ### Method 4: Ruby Gem
414
426
 
415
427
  ```ruby
@@ -460,13 +472,47 @@ graph TD
460
472
  | `_includes/` | Reusable components | `core/`, `components/`, `analytics/`, `navigation/` |
461
473
  | `_sass/` | Stylesheets | `custom.scss`, `notebooks.scss`, `core/` (`_variables`, `_docs-layout`, …), `theme/` (`_css-variables`, `_wizard-mode`) |
462
474
  | `assets/` | Static files | `css/`, `js/`, `images/`, **`vendor/`** (Bootstrap, jQuery, MathJax, Mermaid, … — committed for GitHub Pages) |
463
- | `scripts/` | Automation | `release`, `build`, `vendor-install.sh`, `convert-notebooks.sh` |
475
+ | `scripts/` | Automation | `release`, `build`, `migrate.sh`, `vendor-install.sh`, `convert-notebooks.sh` |
476
+ | `templates/` | Installable templates | `pages/admin/` (6 admin page templates), `config/install.conf` |
464
477
  | `docs/` | Technical docs | `SIDEBAR_IMPROVEMENTS.md`, `JUPYTER_NOTEBOOKS.md` |
465
478
  | `pages/` | Content pages | `privacy-policy.md`, `terms-of-service.md` |
466
479
 
467
480
  ---
468
481
 
469
- ## 🔄 Development Workflow
482
+ ## �️ Migration Utility
483
+
484
+ Add the admin settings UI to an existing consumer site using the migration script:
485
+
486
+ ```bash
487
+ # From the zer0-mistakes repo — install into another site
488
+ ./scripts/migrate.sh /path/to/your-site
489
+
490
+ # Preview without making changes
491
+ ./scripts/migrate.sh --dry-run /path/to/your-site
492
+
493
+ # Overwrite existing admin pages
494
+ ./scripts/migrate.sh --force /path/to/your-site
495
+
496
+ # Verify an existing installation
497
+ ./scripts/migrate.sh --verify /path/to/your-site
498
+ ```
499
+
500
+ This installs 6 admin pages to `pages/_about/settings/`:
501
+
502
+ | Page | URL | Description |
503
+ |------|-----|-------------|
504
+ | Theme Customizer | `/about/settings/theme/` | Skins, palette generator, skin editor, live preview, color editing, YAML export |
505
+ | Configuration | `/about/config/` | View/edit `_config.yml`, quick actions, environment info |
506
+ | Navigation Editor | `/about/settings/navigation/` | Edit header/footer/sidebar menus, export YAML |
507
+ | Collection Manager | `/about/settings/collections/` | Browse and manage Jekyll collections |
508
+ | Analytics | `/about/settings/analytics/` | Site analytics and performance metrics |
509
+ | Environment | `/about/settings/environment/` | Jekyll build info and environment details |
510
+
511
+ > **Note:** Admin pages require theme version ≥ 0.22.10 for the `admin` layout and component includes.
512
+
513
+ ---
514
+
515
+ ## �🔄 Development Workflow
470
516
 
471
517
  ```mermaid
472
518
  gitGraph
@@ -528,26 +574,27 @@ npm run vendor:install # manifest downloads (+ Mermaid copy when node_modules
528
574
 
529
575
  ## 🚀 Deployment
530
576
 
531
- ### GitHub Pages (Automatic)
577
+ ### GitHub Pages (User Site — Recommended)
578
+
579
+ Fork the repo as `<your-username>.github.io` and enable GitHub Pages:
580
+
581
+ 1. Push to `main` branch
582
+ 2. GitHub Pages builds automatically
583
+ 3. Site deploys to `https://<your-username>.github.io`
584
+
585
+ No workflows or `baseurl` configuration needed. See [docs/FORKING.md](docs/FORKING.md) for details.
532
586
 
533
587
  ```mermaid
534
588
  sequenceDiagram
535
589
  participant Dev as Developer
536
590
  participant GH as GitHub
537
- participant Actions as GitHub Actions
538
591
  participant Pages as GitHub Pages
539
592
 
540
593
  Dev->>GH: git push main
541
- GH->>Actions: Trigger workflow
542
- Actions->>Actions: jekyll build
543
- Actions->>Pages: Deploy _site/
544
- Pages-->>Dev: 🌐 Site live!
594
+ GH->>Pages: Auto-build Jekyll
595
+ Pages-->>Dev: 🌐 Site live at username.github.io
545
596
  ```
546
597
 
547
- 1. Push to `main` branch
548
- 2. GitHub Actions builds automatically
549
- 3. Site deploys to GitHub Pages
550
-
551
598
  ### Docker Production
552
599
 
553
600
  ```bash
@@ -742,7 +789,7 @@ git push origin feature/awesome-feature
742
789
 
743
790
  | Metric | Value |
744
791
  |--------|-------|
745
- | **Current Version** | 0.22.4 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
792
+ | **Current Version** | 0.22.19 ([RubyGems](https://rubygems.org/gems/jekyll-theme-zer0), [CHANGELOG](/CHANGELOG)) |
746
793
  | **Documented Features** | 43 ([Feature Registry](https://github.com/bamr87/zer0-mistakes/blob/main/_data/features.yml)) |
747
794
  | **Setup Time** | 2-5 minutes ([install.sh benchmarks](https://github.com/bamr87/zer0-mistakes/blob/main/install.sh)) |
748
795
  | **Documentation Pages** | 70+ ([browse docs](/pages/)) |
@@ -785,6 +832,6 @@ Built with these amazing technologies:
785
832
 
786
833
  **Built with ❤️ for the Jekyll community**
787
834
 
788
- **v0.22.4** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md)
835
+ **v0.22.19** • [Changelog](CHANGELOG.md) • [License](LICENSE) • [Contributing](CONTRIBUTING.md)
789
836
 
790
837
 
@@ -0,0 +1,53 @@
1
+ # Admin Navigation Configuration
2
+ # Used by: _includes/navigation/admin-nav.html
3
+ # Purpose: Data-driven sidebar navigation for admin/settings pages
4
+ # Schema: title, url, icon, description, badge (optional), external (optional)
5
+
6
+ # ── Admin Pages ──────────────────────────────────────────────────
7
+
8
+ - title: Configuration
9
+ url: /about/config/
10
+ icon: bi-gear
11
+ description: View and export site configuration
12
+
13
+ - title: Statistics
14
+ url: /about/stats/
15
+ icon: bi-bar-chart-line
16
+ description: Content analytics and metrics
17
+
18
+ - title: Theme Customizer
19
+ url: /about/settings/theme/
20
+ icon: bi-palette
21
+ description: Skin, colors, and typography
22
+
23
+ - title: Navigation Editor
24
+ url: /about/settings/navigation/
25
+ icon: bi-signpost-2
26
+ description: Menu structure and links
27
+
28
+ - title: Collection Manager
29
+ url: /about/settings/collections/
30
+ icon: bi-collection
31
+ description: Jekyll collections overview
32
+
33
+ - title: Analytics Dashboard
34
+ url: /about/settings/analytics/
35
+ icon: bi-graph-up
36
+ description: PostHog and tracking settings
37
+
38
+ - title: Environment & Build
39
+ url: /about/settings/environment/
40
+ icon: bi-hdd-network
41
+ description: Jekyll, Ruby, and build info
42
+
43
+ # ── External Links ───────────────────────────────────────────────
44
+
45
+ - title: Repository
46
+ url: https://github.com/{github_user}/{repository_name}
47
+ icon: bi-github
48
+ external: true
49
+
50
+ - title: Jekyll Docs
51
+ url: https://jekyllrb.com/docs/configuration/
52
+ icon: bi-book
53
+ external: true
@@ -0,0 +1,121 @@
1
+ # Theme Background Presets
2
+ # Maps each skin to gradient, pattern, and noise texture assets.
3
+ # Generated using fffuel.co tools: ffflux (gradients), rrrepeat (patterns), nnnoise (noise).
4
+ # See: https://www.fffuel.co
5
+ #
6
+ # Zones define where backgrounds are applied:
7
+ # hero — header/hero banner area
8
+ # body — page body subtle texture overlay
9
+ # surface — cards, sidebars, panels
10
+ # footer — footer area
11
+
12
+ defaults:
13
+ texture_opacity: 0.04
14
+ blend_mode: overlay
15
+ gradient_opacity: 0.6
16
+ pattern_opacity: 0.08
17
+
18
+ zones:
19
+ hero:
20
+ layer: gradient
21
+ fallback_color: var(--bs-body-bg)
22
+ body:
23
+ layer: noise
24
+ fallback_color: var(--bs-body-bg)
25
+ surface:
26
+ layer: pattern
27
+ fallback_color: var(--bs-tertiary-bg)
28
+ footer:
29
+ layer: noise
30
+ fallback_color: var(--bs-body-bg)
31
+
32
+ skins:
33
+ air:
34
+ label: "Air"
35
+ colors:
36
+ primary: "#e8f4f8"
37
+ secondary: "#b8d4e3"
38
+ accent: "#6fa8dc"
39
+ gradient: "assets/backgrounds/gradients/air.svg"
40
+ pattern: "assets/backgrounds/patterns/air.svg"
41
+ noise: "assets/backgrounds/noise/air.svg"
42
+
43
+ aqua:
44
+ label: "Aqua"
45
+ colors:
46
+ primary: "#0077b6"
47
+ secondary: "#00b4d8"
48
+ accent: "#90e0ef"
49
+ gradient: "assets/backgrounds/gradients/aqua.svg"
50
+ pattern: "assets/backgrounds/patterns/aqua.svg"
51
+ noise: "assets/backgrounds/noise/aqua.svg"
52
+
53
+ contrast:
54
+ label: "Contrast"
55
+ colors:
56
+ primary: "#000000"
57
+ secondary: "#ffffff"
58
+ accent: "#ffcc00"
59
+ gradient: "assets/backgrounds/gradients/contrast.svg"
60
+ pattern: "assets/backgrounds/patterns/contrast.svg"
61
+ noise: "assets/backgrounds/noise/contrast.svg"
62
+
63
+ dark:
64
+ label: "Dark"
65
+ colors:
66
+ primary: "#1a1a2e"
67
+ secondary: "#16213e"
68
+ accent: "#0f3460"
69
+ gradient: "assets/backgrounds/gradients/dark.svg"
70
+ pattern: "assets/backgrounds/patterns/dark.svg"
71
+ noise: "assets/backgrounds/noise/dark.svg"
72
+
73
+ dirt:
74
+ label: "Dirt"
75
+ colors:
76
+ primary: "#5c4033"
77
+ secondary: "#8b6914"
78
+ accent: "#d4a574"
79
+ gradient: "assets/backgrounds/gradients/dirt.svg"
80
+ pattern: "assets/backgrounds/patterns/dirt.svg"
81
+ noise: "assets/backgrounds/noise/dirt.svg"
82
+
83
+ neon:
84
+ label: "Neon"
85
+ colors:
86
+ primary: "#ff006e"
87
+ secondary: "#8338ec"
88
+ accent: "#3a86ff"
89
+ gradient: "assets/backgrounds/gradients/neon.svg"
90
+ pattern: "assets/backgrounds/patterns/neon.svg"
91
+ noise: "assets/backgrounds/noise/neon.svg"
92
+
93
+ mint:
94
+ label: "Mint"
95
+ colors:
96
+ primary: "#2d6a4f"
97
+ secondary: "#52b788"
98
+ accent: "#95d5b2"
99
+ gradient: "assets/backgrounds/gradients/mint.svg"
100
+ pattern: "assets/backgrounds/patterns/mint.svg"
101
+ noise: "assets/backgrounds/noise/mint.svg"
102
+
103
+ plum:
104
+ label: "Plum"
105
+ colors:
106
+ primary: "#4a0e4e"
107
+ secondary: "#812f85"
108
+ accent: "#c77dff"
109
+ gradient: "assets/backgrounds/gradients/plum.svg"
110
+ pattern: "assets/backgrounds/patterns/plum.svg"
111
+ noise: "assets/backgrounds/noise/plum.svg"
112
+
113
+ sunrise:
114
+ label: "Sunrise"
115
+ colors:
116
+ primary: "#ff6b35"
117
+ secondary: "#f7c59f"
118
+ accent: "#efefd0"
119
+ gradient: "assets/backgrounds/gradients/sunrise.svg"
120
+ pattern: "assets/backgrounds/patterns/sunrise.svg"
121
+ noise: "assets/backgrounds/noise/sunrise.svg"
@@ -0,0 +1,59 @@
1
+ <!--
2
+ ===================================================================
3
+ ADMIN TABS — Reusable tabbed interface for admin pages
4
+ ===================================================================
5
+
6
+ File: admin-tabs.html
7
+ Path: _includes/components/admin-tabs.html
8
+ Purpose: Renders a Bootstrap 5 tabbed interface from structured
9
+ parameters. Each admin page can define its own tabs via
10
+ the include parameter or front matter.
11
+
12
+ Parameters (via include):
13
+ tabs - A string of tab definitions, pipe-separated:
14
+ "id:label:icon:active" per tab
15
+ e.g., "view:View Config:bi-eye:true|edit:Edit:bi-pencil:false"
16
+ id - Unique prefix for this tab group (default: "admin")
17
+
18
+ Usage:
19
+ {% include components/admin-tabs.html
20
+ id="config"
21
+ tabs="view:View Config:bi-eye:true|edit:Edit & Export:bi-pencil-square:false|raw:Raw YAML:bi-file-earmark-code:false"
22
+ %}
23
+ <div class="tab-content pt-4" id="configTabContent">
24
+ <div class="tab-pane fade show active" id="pane-view" role="tabpanel">
25
+ ... content ...
26
+ </div>
27
+ </div>
28
+
29
+ Dependencies: Bootstrap 5 tab/nav components, Bootstrap Icons
30
+ Used by: Admin pages (config.md, theme.md, navigation.md, etc.)
31
+ ===================================================================
32
+ -->
33
+
34
+ {% assign tab_prefix = include.id | default: "admin" %}
35
+ {% assign tab_list = include.tabs | split: "|" %}
36
+
37
+ <ul class="nav nav-tabs" id="{{ tab_prefix }}Tabs" role="tablist">
38
+ {% for tab_def in tab_list %}
39
+ {% assign parts = tab_def | split: ":" %}
40
+ {% assign tab_id = parts[0] %}
41
+ {% assign tab_label = parts[1] %}
42
+ {% assign tab_icon = parts[2] %}
43
+ {% assign tab_active = parts[3] %}
44
+
45
+ <li class="nav-item" role="presentation">
46
+ <button class="nav-link{% if tab_active == 'true' %} active{% endif %}"
47
+ id="tab-{{ tab_id }}"
48
+ data-bs-toggle="tab"
49
+ data-bs-target="#pane-{{ tab_id }}"
50
+ type="button"
51
+ role="tab"
52
+ aria-controls="pane-{{ tab_id }}"
53
+ aria-selected="{{ tab_active | default: 'false' }}">
54
+ {% if tab_icon %}<i class="{{ tab_icon }} me-1"></i>{% endif %}
55
+ {{ tab_label }}
56
+ </button>
57
+ </li>
58
+ {% endfor %}
59
+ </ul>