jekyll-theme-zer0 1.29.0 → 1.31.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 (163) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +886 -2
  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 +196 -22
  7. data/_data/consumers.yml +147 -5
  8. data/_data/features.yml +147 -21
  9. data/_data/feedback_types.yml +17 -12
  10. data/_data/landing.yml +5 -2
  11. data/_data/navigation/quickstart.yml +4 -0
  12. data/_data/site_builder.yml +874 -0
  13. data/_data/theme-manifest.yml +132 -122
  14. data/_data/ui-text.yml +19 -0
  15. data/_includes/README.md +11 -1
  16. data/_includes/analytics/posthog.html +30 -11
  17. data/_includes/components/README.md +1 -1
  18. data/_includes/components/admin-links.html +2 -2
  19. data/_includes/components/admin-tabs.html +2 -2
  20. data/_includes/components/ai-chat.html +14 -11
  21. data/_includes/components/analytics-dashboard.html +8 -8
  22. data/_includes/components/author-bio.html +1 -1
  23. data/_includes/components/author-card.html +10 -2
  24. data/_includes/components/author-eeat.html +4 -4
  25. data/_includes/components/background-customizer.html +8 -8
  26. data/_includes/components/background-image.html +120 -0
  27. data/_includes/components/background-settings.html +28 -15
  28. data/_includes/components/collection-manager.html +5 -5
  29. data/_includes/components/component-showcase.html +13 -13
  30. data/_includes/components/config-editor.html +12 -12
  31. data/_includes/components/config-viewer.html +8 -8
  32. data/_includes/components/cookie-consent.html +41 -41
  33. data/_includes/components/cta-button.html +7 -2
  34. data/_includes/components/dev-shortcuts.html +7 -7
  35. data/_includes/components/env-dashboard.html +8 -8
  36. data/_includes/components/env-switcher.html +9 -9
  37. data/_includes/components/feature-card.html +2 -2
  38. data/_includes/components/halfmoon.html +2 -2
  39. data/_includes/components/info-section.html +36 -36
  40. data/_includes/components/js-cdn.html +15 -15
  41. data/_includes/components/language-toggle.html +4 -4
  42. data/_includes/components/mermaid.html +79 -435
  43. data/_includes/components/nanobar.html +5 -5
  44. data/_includes/components/nav-editor.html +2 -2
  45. data/_includes/components/nav-export.html +2 -2
  46. data/_includes/components/nav-overview.html +2 -2
  47. data/_includes/components/page-feedback.html +45 -30
  48. data/_includes/components/page-views-init.html +1 -1
  49. data/_includes/components/post-card.html +22 -22
  50. data/_includes/components/post-type-badge.html +2 -2
  51. data/_includes/components/powered-by.html +2 -2
  52. data/_includes/components/preview-image.html +28 -3
  53. data/_includes/components/quick-index.html +2 -2
  54. data/_includes/components/search-modal.html +27 -2
  55. data/_includes/components/searchbar.html +2 -2
  56. data/_includes/components/svg-background.html +2 -2
  57. data/_includes/components/theme-customizer.html +2 -2
  58. data/_includes/components/theme-info.html +6 -6
  59. data/_includes/components/theme-preview-gallery.html +23 -23
  60. data/_includes/content/giscus.html +2 -2
  61. data/_includes/content/intro.html +15 -8
  62. data/_includes/content/jsonld-faq.html +2 -2
  63. data/_includes/content/jsonld-software.html +2 -2
  64. data/_includes/content/seo.html +12 -4
  65. data/_includes/content/sitemap.html +247 -290
  66. data/_includes/content/toc.html +183 -183
  67. data/_includes/core/branding.html +13 -20
  68. data/_includes/core/console-capture.html +32 -74
  69. data/_includes/core/favicon.html +49 -7
  70. data/_includes/core/footer-fabs.html +17 -3
  71. data/_includes/core/footer.html +31 -18
  72. data/_includes/core/head.html +128 -92
  73. data/_includes/core/header.html +85 -54
  74. data/_includes/core/tokens-inline.html +16 -1
  75. data/_includes/docs/bootstrap-docs.html +8 -8
  76. data/_includes/landing/landing-install-cards.html +2 -2
  77. data/_includes/landing/landing-quick-links.html +1 -1
  78. data/_includes/navigation/admin-nav.html +2 -2
  79. data/_includes/navigation/nav-tree.html +8 -8
  80. data/_includes/navigation/navbar.html +21 -18
  81. data/_includes/navigation/section-sidebar.html +16 -16
  82. data/_includes/navigation/sidebar-config.html +36 -2
  83. data/_includes/navigation/sidebar-left.html +15 -15
  84. data/_includes/navigation/sidebar-right.html +6 -6
  85. data/_includes/obsidian/full-graph.html +2 -2
  86. data/_includes/setup/claude-session.html +72 -0
  87. data/_includes/setup/prereq-checklist.html +90 -0
  88. data/_includes/setup/wizard.html +910 -291
  89. data/_includes/stats/stats-categories.html +8 -8
  90. data/_includes/stats/stats-header.html +14 -14
  91. data/_includes/stats/stats-metrics.html +12 -12
  92. data/_includes/stats/stats-no-data.html +12 -12
  93. data/_includes/stats/stats-overview.html +6 -6
  94. data/_includes/stats/stats-tags.html +8 -8
  95. data/_layouts/404.html +38 -24
  96. data/_layouts/admin.html +22 -22
  97. data/_layouts/article.html +54 -37
  98. data/_layouts/author.html +20 -20
  99. data/_layouts/authors.html +2 -2
  100. data/_layouts/book-abc.html +12 -12
  101. data/_layouts/book-story.html +15 -15
  102. data/_layouts/book.html +12 -12
  103. data/_layouts/collection.html +33 -33
  104. data/_layouts/cookbook.html +12 -12
  105. data/_layouts/default.html +27 -24
  106. data/_layouts/home.html +36 -24
  107. data/_layouts/index.html +10 -10
  108. data/_layouts/landing.html +17 -17
  109. data/_layouts/news.html +44 -44
  110. data/_layouts/note.html +40 -39
  111. data/_layouts/notebook.html +36 -35
  112. data/_layouts/recipe.html +24 -24
  113. data/_layouts/root.html +95 -55
  114. data/_layouts/section.html +23 -23
  115. data/_layouts/setup.html +3 -3
  116. data/_layouts/sitemap-collection.html +49 -49
  117. data/_layouts/stats.html +40 -40
  118. data/_layouts/tag.html +12 -12
  119. data/_layouts/welcome.html +21 -21
  120. data/_sass/components/_cookie-banner.scss +48 -0
  121. data/_sass/components/_mermaid.scss +375 -0
  122. data/_sass/components/_setup-wizard.scss +588 -41
  123. data/_sass/components/_ui-enhancements.scss +11 -0
  124. data/_sass/core/_navbar.scss +147 -100
  125. data/_sass/core/_sidebar-extras.scss +2 -14
  126. data/_sass/core/code-copy.scss +27 -8
  127. data/_sass/layouts/_navbar-extras.scss +14 -4
  128. data/assets/css/extension-points-demo.css +27 -0
  129. data/assets/css/main.scss +1 -0
  130. data/assets/data/wiki-index.json +19 -0
  131. data/assets/js/ai-chat.js +47 -5
  132. data/assets/js/auto-hide-nav.js +53 -13
  133. data/assets/js/code-copy.js +72 -1
  134. data/assets/js/extension-points-demo.js +48 -0
  135. data/assets/js/fleet-feedback-capture.js +124 -0
  136. data/assets/js/fleet-feedback.js +853 -0
  137. data/assets/js/mermaid-diagrams.js +1373 -0
  138. data/assets/js/modules/navigation/config.js +9 -6
  139. data/assets/js/modules/navigation/scroll-spy.js +315 -80
  140. data/assets/js/modules/theme/appearance.js +8 -2
  141. data/assets/js/obsidian-local-graph.js +27 -5
  142. data/assets/js/obsidian-wiki-links.js +8 -3
  143. data/assets/js/page-feedback.js +125 -192
  144. data/assets/js/search-modal.js +26 -0
  145. data/assets/js/setup-wizard.js +2119 -363
  146. data/assets/js/site-builder.js +1834 -0
  147. data/assets/js/ui-enhancements.js +11 -3
  148. data/scripts/README.md +15 -0
  149. data/scripts/ai/README.md +38 -0
  150. data/scripts/ai/api_call.rb +124 -0
  151. data/scripts/ai/usage.rb +314 -0
  152. data/scripts/ai/usage_report.rb +225 -0
  153. data/scripts/ci/test_visual_evidence_autogen.py +403 -0
  154. data/scripts/ci/visual_evidence_autogen.py +1070 -0
  155. data/scripts/content-review.rb +20 -1
  156. data/scripts/features/install-preview-generator +1 -1
  157. data/scripts/lib/README.md +12 -0
  158. data/scripts/lib/preview_generator.py +2 -2
  159. data/scripts/test/integration/mermaid +22 -8
  160. data/scripts/test/lib/run_tests.sh +1 -0
  161. data/scripts/test/lib/test_visual_evidence_autogen.sh +24 -0
  162. data/scripts/translate.rb +23 -1
  163. metadata +21 -2
@@ -2,7 +2,7 @@
2
2
  # Feature: ZER0-019
3
3
  layout: default
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  COLLECTION LAYOUT - Display template for Jekyll collections
8
8
  ===================================================================
@@ -42,18 +42,18 @@ layout: default
42
42
  - Bootstrap 5 card and grid components
43
43
  - Site configuration for public_folder and teaser image
44
44
  ===================================================================
45
- -->
45
+ {% endcomment %}
46
46
 
47
- <!-- ========================== -->
48
- <!-- COLLECTION PAGE CONTENT -->
49
- <!-- ========================== -->
50
- <!-- Main content area for collection description or introduction -->
47
+ {% comment %} ========================== {% endcomment %}
48
+ {% comment %} COLLECTION PAGE CONTENT {% endcomment %}
49
+ {% comment %} ========================== {% endcomment %}
50
+ {% comment %} Main content area for collection description or introduction {% endcomment %}
51
51
  {{ content }}
52
52
 
53
- <!-- ========================== -->
54
- <!-- COLLECTION DATA PROCESSING -->
55
- <!-- ========================== -->
56
- <!-- Extract and sort collection entries based on page configuration.
53
+ {% comment %} ========================== {% endcomment %}
54
+ {% comment %} COLLECTION DATA PROCESSING {% endcomment %}
55
+ {% comment %} ========================== {% endcomment %}
56
+ {% comment %} Extract and sort collection entries based on page configuration.
57
57
 
58
58
  Jekyll sets page.collection automatically for a document inside a
59
59
  collection, but a standalone page can also select this layout in its front
@@ -61,12 +61,12 @@ layout: default
61
61
  declare — site[page.collection] is nil, and `sort` on nil raises
62
62
  "Cannot sort a null object.", which aborts the ENTIRE build rather than
63
63
  just this page. Resolve to an empty list instead so one misconfigured page
64
- cannot take the site down. -->
64
+ cannot take the site down. {% endcomment %}
65
65
  {% assign entries = site[page.collection] %}
66
66
  {% if entries %}
67
67
  {% assign entries = entries | sort: page.sort_order %}
68
68
 
69
- <!-- Handle reverse sorting if specified -->
69
+ {% comment %} Handle reverse sorting if specified {% endcomment %}
70
70
  {% if page.sort_order == 'reverse' %}
71
71
  {% assign entries = entries | reverse %}
72
72
  {% endif %}
@@ -74,53 +74,53 @@ layout: default
74
74
  {% assign entries = "" | split: "" %}
75
75
  {% endif %}
76
76
 
77
- <!-- ========================== -->
78
- <!-- COLLECTION INDEX HEADER -->
79
- <!-- ========================== -->
77
+ {% comment %} ========================== {% endcomment %}
78
+ {% comment %} COLLECTION INDEX HEADER {% endcomment %}
79
+ {% comment %} ========================== {% endcomment %}
80
80
  <h2 id="index-collection">
81
81
  Collection Index - {{ page.collection }}
82
82
  </h2>
83
83
 
84
- <!-- ================================ -->
85
- <!-- COLLECTION ITEMS GRID -->
86
- <!-- ================================ -->
87
- <!-- Responsive card grid: 1 column mobile, up to 3 columns desktop -->
84
+ {% comment %} ================================ {% endcomment %}
85
+ {% comment %} COLLECTION ITEMS GRID {% endcomment %}
86
+ {% comment %} ================================ {% endcomment %}
87
+ {% comment %} Responsive card grid: 1 column mobile, up to 3 columns desktop {% endcomment %}
88
88
  <div class="row row-cols-1 row-cols-md-3 g-4">
89
89
 
90
90
  {% for post in entries %}
91
91
  <div class="col">
92
- <!-- Bootstrap card with equal height for consistent layout -->
92
+ {% comment %} Bootstrap card with equal height for consistent layout {% endcomment %}
93
93
  <div class="card h-100">
94
94
 
95
- <!-- ====================== -->
96
- <!-- CARD IMAGE SECTION -->
97
- <!-- ====================== -->
98
- <!-- Display preview image with fallback to site teaser -->
95
+ {% comment %} ====================== {% endcomment %}
96
+ {% comment %} CARD IMAGE SECTION {% endcomment %}
97
+ {% comment %} ====================== {% endcomment %}
98
+ {% comment %} Display preview image with fallback to site teaser {% endcomment %}
99
99
  {% assign coll_img = post.preview | default: site.teaser %}
100
100
  {% include components/preview-image.html src=coll_img alt=post.title class="card-img-top" %}
101
101
 
102
- <!-- ====================== -->
103
- <!-- CARD CONTENT SECTION -->
104
- <!-- ====================== -->
102
+ {% comment %} ====================== {% endcomment %}
103
+ {% comment %} CARD CONTENT SECTION {% endcomment %}
104
+ {% comment %} ====================== {% endcomment %}
105
105
  <div class="card-body">
106
- <!-- Post title with SEO microdata -->
106
+ {% comment %} Post title with SEO microdata {% endcomment %}
107
107
  <h5 class="card-title" itemprop="headline">
108
108
  <a class="card-link" href="{{ post.url | relative_url }}" rel="permalink">
109
109
  {{ post.title }}
110
110
  </a>
111
111
  </h5>
112
112
 
113
- <!-- Post excerpt with HTML stripped and character limit -->
113
+ {% comment %} Post excerpt with HTML stripped and character limit {% endcomment %}
114
114
  <p class="card-text" itemprop="description">
115
115
  {{ post.excerpt | strip_html | truncate: 160 }}
116
116
  </p>
117
117
  </div>
118
118
 
119
- <!-- ====================== -->
120
- <!-- CARD FOOTER SECTION -->
121
- <!-- ====================== -->
119
+ {% comment %} ====================== {% endcomment %}
120
+ {% comment %} CARD FOOTER SECTION {% endcomment %}
121
+ {% comment %} ====================== {% endcomment %}
122
122
  <div class="card-footer">
123
- <!-- Last modified date for content freshness indicator -->
123
+ {% comment %} Last modified date for content freshness indicator {% endcomment %}
124
124
  <small class="text-body-secondary post-meta">
125
125
  Last updated {{ post.lastmod | date: '%B %d, %Y' }}
126
126
  </small>
@@ -25,9 +25,9 @@ layout: default
25
25
  {%- assign _cb_image = page.image | default: page.preview -%}
26
26
 
27
27
  <div class="cookbook">
28
- <!-- ================================ -->
29
- <!-- COVER -->
30
- <!-- ================================ -->
28
+ {% comment %} ================================ {% endcomment %}
29
+ {% comment %} COVER {% endcomment %}
30
+ {% comment %} ================================ {% endcomment %}
31
31
  <header class="cookbook-header">
32
32
  <div class="row g-4 align-items-center">
33
33
  {%- if _cb_image -%}
@@ -56,9 +56,9 @@ layout: default
56
56
  </div>
57
57
  </header>
58
58
 
59
- <!-- ================================ -->
60
- <!-- ABOUT (the markdown body) -->
61
- <!-- ================================ -->
59
+ {% comment %} ================================ {% endcomment %}
60
+ {% comment %} ABOUT (the markdown body) {% endcomment %}
61
+ {% comment %} ================================ {% endcomment %}
62
62
  {%- assign _cb_body = content | strip -%}
63
63
  {%- if _cb_body != "" -%}
64
64
  <section class="cookbook-about">
@@ -66,9 +66,9 @@ layout: default
66
66
  </section>
67
67
  {%- endif -%}
68
68
 
69
- <!-- ================================ -->
70
- <!-- COURSE JUMP NAV -->
71
- <!-- ================================ -->
69
+ {% comment %} ================================ {% endcomment %}
70
+ {% comment %} COURSE JUMP NAV {% endcomment %}
71
+ {% comment %} ================================ {% endcomment %}
72
72
  {%- if _cb_courses.size > 1 and page.grouped != false -%}
73
73
  <nav class="cookbook-jump" aria-label="Jump to a course">
74
74
  {%- for _cb_pair in site.data.recipe_courses -%}
@@ -81,8 +81,8 @@ layout: default
81
81
  </nav>
82
82
  {%- endif -%}
83
83
 
84
- <!-- ================================ -->
85
- <!-- RECIPE INDEX -->
86
- <!-- ================================ -->
84
+ {% comment %} ================================ {% endcomment %}
85
+ {% comment %} RECIPE INDEX {% endcomment %}
86
+ {% comment %} ================================ {% endcomment %}
87
87
  {%- include components/recipe-index.html cookbook=_cb_slug grouped=page.grouped heading_level="h2" -%}
88
88
  </div>
@@ -2,7 +2,7 @@
2
2
  # Features: ZER0-001, ZER0-008, ZER0-019
3
3
  layout: root
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  DEFAULT LAYOUT - Standard content layout with sidebars
8
8
  ===================================================================
@@ -43,7 +43,7 @@ layout: root
43
43
  - bd-toc: Table of contents styling
44
44
  - bd-content: Content area styling
45
45
  ===================================================================
46
- -->
46
+ {% endcomment %}
47
47
 
48
48
  {%- comment -%}
49
49
  Sidebar visibility + nav mode are resolved by the shared include below
@@ -58,16 +58,16 @@ layout: root
58
58
  {%- endcomment -%}
59
59
  {% include navigation/sidebar-config.html %}
60
60
 
61
- <!-- ================================================ -->
62
- <!-- MAIN LAYOUT CONTAINER -->
63
- <!-- Bootstrap responsive container with custom grid -->
64
- <!-- ================================================ -->
61
+ {% comment %} ================================================ {% endcomment %}
62
+ {% comment %} MAIN LAYOUT CONTAINER {% endcomment %}
63
+ {% comment %} Bootstrap responsive container with custom grid {% endcomment %}
64
+ {% comment %} ================================================ {% endcomment %}
65
65
  <div class="container-xxl bd-gutter mt-3 my-md-4 bd-layout{% unless sidebar_has_content %} bd-layout--no-sidebar{% endunless %}">
66
66
 
67
- <!-- ================================ -->
68
- <!-- LEFT SIDEBAR - Navigation -->
69
- <!-- ================================ -->
70
- <!-- Site navigation, content outline, and offcanvas menu for mobile -->
67
+ {% comment %} ================================ {% endcomment %}
68
+ {% comment %} LEFT SIDEBAR - Navigation {% endcomment %}
69
+ {% comment %} ================================ {% endcomment %}
70
+ {% comment %} Site navigation, content outline, and offcanvas menu for mobile {% endcomment %}
71
71
  {% if sidebar_has_content %}
72
72
  <aside class="bd-sidebar">
73
73
  {% include navigation/sidebar-left.html %}
@@ -83,13 +83,16 @@ layout: root
83
83
  </div>
84
84
  {% endif %}
85
85
 
86
- <!-- ================================ -->
87
- <!-- MAIN CONTENT AREA -->
88
- <!-- ================================ -->
89
- <!-- Primary content section with scroll spy for table of contents navigation.
86
+ {% comment %} ================================ {% endcomment %}
87
+ {% comment %} MAIN CONTENT AREA {% endcomment %}
88
+ {% comment %} ================================ {% endcomment %}
89
+ {% comment %} Primary content section. TOC highlighting is handled by the
90
+ theme's own scroll spy (assets/js/modules/navigation/scroll-spy.js) —
91
+ no `data-bs-spy` here, because Bootstrap's native ScrollSpy fought it
92
+ for the `.active` class and made the bolding jump around.
90
93
  Not a <main>: root.html already provides the single <main id="main-content">
91
- landmark; a nested <main> here would duplicate it (issue #299). -->
92
- <div class="bd-main order-1" data-bs-spy="scroll" data-bs-target="#TableOfContents" data-bs-offset="100" data-bs-smooth-scroll="true">
94
+ landmark; a nested <main> here would duplicate it (issue #299). {% endcomment %}
95
+ <div class="bd-main order-1">
93
96
 
94
97
  {%- comment -%}
95
98
  Page introduction: title, breadcrumbs, metadata.
@@ -105,20 +108,20 @@ layout: root
105
108
  {% include content/intro.html %}
106
109
  {% endunless %}
107
110
 
108
- <!-- =============================== -->
109
- <!-- RIGHT SIDEBAR - Table of Contents -->
110
- <!-- =============================== -->
111
- <!-- Page outline, shortcuts, and related links (hidden on mobile) -->
111
+ {% comment %} =============================== {% endcomment %}
112
+ {% comment %} RIGHT SIDEBAR - Table of Contents {% endcomment %}
113
+ {% comment %} =============================== {% endcomment %}
114
+ {% comment %} Page outline, shortcuts, and related links (hidden on mobile) {% endcomment %}
112
115
  {% unless sidebar_enabled == false %}
113
116
  <div class="bd-toc text-body-secondary">
114
117
  {% include navigation/sidebar-right.html %}
115
118
  </div>
116
119
  {% endunless %}
117
120
 
118
- <!-- =============================== -->
119
- <!-- MAIN CONTENT BODY -->
120
- <!-- =============================== -->
121
- <!-- Where the actual page content is rendered -->
121
+ {% comment %} =============================== {% endcomment %}
122
+ {% comment %} MAIN CONTENT BODY {% endcomment %}
123
+ {% comment %} =============================== {% endcomment %}
124
+ {% comment %} Where the actual page content is rendered {% endcomment %}
122
125
  <div class="bd-content ps-lg-2">
123
126
  {{ content }}
124
127
 
data/_layouts/home.html CHANGED
@@ -2,7 +2,7 @@
2
2
  # Feature: ZER0-019
3
3
  layout: root
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  HOME LAYOUT - Homepage template with minimal structure
8
8
  ===================================================================
@@ -45,36 +45,48 @@ layout: root
45
45
  - RSS link maintains blog connectivity
46
46
  - Clean presentation suitable for landing pages
47
47
  ===================================================================
48
- -->
48
+ {% endcomment %}
49
49
 
50
- <!-- ================================ -->
51
- <!-- HOME PAGE CONTAINER -->
52
- <!-- ================================ -->
50
+ {% comment %} ================================ {% endcomment %}
51
+ {% comment %} HOME PAGE CONTAINER {% endcomment %}
52
+ {% comment %} ================================ {% endcomment %}
53
53
  <div class="home">
54
- <!-- ========================== -->
55
- <!-- OPTIONAL PAGE TITLE -->
56
- <!-- ========================== -->
57
- <!-- Display title only if specified in page frontmatter. -->
58
- <!-- Usage: Add 'title: "Homepage Title"' to page frontmatter. -->
59
- <!-- Landing/showcase pages can keep `title` for SEO but suppress the -->
60
- <!-- visible heading (e.g. when a custom hero supplies its own <h1>) -->
61
- <!-- with `hide_title: true`. -->
54
+ {% comment %} ========================== {% endcomment %}
55
+ {% comment %} OPTIONAL PAGE TITLE {% endcomment %}
56
+ {% comment %} ========================== {% endcomment %}
57
+ {% comment %} Display title only if specified in page frontmatter. {% endcomment %}
58
+ {% comment %} Usage: Add 'title: "Homepage Title"' to page frontmatter. {% endcomment %}
59
+ {% comment %} Landing/showcase pages can keep `title` for SEO but suppress the {% endcomment %}
60
+ {% comment %} visible heading (e.g. when a custom hero supplies its own <h1>) {% endcomment %}
61
+ {% comment %} with `hide_title: true`. {% endcomment %}
62
62
  {%- if page.title and page.hide_title != true and page.hide_intro != true -%}
63
63
  <h1 class="page-heading">{{ page.title }}</h1>
64
64
  {%- endif -%}
65
-
66
- <!-- ========================== -->
67
- <!-- MAIN CONTENT AREA -->
68
- <!-- ========================== -->
69
- <!-- Homepage content rendered from Markdown or HTML -->
70
- <!-- Can include hero sections, feature cards, etc. -->
65
+
66
+ {% comment %} ========================== {% endcomment %}
67
+ {% comment %} SITE SUBTITLE (HOME HERO) {% endcomment %}
68
+ {% comment %} ========================== {% endcomment %}
69
+ {% comment %} `site.subtitle` reads here, on the home hero, instead of in the {% endcomment %}
70
+ {% comment %} navbar, where it competed with the menubar for bar width (#405). {% endcomment %}
71
+ {% comment %} Suppressed alongside the heading, so a custom hero that supplies {% endcomment %}
72
+ {% comment %} its own copy is not doubled up. {% endcomment %}
73
+ {%- assign _subtitle = site.subtitle | strip -%}
74
+ {%- if _subtitle != "" and page.hide_title != true and page.hide_intro != true -%}
75
+ <p class="site-subtitle-text home-subtitle lead text-body-secondary">{{ _subtitle }}</p>
76
+ {%- endif -%}
77
+
78
+ {% comment %} ========================== {% endcomment %}
79
+ {% comment %} MAIN CONTENT AREA {% endcomment %}
80
+ {% comment %} ========================== {% endcomment %}
81
+ {% comment %} Homepage content rendered from Markdown or HTML {% endcomment %}
82
+ {% comment %} Can include hero sections, feature cards, etc. {% endcomment %}
71
83
  {{ content }}
72
84
 
73
- <!-- ========================== -->
74
- <!-- RSS SUBSCRIPTION LINK -->
75
- <!-- ========================== -->
76
- <!-- Provides easy access to RSS feed for blog updates. -->
77
- <!-- Opt out on landing/showcase homepages with `rss_subscribe: false`. -->
85
+ {% comment %} ========================== {% endcomment %}
86
+ {% comment %} RSS SUBSCRIPTION LINK {% endcomment %}
87
+ {% comment %} ========================== {% endcomment %}
88
+ {% comment %} Provides easy access to RSS feed for blog updates. {% endcomment %}
89
+ {% comment %} Opt out on landing/showcase homepages with `rss_subscribe: false`. {% endcomment %}
78
90
  {%- unless page.rss_subscribe == false -%}
79
91
  <p class="rss-subscribe">
80
92
  subscribe <a href="{{ "/feed.xml" | relative_url }}">via RSS</a>
data/_layouts/index.html CHANGED
@@ -2,7 +2,7 @@
2
2
  # Feature: ZER0-019
3
3
  layout: root
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  INDEX LAYOUT - Search indexing template
8
8
  ===================================================================
@@ -40,16 +40,16 @@ layout: root
40
40
  - Provides proper container context for search tools
41
41
  - Maintains consistent navigation patterns
42
42
  ===================================================================
43
- -->
43
+ {% endcomment %}
44
44
 
45
- <!-- ================================ -->
46
- <!-- SEARCH INDEX CONTAINER -->
47
- <!-- ================================ -->
48
- <!-- Full-width container optimized for search interfaces and content discovery -->
45
+ {% comment %} ================================ {% endcomment %}
46
+ {% comment %} SEARCH INDEX CONTAINER {% endcomment %}
47
+ {% comment %} ================================ {% endcomment %}
48
+ {% comment %} Full-width container optimized for search interfaces and content discovery {% endcomment %}
49
49
  <div id="search-index" class="container-fluid pt-5 py-5">
50
- <!-- ========================== -->
51
- <!-- SEARCH CONTENT AREA -->
52
- <!-- ========================== -->
53
- <!-- Main content area for search forms, results, filters, and indexing -->
50
+ {% comment %} ========================== {% endcomment %}
51
+ {% comment %} SEARCH CONTENT AREA {% endcomment %}
52
+ {% comment %} ========================== {% endcomment %}
53
+ {% comment %} Main content area for search forms, results, filters, and indexing {% endcomment %}
54
54
  {{ content }}
55
55
  </div>
@@ -2,7 +2,7 @@
2
2
  # Feature: ZER0-019
3
3
  layout: root
4
4
  ---
5
- <!--
5
+ {% comment %}
6
6
  ===================================================================
7
7
  LANDING LAYOUT - Welcome page for first-time visitors
8
8
  ===================================================================
@@ -43,7 +43,7 @@ layout: root
43
43
  - Custom CSS for enhanced styling
44
44
  - Responsive images and icons
45
45
  ===================================================================
46
- -->
46
+ {% endcomment %}
47
47
 
48
48
  {%- comment -%}
49
49
  Landing copy is data-driven via _data/landing.yml. Defaults shipped with the
@@ -53,9 +53,9 @@ layout: root
53
53
  {%- assign landing = site.data.landing -%}
54
54
  {%- assign github_url = site.resources.github_repo | default: "" | join: "" -%}
55
55
 
56
- <!-- ================================ -->
57
- <!-- HERO SECTION -->
58
- <!-- ================================ -->
56
+ {% comment %} ================================ {% endcomment %}
57
+ {% comment %} HERO SECTION {% endcomment %}
58
+ {% comment %} ================================ {% endcomment %}
59
59
  <div class="bg-primary zer0-bg-hero text-white position-relative overflow-hidden landing-hero">
60
60
  <div class="container-xl py-5 px-4 px-md-5">
61
61
  <div class="row align-items-center min-vh-50 g-4 g-lg-5">
@@ -130,9 +130,9 @@ layout: root
130
130
  </div>
131
131
  </div>
132
132
 
133
- <!-- ================================ -->
134
- <!-- MAIN CONTENT AREA -->
135
- <!-- ================================ -->
133
+ {% comment %} ================================ {% endcomment %}
134
+ {% comment %} MAIN CONTENT AREA {% endcomment %}
135
+ {% comment %} ================================ {% endcomment %}
136
136
  {% include landing/landing-quick-links.html %}
137
137
 
138
138
  {%- comment -%}
@@ -145,9 +145,9 @@ layout: root
145
145
  {{ content }}
146
146
  </div>
147
147
 
148
- <!-- ================================ -->
149
- <!-- FEATURES SECTION (data-driven) -->
150
- <!-- ================================ -->
148
+ {% comment %} ================================ {% endcomment %}
149
+ {% comment %} FEATURES SECTION (data-driven) {% endcomment %}
150
+ {% comment %} ================================ {% endcomment %}
151
151
  {%- if landing.features.items -%}
152
152
  <section id="features" class="zer0-section bg-body-tertiary" aria-labelledby="features-heading">
153
153
  <div class="container-xl py-5 px-4 px-md-5">
@@ -179,9 +179,9 @@ layout: root
179
179
  </section>
180
180
  {%- endif -%}
181
181
 
182
- <!-- ================================ -->
183
- <!-- QUICK START SECTION (data-driven)-->
184
- <!-- ================================ -->
182
+ {% comment %} ================================ {% endcomment %}
183
+ {% comment %} QUICK START SECTION (data-driven){% endcomment %}
184
+ {% comment %} ================================ {% endcomment %}
185
185
  {%- comment -%}
186
186
  Rendered only when the site ships a `get_started` block in
187
187
  _data/landing.yml. The install cards advertise THEME installation
@@ -203,7 +203,7 @@ layout: root
203
203
  </section>
204
204
  {%- endif -%}
205
205
 
206
- <!-- ================================ -->
207
- <!-- AUTHOR / E-E-A-T SECTION -->
208
- <!-- ================================ -->
206
+ {% comment %} ================================ {% endcomment %}
207
+ {% comment %} AUTHOR / E-E-A-T SECTION {% endcomment %}
208
+ {% comment %} ================================ {% endcomment %}
209
209
  {% include components/author-eeat.html %}