jekyll-theme-zer0 1.28.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 +1143 -13
- data/_data/README.md +2 -0
- data/_data/ai.yml +5 -3
- data/_data/ai_pricing.yml +36 -0
- data/_data/backlog.yml +507 -2
- data/_data/consumers.yml +157 -9
- data/_data/features.yml +303 -20
- data/_data/feedback_types.yml +17 -12
- data/_data/i18n/fr.yml +12 -7
- data/_data/i18n/manifest.yml +39 -12
- data/_data/ingredient_densities.yml +122 -0
- data/_data/landing.yml +5 -2
- data/_data/navigation/main.yml +16 -0
- data/_data/navigation/quickstart.yml +4 -0
- data/_data/recipe_courses.yml +64 -0
- data/_data/site_builder.yml +874 -0
- data/_data/theme-manifest.yml +160 -124
- data/_data/ui-text.yml +26 -0
- data/_includes/README.md +26 -2
- 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 +10 -10
- 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 +15 -15
- 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 +42 -37
- data/_includes/components/js-cdn.html +15 -15
- data/_includes/components/language-toggle.html +168 -21
- 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 +55 -0
- data/_includes/components/page-views.html +33 -0
- 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/recipe-card.html +67 -0
- data/_includes/components/recipe-duration.html +50 -0
- data/_includes/components/recipe-grams.html +58 -0
- data/_includes/components/recipe-index.html +96 -0
- data/_includes/components/recipe-ingredients.html +90 -0
- data/_includes/components/recipe-meta.html +96 -0
- data/_includes/components/recipe-nutrition.html +57 -0
- data/_includes/components/recipe-qty.html +73 -0
- data/_includes/components/recipe-ratio.html +151 -0
- data/_includes/components/recipe-scaler.html +73 -0
- data/_includes/components/recipe-steps.html +86 -0
- data/_includes/components/recipe-temp.html +45 -0
- data/_includes/components/search-modal.html +29 -4
- data/_includes/components/searchbar.html +2 -2
- data/_includes/components/shortcuts-modal.html +3 -0
- data/_includes/components/svg-background.html +2 -2
- data/_includes/components/theme-customizer.html +2 -2
- data/_includes/components/theme-info.html +14 -7
- 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 +24 -5
- 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 +49 -34
- data/_includes/core/head.html +110 -86
- data/_includes/core/header.html +76 -54
- 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 +109 -27
- data/_includes/navigation/sidebar-config.html +36 -2
- data/_includes/navigation/sidebar-left.html +17 -16
- data/_includes/navigation/sidebar-right.html +8 -7
- 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 +924 -222
- data/_includes/stats/stats-categories.html +8 -8
- data/_includes/stats/stats-header.html +14 -14
- data/_includes/stats/stats-metrics.html +14 -14
- 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/README.md +2 -0
- data/_layouts/admin.html +24 -24
- data/_layouts/article.html +43 -33
- 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 +88 -0
- data/_layouts/default.html +31 -28
- 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 +274 -0
- data/_layouts/root.html +92 -55
- data/_layouts/section.html +62 -33
- 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/_callout.scss +1 -1
- data/_sass/components/_footer.scss +37 -1
- data/_sass/components/_mermaid.scss +375 -0
- data/_sass/components/_page-views.scss +36 -0
- data/_sass/components/_recipe.scss +506 -0
- data/_sass/components/_setup-wizard.scss +764 -0
- data/_sass/components/_ui-enhancements.scss +6 -6
- data/_sass/core/_navbar.scss +261 -46
- data/_sass/layouts/_landing.scss +2 -2
- data/_sass/layouts/_navbar-extras.scss +14 -4
- data/_sass/tokens/_color.scss +6 -0
- data/_sass/tokens/_index.scss +2 -0
- data/_sass/tokens/_radius.scss +21 -0
- data/_sass/tokens/_typography.scss +4 -0
- data/_sass/utilities/_focus.scss +14 -0
- data/assets/css/main.scss +4 -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/navbar.js +55 -0
- 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/page-views.js +372 -0
- data/assets/js/recipe-scaler.js +501 -0
- data/assets/js/search-modal.js +36 -0
- data/assets/js/setup-wizard.js +2279 -226
- data/assets/js/site-builder.js +1834 -0
- data/assets/js/ui-enhancements.js +11 -3
- data/scripts/README.md +44 -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/bin/audit-consumer +39 -7
- data/scripts/bin/giscus-discussions +213 -14
- data/scripts/bin/manifest +35 -12
- data/scripts/ci/agent_review_result.py +164 -0
- data/scripts/ci/test_agent_review_result.py +172 -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/design-system-check.rb +170 -0
- data/scripts/lib/audit.sh +42 -2
- data/scripts/lint-liquid-raw.rb +137 -0
- data/scripts/test/integration/mermaid +22 -8
- data/scripts/test/lib/run_tests.sh +3 -1
- data/scripts/test/lib/test_agent_review_result.sh +27 -0
- data/scripts/test/lib/test_visual_evidence_autogen.sh +24 -0
- data/scripts/translate.rb +94 -16
- metadata +48 -2
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% comment %} Feature: ZER0-043 {% endcomment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
{% comment %} ================================================ {% endcomment %}
|
|
3
|
+
{% comment %} CATEGORIES ANALYSIS SECTION {% endcomment %}
|
|
4
|
+
{% comment %} Top categories with post counts {% endcomment %}
|
|
5
|
+
{% comment %} ================================================ {% endcomment %}
|
|
6
6
|
<div id="categories" class="card shadow-sm h-100">
|
|
7
7
|
<div class="card-header bg-primary-subtle">
|
|
8
8
|
<div class="d-flex align-items-center justify-content-between">
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<div class="card-body p-0">
|
|
19
19
|
{% if site.data.content_statistics.categories and site.data.content_statistics.categories.size > 0 %}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
{% comment %} Categories List {% endcomment %}
|
|
22
22
|
<div class="list-group list-group-flush stats-taxonomy-list">
|
|
23
23
|
{% for category in site.data.content_statistics.categories %}
|
|
24
24
|
<div class="list-group-item d-flex justify-content-between align-items-center{% if forloop.index > 15 %} d-none stats-category-extra{% endif %}">
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
{% endfor %}
|
|
51
51
|
</div>
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
{% comment %} Show More Button if there are more categories {% endcomment %}
|
|
54
54
|
{% if site.data.content_statistics.categories.size > 15 %}
|
|
55
55
|
<div class="card-footer text-center">
|
|
56
56
|
<button class="btn btn-outline-primary btn-sm"
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
|
|
68
68
|
{% else %}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
{% comment %} No Categories Available {% endcomment %}
|
|
71
71
|
<div class="text-center py-5">
|
|
72
72
|
<i class="bi bi-folder-x display-4 text-muted mb-3"></i>
|
|
73
73
|
<h5 class="text-muted">No categories found</h5>
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
{% endif %}
|
|
78
78
|
</div>
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
{% comment %} Categories Summary Footer {% endcomment %}
|
|
81
81
|
{% if site.data.content_statistics.categories and site.data.content_statistics.categories.size > 0 %}
|
|
82
82
|
<div class="card-footer">
|
|
83
83
|
<div class="row text-center">
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
{% comment %} Feature: ZER0-043 {% endcomment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
{% comment %} ================================================ {% endcomment %}
|
|
3
|
+
{% comment %} STATS PAGE HEADER {% endcomment %}
|
|
4
|
+
{% comment %} Title, description, and metadata display {% endcomment %}
|
|
5
|
+
{% comment %} ================================================ {% endcomment %}
|
|
6
6
|
<div class="row mb-5">
|
|
7
7
|
<div class="col-12">
|
|
8
8
|
<div class="text-center mb-4">
|
|
9
|
-
|
|
9
|
+
{% comment %} Header Icon with Bootstrap classes {% endcomment %}
|
|
10
10
|
<div class="d-inline-flex align-items-center justify-content-center bg-primary-subtle rounded-circle p-4 mb-4 shadow-lg stats-header-icon">
|
|
11
11
|
<i class="bi bi-graph-up fs-1 text-primary stats-icon-rotate"></i>
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
{% comment %} Title with Bootstrap typography {% endcomment %}
|
|
15
15
|
<h1 class="display-3 mb-3 fw-bold text-primary">
|
|
16
16
|
{{ page.title | default: "Site Statistics Portal" }}
|
|
17
17
|
</h1>
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
{% comment %} Description with Bootstrap lead class {% endcomment %}
|
|
20
20
|
<p class="lead mb-4 fs-4">
|
|
21
21
|
{{ page.description | default: "Comprehensive analytics and insights from the knowledge base" }}
|
|
22
22
|
</p>
|
|
23
23
|
</div>
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
{% comment %} Last updated reflects build-time stats (generated_at or site.time) {% endcomment %}
|
|
26
26
|
{% if site.data.content_statistics %}
|
|
27
27
|
{% assign stats_last_updated = site.data.content_statistics.generated_at | default: site.time %}
|
|
28
28
|
<div class="alert alert-info shadow-sm d-flex align-items-center justify-content-between" role="alert">
|
|
@@ -59,13 +59,13 @@
|
|
|
59
59
|
</div>
|
|
60
60
|
</div>
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
62
|
+
{% comment %} ================================================ {% endcomment %}
|
|
63
|
+
{% comment %} STATS NAVIGATION BREADCRUMBS {% endcomment %}
|
|
64
|
+
{% comment %} Quick navigation within the stats page {% endcomment %}
|
|
65
|
+
{% comment %} ================================================ {% endcomment %}
|
|
66
66
|
<div class="row mb-5">
|
|
67
67
|
<div class="col-12">
|
|
68
|
-
|
|
68
|
+
{% comment %} Bootstrap breadcrumb {% endcomment %}
|
|
69
69
|
<nav aria-label="Statistics navigation">
|
|
70
70
|
<ol class="breadcrumb p-3 rounded shadow-sm">
|
|
71
71
|
<li class="breadcrumb-item">
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
</ol>
|
|
80
80
|
</nav>
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
{% comment %} Quick Jump Navigation using Bootstrap button group {% endcomment %}
|
|
83
83
|
{% if site.data.content_statistics %}
|
|
84
84
|
<div class="text-center">
|
|
85
85
|
<div class="btn-group btn-group-lg shadow-sm d-flex flex-wrap gap-2" role="group" aria-label="Statistics navigation">
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
<div class="card-body">
|
|
12
12
|
<div class="row g-4">
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
{% comment %} Content Overview Column {% endcomment %}
|
|
15
15
|
<div class="col-md-4">
|
|
16
16
|
<div class="h-100 p-3 bg-body-secondary rounded">
|
|
17
17
|
<h5 class="text-primary mb-3">
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
{% comment %} Top Performers Column {% endcomment %}
|
|
46
46
|
<div class="col-md-4">
|
|
47
47
|
<div class="h-100 p-3 bg-body-secondary rounded">
|
|
48
48
|
<h5 class="text-success mb-3">
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
{% endif %}
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
{% comment %} Content Distribution {% endcomment %}
|
|
71
71
|
<div class="mb-3">
|
|
72
72
|
<strong>Content Distribution:</strong><br>
|
|
73
73
|
{% if site.data.content_statistics.categories and site.data.content_statistics.categories.size > 0 %}
|
|
@@ -92,14 +92,14 @@
|
|
|
92
92
|
</div>
|
|
93
93
|
</div>
|
|
94
94
|
|
|
95
|
-
|
|
95
|
+
{% comment %} Data Health Column {% endcomment %}
|
|
96
96
|
<div class="col-md-4">
|
|
97
97
|
<div class="h-100 p-3 bg-body-secondary rounded">
|
|
98
98
|
<h5 class="text-warning-emphasis mb-3">
|
|
99
99
|
<i class="bi bi-heart-pulse me-2"></i> Data Health
|
|
100
100
|
</h5>
|
|
101
101
|
|
|
102
|
-
|
|
102
|
+
{% comment %} Last Update Status {% endcomment %}
|
|
103
103
|
<div class="mb-3">
|
|
104
104
|
<strong>Last Updated:</strong><br>
|
|
105
105
|
{% if site.data.content_statistics.generated_at %}
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
{% endif %}
|
|
112
112
|
</div>
|
|
113
113
|
|
|
114
|
-
|
|
114
|
+
{% comment %} Data Completeness {% endcomment %}
|
|
115
115
|
<div class="mb-3">
|
|
116
116
|
<strong>Data Completeness:</strong><br>
|
|
117
117
|
{% assign completeness_score = 0 %}
|
|
@@ -146,7 +146,7 @@
|
|
|
146
146
|
<small class="text-muted">Overall data quality</small>
|
|
147
147
|
</div>
|
|
148
148
|
|
|
149
|
-
|
|
149
|
+
{% comment %} Refresh Instructions {% endcomment %}
|
|
150
150
|
{% unless site.data.content_statistics %}
|
|
151
151
|
<div class="alert alert-warning alert-sm p-2" role="alert">
|
|
152
152
|
<small>
|
|
@@ -161,7 +161,7 @@
|
|
|
161
161
|
</div>
|
|
162
162
|
</div>
|
|
163
163
|
|
|
164
|
-
|
|
164
|
+
{% comment %} Action Buttons Footer {% endcomment %}
|
|
165
165
|
<div class="card-footer text-center">
|
|
166
166
|
<div class="btn-group" role="group">
|
|
167
167
|
<button type="button" class="btn btn-outline-primary" onclick="window.print()">
|
|
@@ -179,17 +179,17 @@
|
|
|
179
179
|
</div>
|
|
180
180
|
</div>
|
|
181
181
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
182
|
+
{% comment %} ================================================ {% endcomment %}
|
|
183
|
+
{% comment %} HELP MODAL {% endcomment %}
|
|
184
|
+
{% comment %} Information about statistics and data sources {% endcomment %}
|
|
185
|
+
{% comment %} ================================================ {% endcomment %}
|
|
186
186
|
<div class="modal fade" id="helpModal" tabindex="-1" aria-labelledby="helpModalLabel" aria-hidden="true">
|
|
187
187
|
<div class="modal-dialog">
|
|
188
188
|
<div class="modal-content">
|
|
189
189
|
<div class="modal-header bg-body border-bottom">
|
|
190
|
-
<
|
|
190
|
+
<h2 class="modal-title h5" id="helpModalLabel">
|
|
191
191
|
<i class="bi bi-question-circle"></i> Statistics Help
|
|
192
|
-
</
|
|
192
|
+
</h2>
|
|
193
193
|
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
194
194
|
</div>
|
|
195
195
|
<div class="modal-body">
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
{% comment %} ================================================ {% endcomment %}
|
|
2
|
+
{% comment %} NO DATA AVAILABLE SECTION {% endcomment %}
|
|
3
|
+
{% comment %} Error state when statistics are not generated {% endcomment %}
|
|
4
|
+
{% comment %} ================================================ {% endcomment %}
|
|
5
5
|
<div class="row justify-content-center">
|
|
6
6
|
<div class="col-lg-8">
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
{% comment %} Main Alert {% endcomment %}
|
|
9
9
|
<div class="alert alert-warning shadow-sm" role="alert">
|
|
10
10
|
<div class="text-center py-4">
|
|
11
11
|
<i class="bi bi-exclamation-triangle display-1 text-warning-emphasis mb-4"></i>
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
</div>
|
|
17
17
|
</div>
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
{% comment %} Instructions Card {% endcomment %}
|
|
20
20
|
<div class="card shadow-sm mb-4">
|
|
21
21
|
<div class="card-header bg-primary-subtle">
|
|
22
22
|
<h4 class="mb-0 text-primary-emphasis">
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
</div>
|
|
57
57
|
</div>
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
{% comment %} Alternative Setup Information {% endcomment %}
|
|
60
60
|
<div class="card shadow-sm mb-4">
|
|
61
61
|
<div class="card-header bg-info-subtle">
|
|
62
62
|
<h4 class="mb-0 text-info-emphasis">
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
</div>
|
|
91
91
|
</div>
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
{% comment %} Troubleshooting {% endcomment %}
|
|
94
94
|
<div class="card shadow-sm">
|
|
95
95
|
<div class="card-header bg-secondary-subtle">
|
|
96
96
|
<h4 class="mb-0 text-secondary-emphasis">
|
|
@@ -136,10 +136,10 @@
|
|
|
136
136
|
</div>
|
|
137
137
|
</div>
|
|
138
138
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
139
|
+
{% comment %} ================================================ {% endcomment %}
|
|
140
|
+
{% comment %} NO DATA PAGE ACTIONS {% endcomment %}
|
|
141
|
+
{% comment %} Additional helpful actions {% endcomment %}
|
|
142
|
+
{% comment %} ================================================ {% endcomment %}
|
|
143
143
|
<div class="row justify-content-center mt-4">
|
|
144
144
|
<div class="col-lg-8">
|
|
145
145
|
<div class="text-center">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{% comment %} Feature: ZER0-043 {% endcomment %}
|
|
2
2
|
<div id="overview" class="mb-5">
|
|
3
|
-
|
|
3
|
+
{% comment %} Section Header {% endcomment %}
|
|
4
4
|
<div class="text-center mb-4">
|
|
5
5
|
<h2 class="display-5 fw-bold text-primary mb-3">
|
|
6
6
|
<i class="bi bi-speedometer2 me-2"></i>
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
</p>
|
|
12
12
|
</div>
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
{% comment %} Stats Cards Grid {% endcomment %}
|
|
15
15
|
<div class="row g-4">
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
{% comment %} Total Posts Card {% endcomment %}
|
|
18
18
|
<div class="col-lg-3 col-md-6">
|
|
19
19
|
<div class="card h-100 shadow-sm stats-card">
|
|
20
20
|
<div class="card-body text-center p-4">
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
</div>
|
|
34
34
|
</div>
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
{% comment %} Total Categories Card {% endcomment %}
|
|
37
37
|
<div class="col-lg-3 col-md-6">
|
|
38
38
|
<div class="card h-100 shadow-sm stats-card">
|
|
39
39
|
<div class="card-body text-center p-4">
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
</div>
|
|
53
53
|
</div>
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
{% comment %} Total Tags Card {% endcomment %}
|
|
56
56
|
<div class="col-lg-3 col-md-6">
|
|
57
57
|
<div class="card h-100 shadow-sm stats-card">
|
|
58
58
|
<div class="card-body text-center p-4">
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
</div>
|
|
72
72
|
</div>
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
{% comment %} Total Words Card {% endcomment %}
|
|
75
75
|
<div class="col-lg-3 col-md-6">
|
|
76
76
|
<div class="card h-100 shadow-sm stats-card">
|
|
77
77
|
<div class="card-body text-center p-4">
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{% comment %} Feature: ZER0-043 {% endcomment %}
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
{% comment %} ================================================ {% endcomment %}
|
|
3
|
+
{% comment %} TAGS ANALYSIS SECTION {% endcomment %}
|
|
4
|
+
{% comment %} Top tags with usage counts {% endcomment %}
|
|
5
|
+
{% comment %} ================================================ {% endcomment %}
|
|
6
6
|
<div id="tags" class="card shadow-sm h-100">
|
|
7
7
|
<div class="card-header bg-success-subtle">
|
|
8
8
|
<div class="d-flex align-items-center justify-content-between">
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
<div class="card-body p-0">
|
|
19
19
|
{% if site.data.content_statistics.tags and site.data.content_statistics.tags.size > 0 %}
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
{% comment %} Tags List {% endcomment %}
|
|
22
22
|
<div class="list-group list-group-flush stats-taxonomy-list">
|
|
23
23
|
{% for tag in site.data.content_statistics.tags %}
|
|
24
24
|
<div class="list-group-item d-flex justify-content-between align-items-center{% if forloop.index > 15 %} d-none stats-tag-extra{% endif %}">
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
{% endunless %}
|
|
67
67
|
{% endif %}
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
{% comment %} Tag Cloud Section {% endcomment %}
|
|
70
70
|
<div class="card-footer">
|
|
71
71
|
<h6 class="mb-3 fw-bold">
|
|
72
72
|
<i class="bi bi-cloud"></i> Tag Cloud
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
|
|
101
101
|
{% else %}
|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
{% comment %} No Tags Available {% endcomment %}
|
|
104
104
|
<div class="text-center py-5">
|
|
105
105
|
<i class="bi bi-tags-fill display-4 text-muted mb-3"></i>
|
|
106
106
|
<h5 class="text-muted">No tags found</h5>
|
|
@@ -110,7 +110,7 @@
|
|
|
110
110
|
{% endif %}
|
|
111
111
|
</div>
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
{% comment %} Tags Summary Footer {% endcomment %}
|
|
114
114
|
{% if site.data.content_statistics.tags and site.data.content_statistics.tags.size > 0 %}
|
|
115
115
|
<div class="card-footer">
|
|
116
116
|
<div class="row text-center">
|
data/_layouts/404.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Feature: ZER0-047
|
|
3
3
|
layout: root
|
|
4
4
|
---
|
|
5
|
-
|
|
5
|
+
{% comment %}
|
|
6
6
|
===================================================================
|
|
7
7
|
404 LAYOUT - Not-found page with unconfigured-site setup mode
|
|
8
8
|
===================================================================
|
|
@@ -30,14 +30,14 @@ layout: root
|
|
|
30
30
|
Extra content: anything in the stub page's body renders below the
|
|
31
31
|
standard 404 content ({{ content }} at the bottom).
|
|
32
32
|
===================================================================
|
|
33
|
-
|
|
33
|
+
{% endcomment %}
|
|
34
34
|
|
|
35
35
|
{% include components/setup-check.html %}
|
|
36
36
|
|
|
37
37
|
{% if site_needs_setup %}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
{% comment %} ================================================================== {% endcomment %}
|
|
39
|
+
{% comment %} SETUP MODE: Site is not yet configured — guide the user {% endcomment %}
|
|
40
|
+
{% comment %} ================================================================== {% endcomment %}
|
|
41
41
|
<div class="container-lg py-5">
|
|
42
42
|
<div class="text-center mb-5">
|
|
43
43
|
<i class="bi bi-gear-wide-connected display-1 text-primary"></i>
|
|
@@ -48,7 +48,7 @@ layout: root
|
|
|
48
48
|
</p>
|
|
49
49
|
</div>
|
|
50
50
|
|
|
51
|
-
|
|
51
|
+
{% comment %} Quick-detect: user site vs project site {% endcomment %}
|
|
52
52
|
<div class="row justify-content-center mb-4">
|
|
53
53
|
<div class="col-lg-8">
|
|
54
54
|
<div class="alert alert-info d-flex align-items-start" role="alert">
|
|
@@ -69,7 +69,7 @@ layout: root
|
|
|
69
69
|
</div>
|
|
70
70
|
</div>
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
{% comment %} Step-by-step setup instructions {% endcomment %}
|
|
73
73
|
<div class="row justify-content-center">
|
|
74
74
|
<div class="col-lg-8">
|
|
75
75
|
|
|
@@ -170,7 +170,7 @@ git push origin main</code></pre>
|
|
|
170
170
|
</div>
|
|
171
171
|
</div>
|
|
172
172
|
|
|
173
|
-
|
|
173
|
+
{% comment %} Resources {% endcomment %}
|
|
174
174
|
<div class="text-center mt-4">
|
|
175
175
|
<a href="https://github.com/bamr87/zer0-mistakes" class="btn btn-dark me-2" target="_blank" rel="noopener">
|
|
176
176
|
<i class="bi bi-github me-1"></i> Theme Repository
|
|
@@ -188,9 +188,9 @@ git push origin main</code></pre>
|
|
|
188
188
|
</div>
|
|
189
189
|
|
|
190
190
|
{% else %}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
{% comment %} ================================================================== {% endcomment %}
|
|
192
|
+
{% comment %} NORMAL 404: Site is configured — show standard error page {% endcomment %}
|
|
193
|
+
{% comment %} ================================================================== {% endcomment %}
|
|
194
194
|
<div class="container text-center mt-5">
|
|
195
195
|
<h1 class="display-1 text-danger">404</h1>
|
|
196
196
|
|
|
@@ -227,33 +227,47 @@ git push origin main</code></pre>
|
|
|
227
227
|
</div>
|
|
228
228
|
|
|
229
229
|
<a class="btn btn-danger mt-4" href="{{ '/' | relative_url }}">Return to Homepage</a>
|
|
230
|
-
{
|
|
230
|
+
{%- comment -%}
|
|
231
|
+
Report the dead URL through the page-feedback widget rather than through a
|
|
232
|
+
third hand-rolled issue-URL builder. This page used to encode its own
|
|
233
|
+
title and body — a two-line report with no page context, no environment,
|
|
234
|
+
and no captured errors — which is exactly the report a maintainer cannot
|
|
235
|
+
act on. Pre-typed `fix-page`; the missing URL rides in as `extra`, and the
|
|
236
|
+
widget attaches the rest (UPS-FB-09).
|
|
237
|
+
|
|
238
|
+
Still a real link, so it works with the widget disabled or JavaScript off:
|
|
239
|
+
page-feedback.js intercepts [data-pf-open] only when it is running.
|
|
240
|
+
{%- endcomment -%}
|
|
241
|
+
{% assign _404_repo = site.repository | default: site.github_user | append: '/' | append: site.repository_name %}
|
|
242
|
+
{% if site.page_feedback.enabled and _404_repo != '/' %}
|
|
231
243
|
<div class="mt-3">
|
|
232
|
-
{% capture _issue_title %}404 Error{% endcapture %}
|
|
233
|
-
{% capture _issue_body %}I encountered a 404 error on this site. Please investigate.{% endcapture %}
|
|
234
244
|
<a id="github-issue-link"
|
|
235
245
|
class="btn btn-secondary"
|
|
236
|
-
href="https://github.com/{{
|
|
246
|
+
href="https://github.com/{{ _404_repo }}/issues/new?template=page_improvement.yml&labels=page-feedback"
|
|
247
|
+
data-pf-open
|
|
248
|
+
data-pf-type="fix-page"
|
|
237
249
|
target="_blank"
|
|
238
250
|
rel="noopener noreferrer">
|
|
239
|
-
|
|
251
|
+
Report this broken link
|
|
240
252
|
</a>
|
|
241
253
|
</div>
|
|
242
254
|
<script>
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
var
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
255
|
+
// The widget cannot know which URL 404'd — this page can. Hand it over as
|
|
256
|
+
// the pre-filled description the moment the reader opens the dialog.
|
|
257
|
+
document.addEventListener('click', function (event) {
|
|
258
|
+
var trigger = event.target.closest && event.target.closest('#github-issue-link');
|
|
259
|
+
if (!trigger || !window.zer0PageFeedback) return;
|
|
260
|
+
var missing = window.location.href;
|
|
261
|
+
trigger.setAttribute('data-pf-description',
|
|
262
|
+
'This URL returned 404: ' + missing + (document.referrer ? '\nLinked from: ' + document.referrer : ''));
|
|
263
|
+
}, true);
|
|
250
264
|
</script>
|
|
251
265
|
{% endif %}
|
|
252
266
|
</div>
|
|
253
267
|
{% endif %}
|
|
254
268
|
|
|
255
269
|
{% if content != blank %}
|
|
256
|
-
|
|
270
|
+
{% comment %} Extra content from the consumer's 404 stub body {% endcomment %}
|
|
257
271
|
<div class="container mt-4">
|
|
258
272
|
{{ content }}
|
|
259
273
|
</div>
|
data/_layouts/README.md
CHANGED
|
@@ -18,6 +18,8 @@ root.html (base template)
|
|
|
18
18
|
├── landing.html (landing pages)
|
|
19
19
|
├── book.html (book landing page - cover hero + table of contents)
|
|
20
20
|
├── book-story.html (immersive picture-book story pages)
|
|
21
|
+
├── cookbook.html (cookbook landing page - cover + recipe index by course)
|
|
22
|
+
├── recipe.html (one recipe - fact bar, scaler, ingredients, method, ratio)
|
|
21
23
|
├── stats.html (statistics dashboard)
|
|
22
24
|
└── index.html (search pages)
|
|
23
25
|
```
|
data/_layouts/admin.html
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# Features: ZER0-019, ZER0-050
|
|
3
3
|
layout: root
|
|
4
4
|
---
|
|
5
|
-
|
|
5
|
+
{% comment %}
|
|
6
6
|
===================================================================
|
|
7
7
|
ADMIN LAYOUT - Administrative and configuration page layout
|
|
8
8
|
===================================================================
|
|
@@ -36,7 +36,7 @@ layout: root
|
|
|
36
36
|
- Bootstrap 5 grid, offcanvas, nav components
|
|
37
37
|
- Bootstrap Icons
|
|
38
38
|
===================================================================
|
|
39
|
-
|
|
39
|
+
{% endcomment %}
|
|
40
40
|
|
|
41
41
|
{% comment %} ════════════════════════════════════════════════════════ {% endcomment %}
|
|
42
42
|
{% comment %} ADMIN NAV DATA {% endcomment %}
|
|
@@ -46,13 +46,13 @@ layout: root
|
|
|
46
46
|
|
|
47
47
|
{% assign show_sidebar = page.admin_nav | default: true %}
|
|
48
48
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
49
|
+
{% comment %} ================================================ {% endcomment %}
|
|
50
|
+
{% comment %} ADMIN PAGE HEADER {% endcomment %}
|
|
51
|
+
{% comment %} Breadcrumbs + title bar (no author/read-time) {% endcomment %}
|
|
52
|
+
{% comment %} ================================================ {% endcomment %}
|
|
53
53
|
<div class="bg-body-tertiary border-bottom">
|
|
54
54
|
<div class="container-xxl py-3">
|
|
55
|
-
|
|
55
|
+
{% comment %} Breadcrumbs {% endcomment %}
|
|
56
56
|
<nav aria-label="breadcrumb">
|
|
57
57
|
<ol class="breadcrumb mb-2 small">
|
|
58
58
|
<li class="breadcrumb-item"><a href="{{ '/' | relative_url }}"><i class="bi bi-house-door"></i> Home</a></li>
|
|
@@ -61,9 +61,9 @@ layout: root
|
|
|
61
61
|
</ol>
|
|
62
62
|
</nav>
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
{% comment %} Title row {% endcomment %}
|
|
65
65
|
<div class="d-flex align-items-center">
|
|
66
|
-
|
|
66
|
+
{% comment %} Mobile sidebar toggle {% endcomment %}
|
|
67
67
|
{% if show_sidebar %}
|
|
68
68
|
<button class="btn btn-outline-secondary me-3 d-lg-none"
|
|
69
69
|
type="button"
|
|
@@ -90,7 +90,7 @@ layout: root
|
|
|
90
90
|
{% endif %}
|
|
91
91
|
</div>
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
{% comment %} Page-level action buttons (from front matter admin_actions) {% endcomment %}
|
|
94
94
|
{% if page.admin_actions %}
|
|
95
95
|
<div class="d-none d-md-flex gap-2 ms-3">
|
|
96
96
|
{% for action in page.admin_actions %}
|
|
@@ -106,20 +106,20 @@ layout: root
|
|
|
106
106
|
</div>
|
|
107
107
|
</div>
|
|
108
108
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
{% comment %} ================================================ {% endcomment %}
|
|
110
|
+
{% comment %} MAIN LAYOUT: SIDEBAR + CONTENT {% endcomment %}
|
|
111
|
+
{% comment %} ================================================ {% endcomment %}
|
|
112
112
|
<div class="container-xxl py-4">
|
|
113
113
|
<div class="row">
|
|
114
114
|
|
|
115
115
|
{% if show_sidebar %}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
116
|
+
{% comment %} ════════════════════════════════ {% endcomment %}
|
|
117
|
+
{% comment %} ADMIN SIDEBAR {% endcomment %}
|
|
118
|
+
{% comment %} Desktop: sticky column {% endcomment %}
|
|
119
|
+
{% comment %} Mobile: offcanvas {% endcomment %}
|
|
120
|
+
{% comment %} ════════════════════════════════ {% endcomment %}
|
|
121
121
|
|
|
122
|
-
|
|
122
|
+
{% comment %} Desktop sidebar (lg+) {% endcomment %}
|
|
123
123
|
<div class="col-lg-3 d-none d-lg-block">
|
|
124
124
|
<div class="position-sticky" style="top: 5rem;">
|
|
125
125
|
<nav class="admin-sidebar" aria-label="Admin navigation">
|
|
@@ -131,13 +131,13 @@ layout: root
|
|
|
131
131
|
</div>
|
|
132
132
|
</div>
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
{% comment %} Mobile offcanvas sidebar {% endcomment %}
|
|
135
135
|
<div class="offcanvas offcanvas-start d-lg-none" tabindex="-1"
|
|
136
136
|
id="adminSidebar" aria-labelledby="adminSidebarLabel">
|
|
137
137
|
<div class="offcanvas-header">
|
|
138
|
-
<
|
|
138
|
+
<h2 class="offcanvas-title h5" id="adminSidebarLabel">
|
|
139
139
|
<i class="bi bi-sliders me-1"></i> Administration
|
|
140
|
-
</
|
|
140
|
+
</h2>
|
|
141
141
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
|
142
142
|
</div>
|
|
143
143
|
<div class="offcanvas-body">
|
|
@@ -145,7 +145,7 @@ layout: root
|
|
|
145
145
|
</div>
|
|
146
146
|
</div>
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
{% comment %} Main content area (with sidebar) {% endcomment %}
|
|
149
149
|
<div class="col-lg-9">
|
|
150
150
|
<div id="admin-content">
|
|
151
151
|
{{ content }}
|
|
@@ -154,7 +154,7 @@ layout: root
|
|
|
154
154
|
|
|
155
155
|
{% else %}
|
|
156
156
|
|
|
157
|
-
|
|
157
|
+
{% comment %} Full-width content (no sidebar) {% endcomment %}
|
|
158
158
|
<div class="col-12">
|
|
159
159
|
<div id="admin-content">
|
|
160
160
|
{{ content }}
|