jekyll-theme-zer0 0.21.2 → 0.22.5
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 +103 -0
- data/README.md +86 -46
- data/_data/authors.yml +12 -3
- data/_data/features.yml +1 -1
- data/_data/glossary.yml +101 -0
- data/_data/navigation/docs.yml +12 -0
- data/_data/navigation/home.yml +2 -2
- data/_data/navigation/main.yml +2 -8
- data/_data/prompts.yml +184 -0
- data/_includes/components/author-eeat.html +133 -0
- data/_includes/components/cookie-consent.html +9 -9
- data/_includes/components/dev-shortcuts.html +36 -27
- data/_includes/components/env-detect.html +14 -0
- data/_includes/components/env-switcher.html +38 -16
- data/_includes/components/halfmoon.html +31 -20
- data/_includes/components/info-section.html +4 -3
- data/_includes/components/js-cdn.html +8 -15
- data/_includes/components/mermaid.html +13 -9
- data/_includes/components/powered-by.html +5 -3
- data/_includes/content/intro.html +64 -4
- data/_includes/content/jsonld-faq.html +47 -0
- data/_includes/content/jsonld-software.html +121 -0
- data/_includes/content/sitemap.html +2 -2
- data/_includes/core/branding.html +9 -7
- data/_includes/core/footer.html +12 -9
- data/_includes/core/head.html +17 -14
- data/_includes/core/header.html +33 -21
- data/_includes/navigation/navbar.html +130 -124
- data/_includes/navigation/sidebar-left.html +3 -3
- data/_includes/navigation/sidebar-right.html +4 -8
- data/_includes/search-data.json +1 -2
- data/_layouts/landing.html +30 -11
- data/_layouts/root.html +4 -4
- data/_layouts/sitemap-collection.html +20 -10
- data/_sass/core/_docs-layout.scss +756 -0
- data/_sass/core/_navbar.scss +522 -69
- data/_sass/core/_offcanvas-panels.scss +48 -0
- data/_sass/core/_syntax.scss +1 -51
- data/_sass/core/_theme.scss +2 -249
- data/_sass/core/_variables.scss +1 -54
- data/_sass/core/code-copy.scss +6 -6
- data/_sass/custom.scss +141 -133
- data/_sass/theme/_color-modes.scss +3 -0
- data/_sass/theme/_css-variables.scss +29 -0
- data/_sass/theme/_wizard-mode.scss +31 -0
- data/assets/css/custom.css +5 -120
- data/assets/css/main.scss +6 -2
- data/assets/css/stats.css +3 -0
- data/assets/css/theme-npm-entry.scss +6 -0
- data/assets/css/vendor/.gitkeep +0 -0
- data/assets/images/authors/bamr87.png +0 -0
- data/assets/js/auto-hide-nav.js +71 -20
- data/assets/js/color-modes.js +8 -2
- data/assets/js/halfmoon.js +8 -2
- data/assets/js/myScript.js +4 -12
- data/assets/js/navigation.js +174 -19
- data/assets/js/search-modal.js +50 -7
- data/assets/js/ui-enhancements.js +13 -0
- data/assets/vendor/bootstrap/css/bootstrap.min.css +5 -0
- data/assets/vendor/bootstrap/js/bootstrap.bundle.min.js +6 -0
- data/assets/vendor/bootstrap-icons/font/bootstrap-icons.css +2018 -0
- data/assets/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff +0 -0
- data/assets/vendor/bootstrap-icons/font/fonts/bootstrap-icons.woff2 +0 -0
- data/assets/vendor/font-awesome/css/all.min.css +9 -0
- data/assets/vendor/font-awesome/webfonts/fa-brands-400.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-brands-400.woff2 +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-regular-400.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-regular-400.woff2 +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-solid-900.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-solid-900.woff2 +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.ttf +0 -0
- data/assets/vendor/font-awesome/webfonts/fa-v4compatibility.woff2 +0 -0
- data/assets/vendor/github-calendar/github-calendar-responsive.css +231 -0
- data/assets/vendor/github-calendar/github-calendar.min.js +240 -0
- data/assets/vendor/jquery/jquery-3.7.1.min.js +2 -0
- data/assets/vendor/mathjax/es5/adaptors/liteDOM.js +1 -0
- data/assets/vendor/mathjax/es5/core.js +1 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_AMS-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Bold.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Calligraphic-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Bold.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Fraktur-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Bold.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Italic.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Main-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Math-BoldItalic.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Italic.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Math-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Bold.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Italic.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_SansSerif-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Script-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size1-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size2-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size3-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Size4-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Typewriter-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Bold.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Vector-Regular.woff +0 -0
- data/assets/vendor/mathjax/es5/output/chtml/fonts/woff-v2/MathJax_Zero.woff +0 -0
- data/assets/vendor/mathjax/es5/startup.js +1 -0
- data/assets/vendor/mathjax/es5/tex-mml-chtml.js +1 -0
- data/assets/vendor/mermaid/mermaid.min.js +2029 -0
- data/scripts/bin/build +12 -2
- data/scripts/lib/version.sh +41 -0
- data/scripts/test/integration/mermaid +1 -1
- data/scripts/vendor-install.sh +196 -0
- metadata +62 -3
- data/_sass/core/_docs.scss +0 -3219
data/_includes/core/head.html
CHANGED
|
@@ -36,7 +36,6 @@
|
|
|
36
36
|
<!-- JAVASCRIPT LIBRARIES -->
|
|
37
37
|
<!-- ================================ -->
|
|
38
38
|
<!-- Custom theme JavaScript - Deferred for performance -->
|
|
39
|
-
<script defer src="{{ '/assets/js/myScript.js' | relative_url }}"></script>
|
|
40
39
|
<script defer src="{{ '/assets/js/auto-hide-nav.js' | relative_url }}"></script>
|
|
41
40
|
<script defer src="{{ '/assets/js/back-to-top.js' | relative_url }}"></script>
|
|
42
41
|
<script defer src="{{ '/assets/js/halfmoon.js' | relative_url }}"></script>
|
|
@@ -77,8 +76,8 @@
|
|
|
77
76
|
});
|
|
78
77
|
</script>
|
|
79
78
|
|
|
80
|
-
<!-- MathJax - Mathematical notation rendering (async
|
|
81
|
-
<script id="MathJax-script" async src="
|
|
79
|
+
<!-- MathJax - Mathematical notation rendering (async; bundled under assets/vendor) -->
|
|
80
|
+
<script id="MathJax-script" async src="{{ '/assets/vendor/mathjax/es5/tex-mml-chtml.js' | relative_url }}"></script>
|
|
82
81
|
|
|
83
82
|
<!-- ================================ -->
|
|
84
83
|
<!-- HTML DOCUMENT META DATA -->
|
|
@@ -110,9 +109,17 @@
|
|
|
110
109
|
<meta itemprop="datePublished" content="{{ page.date | date_to_xmlschema }}">
|
|
111
110
|
{% endif %}
|
|
112
111
|
{% if page.last_modified_at %}
|
|
112
|
+
<meta itemprop="dateModified" content="{{ page.last_modified_at | date_to_xmlschema }}">
|
|
113
|
+
{% elsif page.lastmod %}
|
|
113
114
|
<meta itemprop="dateModified" content="{{ page.lastmod | date_to_xmlschema }}">
|
|
114
115
|
{% endif %}
|
|
115
116
|
|
|
117
|
+
<!-- JSON-LD SoftwareApplication schema (homepage only) -->
|
|
118
|
+
{% include content/jsonld-software.html %}
|
|
119
|
+
|
|
120
|
+
<!-- JSON-LD FAQ schema (pages with faq_items front matter) -->
|
|
121
|
+
{% include content/jsonld-faq.html %}
|
|
122
|
+
|
|
116
123
|
<!-- ========================== -->
|
|
117
124
|
<!-- ANALYTICS INTEGRATION -->
|
|
118
125
|
<!-- ========================== -->
|
|
@@ -127,26 +134,22 @@
|
|
|
127
134
|
<!-- ========================== -->
|
|
128
135
|
<!-- BOOTSTRAP 5 FRAMEWORK -->
|
|
129
136
|
<!-- ========================== -->
|
|
130
|
-
<!-- Bootstrap 5.3.3 -
|
|
131
|
-
<link href="
|
|
132
|
-
|
|
133
|
-
<!-- Local Bootstrap Installation - Alternative for offline development -->
|
|
134
|
-
<!-- <script src="/assets/js/bootstrap.js"></script> -->
|
|
137
|
+
<!-- Bootstrap 5.3.3 - bundled locally (GitHub Pages–safe; refresh via scripts/vendor-install.sh) -->
|
|
138
|
+
<link href="{{ '/assets/vendor/bootstrap/css/bootstrap.min.css' | relative_url }}" rel="stylesheet">
|
|
135
139
|
|
|
136
140
|
<!-- ========================== -->
|
|
137
141
|
<!-- ICON LIBRARIES -->
|
|
138
142
|
<!-- ========================== -->
|
|
139
|
-
<!-- Bootstrap Icons
|
|
140
|
-
<link rel="stylesheet" href="
|
|
143
|
+
<!-- Bootstrap Icons (bundled with theme; fonts use relative paths in CSS) -->
|
|
144
|
+
<link rel="stylesheet" href="{{ '/assets/vendor/bootstrap-icons/font/bootstrap-icons.css' | relative_url }}">
|
|
141
145
|
|
|
142
146
|
<!-- ========================== -->
|
|
143
147
|
<!-- CUSTOM THEME STYLES -->
|
|
144
148
|
<!-- ========================== -->
|
|
145
|
-
<!-- Primary theme stylesheet - Core styling and layout -->
|
|
149
|
+
<!-- Primary theme stylesheet - Core styling and layout (SCSS pipeline) -->
|
|
146
150
|
<link rel="stylesheet" href="{{ '/assets/css/main.css' | relative_url }}">
|
|
147
151
|
|
|
148
|
-
<!--
|
|
149
|
-
<link rel="stylesheet" href="{{'/assets/css/custom.css' | relative_url }}">
|
|
152
|
+
<!-- Optional fork overrides: add assets/css/user-overrides.css locally if needed (not shipped by default). -->
|
|
150
153
|
|
|
151
154
|
<!-- Statistics page specific styles -->
|
|
152
155
|
{% if page.layout == 'stats' %}
|
|
@@ -161,4 +164,4 @@
|
|
|
161
164
|
|
|
162
165
|
<!-- Docs CSS - Alternative stylesheet, currently disabled due to scroll spy issues -->
|
|
163
166
|
<!-- TODO: Replace with compiled Sass when scroll spy functionality is fixed -->
|
|
164
|
-
<!--
|
|
167
|
+
<!-- Optional docs.css link removed; use _sass/core/_docs-layout.scss → main.css -->
|
data/_includes/core/header.html
CHANGED
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
Skip to main content
|
|
43
43
|
</a>
|
|
44
44
|
|
|
45
|
-
<header id="navbar" class="container-fluid text-center fixed-top" role="
|
|
45
|
+
<header id="navbar" class="container-fluid text-center fixed-top" role="banner">
|
|
46
46
|
|
|
47
47
|
<!-- ================================ -->
|
|
48
48
|
<!-- TOP NAVIGATION BAR -->
|
|
@@ -53,21 +53,29 @@
|
|
|
53
53
|
<!-- PROGRESS BAR INDICATOR -->
|
|
54
54
|
<!-- ========================== -->
|
|
55
55
|
<!-- Fixed position progress bar for page loading feedback -->
|
|
56
|
-
<div class="nanobar" id="top-progress-bar" style="position: fixed;">
|
|
56
|
+
<div class="nanobar" id="top-progress-bar" style="position: fixed;" role="progressbar" aria-label="Page loading progress" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">
|
|
57
57
|
<div class="bar"></div>
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
60
|
<!-- ========================== -->
|
|
61
61
|
<!-- MAIN NAVIGATION CONTAINER -->
|
|
62
62
|
<!-- ========================== -->
|
|
63
|
-
<nav class="container-xl order-2 order-lg-1
|
|
63
|
+
<nav class="container-xl order-2 order-lg-1 d-flex align-items-center gap-1 flex-wrap flex-lg-nowrap navbar-main" aria-label="Primary navigation">
|
|
64
|
+
|
|
65
|
+
<!-- Leading cluster: sidebar toggle + brand + titles (grid column 1 on lg+) -->
|
|
66
|
+
<div class="navbar-main-start d-flex align-items-center gap-1 gap-lg-2 min-w-0 flex-shrink-1">
|
|
64
67
|
|
|
65
68
|
<!-- ========================== -->
|
|
66
69
|
<!-- MOBILE MENU CONTROLS -->
|
|
67
70
|
<!-- ========================== -->
|
|
68
71
|
|
|
69
|
-
<!-- Left Sidebar Toggle - Mobile view only -->
|
|
70
|
-
{% assign sidebar_nav =
|
|
72
|
+
<!-- Left Sidebar Toggle - Mobile view only (omit when page.sidebar: false — matches default layout aside) -->
|
|
73
|
+
{% assign sidebar_nav = nil %}
|
|
74
|
+
{% if page.sidebar != false %}
|
|
75
|
+
{% if page.sidebar and page.sidebar.nav %}
|
|
76
|
+
{% assign sidebar_nav = page.sidebar.nav %}
|
|
77
|
+
{% endif %}
|
|
78
|
+
{% endif %}
|
|
71
79
|
{% assign sidebar_has_content = false %}
|
|
72
80
|
{% if sidebar_nav %}
|
|
73
81
|
{% if sidebar_nav == "auto" or sidebar_nav == "categories" %}
|
|
@@ -84,8 +92,9 @@
|
|
|
84
92
|
data-bs-toggle="offcanvas"
|
|
85
93
|
data-bs-target="#bdSidebar"
|
|
86
94
|
aria-controls="bdSidebar"
|
|
87
|
-
aria-label="Toggle sidebar navigation"
|
|
88
|
-
|
|
95
|
+
aria-label="Toggle sidebar navigation"
|
|
96
|
+
aria-expanded="false">
|
|
97
|
+
<span class="bi bi-list" aria-hidden="true"></span>
|
|
89
98
|
</button>
|
|
90
99
|
</div>
|
|
91
100
|
{% endif %}
|
|
@@ -95,9 +104,9 @@
|
|
|
95
104
|
<!-- ========================== -->
|
|
96
105
|
<div class="navbar-brand-group d-inline-flex align-items-center gap-2">
|
|
97
106
|
<!-- Home Navigation Button (Desktop only) -->
|
|
98
|
-
<div class="navbar-home-links d-none d-lg-inline-flex">
|
|
107
|
+
<div class="navbar-home-links d-none d-lg-inline-flex" role="navigation" aria-label="Quick navigation">
|
|
99
108
|
{%- for home in site.data.navigation.home -%}
|
|
100
|
-
<a class="btn" href="{{ home.url | relative_url }}" aria-label="{{ home.title }}" title="{{ home.title }}">
|
|
109
|
+
<a class="btn" href="{{ home.url | relative_url }}" aria-label="{{ home.title }}" title="{{ home.title }}" {% if home.url == page.url %}aria-current="page"{% endif %}>
|
|
101
110
|
<i class="{{ site.default_icon}} {{ home.icon }}"></i>
|
|
102
111
|
</a>
|
|
103
112
|
{% endfor %}
|
|
@@ -106,8 +115,8 @@
|
|
|
106
115
|
<!-- Brand Logo Link to Root -->
|
|
107
116
|
<!-- Logo path configured in _config.yml -->
|
|
108
117
|
{% capture logo_path %}{{ site.logo }}{% endcapture %}
|
|
109
|
-
<a class="navbar-brand" href="{{ site.baseurl }}/" aria-label="Home">
|
|
110
|
-
<img src="{{ logo_path | relative_url }}" alt="
|
|
118
|
+
<a class="navbar-brand" href="{{ site.baseurl }}/" aria-label="Home - {{ site.title }}" {% if page.url == '/' %}aria-current="page"{% endif %}>
|
|
119
|
+
<img src="{{ logo_path | relative_url }}" alt="{{ site.title }} logo" width="30" height="30">
|
|
111
120
|
</a>
|
|
112
121
|
</div>
|
|
113
122
|
|
|
@@ -116,6 +125,8 @@
|
|
|
116
125
|
<!-- ========================== -->
|
|
117
126
|
<!-- Site title and subtitle display -->
|
|
118
127
|
{% include core/branding.html %}
|
|
128
|
+
|
|
129
|
+
</div>
|
|
119
130
|
|
|
120
131
|
<!-- ========================== -->
|
|
121
132
|
<!-- MAIN NAVIGATION MENU -->
|
|
@@ -126,18 +137,17 @@
|
|
|
126
137
|
<!-- ========================== -->
|
|
127
138
|
<!-- UTILITY CONTROLS -->
|
|
128
139
|
<!-- ========================== -->
|
|
129
|
-
<div class="navbar-utility-controls d-flex align-items-center">
|
|
140
|
+
<div class="navbar-utility-controls d-flex align-items-center" role="group" aria-label="Utility controls">
|
|
130
141
|
<!-- Search Modal Toggle -->
|
|
131
142
|
<button
|
|
132
143
|
class="btn nav-search-button"
|
|
133
144
|
type="button"
|
|
134
|
-
data-bs-toggle="modal"
|
|
135
|
-
data-bs-target="#siteSearchModal"
|
|
136
145
|
data-search-toggle
|
|
137
146
|
aria-label="Open search"
|
|
138
|
-
|
|
147
|
+
aria-haspopup="dialog"
|
|
148
|
+
title="Search site content"
|
|
139
149
|
>
|
|
140
|
-
<i class="{{site.default_icon}} bi-search"></i>
|
|
150
|
+
<i class="{{site.default_icon}} bi-search" aria-hidden="true"></i>
|
|
141
151
|
<span class="nav-link-text d-none d-xl-inline ms-1">Search</span>
|
|
142
152
|
</button>
|
|
143
153
|
|
|
@@ -147,10 +157,11 @@
|
|
|
147
157
|
type="button"
|
|
148
158
|
data-bs-toggle="modal"
|
|
149
159
|
data-bs-target="#info-section"
|
|
150
|
-
aria-label="
|
|
151
|
-
|
|
160
|
+
aria-label="Open settings"
|
|
161
|
+
aria-haspopup="dialog"
|
|
162
|
+
title="Site settings and information"
|
|
152
163
|
>
|
|
153
|
-
<i class="{{site.default_icon}} bi-gear"></i>
|
|
164
|
+
<i class="{{site.default_icon}} bi-gear" aria-hidden="true"></i>
|
|
154
165
|
</button>
|
|
155
166
|
|
|
156
167
|
<!-- Navigation Menu Toggle - Mobile view -->
|
|
@@ -160,8 +171,9 @@
|
|
|
160
171
|
data-bs-toggle="offcanvas"
|
|
161
172
|
data-bs-target="#bdNavbar"
|
|
162
173
|
aria-controls="bdNavbar"
|
|
163
|
-
aria-label="Toggle navigation"
|
|
164
|
-
|
|
174
|
+
aria-label="Toggle main navigation"
|
|
175
|
+
aria-expanded="false">
|
|
176
|
+
<span class="bi bi-three-dots" aria-hidden="true"></span>
|
|
165
177
|
</button>
|
|
166
178
|
</div>
|
|
167
179
|
</div>
|
|
@@ -1,125 +1,131 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
file: navbar.html
|
|
3
|
-
path: /includes/navbar.html
|
|
4
|
-
includes:
|
|
5
|
-
purpose: Offcanvas main navigation following Bootstrap 5 best practices
|
|
6
|
-
with hover-activated dropdowns for desktop
|
|
7
|
-
-->
|
|
8
|
-
|
|
9
|
-
<!-- Navigation Links - Offcanvas -->
|
|
10
|
-
<div class="offcanvas offcanvas-end col-lg-2" tabindex="-1" id="bdNavbar" aria-labelledby="mainNavOffcanvasLabel">
|
|
11
|
-
|
|
12
|
-
<!-- Main Navigation Header - Offcanvas -->
|
|
13
|
-
<div class="offcanvas-header border-bottom">
|
|
14
|
-
<
|
|
15
|
-
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#bdNavbar"></button>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
<!-- Main Navigation Body - Offcanvas -->
|
|
19
|
-
<div class="offcanvas-body">
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
{%-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{%- if link.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
{
|
|
68
|
-
|
|
69
|
-
{%- endif -%}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
{
|
|
85
|
-
|
|
86
|
-
{%- endif -%}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
1
|
+
<!--
|
|
2
|
+
file: navbar.html
|
|
3
|
+
path: /includes/navbar.html
|
|
4
|
+
includes:
|
|
5
|
+
purpose: Offcanvas main navigation following Bootstrap 5 best practices
|
|
6
|
+
with hover-activated dropdowns for desktop and accessible interactions
|
|
7
|
+
-->
|
|
8
|
+
|
|
9
|
+
<!-- Navigation Links - Offcanvas -->
|
|
10
|
+
<div class="offcanvas offcanvas-end col-lg-2" tabindex="-1" id="bdNavbar" aria-labelledby="mainNavOffcanvasLabel" aria-modal="true" role="dialog">
|
|
11
|
+
|
|
12
|
+
<!-- Main Navigation Header - Offcanvas -->
|
|
13
|
+
<div class="offcanvas-header border-bottom">
|
|
14
|
+
<h2 class="offcanvas-title h5 mb-0" id="mainNavOffcanvasLabel">Main Navigation</h2>
|
|
15
|
+
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close navigation menu" data-bs-target="#bdNavbar"></button>
|
|
16
|
+
</div>
|
|
17
|
+
|
|
18
|
+
<!-- Main Navigation Body - Offcanvas -->
|
|
19
|
+
<div class="offcanvas-body">
|
|
20
|
+
<!-- Desktop: width is the grid middle track; labels ellipsis or icon-only via container query -->
|
|
21
|
+
<div class="bd-navbar-nav-viewport">
|
|
22
|
+
<ul class="navbar-nav justify-content-lg-center text-start flex-grow-1" role="menubar">
|
|
23
|
+
<li class="nav-item d-lg-none" role="none">
|
|
24
|
+
<a class="nav-link" href="{{ '/' | relative_url }}" role="menuitem" {% if page.url == '/' %}aria-current="page"{% endif %}>
|
|
25
|
+
<i class="{{site.default_icon}} bi-house me-2" aria-hidden="true"></i>
|
|
26
|
+
Home
|
|
27
|
+
</a>
|
|
28
|
+
</li>
|
|
29
|
+
{%- for link in site.data.navigation.main -%}
|
|
30
|
+
{%- assign has_children = link.children and link.children.size > 0 -%}
|
|
31
|
+
|
|
32
|
+
{%- if has_children -%}
|
|
33
|
+
<li class="nav-item dropdown d-flex align-items-center nav-hover-dropdown" role="none">
|
|
34
|
+
<!-- Parent link navigates directly -->
|
|
35
|
+
<a
|
|
36
|
+
class="nav-link"
|
|
37
|
+
href="{{ link.url | relative_url }}"
|
|
38
|
+
role="menuitem"
|
|
39
|
+
{%- if link.url == page.url -%} aria-current="page"{%- endif -%}
|
|
40
|
+
title="{{ link.title }}"
|
|
41
|
+
>
|
|
42
|
+
{%- if link.icon -%}
|
|
43
|
+
<i class="{{site.default_icon}} {{ link.icon }}" aria-hidden="true"></i>
|
|
44
|
+
{%- endif -%}
|
|
45
|
+
<span class="nav-link-text">{{ link.title }}</span>
|
|
46
|
+
</a>
|
|
47
|
+
|
|
48
|
+
<!-- Split toggle opens the dropdown (click on mobile, hover on desktop) -->
|
|
49
|
+
<!-- Note: No data-bs-toggle="dropdown" — custom JS handles all interactions
|
|
50
|
+
to avoid Bootstrap's native handler conflicting with our toggle logic -->
|
|
51
|
+
<button
|
|
52
|
+
class="nav-link dropdown-toggle dropdown-toggle-split ms-1 px-1 btn"
|
|
53
|
+
type="button"
|
|
54
|
+
id="dropdown-{{ link.title | slugify }}"
|
|
55
|
+
aria-expanded="false"
|
|
56
|
+
aria-label="Toggle {{ link.title }} submenu"
|
|
57
|
+
aria-haspopup="true"
|
|
58
|
+
>
|
|
59
|
+
<span class="visually-hidden">Toggle {{ link.title }} submenu</span>
|
|
60
|
+
</button>
|
|
61
|
+
|
|
62
|
+
<ul class="dropdown-menu dropdown-menu-start" aria-labelledby="dropdown-{{ link.title | slugify }}" role="menu">
|
|
63
|
+
{%- for child in link.children -%}
|
|
64
|
+
<li role="none">
|
|
65
|
+
<a
|
|
66
|
+
class="dropdown-item"
|
|
67
|
+
href="{{ child.url | relative_url }}"
|
|
68
|
+
role="menuitem"
|
|
69
|
+
{%- if child.url == page.url -%} aria-current="page"{%- endif -%}
|
|
70
|
+
>
|
|
71
|
+
{%- if child.icon -%}
|
|
72
|
+
<i class="{{site.default_icon}} {{ child.icon }} me-2" aria-hidden="true"></i>
|
|
73
|
+
{%- endif -%}
|
|
74
|
+
{{ child.title }}
|
|
75
|
+
</a>
|
|
76
|
+
</li>
|
|
77
|
+
{%- endfor -%}
|
|
78
|
+
</ul>
|
|
79
|
+
</li>
|
|
80
|
+
{%- else -%}
|
|
81
|
+
<li class="nav-item" role="none">
|
|
82
|
+
<a
|
|
83
|
+
class="nav-link"
|
|
84
|
+
href="{{ link.url | relative_url }}"
|
|
85
|
+
role="menuitem"
|
|
86
|
+
{%- if link.url == page.url -%} aria-current="page"{%- endif -%}
|
|
87
|
+
title="{{ link.title }}"
|
|
88
|
+
>
|
|
89
|
+
{%- if link.icon -%}
|
|
90
|
+
<i class="{{site.default_icon}} {{ link.icon }}" aria-hidden="true"></i>
|
|
91
|
+
{%- endif -%}
|
|
92
|
+
<span class="nav-link-text">{{ link.title }}</span>
|
|
93
|
+
</a>
|
|
94
|
+
</li>
|
|
95
|
+
{%- endif -%}
|
|
96
|
+
{%- endfor -%}
|
|
97
|
+
<li class="nav-item d-lg-none" role="none">
|
|
98
|
+
<button
|
|
99
|
+
class="nav-link btn btn-link text-start w-100"
|
|
100
|
+
type="button"
|
|
101
|
+
data-search-toggle
|
|
102
|
+
aria-label="Open search"
|
|
103
|
+
aria-haspopup="dialog"
|
|
104
|
+
>
|
|
105
|
+
<i class="{{site.default_icon}} bi-search me-2" aria-hidden="true"></i>
|
|
106
|
+
Search
|
|
107
|
+
</button>
|
|
108
|
+
</li>
|
|
109
|
+
<li class="nav-item d-lg-none" role="none">
|
|
110
|
+
<button
|
|
111
|
+
class="nav-link btn btn-link text-start w-100"
|
|
112
|
+
type="button"
|
|
113
|
+
data-bs-toggle="modal"
|
|
114
|
+
data-bs-target="#info-section"
|
|
115
|
+
aria-controls="info-section"
|
|
116
|
+
aria-haspopup="dialog"
|
|
117
|
+
>
|
|
118
|
+
<i class="{{site.default_icon}} bi-gear me-2" aria-hidden="true"></i>
|
|
119
|
+
Settings
|
|
120
|
+
</button>
|
|
121
|
+
</li>
|
|
122
|
+
</ul>
|
|
123
|
+
</div>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
|
|
127
|
+
<!--
|
|
128
|
+
Navigation styles are now in _sass/core/_navbar.scss
|
|
129
|
+
Navigation scripts are now in assets/js/navigation.js
|
|
130
|
+
These are loaded automatically via the theme's asset pipeline
|
|
125
131
|
-->
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
<!-- SIDEBAR HEADER -->
|
|
38
38
|
<!-- ========================== -->
|
|
39
39
|
<!-- Mobile-only header with close button -->
|
|
40
|
-
<div class="offcanvas-header
|
|
41
|
-
<
|
|
42
|
-
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#bdSidebar"></button>
|
|
40
|
+
<div class="offcanvas-header">
|
|
41
|
+
<h2 class="offcanvas-title h5 mb-0" id="bdSidebarOffcanvasLabel">Browse docs</h2>
|
|
42
|
+
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close documentation sidebar" data-bs-target="#bdSidebar"></button>
|
|
43
43
|
</div>
|
|
44
44
|
|
|
45
45
|
<!-- ========================== -->
|
|
@@ -6,14 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
<!-- TOC button in mobile view - Floating Action Button pattern -->
|
|
8
8
|
<!-- Positioned above back-to-top button to prevent overlap -->
|
|
9
|
-
<div class="d-lg-none position-fixed bd-toc-fab"
|
|
9
|
+
<div class="d-lg-none position-fixed bd-toc-fab">
|
|
10
10
|
<button class="btn btn-primary rounded-circle shadow-lg bd-toc-toggle"
|
|
11
11
|
type="button"
|
|
12
12
|
data-bs-toggle="offcanvas"
|
|
13
13
|
data-bs-target="#tocContents"
|
|
14
14
|
aria-controls="tocContents"
|
|
15
|
-
aria-label="Toggle Table of Contents"
|
|
16
|
-
style="width: 56px; height: 56px;">
|
|
15
|
+
aria-label="Toggle Table of Contents">
|
|
17
16
|
<i class="bi bi-list-ul fs-5"></i>
|
|
18
17
|
</button>
|
|
19
18
|
</div>
|
|
@@ -21,8 +20,8 @@
|
|
|
21
20
|
<!-- Right sidebar container -->
|
|
22
21
|
<div class="offcanvas-lg offcanvas-end" tabindex="-1" id="tocContents" aria-labelledby="tocLabel">
|
|
23
22
|
<div class="offcanvas-header">
|
|
24
|
-
<
|
|
25
|
-
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close" data-bs-target="#tocContents"></button>
|
|
23
|
+
<h2 class="offcanvas-title h5 mb-0" id="tocLabel">Table of Contents</h2>
|
|
24
|
+
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close table of contents" data-bs-target="#tocContents"></button>
|
|
26
25
|
</div>
|
|
27
26
|
<div class="offcanvas-body">
|
|
28
27
|
<!-- Table of contents -->
|
|
@@ -35,9 +34,6 @@
|
|
|
35
34
|
</strong>
|
|
36
35
|
</div>
|
|
37
36
|
|
|
38
|
-
<!-- TOC list -->
|
|
39
|
-
|
|
40
|
-
<!-- TOC list -->
|
|
41
37
|
{% include content/toc.html sanitize=true html=content h_min=1 h_max=3 class="list-group-flush" item_class="list-group-item" anchor_class="" skip_no_ids=true %}
|
|
42
38
|
</nav>
|
|
43
39
|
</div>
|
data/_includes/search-data.json
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
[
|
|
2
2
|
{%- assign search_pages = site.pages | where_exp: "item", "item.title" -%}
|
|
3
|
-
{%- assign search_posts = site.posts -%}
|
|
4
3
|
{%- assign search_docs = site.documents -%}
|
|
5
|
-
{%- assign search_items = search_pages | concat:
|
|
4
|
+
{%- assign search_items = search_pages | concat: search_docs -%}
|
|
6
5
|
{%- assign content_limit = site.search.content_length | default: 1000 -%}
|
|
7
6
|
{%- assign first = true -%}
|
|
8
7
|
{%- for item in search_items -%}
|
data/_layouts/landing.html
CHANGED
|
@@ -47,13 +47,13 @@ layout: root
|
|
|
47
47
|
<!-- ================================ -->
|
|
48
48
|
<!-- HERO SECTION -->
|
|
49
49
|
<!-- ================================ -->
|
|
50
|
-
<div class="bg-primary text-white position-relative overflow-hidden">
|
|
50
|
+
<div class="bg-primary text-white position-relative overflow-hidden landing-hero">
|
|
51
51
|
<div class="container-xl py-5 px-4 px-md-5">
|
|
52
52
|
<div class="row align-items-center min-vh-50 g-4 g-lg-5">
|
|
53
|
-
<div class="col-lg-6 order-
|
|
54
|
-
<h1 class="display-4 fw-bold mb-3
|
|
55
|
-
<p class="lead mb-4
|
|
56
|
-
<div class="d-flex flex-column flex-md-row gap-3
|
|
53
|
+
<div class="col-lg-6 order-1 landing-hero-copy">
|
|
54
|
+
<h1 class="display-4 fw-bold mb-3">{{ page.title }}</h1>
|
|
55
|
+
<p class="lead mb-4">{{ page.description }}</p>
|
|
56
|
+
<div class="d-flex flex-column flex-md-row gap-3 flex-wrap">
|
|
57
57
|
<a href="#get-started" class="btn btn-light btn-lg">
|
|
58
58
|
<i class="bi bi-rocket-takeoff me-2"></i>Get Started
|
|
59
59
|
</a>
|
|
@@ -65,13 +65,27 @@ layout: root
|
|
|
65
65
|
</a>
|
|
66
66
|
</div>
|
|
67
67
|
</div>
|
|
68
|
-
<div class="col-lg-6 text-center order-
|
|
68
|
+
<div class="col-lg-6 text-center order-2">
|
|
69
69
|
{% if page.hero_image %}
|
|
70
|
-
<
|
|
70
|
+
<div class="landing-hero-media ratio ratio-4x3 mx-auto shadow-lg rounded overflow-hidden">
|
|
71
|
+
<img
|
|
72
|
+
src="{{ page.hero_image | relative_url }}"
|
|
73
|
+
alt="{{ page.title }}"
|
|
74
|
+
class="w-100 h-100"
|
|
75
|
+
width="800"
|
|
76
|
+
height="600"
|
|
77
|
+
loading="eager"
|
|
78
|
+
decoding="async"
|
|
79
|
+
fetchpriority="high"
|
|
80
|
+
style="object-fit: contain;"
|
|
81
|
+
>
|
|
82
|
+
</div>
|
|
71
83
|
{% else %}
|
|
72
|
-
<div class="
|
|
73
|
-
<
|
|
74
|
-
|
|
84
|
+
<div class="landing-hero-media ratio ratio-4x3 mx-auto shadow-lg rounded overflow-hidden">
|
|
85
|
+
<div class="position-absolute top-0 start-0 w-100 h-100 d-flex flex-column align-items-center justify-content-center bg-secondary bg-opacity-25 text-body rounded">
|
|
86
|
+
<i class="bi bi-code-square display-1"></i>
|
|
87
|
+
<p class="mt-3 mb-0 px-3">Jekyll Theme</p>
|
|
88
|
+
</div>
|
|
75
89
|
</div>
|
|
76
90
|
{% endif %}
|
|
77
91
|
</div>
|
|
@@ -151,4 +165,9 @@ layout: root
|
|
|
151
165
|
{% include landing/landing-install-cards.html %}
|
|
152
166
|
</div>
|
|
153
167
|
</div>
|
|
154
|
-
</div>
|
|
168
|
+
</div>
|
|
169
|
+
|
|
170
|
+
<!-- ================================ -->
|
|
171
|
+
<!-- AUTHOR / E-E-A-T SECTION -->
|
|
172
|
+
<!-- ================================ -->
|
|
173
|
+
{% include components/author-eeat.html %}
|