jekyll-theme-zer0 1.29.0 → 1.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +715 -2
- data/_data/README.md +2 -0
- data/_data/ai.yml +5 -3
- data/_data/ai_pricing.yml +36 -0
- data/_data/backlog.yml +169 -18
- data/_data/consumers.yml +48 -5
- data/_data/features.yml +146 -20
- data/_data/feedback_types.yml +17 -12
- data/_data/landing.yml +5 -2
- data/_data/navigation/quickstart.yml +4 -0
- data/_data/site_builder.yml +874 -0
- data/_data/theme-manifest.yml +122 -114
- data/_data/ui-text.yml +18 -0
- data/_includes/README.md +11 -1
- data/_includes/analytics/posthog.html +2 -2
- data/_includes/components/admin-links.html +2 -2
- data/_includes/components/admin-tabs.html +2 -2
- data/_includes/components/ai-chat.html +14 -11
- data/_includes/components/analytics-dashboard.html +8 -8
- data/_includes/components/author-bio.html +1 -1
- data/_includes/components/author-card.html +10 -2
- data/_includes/components/author-eeat.html +4 -4
- data/_includes/components/background-customizer.html +8 -8
- data/_includes/components/background-image.html +114 -0
- data/_includes/components/background-settings.html +28 -15
- data/_includes/components/collection-manager.html +5 -5
- data/_includes/components/component-showcase.html +13 -13
- data/_includes/components/config-editor.html +12 -12
- data/_includes/components/config-viewer.html +8 -8
- data/_includes/components/cookie-consent.html +11 -11
- data/_includes/components/cta-button.html +7 -2
- data/_includes/components/dev-shortcuts.html +7 -7
- data/_includes/components/env-dashboard.html +8 -8
- data/_includes/components/env-switcher.html +9 -9
- data/_includes/components/feature-card.html +2 -2
- data/_includes/components/halfmoon.html +2 -2
- data/_includes/components/info-section.html +36 -36
- data/_includes/components/js-cdn.html +15 -15
- data/_includes/components/language-toggle.html +4 -4
- data/_includes/components/mermaid.html +72 -435
- data/_includes/components/nanobar.html +5 -5
- data/_includes/components/nav-editor.html +2 -2
- data/_includes/components/nav-export.html +2 -2
- data/_includes/components/nav-overview.html +2 -2
- data/_includes/components/page-feedback.html +45 -30
- data/_includes/components/page-views-init.html +1 -1
- data/_includes/components/post-card.html +22 -22
- data/_includes/components/post-type-badge.html +2 -2
- data/_includes/components/powered-by.html +2 -2
- data/_includes/components/preview-image.html +6 -0
- data/_includes/components/quick-index.html +2 -2
- data/_includes/components/search-modal.html +27 -2
- data/_includes/components/searchbar.html +2 -2
- data/_includes/components/svg-background.html +2 -2
- data/_includes/components/theme-customizer.html +2 -2
- data/_includes/components/theme-info.html +6 -6
- data/_includes/components/theme-preview-gallery.html +22 -22
- data/_includes/content/giscus.html +2 -2
- data/_includes/content/intro.html +8 -8
- data/_includes/content/jsonld-faq.html +2 -2
- data/_includes/content/jsonld-software.html +2 -2
- data/_includes/content/seo.html +4 -4
- data/_includes/content/sitemap.html +27 -27
- data/_includes/content/toc.html +183 -183
- data/_includes/core/branding.html +6 -6
- data/_includes/core/console-capture.html +32 -74
- data/_includes/core/favicon.html +49 -7
- data/_includes/core/footer-fabs.html +17 -3
- data/_includes/core/footer.html +31 -18
- data/_includes/core/head.html +102 -90
- data/_includes/core/header.html +71 -52
- data/_includes/docs/bootstrap-docs.html +8 -8
- data/_includes/landing/landing-install-cards.html +2 -2
- data/_includes/landing/landing-quick-links.html +1 -1
- data/_includes/navigation/admin-nav.html +2 -2
- data/_includes/navigation/nav-tree.html +8 -8
- data/_includes/navigation/navbar.html +12 -12
- data/_includes/navigation/section-sidebar.html +16 -16
- data/_includes/navigation/sidebar-config.html +36 -2
- data/_includes/navigation/sidebar-left.html +15 -15
- data/_includes/navigation/sidebar-right.html +6 -6
- data/_includes/obsidian/full-graph.html +2 -2
- data/_includes/setup/claude-session.html +72 -0
- data/_includes/setup/prereq-checklist.html +90 -0
- data/_includes/setup/wizard.html +906 -291
- data/_includes/stats/stats-categories.html +8 -8
- data/_includes/stats/stats-header.html +14 -14
- data/_includes/stats/stats-metrics.html +12 -12
- data/_includes/stats/stats-no-data.html +12 -12
- data/_includes/stats/stats-overview.html +6 -6
- data/_includes/stats/stats-tags.html +8 -8
- data/_layouts/404.html +38 -24
- data/_layouts/admin.html +22 -22
- data/_layouts/article.html +39 -34
- data/_layouts/author.html +20 -20
- data/_layouts/authors.html +2 -2
- data/_layouts/book-abc.html +12 -12
- data/_layouts/book-story.html +15 -15
- data/_layouts/book.html +12 -12
- data/_layouts/collection.html +33 -33
- data/_layouts/cookbook.html +12 -12
- data/_layouts/default.html +27 -24
- data/_layouts/home.html +23 -23
- data/_layouts/index.html +10 -10
- data/_layouts/landing.html +17 -17
- data/_layouts/news.html +44 -44
- data/_layouts/note.html +38 -38
- data/_layouts/notebook.html +34 -34
- data/_layouts/recipe.html +24 -24
- data/_layouts/root.html +73 -55
- data/_layouts/section.html +23 -23
- data/_layouts/setup.html +3 -3
- data/_layouts/sitemap-collection.html +49 -49
- data/_layouts/stats.html +40 -40
- data/_layouts/tag.html +12 -12
- data/_layouts/welcome.html +21 -21
- data/_sass/components/_mermaid.scss +375 -0
- data/_sass/components/_setup-wizard.scss +569 -40
- data/_sass/core/_navbar.scss +11 -31
- data/_sass/layouts/_navbar-extras.scss +14 -4
- data/assets/css/main.scss +1 -0
- data/assets/js/ai-chat.js +47 -5
- data/assets/js/fleet-feedback-capture.js +124 -0
- data/assets/js/fleet-feedback.js +853 -0
- data/assets/js/mermaid-diagrams.js +1267 -0
- data/assets/js/modules/navigation/config.js +9 -6
- data/assets/js/modules/navigation/scroll-spy.js +315 -80
- data/assets/js/modules/theme/appearance.js +8 -2
- data/assets/js/obsidian-wiki-links.js +8 -3
- data/assets/js/page-feedback.js +125 -192
- data/assets/js/search-modal.js +26 -0
- data/assets/js/setup-wizard.js +2112 -361
- data/assets/js/site-builder.js +1834 -0
- data/assets/js/ui-enhancements.js +11 -3
- data/scripts/README.md +15 -0
- data/scripts/ai/README.md +38 -0
- data/scripts/ai/api_call.rb +124 -0
- data/scripts/ai/usage.rb +314 -0
- data/scripts/ai/usage_report.rb +225 -0
- data/scripts/ci/test_visual_evidence_autogen.py +341 -0
- data/scripts/ci/visual_evidence_autogen.py +1060 -0
- data/scripts/content-review.rb +20 -1
- data/scripts/test/integration/mermaid +22 -8
- data/scripts/test/lib/run_tests.sh +1 -0
- data/scripts/test/lib/test_visual_evidence_autogen.sh +24 -0
- data/scripts/translate.rb +23 -1
- metadata +19 -2
data/_layouts/root.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
# Features: ZER0-001, ZER0-019, ZER0-031, ZER0-060
|
|
3
3
|
---
|
|
4
|
-
|
|
4
|
+
{% comment %}
|
|
5
5
|
===================================================================
|
|
6
6
|
ROOT LAYOUT - Base template for the Zer0 Mistakes Jekyll Theme
|
|
7
7
|
===================================================================
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
Author: Amr Abdel-Motaleb
|
|
30
30
|
Copyright: 2024 - it-journey.com | @bamr87
|
|
31
31
|
===================================================================
|
|
32
|
-
|
|
32
|
+
{% endcomment %}
|
|
33
33
|
|
|
34
34
|
<!doctype html>
|
|
35
35
|
{%- comment -%}
|
|
@@ -48,7 +48,20 @@
|
|
|
48
48
|
{%- endif -%}
|
|
49
49
|
<html lang="{{ page.lang | default: site.locale | slice: 0, 2 | default: 'en' }}" class="no-js" data-bs-theme="{{ _bs_theme }}" data-color-mode-default="{{ _cm }}" data-color-mode-lock="{{ site.color_mode_lock | default: false }}" data-theme-skin="{{ site.theme_skin | default: 'air' }}" data-zer0-bg="{{ site.theme_background.enabled | default: true }}">
|
|
50
50
|
<head>
|
|
51
|
-
|
|
51
|
+
{%- comment -%} Character encoding MUST be the first thing in <head>: the HTML spec
|
|
52
|
+
only looks for it in the first 1024 bytes of the document, and
|
|
53
|
+
everything below (the no-js note, core/head.html's own banner,
|
|
54
|
+
Google Tag Manager, console-capture, page-views, mermaid, nanobar)
|
|
55
|
+
pushed it to byte ~4415 (issue #372). Past the limit the browser
|
|
56
|
+
stops looking and falls back to its locale default, mis-decoding
|
|
57
|
+
every non-ASCII byte until it re-parses — and this theme ships
|
|
58
|
+
UTF-8 throughout (fr/** translations, em-dashes, curly quotes).
|
|
59
|
+
It sits here rather than in core/head.html because that include is
|
|
60
|
+
not, and cannot be, the first thing in <head>.
|
|
61
|
+
Keep it first. Nothing may be emitted above it. {%- endcomment -%}
|
|
62
|
+
<meta charset="utf-8">
|
|
63
|
+
|
|
64
|
+
{% comment %} Progressive-enhancement hook: upgrade <html class="no-js"> to "js".
|
|
52
65
|
MUST be the first child of <head>, inline, and neither `defer` nor
|
|
53
66
|
`async` — it has to run before the first stylesheet is fetched or
|
|
54
67
|
`html.js` rules would flash. It cannot live in core/head.html:
|
|
@@ -56,65 +69,70 @@
|
|
|
56
69
|
"first in that include" is not "first in <head>".
|
|
57
70
|
classList.replace() is a no-op when `no-js` is absent, so this is
|
|
58
71
|
safe unconditionally. The served HTML keeps `no-js` on <html> so
|
|
59
|
-
the JS-disabled branch stays correct.
|
|
72
|
+
the JS-disabled branch stays correct. {% endcomment %}
|
|
60
73
|
<script>document.documentElement.classList.replace("no-js", "js");</script>
|
|
61
74
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
75
|
+
{% comment %} =============================================== {% endcomment %}
|
|
76
|
+
{% comment %} HEAD SECTION: Meta tags, styles, and SEO setup {% endcomment %}
|
|
77
|
+
{% comment %} =============================================== {% endcomment %}
|
|
65
78
|
|
|
66
|
-
|
|
79
|
+
{% comment %} Core site metadata, stylesheets, and external dependencies {% endcomment %}
|
|
67
80
|
{% include core/head.html %}
|
|
68
81
|
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
{% comment %} Jekyll SEO plugin for enhanced search engine optimization {% endcomment %}
|
|
83
|
+
{% comment %} Documentation: https://github.com/jekyll/jekyll-seo-tag {% endcomment %}
|
|
71
84
|
{% seo %}
|
|
72
85
|
|
|
73
|
-
|
|
86
|
+
{% comment %} fffuel-style SVG background config overrides {% endcomment %}
|
|
74
87
|
{% include components/svg-background.html zone="body" %}
|
|
75
88
|
</head>
|
|
76
89
|
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
90
|
+
{% comment %} No `data-bs-spy` here: the theme's own scroll spy
|
|
91
|
+
(assets/js/modules/navigation/scroll-spy.js) owns TOC highlighting.
|
|
92
|
+
Bootstrap's native ScrollSpy competed with it for the `.active` class
|
|
93
|
+
on `#TableOfContents a` (making the bolding jump), and also stripped
|
|
94
|
+
server-rendered `.active` classes off sidebar nav links. {% endcomment %}
|
|
95
|
+
<body class="zer0-bg-body">
|
|
96
|
+
{% comment %} ============================================== {% endcomment %}
|
|
97
|
+
{% comment %} BODY SECTION: Site structure and content area {% endcomment %}
|
|
98
|
+
{% comment %} ============================================== {% endcomment %}
|
|
99
|
+
|
|
100
|
+
{% comment %} Consumer hook: first thing inside <body> (e.g. GTM noscript).
|
|
101
|
+
Empty stub shipped by the theme; shadow _includes/custom/body-start.html to use. {% endcomment %}
|
|
84
102
|
{% include custom/body-start.html %}
|
|
85
103
|
|
|
86
|
-
|
|
87
|
-
|
|
104
|
+
{% comment %} Inline SVG symbols for consistent iconography throughout the site {% endcomment %}
|
|
105
|
+
{% comment %} Page-invariant: cached once per build via jekyll-include-cache. {% endcomment %}
|
|
88
106
|
{% include_cached components/svg.html %}
|
|
89
107
|
|
|
90
|
-
|
|
91
|
-
|
|
108
|
+
{% comment %} Google Tag Manager body code for analytics (if configured) {% endcomment %}
|
|
109
|
+
{% comment %} Note: Currently commented out - uncomment when GTM is needed {% endcomment %}
|
|
92
110
|
|
|
93
|
-
|
|
111
|
+
{% comment %} Main site header with navigation, branding, and search functionality {% endcomment %}
|
|
94
112
|
{% include core/header.html %}
|
|
95
113
|
|
|
96
|
-
|
|
97
|
-
Enable with `navigation.unified_mobile_drawer: true` in _config.yml.
|
|
114
|
+
{% comment %} Optional unified mobile drawer (Browse / Menu / Settings tabs).
|
|
115
|
+
Enable with `navigation.unified_mobile_drawer: true` in _config.yml. {% endcomment %}
|
|
98
116
|
{% include navigation/unified-drawer.html %}
|
|
99
117
|
|
|
100
|
-
|
|
118
|
+
{% comment %} Search modal (site-wide) — cached once per build PER LANGUAGE
|
|
101
119
|
(the lang param keys the include-cache entry; page.lang is nil
|
|
102
|
-
on English pages, so they all still share a single render).
|
|
120
|
+
on English pages, so they all still share a single render). {% endcomment %}
|
|
103
121
|
{% include_cached components/search-modal.html lang=page.lang %}
|
|
104
122
|
|
|
105
|
-
|
|
123
|
+
{% comment %} Keyboard shortcuts help modal (triggered by `?`) — cached per language. {% endcomment %}
|
|
106
124
|
{% include_cached components/shortcuts-modal.html lang=page.lang %}
|
|
107
125
|
|
|
108
|
-
|
|
126
|
+
{% comment %} Settings offcanvas (Appearance / Site / Developer tabs) {% endcomment %}
|
|
109
127
|
{% include components/info-section.html %}
|
|
110
128
|
|
|
111
|
-
|
|
129
|
+
{% comment %} Setup banner for unconfigured sites — page-invariant. {% endcomment %}
|
|
112
130
|
{% include_cached components/setup-banner.html %}
|
|
113
131
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
132
|
+
{% comment %} ======================== {% endcomment %}
|
|
133
|
+
{% comment %} MAIN CONTENT AREA {% endcomment %}
|
|
134
|
+
{% comment %} ======================== {% endcomment %}
|
|
135
|
+
{% comment %} Skip-link target: keep a single, consistent #main-content anchor site-wide.
|
|
118
136
|
This is the ONE <main> landmark per page — child layouts (default/section/
|
|
119
137
|
news) must use non-landmark wrappers (<div>) inside it (issue #299) — so
|
|
120
138
|
assistive tech, search engines, and AI content extractors can isolate the
|
|
@@ -126,60 +144,60 @@
|
|
|
126
144
|
the next Tab returns the user to the header nav they just skipped
|
|
127
145
|
(WCAG 2.4.1 Bypass Blocks). -1 keeps it out of the sequential Tab order
|
|
128
146
|
while allowing programmatic focus. The focus ring it would otherwise
|
|
129
|
-
paint is suppressed in _sass/utilities/_focus.scss.
|
|
147
|
+
paint is suppressed in _sass/utilities/_focus.scss. {% endcomment %}
|
|
130
148
|
<main id="main-content" tabindex="-1">
|
|
131
|
-
|
|
132
|
-
translations (page.machine_translated); no-op elsewhere.
|
|
149
|
+
{% comment %} Machine-translation disclosure — renders only on generated
|
|
150
|
+
translations (page.machine_translated); no-op elsewhere. {% endcomment %}
|
|
133
151
|
{%- include components/translation-notice.html -%}
|
|
134
152
|
{{ content }}
|
|
135
153
|
</main>
|
|
136
154
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
155
|
+
{% comment %} ======================== {% endcomment %}
|
|
156
|
+
{% comment %} FOOTER AND SCRIPTS {% endcomment %}
|
|
157
|
+
{% comment %} ======================== {% endcomment %}
|
|
140
158
|
|
|
141
|
-
|
|
159
|
+
{% comment %} Site footer with links, copyright, and additional navigation.
|
|
142
160
|
Page-invariant chrome is cached once per build; the page-dependent
|
|
143
161
|
FAB/local-graph tail renders fresh per page (see core/footer-fabs.html).
|
|
144
162
|
Build-time values inside (e.g. the copyright year from site.time) stay
|
|
145
163
|
fresh: jekyll-include-cache stores in memory only (Jekyll 3.x has no
|
|
146
164
|
Jekyll::Cache) and clears on every build's :pre_render hook — it never
|
|
147
|
-
persists to .jekyll-cache.
|
|
165
|
+
persists to .jekyll-cache. {% endcomment %}
|
|
148
166
|
{%- include_cached core/footer.html lang=page.lang -%}
|
|
149
167
|
{%- include core/footer-fabs.html -%}
|
|
150
168
|
|
|
151
|
-
|
|
169
|
+
{% comment %} Consumer hook: after the theme footer, before the consent banner.
|
|
152
170
|
Empty stub shipped by the theme; shadow _includes/custom/footer.html to use.
|
|
153
171
|
Deliberately OUTSIDE the cached footer include so page-dependent
|
|
154
|
-
consumer markup renders per page.
|
|
172
|
+
consumer markup renders per page. {% endcomment %}
|
|
155
173
|
{%- include custom/footer.html -%}
|
|
156
174
|
|
|
157
|
-
|
|
175
|
+
{% comment %} Privacy-compliant cookie consent banner — page-invariant. {% endcomment %}
|
|
158
176
|
{%- include_cached components/cookie-consent.html -%}
|
|
159
177
|
|
|
160
|
-
|
|
178
|
+
{% comment %} AI Chat Assistant {% endcomment %}
|
|
161
179
|
{%- include components/ai-chat.html -%}
|
|
162
180
|
|
|
163
|
-
|
|
181
|
+
{% comment %} Page-feedback capture widget ("Improve this page" → GitHub issue) {% endcomment %}
|
|
164
182
|
{%- include components/page-feedback.html -%}
|
|
165
183
|
|
|
166
|
-
|
|
184
|
+
{% comment %} JavaScript dependencies and custom scripts {% endcomment %}
|
|
167
185
|
<div>
|
|
168
|
-
|
|
169
|
-
|
|
186
|
+
{% comment %} Search functionality {% endcomment %}
|
|
187
|
+
{% comment %} Note: Currently commented out - uncomment when search is implemented {% endcomment %}
|
|
170
188
|
|
|
171
|
-
|
|
189
|
+
{% comment %} External JavaScript libraries and custom scripts — page-invariant.
|
|
172
190
|
The "?v=" cache-buster (site.time) in js-cdn.html stays correct:
|
|
173
191
|
the include cache is in-memory and reset every build (see footer
|
|
174
|
-
note above), so v= advances on each build, never frozen across deploys.
|
|
192
|
+
note above), so v= advances on each build, never frozen across deploys. {% endcomment %}
|
|
175
193
|
{% include_cached components/js-cdn.html %}
|
|
176
194
|
</div>
|
|
177
195
|
|
|
178
|
-
|
|
196
|
+
{% comment %} Analytics Integration {% endcomment %}
|
|
179
197
|
{%- include analytics/posthog.html -%}
|
|
180
198
|
|
|
181
|
-
|
|
182
|
-
Empty stub shipped by the theme; shadow _includes/custom/body-end.html to use.
|
|
199
|
+
{% comment %} Consumer hook: last thing before </body> (site scripts, widgets).
|
|
200
|
+
Empty stub shipped by the theme; shadow _includes/custom/body-end.html to use. {% endcomment %}
|
|
183
201
|
{%- include custom/body-end.html -%}
|
|
184
202
|
</body>
|
|
185
203
|
</html>
|
data/_layouts/section.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Features: ZER0-019, ZER0-063
|
|
3
3
|
layout: root
|
|
4
4
|
---
|
|
5
|
-
|
|
5
|
+
{% comment %}
|
|
6
6
|
===================================================================
|
|
7
7
|
SECTION LAYOUT - News Section with Collapsible Sub-Category Sidebar
|
|
8
8
|
===================================================================
|
|
@@ -40,7 +40,7 @@ layout: root
|
|
|
40
40
|
- Bootstrap 5 grid, card, and offcanvas components
|
|
41
41
|
- Bootstrap Icons
|
|
42
42
|
===================================================================
|
|
43
|
-
|
|
43
|
+
{% endcomment %}
|
|
44
44
|
|
|
45
45
|
{% comment %} ================================ {% endcomment %}
|
|
46
46
|
{% comment %} SECTION DISCOVERY LOGIC {% endcomment %}
|
|
@@ -112,9 +112,9 @@ layout: root
|
|
|
112
112
|
{% endfor %}
|
|
113
113
|
{% assign sub_categories = sub_categories | sort %}
|
|
114
114
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
{% comment %} ================================ {% endcomment %}
|
|
116
|
+
{% comment %} SECTION HEADER {% endcomment %}
|
|
117
|
+
{% comment %} ================================ {% endcomment %}
|
|
118
118
|
<div class="container-fluid bg-dark text-white py-3 mb-0">
|
|
119
119
|
<div class="container-fluid px-4">
|
|
120
120
|
<div class="row align-items-center">
|
|
@@ -147,7 +147,7 @@ layout: root
|
|
|
147
147
|
</div>
|
|
148
148
|
</div>
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
{% comment %} Sub-navigation for other sections {% endcomment %}
|
|
151
151
|
<div class="container-fluid bg-body-tertiary border-bottom py-2 mb-4">
|
|
152
152
|
<div class="container-fluid px-4">
|
|
153
153
|
<nav class="nav nav-pills flex-nowrap overflow-auto" style="scrollbar-width: none;">
|
|
@@ -175,9 +175,9 @@ layout: root
|
|
|
175
175
|
<div class="container-fluid px-4">
|
|
176
176
|
<div class="row g-lg-4 section-layout">
|
|
177
177
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
178
|
+
{% comment %} ================================ {% endcomment %}
|
|
179
|
+
{% comment %} FIXED SIDEBAR COMPONENT {% endcomment %}
|
|
180
|
+
{% comment %} ================================ {% endcomment %}
|
|
181
181
|
<div class="col-lg-3 col-xl-2 section-layout-sidebar">
|
|
182
182
|
{% include navigation/section-sidebar.html
|
|
183
183
|
section_posts=section_posts
|
|
@@ -188,14 +188,14 @@ layout: root
|
|
|
188
188
|
%}
|
|
189
189
|
</div>
|
|
190
190
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
landmark; a nested <main> here would duplicate it (issue #299).
|
|
191
|
+
{% comment %} ================================ {% endcomment %}
|
|
192
|
+
{% comment %} MAIN CONTENT AREA {% endcomment %}
|
|
193
|
+
{% comment %} ================================ {% endcomment %}
|
|
194
|
+
{% comment %} Not a <main>: root.html already provides the single <main id="main-content">
|
|
195
|
+
landmark; a nested <main> here would duplicate it (issue #299). {% endcomment %}
|
|
196
196
|
<div class="col-lg-9 col-xl-10 section-layout-main">
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
{% comment %} Section Header {% endcomment %}
|
|
199
199
|
<header class="section-header mb-4">
|
|
200
200
|
<div class="d-flex align-items-center mb-3">
|
|
201
201
|
{% if page.icon %}
|
|
@@ -223,7 +223,7 @@ layout: root
|
|
|
223
223
|
{% comment %} ================================ {% endcomment %}
|
|
224
224
|
{% if section_style == "magazine" %}
|
|
225
225
|
|
|
226
|
-
|
|
226
|
+
{% comment %} Hero Section {% endcomment %}
|
|
227
227
|
{% assign featured_in_section = section_posts | where: "featured", true | first %}
|
|
228
228
|
{% unless featured_in_section %}
|
|
229
229
|
{% assign featured_in_section = section_posts | first %}
|
|
@@ -274,7 +274,7 @@ layout: root
|
|
|
274
274
|
</div>
|
|
275
275
|
</section>
|
|
276
276
|
|
|
277
|
-
|
|
277
|
+
{% comment %} Sub-Category Sections {% endcomment %}
|
|
278
278
|
{% for subcat in sub_categories limit: 5 %}
|
|
279
279
|
{% assign subcat_posts = section_posts | where_exp: "post", "post.tags contains subcat" %}
|
|
280
280
|
{% assign subcat_posts_filtered = "" | split: "" %}
|
|
@@ -340,7 +340,7 @@ layout: root
|
|
|
340
340
|
{% endif %}
|
|
341
341
|
{% endfor %}
|
|
342
342
|
|
|
343
|
-
|
|
343
|
+
{% comment %} All Posts Section {% endcomment %}
|
|
344
344
|
<section id="all-posts" class="all-posts-section mb-5 scroll-mt-5">
|
|
345
345
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
346
346
|
<h3 class="h4 mb-0">
|
|
@@ -404,7 +404,7 @@ layout: root
|
|
|
404
404
|
{% comment %} ================================ {% endcomment %}
|
|
405
405
|
{% elsif section_style == "grid" %}
|
|
406
406
|
|
|
407
|
-
|
|
407
|
+
{% comment %} Topic Filter Pills {% endcomment %}
|
|
408
408
|
<div class="topic-filters mb-4">
|
|
409
409
|
<div class="d-flex flex-wrap gap-2 align-items-center">
|
|
410
410
|
<span class="text-muted me-2">Filter:</span>
|
|
@@ -540,7 +540,7 @@ layout: root
|
|
|
540
540
|
{% endif %}
|
|
541
541
|
|
|
542
542
|
{% else %}
|
|
543
|
-
|
|
543
|
+
{% comment %} Empty state {% endcomment %}
|
|
544
544
|
<div class="text-center py-5">
|
|
545
545
|
<i class="bi bi-inbox fs-1 text-muted"></i>
|
|
546
546
|
<p class="text-muted mt-3">No articles in this section yet.</p>
|
|
@@ -550,9 +550,9 @@ layout: root
|
|
|
550
550
|
</div>
|
|
551
551
|
{% endif %}
|
|
552
552
|
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
553
|
+
{% comment %} ========================== {% endcomment %}
|
|
554
|
+
{% comment %} RELATED SECTIONS {% endcomment %}
|
|
555
|
+
{% comment %} ========================== {% endcomment %}
|
|
556
556
|
<aside class="related-sections mt-5 pt-4 border-top">
|
|
557
557
|
<h3 class="h5 mb-3">
|
|
558
558
|
<i class="bi bi-compass me-2"></i>Explore Other Sections
|
data/_layouts/setup.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Features: ZER0-019, ZER0-067
|
|
3
3
|
layout: root
|
|
4
4
|
---
|
|
5
|
-
|
|
5
|
+
{% comment %}
|
|
6
6
|
===================================================================
|
|
7
7
|
SETUP LAYOUT - Onboarding and configuration pages
|
|
8
8
|
===================================================================
|
|
@@ -24,7 +24,7 @@ layout: root
|
|
|
24
24
|
setup_step: 2 # optional, highlights step in progress bar
|
|
25
25
|
setup_total: 4 # optional, total number of steps
|
|
26
26
|
===================================================================
|
|
27
|
-
|
|
27
|
+
{% endcomment %}
|
|
28
28
|
|
|
29
29
|
{% include components/setup-check.html %}
|
|
30
30
|
|
|
@@ -45,7 +45,7 @@ layout: root
|
|
|
45
45
|
{% endif %}
|
|
46
46
|
|
|
47
47
|
{% if page.setup_step and page.setup_total %}
|
|
48
|
-
|
|
48
|
+
{% comment %} Progress indicator {% endcomment %}
|
|
49
49
|
<div class="mb-4">
|
|
50
50
|
<div class="d-flex justify-content-between small text-body-secondary mb-1">
|
|
51
51
|
<span>Step {{ page.setup_step }} of {{ page.setup_total }}</span>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Features: ZER0-019, ZER0-042
|
|
3
3
|
layout: root
|
|
4
4
|
---
|
|
5
|
-
|
|
5
|
+
{% comment %}
|
|
6
6
|
===================================================================
|
|
7
7
|
COMPREHENSIVE SITEMAP COLLECTION LAYOUT
|
|
8
8
|
===================================================================
|
|
@@ -33,20 +33,20 @@ layout: root
|
|
|
33
33
|
- Jekyll collections and site data
|
|
34
34
|
- Content statistics data (if available)
|
|
35
35
|
===================================================================
|
|
36
|
-
|
|
36
|
+
{% endcomment %}
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
{% comment %} ================================================ {% endcomment %}
|
|
39
|
+
{% comment %} SITEMAP HEADER AND OVERVIEW {% endcomment %}
|
|
40
|
+
{% comment %} ================================================ {% endcomment %}
|
|
41
41
|
<div class="container-fluid px-4">
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
{% comment %} Page Content {% endcomment %}
|
|
44
44
|
{{ content }}
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
{% comment %} ================================================ {% endcomment %}
|
|
47
|
+
{% comment %} SITE STATISTICS OVERVIEW {% endcomment %}
|
|
48
|
+
{% comment %} High-level metrics and site health {% endcomment %}
|
|
49
|
+
{% comment %} ================================================ {% endcomment %}
|
|
50
50
|
<div class="row mb-5">
|
|
51
51
|
<div class="col-12">
|
|
52
52
|
<div class="card border-primary">
|
|
@@ -72,7 +72,7 @@ layout: root
|
|
|
72
72
|
{% endfor %}
|
|
73
73
|
{% endfor %}
|
|
74
74
|
<div class="row g-3">
|
|
75
|
-
|
|
75
|
+
{% comment %} Published URLs (same count as Interactive Site Map table rows) {% endcomment %}
|
|
76
76
|
<div class="col-lg-2 col-md-4 col-sm-6">
|
|
77
77
|
<div class="text-center p-3 border rounded">
|
|
78
78
|
<i class="bi bi-file-text display-4 text-primary mb-2"></i>
|
|
@@ -81,7 +81,7 @@ layout: root
|
|
|
81
81
|
</div>
|
|
82
82
|
</div>
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
{% comment %} Total Posts {% endcomment %}
|
|
85
85
|
<div class="col-lg-2 col-md-4 col-sm-6">
|
|
86
86
|
<div class="text-center p-3 border rounded">
|
|
87
87
|
<i class="bi bi-journal-text display-4 text-success mb-2"></i>
|
|
@@ -90,7 +90,7 @@ layout: root
|
|
|
90
90
|
</div>
|
|
91
91
|
</div>
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
{% comment %} Collections Count {% endcomment %}
|
|
94
94
|
<div class="col-lg-2 col-md-4 col-sm-6">
|
|
95
95
|
<div class="text-center p-3 border rounded">
|
|
96
96
|
<i class="bi bi-collection display-4 text-info mb-2"></i>
|
|
@@ -99,7 +99,7 @@ layout: root
|
|
|
99
99
|
</div>
|
|
100
100
|
</div>
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
{% comment %} Data Files {% endcomment %}
|
|
103
103
|
<div class="col-lg-2 col-md-4 col-sm-6">
|
|
104
104
|
<div class="text-center p-3 border rounded">
|
|
105
105
|
<i class="bi bi-database display-4 text-warning mb-2"></i>
|
|
@@ -108,7 +108,7 @@ layout: root
|
|
|
108
108
|
</div>
|
|
109
109
|
</div>
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
{% comment %} Categories {% endcomment %}
|
|
112
112
|
<div class="col-lg-2 col-md-4 col-sm-6">
|
|
113
113
|
<div class="text-center p-3 border rounded">
|
|
114
114
|
<i class="bi bi-tags display-4 text-secondary mb-2"></i>
|
|
@@ -118,7 +118,7 @@ layout: root
|
|
|
118
118
|
</div>
|
|
119
119
|
</div>
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
{% comment %} Total Content (same as published outputs; avoids double-counting posts/collections) {% endcomment %}
|
|
122
122
|
<div class="col-lg-2 col-md-4 col-sm-6">
|
|
123
123
|
<div class="text-center p-3 border rounded">
|
|
124
124
|
<i class="bi bi-globe display-4 text-danger mb-2"></i>
|
|
@@ -132,10 +132,10 @@ layout: root
|
|
|
132
132
|
</div>
|
|
133
133
|
</div>
|
|
134
134
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
135
|
+
{% comment %} ================================================ {% endcomment %}
|
|
136
|
+
{% comment %} ENHANCED SITEMAP COMPONENT {% endcomment %}
|
|
137
|
+
{% comment %} Interactive search, filtering, and navigation {% endcomment %}
|
|
138
|
+
{% comment %} ================================================ {% endcomment %}
|
|
139
139
|
<div class="row mb-5">
|
|
140
140
|
<div class="col-12">
|
|
141
141
|
<div class="card">
|
|
@@ -152,10 +152,10 @@ layout: root
|
|
|
152
152
|
</div>
|
|
153
153
|
</div>
|
|
154
154
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
155
|
+
{% comment %} ================================================ {% endcomment %}
|
|
156
|
+
{% comment %} COLLECTIONS OVERVIEW {% endcomment %}
|
|
157
|
+
{% comment %} Detailed view of all Jekyll collections {% endcomment %}
|
|
158
|
+
{% comment %} ================================================ {% endcomment %}
|
|
159
159
|
<div class="row mb-5">
|
|
160
160
|
<div class="col-12">
|
|
161
161
|
<div class="card">
|
|
@@ -219,13 +219,13 @@ layout: root
|
|
|
219
219
|
</div>
|
|
220
220
|
</div>
|
|
221
221
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
222
|
+
{% comment %} ================================================ {% endcomment %}
|
|
223
|
+
{% comment %} SITE STRUCTURE ANALYSIS {% endcomment %}
|
|
224
|
+
{% comment %} Detailed breakdown of site organization {% endcomment %}
|
|
225
|
+
{% comment %} ================================================ {% endcomment %}
|
|
226
226
|
<div class="row mb-5">
|
|
227
227
|
<div class="col-lg-6">
|
|
228
|
-
|
|
228
|
+
{% comment %} Categories Analysis {% endcomment %}
|
|
229
229
|
<div class="card h-100">
|
|
230
230
|
<div class="card-header bg-info text-white">
|
|
231
231
|
<h4 class="mb-0">
|
|
@@ -257,7 +257,7 @@ layout: root
|
|
|
257
257
|
</div>
|
|
258
258
|
|
|
259
259
|
<div class="col-lg-6">
|
|
260
|
-
|
|
260
|
+
{% comment %} Tags Analysis {% endcomment %}
|
|
261
261
|
<div class="card h-100">
|
|
262
262
|
<div class="card-header bg-warning text-dark">
|
|
263
263
|
<h4 class="mb-0">
|
|
@@ -289,10 +289,10 @@ layout: root
|
|
|
289
289
|
</div>
|
|
290
290
|
</div>
|
|
291
291
|
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
292
|
+
{% comment %} ================================================ {% endcomment %}
|
|
293
|
+
{% comment %} RECENT ACTIVITY OVERVIEW {% endcomment %}
|
|
294
|
+
{% comment %} Latest content and updates {% endcomment %}
|
|
295
|
+
{% comment %} ================================================ {% endcomment %}
|
|
296
296
|
<div class="row mb-5">
|
|
297
297
|
<div class="col-12">
|
|
298
298
|
<div class="card">
|
|
@@ -304,7 +304,7 @@ layout: root
|
|
|
304
304
|
</div>
|
|
305
305
|
<div class="card-body">
|
|
306
306
|
<div class="row">
|
|
307
|
-
|
|
307
|
+
{% comment %} Recent Posts {% endcomment %}
|
|
308
308
|
<div class="col-lg-4">
|
|
309
309
|
<h5 class="border-bottom pb-2">Recent Posts</h5>
|
|
310
310
|
{% assign recent_posts = site.posts | sort: 'date' | reverse | limit: 5 %}
|
|
@@ -321,7 +321,7 @@ layout: root
|
|
|
321
321
|
{% endif %}
|
|
322
322
|
</div>
|
|
323
323
|
|
|
324
|
-
|
|
324
|
+
{% comment %} Recent Pages {% endcomment %}
|
|
325
325
|
<div class="col-lg-4">
|
|
326
326
|
<h5 class="border-bottom pb-2">Recent Pages</h5>
|
|
327
327
|
{% assign recent_pages = site.html_pages | sort: 'path' | reverse | limit: 5 %}
|
|
@@ -338,7 +338,7 @@ layout: root
|
|
|
338
338
|
{% endif %}
|
|
339
339
|
</div>
|
|
340
340
|
|
|
341
|
-
|
|
341
|
+
{% comment %} Quick Stats {% endcomment %}
|
|
342
342
|
<div class="col-lg-4">
|
|
343
343
|
<h5 class="border-bottom pb-2">Quick Stats</h5>
|
|
344
344
|
<ul class="list-unstyled">
|
|
@@ -366,10 +366,10 @@ layout: root
|
|
|
366
366
|
</div>
|
|
367
367
|
</div>
|
|
368
368
|
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
369
|
+
{% comment %} ================================================ {% endcomment %}
|
|
370
|
+
{% comment %} SITE HEALTH & PERFORMANCE {% endcomment %}
|
|
371
|
+
{% comment %} Optional advanced statistics if data available {% endcomment %}
|
|
372
|
+
{% comment %} ================================================ {% endcomment %}
|
|
373
373
|
{% if site.data.content_statistics %}
|
|
374
374
|
<div class="row mb-5">
|
|
375
375
|
<div class="col-12">
|
|
@@ -381,7 +381,7 @@ layout: root
|
|
|
381
381
|
</h3>
|
|
382
382
|
</div>
|
|
383
383
|
<div class="card-body">
|
|
384
|
-
|
|
384
|
+
{% comment %} Include existing stats components if available {% endcomment %}
|
|
385
385
|
{% include stats/stats-overview.html %}
|
|
386
386
|
|
|
387
387
|
<div class="row mt-4">
|
|
@@ -404,10 +404,10 @@ layout: root
|
|
|
404
404
|
|
|
405
405
|
</div>
|
|
406
406
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
407
|
+
{% comment %} ================================================ {% endcomment %}
|
|
408
|
+
{% comment %} ENHANCED SITEMAP JAVASCRIPT {% endcomment %}
|
|
409
|
+
{% comment %} Additional functionality for comprehensive view {% endcomment %}
|
|
410
|
+
{% comment %} ================================================ {% endcomment %}
|
|
411
411
|
<script>
|
|
412
412
|
document.addEventListener('DOMContentLoaded', function() {
|
|
413
413
|
// Initialize tooltips
|
|
@@ -440,9 +440,9 @@ document.addEventListener('DOMContentLoaded', function() {
|
|
|
440
440
|
});
|
|
441
441
|
</script>
|
|
442
442
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
443
|
+
{% comment %} ================================================ {% endcomment %}
|
|
444
|
+
{% comment %} SITEMAP-SPECIFIC STYLES {% endcomment %}
|
|
445
|
+
{% comment %} ================================================ {% endcomment %}
|
|
446
446
|
<style>
|
|
447
447
|
.sitemap-overview {
|
|
448
448
|
background: linear-gradient(135deg, var(--bs-primary-bg-subtle) 0%, var(--bs-success-bg-subtle) 100%);
|