jekyll-theme-zer0 1.29.0 → 1.31.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +886 -2
- data/_data/README.md +2 -0
- data/_data/ai.yml +5 -3
- data/_data/ai_pricing.yml +36 -0
- data/_data/backlog.yml +196 -22
- data/_data/consumers.yml +147 -5
- data/_data/features.yml +147 -21
- data/_data/feedback_types.yml +17 -12
- data/_data/landing.yml +5 -2
- data/_data/navigation/quickstart.yml +4 -0
- data/_data/site_builder.yml +874 -0
- data/_data/theme-manifest.yml +132 -122
- data/_data/ui-text.yml +19 -0
- data/_includes/README.md +11 -1
- data/_includes/analytics/posthog.html +30 -11
- data/_includes/components/README.md +1 -1
- 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 +8 -8
- data/_includes/components/background-image.html +120 -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 +41 -41
- 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 +36 -36
- data/_includes/components/js-cdn.html +15 -15
- data/_includes/components/language-toggle.html +4 -4
- data/_includes/components/mermaid.html +79 -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 +1 -1
- 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 +28 -3
- data/_includes/components/quick-index.html +2 -2
- data/_includes/components/search-modal.html +27 -2
- data/_includes/components/searchbar.html +2 -2
- data/_includes/components/svg-background.html +2 -2
- data/_includes/components/theme-customizer.html +2 -2
- data/_includes/components/theme-info.html +6 -6
- data/_includes/components/theme-preview-gallery.html +23 -23
- data/_includes/content/giscus.html +2 -2
- data/_includes/content/intro.html +15 -8
- data/_includes/content/jsonld-faq.html +2 -2
- data/_includes/content/jsonld-software.html +2 -2
- data/_includes/content/seo.html +12 -4
- data/_includes/content/sitemap.html +247 -290
- data/_includes/content/toc.html +183 -183
- data/_includes/core/branding.html +13 -20
- 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 +31 -18
- data/_includes/core/head.html +128 -92
- data/_includes/core/header.html +85 -54
- data/_includes/core/tokens-inline.html +16 -1
- 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 +21 -18
- data/_includes/navigation/section-sidebar.html +16 -16
- data/_includes/navigation/sidebar-config.html +36 -2
- data/_includes/navigation/sidebar-left.html +15 -15
- data/_includes/navigation/sidebar-right.html +6 -6
- 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 +910 -291
- data/_includes/stats/stats-categories.html +8 -8
- data/_includes/stats/stats-header.html +14 -14
- data/_includes/stats/stats-metrics.html +12 -12
- 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/admin.html +22 -22
- data/_layouts/article.html +54 -37
- 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 +12 -12
- data/_layouts/default.html +27 -24
- data/_layouts/home.html +36 -24
- data/_layouts/index.html +10 -10
- data/_layouts/landing.html +17 -17
- data/_layouts/news.html +44 -44
- data/_layouts/note.html +40 -39
- data/_layouts/notebook.html +36 -35
- data/_layouts/recipe.html +24 -24
- data/_layouts/root.html +95 -55
- data/_layouts/section.html +23 -23
- 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/_cookie-banner.scss +48 -0
- data/_sass/components/_mermaid.scss +375 -0
- data/_sass/components/_setup-wizard.scss +588 -41
- data/_sass/components/_ui-enhancements.scss +11 -0
- data/_sass/core/_navbar.scss +147 -100
- data/_sass/core/_sidebar-extras.scss +2 -14
- data/_sass/core/code-copy.scss +27 -8
- data/_sass/layouts/_navbar-extras.scss +14 -4
- data/assets/css/extension-points-demo.css +27 -0
- data/assets/css/main.scss +1 -0
- data/assets/data/wiki-index.json +19 -0
- data/assets/js/ai-chat.js +47 -5
- data/assets/js/auto-hide-nav.js +53 -13
- data/assets/js/code-copy.js +72 -1
- data/assets/js/extension-points-demo.js +48 -0
- data/assets/js/fleet-feedback-capture.js +124 -0
- data/assets/js/fleet-feedback.js +853 -0
- data/assets/js/mermaid-diagrams.js +1373 -0
- data/assets/js/modules/navigation/config.js +9 -6
- data/assets/js/modules/navigation/scroll-spy.js +315 -80
- data/assets/js/modules/theme/appearance.js +8 -2
- data/assets/js/obsidian-local-graph.js +27 -5
- data/assets/js/obsidian-wiki-links.js +8 -3
- data/assets/js/page-feedback.js +125 -192
- data/assets/js/search-modal.js +26 -0
- data/assets/js/setup-wizard.js +2119 -363
- data/assets/js/site-builder.js +1834 -0
- data/assets/js/ui-enhancements.js +11 -3
- data/scripts/README.md +15 -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/ci/test_visual_evidence_autogen.py +403 -0
- data/scripts/ci/visual_evidence_autogen.py +1070 -0
- data/scripts/content-review.rb +20 -1
- data/scripts/features/install-preview-generator +1 -1
- data/scripts/lib/README.md +12 -0
- data/scripts/lib/preview_generator.py +2 -2
- data/scripts/test/integration/mermaid +22 -8
- data/scripts/test/lib/run_tests.sh +1 -0
- data/scripts/test/lib/test_visual_evidence_autogen.sh +24 -0
- data/scripts/translate.rb +23 -1
- metadata +21 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% comment %} Feature: ZER0-046 {% endcomment %}
|
|
2
|
-
|
|
2
|
+
{% comment %}
|
|
3
3
|
===================================================================
|
|
4
4
|
INFO SECTION - Settings Offcanvas with Tabbed Interface
|
|
5
5
|
===================================================================
|
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
- https://getbootstrap.com/docs/5.3/components/offcanvas/
|
|
36
36
|
- https://getbootstrap.com/docs/5.3/components/navs-tabs/
|
|
37
37
|
===================================================================
|
|
38
|
-
|
|
38
|
+
{% endcomment %}
|
|
39
39
|
|
|
40
40
|
{% include components/env-detect.html %}
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
{% comment %} Settings Offcanvas {% endcomment %}
|
|
43
43
|
<div class="offcanvas offcanvas-end" tabindex="-1" id="info-section" aria-labelledby="infoSectionLabel">
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
{% comment %} Offcanvas Header {% endcomment %}
|
|
46
46
|
<div class="offcanvas-header border-bottom pb-0 d-block">
|
|
47
47
|
<div class="d-flex align-items-center justify-content-between mb-2">
|
|
48
48
|
<h2 class="offcanvas-title h5" id="infoSectionLabel">
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
|
|
52
52
|
</div>
|
|
53
53
|
|
|
54
|
-
|
|
54
|
+
{% comment %} Tab Navigation {% endcomment %}
|
|
55
55
|
<ul class="nav nav-tabs nav-fill" id="infoTabs" role="tablist">
|
|
56
56
|
<li class="nav-item" role="presentation">
|
|
57
57
|
<button class="nav-link active" id="appearance-tab" data-bs-toggle="tab" data-bs-target="#appearance-pane" type="button" role="tab" aria-controls="appearance-pane" aria-selected="true">
|
|
@@ -76,29 +76,29 @@
|
|
|
76
76
|
</ul>
|
|
77
77
|
</div>
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
{% comment %} Offcanvas Body with Tab Content {% endcomment %}
|
|
80
80
|
<div class="offcanvas-body">
|
|
81
81
|
<div class="tab-content" id="infoTabContent">
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
{% comment %} Appearance Tab — everything that changes how the site looks {% endcomment %}
|
|
84
84
|
<div class="tab-pane fade show active" id="appearance-pane" role="tabpanel" aria-labelledby="appearance-tab" tabindex="0">
|
|
85
85
|
|
|
86
|
-
|
|
87
|
-
site.translation is disabled. NOT cached: page-dependent.
|
|
86
|
+
{% comment %} Language — renders its own heading, and nothing at all when
|
|
87
|
+
site.translation is disabled. NOT cached: page-dependent. {% endcomment %}
|
|
88
88
|
{% include components/language-toggle.html variant="panel" %}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
{% comment %} Color Mode {% endcomment %}
|
|
91
91
|
<div class="mb-4">
|
|
92
|
-
<
|
|
92
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
93
93
|
<i class="bi bi-moon-stars me-1" aria-hidden="true"></i>Color Mode
|
|
94
|
-
</
|
|
94
|
+
</h3>
|
|
95
95
|
{% include components/halfmoon.html class="w-100" %}
|
|
96
96
|
</div>
|
|
97
97
|
|
|
98
|
-
|
|
98
|
+
{% comment %} Theme skin + SVG backgrounds (skin buttons, toggle, opacity) {% endcomment %}
|
|
99
99
|
{% include_cached components/background-settings.html %}
|
|
100
100
|
|
|
101
|
-
|
|
101
|
+
{% comment %} Primary color picker mounts here (appearance.js, optional) {% endcomment %}
|
|
102
102
|
<div id="zer0AppearanceSlot"></div>
|
|
103
103
|
|
|
104
104
|
<p class="text-body-secondary small mb-0 mt-4">
|
|
@@ -107,49 +107,49 @@
|
|
|
107
107
|
</p>
|
|
108
108
|
</div>
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
{% comment %} Site Tab — where the site runs and what it is built from {% endcomment %}
|
|
111
111
|
<div class="tab-pane fade" id="site-pane" role="tabpanel" aria-labelledby="site-tab" tabindex="0">
|
|
112
112
|
|
|
113
|
-
|
|
113
|
+
{% comment %} Environment {% endcomment %}
|
|
114
114
|
<div class="mb-4">
|
|
115
|
-
<
|
|
115
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
116
116
|
<i class="bi bi-hdd-network me-1" aria-hidden="true"></i>Environment
|
|
117
|
-
</
|
|
117
|
+
</h3>
|
|
118
118
|
{% include components/env-switcher.html %}
|
|
119
119
|
</div>
|
|
120
120
|
|
|
121
|
-
|
|
121
|
+
{% comment %} Theme & Build {% endcomment %}
|
|
122
122
|
<div class="mb-4">
|
|
123
|
-
<
|
|
123
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
124
124
|
<i class="bi bi-info-circle me-1" aria-hidden="true"></i>Theme & Build
|
|
125
|
-
</
|
|
125
|
+
</h3>
|
|
126
126
|
{% include components/theme-info.html %}
|
|
127
127
|
</div>
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
that exist in the build (see components/admin-links.html)
|
|
129
|
+
{% comment %} Admin quick links — cached include; renders only links to pages
|
|
130
|
+
that exist in the build (see components/admin-links.html) {% endcomment %}
|
|
131
131
|
{% include_cached components/admin-links.html %}
|
|
132
132
|
</div>
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
{% comment %} Developer Tab — tools scoped to the current page {% endcomment %}
|
|
135
135
|
<div class="tab-pane fade" id="developer-pane" role="tabpanel" aria-labelledby="developer-tab" tabindex="0">
|
|
136
136
|
|
|
137
|
-
|
|
138
|
-
when site.breadcrumbs is off, so the section mirrors that gate
|
|
137
|
+
{% comment %} Page Location — breadcrumbs render nothing on the homepage or
|
|
138
|
+
when site.breadcrumbs is off, so the section mirrors that gate {% endcomment %}
|
|
139
139
|
{% if page.url != "/" and site.breadcrumbs %}
|
|
140
140
|
<div class="mb-4">
|
|
141
|
-
<
|
|
141
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
142
142
|
<i class="bi bi-signpost-split me-1" aria-hidden="true"></i>Page Location
|
|
143
|
-
</
|
|
143
|
+
</h3>
|
|
144
144
|
{% include navigation/breadcrumbs.html %}
|
|
145
145
|
</div>
|
|
146
146
|
{% endif %}
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
{% comment %} Page Metadata {% endcomment %}
|
|
149
149
|
<div class="mb-4">
|
|
150
|
-
<
|
|
150
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
151
151
|
<i class="bi bi-file-earmark-code me-1" aria-hidden="true"></i>Page Info
|
|
152
|
-
</
|
|
152
|
+
</h3>
|
|
153
153
|
<div class="table-responsive">
|
|
154
154
|
<table class="table table-sm table-hover mb-0 small">
|
|
155
155
|
<tbody>
|
|
@@ -180,11 +180,11 @@
|
|
|
180
180
|
</div>
|
|
181
181
|
</div>
|
|
182
182
|
|
|
183
|
-
|
|
183
|
+
{% comment %} Source Code Shortcuts {% endcomment %}
|
|
184
184
|
<div class="mb-3">
|
|
185
|
-
<
|
|
185
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
186
186
|
<i class="bi bi-code-square me-1" aria-hidden="true"></i>Source Code
|
|
187
|
-
</
|
|
187
|
+
</h3>
|
|
188
188
|
{% include components/dev-shortcuts.html %}
|
|
189
189
|
</div>
|
|
190
190
|
</div>
|
|
@@ -194,9 +194,9 @@
|
|
|
194
194
|
|
|
195
195
|
</div>
|
|
196
196
|
|
|
197
|
-
|
|
197
|
+
{% comment %} Copy-to-clipboard for the panel's URL fields (event delegation; no
|
|
198
198
|
inline handlers). Buttons declare data-zer0-copy="<text>" or
|
|
199
|
-
data-zer0-copy-target="#input-id".
|
|
199
|
+
data-zer0-copy-target="#input-id". {% endcomment %}
|
|
200
200
|
<script>
|
|
201
201
|
document.addEventListener("click", function (e) {
|
|
202
202
|
var btn = e.target.closest("[data-zer0-copy], [data-zer0-copy-target]");
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
{% comment %}
|
|
2
2
|
===================================================================
|
|
3
3
|
JAVASCRIPT - Local vendor libraries
|
|
4
4
|
===================================================================
|
|
@@ -12,43 +12,43 @@
|
|
|
12
12
|
|
|
13
13
|
Refresh: ./scripts/vendor-install.sh (see vendor-manifest.json)
|
|
14
14
|
===================================================================
|
|
15
|
-
|
|
15
|
+
{% endcomment %}
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
{% comment %} Bootstrap 5.3.3 Bundle (includes Popper.js) {% endcomment %}
|
|
18
18
|
<script src="{{ '/assets/vendor/bootstrap/js/bootstrap.bundle.min.js' | relative_url }}"></script>
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
{% comment %} Navigation ES Modules — orchestrator for sidebar, scroll spy, keyboard
|
|
21
21
|
shortcuts, gestures, focus, AND the navbar dropdowns/mobile menu that
|
|
22
|
-
formerly lived in /assets/js/navigation.js (now deprecated).
|
|
22
|
+
formerly lived in /assets/js/navigation.js (now deprecated). {% endcomment %}
|
|
23
23
|
<script type="module" src="{{ '/assets/js/modules/navigation/index.js' | relative_url }}?v={{ site.time | date: '%s' }}"></script>
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
{% comment %} Generic UI helpers (toast, copy-to-clipboard, image fade-in) {% endcomment %}
|
|
26
26
|
<script defer src="{{ '/assets/js/ui-helpers.js' | relative_url }}"></script>
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
[data-posts-archive] container; safe to load globally).
|
|
28
|
+
{% comment %} Posts-archive pagination (auto-activates only on pages with a
|
|
29
|
+
[data-posts-archive] container; safe to load globally). {% endcomment %}
|
|
30
30
|
<script defer src="{{ '/assets/js/posts-pagination.js' | relative_url }}"></script>
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
{% comment %} Search modal controller {% endcomment %}
|
|
33
33
|
<script src="{{ '/assets/js/search-modal.js' | relative_url }}"></script>
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
{% comment %} Share helpers {% endcomment %}
|
|
36
36
|
<script src="{{ '/assets/js/share-actions.js' | relative_url }}"></script>
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
{% comment %} fffuel-style background customizer (skin switching, toggle, opacity) {% endcomment %}
|
|
39
39
|
<script src="{{ '/assets/js/background-customizer.js' | relative_url }}"></script>
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
{% comment %} Optional runtime Appearance panel (enabled via site.appearance_panel) {% endcomment %}
|
|
42
42
|
{% if site.appearance_panel %}
|
|
43
43
|
<script defer src="{{ '/assets/js/modules/theme/appearance.js' | relative_url }}"></script>
|
|
44
44
|
{% endif %}
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
{% comment %} Obsidian wiki-link / embed / tag client-side resolver (fallback for the
|
|
47
47
|
remote_theme GH Pages build, where _plugins/obsidian_links.rb cannot run).
|
|
48
48
|
Honours `obsidian: { enabled: false }` in _config.yml — when disabled the
|
|
49
49
|
resolver script is not loaded and the flag self-disables any fork that
|
|
50
50
|
loads it another way. Note: `| default: true` would flip `false` back to
|
|
51
|
-
true (Liquid treats false as falsy), so test enabled == false explicitly.
|
|
51
|
+
true (Liquid treats false as falsy), so test enabled == false explicitly. {% endcomment %}
|
|
52
52
|
{%- assign obsidian_attachments_path = site.obsidian.attachments_path | default: '/assets/images/notes' -%}
|
|
53
53
|
<script>
|
|
54
54
|
window.OBSIDIAN_CONFIG = window.OBSIDIAN_CONFIG || {};
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
<script defer src="{{ '/assets/js/obsidian-wiki-links.js' | relative_url }}?v={{ site.time | date: '%s' }}"></script>
|
|
63
63
|
{%- endif -%}
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
{% comment %} Optional fork overrides: opt-in via `site.user_overrides: true` in _config.yml. {% endcomment %}
|
|
66
66
|
{% if site.user_overrides %}
|
|
67
67
|
<script defer src="{{ '/assets/js/user-overrides.js' | relative_url }}"></script>
|
|
68
68
|
{% endif %}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
- "panel" — self-contained "Language" section for the
|
|
14
14
|
Settings offcanvas (components/info-section.html),
|
|
15
15
|
rendered as an always-visible list of choices
|
|
16
|
-
with its own
|
|
16
|
+
with its own section heading
|
|
17
17
|
Reads: page.lang / page.url / page.translation_source_url and the
|
|
18
18
|
generated _data/i18n/manifest.yml.
|
|
19
19
|
Depends on: site.translation.* config, site.data.i18n.manifest,
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
row via aria-describedby. Per-row text was the single
|
|
45
45
|
biggest contributor to menu width.
|
|
46
46
|
Trigger changes (icon-only, no caret) apply to the navbar
|
|
47
|
-
variant only — the panel has
|
|
47
|
+
variant only — the panel has a section heading, not a button.
|
|
48
48
|
|
|
49
49
|
New ui keys (lang_machine_translated, lang_machine_translated_title,
|
|
50
50
|
lang_untranslated_note) live in _data/ui-text.yml `en`. core/i18n.html
|
|
@@ -94,9 +94,9 @@
|
|
|
94
94
|
{%- assign _lt_fallback_url = _lt_src_url | default: '/' | relative_url -%}
|
|
95
95
|
{%- if _lt_variant == 'panel' -%}
|
|
96
96
|
<div class="mb-4 nav-lang-panel" id="zer0-lang-toggle">
|
|
97
|
-
<
|
|
97
|
+
<h3 class="h6 text-body-secondary small text-uppercase fw-semibold mb-2">
|
|
98
98
|
<i class="bi bi-translate me-1" aria-hidden="true"></i>{{ ui.lang_toggle_label | default: "Language" }}
|
|
99
|
-
</
|
|
99
|
+
</h3>
|
|
100
100
|
<div class="list-group nav-lang-options" role="group" aria-label="{{ ui.lang_toggle_aria | default: 'Change language' }}">
|
|
101
101
|
{%- if _lt_current == _lt_source %}
|
|
102
102
|
<span class="list-group-item nav-lang-item is-current" aria-current="true">
|