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,152 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Bits Component (Upstream/Downstream Relationships)
|
|
4
|
+
Purpose: Renders hierarchical relationships between upstream and downstream
|
|
5
|
+
components. Displays upstream with preamble, card, finale, and up to 3 preview
|
|
6
|
+
cards of related downstream items.
|
|
7
|
+
================================================================================
|
|
8
|
+
|
|
9
|
+
Strategic Design Logic:
|
|
10
|
+
- Hierarchical relationships: upstream parent, downstream children
|
|
11
|
+
- Card-based presentation: reuses card component for consistency
|
|
12
|
+
- Filtered display: shows max 3 downstream preview cards
|
|
13
|
+
- Optional sections: preamble, finale, "View All" link
|
|
14
|
+
- Relationship linking: downstream filtered by upstream name
|
|
15
|
+
- Customizable styling: per-element class overrides
|
|
16
|
+
|
|
17
|
+
Required Inputs (from data objects):
|
|
18
|
+
- type: 'upstream' or 'downstream' (required)
|
|
19
|
+
- name: Component name (required)
|
|
20
|
+
- relationship: For downstream, name of upstream parent
|
|
21
|
+
|
|
22
|
+
Optional Inputs (from data objects):
|
|
23
|
+
- description, screenshot, icon, image, actions, color
|
|
24
|
+
- preamble, finale: Text before/after card
|
|
25
|
+
- class, card_class, preamble_class, finale_class: Custom styling
|
|
26
|
+
- index_page_name, index_page_url: For "View All" link (shows if >3 items)
|
|
27
|
+
|
|
28
|
+
Data Source Hierarchy (in priority order):
|
|
29
|
+
1. include.data - Explicitly passed array
|
|
30
|
+
2. page.with_bits_data - Page front matter
|
|
31
|
+
3. site.data.bits - Site data
|
|
32
|
+
4. site.data.base.bits - Theme defaults
|
|
33
|
+
|
|
34
|
+
Component Layout:
|
|
35
|
+
- Outer loop: upstream bits (type='upstream')
|
|
36
|
+
- Preamble text (if present)
|
|
37
|
+
- Card component for upstream
|
|
38
|
+
- Finale section with optional "View All" link (if >3 downstream)
|
|
39
|
+
- Downstream preview grid (max 3 items, filtered by relationship)
|
|
40
|
+
================================================================================
|
|
41
|
+
{% endcomment %}
|
|
42
|
+
|
|
43
|
+
{%- assign with_bits = include.with_bits
|
|
44
|
+
| default: page.with_bits
|
|
45
|
+
%}
|
|
46
|
+
|
|
47
|
+
{%- assign with_bits_data = include.data
|
|
48
|
+
| default: page.with_bits_data
|
|
49
|
+
| default: site.data.bits
|
|
50
|
+
| default: site.data.base.bits
|
|
51
|
+
%}
|
|
52
|
+
|
|
53
|
+
{%- assign with_bits_schema = site.data.base.bits_schema.properties.with_bits_data.items.properties %}
|
|
54
|
+
|
|
55
|
+
{%- if with_bits %}
|
|
56
|
+
|
|
57
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
58
|
+
{%- assign upstream_bits = with_bits_data | where: "type", "upstream" %}
|
|
59
|
+
{%- for upstream_bit in upstream_bits %}
|
|
60
|
+
|
|
61
|
+
{%- comment %} --- Upstream Defaults --- {% endcomment %}
|
|
62
|
+
{%- assign upstream_bit_id = upstream_bit.name | replace: " ", "" | capitalize %}
|
|
63
|
+
{%- assign upstream_bit_class = upstream_bit.class | default: with_bits_schema.class.default %}
|
|
64
|
+
{%- assign upstream_bit_card_class = upstream_bit.card_class | default: with_bits_schema.card_class.default %}
|
|
65
|
+
{%- assign upstream_bit_preamble_class = upstream_bit.preamble_class | default: with_bits_schema.preamble_class.default %}
|
|
66
|
+
{%- assign upstream_bit_finale_class = upstream_bit.finale_class | default: with_bits_schema.finale_class.default %}
|
|
67
|
+
{%- assign upstream_bit_color = upstream_bit.color | default: with_bits_schema.color.default %}
|
|
68
|
+
{%- assign upstream_bit_index_page_name = upstream_bit.index_page_name | default: with_bits_schema.index_page_name.default %}
|
|
69
|
+
{%- assign upstream_bit_index_page_url = upstream_bit.index_page_url | default: with_bits_schema.index_page_url.default %}
|
|
70
|
+
{%- assign upstream_bit_screenshot_class = upstream_bit.screenshot_class | default: with_bits_schema.screenshot_class.default %}
|
|
71
|
+
{%- assign upstream_bit_actions_class = upstream_bit.actions_class | default: with_bits_schema.actions_class.default %}
|
|
72
|
+
{%- assign upstream_bit_btn_class = "btn btn-sm m-1 btn-" | append: upstream_bit_color %}
|
|
73
|
+
|
|
74
|
+
<div class="d-flex flex-column{% if upstream_bit_class != "" %} {{ upstream_bit_class }}{% endif %}">
|
|
75
|
+
|
|
76
|
+
{%- comment %} --- Upstream Peamble --- {% endcomment %}
|
|
77
|
+
{%- if upstream_bit.preamble %}
|
|
78
|
+
<p{% if upstream_bit_preamble_class != "" %} class="{{ upstream_bit_preamble_class }}"{% endif %}>{{ upstream_bit.preamble }}</p>
|
|
79
|
+
{%- endif %}
|
|
80
|
+
|
|
81
|
+
{%- comment %} --- Upstream Card --- {% endcomment %}
|
|
82
|
+
{%- include base/card.html.liquid
|
|
83
|
+
class = upstream_bit_card_class
|
|
84
|
+
screenshot = upstream_bit.screenshot
|
|
85
|
+
screenshot_class = upstream_bit_screenshot_class
|
|
86
|
+
screenshot_style = upstream_bit.screenshot_style
|
|
87
|
+
screenshot_alt = upstream_bit.screenshot_alt
|
|
88
|
+
icon = upstream_bit.icon
|
|
89
|
+
icon_class = upstream_bit.icon_class
|
|
90
|
+
image = upstream_bit.image
|
|
91
|
+
image_class = upstream_bit.image_class
|
|
92
|
+
image_style = upstream_bit.image_style
|
|
93
|
+
image_alt = upstream_bit.image_alt
|
|
94
|
+
name = upstream_bit.name
|
|
95
|
+
name_class = upstream_bit.name_class
|
|
96
|
+
description = upstream_bit.description
|
|
97
|
+
description_class = upstream_bit.description_class
|
|
98
|
+
actions = upstream_bit.actions
|
|
99
|
+
actions_class = upstream_bit_actions_class
|
|
100
|
+
color = upstream_bit_color
|
|
101
|
+
%}
|
|
102
|
+
|
|
103
|
+
{%- comment %} --- Upstream Finale (Downstream Introduction) --- {% endcomment %}
|
|
104
|
+
{%- assign downstream_bits = with_bits_data | where: "type", "downstream" | where: "relationship", upstream_bit.name %}
|
|
105
|
+
{%- assign downstream_bit_total = downstream_bits | size %}
|
|
106
|
+
{%- assign downstream_bit_index_name = upstream_bit_index_page_name | append: " (" | append: downstream_bit_total | append: ")" %}
|
|
107
|
+
|
|
108
|
+
{%- if upstream_bit.finale %}
|
|
109
|
+
<div class="d-flex flex-row w-100 justify-content-between align-items-center my-3">
|
|
110
|
+
<p class="m-1{% if upstream_bit_finale_class != "" %} {{ upstream_bit_finale_class }}{% endif %}">{{ upstream_bit.finale }}</p>
|
|
111
|
+
{%- if downstream_bit_total > 3 %}
|
|
112
|
+
<div class="m-1">
|
|
113
|
+
{% include base/link.html.liquid
|
|
114
|
+
name = downstream_bit_index_name
|
|
115
|
+
class = ""
|
|
116
|
+
icon = "fa-solid fa-arrow-right"
|
|
117
|
+
icon_position = "end"
|
|
118
|
+
url = upstream_bit_index_page_url
|
|
119
|
+
%}
|
|
120
|
+
</div>
|
|
121
|
+
{% endif %}
|
|
122
|
+
</div>
|
|
123
|
+
{%- endif %}
|
|
124
|
+
|
|
125
|
+
{%- comment %} --- Downstream Cards --- {% endcomment %}
|
|
126
|
+
<div class="d-flex flex-row flex-wrap flex-lg-nowrap justify-content-between w-100 mb-3">
|
|
127
|
+
{%- for downstream_bit in downstream_bits | limit: 3 %}
|
|
128
|
+
<div class="card border-{{ upstream_bit_color }}-subtle m-1">
|
|
129
|
+
<div class="bg-{{ upstream_bit_color }} rounded-top">
|
|
130
|
+
<img src="{{ site.url }}{{ site.baseurl }}/assets/img/{{ downstream_bit.screenshot }}" class="card-img-top" alt="{{ downstream_bit.screenshot }}">
|
|
131
|
+
</div>
|
|
132
|
+
<div class="card-body">
|
|
133
|
+
<p class="h5 card-title">{{ downstream_bit.name }}</p>
|
|
134
|
+
<p class="card-text">{{ downstream_bit.description }}</p>
|
|
135
|
+
{% for action in downstream_bit.actions | limit: 1 %}
|
|
136
|
+
{% include base/link.html.liquid
|
|
137
|
+
name = action.name
|
|
138
|
+
url = action.link
|
|
139
|
+
class = upstream_bit_btn_class
|
|
140
|
+
icon = action.icon
|
|
141
|
+
icon_position = action.icon_position
|
|
142
|
+
%}
|
|
143
|
+
{% endfor %}
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
{%- endfor %}
|
|
147
|
+
</div>
|
|
148
|
+
|
|
149
|
+
</div>
|
|
150
|
+
{% endfor %}
|
|
151
|
+
|
|
152
|
+
{%- endif -%}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
================================================================================
|
|
3
|
+
Template: Breadcrumb Navigation Component
|
|
4
|
+
Purpose: Renders hierarchical breadcrumb navigation showing page location
|
|
5
|
+
in the site's URL structure. Excludes locale codes from the visible trail.
|
|
6
|
+
================================================================================
|
|
7
|
+
|
|
8
|
+
Design Logic:
|
|
9
|
+
- Automatic breadcrumb generation from page URL (no data config)
|
|
10
|
+
- Hierarchical path visualization using URL splitting
|
|
11
|
+
- Skips locale codes (e.g., /es/, /fr/) from visible breadcrumb
|
|
12
|
+
- Home link always appears first as root
|
|
13
|
+
- Current page title as active final item (non-clickable)
|
|
14
|
+
- URL reconstruction preserves locale prefix in links
|
|
15
|
+
|
|
16
|
+
Required Inputs:
|
|
17
|
+
- page.url: Current page URL path (may include locale prefix)
|
|
18
|
+
- page.original_url: URL without locale prefix (used for breadcrumb structure)
|
|
19
|
+
- page.title: Display text for active breadcrumb
|
|
20
|
+
|
|
21
|
+
Optional Inputs:
|
|
22
|
+
- with_breadcrumb_data.arialabel: aria-label for the <nav> element (default: "breadcrumb")
|
|
23
|
+
|
|
24
|
+
Data Source Hierarchy:
|
|
25
|
+
- with_breadcrumb: include.with_breadcrumb → page.with_breadcrumb
|
|
26
|
+
- with_breadcrumb_data: include.data → page.with_breadcrumb_data → site.data.breadcrumb → site.data.base.breadcrumb
|
|
27
|
+
================================================================================
|
|
28
|
+
{% endcomment %}
|
|
29
|
+
|
|
30
|
+
{%- assign with_breadcrumb = include.with_breadcrumb
|
|
31
|
+
| default: page.with_breadcrumb
|
|
32
|
+
%}
|
|
33
|
+
|
|
34
|
+
{%- assign with_breadcrumb_data = include.data
|
|
35
|
+
| default: page.with_breadcrumb_data
|
|
36
|
+
| default: site.data.breadcrumb
|
|
37
|
+
| default: site.data.base.breadcrumb
|
|
38
|
+
%}
|
|
39
|
+
|
|
40
|
+
{%- if with_breadcrumb %}
|
|
41
|
+
|
|
42
|
+
{%- assign with_breadcrumb_schema = site.data.base.breadcrumb_schema.properties.with_breadcrumb_data.properties %}
|
|
43
|
+
|
|
44
|
+
{%- comment %} Use original_url if available (without locale), otherwise use full url {%- endcomment %}
|
|
45
|
+
{%- assign breadcrumb_url = page.original_url | default: page.url %}
|
|
46
|
+
|
|
47
|
+
{%- comment %} Use plugin-provided locale (set for localized pages, defaults to 'en') {%- endcomment %}
|
|
48
|
+
{%- assign detected_locale = page.locale | default: 'en' %}
|
|
49
|
+
|
|
50
|
+
<nav aria-label="{{ with_breadcrumb_data.arialabel | default: with_breadcrumb_schema.arialabel.default | default: 'breadcrumb' }}">
|
|
51
|
+
<ol class="breadcrumb mb-0">
|
|
52
|
+
{%- comment %} Home link - adjust for locale {%- endcomment %}
|
|
53
|
+
{%- if detected_locale == 'en' or detected_locale == '' %}
|
|
54
|
+
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}/">Home</a></li>
|
|
55
|
+
{%- else %}
|
|
56
|
+
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}/{{ detected_locale }}/">Home</a></li>
|
|
57
|
+
{%- endif %}
|
|
58
|
+
|
|
59
|
+
{%- assign crumbs = breadcrumb_url | remove:'/index.html' | split: '/' %}
|
|
60
|
+
{%- for crumb in crumbs offset: 1 %}
|
|
61
|
+
{%- if forloop.last %}
|
|
62
|
+
<li class="breadcrumb-item active">{{ page.title }}</li>
|
|
63
|
+
{%- else %}
|
|
64
|
+
{%- comment %} Build URL with locale prefix if not English {%- endcomment %}
|
|
65
|
+
{%- assign crumb_limit = forloop.index | plus: 1 %}
|
|
66
|
+
{%- if detected_locale == 'en' or detected_locale == '' %}
|
|
67
|
+
{%- assign crumb_prefix = '' %}
|
|
68
|
+
{%- else %}
|
|
69
|
+
{%- assign crumb_prefix = detected_locale | prepend: '/' %}
|
|
70
|
+
{%- endif %}
|
|
71
|
+
<li class="breadcrumb-item"><a class="{{ site.with_link_decorator_data.default_link_classes }}" href="{{ site.baseurl }}{{ crumb_prefix }}{% for crumb in crumbs limit: crumb_limit %}{{ crumb | append: '/' | replace:'without-plugin/','without-plugins/' }}{% endfor %}">{{ crumb | replace:'-',' ' | remove:'.html' | capitalize }}</a></li>
|
|
72
|
+
{%- endif %}
|
|
73
|
+
{%- endfor %}
|
|
74
|
+
</ol>
|
|
75
|
+
</nav>
|
|
76
|
+
|
|
77
|
+
{%- endif -%}
|
|
@@ -0,0 +1,90 @@
|
|
|
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 with_breakingnews = include.with_breakingnews
|
|
33
|
+
| default: page.with_breakingnews
|
|
34
|
+
%}
|
|
35
|
+
|
|
36
|
+
{%- assign with_breakingnews_data = include.data
|
|
37
|
+
| default: page.with_breakingnews_data
|
|
38
|
+
| default: site.data.breakingnews
|
|
39
|
+
| default: site.data.base.breakingnews
|
|
40
|
+
%}
|
|
41
|
+
|
|
42
|
+
{%- if with_breakingnews %}
|
|
43
|
+
|
|
44
|
+
{%- assign with_breakingnews_schema = site.data.base.breakingnews_schema.properties.with_breakingnews_data.items.properties %}
|
|
45
|
+
|
|
46
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
47
|
+
{%- assign breakingnews_alert_height = site.data.base.breakingnews_schema.properties.breakingnews_alert_height.default %}
|
|
48
|
+
{%- assign navbar_height = site.data.base.navbar_schema.properties.navbar_height.default %}
|
|
49
|
+
|
|
50
|
+
{%- if with_breakingnews_data.size > 0 %}
|
|
51
|
+
<div class="sticky-top sticky-top-breakingnews">
|
|
52
|
+
{% for item in with_breakingnews_data %}
|
|
53
|
+
|
|
54
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
55
|
+
{% if forloop.first %}
|
|
56
|
+
{% assign breakingnews_alerts_height = breakingnews_alert_height | plus: navbar_height %}
|
|
57
|
+
{% else %}
|
|
58
|
+
{% assign breakingnews_alerts_height = breakingnews_alerts_height | plus: breakingnews_alert_height %}
|
|
59
|
+
{% endif %}
|
|
60
|
+
{%- assign breakingnews_color = item.color | default: with_breakingnews_schema.color.default %}
|
|
61
|
+
{%- assign breakingnews_btn_class = "btn btn-sm text-nowrap btn-" | append: breakingnews_color %}
|
|
62
|
+
{%- assign breakingnews_icon = item.icon | default: with_breakingnews_schema.icon.default %}
|
|
63
|
+
|
|
64
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
65
|
+
<div class="breakingnews alert alert-{{ breakingnews_color }} p-2 rounded-0 m-0 border-start-0 border-end-0 shadow" role="alert">
|
|
66
|
+
<div class="container d-flex justify-content-between align-items-center">
|
|
67
|
+
<div class="me-3">
|
|
68
|
+
<div class="h6 mb-0"><i class="{{ breakingnews_icon }}"></i></div>
|
|
69
|
+
</div>
|
|
70
|
+
<p class="flex-fill text-start mb-0">{{ item.content }}</p>
|
|
71
|
+
{%- if item.link %}
|
|
72
|
+
<div>
|
|
73
|
+
{% include base/link.html.liquid
|
|
74
|
+
name = "Know more"
|
|
75
|
+
icon = "fa-solid fa-arrow-right"
|
|
76
|
+
icon_position = "end"
|
|
77
|
+
role = "button"
|
|
78
|
+
class = breakingnews_btn_class
|
|
79
|
+
color = breakingnews_color
|
|
80
|
+
link = item.link
|
|
81
|
+
%}
|
|
82
|
+
</div>
|
|
83
|
+
{%- endif %}
|
|
84
|
+
</div>
|
|
85
|
+
</div>
|
|
86
|
+
{% endfor %}
|
|
87
|
+
</div>
|
|
88
|
+
{%- endif %}
|
|
89
|
+
|
|
90
|
+
{%- endif -%}
|
|
@@ -0,0 +1,110 @@
|
|
|
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 with_card_schema = site.data.base.card_schema.properties %}
|
|
29
|
+
|
|
30
|
+
{%- assign card_class = include.class | default: with_card_schema.class.default %}
|
|
31
|
+
{%- assign card_color = include.color | default: with_card_schema.color.default %}
|
|
32
|
+
{%- assign card_image = include.image | default: with_card_schema.image.default %}
|
|
33
|
+
{%- assign card_image_class = include.image_class | default: with_card_schema.image_class.default %}
|
|
34
|
+
{%- assign card_image_style = include.image_style | default: with_card_schema.image_style.default %}
|
|
35
|
+
{%- assign card_image_alt = include.image_alt | default: card_image %}
|
|
36
|
+
{%- assign card_icon = include.icon | default: with_card_schema.icon.default %}
|
|
37
|
+
{%- assign card_icon_class = include.icon_class | default: with_card_schema.icon_class.default %}
|
|
38
|
+
{%- assign card_name = include.name | default: with_card_schema.name.default %}
|
|
39
|
+
{%- assign card_name_class = include.name_class | default: with_card_schema.name_class.default %}
|
|
40
|
+
{%- assign card_screenshot = include.screenshot | default: with_card_schema.screenshot.default %}
|
|
41
|
+
{%- assign card_screenshot_class = include.screenshot_class | default: with_card_schema.screenshot_class.default %}
|
|
42
|
+
{%- assign card_screenshot_style = include.screenshot_style | default: with_card_schema.screenshot_style.default %}
|
|
43
|
+
{%- assign card_screenshot_alt = include.screenshot_alt | default: card_screenshot %}
|
|
44
|
+
{%- assign card_description = include.description | default: with_card_schema.description.default %}
|
|
45
|
+
{%- assign card_description_class = include.description_class | default: with_card_schema.description_class.default %}
|
|
46
|
+
{%- assign card_actions = include.actions | default: with_card_schema.actions.default %}
|
|
47
|
+
{%- assign card_actions_class = include.actions_class | default: with_card_schema.actions_class.default %}
|
|
48
|
+
{%- assign card_actions_btn_class = include.actions_btn_class | default: "btn m-1 btn-" | append: card_color %}
|
|
49
|
+
|
|
50
|
+
{%- comment %} === Presentation === {% endcomment %}
|
|
51
|
+
|
|
52
|
+
{%- comment %} --- Defaults --- {% endcomment %}
|
|
53
|
+
{%- capture html_card_screenshot -%}
|
|
54
|
+
{% if card_screenshot != "" %}
|
|
55
|
+
<div class="bg-{{ card_color }} rounded mb-3">
|
|
56
|
+
<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 }}">
|
|
57
|
+
</div>
|
|
58
|
+
{% endif %}
|
|
59
|
+
{%- endcapture %}
|
|
60
|
+
|
|
61
|
+
{%- capture html_card_image -%}
|
|
62
|
+
{% if card_image != "" %}
|
|
63
|
+
<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 }}">
|
|
64
|
+
{% endif %}
|
|
65
|
+
{%- endcapture %}
|
|
66
|
+
|
|
67
|
+
{%- capture html_card_icon -%}
|
|
68
|
+
{% if card_icon != "" %}
|
|
69
|
+
<div class="{{ card_icon_class }}"><i class="{{ card_icon }}"></i></div>
|
|
70
|
+
{% endif %}
|
|
71
|
+
{%- endcapture %}
|
|
72
|
+
|
|
73
|
+
{%- capture html_card_name -%}
|
|
74
|
+
{% if card_name != "" %}
|
|
75
|
+
<p class="{{ card_name_class }}">{{ card_name }}</p>
|
|
76
|
+
{% endif %}
|
|
77
|
+
{%- endcapture %}
|
|
78
|
+
|
|
79
|
+
{%- capture html_card_description -%}
|
|
80
|
+
{% if card_description != "" %}
|
|
81
|
+
<p class="{{ card_description_class }}">{{ card_description }}</p>
|
|
82
|
+
{% endif %}
|
|
83
|
+
{%- endcapture %}
|
|
84
|
+
|
|
85
|
+
{%- capture html_card_actions -%}
|
|
86
|
+
{%- if card_actions.size > 0 %}
|
|
87
|
+
<div class="{{ card_actions_class }}">
|
|
88
|
+
{%- for action in card_actions %}
|
|
89
|
+
{% include base/link.html.liquid
|
|
90
|
+
class = card_actions_btn_class
|
|
91
|
+
role = "button"
|
|
92
|
+
name = action.name
|
|
93
|
+
url = action.url
|
|
94
|
+
icon = action.icon
|
|
95
|
+
icon_position = action.icon_position
|
|
96
|
+
%}
|
|
97
|
+
{% endfor %}
|
|
98
|
+
</div>
|
|
99
|
+
{% endif %}
|
|
100
|
+
{%- endcapture %}
|
|
101
|
+
|
|
102
|
+
{%- comment %} --- HTML --- {% endcomment %}
|
|
103
|
+
<div class="d-flex{% if card_class != "" %} {{ card_class }}{% endif %}">
|
|
104
|
+
{{ html_card_image }}
|
|
105
|
+
{{ html_card_icon }}
|
|
106
|
+
{{ html_card_name }}
|
|
107
|
+
{{ html_card_description }}
|
|
108
|
+
{{ html_card_screenshot }}
|
|
109
|
+
{{ html_card_actions }}
|
|
110
|
+
</div>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<table class="table dataTable">
|
|
2
|
+
<thead class="table-light">
|
|
3
|
+
<tr>
|
|
4
|
+
<th>{{ include.name_label | default: "Color" }}</th>
|
|
5
|
+
<th class="text-nowrap">Hex</th>
|
|
6
|
+
<th class="text-nowrap">RGB</th>
|
|
7
|
+
<th class="text-nowrap">HSV</th>
|
|
8
|
+
<th>Text Color</th>
|
|
9
|
+
<th class="text-nowrap">Contrast Ratio</th>
|
|
10
|
+
<th class="text-nowrap">WCAG 2.2 AA</th>
|
|
11
|
+
<th class="text-nowrap">WCAG 2.2 AAA</th>
|
|
12
|
+
</tr>
|
|
13
|
+
</thead>
|
|
14
|
+
<tbody>
|
|
15
|
+
{%- for item in include.collection %}
|
|
16
|
+
{%- if include.name_field == "full_name" %}
|
|
17
|
+
{%- assign _item_name = item.full_name | remove: '$' %}
|
|
18
|
+
{%- else %}
|
|
19
|
+
{%- assign _item_name = item.name %}
|
|
20
|
+
{%- endif %}
|
|
21
|
+
<tr>
|
|
22
|
+
<td class="text-nowrap">{{ _item_name }}</td>
|
|
23
|
+
<td class="text-nowrap"><span role="button" class="copy-btn" data-bs-toggle="tooltip" data-bs-title="Copy hex value" data-copy-value="{{ item.hex }}" aria-label="Copy hex value {{ item.hex }}"><span class="fa-regular fa-copy"></span> <i class="fas fa-circle fa-xl" style="color: {{ item.hex }}"></i> <code>{{ item.hex }}</code></span></td>
|
|
24
|
+
<td class="text-nowrap"><span role="button" class="copy-btn" data-bs-toggle="tooltip" data-bs-title="Copy RGB value" data-copy-value="{{ item.rgb }}" aria-label="Copy RGB value {{ item.rgb }}"><span class="fa-regular fa-copy"></span> <code>{{ item.rgb }}</code></span></td>
|
|
25
|
+
<td class="text-nowrap"><span role="button" class="copy-btn" data-bs-toggle="tooltip" data-bs-title="Copy HSV value" data-copy-value="{{ item.hsv }}" aria-label="Copy HSV value {{ item.hsv }}"><span class="fa-regular fa-copy"></span> <code>{{ item.hsv }}</code></span></td>
|
|
26
|
+
<td><span class="badge {{ item.text_badge }}">{{ item.text_color }}</span></td>
|
|
27
|
+
<td class="text-nowrap"><code>{{ item.contrast_ratio | remove: '`' }}</code> <a href="https://webaim.org/resources/contrastchecker/?fcolor={{ item.text_color_hex | remove: '#' | upcase }}&bcolor={{ item.hex | remove: '#' | upcase }}" target="_blank" class="text-decoration-none" data-bs-toggle="tooltip" title="Verify with WebAIM" aria-label="Verify contrast ratio with WebAIM"><i class="fas fa-external-link-alt"></i></a></td>
|
|
28
|
+
<td class="text-nowrap">{% if item.wcag_2_2_aa %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Exceeds WCAG 2.2 AA standard (4.5:1 minimum)"><i class="fas fa-circle-check text-success"></i></span>{% else %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Underperforms WCAG 2.2 AA standard (4.5:1 minimum)"><i class="fas fa-circle-xmark text-danger"></i></span>{% endif %} <code>{{ item.wcag_2_2_aa_margin | remove: '`' }}</code></td>
|
|
29
|
+
<td class="text-nowrap">{% if item.wcag_2_2_aaa %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Exceeds WCAG 2.2 AAA standard (7.0:1 minimum)"><i class="fas fa-circle-check text-success"></i></span>{% else %}<span class="d-inline-block" data-bs-toggle="tooltip" title="Underperforms WCAG 2.2 AAA standard (7.0:1 minimum)"><i class="fas fa-circle-xmark text-danger"></i></span>{% endif %} <code>{{ item.wcag_2_2_aaa_margin | remove: '`' }}</code></td>
|
|
30
|
+
</tr>
|
|
31
|
+
{%- endfor %}
|
|
32
|
+
</tbody>
|
|
33
|
+
</table>
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
Generates one separate table and then triggers subsequent recursion to produce
|
|
3
|
+
others. Requires two distinct loops for valid HTML structure.
|
|
4
|
+
{% endcomment %}
|
|
5
|
+
|
|
6
|
+
{% assign current_properties = include.properties %}
|
|
7
|
+
{% assign parent_name = include.parent_name %}
|
|
8
|
+
{% assign current_level = include.level | plus: 0 %}
|
|
9
|
+
{% assign type_desc = include.type_desc %}
|
|
10
|
+
|
|
11
|
+
{% assign col_name = include.col_name | default: "Name" %}
|
|
12
|
+
{% assign col_type = include.col_type | default: "Type" %}
|
|
13
|
+
{% assign col_default = include.col_default | default: "Default" %}
|
|
14
|
+
{% assign col_description = include.col_description | default: "Description" %}
|
|
15
|
+
|
|
16
|
+
{% assign columns = include.columns %}
|
|
17
|
+
|
|
18
|
+
{% if current_properties %}
|
|
19
|
+
|
|
20
|
+
{% comment %} 1. Calculate the property count for THIS specific set of data using | size. {% endcomment %}
|
|
21
|
+
{% assign current_property_count = current_properties | size %}
|
|
22
|
+
|
|
23
|
+
{% comment %} 2. Determine CSS classes and ID for THIS table {% endcomment %}
|
|
24
|
+
{% assign table_classes = "table dataTable" %}
|
|
25
|
+
{% assign table_id = parent_name | slugify | append: '-nested-' | append: current_level %}
|
|
26
|
+
|
|
27
|
+
{% comment %} 3. Render the current nested table (Loop 1: Rendering) {% endcomment %}
|
|
28
|
+
<p class="my-3">The <code>{{ parent_name }}</code> variable is a {{ type_desc }} with the following properties:</p>
|
|
29
|
+
|
|
30
|
+
<table id="{{ table_id }}" class="{{ table_classes }}">
|
|
31
|
+
<thead class="table-light">
|
|
32
|
+
<tr>
|
|
33
|
+
<th scope="col">{{ col_name }}</th>
|
|
34
|
+
{% if columns %}
|
|
35
|
+
{% for col in columns %}<th scope="col">{{ col.label }}</th>{% endfor %}
|
|
36
|
+
{% else %}
|
|
37
|
+
<th scope="col">{{ col_type }}</th>
|
|
38
|
+
<th scope="col">{{ col_default }}</th>
|
|
39
|
+
<th scope="col">{{ col_description }}</th>
|
|
40
|
+
{% endif %}
|
|
41
|
+
</tr>
|
|
42
|
+
</thead>
|
|
43
|
+
<tbody>
|
|
44
|
+
{% for property in current_properties -%}
|
|
45
|
+
{% assign prop_key = property[0] %}
|
|
46
|
+
{% assign prop_details = property[1] %}
|
|
47
|
+
{% assign default_value = prop_details.default | default: "—" %}
|
|
48
|
+
|
|
49
|
+
<tr>
|
|
50
|
+
<td><code>{{ prop_key }}</code></td>
|
|
51
|
+
{% if columns %}
|
|
52
|
+
{% for col in columns %}<td>{{ prop_details[col.key] | strip_newlines | markdownify | default: "—" }}</td>{% endfor %}
|
|
53
|
+
{% else %}
|
|
54
|
+
<td>{{ prop_details.type | strip_newlines | markdownify | default: "—" }}</td>
|
|
55
|
+
<td>{{ default_value | strip_newlines | markdownify | default: "—" }}</td>
|
|
56
|
+
<td>{{ prop_details.description | strip_newlines | markdownify | default: "—" }}</td>
|
|
57
|
+
{% endif %}
|
|
58
|
+
</tr>
|
|
59
|
+
{% endfor -%}
|
|
60
|
+
</tbody>
|
|
61
|
+
</table>
|
|
62
|
+
|
|
63
|
+
{% comment %} 4. Run recursion check (Loop 2: Initiation, must run AFTER </table>) {% endcomment %}
|
|
64
|
+
{% for property in current_properties %}
|
|
65
|
+
{% assign prop_key = property[0] %}
|
|
66
|
+
{% assign prop_details = property[1] %}
|
|
67
|
+
|
|
68
|
+
{% assign nested_properties = nil %}
|
|
69
|
+
|
|
70
|
+
{% comment %} Check if the current property requires further recursion {% endcomment %}
|
|
71
|
+
{% if prop_details.type == "object" and prop_details.properties %}
|
|
72
|
+
{% assign nested_properties = prop_details.properties %}
|
|
73
|
+
{% assign next_type_desc = "dictionary (map)" %}
|
|
74
|
+
{% elsif prop_details.type == "array" and prop_details.items.properties %}
|
|
75
|
+
{% assign nested_properties = prop_details.items.properties %}
|
|
76
|
+
{% assign next_type_desc = "list of dictionaries" %}
|
|
77
|
+
{% endif %}
|
|
78
|
+
|
|
79
|
+
{% if nested_properties %}
|
|
80
|
+
{% comment %} Found deeper nesting: Call the next level {% endcomment %}
|
|
81
|
+
{% assign next_parent_name = include.parent_name | append: "." | append: prop_key %}
|
|
82
|
+
{% assign next_level_val = current_level | plus: 1 %}
|
|
83
|
+
|
|
84
|
+
{% include base/configuration_variables-nested.html.liquid
|
|
85
|
+
properties=nested_properties
|
|
86
|
+
parent_name=next_parent_name
|
|
87
|
+
type_desc=next_type_desc
|
|
88
|
+
level=next_level_val
|
|
89
|
+
col_name=col_name
|
|
90
|
+
col_type=col_type
|
|
91
|
+
col_default=col_default
|
|
92
|
+
col_description=col_description
|
|
93
|
+
columns=columns
|
|
94
|
+
%}
|
|
95
|
+
{% endif %}
|
|
96
|
+
{% endfor %}
|
|
97
|
+
|
|
98
|
+
{% endif %}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
{% comment %}
|
|
2
|
+
Generates the top-level property table and initiates the recursive generation
|
|
3
|
+
of separate, nested DataTables for complex properties.
|
|
4
|
+
{% endcomment %}
|
|
5
|
+
|
|
6
|
+
{% assign component = page.component.name %}
|
|
7
|
+
{% assign property_name = "with_" | append: component %}
|
|
8
|
+
{% assign property_name_schema = component | append: "_schema" %}
|
|
9
|
+
{% assign property_schema = include.schema | default: site.data[property_name_schema] | default: site.data.base[property_name_schema] %}
|
|
10
|
+
|
|
11
|
+
{% assign col_name = include.col_name | default: "Name" %}
|
|
12
|
+
{% assign col_type = include.col_type | default: "Type" %}
|
|
13
|
+
{% assign col_default = include.col_default | default: "Default" %}
|
|
14
|
+
{% assign col_description = include.col_description | default: "Description" %}
|
|
15
|
+
|
|
16
|
+
{% assign columns = include.columns | default: property_schema.columns %}
|
|
17
|
+
|
|
18
|
+
{% if property_schema.properties %}
|
|
19
|
+
|
|
20
|
+
{% comment %} 1. Calculate the property count for the top table using | size. {% endcomment %}
|
|
21
|
+
{% assign property_count = property_schema.properties | size %}
|
|
22
|
+
|
|
23
|
+
{% comment %} 2. Determine the CSS classes for the top-level table. {% endcomment %}
|
|
24
|
+
{% assign table_classes = "table dataTable" %}
|
|
25
|
+
|
|
26
|
+
<p>The <code>{{ page.component.name }}</code> {{ page.component.type }} understands the following configuration variables:</p>
|
|
27
|
+
|
|
28
|
+
{% comment %} 3. Render the top-level table completely {% endcomment %}
|
|
29
|
+
<table class="{{ table_classes }}">
|
|
30
|
+
<thead class="table-light">
|
|
31
|
+
<tr>
|
|
32
|
+
<th scope="col">{{ col_name }}</th>
|
|
33
|
+
{% if columns %}
|
|
34
|
+
{% for col in columns %}<th scope="col">{{ col.label }}</th>{% endfor %}
|
|
35
|
+
{% else %}
|
|
36
|
+
<th scope="col">{{ col_type }}</th>
|
|
37
|
+
<th scope="col">{{ col_default }}</th>
|
|
38
|
+
<th scope="col">{{ col_description }}</th>
|
|
39
|
+
{% endif %}
|
|
40
|
+
</tr>
|
|
41
|
+
</thead>
|
|
42
|
+
<tbody>
|
|
43
|
+
{% for property in property_schema.properties -%}
|
|
44
|
+
{% assign prop_key = property[0] %}
|
|
45
|
+
{% assign prop_details = property[1] %}
|
|
46
|
+
<tr>
|
|
47
|
+
<td><code>{{ prop_key }}</code></td>
|
|
48
|
+
{% if columns %}
|
|
49
|
+
{% for col in columns %}<td>{{ prop_details[col.key] | strip_newlines | markdownify | default: "—" }}</td>{% endfor %}
|
|
50
|
+
{% else %}
|
|
51
|
+
<td>{{ prop_details.type | strip_newlines | markdownify | default: "—" }}</td>
|
|
52
|
+
<td>{{ prop_details.default | strip_newlines | markdownify | default: "—" }}</td>
|
|
53
|
+
<td>{{ prop_details.description | strip_newlines | markdownify | default: "—" }}</td>
|
|
54
|
+
{% endif %}
|
|
55
|
+
</tr>
|
|
56
|
+
{% endfor -%}
|
|
57
|
+
</tbody>
|
|
58
|
+
</table>
|
|
59
|
+
|
|
60
|
+
{% comment %} 4. Initiate recursive nested table generation (separate loop) {% endcomment %}
|
|
61
|
+
{% for property in property_schema.properties -%}
|
|
62
|
+
{% assign prop_key = property[0] %}
|
|
63
|
+
{% assign prop_details = property[1] %}
|
|
64
|
+
|
|
65
|
+
{% assign nested_properties = nil %}
|
|
66
|
+
{% assign type_desc = "" %}
|
|
67
|
+
|
|
68
|
+
{% comment %} Check for nested structures in the top-level properties {% endcomment %}
|
|
69
|
+
{% if prop_details.type == "object" and prop_details.properties %}
|
|
70
|
+
{% assign nested_properties = prop_details.properties %}
|
|
71
|
+
{% assign type_desc = "dictionary (map)" %}
|
|
72
|
+
{% elsif prop_details.type == "array" and prop_details.items.properties %}
|
|
73
|
+
{% comment %} Handle array of objects {% endcomment %}
|
|
74
|
+
{% assign nested_properties = prop_details.items.properties %}
|
|
75
|
+
{% assign type_desc = "list of dictionaries" %}
|
|
76
|
+
{% endif %}
|
|
77
|
+
|
|
78
|
+
{% if nested_properties %}
|
|
79
|
+
{% assign initial_level = 1 %}
|
|
80
|
+
|
|
81
|
+
{% comment %} Call the recursive include for the first level of nested properties. {% endcomment %}
|
|
82
|
+
{% include base/configuration_variables-nested.html.liquid
|
|
83
|
+
properties=nested_properties
|
|
84
|
+
parent_name=prop_key
|
|
85
|
+
type_desc=type_desc
|
|
86
|
+
level=initial_level
|
|
87
|
+
col_name=col_name
|
|
88
|
+
col_type=col_type
|
|
89
|
+
col_default=col_default
|
|
90
|
+
col_description=col_description
|
|
91
|
+
columns=columns
|
|
92
|
+
%}
|
|
93
|
+
{% endif %}
|
|
94
|
+
{% endfor -%}
|
|
95
|
+
|
|
96
|
+
{% else %}
|
|
97
|
+
<p>The <code>{{ page.component.name }}</code> {{ page.component.type }} {{ pt }} doesn't have configuration variables.</p>
|
|
98
|
+
{% endif %}
|