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
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Feature: ZER0-084
|
|
3
|
+
layout: default
|
|
4
|
+
---
|
|
5
|
+
{%- comment -%}
|
|
6
|
+
Layout: cookbook.html
|
|
7
|
+
Extends: default.html
|
|
8
|
+
Purpose: Landing page for one cookbook — cover, introduction, a jump-nav of
|
|
9
|
+
its courses, and the full recipe index grouped by course.
|
|
10
|
+
Front matter required: layout, title, cookbook (slug shared with its recipes)
|
|
11
|
+
Front matter optional: subtitle, description, image/preview, author,
|
|
12
|
+
grouped (false for one flat grid)
|
|
13
|
+
Notes: Recipes belong to a cookbook by matching its `cookbook:` slug. Omit
|
|
14
|
+
`cookbook:` here and the page indexes EVERY recipe on the site, which
|
|
15
|
+
is what a single-cookbook site wants.
|
|
16
|
+
{%- endcomment -%}
|
|
17
|
+
|
|
18
|
+
{%- assign _cb_slug = page.cookbook -%}
|
|
19
|
+
{%- if _cb_slug -%}
|
|
20
|
+
{%- assign _cb_recipes = site.recipes | where_exp: "doc", "doc.layout != 'cookbook'" | where: "cookbook", _cb_slug -%}
|
|
21
|
+
{%- else -%}
|
|
22
|
+
{%- assign _cb_recipes = site.recipes | where_exp: "doc", "doc.layout != 'cookbook'" -%}
|
|
23
|
+
{%- endif -%}
|
|
24
|
+
{%- assign _cb_courses = _cb_recipes | map: "course" | compact | uniq -%}
|
|
25
|
+
{%- assign _cb_image = page.image | default: page.preview -%}
|
|
26
|
+
|
|
27
|
+
<div class="cookbook">
|
|
28
|
+
{% comment %} ================================ {% endcomment %}
|
|
29
|
+
{% comment %} COVER {% endcomment %}
|
|
30
|
+
{% comment %} ================================ {% endcomment %}
|
|
31
|
+
<header class="cookbook-header">
|
|
32
|
+
<div class="row g-4 align-items-center">
|
|
33
|
+
{%- if _cb_image -%}
|
|
34
|
+
<div class="col-8 col-sm-5 col-md-4 col-lg-3">
|
|
35
|
+
<div class="cookbook-cover">
|
|
36
|
+
{%- include components/preview-image.html src=_cb_image alt=page.title class="" loading="eager" -%}
|
|
37
|
+
</div>
|
|
38
|
+
</div>
|
|
39
|
+
{%- endif -%}
|
|
40
|
+
<div class="col">
|
|
41
|
+
<h1 id="page-title" class="cookbook-title">{{ page.title }}</h1>
|
|
42
|
+
{%- if page.subtitle -%}
|
|
43
|
+
<p class="lead mb-2">{{ page.subtitle }}</p>
|
|
44
|
+
{%- endif -%}
|
|
45
|
+
{%- if page.author -%}
|
|
46
|
+
<p class="text-body-secondary small mb-2">By {{ page.author }}</p>
|
|
47
|
+
{%- endif -%}
|
|
48
|
+
<p class="text-body-secondary mb-3">
|
|
49
|
+
<i class="bi bi-egg-fried me-1" aria-hidden="true"></i>{{ _cb_recipes.size }} {% if _cb_recipes.size == 1 %}recipe{% else %}recipes{% endif %}
|
|
50
|
+
{%- if _cb_courses.size > 0 %} <span class="mx-1" aria-hidden="true">•</span> {{ _cb_courses.size }} {% if _cb_courses.size == 1 %}course{% else %}courses{% endif %}{% endif -%}
|
|
51
|
+
</p>
|
|
52
|
+
{%- if page.description -%}
|
|
53
|
+
<p class="cookbook-description">{{ page.description }}</p>
|
|
54
|
+
{%- endif -%}
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
57
|
+
</header>
|
|
58
|
+
|
|
59
|
+
{% comment %} ================================ {% endcomment %}
|
|
60
|
+
{% comment %} ABOUT (the markdown body) {% endcomment %}
|
|
61
|
+
{% comment %} ================================ {% endcomment %}
|
|
62
|
+
{%- assign _cb_body = content | strip -%}
|
|
63
|
+
{%- if _cb_body != "" -%}
|
|
64
|
+
<section class="cookbook-about">
|
|
65
|
+
{{ content }}
|
|
66
|
+
</section>
|
|
67
|
+
{%- endif -%}
|
|
68
|
+
|
|
69
|
+
{% comment %} ================================ {% endcomment %}
|
|
70
|
+
{% comment %} COURSE JUMP NAV {% endcomment %}
|
|
71
|
+
{% comment %} ================================ {% endcomment %}
|
|
72
|
+
{%- if _cb_courses.size > 1 and page.grouped != false -%}
|
|
73
|
+
<nav class="cookbook-jump" aria-label="Jump to a course">
|
|
74
|
+
{%- for _cb_pair in site.data.recipe_courses -%}
|
|
75
|
+
{%- if _cb_courses contains _cb_pair[0] -%}
|
|
76
|
+
<a class="btn btn-sm btn-outline-secondary" href="#course-{{ _cb_pair[0] }}">
|
|
77
|
+
<i class="bi {{ _cb_pair[1].icon | default: 'bi-journal-bookmark' }} me-1" aria-hidden="true"></i>{{ _cb_pair[1].title | default: _cb_pair[0] | escape }}
|
|
78
|
+
</a>
|
|
79
|
+
{%- endif -%}
|
|
80
|
+
{%- endfor -%}
|
|
81
|
+
</nav>
|
|
82
|
+
{%- endif -%}
|
|
83
|
+
|
|
84
|
+
{% comment %} ================================ {% endcomment %}
|
|
85
|
+
{% comment %} RECIPE INDEX {% endcomment %}
|
|
86
|
+
{% comment %} ================================ {% endcomment %}
|
|
87
|
+
{%- include components/recipe-index.html cookbook=_cb_slug grouped=page.grouped heading_level="h2" -%}
|
|
88
|
+
</div>
|
data/_layouts/default.html
CHANGED
|
@@ -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
|
-
|
|
63
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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,42 +83,45 @@ layout: root
|
|
|
83
83
|
</div>
|
|
84
84
|
{% endif %}
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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"
|
|
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.
|
|
96
|
-
Skipped on layouts that render their own page header (article, note
|
|
97
|
-
to avoid duplicate H1s. Authors can also opt-out
|
|
98
|
-
`hide_intro: true` in front matter.
|
|
99
|
+
Skipped on layouts that render their own page header (article, note,
|
|
100
|
+
recipe, cookbook) to avoid duplicate H1s. Authors can also opt-out
|
|
101
|
+
per page via `hide_intro: true` in front matter.
|
|
99
102
|
{%- endcomment -%}
|
|
100
103
|
{% assign _skip_intro = false %}
|
|
101
|
-
{% if page.layout == "article" or page.layout == "note" or page.hide_intro %}
|
|
104
|
+
{% if page.layout == "article" or page.layout == "note" or page.layout == "recipe" or page.layout == "cookbook" or page.hide_intro %}
|
|
102
105
|
{% assign _skip_intro = true %}
|
|
103
106
|
{% endif %}
|
|
104
107
|
{% unless _skip_intro %}
|
|
105
108
|
{% include content/intro.html %}
|
|
106
109
|
{% endunless %}
|
|
107
110
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
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,36 @@ 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
|
-
|
|
52
|
-
|
|
50
|
+
{% comment %} ================================ {% endcomment %}
|
|
51
|
+
{% comment %} HOME PAGE CONTAINER {% endcomment %}
|
|
52
|
+
{% comment %} ================================ {% endcomment %}
|
|
53
53
|
<div class="home">
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
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
65
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
{% comment %} ========================== {% endcomment %}
|
|
67
|
+
{% comment %} MAIN CONTENT AREA {% endcomment %}
|
|
68
|
+
{% comment %} ========================== {% endcomment %}
|
|
69
|
+
{% comment %} Homepage content rendered from Markdown or HTML {% endcomment %}
|
|
70
|
+
{% comment %} Can include hero sections, feature cards, etc. {% endcomment %}
|
|
71
71
|
{{ content }}
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
{% comment %} ========================== {% endcomment %}
|
|
74
|
+
{% comment %} RSS SUBSCRIPTION LINK {% endcomment %}
|
|
75
|
+
{% comment %} ========================== {% endcomment %}
|
|
76
|
+
{% comment %} Provides easy access to RSS feed for blog updates. {% endcomment %}
|
|
77
|
+
{% comment %} Opt out on landing/showcase homepages with `rss_subscribe: false`. {% endcomment %}
|
|
78
78
|
{%- unless page.rss_subscribe == false -%}
|
|
79
79
|
<p class="rss-subscribe">
|
|
80
80
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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>
|
data/_layouts/landing.html
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
208
|
-
|
|
206
|
+
{% comment %} ================================ {% endcomment %}
|
|
207
|
+
{% comment %} AUTHOR / E-E-A-T SECTION {% endcomment %}
|
|
208
|
+
{% comment %} ================================ {% endcomment %}
|
|
209
209
|
{% include components/author-eeat.html %}
|
data/_layouts/news.html
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
layout: root
|
|
4
4
|
source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
5
5
|
---
|
|
6
|
-
|
|
6
|
+
{% comment %}
|
|
7
7
|
===================================================================
|
|
8
8
|
NEWS LAYOUT - Main News Homepage with Section Style Support
|
|
9
9
|
===================================================================
|
|
@@ -49,7 +49,7 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
49
49
|
|
|
50
50
|
Note: All cards are inlined to avoid Liquid nesting depth issues
|
|
51
51
|
===================================================================
|
|
52
|
-
|
|
52
|
+
{% endcomment %}
|
|
53
53
|
|
|
54
54
|
{% comment %}
|
|
55
55
|
WARNING: section_style is required in front matter!
|
|
@@ -92,9 +92,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
92
92
|
{% if _tags_index_page %}{% assign _tags_linkable = true %}{% endif %}
|
|
93
93
|
{% endif %}
|
|
94
94
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
{% comment %} ================================ {% endcomment %}
|
|
96
|
+
{% comment %} NEWS HEADER {% endcomment %}
|
|
97
|
+
{% comment %} ================================ {% endcomment %}
|
|
98
98
|
<div class="container-fluid bg-dark text-white py-3 mb-4">
|
|
99
99
|
<div class="container">
|
|
100
100
|
<div class="row align-items-center">
|
|
@@ -131,18 +131,18 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
131
131
|
</div>
|
|
132
132
|
</div>
|
|
133
133
|
|
|
134
|
-
|
|
135
|
-
landmark; a nested <main> here would duplicate it (issue #299).
|
|
134
|
+
{% comment %} Not a <main>: root.html already provides the single <main id="main-content">
|
|
135
|
+
landmark; a nested <main> here would duplicate it (issue #299). {% endcomment %}
|
|
136
136
|
<div class="container">
|
|
137
137
|
|
|
138
138
|
{% if section_style == "magazine" %}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
{% comment %} ================================ {% endcomment %}
|
|
140
|
+
{% comment %} MAGAZINE STYLE LAYOUT {% endcomment %}
|
|
141
|
+
{% comment %} ================================ {% endcomment %}
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
143
|
+
{% comment %} ================================ {% endcomment %}
|
|
144
|
+
{% comment %} HERO - BREAKING NEWS {% endcomment %}
|
|
145
|
+
{% comment %} ================================ {% endcomment %}
|
|
146
146
|
{% assign breaking_posts = all_posts | where: "breaking", true %}
|
|
147
147
|
{% assign hero_post = breaking_posts | first %}
|
|
148
148
|
|
|
@@ -215,9 +215,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
215
215
|
</section>
|
|
216
216
|
{% endif %}
|
|
217
217
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
218
|
+
{% comment %} ================================ {% endcomment %}
|
|
219
|
+
{% comment %} SECTION QUICK NAVIGATION {% endcomment %}
|
|
220
|
+
{% comment %} ================================ {% endcomment %}
|
|
221
221
|
<section class="section-nav mb-5">
|
|
222
222
|
<div class="row row-cols-2 row-cols-md-3 row-cols-lg-6 g-3">
|
|
223
223
|
{% for sec_name in news_sections %}
|
|
@@ -242,9 +242,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
242
242
|
</div>
|
|
243
243
|
</section>
|
|
244
244
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
245
|
+
{% comment %} ================================ {% endcomment %}
|
|
246
|
+
{% comment %} FEATURED STORIES {% endcomment %}
|
|
247
|
+
{% comment %} ================================ {% endcomment %}
|
|
248
248
|
{% assign featured_posts = all_posts | where: "featured", true %}
|
|
249
249
|
{% if featured_posts.size > 0 %}
|
|
250
250
|
<section class="featured-section mb-5">
|
|
@@ -255,7 +255,7 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
255
255
|
</div>
|
|
256
256
|
|
|
257
257
|
<div class="row g-4">
|
|
258
|
-
|
|
258
|
+
{% comment %} Main Featured Post {% endcomment %}
|
|
259
259
|
{% assign main_featured = featured_posts | first %}
|
|
260
260
|
<div class="col-lg-6">
|
|
261
261
|
<div class="card h-100 border-0 shadow">
|
|
@@ -300,7 +300,7 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
300
300
|
</div>
|
|
301
301
|
</div>
|
|
302
302
|
|
|
303
|
-
|
|
303
|
+
{% comment %} Secondary Featured Posts {% endcomment %}
|
|
304
304
|
<div class="col-lg-6">
|
|
305
305
|
<div class="row row-cols-1 row-cols-md-2 g-4">
|
|
306
306
|
{% for fpost in featured_posts offset:1 limit:4 %}
|
|
@@ -334,9 +334,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
334
334
|
</section>
|
|
335
335
|
{% endif %}
|
|
336
336
|
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
337
|
+
{% comment %} ================================ {% endcomment %}
|
|
338
|
+
{% comment %} POSTS BY SECTION {% endcomment %}
|
|
339
|
+
{% comment %} ================================ {% endcomment %}
|
|
340
340
|
{% for sec_name in news_sections limit: 3 %}
|
|
341
341
|
{% assign section_posts = all_posts | where_exp: "post", "post.categories contains sec_name" %}
|
|
342
342
|
{% assign _sec_nav = site.data.navigation.posts | where: "title", sec_name | first %}
|
|
@@ -395,9 +395,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
395
395
|
{% endfor %}
|
|
396
396
|
|
|
397
397
|
{% elsif section_style == "grid" %}
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
398
|
+
{% comment %} ================================ {% endcomment %}
|
|
399
|
+
{% comment %} GRID STYLE LAYOUT {% endcomment %}
|
|
400
|
+
{% comment %} ================================ {% endcomment %}
|
|
401
401
|
<section class="grid-section mb-5">
|
|
402
402
|
<h2 class="h4 mb-4">
|
|
403
403
|
<i class="bi bi-grid me-2"></i>All Articles
|
|
@@ -453,9 +453,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
453
453
|
</section>
|
|
454
454
|
|
|
455
455
|
{% elsif section_style == "list" %}
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
456
|
+
{% comment %} ================================ {% endcomment %}
|
|
457
|
+
{% comment %} LIST STYLE LAYOUT {% endcomment %}
|
|
458
|
+
{% comment %} ================================ {% endcomment %}
|
|
459
459
|
<section class="list-section mb-5">
|
|
460
460
|
<h2 class="h4 mb-4">
|
|
461
461
|
<i class="bi bi-list-ul me-2"></i>Latest Articles
|
|
@@ -509,9 +509,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
509
509
|
|
|
510
510
|
{% endif %}
|
|
511
511
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
512
|
+
{% comment %} ================================ {% endcomment %}
|
|
513
|
+
{% comment %} LATEST POSTS {% endcomment %}
|
|
514
|
+
{% comment %} ================================ {% endcomment %}
|
|
515
515
|
{% if section_style == "magazine" %}
|
|
516
516
|
<section class="latest-section mb-5">
|
|
517
517
|
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
@@ -557,9 +557,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
557
557
|
</section>
|
|
558
558
|
{% endif %}
|
|
559
559
|
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
560
|
+
{% comment %} ================================ {% endcomment %}
|
|
561
|
+
{% comment %} PAGE CONTENT (if any) {% endcomment %}
|
|
562
|
+
{% comment %} ================================ {% endcomment %}
|
|
563
563
|
{% if content != blank %}
|
|
564
564
|
<section class="page-content mb-5">
|
|
565
565
|
<div class="card border-0 shadow-sm">
|
|
@@ -570,12 +570,12 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
570
570
|
</section>
|
|
571
571
|
{% endif %}
|
|
572
572
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
573
|
+
{% comment %} ================================ {% endcomment %}
|
|
574
|
+
{% comment %} TAGS & ARCHIVES {% endcomment %}
|
|
575
|
+
{% comment %} ================================ {% endcomment %}
|
|
576
576
|
<section class="footer-widgets mb-5">
|
|
577
577
|
<div class="row g-4">
|
|
578
|
-
|
|
578
|
+
{% comment %} Popular Tags {% endcomment %}
|
|
579
579
|
<div class="col-md-6">
|
|
580
580
|
<div class="card h-100 border-0 bg-body-tertiary">
|
|
581
581
|
<div class="card-body">
|
|
@@ -610,7 +610,7 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
610
610
|
</div>
|
|
611
611
|
</div>
|
|
612
612
|
|
|
613
|
-
|
|
613
|
+
{% comment %} Archives {% endcomment %}
|
|
614
614
|
<div class="col-md-6">
|
|
615
615
|
<div class="card h-100 border-0 bg-body-tertiary">
|
|
616
616
|
<div class="card-body">
|
|
@@ -661,9 +661,9 @@ source: "https://getbootstrap.com/docs/5.3/examples/blog/#"
|
|
|
661
661
|
</div>
|
|
662
662
|
</section>
|
|
663
663
|
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
664
|
+
{% comment %} ================================ {% endcomment %}
|
|
665
|
+
{% comment %} NEWSLETTER SIGNUP {% endcomment %}
|
|
666
|
+
{% comment %} ================================ {% endcomment %}
|
|
667
667
|
{% comment %}
|
|
668
668
|
Renders only when it can actually do something: a configured form
|
|
669
669
|
endpoint (news.newsletter.endpoint) posts for real; otherwise a
|