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,91 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Sponsors Carousel Component
|
|
4
|
+
Purpose: Renders sponsor logos as a Bootstrap carousel with optional title and
|
|
5
|
+
message. Automatically cycles through active sponsors.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Strategic Design Logic:
|
|
9
|
+
- Multi-level data source hierarchy for flexible configuration
|
|
10
|
+
- Carousel display with fade transition for visual polish
|
|
11
|
+
- Markdown-enabled message for rich introductory text
|
|
12
|
+
- Active-flag filtering to soft-delete without data removal
|
|
13
|
+
|
|
14
|
+
Required Fields (per item in the members array):
|
|
15
|
+
- name: Sponsor display name (used as alt text)
|
|
16
|
+
- image: Logo source — bare filename (resolved via image_base_path) or absolute URL
|
|
17
|
+
- url: Sponsor website URL
|
|
18
|
+
|
|
19
|
+
Optional Data Fields:
|
|
20
|
+
- image_base_path: Base path for bare filenames (default: /assets/img/base/)
|
|
21
|
+
|
|
22
|
+
Optional Inputs (from include):
|
|
23
|
+
- data: Sponsors data object (overrides all fallbacks)
|
|
24
|
+
- id: Carousel element ID (default: "sponsorsCarousel")
|
|
25
|
+
- with_title: Set false to suppress title/message block
|
|
26
|
+
|
|
27
|
+
Data Source Hierarchy (in priority order):
|
|
28
|
+
1. include.data - Explicitly passed sponsors data object
|
|
29
|
+
2. page.with_sponsors_data - Page front matter configuration
|
|
30
|
+
3. site.data.sponsors - Site-specific sponsors configuration
|
|
31
|
+
4. site.data.base.sponsors - Theme default sponsors data
|
|
32
|
+
|
|
33
|
+
Conditional Logic:
|
|
34
|
+
- Component renders only when page.with_sponsors is true
|
|
35
|
+
- Title/message block suppressed when include.with_title is false
|
|
36
|
+
- Members filtered by is_active != false
|
|
37
|
+
================================================================================
|
|
38
|
+
{% endcomment %}
|
|
39
|
+
|
|
40
|
+
{%- assign with_sponsors = include.with_sponsors
|
|
41
|
+
| default: page.with_sponsors
|
|
42
|
+
%}
|
|
43
|
+
|
|
44
|
+
{%- assign with_sponsors_data = include.data
|
|
45
|
+
| default: page.with_sponsors_data
|
|
46
|
+
| default: site.data.sponsors
|
|
47
|
+
| default: site.data.base.sponsors
|
|
48
|
+
%}
|
|
49
|
+
|
|
50
|
+
{%- if with_sponsors -%}
|
|
51
|
+
|
|
52
|
+
{%- assign with_sponsors_schema = site.data.base.sponsors_schema.properties.with_sponsors_data.properties %}
|
|
53
|
+
|
|
54
|
+
{%- assign sponsors_title = with_sponsors_data.title | default: with_sponsors_schema.title.default -%}
|
|
55
|
+
{%- assign sponsors_icon = with_sponsors_data.icon | default: with_sponsors_schema.icon.default -%}
|
|
56
|
+
{%- assign sponsors_message = with_sponsors_data.message | default: with_sponsors_schema.message.default -%}
|
|
57
|
+
{%- assign sponsors_members = with_sponsors_data.members | default: with_sponsors_schema.members.default -%}
|
|
58
|
+
{%- assign sponsors_image_base = with_sponsors_data.image_base_path | default: with_sponsors_schema.image_base_path.default -%}
|
|
59
|
+
|
|
60
|
+
{%- assign carousel_id = include.id | default: "sponsorsCarousel" -%}
|
|
61
|
+
|
|
62
|
+
<div id="{{ carousel_id }}" class="d-flex flex-wrap mb-5">
|
|
63
|
+
|
|
64
|
+
{%- comment %} === Presentation (Begin) === {% endcomment %}
|
|
65
|
+
{%- if include.with_title != false %}
|
|
66
|
+
<p class="h6"><i class="{{ sponsors_icon }}"></i> {{ sponsors_title }}</p>
|
|
67
|
+
{{ sponsors_message | markdownify | decorate_links }}
|
|
68
|
+
{%- endif %}
|
|
69
|
+
|
|
70
|
+
<div class="carousel slide carousel-fade" data-bs-ride="carousel">
|
|
71
|
+
<div class="carousel-inner">
|
|
72
|
+
{%- for member in sponsors_members -%}
|
|
73
|
+
{%- if member.is_active != false %}
|
|
74
|
+
<div class="carousel-item{% if forloop.first %} active{% endif %}">
|
|
75
|
+
<div class="w-100 align-middle" style="height: 80px; width: 262px">
|
|
76
|
+
{%- if member.image contains "://" -%}
|
|
77
|
+
<a href="{{ member.url }}"><img src="{{ member.image }}" class="rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
|
|
78
|
+
{%- else -%}
|
|
79
|
+
<a href="{{ member.url }}"><img src="{{ site.baseurl }}{{ sponsors_image_base }}{{ member.image }}" class="rounded" style="max-height: 60px; max-width: 242px" alt="{{ member.name }}"></a>
|
|
80
|
+
{%- endif -%}
|
|
81
|
+
</div>
|
|
82
|
+
</div>
|
|
83
|
+
{%- endif -%}
|
|
84
|
+
{%- endfor %}
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
{%- comment %} === Presentation (End) === {% endcomment %}
|
|
88
|
+
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
{%- endif -%}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Page Title Component
|
|
4
|
+
Purpose: Renders page title section with optional subtitle/lead text. Displays
|
|
5
|
+
primary heading and descriptive lead with customizable styling.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Strategic Design Logic:
|
|
9
|
+
- Semantic headings: h1 primary, lead text for subtitle
|
|
10
|
+
- Data source hierarchy: flexible configuration
|
|
11
|
+
- Customizable styling: class overrides per element
|
|
12
|
+
- Optional lead text: subtitle/description support
|
|
13
|
+
- Schema-based defaults: consistent styling
|
|
14
|
+
- Responsive layout: bootstrap grid
|
|
15
|
+
|
|
16
|
+
Required Inputs (from data objects):
|
|
17
|
+
None - uses page.title as fallback
|
|
18
|
+
|
|
19
|
+
Optional Inputs (from data objects):
|
|
20
|
+
- title: Page heading text (defaults to page.title)
|
|
21
|
+
- title_lead: Subtitle/description text
|
|
22
|
+
|
|
23
|
+
Optional Inputs (from include):
|
|
24
|
+
- data: Title configuration object
|
|
25
|
+
|
|
26
|
+
Data Source Hierarchy (in priority order):
|
|
27
|
+
1. include.data - Explicitly passed configuration
|
|
28
|
+
2. page.with_title_data - Page front matter
|
|
29
|
+
3. site.data.title - Site configuration
|
|
30
|
+
4. site.data.base.title - Theme defaults
|
|
31
|
+
|
|
32
|
+
Conditional Logic:
|
|
33
|
+
- title_lead present: Only renders subtitle if not empty
|
|
34
|
+
================================================================================
|
|
35
|
+
{% endcomment %}
|
|
36
|
+
|
|
37
|
+
{%- assign with_title = include.with_title
|
|
38
|
+
| default: page.with_title
|
|
39
|
+
%}
|
|
40
|
+
|
|
41
|
+
{%- assign with_title_data = include.data
|
|
42
|
+
| default: page.with_title_data
|
|
43
|
+
| default: site.data.title
|
|
44
|
+
| default: site.data.base.title
|
|
45
|
+
%}
|
|
46
|
+
|
|
47
|
+
{%- if with_title -%}
|
|
48
|
+
|
|
49
|
+
{%- assign with_title_schema = site.data.base.title_schema.properties.with_title_data.properties %}
|
|
50
|
+
|
|
51
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
52
|
+
{%- assign class = with_title_data.class | default: with_title_schema.class.default %}
|
|
53
|
+
{%- assign title = with_title_data.title | default: page.title %}
|
|
54
|
+
{%- assign title_class = with_title_data.title_class | default: with_title_schema.title_class.default %}
|
|
55
|
+
{%- assign title_lead = with_title_data.title_lead | default: page.title_lead %}
|
|
56
|
+
{%- assign title_lead_class = with_title_data.title_lead_class | default: with_title_schema.title_lead_class.default %}
|
|
57
|
+
|
|
58
|
+
<div class="{{ class }}">
|
|
59
|
+
<p class="{{ title_class }}">{{ title }}</p>
|
|
60
|
+
{% if title_lead != "" %}
|
|
61
|
+
<p class="{{ title_lead_class }}">{{ title_lead }}</p>
|
|
62
|
+
{% endif %}
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
{%- endif -%}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
{% capture tocWorkspace %}
|
|
2
|
+
{% comment %}
|
|
3
|
+
Copyright (c) 2017 Vladimir "allejo" Jimenez
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person
|
|
6
|
+
obtaining a copy of this software and associated documentation
|
|
7
|
+
files (the "Software"), to deal in the Software without
|
|
8
|
+
restriction, including without limitation the rights to use,
|
|
9
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the
|
|
11
|
+
Software is furnished to do so, subject to the following
|
|
12
|
+
conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be
|
|
15
|
+
included in all copies or substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
19
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
21
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
22
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
23
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
24
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
|
25
|
+
{% endcomment %}
|
|
26
|
+
{% comment %}
|
|
27
|
+
Version 1.2.1
|
|
28
|
+
https://github.com/allejo/jekyll-toc
|
|
29
|
+
|
|
30
|
+
"...like all things liquid - where there's a will, and ~36 hours to spare, there's usually a/some way" ~jaybe
|
|
31
|
+
|
|
32
|
+
Usage:
|
|
33
|
+
{% include toc.html html=content sanitize=true class="inline_toc" id="my_toc" h_min=2 h_max=3 %}
|
|
34
|
+
|
|
35
|
+
Parameters:
|
|
36
|
+
* html (string) - the HTML of compiled markdown generated by kramdown in Jekyll
|
|
37
|
+
|
|
38
|
+
Optional Parameters:
|
|
39
|
+
* sanitize (bool) : false - when set to true, the headers will be stripped of any HTML in the TOC
|
|
40
|
+
* class (string) : '' - a CSS class assigned to the TOC
|
|
41
|
+
* id (string) : '' - an ID to assigned to the TOC
|
|
42
|
+
* h_min (int) : 1 - the minimum TOC header level to use; any header lower than this value will be ignored
|
|
43
|
+
* h_max (int) : 6 - the maximum TOC header level to use; any header greater than this value will be ignored
|
|
44
|
+
* ordered (bool) : false - when set to true, an ordered list will be outputted instead of an unordered list
|
|
45
|
+
* item_class (string) : '' - add custom class(es) for each list item; has support for '%level%' placeholder, which is the current heading level
|
|
46
|
+
* submenu_class (string) : '' - add custom class(es) for each child group of headings; has support for '%level%' placeholder which is the current "submenu" heading level
|
|
47
|
+
* base_url (string) : '' - add a base url to the TOC links for when your TOC is on another page than the actual content
|
|
48
|
+
* anchor_class (string) : '' - add custom class(es) for each anchor element
|
|
49
|
+
* skip_no_ids (bool) : false - skip headers that do not have an `id` attribute
|
|
50
|
+
* flat_toc (bool) : false - when set to true, the TOC will be a single level list
|
|
51
|
+
|
|
52
|
+
Output:
|
|
53
|
+
An ordered or unordered list representing the table of contents of a markdown block. This snippet will only
|
|
54
|
+
generate the table of contents and will NOT output the markdown given to it
|
|
55
|
+
{% endcomment %}
|
|
56
|
+
|
|
57
|
+
{% capture newline %}
|
|
58
|
+
{% endcapture %}
|
|
59
|
+
{% assign newline = newline | rstrip %} <!-- Remove the extra spacing but preserve the newline -->
|
|
60
|
+
|
|
61
|
+
{% capture deprecation_warnings %}{% endcapture %}
|
|
62
|
+
|
|
63
|
+
{% if include.baseurl %}
|
|
64
|
+
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "baseurl" has been deprecated, use "base_url" instead -->{{ newline }}{% endcapture %}
|
|
65
|
+
{% endif %}
|
|
66
|
+
|
|
67
|
+
{% if include.skipNoIDs %}
|
|
68
|
+
{% capture deprecation_warnings %}{{ deprecation_warnings }}<!-- jekyll-toc :: "skipNoIDs" has been deprecated, use "skip_no_ids" instead -->{{ newline }}{% endcapture %}
|
|
69
|
+
{% endif %}
|
|
70
|
+
|
|
71
|
+
{% capture jekyll_toc %}{% endcapture %}
|
|
72
|
+
{% assign orderedList = include.ordered | default: false %}
|
|
73
|
+
{% assign flatToc = include.flat_toc | default: false %}
|
|
74
|
+
{% assign baseURL = include.base_url | default: include.baseurl | default: '' %}
|
|
75
|
+
{% assign skipNoIDs = include.skip_no_ids | default: include.skipNoIDs | default: false %}
|
|
76
|
+
{% assign minHeader = include.h_min | default: 1 %}
|
|
77
|
+
{% assign maxHeader = include.h_max | default: 6 %}
|
|
78
|
+
{% assign nodes = include.html | strip | split: '<h' %}
|
|
79
|
+
|
|
80
|
+
{% assign firstHeader = true %}
|
|
81
|
+
{% assign currLevel = 0 %}
|
|
82
|
+
{% assign lastLevel = 0 %}
|
|
83
|
+
|
|
84
|
+
{% capture listModifier %}{% if orderedList %}ol{% else %}ul{% endif %}{% endcapture %}
|
|
85
|
+
|
|
86
|
+
{% for node in nodes %}
|
|
87
|
+
{% if node == "" %}
|
|
88
|
+
{% continue %}
|
|
89
|
+
{% endif %}
|
|
90
|
+
|
|
91
|
+
{% assign currLevel = node | replace: '"', '' | slice: 0, 1 | times: 1 %}
|
|
92
|
+
|
|
93
|
+
{% if currLevel < minHeader or currLevel > maxHeader %}
|
|
94
|
+
{% continue %}
|
|
95
|
+
{% endif %}
|
|
96
|
+
|
|
97
|
+
{% assign _workspace = node | split: '</h' %}
|
|
98
|
+
|
|
99
|
+
{% assign _idWorkspace = _workspace[0] | split: 'id="' %}
|
|
100
|
+
{% assign _idWorkspace = _idWorkspace[1] | split: '"' %}
|
|
101
|
+
{% assign htmlID = _idWorkspace[0] %}
|
|
102
|
+
|
|
103
|
+
{% assign _classWorkspace = _workspace[0] | split: 'class="' %}
|
|
104
|
+
{% assign _classWorkspace = _classWorkspace[1] | split: '"' %}
|
|
105
|
+
{% assign htmlClass = _classWorkspace[0] %}
|
|
106
|
+
|
|
107
|
+
{% if htmlClass contains "no_toc" %}
|
|
108
|
+
{% continue %}
|
|
109
|
+
{% endif %}
|
|
110
|
+
|
|
111
|
+
{% if firstHeader %}
|
|
112
|
+
{% assign minHeader = currLevel %}
|
|
113
|
+
{% endif %}
|
|
114
|
+
|
|
115
|
+
{% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %}
|
|
116
|
+
{% assign header = _workspace[0] | replace: _hAttrToStrip, '' %}
|
|
117
|
+
|
|
118
|
+
{% if include.item_class and include.item_class != blank %}
|
|
119
|
+
{% capture listItemClass %} class="{{ include.item_class | replace: '%level%', currLevel | split: '.' | join: ' ' }}"{% endcapture %}
|
|
120
|
+
{% endif %}
|
|
121
|
+
|
|
122
|
+
{% if include.submenu_class and include.submenu_class != blank %}
|
|
123
|
+
{% assign subMenuLevel = currLevel | minus: 1 %}
|
|
124
|
+
{% capture subMenuClass %} class="{{ include.submenu_class | replace: '%level%', subMenuLevel | split: '.' | join: ' ' }}"{% endcapture %}
|
|
125
|
+
{% endif %}
|
|
126
|
+
|
|
127
|
+
{% capture anchorBody %}{% if include.sanitize %}{{ header | strip_html }}{% else %}{{ header }}{% endif %}{% endcapture %}
|
|
128
|
+
|
|
129
|
+
{% if htmlID %}
|
|
130
|
+
{% capture anchorAttributes %} href="{% if baseURL %}{{ baseURL }}{% endif %}#{{ htmlID }}"{% endcapture %}
|
|
131
|
+
|
|
132
|
+
{% if include.anchor_class %}
|
|
133
|
+
{% capture anchorAttributes %}{{ anchorAttributes }} class="{{ include.anchor_class | split: '.' | join: ' ' }}"{% endcapture %}
|
|
134
|
+
{% endif %}
|
|
135
|
+
|
|
136
|
+
{% capture listItem %}<a{{ anchorAttributes }}>{{ anchorBody }}</a>{% endcapture %}
|
|
137
|
+
{% elsif skipNoIDs == true %}
|
|
138
|
+
{% continue %}
|
|
139
|
+
{% else %}
|
|
140
|
+
{% capture listItem %}{{ anchorBody }}{% endcapture %}
|
|
141
|
+
{% endif %}
|
|
142
|
+
|
|
143
|
+
{% if currLevel > lastLevel and flatToc == false %}
|
|
144
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}<{{ listModifier }}{{ subMenuClass }}>{% endcapture %}
|
|
145
|
+
{% elsif currLevel < lastLevel and flatToc == false %}
|
|
146
|
+
{% assign repeatCount = lastLevel | minus: currLevel %}
|
|
147
|
+
|
|
148
|
+
{% for i in (1..repeatCount) %}
|
|
149
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
|
|
150
|
+
{% endfor %}
|
|
151
|
+
|
|
152
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
|
|
153
|
+
{% else %}
|
|
154
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li>{% endcapture %}
|
|
155
|
+
{% endif %}
|
|
156
|
+
|
|
157
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}<li{{ listItemClass }}>{{ listItem }}{% endcapture %}
|
|
158
|
+
|
|
159
|
+
{% assign lastLevel = currLevel %}
|
|
160
|
+
{% assign firstHeader = false %}
|
|
161
|
+
{% endfor %}
|
|
162
|
+
|
|
163
|
+
{% if flatToc == true %}
|
|
164
|
+
{% assign repeatCount = 1 %}
|
|
165
|
+
{% else %}
|
|
166
|
+
{% assign repeatCount = minHeader | minus: 1 %}
|
|
167
|
+
{% assign repeatCount = lastLevel | minus: repeatCount %}
|
|
168
|
+
{% endif %}
|
|
169
|
+
|
|
170
|
+
{% for i in (1..repeatCount) %}
|
|
171
|
+
{% capture jekyll_toc %}{{ jekyll_toc }}</li></{{ listModifier }}>{% endcapture %}
|
|
172
|
+
{% endfor %}
|
|
173
|
+
|
|
174
|
+
{% if jekyll_toc != '' %}
|
|
175
|
+
{% assign rootAttributes = '' %}
|
|
176
|
+
{% if include.class and include.class != blank %}
|
|
177
|
+
{% capture rootAttributes %} class="{{ include.class | split: '.' | join: ' ' }}"{% endcapture %}
|
|
178
|
+
{% endif %}
|
|
179
|
+
|
|
180
|
+
{% if include.id and include.id != blank %}
|
|
181
|
+
{% capture rootAttributes %}{{ rootAttributes }} id="{{ include.id }}"{% endcapture %}
|
|
182
|
+
{% endif %}
|
|
183
|
+
|
|
184
|
+
{% if rootAttributes %}
|
|
185
|
+
{% assign nodes = jekyll_toc | split: '>' %}
|
|
186
|
+
{% capture jekyll_toc %}<{{ listModifier }}{{ rootAttributes }}>{{ nodes | shift | join: '>' }}>{% endcapture %}
|
|
187
|
+
{% endif %}
|
|
188
|
+
{% endif %}
|
|
189
|
+
{% endcapture %}{% assign tocWorkspace = '' %}{{ deprecation_warnings }}{{ jekyll_toc -}}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Table of Contents (TOC) Component
|
|
4
|
+
Purpose: Generates interactive table of contents from page content headings
|
|
5
|
+
using Jekyll-TOC generator. Displays in collapsible Bootstrap accordion.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Strategic Design Logic:
|
|
9
|
+
- Accordion wrapper: collapsible expandable container
|
|
10
|
+
- Heading extraction: automatic from page content
|
|
11
|
+
- Hierarchy support: nested outline structure
|
|
12
|
+
- Configuration-driven: customizable via data object
|
|
13
|
+
- Automatic anchor generation: heading IDs for linking
|
|
14
|
+
- Responsive: works on all screen sizes
|
|
15
|
+
|
|
16
|
+
Required Inputs (from page object):
|
|
17
|
+
- content: Page HTML content (automatically generated)
|
|
18
|
+
|
|
19
|
+
Optional Inputs (from data objects):
|
|
20
|
+
- class: Container CSS classes
|
|
21
|
+
- id: TOC wrapper ID (default: "page-toc")
|
|
22
|
+
- item_class: TOC item CSS classes (default: "my-2")
|
|
23
|
+
- anchor_class: Anchor link CSS classes
|
|
24
|
+
- h_min/h_max: Heading level range (h2-h4 typical)
|
|
25
|
+
- ordered: Use ordered list (true/false)
|
|
26
|
+
- submenu_class: Submenu CSS classes
|
|
27
|
+
- base_url: Base URL for anchors
|
|
28
|
+
- sanitize: Clean HTML in headings (boolean)
|
|
29
|
+
- skip_no_ids: Skip headings without IDs (boolean)
|
|
30
|
+
- flat_toc: Flatten hierarchy (boolean)
|
|
31
|
+
|
|
32
|
+
Optional Inputs (from include):
|
|
33
|
+
- data: TOC configuration object
|
|
34
|
+
|
|
35
|
+
Data Source Hierarchy (in priority order):
|
|
36
|
+
- with_toc: include.with_toc → page.with_toc
|
|
37
|
+
- with_toc_data: include.data → page.with_toc_data → site.data.toc → site.data.base.toc
|
|
38
|
+
================================================================================
|
|
39
|
+
{% endcomment %}
|
|
40
|
+
|
|
41
|
+
{%- assign with_toc = include.with_toc
|
|
42
|
+
| default: page.with_toc
|
|
43
|
+
%}
|
|
44
|
+
|
|
45
|
+
{%- if with_toc -%}
|
|
46
|
+
{%- assign with_toc_data = include.data | default: page.with_toc_data | default: site.data.toc | default: site.data.base.toc %}
|
|
47
|
+
{%- assign with_toc_schema = site.data.base.toc_schema.properties["with_toc_data"].properties %}
|
|
48
|
+
|
|
49
|
+
{%- comment %} === Configuration properties === {% endcomment %}
|
|
50
|
+
{%- assign class = with_toc_data.class | default: with_toc_schema["class"].default %}
|
|
51
|
+
{%- assign id = with_toc_data.id | default: with_toc_schema["id"].default | default: "page-toc" %}
|
|
52
|
+
{%- assign item_class = with_toc_data.item_class | default: with_toc_schema["item_class"].default | default: "my-2" %}
|
|
53
|
+
{%- assign anchor_class = with_toc_data.anchor_class | default: with_toc_schema["anchor_class"].default | default: site.with_link_decorator_data.default_link_classes %}
|
|
54
|
+
{%- assign h_min = with_toc_data.h_min | default: with_toc_schema["h_min"].default %}
|
|
55
|
+
{%- assign h_max = with_toc_data.h_max | default: with_toc_schema["h_max"].default %}
|
|
56
|
+
{%- assign ordered = with_toc_data.ordered | default: with_toc_schema["ordered"].default %}
|
|
57
|
+
{%- assign submenu_class = with_toc_data.submenu_class | default: with_toc_schema["submenu_class"].default %}
|
|
58
|
+
{%- assign base_url = with_toc_data.base_url | default: with_toc_schema["base_url"].default %}
|
|
59
|
+
{%- assign sanitize = with_toc_data.sanitize | default: with_toc_schema["sanitize"].default %}
|
|
60
|
+
{%- assign skip_no_ids = with_toc_data.skip_no_ids | default: with_toc_schema["skip_no_ids"].default %}
|
|
61
|
+
{%- assign flat_toc = with_toc_data.flat_toc | default: with_toc_schema["flat_toc"].default %}
|
|
62
|
+
|
|
63
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
64
|
+
|
|
65
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
66
|
+
<div class="accordion shadow-sm" id="pageToc">
|
|
67
|
+
<div class="accordion-item">
|
|
68
|
+
<div class="accordion-header" id="flush-headingOne">
|
|
69
|
+
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#flush-collapseOne" aria-expanded="false" aria-controls="flush-collapseOne">
|
|
70
|
+
<i class="fa-solid fa-list" aria-hidden="true"></i>
|
|
71
|
+
<span class="mx-3 fw-bold">On this page</span>
|
|
72
|
+
</button>
|
|
73
|
+
</div>
|
|
74
|
+
<div id="flush-collapseOne" class="accordion-collapse collapse" data-bs-parent="#pageToc">
|
|
75
|
+
<div class="accordion-body small">
|
|
76
|
+
{%- include base/toc-generator.html.liquid
|
|
77
|
+
id=id
|
|
78
|
+
html=content
|
|
79
|
+
class=class
|
|
80
|
+
item_class=item_class
|
|
81
|
+
anchor_class=anchor_class
|
|
82
|
+
h_min=h_min
|
|
83
|
+
h_max=h_max
|
|
84
|
+
ordered=ordered
|
|
85
|
+
submenu_class=submenu_class
|
|
86
|
+
base_url=base_url
|
|
87
|
+
sanitize=sanitize
|
|
88
|
+
skip_no_ids=skip_no_ids
|
|
89
|
+
flat_toc=flat_toc
|
|
90
|
+
%}
|
|
91
|
+
</div>
|
|
92
|
+
</div>
|
|
93
|
+
</div>
|
|
94
|
+
</div>
|
|
95
|
+
{%- endif -%}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td>
|
|
3
|
+
{% if row.commands != "" %}
|
|
4
|
+
<div class="input-group">
|
|
5
|
+
<textarea id="{{ card.page }}-{{ release[0] }}-key-{{ forloop.index }}" class="form-control font-monospace" placeholder="{{ row.overview }}" aria-label="{{ row.overview }}" aria-describedby="{{ card.page }}-button-{{ forloop.index }}" readonly rows="2">{{ row.commands }}</textarea>
|
|
6
|
+
<button id="{{ card.page }}-{{ release[0] }}-button-{{ forloop.index }}" class="btn btn-clipboard" type="button" aria-label="Copy to clipboard" data-clipboard-target="#{{ card.page }}-{{ release[0] }}-key-{{ forloop.index }}" data-bs-toggle="tooltip" data-bs-title="Copy to clipboard"><i class="fa-solid fa-clipboard"></i></button>
|
|
7
|
+
</div>
|
|
8
|
+
{% endif %}
|
|
9
|
+
</td>
|
|
10
|
+
</tr>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td>
|
|
3
|
+
{% for rows in release %}
|
|
4
|
+
{% for row in rows.docs %}
|
|
5
|
+
<a class="btn btn-sm btn-primary{% if row.name == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.link }}"{% endif %} role="button"><i class="fa-solid fa-file"></i> {{ row.name }}</a>
|
|
6
|
+
{% endfor %}
|
|
7
|
+
{% endfor %}
|
|
8
|
+
</td>
|
|
9
|
+
</tr>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td>
|
|
3
|
+
{% for rows in release %}
|
|
4
|
+
{% for row in rows.documentation %}
|
|
5
|
+
{% if row.title != "" %}
|
|
6
|
+
<a class="btn btn-primary" href="{{ row.link }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> {{ row.title }}</a>
|
|
7
|
+
{% endif %}
|
|
8
|
+
{% endfor %}
|
|
9
|
+
{% endfor %}
|
|
10
|
+
</td>
|
|
11
|
+
</tr>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td>
|
|
3
|
+
{% if row.overview != "" %}
|
|
4
|
+
{{ row.overview }}
|
|
5
|
+
{% endif %}
|
|
6
|
+
|
|
7
|
+
{% if row.date != "" %}
|
|
8
|
+
{{ row.date | date_to_string: "ordinal", "US" }}
|
|
9
|
+
{% endif %}
|
|
10
|
+
|
|
11
|
+
{% if row.url != "" %}
|
|
12
|
+
<a href="{{ row.url }}"><i class="fas fa-exclamation-circle"></i> Know more</a>
|
|
13
|
+
{% else %}
|
|
14
|
+
{% endif %}
|
|
15
|
+
</td>
|
|
16
|
+
</tr>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td>{{ row.architecture }}</td>
|
|
3
|
+
<td>{% if row.iso] != "" %}<a class="btn btn-primary" href="{{ row.iso }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Mirrors</a>{% endif %}</td>
|
|
4
|
+
<td>{% if row.rpm] != "" %}<a class="btn btn-primary" href="{{ row.rpm }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Mirrors</a>{% endif %}</td>
|
|
5
|
+
<td>{% if row.cloud] != "" %}<a class="btn btn-primary" href="{{ row.cloud }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Images</a>{% endif %}</td>
|
|
6
|
+
<td>{% if row.containers] != "" %}<a class="btn btn-primary" href="{{ row.containers }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Images</a>{% endif %}</td>
|
|
7
|
+
<td>{% if row.vagrant] != "" %}<a class="btn btn-primary" href="{{ row.vagrant }}" role="button"><i class="fa-solid fa-up-right-from-square"></i> Boxes</a>{% endif %}</td>
|
|
8
|
+
</tr>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td class="p-0">
|
|
3
|
+
<div id="carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" class="carousel carousel-dark slide" data-bs-ride="true">
|
|
4
|
+
<div class="carousel-indicators">
|
|
5
|
+
{% for row in rows.screenshots %}
|
|
6
|
+
<button type="button" data-bs-target="#carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" data-bs-slide-to="{{ forloop.index0 }}" {% if forloop.first %}class="active" {% endif %}aria-current="true" aria-label="Screenshot {{ forloop.index }}"></button>
|
|
7
|
+
{% endfor %}
|
|
8
|
+
</div>
|
|
9
|
+
<div class="carousel-inner">
|
|
10
|
+
{% for row in rows.screenshots %}
|
|
11
|
+
<div class="carousel-item{% if forloop.first %} active{% endif %}">
|
|
12
|
+
<img class="d-block w-100" src="{{ site.baseurl }}/assets/img/download/{{ card.page }}-{{ release[0] }}-{{ row.src }}" alt="{{ row.alt }}" />
|
|
13
|
+
</div>
|
|
14
|
+
{% endfor %}
|
|
15
|
+
</div>
|
|
16
|
+
<button class="carousel-control-prev" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" data-bs-slide="prev">
|
|
17
|
+
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
|
18
|
+
<span class="visually-hidden">Previous</span>
|
|
19
|
+
</button>
|
|
20
|
+
<button class="carousel-control-next" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ card.page }}-{{ release[0] }}" data-bs-slide="next">
|
|
21
|
+
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
|
22
|
+
<span class="visually-hidden">Next</span>
|
|
23
|
+
</button>
|
|
24
|
+
</div>
|
|
25
|
+
</td>
|
|
26
|
+
</tr>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td class="p-0">
|
|
3
|
+
<div id="carouselScreenshotsIndicators-{{ release_id }}" class="carousel carousel-dark slide" data-bs-ride="true">
|
|
4
|
+
<div class="carousel-indicators">
|
|
5
|
+
{% for row in rows.screenshots %}
|
|
6
|
+
<button
|
|
7
|
+
{% if forloop.first %}class="active"{% endif %}
|
|
8
|
+
type="button"
|
|
9
|
+
data-bs-target="#carouselScreenshotsIndicators-{{ release_id }}"
|
|
10
|
+
data-bs-slide-to="{{ forloop.index0 }}"
|
|
11
|
+
aria-current="true"
|
|
12
|
+
aria-label="Screenshot {{ forloop.index }}"></button>
|
|
13
|
+
{% endfor %}
|
|
14
|
+
</div>
|
|
15
|
+
<div class="carousel-inner">
|
|
16
|
+
{% for row in rows.screenshots %}
|
|
17
|
+
<div class="carousel-item{% if forloop.first %} active{% endif %}">
|
|
18
|
+
<img class="d-block w-100" src="{{site.url }}{{ site.baseurl }}/assets/img/download/{{ row.src }}" alt="{{ row.alt }}" />
|
|
19
|
+
</div>
|
|
20
|
+
{% endfor %}
|
|
21
|
+
</div>
|
|
22
|
+
<button class="carousel-control-prev" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ release_id }}" data-bs-slide="prev">
|
|
23
|
+
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
|
24
|
+
<span class="visually-hidden">Previous</span>
|
|
25
|
+
</button>
|
|
26
|
+
<button class="carousel-control-next" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ release_id }}" data-bs-slide="next">
|
|
27
|
+
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
|
28
|
+
<span class="visually-hidden">Next</span>
|
|
29
|
+
</button>
|
|
30
|
+
</div>
|
|
31
|
+
</td>
|
|
32
|
+
</tr>
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<tr>
|
|
2
|
+
<td>{{ row.arch }}</td>
|
|
3
|
+
<td><a class="btn btn-sm btn-primary{% if row.iso] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.iso }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
|
|
4
|
+
<td><a class="btn btn-sm btn-primary{% if row.rpm] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.rpm }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
|
|
5
|
+
<td><a class="btn btn-sm btn-primary{% if row.cloud] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.cloud }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
|
|
6
|
+
<td><a class="btn btn-sm btn-primary{% if row.containers] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.containers }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
|
|
7
|
+
<td><a class="btn btn-sm btn-primary{% if row.vagrant] == "" %} disabled" aria-disabled="true"{% else %}" href="{{ row.vagrant }}"{% endif %} role="button"><i class="fa-solid fa-download"></i> Download</a></td>
|
|
8
|
+
</tr>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<div class="table-responsive">
|
|
2
|
+
<table class="table table-bordered mb-0">
|
|
3
|
+
<thead class="table-light">
|
|
4
|
+
<tr>
|
|
5
|
+
<th scope="col"><i class="fa-solid fa-microchip"></i> Architecture</th>
|
|
6
|
+
<th scope="col">ISOs</th>
|
|
7
|
+
<th scope="col">RPMs</th>
|
|
8
|
+
<th scope="col">Cloud</th>
|
|
9
|
+
<th scope="col">Containers</th>
|
|
10
|
+
<th scope="col">Vagrant</th>
|
|
11
|
+
</tr>
|
|
12
|
+
</thead>
|
|
13
|
+
<tbody>
|