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.
Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1143 -13
  3. data/_data/README.md +2 -0
  4. data/_data/ai.yml +5 -3
  5. data/_data/ai_pricing.yml +36 -0
  6. data/_data/backlog.yml +507 -2
  7. data/_data/consumers.yml +157 -9
  8. data/_data/features.yml +303 -20
  9. data/_data/feedback_types.yml +17 -12
  10. data/_data/i18n/fr.yml +12 -7
  11. data/_data/i18n/manifest.yml +39 -12
  12. data/_data/ingredient_densities.yml +122 -0
  13. data/_data/landing.yml +5 -2
  14. data/_data/navigation/main.yml +16 -0
  15. data/_data/navigation/quickstart.yml +4 -0
  16. data/_data/recipe_courses.yml +64 -0
  17. data/_data/site_builder.yml +874 -0
  18. data/_data/theme-manifest.yml +160 -124
  19. data/_data/ui-text.yml +26 -0
  20. data/_includes/README.md +26 -2
  21. data/_includes/analytics/posthog.html +2 -2
  22. data/_includes/components/admin-links.html +2 -2
  23. data/_includes/components/admin-tabs.html +2 -2
  24. data/_includes/components/ai-chat.html +14 -11
  25. data/_includes/components/analytics-dashboard.html +8 -8
  26. data/_includes/components/author-bio.html +1 -1
  27. data/_includes/components/author-card.html +10 -2
  28. data/_includes/components/author-eeat.html +4 -4
  29. data/_includes/components/background-customizer.html +10 -10
  30. data/_includes/components/background-image.html +114 -0
  31. data/_includes/components/background-settings.html +28 -15
  32. data/_includes/components/collection-manager.html +5 -5
  33. data/_includes/components/component-showcase.html +13 -13
  34. data/_includes/components/config-editor.html +12 -12
  35. data/_includes/components/config-viewer.html +8 -8
  36. data/_includes/components/cookie-consent.html +15 -15
  37. data/_includes/components/cta-button.html +7 -2
  38. data/_includes/components/dev-shortcuts.html +7 -7
  39. data/_includes/components/env-dashboard.html +8 -8
  40. data/_includes/components/env-switcher.html +9 -9
  41. data/_includes/components/feature-card.html +2 -2
  42. data/_includes/components/halfmoon.html +2 -2
  43. data/_includes/components/info-section.html +42 -37
  44. data/_includes/components/js-cdn.html +15 -15
  45. data/_includes/components/language-toggle.html +168 -21
  46. data/_includes/components/mermaid.html +72 -435
  47. data/_includes/components/nanobar.html +5 -5
  48. data/_includes/components/nav-editor.html +2 -2
  49. data/_includes/components/nav-export.html +2 -2
  50. data/_includes/components/nav-overview.html +2 -2
  51. data/_includes/components/page-feedback.html +45 -30
  52. data/_includes/components/page-views-init.html +55 -0
  53. data/_includes/components/page-views.html +33 -0
  54. data/_includes/components/post-card.html +22 -22
  55. data/_includes/components/post-type-badge.html +2 -2
  56. data/_includes/components/powered-by.html +2 -2
  57. data/_includes/components/preview-image.html +6 -0
  58. data/_includes/components/quick-index.html +2 -2
  59. data/_includes/components/recipe-card.html +67 -0
  60. data/_includes/components/recipe-duration.html +50 -0
  61. data/_includes/components/recipe-grams.html +58 -0
  62. data/_includes/components/recipe-index.html +96 -0
  63. data/_includes/components/recipe-ingredients.html +90 -0
  64. data/_includes/components/recipe-meta.html +96 -0
  65. data/_includes/components/recipe-nutrition.html +57 -0
  66. data/_includes/components/recipe-qty.html +73 -0
  67. data/_includes/components/recipe-ratio.html +151 -0
  68. data/_includes/components/recipe-scaler.html +73 -0
  69. data/_includes/components/recipe-steps.html +86 -0
  70. data/_includes/components/recipe-temp.html +45 -0
  71. data/_includes/components/search-modal.html +29 -4
  72. data/_includes/components/searchbar.html +2 -2
  73. data/_includes/components/shortcuts-modal.html +3 -0
  74. data/_includes/components/svg-background.html +2 -2
  75. data/_includes/components/theme-customizer.html +2 -2
  76. data/_includes/components/theme-info.html +14 -7
  77. data/_includes/components/theme-preview-gallery.html +22 -22
  78. data/_includes/content/giscus.html +2 -2
  79. data/_includes/content/intro.html +8 -8
  80. data/_includes/content/jsonld-faq.html +2 -2
  81. data/_includes/content/jsonld-software.html +24 -5
  82. data/_includes/content/seo.html +4 -4
  83. data/_includes/content/sitemap.html +27 -27
  84. data/_includes/content/toc.html +183 -183
  85. data/_includes/core/branding.html +6 -6
  86. data/_includes/core/console-capture.html +32 -74
  87. data/_includes/core/favicon.html +49 -7
  88. data/_includes/core/footer-fabs.html +17 -3
  89. data/_includes/core/footer.html +49 -34
  90. data/_includes/core/head.html +110 -86
  91. data/_includes/core/header.html +76 -54
  92. data/_includes/docs/bootstrap-docs.html +8 -8
  93. data/_includes/landing/landing-install-cards.html +2 -2
  94. data/_includes/landing/landing-quick-links.html +1 -1
  95. data/_includes/navigation/admin-nav.html +2 -2
  96. data/_includes/navigation/nav-tree.html +8 -8
  97. data/_includes/navigation/navbar.html +12 -12
  98. data/_includes/navigation/section-sidebar.html +109 -27
  99. data/_includes/navigation/sidebar-config.html +36 -2
  100. data/_includes/navigation/sidebar-left.html +17 -16
  101. data/_includes/navigation/sidebar-right.html +8 -7
  102. data/_includes/obsidian/full-graph.html +2 -2
  103. data/_includes/setup/claude-session.html +72 -0
  104. data/_includes/setup/prereq-checklist.html +90 -0
  105. data/_includes/setup/wizard.html +924 -222
  106. data/_includes/stats/stats-categories.html +8 -8
  107. data/_includes/stats/stats-header.html +14 -14
  108. data/_includes/stats/stats-metrics.html +14 -14
  109. data/_includes/stats/stats-no-data.html +12 -12
  110. data/_includes/stats/stats-overview.html +6 -6
  111. data/_includes/stats/stats-tags.html +8 -8
  112. data/_layouts/404.html +38 -24
  113. data/_layouts/README.md +2 -0
  114. data/_layouts/admin.html +24 -24
  115. data/_layouts/article.html +43 -33
  116. data/_layouts/author.html +20 -20
  117. data/_layouts/authors.html +2 -2
  118. data/_layouts/book-abc.html +12 -12
  119. data/_layouts/book-story.html +15 -15
  120. data/_layouts/book.html +12 -12
  121. data/_layouts/collection.html +33 -33
  122. data/_layouts/cookbook.html +88 -0
  123. data/_layouts/default.html +31 -28
  124. data/_layouts/home.html +23 -23
  125. data/_layouts/index.html +10 -10
  126. data/_layouts/landing.html +17 -17
  127. data/_layouts/news.html +44 -44
  128. data/_layouts/note.html +38 -38
  129. data/_layouts/notebook.html +34 -34
  130. data/_layouts/recipe.html +274 -0
  131. data/_layouts/root.html +92 -55
  132. data/_layouts/section.html +62 -33
  133. data/_layouts/setup.html +3 -3
  134. data/_layouts/sitemap-collection.html +49 -49
  135. data/_layouts/stats.html +40 -40
  136. data/_layouts/tag.html +12 -12
  137. data/_layouts/welcome.html +21 -21
  138. data/_sass/components/_callout.scss +1 -1
  139. data/_sass/components/_footer.scss +37 -1
  140. data/_sass/components/_mermaid.scss +375 -0
  141. data/_sass/components/_page-views.scss +36 -0
  142. data/_sass/components/_recipe.scss +506 -0
  143. data/_sass/components/_setup-wizard.scss +764 -0
  144. data/_sass/components/_ui-enhancements.scss +6 -6
  145. data/_sass/core/_navbar.scss +261 -46
  146. data/_sass/layouts/_landing.scss +2 -2
  147. data/_sass/layouts/_navbar-extras.scss +14 -4
  148. data/_sass/tokens/_color.scss +6 -0
  149. data/_sass/tokens/_index.scss +2 -0
  150. data/_sass/tokens/_radius.scss +21 -0
  151. data/_sass/tokens/_typography.scss +4 -0
  152. data/_sass/utilities/_focus.scss +14 -0
  153. data/assets/css/main.scss +4 -0
  154. data/assets/js/ai-chat.js +47 -5
  155. data/assets/js/fleet-feedback-capture.js +124 -0
  156. data/assets/js/fleet-feedback.js +853 -0
  157. data/assets/js/mermaid-diagrams.js +1267 -0
  158. data/assets/js/modules/navigation/config.js +9 -6
  159. data/assets/js/modules/navigation/navbar.js +55 -0
  160. data/assets/js/modules/navigation/scroll-spy.js +315 -80
  161. data/assets/js/modules/theme/appearance.js +8 -2
  162. data/assets/js/obsidian-wiki-links.js +8 -3
  163. data/assets/js/page-feedback.js +125 -192
  164. data/assets/js/page-views.js +372 -0
  165. data/assets/js/recipe-scaler.js +501 -0
  166. data/assets/js/search-modal.js +36 -0
  167. data/assets/js/setup-wizard.js +2279 -226
  168. data/assets/js/site-builder.js +1834 -0
  169. data/assets/js/ui-enhancements.js +11 -3
  170. data/scripts/README.md +44 -0
  171. data/scripts/ai/README.md +38 -0
  172. data/scripts/ai/api_call.rb +124 -0
  173. data/scripts/ai/usage.rb +314 -0
  174. data/scripts/ai/usage_report.rb +225 -0
  175. data/scripts/bin/audit-consumer +39 -7
  176. data/scripts/bin/giscus-discussions +213 -14
  177. data/scripts/bin/manifest +35 -12
  178. data/scripts/ci/agent_review_result.py +164 -0
  179. data/scripts/ci/test_agent_review_result.py +172 -0
  180. data/scripts/ci/test_visual_evidence_autogen.py +341 -0
  181. data/scripts/ci/visual_evidence_autogen.py +1060 -0
  182. data/scripts/content-review.rb +20 -1
  183. data/scripts/design-system-check.rb +170 -0
  184. data/scripts/lib/audit.sh +42 -2
  185. data/scripts/lint-liquid-raw.rb +137 -0
  186. data/scripts/test/integration/mermaid +22 -8
  187. data/scripts/test/lib/run_tests.sh +3 -1
  188. data/scripts/test/lib/test_agent_review_result.sh +27 -0
  189. data/scripts/test/lib/test_visual_evidence_autogen.sh +24 -0
  190. data/scripts/translate.rb +94 -16
  191. metadata +48 -2
@@ -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
- <!-- SITEMAP HEADER AND OVERVIEW -->
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
- <!-- Page Content -->
43
+ {% comment %} Page Content {% endcomment %}
44
44
  {{ content }}
45
45
 
46
- <!-- ================================================ -->
47
- <!-- SITE STATISTICS OVERVIEW -->
48
- <!-- High-level metrics and site health -->
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
- <!-- Published URLs (same count as Interactive Site Map table rows) -->
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
- <!-- Total Posts -->
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
- <!-- Collections Count -->
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
- <!-- Data Files -->
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
- <!-- Categories -->
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
- <!-- Total Content (same as published outputs; avoids double-counting posts/collections) -->
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
- <!-- ENHANCED SITEMAP COMPONENT -->
137
- <!-- Interactive search, filtering, and navigation -->
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
- <!-- COLLECTIONS OVERVIEW -->
157
- <!-- Detailed view of all Jekyll collections -->
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
- <!-- SITE STRUCTURE ANALYSIS -->
224
- <!-- Detailed breakdown of site organization -->
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
- <!-- Categories Analysis -->
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
- <!-- Tags Analysis -->
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
- <!-- RECENT ACTIVITY OVERVIEW -->
294
- <!-- Latest content and updates -->
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
- <!-- Recent Posts -->
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
- <!-- Recent Pages -->
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
- <!-- Quick Stats -->
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
- <!-- SITE HEALTH & PERFORMANCE -->
371
- <!-- Optional advanced statistics if data available -->
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
- <!-- Include existing stats components if available -->
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
- <!-- ENHANCED SITEMAP JAVASCRIPT -->
409
- <!-- Additional functionality for comprehensive view -->
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
- <!-- SITEMAP-SPECIFIC STYLES -->
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%);
data/_layouts/stats.html CHANGED
@@ -2,7 +2,7 @@
2
2
  # Features: ZER0-019, ZER0-043
3
3
  layout: root
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  STATS LAYOUT - Statistics dashboard layout
8
8
  ===================================================================
@@ -39,68 +39,68 @@ layout: root
39
39
  - card: Card components for metric display
40
40
  - badge: Badges for counts and labels
41
41
  ===================================================================
42
- -->
42
+ {% endcomment %}
43
43
 
44
- <!-- ================================================ -->
45
- <!-- STATS LAYOUT CONTAINER -->
46
- <!-- Full-width responsive container for dashboard -->
47
- <!-- ================================================ -->
44
+ {% comment %} ================================================ {% endcomment %}
45
+ {% comment %} STATS LAYOUT CONTAINER {% endcomment %}
46
+ {% comment %} Full-width responsive container for dashboard {% endcomment %}
47
+ {% comment %} ================================================ {% endcomment %}
48
48
  <div class="container-fluid py-4">
49
49
 
50
- <!-- ================================================ -->
51
- <!-- STATS HEADER SECTION -->
52
- <!-- Page title, description, and metadata -->
53
- <!-- ================================================ -->
50
+ {% comment %} ================================================ {% endcomment %}
51
+ {% comment %} STATS HEADER SECTION {% endcomment %}
52
+ {% comment %} Page title, description, and metadata {% endcomment %}
53
+ {% comment %} ================================================ {% endcomment %}
54
54
  {% include stats/stats-header.html %}
55
55
 
56
- <!-- ================================================ -->
57
- <!-- STATS VALIDATION CHECK -->
58
- <!-- Verify data availability before rendering -->
59
- <!-- ================================================ -->
56
+ {% comment %} ================================================ {% endcomment %}
57
+ {% comment %} STATS VALIDATION CHECK {% endcomment %}
58
+ {% comment %} Verify data availability before rendering {% endcomment %}
59
+ {% comment %} ================================================ {% endcomment %}
60
60
  {% if site.data.content_statistics %}
61
61
 
62
- <!-- ================================================ -->
63
- <!-- OVERVIEW METRICS SECTION -->
64
- <!-- High-level statistics cards -->
65
- <!-- ================================================ -->
62
+ {% comment %} ================================================ {% endcomment %}
63
+ {% comment %} OVERVIEW METRICS SECTION {% endcomment %}
64
+ {% comment %} High-level statistics cards {% endcomment %}
65
+ {% comment %} ================================================ {% endcomment %}
66
66
  {% include stats/stats-overview.html %}
67
67
 
68
- <!-- ================================================ -->
69
- <!-- DETAILED ANALYTICS SECTIONS -->
70
- <!-- Categories, tags, and metrics breakdown -->
71
- <!-- ================================================ -->
68
+ {% comment %} ================================================ {% endcomment %}
69
+ {% comment %} DETAILED ANALYTICS SECTIONS {% endcomment %}
70
+ {% comment %} Categories, tags, and metrics breakdown {% endcomment %}
71
+ {% comment %} ================================================ {% endcomment %}
72
72
  <div class="row g-4 mb-5">
73
- <!-- Categories Analysis -->
73
+ {% comment %} Categories Analysis {% endcomment %}
74
74
  <div class="col-lg-6">
75
75
  {% include stats/stats-categories.html %}
76
76
  </div>
77
77
 
78
- <!-- Tags Analysis -->
78
+ {% comment %} Tags Analysis {% endcomment %}
79
79
  <div class="col-lg-6">
80
80
  {% include stats/stats-tags.html %}
81
81
  </div>
82
82
  </div>
83
83
 
84
- <!-- ================================================ -->
85
- <!-- ADDITIONAL METRICS SECTION -->
86
- <!-- Quick facts and summary information -->
87
- <!-- ================================================ -->
84
+ {% comment %} ================================================ {% endcomment %}
85
+ {% comment %} ADDITIONAL METRICS SECTION {% endcomment %}
86
+ {% comment %} Quick facts and summary information {% endcomment %}
87
+ {% comment %} ================================================ {% endcomment %}
88
88
  {% include stats/stats-metrics.html %}
89
89
 
90
90
  {% else %}
91
91
 
92
- <!-- ================================================ -->
93
- <!-- NO DATA AVAILABLE SECTION -->
94
- <!-- Error state when statistics are not generated -->
95
- <!-- ================================================ -->
92
+ {% comment %} ================================================ {% endcomment %}
93
+ {% comment %} NO DATA AVAILABLE SECTION {% endcomment %}
94
+ {% comment %} Error state when statistics are not generated {% endcomment %}
95
+ {% comment %} ================================================ {% endcomment %}
96
96
  {% include stats/stats-no-data.html %}
97
97
 
98
98
  {% endif %}
99
99
 
100
- <!-- ================================================ -->
101
- <!-- MAIN CONTENT AREA -->
102
- <!-- Additional page content below statistics -->
103
- <!-- ================================================ -->
100
+ {% comment %} ================================================ {% endcomment %}
101
+ {% comment %} MAIN CONTENT AREA {% endcomment %}
102
+ {% comment %} Additional page content below statistics {% endcomment %}
103
+ {% comment %} ================================================ {% endcomment %}
104
104
  {% if content and content != empty %}
105
105
  <div class="row mt-5">
106
106
  <div class="col-12">
@@ -115,10 +115,10 @@ layout: root
115
115
 
116
116
  </div>
117
117
 
118
- <!-- ================================================ -->
119
- <!-- STATS-SPECIFIC JAVASCRIPT -->
120
- <!-- Initialize charts and interactive components -->
121
- <!-- ================================================ -->
118
+ {% comment %} ================================================ {% endcomment %}
119
+ {% comment %} STATS-SPECIFIC JAVASCRIPT {% endcomment %}
120
+ {% comment %} Initialize charts and interactive components {% endcomment %}
121
+ {% comment %} ================================================ {% endcomment %}
122
122
  <script>
123
123
  document.addEventListener('DOMContentLoaded', function() {
124
124
  // Initialize tooltips for stats elements
data/_layouts/tag.html CHANGED
@@ -2,7 +2,7 @@
2
2
  # Feature: ZER0-019
3
3
  layout: default
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  TAG LAYOUT - Tag archive page displaying posts by tag
8
8
  ===================================================================
@@ -27,11 +27,11 @@ layout: default
27
27
  - _includes/components/post-card.html: Reusable post card component
28
28
  - Bootstrap 5 grid and badge components
29
29
  ===================================================================
30
- -->
30
+ {% endcomment %}
31
31
 
32
- <!-- ========================== -->
33
- <!-- TAG HEADER SECTION -->
34
- <!-- ========================== -->
32
+ {% comment %} ========================== {% endcomment %}
33
+ {% comment %} TAG HEADER SECTION {% endcomment %}
34
+ {% comment %} ========================== {% endcomment %}
35
35
  <header class="tag-header mb-5">
36
36
  <nav aria-label="breadcrumb" class="mb-3">
37
37
  <ol class="breadcrumb">
@@ -60,9 +60,9 @@ layout: default
60
60
  {{ content }}
61
61
  </header>
62
62
 
63
- <!-- ========================== -->
64
- <!-- TAGGED POSTS GRID -->
65
- <!-- ========================== -->
63
+ {% comment %} ========================== {% endcomment %}
64
+ {% comment %} TAGGED POSTS GRID {% endcomment %}
65
+ {% comment %} ========================== {% endcomment %}
66
66
  <section class="tagged-posts">
67
67
  {% if tag_posts.size > 0 %}
68
68
  <div class="row row-cols-1 row-cols-md-2 row-cols-lg-3 g-4">
@@ -71,7 +71,7 @@ layout: default
71
71
  {% endfor %}
72
72
  </div>
73
73
  {% else %}
74
- <!-- Empty state -->
74
+ {% comment %} Empty state {% endcomment %}
75
75
  <div class="text-center py-5">
76
76
  <i class="bi bi-tag fs-1 text-muted"></i>
77
77
  <p class="text-muted mt-3">No posts with this tag yet.</p>
@@ -82,9 +82,9 @@ layout: default
82
82
  {% endif %}
83
83
  </section>
84
84
 
85
- <!-- ========================== -->
86
- <!-- RELATED TAGS -->
87
- <!-- ========================== -->
85
+ {% comment %} ========================== {% endcomment %}
86
+ {% comment %} RELATED TAGS {% endcomment %}
87
+ {% comment %} ========================== {% endcomment %}
88
88
  {% comment %} Find tags that appear with this tag {% endcomment %}
89
89
  {% assign related_tags = "" | split: "" %}
90
90
  {% for post in tag_posts %}
@@ -2,7 +2,7 @@
2
2
  # Features: ZER0-019, ZER0-046
3
3
  layout: root
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  WELCOME LAYOUT — Onboarding landing page for new sites
8
8
  ===================================================================
@@ -36,15 +36,15 @@ layout: root
36
36
  Gemfile (github-pages + jekyll-remote-theme)
37
37
  index.md (this layout)
38
38
  ===================================================================
39
- -->
39
+ {% endcomment %}
40
40
 
41
41
  {% include components/setup-check.html %}
42
42
 
43
43
  {% if site_needs_setup %}
44
44
 
45
- <!-- ============================================================ -->
46
- <!-- HERO -->
47
- <!-- ============================================================ -->
45
+ {% comment %} ============================================================ {% endcomment %}
46
+ {% comment %} HERO {% endcomment %}
47
+ {% comment %} ============================================================ {% endcomment %}
48
48
  <section class="bg-body-tertiary border-bottom">
49
49
  <div class="container-lg py-5">
50
50
  <div class="row align-items-center g-4">
@@ -114,9 +114,9 @@ layout: root
114
114
  </div>
115
115
  </section>
116
116
 
117
- <!-- ============================================================ -->
118
- <!-- MINIMAL STARTER INSTRUCTIONS -->
119
- <!-- ============================================================ -->
117
+ {% comment %} ============================================================ {% endcomment %}
118
+ {% comment %} MINIMAL STARTER INSTRUCTIONS {% endcomment %}
119
+ {% comment %} ============================================================ {% endcomment %}
120
120
  <section id="minimal-starter" class="container-lg py-5">
121
121
  <div class="row justify-content-center">
122
122
  <div class="col-lg-10">
@@ -129,7 +129,7 @@ layout: root
129
129
 
130
130
  <div class="accordion mt-4" id="starterAccordion">
131
131
 
132
- <!-- _config.yml -->
132
+ {% comment %} _config.yml {% endcomment %}
133
133
  <div class="accordion-item">
134
134
  <h3 class="accordion-header">
135
135
  <button class="accordion-button" type="button"
@@ -171,7 +171,7 @@ site_configured: true
171
171
  </div>
172
172
  </div>
173
173
 
174
- <!-- Gemfile -->
174
+ {% comment %} Gemfile {% endcomment %}
175
175
  <div class="accordion-item">
176
176
  <h3 class="accordion-header">
177
177
  <button class="accordion-button collapsed" type="button"
@@ -197,7 +197,7 @@ gem "webrick", "~> 1.7"
197
197
  </div>
198
198
  </div>
199
199
 
200
- <!-- index.md -->
200
+ {% comment %} index.md {% endcomment %}
201
201
  <div class="accordion-item">
202
202
  <h3 class="accordion-header">
203
203
  <button class="accordion-button collapsed" type="button"
@@ -232,7 +232,7 @@ is set in `_config.yml`.
232
232
  </div>
233
233
  </div>
234
234
 
235
- </div><!-- /accordion -->
235
+ </div>{% comment %} /accordion {% endcomment %}
236
236
 
237
237
  <div class="alert alert-info d-flex align-items-start mt-4" role="alert">
238
238
  <i class="bi bi-info-circle-fill me-2 mt-1"></i>
@@ -248,16 +248,16 @@ is set in `_config.yml`.
248
248
  </div>
249
249
  </section>
250
250
 
251
- <!-- ============================================================ -->
252
- <!-- SETUP WIZARD -->
253
- <!-- ============================================================ -->
251
+ {% comment %} ============================================================ {% endcomment %}
252
+ {% comment %} SETUP WIZARD {% endcomment %}
253
+ {% comment %} ============================================================ {% endcomment %}
254
254
  <section id="setup-wizard" class="bg-body-tertiary border-top py-5">
255
255
  {% include setup/wizard.html %}
256
256
  </section>
257
257
 
258
- <!-- ============================================================ -->
259
- <!-- NEXT STEPS / RESOURCES -->
260
- <!-- ============================================================ -->
258
+ {% comment %} ============================================================ {% endcomment %}
259
+ {% comment %} NEXT STEPS / RESOURCES {% endcomment %}
260
+ {% comment %} ============================================================ {% endcomment %}
261
261
  <section class="container-lg py-5">
262
262
  <h2 class="mb-4"><i class="bi bi-signpost-2"></i> Next steps</h2>
263
263
  <div class="row g-3">
@@ -321,9 +321,9 @@ is set in `_config.yml`.
321
321
 
322
322
  {% else %}
323
323
 
324
- <!-- ============================================================ -->
325
- <!-- CONFIGURED SITE — render the user's content -->
326
- <!-- ============================================================ -->
324
+ {% comment %} ============================================================ {% endcomment %}
325
+ {% comment %} CONFIGURED SITE — render the user's content {% endcomment %}
326
+ {% comment %} ============================================================ {% endcomment %}
327
327
  <div class="container-lg py-4">
328
328
  <div class="row justify-content-center">
329
329
  <div class="col-lg-10">
@@ -17,7 +17,7 @@
17
17
 
18
18
  background: var(--zer0-color-bg-elevated);
19
19
  border-left: 0.25rem solid var(--zer0-callout-color, var(--zer0-color-primary));
20
- border-radius: 0.375rem;
20
+ border-radius: var(--zer0-radius);
21
21
  color: var(--zer0-color-ink);
22
22
  }
23
23
 
@@ -64,6 +64,12 @@
64
64
  }
65
65
  }
66
66
 
67
+ // Element-agnostic: applied to <a> (external credits), <span> (credits with
68
+ // no url) and <button> (the in-page "Info" dialog trigger — it opens the
69
+ // #info-section offcanvas rather than navigating, so it is a button, not a
70
+ // link; WCAG 4.1.2). Reboot already inherits margin/font for <button>, but
71
+ // not background, border or colour — reset those and restate the colours
72
+ // `.bd-footer a` supplies so all three elements render identically.
67
73
  .powered-by-link {
68
74
  display: inline-flex;
69
75
  align-items: center;
@@ -75,10 +81,18 @@
75
81
  text-decoration: none;
76
82
  border-radius: var(--bs-border-radius-sm, 0.25rem);
77
83
  white-space: nowrap;
84
+ // Reboot sets `-webkit-appearance: button`, which the unprefixed property
85
+ // does not cancel on older WebKit — reset both.
86
+ -webkit-appearance: none;
87
+ appearance: none;
88
+ background: none;
89
+ border: 0;
90
+ color: var(--bs-body-color);
78
91
 
79
92
  &:hover,
80
93
  &:focus-visible {
81
94
  text-decoration: none;
95
+ color: var(--bs-link-hover-color);
82
96
  }
83
97
  }
84
98
 
@@ -132,6 +146,9 @@
132
146
  // Block padding grows the tap target without changing the visual text size;
133
147
  // icon links get an explicit minimum box. (`d-block` links — e.g. the
134
148
  // truncated Latest Posts titles — keep their display but gain the padding.)
149
+ // `> button` is matched alongside `> a` because the policy row's "Cookie
150
+ // Preferences" control is a <button> (it opens a modal rather than
151
+ // navigating) and must keep the same 1.75rem tap target as its siblings.
135
152
  .footer-dark-block {
136
153
  ul.list-unstyled li > a,
137
154
  p > a {
@@ -139,7 +156,8 @@
139
156
  padding-block: 0.25rem;
140
157
  }
141
158
 
142
- ul.list-inline li > a {
159
+ ul.list-inline li > a,
160
+ ul.list-inline li > button {
143
161
  display: inline-flex;
144
162
  align-items: center;
145
163
  justify-content: center;
@@ -171,6 +189,24 @@
171
189
  }
172
190
  }
173
191
 
192
+ // A <button> that must sit in running text exactly like the <a> beside it —
193
+ // used by the "Cookie Preferences" control, which opens #cookieSettingsModal
194
+ // rather than navigating (WCAG 4.1.2). Reboot inherits margin/font for
195
+ // <button> but leaves the UA background, border and padding in place, so
196
+ // strip those; colour comes from the `.text-light` utility as before.
197
+ .footer-inline-button {
198
+ // Reboot sets `-webkit-appearance: button`, which the unprefixed property
199
+ // does not cancel on older WebKit — reset both.
200
+ -webkit-appearance: none;
201
+ appearance: none;
202
+ background: none;
203
+ border: 0;
204
+ padding: 0;
205
+ vertical-align: baseline;
206
+ text-align: inherit;
207
+ cursor: pointer;
208
+ }
209
+
174
210
  .footer-policy-links {
175
211
  @media (max-width: 767.98px) {
176
212
  font-size: 0.8125rem;