jekyll-theme-centos 2.52.0.beta.3 → 2.52.0.beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/_data/base/announcement_schema.yml +50 -0
- data/_data/base/artwork_schema.yml +46 -0
- data/_data/base/backtotop_schema.yml +53 -0
- data/_data/base/bits.yml +96 -0
- data/_data/base/bits_schema.yml +183 -0
- data/_data/base/breadcrumb_schema.yml +14 -0
- data/_data/base/breakingnews_schema.yml +59 -0
- data/_data/base/color.yml +1042 -0
- data/_data/base/color_schema.yml +1036 -0
- data/_data/base/content.yml +2 -0
- data/_data/base/content_schema.yml +26 -0
- data/_data/base/converter_link_schema.yml +48 -0
- data/_data/base/copyright.yml +12 -0
- data/_data/base/copyright_schema.yml +34 -0
- data/_data/base/copyvalue_schema.yml +49 -0
- data/_data/base/datatable_schema.yml +57 -0
- data/_data/base/event_schema.yml +122 -0
- data/_data/base/fontawesome_schema.yml +49 -0
- data/_data/base/highlight_schema.yml +68 -0
- data/_data/base/languages.yml +186 -0
- data/_data/base/link_schema.yml +153 -0
- data/_data/base/locales_schema.yml +25 -0
- data/_data/base/navbar.yml +20 -0
- data/_data/base/navbar_schema.yml +121 -0
- data/_data/base/navindex_schema.yml +67 -0
- data/_data/base/ogp_schema.yml +186 -0
- data/_data/base/project.yml +37 -0
- data/_data/base/project_schema.yml +120 -0
- data/_data/base/shortcut_schema.yml +74 -0
- data/_data/base/social.yml +25 -0
- data/_data/base/social_schema.yml +53 -0
- data/_data/base/title_schema.yml +49 -0
- data/_data/base/toc_schema.yml +100 -0
- data/_data/download/cards.yml +309 -0
- data/_data/download/navbar.yml +11 -0
- data/_data/sponsors/carousel.yml +37 -0
- data/_data/sponsors/navbar.yml +6 -0
- data/_includes/base/announcement.html.liquid +51 -0
- data/_includes/base/artwork.html.liquid +49 -0
- data/_includes/base/backtotop.html.liquid +51 -0
- data/_includes/base/bits.html.liquid +135 -0
- data/_includes/base/breadcrumb.html.liquid +37 -0
- data/_includes/base/breakingnews.html.liquid +74 -0
- data/_includes/base/card.html.liquid +96 -0
- data/_includes/base/copyright.html.liquid +56 -0
- data/_includes/base/copyvalue.html.liquid +59 -0
- data/_includes/base/datatable.html.liquid +64 -0
- data/_includes/base/event.html.liquid +89 -0
- data/_includes/base/fontawesome.html.liquid +58 -0
- data/_includes/base/head.html.liquid +101 -0
- data/_includes/base/highlight.html.liquid +65 -0
- data/_includes/base/image.html.liquid +42 -0
- data/_includes/base/link.html.liquid +139 -0
- data/_includes/base/locales.html.liquid +41 -0
- data/_includes/base/navbar.html.liquid +106 -0
- data/_includes/base/navindex.html.liquid +162 -0
- data/_includes/base/ogp.html.liquid +118 -0
- data/_includes/base/project.html.liquid +90 -0
- data/_includes/base/script.html.liquid +59 -0
- data/_includes/base/shortcut.html.liquid +65 -0
- data/_includes/base/social.html.liquid +59 -0
- data/_includes/base/title.html.liquid +52 -0
- data/_includes/base/toc.html.liquid +91 -0
- data/_includes/base/toc_generator.html.liquid +189 -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/_includes/sponsors/cards.html +11 -0
- data/_includes/sponsors/carousel.html +24 -0
- data/_layouts/base/default.html +117 -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 +251 -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/page-layout-default.png +0 -0
- data/assets/img/base/page-layout-default.svg +1158 -0
- data/assets/img/base/page-with-alert.png +0 -0
- data/assets/img/base/page-with-alert.svg +359 -0
- data/assets/img/base/page-with-announcement.png +0 -0
- data/assets/img/base/page-with-announcement.svg +499 -0
- data/assets/img/base/page-with-artwork.png +0 -0
- data/assets/img/base/page-with-artwork.svg +368 -0
- data/assets/img/base/page-with-backtotop.png +0 -0
- data/assets/img/base/page-with-backtotop.svg +275 -0
- data/assets/img/base/page-with-bits.png +0 -0
- data/assets/img/base/page-with-bits.svg +311 -0
- data/assets/img/base/page-with-breadcrumb.png +0 -0
- data/assets/img/base/page-with-breadcrumb.svg +676 -0
- data/assets/img/base/page-with-breakingnews.png +0 -0
- data/assets/img/base/page-with-breakingnews.svg +903 -0
- data/assets/img/base/page-with-color.png +0 -0
- data/assets/img/base/page-with-color.svg +57 -0
- data/assets/img/base/page-with-copyright.png +0 -0
- data/assets/img/base/page-with-copyright.svg +233 -0
- data/assets/img/base/page-with-copyvalue.png +0 -0
- data/assets/img/base/page-with-copyvalue.svg +57 -0
- data/assets/img/base/page-with-datatable.png +0 -0
- data/assets/img/base/page-with-datatable.svg +857 -0
- data/assets/img/base/page-with-event.png +0 -0
- data/assets/img/base/page-with-event.svg +522 -0
- data/assets/img/base/page-with-fontawesome.png +0 -0
- data/assets/img/base/page-with-fontawesome.svg +147 -0
- data/assets/img/base/page-with-heading.png +0 -0
- data/assets/img/base/page-with-heading.svg +57 -0
- data/assets/img/base/page-with-highlight.png +0 -0
- data/assets/img/base/page-with-highlight.svg +86 -0
- data/assets/img/base/page-with-link.png +0 -0
- data/assets/img/base/page-with-link.svg +395 -0
- data/assets/img/base/page-with-locales.png +0 -0
- data/assets/img/base/page-with-locales.svg +724 -0
- data/assets/img/base/page-with-navbar.png +0 -0
- data/assets/img/base/page-with-navbar.svg +438 -0
- data/assets/img/base/page-with-navindex.png +0 -0
- data/assets/img/base/page-with-navindex.svg +279 -0
- data/assets/img/base/page-with-ogp.png +0 -0
- data/assets/img/base/page-with-ogp.svg +368 -0
- data/assets/img/base/page-with-project.png +0 -0
- data/assets/img/base/page-with-project.svg +822 -0
- data/assets/img/base/page-with-shortcut.png +0 -0
- data/assets/img/base/page-with-shortcut.svg +233 -0
- data/assets/img/base/page-with-social.png +0 -0
- data/assets/img/base/page-with-social.svg +233 -0
- data/assets/img/base/page-with-title.png +0 -0
- data/assets/img/base/page-with-title.svg +584 -0
- data/assets/img/base/page-with-toc.png +0 -0
- data/assets/img/base/page-with-toc.svg +438 -0
- data/assets/img/base/screenshot-example-1200x600.png +0 -0
- data/assets/img/base/screenshot-example-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/img/sponsors/screenshot-sponsors-cards-layout.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-cards.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-carousel.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-default-layout.png +0 -0
- data/assets/img/sponsors/screenshot-sponsors-logo.png +0 -0
- data/assets/img/sponsors/sponsor-logo-1.png +0 -0
- data/assets/img/sponsors/sponsor-logo-2.png +0 -0
- data/assets/img/sponsors/sponsor-logo-3.png +0 -0
- data/assets/img/sponsors/sponsor-logo-4.png +0 -0
- data/assets/img/sponsors/sponsor-logo-5.png +0 -0
- data/assets/img/sponsors/sponsor-logo-6.png +0 -0
- data/assets/img/sponsors/sponsor-logo-7.png +0 -0
- data/assets/img/sponsors/sponsor-logo-8.png +0 -0
- data/assets/img/sponsors/sponsors-logo.svg +563 -0
- data/assets/js/base/backtotop.js +23 -0
- data/assets/js/base/copyvalue.js +251 -0
- data/assets/js/base/datatable.js +55 -0
- data/assets/js/base/highlight.js +6 -0
- data/assets/js/base/init-tooltips.js +5 -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
- metadata +314 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Breadcrumb Navigation Component
|
|
4
|
+
Purpose: Renders hierarchical breadcrumb navigation showing page location
|
|
5
|
+
in the site's URL structure.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Automatic breadcrumb generation from page URL (no data config)
|
|
10
|
+
- Hierarchical path visualization using URL splitting
|
|
11
|
+
- Home link always appears first as root
|
|
12
|
+
- Current page title as active final item (non-clickable)
|
|
13
|
+
- URL reconstruction for intermediate links
|
|
14
|
+
|
|
15
|
+
Required Inputs:
|
|
16
|
+
- page.url: Current page URL path
|
|
17
|
+
- page.title: Display text for active breadcrumb
|
|
18
|
+
|
|
19
|
+
Data Sources:
|
|
20
|
+
- site.baseurl: Base URL prefix
|
|
21
|
+
- site.converter_link.default_link_classes: CSS classes
|
|
22
|
+
================================================================================
|
|
23
|
+
{% endcomment %}
|
|
24
|
+
|
|
25
|
+
<nav aria-label="{{ include.arialabel | default: 'breadcrumb' }}">
|
|
26
|
+
<ol class="breadcrumb mb-0">
|
|
27
|
+
<li class="breadcrumb-item"><a class="{{ site.converter_link.default_link_classes }}" href="{{ site.baseurl }}/">Home</a></li>
|
|
28
|
+
{%- assign crumbs = page.url | remove:'/index.html' | split: '/' %}
|
|
29
|
+
{%- for crumb in crumbs offset: 1 %}
|
|
30
|
+
{%- if forloop.last %}
|
|
31
|
+
<li class="breadcrumb-item active">{{ page.title }}</li>
|
|
32
|
+
{%- else %}
|
|
33
|
+
<li class="breadcrumb-item"><a class="{{ site.converter_link.default_link_classes }}" href="{{ site.baseurl }}{% assign crumb_limit = forloop.index | plus: 1 %}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: '/' | replace:'without-plugin/','without-plugins/' }}{% endfor %}">{{ crumb | replace:'-',' ' | remove:'.html' | capitalize }}</a></li>
|
|
34
|
+
{%- endif %}
|
|
35
|
+
{%- endfor %}
|
|
36
|
+
</ol>
|
|
37
|
+
</nav>
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Breaking News Component
|
|
4
|
+
Purpose: Renders sticky alert banners for breaking news with multiple
|
|
5
|
+
stacked alerts, colors, icons, and optional action links.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Sticky positioning: stays visible during page scroll
|
|
10
|
+
- Stacking support: multiple alerts stack vertically
|
|
11
|
+
- Dynamic scroll offset calculation: prevents header hiding
|
|
12
|
+
- Icon and color support: visual categorization
|
|
13
|
+
- Optional action links: "Know more" button
|
|
14
|
+
|
|
15
|
+
Required Inputs:
|
|
16
|
+
- content: Alert message text/HTML
|
|
17
|
+
|
|
18
|
+
Optional Inputs:
|
|
19
|
+
- color: Alert color scheme (default: "primary")
|
|
20
|
+
- icon: Icon class for Font Awesome (default: "fa-solid fa-bullhorn")
|
|
21
|
+
- link: URL for "Know more" button (optional)
|
|
22
|
+
- data: Array of breaking news items
|
|
23
|
+
|
|
24
|
+
Data Source Hierarchy (priority):
|
|
25
|
+
1. include.data
|
|
26
|
+
2. page.with_breakingnews_data
|
|
27
|
+
3. site.data.breakingnews
|
|
28
|
+
4. site.data.base.breakingnews
|
|
29
|
+
================================================================================
|
|
30
|
+
{% endcomment %}
|
|
31
|
+
|
|
32
|
+
{%- assign breakingnews = include.data | default: page.with_breakingnews_data | default: site.data.breakingnews | default: site.data.base.breakingnews %}
|
|
33
|
+
|
|
34
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
35
|
+
{% assign breakingnews_alert_height = 38 %}
|
|
36
|
+
{% assign navbar_height = 42 %}
|
|
37
|
+
|
|
38
|
+
<div class="sticky-top sticky-top-breakingnews">
|
|
39
|
+
{% for item in breakingnews %}
|
|
40
|
+
|
|
41
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
42
|
+
{% if forloop.first %}
|
|
43
|
+
{% assign breakingnews_alerts_height = breakingnews_alert_height | plus: navbar_height %}
|
|
44
|
+
{% else %}
|
|
45
|
+
{% assign breakingnews_alerts_height = breakingnews_alerts_height | plus: breakingnews_alert_height %}
|
|
46
|
+
{% endif %}
|
|
47
|
+
{% assign breakingnews_color = item.color | default: "primary" %}
|
|
48
|
+
{% assign breakingnews_btn_class = "btn btn-sm text-nowrap btn-" | append: breakingnews_color %}
|
|
49
|
+
{% assign breakingnews_icon = item.icon | default: "fa-solid fa-bullhorn" %}
|
|
50
|
+
|
|
51
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
52
|
+
<div class="breakingnews alert alert-{{ breakingnews_color }} p-2 rounded-0 m-0 border-start-0 border-end-0 shadow" role="alert">
|
|
53
|
+
<div class="container d-flex justify-content-between align-items-center">
|
|
54
|
+
<div class="me-3">
|
|
55
|
+
<div class="h6 mb-0"><i class="{{ breakingnews_icon }}"></i></div>
|
|
56
|
+
</div>
|
|
57
|
+
<div class="flex-fill text-start">{{ item.content }}</div>
|
|
58
|
+
{%- if item.link %}
|
|
59
|
+
<div>
|
|
60
|
+
{% include base/link.html.liquid
|
|
61
|
+
name = "Know more"
|
|
62
|
+
icon = "fa-solid fa-arrow-right"
|
|
63
|
+
icon_position = "end"
|
|
64
|
+
role = "button"
|
|
65
|
+
class = breakingnews_btn_class
|
|
66
|
+
color = breakingnews_color
|
|
67
|
+
link = item.link
|
|
68
|
+
%}
|
|
69
|
+
</div>
|
|
70
|
+
{%- endif %}
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
{% endfor %}
|
|
74
|
+
</div>
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Flexible Card Component
|
|
4
|
+
Purpose: Renders highly configurable card layouts with optional image,
|
|
5
|
+
icon, title, description, and action buttons.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Modular design: each section is optional
|
|
10
|
+
- Capture-block approach: builds HTML fragments for reusability
|
|
11
|
+
- Conditional rendering: only renders sections with content
|
|
12
|
+
- Bootstrap flexbox-based layout for responsive design
|
|
13
|
+
- Reuses link component for action buttons
|
|
14
|
+
|
|
15
|
+
Optional Inputs:
|
|
16
|
+
- class: Card container CSS classes
|
|
17
|
+
- color: Color scheme for styling (default: "primary")
|
|
18
|
+
- image, icon, screenshot: Visual elements
|
|
19
|
+
- name, description: Text content
|
|
20
|
+
- actions: Array of action buttons [{name, url, icon}]
|
|
21
|
+
- All image/icon/name/description have customizable CSS classes
|
|
22
|
+
|
|
23
|
+
Data Source:
|
|
24
|
+
- Derived from include parameters only
|
|
25
|
+
================================================================================
|
|
26
|
+
{% endcomment %}
|
|
27
|
+
|
|
28
|
+
{%- assign card_class = include.class | default: "flex-column align-items-start mb-3" %}
|
|
29
|
+
{%- assign card_color = include.color | default: "primary" %}
|
|
30
|
+
{%- assign card_image = include.image | default: "" %}
|
|
31
|
+
{%- assign card_image_class = include.image_class | default: "img-fluid mb-3 rounded" -%}
|
|
32
|
+
{%- assign card_image_style = include.image_style | default: "" -%}
|
|
33
|
+
{%- assign card_image_alt = include.image_alt | default: card_image %}
|
|
34
|
+
{%- assign card_icon = include.icon | default: "" %}
|
|
35
|
+
{%- assign card_icon_class = include.icon_class | default: "display-6 mb-3" %}
|
|
36
|
+
{%- assign card_name = include.name | default: "" %}
|
|
37
|
+
{%- assign card_name_class = include.name_class | default: "display-5 fw-bold mb-3" %}
|
|
38
|
+
{%- assign card_screenshot = include.screenshot | default: "" %}
|
|
39
|
+
{%- assign card_screenshot_class = include.screenshot_class | default: "img-fluid" %}
|
|
40
|
+
{%- assign card_screenshot_style = include.screenshot_style | default: "" %}
|
|
41
|
+
{%- assign card_screenshot_alt = include.screenshot_alt | default: card_screenshot %}
|
|
42
|
+
{%- assign card_description = include.description | default: "" %}
|
|
43
|
+
{%- assign card_description_class = include.description_class | default: "mb-3" %}
|
|
44
|
+
{%- assign card_actions = include.actions | default: "" %}
|
|
45
|
+
{%- assign card_actions_class = include.actions_class | default: "" %}
|
|
46
|
+
{%- assign card_actions_btn_class = include.actions_btn_class | default: "btn m-1 btn-" | append: card_color %}
|
|
47
|
+
|
|
48
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
49
|
+
|
|
50
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
51
|
+
{%- capture html_card_screenshot -%}
|
|
52
|
+
<div class="bg-{{ card_color }} rounded mb-3">
|
|
53
|
+
<img class="{{ card_screenshot_class }}"{% if card_screenshot_style != "" %} style="{{ card_screenshot_style }}"{% endif %} src="{{ site.baseurl }}/assets/img/{{ card_screenshot }}" alt="{{ card_screenshot_alt }}">
|
|
54
|
+
</div>
|
|
55
|
+
{%- endcapture %}
|
|
56
|
+
|
|
57
|
+
{%- capture html_card_image -%}
|
|
58
|
+
<img class="{{ card_image_class }}"{% if card_image_style != "" %} style="{{ card_image_style }}"{% endif %} src="{{ site.baseurl }}/assets/img/{{ card_image }}" alt="{{ card_image_alt }}">
|
|
59
|
+
{%- endcapture %}
|
|
60
|
+
|
|
61
|
+
{%- capture html_card_icon -%}
|
|
62
|
+
<div class="{{ card_icon_class }}"><i class="{{ card_icon }}"></i></div>
|
|
63
|
+
{%- endcapture %}
|
|
64
|
+
|
|
65
|
+
{%- capture html_card_name -%}
|
|
66
|
+
<div class="{{ card_name_class }}">{{ card_name }}</div>
|
|
67
|
+
{%- endcapture %}
|
|
68
|
+
|
|
69
|
+
{%- capture html_card_description -%}
|
|
70
|
+
<div class="{{ card_description_class }}">{{ card_description }}</div>
|
|
71
|
+
{%- endcapture %}
|
|
72
|
+
|
|
73
|
+
{%- capture html_card_actions -%}
|
|
74
|
+
<div class="{{ card_actions_class }}">
|
|
75
|
+
{%- for action in card_actions %}
|
|
76
|
+
{% include base/link.html.liquid
|
|
77
|
+
class = card_actions_btn_class
|
|
78
|
+
role = "button"
|
|
79
|
+
name = action.name
|
|
80
|
+
url = action.url
|
|
81
|
+
icon = action.icon
|
|
82
|
+
icon_position = action.icon_position
|
|
83
|
+
%}
|
|
84
|
+
{% endfor %}
|
|
85
|
+
</div>
|
|
86
|
+
{%- endcapture %}
|
|
87
|
+
|
|
88
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
89
|
+
<div class="d-flex{% if card_class != "" %} {{ card_class }}{% endif %}">
|
|
90
|
+
{%- if card_image != "" %}{{ html_card_image }}{% endif %}
|
|
91
|
+
{%- if card_icon != "" %}{{ html_card_icon }}{% endif %}
|
|
92
|
+
{%- if card_name != "" %}{{ html_card_name }}{% endif %}
|
|
93
|
+
{%- if card_description != "" %}{{ html_card_description }}{% endif %}
|
|
94
|
+
{%- if card_screenshot != "" %}{{ html_card_screenshot }}{% endif -%}
|
|
95
|
+
{%- if card_actions.size > 0 %}{{ html_card_actions }}{% endif %}
|
|
96
|
+
</div>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Copyright Footer Component
|
|
4
|
+
Purpose: Renders copyright notice with author name and optional legal links.
|
|
5
|
+
Shows dynamic year, author, and links to Terms of Service, Privacy Policy, etc.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Dynamic year: automatically uses current year from site.time
|
|
10
|
+
- Legal links looping: flexible number of links in footer
|
|
11
|
+
- Reusable link component: consistent styling
|
|
12
|
+
- Capture-based rendering: builds complex link string before output
|
|
13
|
+
- Border separator styling: visual dividers between links
|
|
14
|
+
|
|
15
|
+
Required Inputs:
|
|
16
|
+
- author: Copyright holder name (e.g., "The CentOS Project")
|
|
17
|
+
|
|
18
|
+
Optional Inputs:
|
|
19
|
+
- legals: Array of legal link objects
|
|
20
|
+
- name: Link text (e.g., "Terms of Service")
|
|
21
|
+
- link: URL for legal document
|
|
22
|
+
- color: Link color (defaults to light)
|
|
23
|
+
- icon: Icon class (optional)
|
|
24
|
+
- class: Custom CSS classes (optional)
|
|
25
|
+
|
|
26
|
+
Data Source Hierarchy (priority):
|
|
27
|
+
1. include.data
|
|
28
|
+
2. page.with_copyright_data
|
|
29
|
+
3. site.data.copyright
|
|
30
|
+
4. site.data.base.copyright
|
|
31
|
+
================================================================================
|
|
32
|
+
{% endcomment %}
|
|
33
|
+
|
|
34
|
+
{%- assign copyright = include.data | default: page.with_copyright_data | default: site.data.copyright | default: site.data.base.copyright %}
|
|
35
|
+
|
|
36
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
37
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
38
|
+
{% assign copyright_author = copyright.author %}
|
|
39
|
+
{% assign copyright_legals = copyright.legals %}
|
|
40
|
+
{%- capture copyright_links -%}
|
|
41
|
+
{%- for item in copyright_legals -%}
|
|
42
|
+
{% assign copyright_link_class = item.class | default: "link link-offset-3 link-offset-3-hover link-underline-primary link-underline-opacity-0 link-underline-opacity-100-hover border-start ms-2 ps-2 link-light" %}
|
|
43
|
+
{%- include base/link.html.liquid
|
|
44
|
+
class = copyright_link_class
|
|
45
|
+
name = item.name
|
|
46
|
+
link = item.link
|
|
47
|
+
color = item.color
|
|
48
|
+
role = item.role
|
|
49
|
+
icon = item.icon
|
|
50
|
+
icon_position = item.icon_position
|
|
51
|
+
-%}
|
|
52
|
+
{%- endfor -%}
|
|
53
|
+
{%- endcapture -%}
|
|
54
|
+
|
|
55
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
56
|
+
<div class="my-3 text-center">Copyright © {{ site.time | date: "%Y" }} {{ copyright_author }} {{ copyright_links }}</div>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Copy Value Component
|
|
4
|
+
Purpose: Copy to clipboard with visual feedback (checkmark + tooltip).
|
|
5
|
+
Auto-detects and handles both escaped and unescaped values.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Recommended Usage (in template):
|
|
9
|
+
<a class="copy-btn" data-copy-value="{{ command | escape }}"
|
|
10
|
+
data-bs-toggle="tooltip" data-bs-title="Copy command">
|
|
11
|
+
<span class="fa-regular fa-copy"></span>
|
|
12
|
+
</a>
|
|
13
|
+
|
|
14
|
+
Strategic Design Logic:
|
|
15
|
+
- Armored implementation: handles escaped and unescaped values
|
|
16
|
+
- HTML entity detection: decodes ", &, ' automatically
|
|
17
|
+
- Visual feedback: checkmark icon + success tooltip
|
|
18
|
+
- Auto-reset: returns to original state after delay
|
|
19
|
+
- Clipboard API: native browser copy functionality
|
|
20
|
+
|
|
21
|
+
Required Inputs (from HTML element):
|
|
22
|
+
- class="copy-btn": Element to attach handler
|
|
23
|
+
- data-copy-value: Text to copy to clipboard
|
|
24
|
+
|
|
25
|
+
Optional Inputs (from data objects):
|
|
26
|
+
- reset_delay: Milliseconds before reset (default varies by schema)
|
|
27
|
+
- checkmark_path: SVG path for success icon
|
|
28
|
+
- checkmark_viewbox: SVG viewBox for success icon
|
|
29
|
+
- success_message: Tooltip message on success
|
|
30
|
+
|
|
31
|
+
Data Source Hierarchy (in priority order):
|
|
32
|
+
1. include.data - Explicitly passed configuration
|
|
33
|
+
2. page.with_copyvalue_data - Page front matter
|
|
34
|
+
3. site.data.copyvalue - Site configuration
|
|
35
|
+
4. site.data.base.copyvalue - Theme defaults
|
|
36
|
+
|
|
37
|
+
Dependencies:
|
|
38
|
+
Bootstrap 5, FontAwesome 6+, Clipboard API (modern browsers)
|
|
39
|
+
================================================================================
|
|
40
|
+
{% endcomment %}
|
|
41
|
+
|
|
42
|
+
{%- assign copyvalue = include.data | default: page.with_copyvalue_data | default: site.data.copyvalue | default: site.data.base.copyvalue %}
|
|
43
|
+
|
|
44
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
45
|
+
|
|
46
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
47
|
+
{%- assign copyvalue_reset_delay = copyvalue.reset_delay | default: site.data.base.copyvalue_schema.properties.with_copyvalue_data.properties.reset_delay.default %}
|
|
48
|
+
{%- assign copyvalue_checkmark_path = copyvalue.checkmark_path | default: site.data.base.copyvalue_schema.properties.with_copyvalue_data.properties.checkmark_path.default %}
|
|
49
|
+
{%- assign copyvalue_checkmark_viewbox = copyvalue.checkmark_viewbox | default: site.data.base.copyvalue_schema.properties.with_copyvalue_data.properties.checkmark_viewbox.default %}
|
|
50
|
+
{%- assign copyvalue_success_message = copyvalue.success_message | default: site.data.base.copyvalue_schema.properties.with_copyvalue_data.properties.success_message.default %}
|
|
51
|
+
|
|
52
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
53
|
+
<!-- Load Copy Value functionality with configuration via data attributes -->
|
|
54
|
+
<script id="centos-copyvalue"
|
|
55
|
+
data-reset-delay="{{ copyvalue_reset_delay }}"
|
|
56
|
+
data-checkmark-path="{{ copyvalue_checkmark_path }}"
|
|
57
|
+
data-checkmark-viewbox="{{ copyvalue_checkmark_viewbox }}"
|
|
58
|
+
data-success-message="{{ copyvalue_success_message }}"
|
|
59
|
+
src="{{ site.baseurl }}/assets/js/base/copyvalue.min.js"></script>
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: DataTables Library Initialization Component
|
|
4
|
+
Purpose: Loads DataTables jQuery plugin from CDN with SRI integrity checks.
|
|
5
|
+
Initializes DataTables on all .dataTable elements with responsive design,
|
|
6
|
+
pagination, searching, and sorting.
|
|
7
|
+
================================================================================
|
|
8
|
+
|
|
9
|
+
Design Logic:
|
|
10
|
+
- CDN-based library loading with SRI integrity checks
|
|
11
|
+
- Responsive table design for mobile devices
|
|
12
|
+
- Smart pagination: only if table has >10 rows
|
|
13
|
+
- Automatic element detection: targets all .dataTable classes
|
|
14
|
+
- jQuery dependency: requires jQuery loaded first
|
|
15
|
+
|
|
16
|
+
Optional Inputs:
|
|
17
|
+
- type: "head" for CSS include, "script" for JavaScript
|
|
18
|
+
- version: DataTables version (e.g., "1.13.7")
|
|
19
|
+
- css_integrity, script_integrity: SRI integrity hashes
|
|
20
|
+
- page_length: Default rows per page (default: 10)
|
|
21
|
+
- length_menu: Pagination options
|
|
22
|
+
- data: DataTables configuration object
|
|
23
|
+
|
|
24
|
+
Data Source Hierarchy (priority):
|
|
25
|
+
1. include.data
|
|
26
|
+
2. page.with_datatable_data
|
|
27
|
+
3. site.data.datatable
|
|
28
|
+
4. site.data.base.datatable
|
|
29
|
+
================================================================================
|
|
30
|
+
{% endcomment %}
|
|
31
|
+
|
|
32
|
+
{%- assign datatable = include.data | default: page.with_datatable_data | default: site.data.datatable | default: site.data.base.datatable %}
|
|
33
|
+
|
|
34
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
35
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
36
|
+
{%- assign datatable_version = datatable.version | default: site.data.base.datatable_schema.properties.with_datatable_data.properties.version.default %}
|
|
37
|
+
{%- assign datatable_css_integrity = datatable.css_integrity | default: site.data.base.datatable_schema.properties.with_datatable_data.properties.css_integrity.default %}
|
|
38
|
+
{%- assign datatable_script_integrity = datatable.script_integrity | default: site.data.base.datatable_schema.properties.with_datatable_data.properties.script_integrity.default %}
|
|
39
|
+
{%- assign datatable_page_length = datatable.page_length | default: site.data.base.datatable_schema.properties.with_datatable_data.properties.page_length.default %}
|
|
40
|
+
{%- assign datatable_length_menu = datatable.length_menu | default: site.data.base.datatable_schema.properties.with_datatable_data.properties.length_menu.default %}
|
|
41
|
+
|
|
42
|
+
{%- capture html_datatable_head %}
|
|
43
|
+
<link href="https://cdn.datatables.net/{{ datatable_version }}/datatables.min.css" rel="stylesheet" integrity="{{ datatable_css_integrity }}" crossorigin="anonymous" />
|
|
44
|
+
{%- endcapture %}
|
|
45
|
+
|
|
46
|
+
{%- capture html_datatable_script %}
|
|
47
|
+
<!-- DataTables Library -->
|
|
48
|
+
<script src="https://cdn.datatables.net/{{ datatable_version }}/datatables.min.js" integrity="{{ datatable_script_integrity }}" crossorigin="anonymous"></script>
|
|
49
|
+
|
|
50
|
+
<!-- Initialize DataTables with configuration via data attributes -->
|
|
51
|
+
<script id="centos-datatable"
|
|
52
|
+
data-page-length="{{ datatable_page_length }}"
|
|
53
|
+
data-length-menu='{{ datatable_length_menu | split: "," | jsonify }}'
|
|
54
|
+
src="{{ site.baseurl }}/assets/js/base/datatable.min.js"></script>
|
|
55
|
+
{%- endcapture %}
|
|
56
|
+
|
|
57
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
58
|
+
{%- assign type = include.type %}
|
|
59
|
+
{%- case type %}
|
|
60
|
+
{%- when "head" %}
|
|
61
|
+
{{ html_datatable_head }}
|
|
62
|
+
{%- when "script" %}
|
|
63
|
+
{{ html_datatable_script }}
|
|
64
|
+
{%- endcase %}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Event Alerts Component
|
|
4
|
+
Purpose: Renders event announcements as styled alert boxes with date, location,
|
|
5
|
+
description, and optional action links.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Alert-based styling: consistent with Bootstrap alert components
|
|
10
|
+
- Icon support: visual identification of event type
|
|
11
|
+
- Color coding: color-based categorization
|
|
12
|
+
- Location details: address and city information optional
|
|
13
|
+
- Date/time display: with location suffix if available
|
|
14
|
+
- Optional action link: "Know more" button for details page
|
|
15
|
+
- Multi-event support: loops through event array
|
|
16
|
+
|
|
17
|
+
Required Inputs:
|
|
18
|
+
- title: Event name/title
|
|
19
|
+
|
|
20
|
+
Optional Inputs:
|
|
21
|
+
- description: Event description text
|
|
22
|
+
- date: Event date/time string
|
|
23
|
+
- location: Event location name
|
|
24
|
+
- color: Alert color scheme (default: "secondary")
|
|
25
|
+
- icon: Icon class (default: "fa-solid fa-calendar")
|
|
26
|
+
- link: URL to event details page (optional)
|
|
27
|
+
- data: Array of event objects
|
|
28
|
+
|
|
29
|
+
Data Source Hierarchy (priority):
|
|
30
|
+
1. include.data
|
|
31
|
+
2. page.with_event_data
|
|
32
|
+
3. site.data.event
|
|
33
|
+
4. site.data.base.event
|
|
34
|
+
================================================================================
|
|
35
|
+
{% endcomment %}
|
|
36
|
+
|
|
37
|
+
{%- assign events = include.data | default: page.with_event_data | default: site.data.event | default: site.data.base.event %}
|
|
38
|
+
|
|
39
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
40
|
+
<div class="mb-3">
|
|
41
|
+
{% for event in events %}
|
|
42
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
43
|
+
{%- assign event_address = event.address | default: nil %}
|
|
44
|
+
{%- assign event_city = event.city | default: nil %}
|
|
45
|
+
{%- assign event_color = event.color | default: "secondary" %}
|
|
46
|
+
{%- assign event_location = event.location | default: nil %}
|
|
47
|
+
{%- assign event_date = event.date | default: nil %}
|
|
48
|
+
{%- assign event_description = event.description | default: nil %}
|
|
49
|
+
{%- assign event_icon = event.icon | default: "fa-solid fa-calendar" %}
|
|
50
|
+
{%- assign event_image_url = event.image_url | default: nil %}
|
|
51
|
+
{%- assign event_link = event.link | default: nil %}
|
|
52
|
+
{%- assign event_title = event.title | default: nil %}
|
|
53
|
+
|
|
54
|
+
{%- assign event_btn_class = "btn btn-sm text-nowrap btn-" | append: event_color %}
|
|
55
|
+
|
|
56
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
57
|
+
<div class="alert alert-{{ event_color }} rounded mb-1" role="alert">
|
|
58
|
+
<div class="d-flex justify-content-between align-items-start">
|
|
59
|
+
{%- if event_icon != nil %}
|
|
60
|
+
<div class="h6 my-1 me-2"><i class="{{ event_icon }}"></i></div>
|
|
61
|
+
{%- endif %}
|
|
62
|
+
<div class="flex-fill text-start">
|
|
63
|
+
{%- if event_title != nil %}
|
|
64
|
+
<div class="ms-1 fw-bold">{{ event_title }}</div>
|
|
65
|
+
{%- endif %}
|
|
66
|
+
{%- if event_date != nil %}
|
|
67
|
+
<div class="ms-1">{{ event_date }}{% if event_location != nil %} • {{ event_location }}{%- endif %}</div>
|
|
68
|
+
{%- endif %}
|
|
69
|
+
{%- if event_description != nil %}
|
|
70
|
+
<div class="ms-1">{{ event_description }}</div>
|
|
71
|
+
{%- endif %}
|
|
72
|
+
</div>
|
|
73
|
+
{%- if event_link != nil %}
|
|
74
|
+
<div class="ms-1">
|
|
75
|
+
{% include base/link.html.liquid
|
|
76
|
+
name = "Know more"
|
|
77
|
+
icon = "fa-solid fa-arrow-right"
|
|
78
|
+
icon_position = "end"
|
|
79
|
+
role = "button"
|
|
80
|
+
class = event_btn_class
|
|
81
|
+
color = event_color
|
|
82
|
+
link = event_link
|
|
83
|
+
%}
|
|
84
|
+
</div>
|
|
85
|
+
{%- endif %}
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
{% endfor %}
|
|
89
|
+
</div>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Font Awesome Icon Library Component
|
|
4
|
+
Purpose: Loads Font Awesome icon library CSS and JavaScript from CDN
|
|
5
|
+
with integrity checks.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- CDN-based library loading with SRI integrity verification
|
|
10
|
+
- Format switching: separate head (CSS) and script (JS) includes
|
|
11
|
+
- CSS bundle: complete icon stylesheet (solid, regular, brands)
|
|
12
|
+
- Subresource Integrity (SRI): ensures file hasn't been tampered with
|
|
13
|
+
- Privacy-focused: referrerpolicy="no-referrer"
|
|
14
|
+
|
|
15
|
+
Optional Inputs:
|
|
16
|
+
- type: "head" for CSS, "script" for JavaScript
|
|
17
|
+
- version: Font Awesome version (e.g., "6.4.0")
|
|
18
|
+
- cdn: CDN base URL (default: unpkg.com)
|
|
19
|
+
- css_bundle_name, js_bundle_name: Bundle identifiers
|
|
20
|
+
- css_bundle_integrity, js_bundle_integrity: SRI hashes
|
|
21
|
+
- data: Font Awesome configuration object
|
|
22
|
+
|
|
23
|
+
Data Source Hierarchy (priority):
|
|
24
|
+
1. include.data
|
|
25
|
+
2. page.with_fontawesome_data
|
|
26
|
+
3. site.data.fontawesome
|
|
27
|
+
4. site.data.base.fontawesome
|
|
28
|
+
================================================================================
|
|
29
|
+
{% endcomment %}
|
|
30
|
+
|
|
31
|
+
{%- assign fontawesome = include.data | default: page.with_fontawesome_data | default: site.data.fontawesome | default: site.data.base.fontawesome %}
|
|
32
|
+
|
|
33
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
34
|
+
|
|
35
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
36
|
+
{%- assign fontawesome_version = fontawesome.version | default: site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties.version.default %}
|
|
37
|
+
{%- assign fontawesome_cdn = fontawesome.cdn | default: site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties.cdn.default %}
|
|
38
|
+
{%- assign fontawesome_css_bundle_name = fontawesome.css_bundle_name | default: site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties.css_bundle_name.default %}
|
|
39
|
+
{%- assign fontawesome_css_bundle_integrity = fontawesome.css_bundle_integrity | default: site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties.css_bundle_integrity.default %}
|
|
40
|
+
{%- assign fontawesome_js_bundle_name = fontawesome.js_bundle_name | default: site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties.js_bundle_name.default %}
|
|
41
|
+
{%- assign fontawesome_js_bundle_integrity = fontawesome.js_bundle_integrity | default: site.data.base.fontawesome_schema.properties.with_fontawesome_data.properties.js_bundle_integrity.default %}
|
|
42
|
+
|
|
43
|
+
{%- capture html_fontawesome_head %}
|
|
44
|
+
<link rel="stylesheet" href="{{ fontawesome_cdn }}/{{ fontawesome_version }}/css/{{ fontawesome_css_bundle_name }}.min.css" integrity="{{ fontawesome_css_bundle_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
|
45
|
+
{%- endcapture %}
|
|
46
|
+
|
|
47
|
+
{%- capture html_fontawesome_script %}
|
|
48
|
+
<script src="{{ fontawesome_cdn }}/{{ fontawesome_version }}/js/{{ fontawesome_js_bundle_name }}.min.js" integrity="{{ fontawesome_js_bundle_integrity }}" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
|
49
|
+
{%- endcapture %}
|
|
50
|
+
|
|
51
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
52
|
+
{%- assign type = include.type %}
|
|
53
|
+
{%- case type %}
|
|
54
|
+
{%- when "head" %}
|
|
55
|
+
{{ html_fontawesome_head }}
|
|
56
|
+
{%- when "script" %}
|
|
57
|
+
{{ html_fontawesome_script }}
|
|
58
|
+
{%- endcase %}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Page Head Section Component
|
|
4
|
+
Purpose: Generates complete HTML <head> section with meta tags, stylesheets,
|
|
5
|
+
icons, fonts, and conditional library includes.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Comprehensive meta tags: charset, viewport, responsive design
|
|
10
|
+
- Dynamic title generation: page title + site title
|
|
11
|
+
- Favicon support: multiple formats (16x16, 32x32, SVG, Apple Touch)
|
|
12
|
+
- Google Fonts: Montserrat and Source Code Pro preloaded
|
|
13
|
+
- Breakingnews scroll offset: dynamic CSS calculation
|
|
14
|
+
- Conditional includes: OGP, Font Awesome, Highlight.js, DataTables
|
|
15
|
+
- CSS prioritization: custom stylesheet last for override
|
|
16
|
+
|
|
17
|
+
Required Inputs:
|
|
18
|
+
- page.title: Current page title
|
|
19
|
+
- site.title: Site name/title
|
|
20
|
+
- site.baseurl: Base URL for asset paths
|
|
21
|
+
|
|
22
|
+
Optional Inputs:
|
|
23
|
+
- page.with_ogp, page.with_fontawesome: Include OGP/Font Awesome (boolean)
|
|
24
|
+
- page.with_breakingnews, page.with_highlight: Include breaking news/highlight
|
|
25
|
+
- page.with_datatable: Include DataTables (boolean)
|
|
26
|
+
- page.with_breakingnews_data: Array of breaking news items
|
|
27
|
+
================================================================================
|
|
28
|
+
{% endcomment %}
|
|
29
|
+
|
|
30
|
+
<head>
|
|
31
|
+
{% if page.title == site.title -%}
|
|
32
|
+
<title>{{ page.title }}</title>
|
|
33
|
+
{% else -%}
|
|
34
|
+
<title>{{ page.title }} - {{ site.title }}</title>
|
|
35
|
+
{% endif -%}
|
|
36
|
+
<meta charset="utf-8" />
|
|
37
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no" />
|
|
38
|
+
{%- if page.with_ogp == true -%}
|
|
39
|
+
{% include base/ogp.html.liquid %}
|
|
40
|
+
{%- endif %}
|
|
41
|
+
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-16.png" sizes="16x16" />
|
|
42
|
+
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-32.png" sizes="32x32" />
|
|
43
|
+
<link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon.svg" sizes="any" />
|
|
44
|
+
<link rel="apple-touch-icon" href="{{ site.baseurl }}/assets/icons/apple-touch-icon.png" sizes="180x180" />
|
|
45
|
+
<link rel="manifest" href="{{ site.baseurl }}/site.webmanifest" />
|
|
46
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
47
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
48
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100;0,200;0,300;0,400;0,500;0,600;0,700;0,800;0,900;1,100;1,200;1,300;1,400;1,500;1,600;1,700;1,800;1,900&family=Source+Code+Pro:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap" />
|
|
49
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Source+Code+Pro:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap" />
|
|
50
|
+
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/base/stylesheet.min.css" />
|
|
51
|
+
{%- comment %}
|
|
52
|
+
Dynamic Breaking News Offset CSS
|
|
53
|
+
Adjust scroll-margin-top values based on the number of breaking news items.
|
|
54
|
+
Uses CSS custom properties for cleaner, more maintainable dynamic styling.
|
|
55
|
+
{%- endcomment %}
|
|
56
|
+
{%- assign breakingnews = page.with_breakingnews_data | default: site.data.breakingnews | default: site.data.base.breakingnews %}
|
|
57
|
+
{%- if page.with_breakingnews == true and breakingnews.size > 0 %}
|
|
58
|
+
{%- assign breakingnews_alert_height = 31 %}
|
|
59
|
+
{%- assign navbar_height = 42 %}
|
|
60
|
+
{%- assign breakingnews_offset = 0 %}
|
|
61
|
+
{%- for item in breakingnews %}
|
|
62
|
+
{%- if forloop.first %}
|
|
63
|
+
{%- assign breakingnews_offset = breakingnews_alert_height | plus: navbar_height %}
|
|
64
|
+
{%- else %}
|
|
65
|
+
{%- assign breakingnews_offset = breakingnews_offset | plus: breakingnews_alert_height %}
|
|
66
|
+
{%- endif %}
|
|
67
|
+
{%- endfor %}
|
|
68
|
+
{%- assign heading_margin_px = 48 %}
|
|
69
|
+
{%- assign heading_scroll_margin_height = breakingnews_offset | plus: heading_margin_px %}
|
|
70
|
+
{%- assign accordion_scroll_margin_height = breakingnews_offset %}
|
|
71
|
+
<style>
|
|
72
|
+
:root {
|
|
73
|
+
--calculated-heading-offset: {{ heading_scroll_margin_height }}px;
|
|
74
|
+
--calculated-accordion-offset: {{ accordion_scroll_margin_height }}px;
|
|
75
|
+
}
|
|
76
|
+
main {
|
|
77
|
+
.content > h1,
|
|
78
|
+
.content > h2,
|
|
79
|
+
.content > h3,
|
|
80
|
+
.content > h4,
|
|
81
|
+
.content > h5,
|
|
82
|
+
.content > h6 {
|
|
83
|
+
scroll-margin-top: calc(var(--calculated-heading-offset) * 1.3) !important;
|
|
84
|
+
}
|
|
85
|
+
.content .accordion,
|
|
86
|
+
.content .accordion-item {
|
|
87
|
+
scroll-margin-top: calc(var(--calculated-accordion-offset) * 1.5) !important;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
91
|
+
{%- endif %}
|
|
92
|
+
{% if page.with_fontawesome %}
|
|
93
|
+
{% include base/fontawesome.html.liquid type="head" %}
|
|
94
|
+
{% endif %}
|
|
95
|
+
{% if page.with_highlight %}
|
|
96
|
+
{% include base/highlight.html.liquid type="head" %}
|
|
97
|
+
{% endif -%}
|
|
98
|
+
{% if page.with_datatable %}
|
|
99
|
+
{% include base/datatable.html.liquid type="head" %}
|
|
100
|
+
{% endif -%}
|
|
101
|
+
</head>
|