jekyll-theme-zer0 0.21.2 → 0.22.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 +54 -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 +8 -3
- 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 +119 -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/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
|
@@ -1,35 +1,46 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
file: halfmoon.html
|
|
3
3
|
path: _includes/halfmoon.html
|
|
4
|
-
description:
|
|
4
|
+
description: Dark / light / auto theme switcher for the settings modal (Bootstrap dropdown).
|
|
5
5
|
-->
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
<
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
7
|
+
<div class="dropdown bd-theme-dropdown">
|
|
8
|
+
<button
|
|
9
|
+
type="button"
|
|
10
|
+
class="btn btn-outline-secondary dropdown-toggle d-flex align-items-center justify-content-center px-2 py-2"
|
|
11
|
+
id="bd-theme"
|
|
12
|
+
data-bs-toggle="dropdown"
|
|
13
|
+
data-bs-popper-config='{"strategy":"fixed"}'
|
|
14
|
+
aria-expanded="false"
|
|
15
|
+
aria-haspopup="true"
|
|
16
|
+
aria-label="Toggle theme (dark)"
|
|
17
|
+
>
|
|
18
|
+
<svg class="bi theme-icon-active flex-shrink-0" width="1.15em" height="1.15em" fill="currentColor" aria-hidden="true">
|
|
19
|
+
<use href="#moon-stars-fill"></use>
|
|
20
|
+
</svg>
|
|
21
|
+
<span class="visually-hidden" id="bd-theme-text">Toggle theme</span>
|
|
22
|
+
</button>
|
|
23
|
+
<ul class="dropdown-menu dropdown-menu-end shadow-sm bd-theme-menu py-1" aria-labelledby="bd-theme">
|
|
13
24
|
<li>
|
|
14
|
-
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="light" aria-pressed="false">
|
|
15
|
-
<svg class="bi
|
|
16
|
-
Light
|
|
17
|
-
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
|
|
25
|
+
<button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="light" aria-pressed="false">
|
|
26
|
+
<svg class="bi flex-shrink-0 opacity-50" width="1em" height="1em" fill="currentColor" aria-hidden="true"><use href="#sun-fill"></use></svg>
|
|
27
|
+
<span>Light</span>
|
|
28
|
+
<svg class="bi ms-auto flex-shrink-0 d-none" width="1em" height="1em" fill="currentColor" aria-hidden="true"><use href="#check2"></use></svg>
|
|
18
29
|
</button>
|
|
19
30
|
</li>
|
|
20
31
|
<li>
|
|
21
|
-
<button type="button" class="dropdown-item d-flex align-items-center active" data-bs-theme-value="dark" aria-pressed="true">
|
|
22
|
-
<svg class="bi
|
|
23
|
-
Dark
|
|
24
|
-
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
|
|
32
|
+
<button type="button" class="dropdown-item d-flex align-items-center gap-2 active" data-bs-theme-value="dark" aria-pressed="true">
|
|
33
|
+
<svg class="bi flex-shrink-0 opacity-50" width="1em" height="1em" fill="currentColor" aria-hidden="true"><use href="#moon-stars-fill"></use></svg>
|
|
34
|
+
<span>Dark</span>
|
|
35
|
+
<svg class="bi ms-auto flex-shrink-0 d-none" width="1em" height="1em" fill="currentColor" aria-hidden="true"><use href="#check2"></use></svg>
|
|
25
36
|
</button>
|
|
26
37
|
</li>
|
|
27
38
|
<li>
|
|
28
|
-
<button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="auto" aria-pressed="false">
|
|
29
|
-
<svg class="bi
|
|
30
|
-
Auto
|
|
31
|
-
<svg class="bi ms-auto d-none"><use href="#check2"></use></svg>
|
|
39
|
+
<button type="button" class="dropdown-item d-flex align-items-center gap-2" data-bs-theme-value="auto" aria-pressed="false">
|
|
40
|
+
<svg class="bi flex-shrink-0 opacity-50" width="1em" height="1em" fill="currentColor" aria-hidden="true"><use href="#circle-half"></use></svg>
|
|
41
|
+
<span>Auto</span>
|
|
42
|
+
<svg class="bi ms-auto flex-shrink-0 d-none" width="1em" height="1em" fill="currentColor" aria-hidden="true"><use href="#check2"></use></svg>
|
|
32
43
|
</button>
|
|
33
44
|
</li>
|
|
34
45
|
</ul>
|
|
35
|
-
</div>
|
|
46
|
+
</div>
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
===================================================================
|
|
22
22
|
-->
|
|
23
23
|
|
|
24
|
+
{% include components/env-detect.html %}
|
|
24
25
|
<!-- Settings Modal -->
|
|
25
26
|
<div class="modal fade" id="info-section" tabindex="-1" aria-labelledby="infoSectionLabel" aria-hidden="true">
|
|
26
27
|
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
|
|
@@ -48,10 +49,10 @@
|
|
|
48
49
|
<button class="nav-link" id="environment-tab" data-bs-toggle="tab" data-bs-target="#environment-pane" type="button" role="tab" aria-controls="environment-pane" aria-selected="false">
|
|
49
50
|
<i class="bi bi-hdd-network me-1"></i>
|
|
50
51
|
<span class="d-none d-sm-inline">Environment</span>
|
|
51
|
-
{% if
|
|
52
|
-
<span class="badge bg-warning text-dark ms-1 d-none d-md-inline-block">Dev</span>
|
|
53
|
-
{% else %}
|
|
52
|
+
{% if is_production %}
|
|
54
53
|
<span class="badge bg-success ms-1 d-none d-md-inline-block">Prod</span>
|
|
54
|
+
{% else %}
|
|
55
|
+
<span class="badge bg-warning text-dark ms-1 d-none d-md-inline-block">Dev</span>
|
|
55
56
|
{% endif %}
|
|
56
57
|
</button>
|
|
57
58
|
</li>
|
|
@@ -1,35 +1,28 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
===================================================================
|
|
3
|
-
JAVASCRIPT
|
|
3
|
+
JAVASCRIPT - Local vendor libraries
|
|
4
4
|
===================================================================
|
|
5
5
|
|
|
6
6
|
File: js-cdn.html
|
|
7
7
|
Path: _includes/components/js-cdn.html
|
|
8
|
-
Purpose: Load
|
|
8
|
+
Purpose: Load jQuery and Bootstrap from assets/vendor (no runtime CDN).
|
|
9
9
|
|
|
10
10
|
Libraries:
|
|
11
|
-
- jQuery 3.7.1
|
|
12
|
-
- Bootstrap 5.3.3
|
|
11
|
+
- jQuery 3.7.1
|
|
12
|
+
- Bootstrap 5.3.3 bundle (includes Popper.js)
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
loading is not needed and can cause conflicts.
|
|
16
|
-
|
|
17
|
-
Source: https://getbootstrap.com/docs/5.3/getting-started/contents/
|
|
14
|
+
Refresh: ./scripts/vendor-install.sh (see vendor-manifest.json)
|
|
18
15
|
===================================================================
|
|
19
16
|
-->
|
|
20
17
|
|
|
21
18
|
<!-- jQuery 3.7.1 -->
|
|
22
|
-
<script src="
|
|
23
|
-
integrity="sha256-/JqT3SQfawRcv/BIHPThkBvs0OEvtFFmqPF/lYI/Cxo="
|
|
24
|
-
crossorigin="anonymous"></script>
|
|
19
|
+
<script src="{{ '/assets/vendor/jquery/jquery-3.7.1.min.js' | relative_url }}"></script>
|
|
25
20
|
|
|
26
21
|
<!-- Bootstrap 5.3.3 Bundle (includes Popper.js) -->
|
|
27
|
-
<script src="
|
|
28
|
-
integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz"
|
|
29
|
-
crossorigin="anonymous"></script>
|
|
22
|
+
<script src="{{ '/assets/vendor/bootstrap/js/bootstrap.bundle.min.js' | relative_url }}"></script>
|
|
30
23
|
|
|
31
24
|
<!-- Navigation scripts - Offcanvas, dropdowns, mobile interactions -->
|
|
32
|
-
<script src="{{ '/assets/js/navigation.js' | relative_url }}"></script>
|
|
25
|
+
<script src="{{ '/assets/js/navigation.js' | relative_url }}?t={{ site.time | date: '%s' }}"></script>
|
|
33
26
|
|
|
34
27
|
<!-- Navigation ES6 Modules - Enhanced sidebar, scroll spy, keyboard shortcuts, gestures -->
|
|
35
28
|
<script type="module" src="{{ '/assets/js/modules/navigation/index.js' | relative_url }}"></script>
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
- Supports all Mermaid diagram types (flowcharts, sequence, gantt, etc.)
|
|
27
27
|
|
|
28
28
|
Configuration:
|
|
29
|
-
- Mermaid v10
|
|
29
|
+
- Mermaid v10 bundled locally (_config.yml mermaid.src)
|
|
30
30
|
- Forest theme for dark mode compatibility
|
|
31
31
|
- Client-side code block conversion for GitHub Pages compatibility
|
|
32
32
|
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
===================================================================
|
|
42
42
|
-->
|
|
43
43
|
|
|
44
|
-
<!-- Load Mermaid.js
|
|
45
|
-
<script type="text/javascript" src="
|
|
44
|
+
<!-- Load Mermaid.js (bundled locally) -->
|
|
45
|
+
<script type="text/javascript" src="{{ site.mermaid.src | relative_url }}"></script>
|
|
46
46
|
|
|
47
47
|
<!-- Initialize Mermaid with custom configuration -->
|
|
48
48
|
<script>
|
|
@@ -53,8 +53,11 @@
|
|
|
53
53
|
function getBootstrapTheme() {
|
|
54
54
|
// Check data-bs-theme attribute on html element
|
|
55
55
|
var htmlTheme = document.documentElement.getAttribute('data-bs-theme');
|
|
56
|
-
if (htmlTheme === 'dark' || htmlTheme === '
|
|
57
|
-
return
|
|
56
|
+
if (htmlTheme === 'dark' || htmlTheme === 'wizard') {
|
|
57
|
+
return 'dark';
|
|
58
|
+
}
|
|
59
|
+
if (htmlTheme === 'light') {
|
|
60
|
+
return 'light';
|
|
58
61
|
}
|
|
59
62
|
// Fallback to prefers-color-scheme
|
|
60
63
|
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
@@ -200,7 +203,8 @@
|
|
|
200
203
|
themeVariables: mermaidThemeConfig.themeVariables,
|
|
201
204
|
flowchart: {
|
|
202
205
|
useMaxWidth: true,
|
|
203
|
-
|
|
206
|
+
// SVG labels avoid foreignObject clipping/position bugs with theme CSS
|
|
207
|
+
htmlLabels: false,
|
|
204
208
|
curve: 'basis'
|
|
205
209
|
},
|
|
206
210
|
sequence: {
|
|
@@ -260,7 +264,7 @@
|
|
|
260
264
|
themeVariables: newMermaidConfig.themeVariables,
|
|
261
265
|
flowchart: {
|
|
262
266
|
useMaxWidth: true,
|
|
263
|
-
htmlLabels:
|
|
267
|
+
htmlLabels: false,
|
|
264
268
|
curve: 'basis'
|
|
265
269
|
},
|
|
266
270
|
sequence: {
|
|
@@ -316,8 +320,8 @@
|
|
|
316
320
|
});
|
|
317
321
|
</script>
|
|
318
322
|
|
|
319
|
-
<!--
|
|
320
|
-
<link rel="stylesheet" href="
|
|
323
|
+
<!-- Font Awesome for Mermaid icon support (bundled) -->
|
|
324
|
+
<link rel="stylesheet" href="{{ '/assets/vendor/font-awesome/css/all.min.css' | relative_url }}">
|
|
321
325
|
|
|
322
326
|
<!-- Custom CSS for Mermaid diagrams -->
|
|
323
327
|
<style>
|
|
@@ -11,10 +11,12 @@
|
|
|
11
11
|
<div class="card-body d-flex align-items-start">
|
|
12
12
|
<div>
|
|
13
13
|
<h5 class="card-title">{{ power.name }}</h5>
|
|
14
|
-
|
|
15
|
-
<
|
|
14
|
+
{% if power.version %}
|
|
15
|
+
<p class="card-text small text-body-secondary mb-2">Version {{ power.version }}</p>
|
|
16
|
+
{% endif %}
|
|
17
|
+
<a href="{{ power.url }}" class="btn btn-primary btn-sm" rel="nofollow">Go to site</a>
|
|
16
18
|
</div>
|
|
17
|
-
<i class="{{ power.icon }} fs-1 ms-auto"></i>
|
|
19
|
+
<i class="{{ site.default_icon }} {{ power.icon }} fs-1 ms-auto text-primary" aria-hidden="true"></i>
|
|
18
20
|
</div>
|
|
19
21
|
</div>
|
|
20
22
|
</div>
|
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
<!--
|
|
2
|
-
file: _includes/intro.html
|
|
3
|
-
description: Enhanced intro section with
|
|
4
|
-
path: _includes/intro.html
|
|
2
|
+
file: _includes/content/intro.html
|
|
3
|
+
description: Enhanced intro section with share, edit, and Copilot agent session buttons
|
|
4
|
+
path: _includes/content/intro.html
|
|
5
5
|
features:
|
|
6
6
|
- Responsive share dropdown with multiple social platforms
|
|
7
|
+
- Edit on GitHub quick link
|
|
8
|
+
- Copilot Agent dropdown: select a prompt template to pre-fill a GitHub issue
|
|
9
|
+
- Issue body includes prompt template + page context + environment details
|
|
10
|
+
- Prompts sourced from _data/prompts.yml
|
|
7
11
|
- Properly aligned action buttons at bottom right
|
|
8
12
|
- Improved accessibility with icons and labels
|
|
9
13
|
- Clean button grouping with consistent spacing
|
|
@@ -35,6 +39,14 @@
|
|
|
35
39
|
{% assign preview_path = preview_image | relative_url %}
|
|
36
40
|
{% endif %}
|
|
37
41
|
|
|
42
|
+
{% comment %}
|
|
43
|
+
Build the file path, branch, and repo owner for action buttons.
|
|
44
|
+
{% endcomment %}
|
|
45
|
+
{% assign repo_branch = site.branch | default: "main" %}
|
|
46
|
+
{% assign file_path = page_dir | append: "/" | append: page.path %}
|
|
47
|
+
{% assign repo_parts = site.repository | split: "/" %}
|
|
48
|
+
{% assign repo_owner = repo_parts[0] %}
|
|
49
|
+
|
|
38
50
|
<div class="bd-intro pt-5 ps-lg-2 position-relative" style="
|
|
39
51
|
background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('{{ preview_path | relative_url }}') no-repeat center center / cover;
|
|
40
52
|
color: #fff;">
|
|
@@ -77,8 +89,56 @@
|
|
|
77
89
|
</ul>
|
|
78
90
|
</div>
|
|
79
91
|
|
|
92
|
+
<!-- Copilot Agent Prompt Dropdown -->
|
|
93
|
+
<div class="dropdown">
|
|
94
|
+
<button class="btn btn-success dropdown-toggle" type="button" id="copilotAgentDropdown" data-bs-toggle="dropdown" aria-expanded="false" title="Open a GitHub issue with a Copilot prompt for this page">
|
|
95
|
+
<i class="bi bi-robot"></i>
|
|
96
|
+
<span class="d-none d-sm-inline ms-1">Copilot Agent</span>
|
|
97
|
+
</button>
|
|
98
|
+
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="copilotAgentDropdown">
|
|
99
|
+
{% for prompt in site.data.prompts %}
|
|
100
|
+
{% capture issue_title %}[{{ prompt.label }}] {{ page.title }}{% endcapture %}
|
|
101
|
+
{% capture issue_body %}{{ prompt.body }}
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 📄 Page Context
|
|
105
|
+
|
|
106
|
+
| Field | Value |
|
|
107
|
+
|---|---|
|
|
108
|
+
| **Title** | {{ page.title }} |
|
|
109
|
+
| **URL** | {{ site.url }}{{ page.url }} |
|
|
110
|
+
| **File** | `{{ file_path }}` |
|
|
111
|
+
| **Branch** | `{{ repo_branch }}` |
|
|
112
|
+
| **Layout** | `{{ page.layout }}` |
|
|
113
|
+
| **Collection** | `{{ page.collection }}` |
|
|
114
|
+
| **Author** | {{ page.author | default: site.author.name }} |
|
|
115
|
+
| **Date** | {{ page.date }} |
|
|
116
|
+
| **Last Modified** | {{ page.lastmod }} |
|
|
117
|
+
| **Tags** | {{ page.tags | join: ", " }} |
|
|
118
|
+
| **Categories** | {{ page.categories | join: ", " }} |
|
|
119
|
+
|
|
120
|
+
## 🔧 Environment
|
|
121
|
+
|
|
122
|
+
| Field | Value |
|
|
123
|
+
|---|---|
|
|
124
|
+
| **Repository** | `{{ site.repository }}` |
|
|
125
|
+
| **Site URL** | {{ site.url }} |
|
|
126
|
+
| **Jekyll Env** | `{{ jekyll.environment }}` |
|
|
127
|
+
| **Theme** | `{{ site.theme | default: site.remote_theme }}` |
|
|
128
|
+
| **Base URL** | `{{ site.baseurl }}` |
|
|
129
|
+
{% endcapture %}
|
|
130
|
+
<li>
|
|
131
|
+
<a class="dropdown-item" href="https://github.com/{{ site.repository }}/issues/new?assignees=copilot&labels=ai-agent&title={{ issue_title | url_encode }}&body={{ issue_body | url_encode }}" target="_blank" rel="noopener noreferrer">
|
|
132
|
+
<i class="bi {{ prompt.icon }} me-2"></i>{{ prompt.label }}
|
|
133
|
+
{% if prompt.description %}<small class="text-muted d-block">{{ prompt.description }}</small>{% endif %}
|
|
134
|
+
</a>
|
|
135
|
+
</li>
|
|
136
|
+
{% endfor %}
|
|
137
|
+
</ul>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
80
140
|
<!-- Edit on Github Button -->
|
|
81
|
-
<a href="https://github.com/{{ site.repository }}/blob/
|
|
141
|
+
<a href="https://github.com/{{ site.repository }}/blob/{{ repo_branch }}/{{ file_path }}" class="btn btn-dark">
|
|
82
142
|
<i class="bi bi-github"></i>
|
|
83
143
|
<span class="d-none d-sm-inline ms-1">Edit on GitHub</span>
|
|
84
144
|
</a>
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
===================================================================
|
|
3
|
+
JSON-LD FAQ SCHEMA - FAQPage Structured Data
|
|
4
|
+
===================================================================
|
|
5
|
+
|
|
6
|
+
File: jsonld-faq.html
|
|
7
|
+
Path: _includes/content/jsonld-faq.html
|
|
8
|
+
Purpose: Renders FAQPage schema from page.faq_items front matter
|
|
9
|
+
for rich search results and AI citation injection.
|
|
10
|
+
|
|
11
|
+
Parameters:
|
|
12
|
+
- Reads page.faq_items array from front matter
|
|
13
|
+
- Each item needs: question, answer
|
|
14
|
+
|
|
15
|
+
Usage:
|
|
16
|
+
In page front matter:
|
|
17
|
+
faq_items:
|
|
18
|
+
- question: "What is zer0-mistakes?"
|
|
19
|
+
answer: "A Jekyll theme..."
|
|
20
|
+
In layout/page:
|
|
21
|
+
include content/jsonld-faq.html
|
|
22
|
+
|
|
23
|
+
Dependencies:
|
|
24
|
+
- Page front matter with faq_items array
|
|
25
|
+
===================================================================
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
{% if page.faq_items and page.faq_items.size > 0 %}
|
|
29
|
+
<script type="application/ld+json">
|
|
30
|
+
{
|
|
31
|
+
"@context": "https://schema.org",
|
|
32
|
+
"@type": "FAQPage",
|
|
33
|
+
"mainEntity": [
|
|
34
|
+
{% for item in page.faq_items %}
|
|
35
|
+
{
|
|
36
|
+
"@type": "Question",
|
|
37
|
+
"name": {{ item.question | jsonify }},
|
|
38
|
+
"acceptedAnswer": {
|
|
39
|
+
"@type": "Answer",
|
|
40
|
+
"text": {{ item.answer | jsonify }}
|
|
41
|
+
}
|
|
42
|
+
}{% unless forloop.last %},{% endunless %}
|
|
43
|
+
{% endfor %}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
</script>
|
|
47
|
+
{% endif %}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
<!--
|
|
2
|
+
===================================================================
|
|
3
|
+
JSON-LD STRUCTURED DATA - SoftwareApplication + WebPage Schema
|
|
4
|
+
===================================================================
|
|
5
|
+
|
|
6
|
+
File: jsonld-software.html
|
|
7
|
+
Path: _includes/content/jsonld-software.html
|
|
8
|
+
Purpose: Provides rich structured data for AI engines and search
|
|
9
|
+
engines to accurately cite and describe the zer0-mistakes
|
|
10
|
+
Jekyll theme as a SoftwareApplication entity.
|
|
11
|
+
|
|
12
|
+
Template Logic:
|
|
13
|
+
- Renders SoftwareApplication schema on the homepage only
|
|
14
|
+
- Links to a WebPage wrapper via @id references
|
|
15
|
+
- Pulls version, author, and description from site config
|
|
16
|
+
|
|
17
|
+
Dependencies:
|
|
18
|
+
- _config.yml: site.url, site.title, site.description, site.author
|
|
19
|
+
- lib/jekyll-theme-zer0/version.rb (version referenced in config)
|
|
20
|
+
|
|
21
|
+
Usage:
|
|
22
|
+
- Included automatically in _includes/core/head.html
|
|
23
|
+
- Conditional: only renders when page.permalink == "/"
|
|
24
|
+
===================================================================
|
|
25
|
+
-->
|
|
26
|
+
|
|
27
|
+
{% if page.permalink == "/" or page.url == "/" %}
|
|
28
|
+
<script type="application/ld+json">
|
|
29
|
+
{
|
|
30
|
+
"@context": "https://schema.org",
|
|
31
|
+
"@graph": [
|
|
32
|
+
{
|
|
33
|
+
"@type": "WebPage",
|
|
34
|
+
"@id": "{{ site.url }}/#webpage",
|
|
35
|
+
"url": "{{ site.url }}/",
|
|
36
|
+
"name": "{{ site.title }} — {{ page.description | default: site.description | strip_html | strip_newlines | escape }}",
|
|
37
|
+
"isPartOf": {
|
|
38
|
+
"@id": "{{ site.url }}/#website"
|
|
39
|
+
},
|
|
40
|
+
"about": {
|
|
41
|
+
"@id": "{{ site.url }}/#software"
|
|
42
|
+
},
|
|
43
|
+
"datePublished": "{{ page.created | default: '2024-02-10' }}",
|
|
44
|
+
"dateModified": "{{ page.lastmod | default: site.time | date: '%Y-%m-%d' }}",
|
|
45
|
+
"description": "{{ page.description | default: site.description | strip_html | strip_newlines | escape }}",
|
|
46
|
+
"inLanguage": "{{ site.locale | default: 'en-US' }}"
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"@type": "WebSite",
|
|
50
|
+
"@id": "{{ site.url }}/#website",
|
|
51
|
+
"url": "{{ site.url }}/",
|
|
52
|
+
"name": "{{ site.title }}",
|
|
53
|
+
"publisher": {
|
|
54
|
+
"@id": "{{ site.url }}/#author"
|
|
55
|
+
},
|
|
56
|
+
"inLanguage": "{{ site.locale | default: 'en-US' }}"
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"@type": "SoftwareApplication",
|
|
60
|
+
"@id": "{{ site.url }}/#software",
|
|
61
|
+
"name": "{{ site.title }}",
|
|
62
|
+
"alternateName": "jekyll-theme-zer0",
|
|
63
|
+
"description": "GitHub Pages compatible Jekyll theme with Bootstrap 5.3, featuring Docker-first development, automated installation, and comprehensive documentation.",
|
|
64
|
+
"applicationCategory": "DeveloperApplication",
|
|
65
|
+
"operatingSystem": "Cross-platform (macOS, Linux, Windows via Docker)",
|
|
66
|
+
"url": "{{ site.url }}/",
|
|
67
|
+
"downloadUrl": "https://rubygems.org/gems/jekyll-theme-zer0",
|
|
68
|
+
"installUrl": "https://github.com/bamr87/zer0-mistakes#-quick-start",
|
|
69
|
+
"softwareVersion": "{{ page.version | default: site.version | default: '0.21.2' }}",
|
|
70
|
+
"datePublished": "2024-02-10",
|
|
71
|
+
"dateModified": "{{ site.time | date: '%Y-%m-%d' }}",
|
|
72
|
+
"license": "https://opensource.org/licenses/MIT",
|
|
73
|
+
"isAccessibleForFree": true,
|
|
74
|
+
"offers": {
|
|
75
|
+
"@type": "Offer",
|
|
76
|
+
"price": "0",
|
|
77
|
+
"priceCurrency": "USD"
|
|
78
|
+
},
|
|
79
|
+
"author": {
|
|
80
|
+
"@id": "{{ site.url }}/#author"
|
|
81
|
+
},
|
|
82
|
+
"publisher": {
|
|
83
|
+
"@id": "{{ site.url }}/#author"
|
|
84
|
+
},
|
|
85
|
+
"codeRepository": "https://github.com/bamr87/zer0-mistakes",
|
|
86
|
+
"programmingLanguage": ["Ruby", "Liquid", "HTML", "SCSS", "JavaScript"],
|
|
87
|
+
"runtimePlatform": "Jekyll",
|
|
88
|
+
"featureList": [
|
|
89
|
+
"Bootstrap 5.3.3 responsive UI framework",
|
|
90
|
+
"Docker-first cross-platform development",
|
|
91
|
+
"AI-powered self-healing installation",
|
|
92
|
+
"GitHub Pages native compatibility",
|
|
93
|
+
"Privacy-compliant PostHog analytics",
|
|
94
|
+
"Mermaid diagram rendering",
|
|
95
|
+
"MathJax mathematical notation",
|
|
96
|
+
"Automated semantic versioning and release pipeline",
|
|
97
|
+
"Client-side search functionality",
|
|
98
|
+
"Cookie consent (GDPR/CCPA compliant)",
|
|
99
|
+
"Progressive Web App support",
|
|
100
|
+
"43 documented features with comprehensive tests"
|
|
101
|
+
],
|
|
102
|
+
"screenshot": "{{ site.url }}/assets/images/wizard-on-journey.png",
|
|
103
|
+
"softwareRequirements": "Docker Desktop or Ruby >= 2.7 with Bundler"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"@type": "Person",
|
|
107
|
+
"@id": "{{ site.url }}/#author",
|
|
108
|
+
"name": "{{ site.founder | default: 'Amr Abdel-Motaleb' }}",
|
|
109
|
+
"alternateName": "bamr87",
|
|
110
|
+
"url": "https://github.com/bamr87",
|
|
111
|
+
"sameAs": [
|
|
112
|
+
"https://github.com/bamr87",
|
|
113
|
+
"https://twitter.com/bamr87"
|
|
114
|
+
],
|
|
115
|
+
"jobTitle": "Software Developer",
|
|
116
|
+
"knowsAbout": ["Jekyll", "Docker", "Bootstrap", "GitHub Pages", "Static Site Generation"]
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
</script>
|
|
121
|
+
{% endif %}
|
|
@@ -211,8 +211,8 @@
|
|
|
211
211
|
{% assign total_pages = 0 %}
|
|
212
212
|
{% assign collections_data = '' %}
|
|
213
213
|
|
|
214
|
-
{% comment %}
|
|
215
|
-
{% for page in site.
|
|
214
|
+
{% comment %}Loose Jekyll pages (site.pages in Liquid is the "pages" collection, not these files){% endcomment %}
|
|
215
|
+
{% for page in site.html_pages %}
|
|
216
216
|
{% unless page.sitemap == false %}
|
|
217
217
|
{% assign total_pages = total_pages | plus: 1 %}
|
|
218
218
|
<tr data-collection="pages"
|
|
@@ -32,13 +32,15 @@
|
|
|
32
32
|
|
|
33
33
|
<!-- Title Section -->
|
|
34
34
|
|
|
35
|
-
<div class="navbar-brand site-title">
|
|
36
|
-
<a
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
35
|
+
<div class="navbar-brand site-title mb-0 py-0 me-0 min-w-0">
|
|
36
|
+
<a
|
|
37
|
+
class="nav-link text-body d-inline-flex align-items-center gap-1 min-w-0 p-0 text-decoration-none"
|
|
38
|
+
href="{{ '/' | relative_url }}"
|
|
39
|
+
aria-label="{{ site.title }} — Home"
|
|
40
|
+
>
|
|
41
|
+
<i class="d-none d-md-inline flex-shrink-0 {{ site.default_icon }} {{ site.default_icon }}-{{ site.title_icon | default: 'house' }}" aria-hidden="true"></i>
|
|
42
|
+
<!-- Hidden below md: logo + aria-label carry the brand; md+ shows title (ellipsis from custom.scss) -->
|
|
43
|
+
<span class="site-title-text d-none d-md-inline-block">{{ site.title }}</span>
|
|
42
44
|
</a>
|
|
43
45
|
</div>
|
|
44
46
|
|
data/_includes/core/footer.html
CHANGED
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
</span>
|
|
40
40
|
{% for power in site.powered_by %}
|
|
41
41
|
<li class="btn align-items-end">
|
|
42
|
-
{% capture icon_classes %}{{ site.default_icon }} {{ power.icon | default:
|
|
42
|
+
{% capture icon_classes %}{{ site.default_icon }} {{ power.icon | default: "bi-question-circle" }}{% endcapture %}
|
|
43
43
|
{% if power.url %}
|
|
44
44
|
<a href="{{ power.url }}" rel="nofollow">
|
|
45
45
|
<i class="{{ icon_classes }}" aria-hidden="true"></i>
|
|
@@ -86,10 +86,10 @@
|
|
|
86
86
|
<h5 class="text-uppercase mb-3">Quick Links</h5>
|
|
87
87
|
<ul class="list-unstyled" aria-label="Footer quick links">
|
|
88
88
|
<li><a href="{{ '/' | relative_url }}" class="text-light text-decoration-none">Home</a></li>
|
|
89
|
-
<li><a href="{{ '/about' | relative_url }}" class="text-light text-decoration-none">About</a></li>
|
|
90
|
-
<li><a href="{{ '/services' | relative_url }}" class="text-light text-decoration-none">Services</a></li>
|
|
91
|
-
<li><a href="{{ '/
|
|
92
|
-
<li><a href="{{ '/contact' | relative_url }}" class="text-light text-decoration-none">Contact</a></li>
|
|
89
|
+
<li><a href="{{ '/about/' | relative_url }}" class="text-light text-decoration-none">About</a></li>
|
|
90
|
+
<li><a href="{{ '/services/' | relative_url }}" class="text-light text-decoration-none">Services</a></li>
|
|
91
|
+
<li><a href="{{ '/news/' | relative_url }}" class="text-light text-decoration-none">News</a></li>
|
|
92
|
+
<li><a href="{{ '/contact/' | relative_url }}" class="text-light text-decoration-none">Contact</a></li>
|
|
93
93
|
<li><a href="{{ '/sitemap.xml' | relative_url }}" class="text-light text-decoration-none">Sitemap (XML)</a></li>
|
|
94
94
|
</ul>
|
|
95
95
|
</div>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
{% for link in site.links %}
|
|
117
117
|
{% if link.url %}
|
|
118
118
|
<li class="list-inline-item">
|
|
119
|
-
{% capture link_icon_classes %}{{ site.default_icon }} {{ link.icon | default:
|
|
119
|
+
{% capture link_icon_classes %}{{ site.default_icon }} {{ link.icon | default: "bi-link-45deg" }}{% endcapture %}
|
|
120
120
|
<a href="{{ link.url }}" rel="nofollow" class="text-light text-decoration-none">
|
|
121
121
|
<i class="{{ link_icon_classes }}" aria-hidden="true"></i>
|
|
122
122
|
<span class="d-none d-md-inline">{{ link.label }}</span>
|
|
@@ -137,13 +137,16 @@
|
|
|
137
137
|
<!-- Middle: Subscribe + Policies -->
|
|
138
138
|
<div class="row mb-4 align-items-center g-2">
|
|
139
139
|
<div class="col-md-8">
|
|
140
|
-
<form
|
|
140
|
+
<form class="row g-2" aria-label="Newsletter signup" onsubmit="return false;">
|
|
141
141
|
<div class="col-md-8">
|
|
142
142
|
<label for="footer-email" class="visually-hidden">Email</label>
|
|
143
|
-
<input type="email" name="email" id="footer-email" class="form-control" placeholder="Enter your email"
|
|
143
|
+
<input type="email" name="email" id="footer-email" class="form-control" placeholder="Enter your email" autocomplete="email" disabled aria-describedby="footer-subscribe-hint">
|
|
144
144
|
</div>
|
|
145
145
|
<div class="col-md-4">
|
|
146
|
-
<button type="
|
|
146
|
+
<button type="button" class="btn btn-primary w-100" disabled title="Configure a newsletter endpoint in your site config">Subscribe</button>
|
|
147
|
+
</div>
|
|
148
|
+
<div class="col-12">
|
|
149
|
+
<p id="footer-subscribe-hint" class="small text-white-50 mb-0">Newsletter is a placeholder until you connect a provider.</p>
|
|
147
150
|
</div>
|
|
148
151
|
</form>
|
|
149
152
|
</div>
|