jekyll-theme-centos 0.0.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 +7 -0
- data/_config.yml +196 -0
- data/_data/base/announcement_schema.yml +49 -0
- data/_data/base/artwork_schema.yml +46 -0
- data/_data/base/backtotop_schema.yml +59 -0
- data/_data/base/bits.yml +96 -0
- data/_data/base/bits_schema.yml +185 -0
- data/_data/base/breadcrumb_schema.yml +27 -0
- data/_data/base/breakingnews_schema.yml +67 -0
- data/_data/base/card_schema.yml +146 -0
- data/_data/base/color.yml +1042 -0
- data/_data/base/color_schema.yml +1036 -0
- data/_data/base/configuration_variables_schema.yml +42 -0
- data/_data/base/content.yml +2 -0
- data/_data/base/content_schema.yml +26 -0
- data/_data/base/copyright.yml +12 -0
- data/_data/base/copyright_schema.yml +74 -0
- data/_data/base/copyvalue_schema.yml +49 -0
- data/_data/base/datatable_schema.yml +57 -0
- data/_data/base/event_schema.yml +130 -0
- data/_data/base/fontawesome_schema.yml +62 -0
- data/_data/base/footer.yml +9 -0
- data/_data/base/footer_schema.yml +55 -0
- data/_data/base/head_schema.yml +19 -0
- data/_data/base/heading_anchor.yml +2 -0
- data/_data/base/heading_anchor_schema.yml +37 -0
- data/_data/base/highlight_schema.yml +98 -0
- data/_data/base/image_schema.yml +34 -0
- data/_data/base/languages.yml +186 -0
- data/_data/base/link_schema.yml +187 -0
- data/_data/base/locales_schema.yml +158 -0
- data/_data/base/navbar.yml +20 -0
- data/_data/base/navbar_schema.yml +129 -0
- data/_data/base/navindex_schema.yml +67 -0
- data/_data/base/ogp.yml +24 -0
- data/_data/base/ogp_schema.yml +192 -0
- data/_data/base/project.yml +37 -0
- data/_data/base/project_schema.yml +124 -0
- data/_data/base/script_schema.yml +41 -0
- data/_data/base/shortcut_schema.yml +74 -0
- data/_data/base/social.yml +26 -0
- data/_data/base/social_schema.yml +57 -0
- data/_data/base/sponsors.yml +41 -0
- data/_data/base/sponsors_schema.yml +73 -0
- data/_data/base/title_schema.yml +49 -0
- data/_data/base/toc_schema.yml +114 -0
- data/_data/download/cards.yml +309 -0
- data/_data/download/navbar.yml +11 -0
- data/_includes/base/announcement.html.liquid +65 -0
- data/_includes/base/artwork.html.liquid +63 -0
- data/_includes/base/backtotop.html.liquid +73 -0
- data/_includes/base/bits.html.liquid +152 -0
- data/_includes/base/breadcrumb.html.liquid +77 -0
- data/_includes/base/breakingnews.html.liquid +90 -0
- data/_includes/base/card.html.liquid +110 -0
- data/_includes/base/color-table.html.liquid +33 -0
- data/_includes/base/configuration_variables-nested.html.liquid +98 -0
- data/_includes/base/configuration_variables.html.liquid +98 -0
- data/_includes/base/content.html.liquid +7 -0
- data/_includes/base/copyright.html.liquid +70 -0
- data/_includes/base/copyvalue.html.liquid +82 -0
- data/_includes/base/datatable.html.liquid +83 -0
- data/_includes/base/event.html.liquid +105 -0
- data/_includes/base/fontawesome.html.liquid +91 -0
- data/_includes/base/footer.html.liquid +69 -0
- data/_includes/base/head.html.liquid +135 -0
- data/_includes/base/heading_anchor.html.liquid +67 -0
- data/_includes/base/highlight.html.liquid +84 -0
- data/_includes/base/image.html.liquid +42 -0
- data/_includes/base/link.html.liquid +129 -0
- data/_includes/base/locales.html.liquid +78 -0
- data/_includes/base/navbar.html.liquid +121 -0
- data/_includes/base/navindex.html.liquid +200 -0
- data/_includes/base/ogp.html.liquid +144 -0
- data/_includes/base/project.html.liquid +104 -0
- data/_includes/base/shortcut.html.liquid +77 -0
- data/_includes/base/social.html.liquid +76 -0
- data/_includes/base/sponsors-cards.html.liquid +69 -0
- data/_includes/base/sponsors-carousel.html.liquid +91 -0
- data/_includes/base/title.html.liquid +65 -0
- data/_includes/base/toc-generator.html.liquid +189 -0
- data/_includes/base/toc.html.liquid +95 -0
- data/_includes/download/cards-body-commands.html +7 -0
- data/_includes/download/cards-body-convert.html +10 -0
- data/_includes/download/cards-body-doc.html +9 -0
- data/_includes/download/cards-body-documentation.html +11 -0
- data/_includes/download/cards-body-eol.html +16 -0
- data/_includes/download/cards-body-mirrors.html +8 -0
- data/_includes/download/cards-body-screenshot.html +26 -0
- data/_includes/download/cards-body-screenshots.html +32 -0
- data/_includes/download/cards-body.html +8 -0
- data/_includes/download/cards-footer.html +3 -0
- data/_includes/download/cards-header-commands.html +8 -0
- data/_includes/download/cards-header-convert.html +8 -0
- data/_includes/download/cards-header-doc.html +8 -0
- data/_includes/download/cards-header-documentation.html +8 -0
- data/_includes/download/cards-header-eol.html +8 -0
- data/_includes/download/cards-header-mirrors.html +13 -0
- data/_includes/download/cards-header-screenshot.html +8 -0
- data/_includes/download/cards-header-screenshots.html +8 -0
- data/_includes/download/cards-header.html +13 -0
- data/_includes/download/cards.html +120 -0
- data/_layouts/base/default.html +68 -0
- data/_layouts/download/cards.html +7 -0
- data/_layouts/download/default.html +7 -0
- data/_layouts/people/default.html +68 -0
- data/_sass/base/_customization.scss +331 -0
- data/_sass/base/_light-dark.scss +10 -0
- data/_sass/base/_maps.scss +104 -0
- data/_sass/base/_variables.scss +232 -0
- data/_sass/bootstrap/_accordion.scss +153 -0
- data/_sass/bootstrap/_alert.scss +68 -0
- data/_sass/bootstrap/_badge.scss +38 -0
- data/_sass/bootstrap/_breadcrumb.scss +40 -0
- data/_sass/bootstrap/_button-group.scss +147 -0
- data/_sass/bootstrap/_buttons.scss +216 -0
- data/_sass/bootstrap/_card.scss +238 -0
- data/_sass/bootstrap/_carousel.scss +226 -0
- data/_sass/bootstrap/_close.scss +66 -0
- data/_sass/bootstrap/_containers.scss +41 -0
- data/_sass/bootstrap/_dropdown.scss +250 -0
- data/_sass/bootstrap/_forms.scss +9 -0
- data/_sass/bootstrap/_functions.scss +302 -0
- data/_sass/bootstrap/_grid.scss +39 -0
- data/_sass/bootstrap/_helpers.scss +12 -0
- data/_sass/bootstrap/_images.scss +42 -0
- data/_sass/bootstrap/_list-group.scss +199 -0
- data/_sass/bootstrap/_maps.scss +174 -0
- data/_sass/bootstrap/_mixins.scss +42 -0
- data/_sass/bootstrap/_modal.scss +240 -0
- data/_sass/bootstrap/_nav.scss +197 -0
- data/_sass/bootstrap/_navbar.scss +289 -0
- data/_sass/bootstrap/_offcanvas.scss +147 -0
- data/_sass/bootstrap/_pagination.scss +109 -0
- data/_sass/bootstrap/_placeholders.scss +51 -0
- data/_sass/bootstrap/_popover.scss +196 -0
- data/_sass/bootstrap/_progress.scss +68 -0
- data/_sass/bootstrap/_reboot.scss +617 -0
- data/_sass/bootstrap/_root.scss +187 -0
- data/_sass/bootstrap/_spinners.scss +86 -0
- data/_sass/bootstrap/_tables.scss +171 -0
- data/_sass/bootstrap/_toasts.scss +73 -0
- data/_sass/bootstrap/_tooltip.scss +119 -0
- data/_sass/bootstrap/_transitions.scss +27 -0
- data/_sass/bootstrap/_type.scss +106 -0
- data/_sass/bootstrap/_utilities.scss +806 -0
- data/_sass/bootstrap/_variables-dark.scss +102 -0
- data/_sass/bootstrap/_variables.scss +1753 -0
- data/_sass/bootstrap/bootstrap-grid.scss +62 -0
- data/_sass/bootstrap/bootstrap-reboot.scss +10 -0
- data/_sass/bootstrap/bootstrap-utilities.scss +19 -0
- data/_sass/bootstrap/bootstrap.scss +52 -0
- data/_sass/bootstrap/forms/_floating-labels.scss +97 -0
- data/_sass/bootstrap/forms/_form-check.scss +189 -0
- data/_sass/bootstrap/forms/_form-control.scss +214 -0
- data/_sass/bootstrap/forms/_form-range.scss +91 -0
- data/_sass/bootstrap/forms/_form-select.scss +80 -0
- data/_sass/bootstrap/forms/_form-text.scss +11 -0
- data/_sass/bootstrap/forms/_input-group.scss +132 -0
- data/_sass/bootstrap/forms/_labels.scss +36 -0
- data/_sass/bootstrap/forms/_validation.scss +12 -0
- data/_sass/bootstrap/helpers/_clearfix.scss +3 -0
- data/_sass/bootstrap/helpers/_color-bg.scss +7 -0
- data/_sass/bootstrap/helpers/_colored-links.scss +30 -0
- data/_sass/bootstrap/helpers/_focus-ring.scss +5 -0
- data/_sass/bootstrap/helpers/_icon-link.scss +25 -0
- data/_sass/bootstrap/helpers/_position.scss +36 -0
- data/_sass/bootstrap/helpers/_ratio.scss +26 -0
- data/_sass/bootstrap/helpers/_stacks.scss +15 -0
- data/_sass/bootstrap/helpers/_stretched-link.scss +15 -0
- data/_sass/bootstrap/helpers/_text-truncation.scss +7 -0
- data/_sass/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/_sass/bootstrap/helpers/_vr.scss +8 -0
- data/_sass/bootstrap/mixins/_alert.scss +18 -0
- data/_sass/bootstrap/mixins/_backdrop.scss +14 -0
- data/_sass/bootstrap/mixins/_banner.scss +7 -0
- data/_sass/bootstrap/mixins/_border-radius.scss +78 -0
- data/_sass/bootstrap/mixins/_box-shadow.scss +24 -0
- data/_sass/bootstrap/mixins/_breakpoints.scss +127 -0
- data/_sass/bootstrap/mixins/_buttons.scss +70 -0
- data/_sass/bootstrap/mixins/_caret.scss +69 -0
- data/_sass/bootstrap/mixins/_clearfix.scss +9 -0
- data/_sass/bootstrap/mixins/_color-mode.scss +21 -0
- data/_sass/bootstrap/mixins/_color-scheme.scss +7 -0
- data/_sass/bootstrap/mixins/_container.scss +11 -0
- data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
- data/_sass/bootstrap/mixins/_forms.scss +163 -0
- data/_sass/bootstrap/mixins/_gradients.scss +47 -0
- data/_sass/bootstrap/mixins/_grid.scss +151 -0
- data/_sass/bootstrap/mixins/_image.scss +16 -0
- data/_sass/bootstrap/mixins/_list-group.scss +26 -0
- data/_sass/bootstrap/mixins/_lists.scss +7 -0
- data/_sass/bootstrap/mixins/_pagination.scss +10 -0
- data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
- data/_sass/bootstrap/mixins/_resize.scss +6 -0
- data/_sass/bootstrap/mixins/_table-variants.scss +24 -0
- data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
- data/_sass/bootstrap/mixins/_transition.scss +26 -0
- data/_sass/bootstrap/mixins/_utilities.scss +97 -0
- data/_sass/bootstrap/mixins/_visually-hidden.scss +38 -0
- data/_sass/bootstrap/utilities/_api.scss +47 -0
- data/_sass/bootstrap/vendor/_rfs.scss +348 -0
- data/assets/css/base/stylesheet.min.scss +35 -0
- data/assets/icons/android-chrome-192.png +0 -0
- data/assets/icons/android-chrome-512.png +0 -0
- data/assets/icons/apple-touch-icon.png +0 -0
- data/assets/icons/favicon-16.png +0 -0
- data/assets/icons/favicon-32.png +0 -0
- data/assets/icons/favicon.ico +0 -0
- data/assets/icons/favicon.svg +1 -0
- data/assets/img/anaconda-symbolic.svg +1 -0
- data/assets/img/anaconda.svg +1 -0
- data/assets/img/base/centos-colors.gpl +55 -0
- data/assets/img/base/example-ogp-image.svg +297 -0
- data/assets/img/base/example-sponsors-design.svg +226 -0
- data/assets/img/base/example-sponsors-logo-1.svg +120 -0
- data/assets/img/base/example-sponsors-logo-2.svg +116 -0
- data/assets/img/base/example-sponsors-logo-3.svg +123 -0
- data/assets/img/base/example-sponsors-logo-4.svg +116 -0
- data/assets/img/base/example-sponsors-logo-5.svg +116 -0
- data/assets/img/base/example-sponsors-logo-6.svg +116 -0
- data/assets/img/base/example-sponsors-logo-7.svg +116 -0
- data/assets/img/base/example-sponsors-logo-8.svg +110 -0
- data/assets/img/base/page-layout-default.svg +1217 -0
- data/assets/img/base/page-with-alert.svg +383 -0
- data/assets/img/base/page-with-announcement.svg +956 -0
- data/assets/img/base/page-with-artwork.svg +1009 -0
- data/assets/img/base/page-with-backtotop.svg +1009 -0
- data/assets/img/base/page-with-bits.svg +891 -0
- data/assets/img/base/page-with-breadcrumb.svg +676 -0
- data/assets/img/base/page-with-breakingnews.svg +957 -0
- data/assets/img/base/page-with-color.svg +57 -0
- data/assets/img/base/page-with-copyright.svg +1018 -0
- data/assets/img/base/page-with-copyvalue.svg +57 -0
- data/assets/img/base/page-with-datatable.svg +857 -0
- data/assets/img/base/page-with-event.svg +518 -0
- data/assets/img/base/page-with-fontawesome.svg +147 -0
- data/assets/img/base/page-with-footer.svg +1018 -0
- data/assets/img/base/page-with-heading.svg +57 -0
- data/assets/img/base/page-with-highlight.svg +86 -0
- data/assets/img/base/page-with-image.svg +57 -0
- data/assets/img/base/page-with-link.svg +57 -0
- data/assets/img/base/page-with-locales.svg +1009 -0
- data/assets/img/base/page-with-navbar.svg +958 -0
- data/assets/img/base/page-with-navindex.svg +279 -0
- data/assets/img/base/page-with-ogp.svg +401 -0
- data/assets/img/base/page-with-project.svg +423 -0
- data/assets/img/base/page-with-shortcut.svg +937 -0
- data/assets/img/base/page-with-social.svg +937 -0
- data/assets/img/base/page-with-sponsors.svg +937 -0
- data/assets/img/base/page-with-title.svg +584 -0
- data/assets/img/base/page-with-toc.svg +399 -0
- data/assets/img/base/screenshot-1200x600.svg +114 -0
- data/assets/img/centos-dynamicmsg-logo.svg +1 -0
- data/assets/img/centos-dynamicmsg-type.svg +1 -0
- data/assets/img/centos-dynamicmsg-whitelogo.svg +1 -0
- data/assets/img/centos-dynamicmsg-whitetype.svg +1 -0
- data/assets/img/centos-gdm-whitelogo.svg +1 -0
- data/assets/img/centos-ipa-whiteheader.svg +1 -0
- data/assets/img/centos-logo-2bits.svg +1 -0
- data/assets/img/centos-logo.svg +1 -0
- data/assets/img/centos-message-logo.svg +1 -0
- data/assets/img/centos-motif.png +0 -0
- data/assets/img/centos-poweredby-logo.svg +1 -0
- data/assets/img/centos-social-share.png +0 -0
- data/assets/img/centos-symbol-2bits.svg +1 -0
- data/assets/img/centos-symbol.svg +1 -0
- data/assets/img/centos-type.svg +1 -0
- data/assets/img/centos-vertical-logo.svg +1 -0
- data/assets/img/centos-vertical-message-logo.svg +1 -0
- data/assets/img/centos-whitelogo.svg +1 -0
- data/assets/img/download/centos-linux-7-2009-screenshot-n.png +0 -0
- data/assets/img/download/centos-stream-8-screenshot-n.png +0 -0
- data/assets/img/download/centos-stream-9-screenshot-n.png +0 -0
- data/assets/img/download/distribution-release-screenshot-1.png +0 -0
- data/assets/img/download/distribution-release-screenshot-2.png +0 -0
- data/assets/img/download/distribution-release-screenshot-3.png +0 -0
- data/assets/img/download/distribution-release-screenshot-n.png +0 -0
- data/assets/img/download/distribution-release-screenshot-n.svg +134 -0
- data/assets/img/download/download.svg +421 -0
- data/assets/img/download/fig-the-downloads-cards-presentation-template.png +0 -0
- data/assets/img/people/page.svg +900 -0
- data/assets/img/people/page.webp +0 -0
- data/assets/img/people/username.webp +0 -0
- data/assets/js/base/backtotop.js +20 -0
- data/assets/js/base/copyvalue.js +145 -0
- data/assets/js/base/datatable.js +41 -0
- data/assets/js/base/heading-anchor.js +108 -0
- data/assets/js/base/highlight.js +12 -0
- data/assets/js/base/init-tooltips.js +12 -0
- data/assets/js/bootstrap.bundle.js +6312 -0
- data/assets/js/bootstrap.bundle.js.map +1 -0
- data/assets/js/bootstrap.bundle.min.js +7 -0
- data/assets/js/bootstrap.bundle.min.js.map +1 -0
- data/assets/js/bootstrap.esm.js +4447 -0
- data/assets/js/bootstrap.esm.js.map +1 -0
- data/assets/js/bootstrap.esm.min.js +7 -0
- data/assets/js/bootstrap.esm.min.js.map +1 -0
- data/assets/js/bootstrap.js +4494 -0
- data/assets/js/bootstrap.js.map +1 -0
- data/assets/js/bootstrap.min.js +7 -0
- data/assets/js/bootstrap.min.js.map +1 -0
- data/site.webmanifest +11 -0
- metadata +611 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Heading Anchor Component
|
|
4
|
+
Purpose: Loads heading-anchor.js which wires click-to-copy behaviour on anchor
|
|
5
|
+
icons that jekyll-link-decorator injects inside h1–h6 elements. Clicking an
|
|
6
|
+
anchor icon copies the full page URL (origin + pathname + fragment) to the
|
|
7
|
+
clipboard, with a transient fa-check icon as visual feedback.
|
|
8
|
+
|
|
9
|
+
Recommended Usage (in head.html.liquid):
|
|
10
|
+
{%- include base/heading_anchor.html.liquid %}
|
|
11
|
+
|
|
12
|
+
The heading anchor icons themselves are injected by the jekyll-link-decorator
|
|
13
|
+
Ruby plugin. This include only loads the JavaScript that powers copy behaviour.
|
|
14
|
+
|
|
15
|
+
Required Inputs (from HTML elements produced by the plugin):
|
|
16
|
+
- class="heading-anchor" : Selector used to attach click handlers
|
|
17
|
+
- data-copy-anchor="#id" : Fragment to append to the current page URL
|
|
18
|
+
|
|
19
|
+
Optional Inputs (from data objects):
|
|
20
|
+
- reset_delay : Milliseconds before icon resets (default from schema)
|
|
21
|
+
- copy_success_message : Not consumed by JS directly; available for reference
|
|
22
|
+
|
|
23
|
+
Data Source Hierarchy (in priority order):
|
|
24
|
+
1. include.data - Explicitly passed configuration
|
|
25
|
+
2. page.with_heading_anchor_data - Page front matter
|
|
26
|
+
3. site.data.heading_anchor - Site configuration
|
|
27
|
+
4. site.data.base.heading_anchor - Theme defaults
|
|
28
|
+
|
|
29
|
+
Dependencies:
|
|
30
|
+
jekyll-link-decorator gem, FontAwesome 6+, Clipboard API (modern browsers)
|
|
31
|
+
================================================================================
|
|
32
|
+
{% endcomment %}
|
|
33
|
+
|
|
34
|
+
{%- assign with_heading_anchor = include.with_heading_anchor
|
|
35
|
+
| default: page.with_heading_anchor
|
|
36
|
+
| default: site.with_heading_anchor
|
|
37
|
+
-%}
|
|
38
|
+
|
|
39
|
+
{%- assign with_heading_anchor_data = include.data
|
|
40
|
+
| default: page.with_heading_anchor_data
|
|
41
|
+
| default: site.data.heading_anchor
|
|
42
|
+
| default: site.data.base.heading_anchor
|
|
43
|
+
-%}
|
|
44
|
+
|
|
45
|
+
{%- assign with_heading_anchor_schema = site.data.base.heading_anchor_schema.properties.with_heading_anchor_data.properties -%}
|
|
46
|
+
|
|
47
|
+
{%- if with_heading_anchor -%}
|
|
48
|
+
|
|
49
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
50
|
+
|
|
51
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
52
|
+
{%- assign heading_anchor_reset_delay = with_heading_anchor_data.reset_delay | default: with_heading_anchor_schema.reset_delay.default -%}
|
|
53
|
+
{%- assign heading_anchor_success_message = with_heading_anchor_data.copy_success_message | default: with_heading_anchor_schema.copy_success_message.default -%}
|
|
54
|
+
|
|
55
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
56
|
+
<!-- Load Heading Anchor functionality with configuration via data attributes -->
|
|
57
|
+
<script id="centos-heading-anchor"
|
|
58
|
+
{%- if with_heading_anchor_data.reset_delay %}
|
|
59
|
+
data-reset-delay="{{ heading_anchor_reset_delay }}"
|
|
60
|
+
{%- endif %}
|
|
61
|
+
{%- if with_heading_anchor_data.copy_success_message %}
|
|
62
|
+
data-success-message="{{ heading_anchor_success_message }}"
|
|
63
|
+
{%- endif %}
|
|
64
|
+
src="{{ site.baseurl }}/assets/js/base/heading-anchor.min.js"
|
|
65
|
+
defer></script>
|
|
66
|
+
|
|
67
|
+
{%- endif -%}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Highlight.js Code Syntax Highlighting Component
|
|
4
|
+
Purpose: Loads Highlight.js library CSS and JavaScript from CDN with
|
|
5
|
+
copy-to-clipboard functionality for code blocks.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- CDN-based library: Highlight.js from cdnjs
|
|
10
|
+
- Copy plugin: additional plugin for code clipboard functionality
|
|
11
|
+
- Format switching: separate head (CSS) and script (JS) includes
|
|
12
|
+
- Automatic initialization: on document load
|
|
13
|
+
- Configurable theme: different color schemes available
|
|
14
|
+
- 190+ languages supported
|
|
15
|
+
|
|
16
|
+
Optional Inputs:
|
|
17
|
+
- type: "head" for CSS, "script" for JavaScript
|
|
18
|
+
- theme: Syntax highlighting theme (default: "default")
|
|
19
|
+
- version: Highlight.js version (e.g., "11.9.0")
|
|
20
|
+
- data: Highlight.js configuration object
|
|
21
|
+
|
|
22
|
+
Data Source Hierarchy (priority):
|
|
23
|
+
1. include.data
|
|
24
|
+
2. page.with_highlight_data
|
|
25
|
+
3. site.data.highlight
|
|
26
|
+
4. site.data.base.highlight
|
|
27
|
+
================================================================================
|
|
28
|
+
{% endcomment %}
|
|
29
|
+
|
|
30
|
+
{%- assign with_highlight = include.with_highlight
|
|
31
|
+
| default: page.with_highlight
|
|
32
|
+
%}
|
|
33
|
+
|
|
34
|
+
{%- assign with_highlight_data = include.data
|
|
35
|
+
| default: page.with_highlight_data
|
|
36
|
+
| default: site.data.highlight
|
|
37
|
+
| default: site.data.base.highlight
|
|
38
|
+
%}
|
|
39
|
+
|
|
40
|
+
{%- assign with_highlight_schema = site.data.base.highlight_schema.properties.with_highlight_data.properties %}
|
|
41
|
+
|
|
42
|
+
{%- if with_highlight %}
|
|
43
|
+
|
|
44
|
+
{%- assign highlight_theme = with_highlight_data.theme | default: with_highlight_schema.theme.default %}
|
|
45
|
+
{%- assign highlight_version = with_highlight_data.version | default: with_highlight_schema.version.default %}
|
|
46
|
+
{%- assign highlight_css_sri = with_highlight_data.css_integrity | default: with_highlight_schema.css_integrity.default %}
|
|
47
|
+
{%- assign highlight_script_sri = with_highlight_data.script_integrity | default: with_highlight_schema.script_integrity.default %}
|
|
48
|
+
{%- assign copy_version = with_highlight_data.copy_version | default: with_highlight_schema.copy_version.default %}
|
|
49
|
+
{%- assign copy_script_sri = with_highlight_data.copy_script_integrity | default: with_highlight_schema.copy_script_integrity.default %}
|
|
50
|
+
{%- assign copy_css_sri = with_highlight_data.copy_css_integrity | default: with_highlight_schema.copy_css_integrity.default %}
|
|
51
|
+
{%- assign copy_icon_svg = with_highlight_data.copy_button_icons.copy.svg | default: with_highlight_schema.copy_button_icons.properties.copy.properties.svg.default %}
|
|
52
|
+
{%- assign success_icon_svg = with_highlight_data.copy_button_icons.success.svg | default: with_highlight_schema.copy_button_icons.properties.success.properties.svg.default %}
|
|
53
|
+
|
|
54
|
+
{%- capture html_highlight_head %}
|
|
55
|
+
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ highlight_version }}/styles/{{ highlight_theme | replace_first: 'base16-', 'base16/' | default: 'default' }}.min.css" integrity="{{ highlight_css_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
56
|
+
<link rel="stylesheet" href="https://unpkg.com/highlightjs-copy@{{ copy_version }}/dist/highlightjs-copy.min.css" integrity="{{ copy_css_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
57
|
+
<!-- Highlight.js Copy Button Icon Customization (from schema) -->
|
|
58
|
+
<style>
|
|
59
|
+
.hljs-copy-button:not([data-copied="true"])::before {
|
|
60
|
+
mask: url('data:image/svg+xml;utf-8,{{ copy_icon_svg }}');
|
|
61
|
+
}
|
|
62
|
+
.hljs-copy-button[data-copied='true']::after {
|
|
63
|
+
background-image: url('data:image/svg+xml;utf-8,{{ success_icon_svg }}');
|
|
64
|
+
}
|
|
65
|
+
</style>
|
|
66
|
+
{%- endcapture %}
|
|
67
|
+
|
|
68
|
+
{%- capture html_highlight_script %}
|
|
69
|
+
<!-- Highlight.js Library and Copy Plugin -->
|
|
70
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/{{ highlight_version }}/highlight.min.js" integrity="{{ highlight_script_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
71
|
+
<script src="https://unpkg.com/highlightjs-copy@{{ copy_version }}/dist/highlightjs-copy.min.js" integrity="{{ copy_script_sri }}" crossorigin="anonymous" referrerpolicy="no-referrer" defer></script>
|
|
72
|
+
<!-- Initialize Highlight.js -->
|
|
73
|
+
<script src="{{ site.baseurl }}/assets/js/base/highlight.min.js" defer></script>
|
|
74
|
+
{%- endcapture %}
|
|
75
|
+
|
|
76
|
+
{%- assign type = include.type %}
|
|
77
|
+
{%- case type %}
|
|
78
|
+
{%- when "head" %}
|
|
79
|
+
{{ html_highlight_head }}
|
|
80
|
+
{%- when "script" %}
|
|
81
|
+
{{ html_highlight_script }}
|
|
82
|
+
{%- endcase %}
|
|
83
|
+
|
|
84
|
+
{%- endif %}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Figure Image Component
|
|
4
|
+
Purpose: Renders responsive images in semantic HTML figure elements
|
|
5
|
+
with optional links and captions.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Required Inputs:
|
|
9
|
+
- file: Image filename (relative to /assets/img/)
|
|
10
|
+
- alt: Alt text for accessibility
|
|
11
|
+
|
|
12
|
+
Optional Inputs:
|
|
13
|
+
- link: URL to wrap image in a link
|
|
14
|
+
- caption: Caption text for <figcaption>
|
|
15
|
+
- extraclasses: Additional CSS classes for image element
|
|
16
|
+
|
|
17
|
+
Features:
|
|
18
|
+
- Semantic HTML with <figure> and <figcaption> elements
|
|
19
|
+
- Responsive images with img-fluid Bootstrap class
|
|
20
|
+
- Figure ID generated from alt text (slugified)
|
|
21
|
+
- Lazy loading enabled by default
|
|
22
|
+
================================================================================
|
|
23
|
+
{% endcomment %}
|
|
24
|
+
|
|
25
|
+
{% if include.alt %}
|
|
26
|
+
{% assign figid = include.alt %}
|
|
27
|
+
{% else %}
|
|
28
|
+
{% assign figid = include.file %}
|
|
29
|
+
{% endif %}
|
|
30
|
+
|
|
31
|
+
<figure id="fig-{{ figid | slugify }}" class="figure">
|
|
32
|
+
{% if include.link %}
|
|
33
|
+
<a href="{{ include.link }}">
|
|
34
|
+
<img loading="lazy" src="{{ site.baseurl }}/assets/img/{{ include.file }}" class="figure-img img-fluid rounded{% if include.extraclasses %} {{ include.extraclasses }}{% endif %}" alt="{{ include.alt }}"/>
|
|
35
|
+
</a>
|
|
36
|
+
{% else %}
|
|
37
|
+
<img loading="lazy" src="{{ site.baseurl }}/assets/img/{{ include.file }}" class="figure-img img-fluid rounded{% if include.extraclasses %} {{ include.extraclasses }}{% endif %}" alt="{{ include.alt }}"/>
|
|
38
|
+
{% endif %}
|
|
39
|
+
{% if include.caption %}
|
|
40
|
+
<figcaption class="figure-caption text-center">{{ include.caption }}</figcaption>
|
|
41
|
+
{% endif %}
|
|
42
|
+
</figure>
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Link Component
|
|
4
|
+
Purpose: Renders HTML anchor tags with icons, styling, and accessibility.
|
|
5
|
+
Handles internal/external links and anchor navigation.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Flexible link resolution for internal and external URLs
|
|
10
|
+
- Optional icon integration with positioning control
|
|
11
|
+
- Customizable styling through color schemes or CSS classes
|
|
12
|
+
- Built-in accessibility support via ARIA attributes
|
|
13
|
+
- Anchor generation from link name when no URL provided
|
|
14
|
+
|
|
15
|
+
Required Inputs:
|
|
16
|
+
- name: Display text for the link
|
|
17
|
+
|
|
18
|
+
Optional Inputs:
|
|
19
|
+
- link: URL (internal/external). Omit to generate anchor from name.
|
|
20
|
+
- target: Link target (default: unset). Use '_blank' for new window.
|
|
21
|
+
- color: Color scheme (default: 'primary')
|
|
22
|
+
- icon: Icon class (Font Awesome or similar)
|
|
23
|
+
- icon_position: Icon placement: 'start' (default) or 'end'
|
|
24
|
+
- class: Custom CSS classes to override default styling
|
|
25
|
+
- aria_label: Accessible label for screen readers
|
|
26
|
+
- role: ARIA role attribute
|
|
27
|
+
- data_bs_toggle: Bootstrap toggle ('tooltip' or 'popover')
|
|
28
|
+
- data_bs_title: Bootstrap tooltip/popover text content
|
|
29
|
+
- data_bs_content: Bootstrap popover body text (required when data_bs_toggle is 'popover')
|
|
30
|
+
- data_bs_placement: Bootstrap tooltip/popover placement ('top', 'bottom', 'start', 'end')
|
|
31
|
+
- data_bs_trigger: Bootstrap tooltip/popover trigger events
|
|
32
|
+
- data_bs_delay: Bootstrap tooltip/popover show/hide delay (number or JSON)
|
|
33
|
+
- data_bs_html: Allow HTML in tooltip/popover content ('true' or 'false')
|
|
34
|
+
- data_bs_custom_class: Custom CSS class for tooltip/popover element
|
|
35
|
+
- data_bs_offset: Tooltip/popover position offset (comma-separated pair)
|
|
36
|
+
|
|
37
|
+
Security & External Links:
|
|
38
|
+
- target="_blank" automatically adds rel="noopener noreferrer"
|
|
39
|
+
- External link icon injection is handled by jekyll-link-decorator
|
|
40
|
+
================================================================================
|
|
41
|
+
{% endcomment %}
|
|
42
|
+
|
|
43
|
+
{%- if page.with_link -%}
|
|
44
|
+
{%- capture html_link -%}
|
|
45
|
+
{%- comment %} === Data source selection === {% endcomment %}
|
|
46
|
+
{%- assign link = include.link | default: nil %}
|
|
47
|
+
{%- assign name = include.name | default: nil %}
|
|
48
|
+
{%- assign target = include.target | default: nil %}
|
|
49
|
+
{%- assign color = include.color | default: "primary" %}
|
|
50
|
+
{%- assign role = include.role | default: nil %}
|
|
51
|
+
{%- assign icon = include.icon | default: nil %}
|
|
52
|
+
{%- assign icon_position = include.icon_position | default: "start" %}
|
|
53
|
+
{%- assign class = include.class | default: nil %}
|
|
54
|
+
{%- assign aria_label = include.aria_label | default: nil %}
|
|
55
|
+
{%- assign data_bs_toggle = include.data_bs_toggle | default: nil %}
|
|
56
|
+
{%- assign data_bs_title = include.data_bs_title | default: nil %}
|
|
57
|
+
{%- assign data_bs_content = include.data_bs_content | default: nil %}
|
|
58
|
+
{%- assign data_bs_placement = include.data_bs_placement | default: nil %}
|
|
59
|
+
{%- assign data_bs_trigger = include.data_bs_trigger | default: nil %}
|
|
60
|
+
{%- assign data_bs_delay = include.data_bs_delay | default: nil %}
|
|
61
|
+
{%- assign data_bs_html = include.data_bs_html | default: nil %}
|
|
62
|
+
{%- assign data_bs_custom_class = include.data_bs_custom_class | default: nil %}
|
|
63
|
+
{%- assign data_bs_offset = include.data_bs_offset | default: nil %}
|
|
64
|
+
{%- assign anchor = nil %}
|
|
65
|
+
{%- assign rel_attr = nil %}
|
|
66
|
+
|
|
67
|
+
{%- comment %} === Data processing === {% endcomment %}
|
|
68
|
+
{%- if link != nil -%}
|
|
69
|
+
{%- assign link_char1 = link | slice: 0, 1 -%}
|
|
70
|
+
{%- assign link_char2 = link | slice: 0, 2 -%}
|
|
71
|
+
{%- if link contains "://" or link contains "mailto:" or link contains "tel:" or link_char1 == "#" or link_char2 == "//" -%}
|
|
72
|
+
{%- assign href_value = link %}
|
|
73
|
+
{%- else -%}
|
|
74
|
+
{%- assign href_value = site.baseurl | append: link %}
|
|
75
|
+
{%- endif -%}
|
|
76
|
+
{%- else -%}
|
|
77
|
+
{%- assign href_value = site.baseurl %}
|
|
78
|
+
{%- assign anchor = name | strip | replace: ' ', '-' | remove: '"' | remove: "'" | remove: '?' | remove: '&' | remove: '#' | remove: '/' | downcase %}
|
|
79
|
+
{%- endif -%}
|
|
80
|
+
|
|
81
|
+
{%- if class != nil -%}
|
|
82
|
+
{%- assign link_class = class %}
|
|
83
|
+
{%- else -%}
|
|
84
|
+
{%- capture link_class -%}link link-{{ color }} link-offset-3 link-offset-3-hover link-underline-{{ color }} link-underline-opacity-0 link-underline-opacity-100-hover{%- endcapture -%}
|
|
85
|
+
{%- endif -%}
|
|
86
|
+
|
|
87
|
+
{%- comment %} --- Security attributes for external links --- {% endcomment %}
|
|
88
|
+
{%- if target == "_blank" -%}
|
|
89
|
+
{%- assign rel_attr = "noopener noreferrer" %}
|
|
90
|
+
{%- endif -%}
|
|
91
|
+
|
|
92
|
+
{%- comment %} --- Link name with optional icon --- {% endcomment %}
|
|
93
|
+
{%- assign final_icon = icon %}
|
|
94
|
+
{%- capture link_name -%}
|
|
95
|
+
{%- if final_icon != nil -%}
|
|
96
|
+
{%- if name != nil and icon_position == "end" -%}
|
|
97
|
+
{{ name }}<i class="{{ final_icon }} ms-1" aria-hidden="true"></i>
|
|
98
|
+
{%- elsif name != nil and icon_position == "start" -%}
|
|
99
|
+
<i class="{{ final_icon }} me-1" aria-hidden="true"></i>{{ name }}
|
|
100
|
+
{%- else -%}
|
|
101
|
+
<i class="{{ final_icon }}" aria-hidden="true"></i>
|
|
102
|
+
{%- endif -%}
|
|
103
|
+
{%- else -%}
|
|
104
|
+
{{ name }}
|
|
105
|
+
{%- endif -%}
|
|
106
|
+
{%- endcapture -%}
|
|
107
|
+
|
|
108
|
+
{%- comment %} --- HTML: Anchor tag with attributes --- {% endcomment %}
|
|
109
|
+
<a
|
|
110
|
+
href="{{ href_value }}{% if anchor != nil and anchor != "" %}#{{ anchor }}{% endif %}"
|
|
111
|
+
class="{{ link_class }}"
|
|
112
|
+
{%- if target != nil %} target="{{ target }}"{% endif %}
|
|
113
|
+
{%- if rel_attr != nil %} rel="{{ rel_attr }}"{% endif %}
|
|
114
|
+
{%- if role != nil %} role="{{ role }}"{% endif %}
|
|
115
|
+
{%- if aria_label != nil %} aria-label="{{ aria_label }}"{% endif %}
|
|
116
|
+
{%- if data_bs_toggle != nil %} data-bs-toggle="{{ data_bs_toggle }}"{% endif %}
|
|
117
|
+
{%- if data_bs_title != nil %} data-bs-title="{{ data_bs_title }}"{% endif %}
|
|
118
|
+
{%- if data_bs_content != nil %} data-bs-content="{{ data_bs_content }}"{% endif %}
|
|
119
|
+
{%- if data_bs_placement != nil %} data-bs-placement="{{ data_bs_placement }}"{% endif %}
|
|
120
|
+
{%- if data_bs_trigger != nil %} data-bs-trigger="{{ data_bs_trigger }}"{% endif %}
|
|
121
|
+
{%- if data_bs_delay != nil %} data-bs-delay="{{ data_bs_delay }}"{% endif %}
|
|
122
|
+
{%- if data_bs_html != nil %} data-bs-html="{{ data_bs_html }}"{% endif %}
|
|
123
|
+
{%- if data_bs_custom_class != nil %} data-bs-custom-class="{{ data_bs_custom_class }}"{% endif %}
|
|
124
|
+
{%- if data_bs_offset != nil %} data-bs-offset="{{ data_bs_offset }}"{% endif %}>
|
|
125
|
+
{{- link_name | strip_newlines | strip -}}
|
|
126
|
+
</a>
|
|
127
|
+
{%- endcapture -%}
|
|
128
|
+
{{- html_link }}
|
|
129
|
+
{%- endif -%}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Language Selector (Locales Dropdown)
|
|
4
|
+
Purpose: Renders dropdown menu for language/locale selection with current
|
|
5
|
+
language detection and visual indicators. Generates links to same page in
|
|
6
|
+
different language versions.
|
|
7
|
+
================================================================================
|
|
8
|
+
|
|
9
|
+
Configuration: Reads from unified `with_locales_data` schema via Jekyll defaults.
|
|
10
|
+
- Enable with: with_locales: true in _config.yml defaults or page front matter
|
|
11
|
+
- Locales defined in: with_locales_data.locales
|
|
12
|
+
- Uses site.data.base.languages for language name lookups
|
|
13
|
+
- Automatically detects current page locale and highlights in menu
|
|
14
|
+
- Always includes English (en) even if not in locales list
|
|
15
|
+
|
|
16
|
+
Features:
|
|
17
|
+
- Displays current language name in button with locale code
|
|
18
|
+
- Shows all available languages in dropdown (including English)
|
|
19
|
+
- Shows checkmark next to current language in dropdown
|
|
20
|
+
- Marks current language link with active class
|
|
21
|
+
- Displays language code in parentheses (e.g., "Español (es)")
|
|
22
|
+
|
|
23
|
+
Locale Detection:
|
|
24
|
+
- page.data['locale'] is set by localization_gettext.rb plugin in LocalizedPage.setup_localized_data()
|
|
25
|
+
- Set for each localized page variant (e.g., /es/ pages have locale='es')
|
|
26
|
+
- Defaults to 'en' if not set (English/canonical pages)
|
|
27
|
+
================================================================================
|
|
28
|
+
{% endcomment %}
|
|
29
|
+
|
|
30
|
+
{%- assign with_locales = include.with_locales
|
|
31
|
+
| default: page.with_locales
|
|
32
|
+
%}
|
|
33
|
+
|
|
34
|
+
{%- assign with_locales_data = include.data
|
|
35
|
+
| default: page.with_locales_data
|
|
36
|
+
| default: site.data.locales
|
|
37
|
+
| default: site.data.base.locales
|
|
38
|
+
%}
|
|
39
|
+
|
|
40
|
+
{%- assign with_locales_schema = site.data.base.locales_schema.properties.with_locales_data.properties %}
|
|
41
|
+
|
|
42
|
+
{%- if with_locales %}
|
|
43
|
+
|
|
44
|
+
{%- comment %} Build array of all available locales (always include English) {%- endcomment %}
|
|
45
|
+
{%- assign all_locales = with_locales_data.locales | default: with_locales_schema.locales.default %}
|
|
46
|
+
{%- unless all_locales contains "en" %}
|
|
47
|
+
{%- assign all_locales = all_locales | unshift: "en" %}
|
|
48
|
+
{%- endunless %}
|
|
49
|
+
|
|
50
|
+
{%- comment %} Detect current page locale from URL: /es/..., /fr/..., etc. {%- endcomment %}
|
|
51
|
+
{%- assign url_parts = page.url | split: "/" %}
|
|
52
|
+
{%- assign current_locale = "en" %}
|
|
53
|
+
{%- if url_parts[1] and all_locales contains url_parts[1] %}
|
|
54
|
+
{%- assign current_locale = url_parts[1] %}
|
|
55
|
+
{%- endif %}
|
|
56
|
+
|
|
57
|
+
<p class="mb-2">Change page language:</p>
|
|
58
|
+
<div class="dropdown mb-4">
|
|
59
|
+
<button class="btn btn-sm btn-outline-primary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-label="Languages">
|
|
60
|
+
<i class="fa-solid fa-language me-1"></i> {{ site.data.base.languages[current_locale] }} ({{ current_locale }})
|
|
61
|
+
</button>
|
|
62
|
+
<ul class="dropdown-menu">
|
|
63
|
+
{%- for locale in all_locales %}
|
|
64
|
+
{%- comment %} DEBUG: page.url={{ page.url }}, current_locale={{ current_locale }}, target_locale={{ locale }} {%- endcomment %}
|
|
65
|
+
{%- assign locale_url = page.url | switch_locale_url: locale %}
|
|
66
|
+
|
|
67
|
+
{%- if locale == current_locale %}
|
|
68
|
+
<li class="small"><a class="dropdown-item active" href="{{ site.baseurl }}{{ locale_url }}" aria-current="true">
|
|
69
|
+
{{ site.data.base.languages[locale] }} ({{ locale }}) <i class="fa-solid fa-check ms-3"></i>
|
|
70
|
+
</a></li>
|
|
71
|
+
{%- else %}
|
|
72
|
+
<li class="small"><a class="dropdown-item" href="{{ site.baseurl }}{{ locale_url }}">{{ site.data.base.languages[locale] }} ({{ locale }})</a></li>
|
|
73
|
+
{%- endif %}
|
|
74
|
+
{%- endfor %}
|
|
75
|
+
</ul>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
{%- endif %}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Navigation Bar Component
|
|
4
|
+
Purpose: Renders fixed-top navigation bar with branding, responsive toggle,
|
|
5
|
+
and hierarchical menu items with dropdown support.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Fixed top positioning: always visible during scroll
|
|
10
|
+
- Responsive hamburger menu: collapses on mobile
|
|
11
|
+
- Dropdown menus: multi-level navigation
|
|
12
|
+
- Brand image and manifestation text support
|
|
13
|
+
- Filtered navitems by visible_on='navbar'
|
|
14
|
+
|
|
15
|
+
Required Inputs:
|
|
16
|
+
- brand_image: Logo image filename
|
|
17
|
+
- navitems: Array of navigation items
|
|
18
|
+
|
|
19
|
+
Optional Inputs:
|
|
20
|
+
- brand_image_class, brand_image_height: Logo styling
|
|
21
|
+
- brand_manifestation: Tagline/subtitle text
|
|
22
|
+
- class: Container CSS classes
|
|
23
|
+
- navitems[].menu: Submenu array for dropdowns
|
|
24
|
+
|
|
25
|
+
Data Source Hierarchy (priority):
|
|
26
|
+
1. include.data
|
|
27
|
+
2. page.with_navbar_data
|
|
28
|
+
3. site.data.navbar
|
|
29
|
+
4. site.data.base.navbar
|
|
30
|
+
================================================================================
|
|
31
|
+
{% endcomment %}
|
|
32
|
+
|
|
33
|
+
{%- assign with_navbar = include.with_navbar
|
|
34
|
+
| default: page.with_navbar
|
|
35
|
+
%}
|
|
36
|
+
|
|
37
|
+
{%- assign with_navbar_data = include.data
|
|
38
|
+
| default: page.with_navbar_data
|
|
39
|
+
| default: site.data.navbar
|
|
40
|
+
| default: site.data.base.navbar
|
|
41
|
+
%}
|
|
42
|
+
|
|
43
|
+
{%- if with_navbar %}
|
|
44
|
+
|
|
45
|
+
{%- assign with_navbar_schema = site.data.base.navbar_schema.properties.with_navbar_data.properties %}
|
|
46
|
+
|
|
47
|
+
{%- assign navbar_class = with_navbar_data.class | default: with_navbar_schema.class.default %}
|
|
48
|
+
{%- assign navbar_brand_image = with_navbar_data.brand_image | default: with_navbar_schema.brand_image.default %}
|
|
49
|
+
{%- assign navbar_brand_image_class = with_navbar_data.brand_image_class | default: with_navbar_schema.brand_image_class.default %}
|
|
50
|
+
{%- assign navbar_brand_image_height = with_navbar_data.brand_image_height | default: with_navbar_schema.brand_image_height.default %}
|
|
51
|
+
{%- assign navbar_brand_manifestation = with_navbar_data.brand_manifestation | default: with_navbar_schema.brand_manifestation.default %}
|
|
52
|
+
{%- assign navbar_brand_manifestation_class = with_navbar_data.brand_manifestation_class | default: with_navbar_schema.brand_manifestation_class.default %}
|
|
53
|
+
{%- assign navbar_navitems = with_navbar_data.navitems | where: "visible_on", "navbar" | default: with_navbar_schema.navitems.default %}
|
|
54
|
+
|
|
55
|
+
<nav class="navbar bg-dark fixed-top navbar-expand-lg shadow{% if navbar_class != "" %} {{ navbar_class }}{% endif %}" aria-label="{{ include.arialable | default: 'navbar'}}" data-bs-theme="dark">
|
|
56
|
+
<div class="container">
|
|
57
|
+
|
|
58
|
+
{%- if navbar_brand_image != "" %}
|
|
59
|
+
{%- assign navbar_brand_link = "/" | locale_url: page.locale %}
|
|
60
|
+
<a class="navbar-brand" href="{{ site.baseurl }}{{ navbar_brand_link }}">
|
|
61
|
+
|
|
62
|
+
<img
|
|
63
|
+
class="d-inline-block align-text-middle me-2{% if navbar_brand_image_class != "" %} {{ navbar_brand_image_class }}{% endif %}"
|
|
64
|
+
src="{{ site.baseurl }}/assets/img/{{ navbar_brand_image }}"
|
|
65
|
+
height="{{ navbar_brand_image_height }}"
|
|
66
|
+
alt="{{ site.title }}" />
|
|
67
|
+
|
|
68
|
+
{%- if navbar_brand_manifestation != "" %}
|
|
69
|
+
<span class="d-inline-block align-text-middle fs-6 border-start border-1 border-light opacity-75 ps-3{% if navbar_brand_manifestation_class != "" %} {{ navbar_brand_manifestation_class }}{% endif %}">{{ navbar_brand_manifestation }}</span>
|
|
70
|
+
{%- endif %}
|
|
71
|
+
|
|
72
|
+
</a>
|
|
73
|
+
{%- endif %}
|
|
74
|
+
|
|
75
|
+
{% if navbar_navitems.size > 0 %}
|
|
76
|
+
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
77
|
+
<span class="navbar-toggler-icon"></span>
|
|
78
|
+
</button>
|
|
79
|
+
|
|
80
|
+
<div class="collapse navbar-collapse" id="navbarContent">
|
|
81
|
+
<ul class="navbar-nav ms-auto">
|
|
82
|
+
{%- for navitem in navbar_navitems %}
|
|
83
|
+
{%- assign navitem_link = navitem.link | locale_url: page.locale %}
|
|
84
|
+
{%- if navitem.menu.size == 0 %}
|
|
85
|
+
<li class="nav-item">
|
|
86
|
+
{%- include base/link.html.liquid
|
|
87
|
+
class = "nav-link"
|
|
88
|
+
name = navitem.name
|
|
89
|
+
link = navitem_link
|
|
90
|
+
role = "presentation"
|
|
91
|
+
icon = navitem.icon
|
|
92
|
+
%}
|
|
93
|
+
</li>
|
|
94
|
+
{%- else %}
|
|
95
|
+
<li class="nav-item dropdown">
|
|
96
|
+
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown-{{ forloop.index }}" role="button" data-bs-toggle="dropdown" aria-expanded="false">
|
|
97
|
+
<i class="{{ navitem.icon }} me-1" aria-hidden="true"></i>{{ navitem.name }}
|
|
98
|
+
</a>
|
|
99
|
+
<ul class="dropdown-menu dropdown-menu-dark shadow">
|
|
100
|
+
{%- for dropdownitem in navitem.menu %}
|
|
101
|
+
{%- assign dropdownitem_link = dropdownitem.link | locale_url: page.locale %}
|
|
102
|
+
<li>
|
|
103
|
+
{%- include base/link.html.liquid
|
|
104
|
+
class = "dropdown-item"
|
|
105
|
+
name = dropdownitem.name
|
|
106
|
+
link = dropdownitem_link
|
|
107
|
+
role = "presentation"
|
|
108
|
+
%}
|
|
109
|
+
</li>
|
|
110
|
+
{%- endfor %}
|
|
111
|
+
</ul>
|
|
112
|
+
</li>
|
|
113
|
+
{%- endif %}
|
|
114
|
+
{%- endfor %}
|
|
115
|
+
</ul>
|
|
116
|
+
</div>
|
|
117
|
+
{% endif %}
|
|
118
|
+
|
|
119
|
+
</div>
|
|
120
|
+
</nav>
|
|
121
|
+
{%- endif -%}
|