jekyll-theme-centos 2.52.0.beta.92 → 2.52.0.beta.94

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b215f97ff3780331a982089e5719dbe284707fef64a0a5f4abc2b30864f2023c
4
- data.tar.gz: 612f7607e1ea34f937f9cd881be3c4e4df01d9f1eee172540eeca244096ee10b
3
+ metadata.gz: d1ddd48e40839e62993220986497939549cbacca43c0c8a26020996e3520a3e6
4
+ data.tar.gz: dccc3f654ba6ef736e52803738dd01eb9846024e37c09e16c52ed916ad83a59b
5
5
  SHA512:
6
- metadata.gz: 1c826018b0f8b10df68124dd00b13328953b70596297d390ad3bf05f1dc269261255b2d680cbc98a41ac9701fec11692d657d34cfd502210a50cf0ce874cf739
7
- data.tar.gz: ac962acbdbaffa0f44397c21474866ce09ad5acf0564c52ee0ebcefc75629f86f887a82f3da25a0a873409dda7c2b6966d2cbdcc1c3315d37cebda6f3c7b583f
6
+ metadata.gz: 15fe51e10c40b2e264a5008e0a315d7bb79180718dd6632416ae090adeb5fe71131abed39ba5416198eaced8978f9091e8accc731c0cf115b6fadc87dc265f09
7
+ data.tar.gz: 67b10667ff2b8831b4fbe115f2388f496f7a8b4295d5aabdb75f7ec437143c7396afefa9b322850fcacec2eb8529cde40dbd3111acddc9207748dc53b90ab064
@@ -112,7 +112,7 @@ properties:
112
112
  items:
113
113
  type: object
114
114
  description: Configuration object for a single action button (link). Refer to the `link` component documentation for specific properties.
115
- additionalProperties: true # Changed to true as properties are defined externally
115
+ additionalProperties: true
116
116
  actions_class:
117
117
  type: string
118
118
  default: ""
@@ -135,11 +135,11 @@ properties:
135
135
  Only relevant when `type` is set to `upstream`.
136
136
  finale_class:
137
137
  type: string
138
- default: mb-3
138
+ default: "mb-3"
139
139
  description: Custom Bootstrap classes applied to the `finale` message element (default adds margin-bottom).
140
140
  class:
141
141
  type: string
142
- default: "bg-primary bg-opacity-10 border border-primary-subtle mb-3 p-5 align-items-center text-center rounded"
142
+ default: "bg-primary bg-opacity-10 border border-primary-subtle mb-3 p-3 pb-1 align-items-center text-center rounded"
143
143
  description: >-
144
144
  Custom Bootstrap classes applied to the main container of the
145
145
  Upstream Bit layout. Use this to control padding, background, and element
@@ -148,6 +148,17 @@ properties:
148
148
  type: string
149
149
  default: "flex-column align-items-center text-center mb-3"
150
150
  description: Custom Bootstrap classes applied directly to the card element inside the Upstream Bit container.
151
+ col_class:
152
+ type: string
153
+ default: "col-12 col-sm-4"
154
+ description: >-
155
+ Custom Bootstrap grid column class(es) applied to the wrapper around a
156
+ downstream Bit's card, controlling its width and responsiveness within
157
+ the downstream row (e.g., `col-12` to span the full row, `col-sm-6` to
158
+ share the row 50/50 with one other item, or the default `col-12 col-sm-4`
159
+ to keep three items evenly spaced from the small breakpoint up). Only
160
+ relevant when `type` is `downstream` and the parent Upstream Bit uses the
161
+ `card` downstream style — has no effect on `accordion` style.
151
162
  color:
152
163
  type: string
153
164
  default: primary
@@ -175,11 +186,32 @@ properties:
175
186
  to this Upstream Bit. For example, if the Upstream is at `/my-project/`,
176
187
  this might be `/my-project/derivatives/`.
177
188
  format: uri-reference
189
+ downstream_style:
190
+ type: string
191
+ default: card
192
+ description: >-
193
+ Presentation style for this Upstream Bit's downstream projects.
194
+ `card` (default) keeps the fixed 3-item card preview grid. `accordion`
195
+ renders every related downstream Bit as a Bootstrap accordion item
196
+ instead, optionally capped via `downstream_limit`. Only relevant
197
+ when `type` is `upstream`.
198
+ enum:
199
+ - card
200
+ - accordion
201
+ downstream_limit:
202
+ type: integer
203
+ minimum: 1
204
+ description: >-
205
+ Only used when `downstream_style` is `accordion`. Maximum number of
206
+ downstream Bits shown in the accordion for this Upstream Bit. When
207
+ omitted, every related downstream Bit is shown and the index-page
208
+ link is not rendered, since there is nothing left to link to. Has
209
+ no effect on the `card` style, whose display count stays fixed at 3.
178
210
  required:
179
211
  - screenshot
180
212
  - description
181
213
  - type
182
214
  - color
183
- - name # Added name as it is critical for relationship
215
+ - name
184
216
  additionalProperties: false
185
217
  additionalProperties: false
@@ -1,13 +1,14 @@
1
1
  {% comment %}
2
2
  ================================================================================
3
- Utility: Download Accordion Item
4
- Purpose: The Bootstrap accordion-item/header/button/collapse/body shell
5
- shared by the four sibling sections below a release's architecture grid
6
- (Screenshots, Documentation, Migration, End-of-life) — see
7
- download_sections.html.liquid for how these compose into one shared
8
- accordion. Body content is built by the caller via a capture tag and passed
9
- in as a pre-rendered HTML string, since Jekyll's Liquid include mechanism
10
- has no block/yield content-passing.
3
+ Utility: Accordion Item
4
+ Purpose: The Bootstrap accordion-item/header/button/collapse/body shell,
5
+ shared across components. Used by the four sibling sections below a
6
+ release's architecture grid (Screenshots, Documentation, Migration,
7
+ End-of-life — see download_sections.html.liquid for how these compose into
8
+ one shared accordion) and by the bits component's accordion downstream
9
+ style (see bits.html.liquid). Body content is built by the caller via a
10
+ capture tag and passed in as a pre-rendered HTML string, since Jekyll's
11
+ Liquid include mechanism has no block/yield content-passing.
11
12
 
12
13
  Required Inputs:
13
14
  - icon: Font Awesome icon class shown before the title.
@@ -28,7 +29,7 @@ Optional Inputs:
28
29
  <div class="accordion-header h2">
29
30
  <button class="accordion-button{% unless include.expanded %} collapsed{% endunless %}" type="button" data-bs-toggle="collapse" data-bs-target="#{{ include.item_id }}" aria-expanded="{{ include.expanded }}" aria-controls="{{ include.item_id }}">
30
31
  <i class="{{ include.icon }} me-2"></i>
31
- <span class="mx-3 fw-bold">{{ include.title }}</span>
32
+ <span class="ms-1 fw-bold">{{ include.title }}</span>
32
33
  </button>
33
34
  </div>
34
35
  <div id="{{ include.item_id }}" class="accordion-collapse collapse{% if include.expanded %} show{% endif %}" data-bs-parent="#{{ include.accordion_id }}">
@@ -1,42 +1,44 @@
1
1
  {% comment %}
2
2
  ================================================================================
3
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
4
+ Purpose: Renders upstream/downstream relationships each upstream Bit as a
5
+ preamble/card/finale block, followed by its related downstream Bits in one
6
+ of two switchable presentation styles.
7
+
8
+ Design Logic:
9
+ - Hierarchical relationships: upstream parent, downstream children, linked
10
+ by matching `relationship` to the upstream's `name`
11
+ - Card-based presentation: reuses base/card.html.liquid for the upstream Bit
12
+ - Switchable downstream presentation, picked per upstream Bit via
13
+ `downstream_style`: `card` (default, fixed 3-item preview grid) or
14
+ `accordion` (every related item, optionally capped via `downstream_limit`)
15
+ - Optional sections: preamble, finale, "View All" link (shown once the
16
+ downstream count exceeds the effective style cap)
17
+ - Per-item downstream card width: each downstream Bit's own `col_class`
18
+ (card style only) controls its Bootstrap grid column class, so cards in the
19
+ same row need not be equal width
16
20
 
17
21
  Required Inputs (from data objects):
18
- - type: 'upstream' or 'downstream' (required)
19
- - name: Component name (required)
20
- - relationship: For downstream, name of upstream parent
22
+ - type: 'upstream' or 'downstream'
23
+ - name: Component name
24
+ - relationship: For downstream, name of its upstream parent
21
25
 
22
26
  Optional Inputs (from data objects):
23
27
  - description, screenshot, icon, image, actions, color
24
- - preamble, finale: Text before/after card
28
+ - preamble, finale: Text before/after the upstream card
25
29
  - 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)
30
+ - downstream_style: 'card' (default) or 'accordion'
31
+ - downstream_limit: accordion style only; caps items shown, omit for
32
+ unlimited (all shown, "View All" link never rendered)
33
+ - col_class: card style only; Bootstrap column class per downstream card
34
+ (default: three-across)
35
+ - index_page_name, index_page_url: For the "View All" link
36
+
37
+ Data Source Hierarchy (priority order):
38
+ 1. include.data
39
+ 2. page.with_bits_data
40
+ 3. site.data.bits
41
+ 4. site.data.base.bits
40
42
  ================================================================================
41
43
  {% endcomment %}
42
44
 
@@ -70,10 +72,13 @@ Component Layout:
70
72
  {%- assign upstream_bit_screenshot_class = upstream_bit.screenshot_class | default: with_bits_schema.screenshot_class.default %}
71
73
  {%- assign upstream_bit_actions_class = upstream_bit.actions_class | default: with_bits_schema.actions_class.default %}
72
74
  {%- assign upstream_bit_btn_class = "btn btn-sm m-1 btn-" | append: upstream_bit_color %}
75
+ {%- assign upstream_bit_downstream_style = upstream_bit.downstream_style | default: with_bits_schema.downstream_style.default %}
76
+ {%- assign upstream_bit_downstream_limit = upstream_bit.downstream_limit %}
77
+ {%- assign card_style_downstream_cap = 3 %}
73
78
 
74
79
  <div class="d-flex flex-column{% if upstream_bit_class != "" %} {{ upstream_bit_class }}{% endif %}">
75
80
 
76
- {%- comment %} --- Upstream Peamble --- {% endcomment %}
81
+ {%- comment %} --- Upstream Preamble --- {% endcomment %}
77
82
  {%- if upstream_bit.preamble %}
78
83
  <p{% if upstream_bit_preamble_class != "" %} class="{{ upstream_bit_preamble_class }}"{% endif %}>{{ upstream_bit.preamble }}</p>
79
84
  {%- endif %}
@@ -98,55 +103,114 @@ Component Layout:
98
103
  actions = upstream_bit.actions
99
104
  actions_class = upstream_bit_actions_class
100
105
  color = upstream_bit_color
101
- %}
106
+ -%}
102
107
 
103
108
  {%- comment %} --- Upstream Finale (Downstream Introduction) --- {% endcomment %}
104
109
  {%- assign downstream_bits = with_bits_data | where: "type", "downstream" | where: "relationship", upstream_bit.name %}
105
110
  {%- assign downstream_bit_total = downstream_bits | size %}
106
111
  {%- assign downstream_bit_index_name = upstream_bit_index_page_name | append: " (" | append: downstream_bit_total | append: ")" %}
107
112
 
113
+ {%- assign downstream_display_limit = upstream_bit_downstream_limit %}
114
+ {%- if upstream_bit_downstream_style != "accordion" %}
115
+ {%- assign downstream_display_limit = card_style_downstream_cap %}
116
+ {%- endif %}
117
+
118
+ {%- assign show_index_link = false %}
119
+ {%- if downstream_display_limit and downstream_bit_total > downstream_display_limit %}
120
+ {%- assign show_index_link = true %}
121
+ {%- endif %}
122
+
108
123
  {%- if upstream_bit.finale %}
109
- <div class="d-flex flex-row w-100 justify-content-between align-items-center my-3">
124
+ <div class="d-flex flex-row w-100 justify-content-between align-items-center">
110
125
  <p class="m-1{% if upstream_bit_finale_class != "" %} {{ upstream_bit_finale_class }}{% endif %}">{{ upstream_bit.finale }}</p>
111
- {%- if downstream_bit_total > 3 %}
126
+ {%- if show_index_link %}
112
127
  <div class="m-1">
113
- {% include base/link.html.liquid
128
+ {%- include base/link.html.liquid
114
129
  name = downstream_bit_index_name
115
130
  class = ""
116
131
  icon = "fa-solid fa-arrow-right"
117
132
  icon_position = "end"
118
133
  link = upstream_bit_index_page_url
119
- %}
134
+ -%}
120
135
  </div>
121
- {% endif %}
136
+ {%- endif %}
122
137
  </div>
123
138
  {%- endif %}
124
139
 
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">
140
+ {%- comment %} --- Downstream Items --- {% endcomment %}
141
+ {%- if downstream_display_limit %}
142
+ {%- assign visible_downstream_bits = downstream_bits | slice: 0, downstream_display_limit %}
143
+ {%- else %}
144
+ {%- assign visible_downstream_bits = downstream_bits %}
145
+ {%- endif %}
146
+
147
+ {%- if upstream_bit_downstream_style == "accordion" %}
148
+ {%- assign downstream_accordion_id = upstream_bit_id | append: "-downstream-accordion" %}
149
+ {%- assign downstream_item_img_class = "img-fluid" %}
150
+ {%- else %}
151
+ {%- assign downstream_item_img_class = "card-img-top" %}
152
+ {%- endif %}
153
+
154
+ {%- capture downstream_items_html %}
155
+ {%- for downstream_bit in visible_downstream_bits %}
156
+ {%- assign downstream_bit_first_action = downstream_bit.actions | first %}
157
+ {%- capture downstream_bit_action_button %}
158
+ {%- if downstream_bit_first_action %}
159
+ {%- include base/link.html.liquid
160
+ name = downstream_bit_first_action.name
161
+ link = downstream_bit_first_action.link
162
+ class = upstream_bit_btn_class
163
+ icon = downstream_bit_first_action.icon
164
+ icon_position = downstream_bit_first_action.icon_position
165
+ -%}
166
+ {%- endif %}
167
+ {%- endcapture %}
168
+
169
+ {%- capture downstream_bit_media %}
129
170
  <div class="bg-{{ upstream_bit_color }} rounded-top">
130
- <img src="{{ site.baseurl }}/assets/img/{{ downstream_bit.screenshot }}" class="card-img-top" alt="{{ downstream_bit.screenshot }}">
171
+ <img src="{{ site.baseurl }}/assets/img/{{ downstream_bit.screenshot }}" class="{{ downstream_item_img_class }}" alt="{{ downstream_bit.screenshot }}">
131
172
  </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
- link = action.link
139
- class = upstream_bit_btn_class
140
- icon = action.icon
141
- icon_position = action.icon_position
142
- %}
143
- {% endfor %}
173
+ {%- endcapture %}
174
+
175
+ {%- if upstream_bit_downstream_style == "accordion" %}
176
+ {%- assign downstream_bit_id = downstream_bit.name | replace: " ", "" | capitalize %}
177
+ {%- assign downstream_item_id = downstream_accordion_id | append: "-" | append: downstream_bit_id %}
178
+ {%- capture downstream_bit_body %}
179
+ {{- downstream_bit_media | strip -}}
180
+ <p class="card-text mt-3">{{ downstream_bit.description }}</p>
181
+ {{ downstream_bit_action_button }}
182
+ {%- endcapture %}
183
+ {%- include base/accordion_item.html.liquid
184
+ icon = downstream_bit.icon
185
+ title = downstream_bit.name
186
+ item_id = downstream_item_id
187
+ accordion_id = downstream_accordion_id
188
+ expanded = false
189
+ body = downstream_bit_body
190
+ -%}
191
+ {%- else %}
192
+ {%- assign downstream_bit_col_class = downstream_bit.col_class | default: with_bits_schema.col_class.default %}
193
+ <div class="{{ downstream_bit_col_class }}">
194
+ <div class="card border-{{ upstream_bit_color }}-subtle h-100">
195
+ {{- downstream_bit_media | strip -}}
196
+ <div class="card-body">
197
+ <p class="h5 card-title">{{ downstream_bit.name }}</p>
198
+ <p class="card-text">{{ downstream_bit.description }}</p>
199
+ {{ downstream_bit_action_button }}
200
+ </div>
201
+ </div>
144
202
  </div>
145
- </div>
203
+ {%- endif %}
146
204
  {%- endfor %}
147
- </div>
205
+ {%- endcapture %}
206
+
207
+ {%- if upstream_bit_downstream_style == "accordion" %}
208
+ <div class="accordion w-100 mb-3" id="{{ downstream_accordion_id }}">{{- downstream_items_html -}}</div>
209
+ {%- else %}
210
+ <div class="row w-100 mb-3 g-2">{{- downstream_items_html -}}</div>
211
+ {%- endif %}
148
212
 
149
213
  </div>
150
- {% endfor %}
214
+ {%- endfor %}
151
215
 
152
216
  {%- endif -%}
@@ -24,4 +24,4 @@ Required Inputs:
24
24
  {%- endif %}
25
25
  {%- endfor %}
26
26
  {%- endcapture -%}
27
- {%- include base/download_accordion_item.html.liquid icon="fa-solid fa-terminal" title="Migration" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body=download_commands_body -%}
27
+ {%- include base/accordion_item.html.liquid icon="fa-solid fa-terminal" title="Migration" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body=download_commands_body -%}
@@ -55,4 +55,4 @@ kinds doesn't end up with paragraphs breaking up a button row.
55
55
  {%- if download_documentation_prose_stripped != "" %}{{ download_documentation_prose }}{%- endif %}
56
56
  {%- if download_documentation_buttons_stripped != "" %}<div class="d-flex flex-wrap gap-2">{{ download_documentation_buttons }}</div>{%- endif %}
57
57
  {%- endcapture -%}
58
- {%- include base/download_accordion_item.html.liquid icon="fa-solid fa-book" title="Documentation" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body=download_documentation_body -%}
58
+ {%- include base/accordion_item.html.liquid icon="fa-solid fa-book" title="Documentation" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body=download_documentation_body -%}
@@ -26,4 +26,4 @@ Required Inputs:
26
26
  {%- endfor %}
27
27
  </ul>
28
28
  {%- endcapture -%}
29
- {%- include base/download_accordion_item.html.liquid icon="fa-solid fa-hourglass-end" title="End-of-life" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body=download_eol_body -%}
29
+ {%- include base/accordion_item.html.liquid icon="fa-solid fa-hourglass-end" title="End-of-life" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body=download_eol_body -%}
@@ -87,15 +87,15 @@ row too.
87
87
  {%- endfor %}
88
88
  </div>
89
89
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ include.release_id }}" data-bs-slide="prev">
90
- <span class="carousel-control-prev-icon" aria-hidden="true"></span>
90
+ <span class="carousel-control-prev-icon" aria-hidden="true"><i class="fa-solid fa-chevron-left"></i></span>
91
91
  <span class="visually-hidden">Previous</span>
92
92
  </button>
93
93
  <button class="carousel-control-next" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ include.release_id }}" data-bs-slide="next">
94
- <span class="carousel-control-next-icon" aria-hidden="true"></span>
94
+ <span class="carousel-control-next-icon" aria-hidden="true"><i class="fa-solid fa-chevron-right"></i></span>
95
95
  <span class="visually-hidden">Next</span>
96
96
  </button>
97
97
  </div>
98
- <div class="carousel-indicators">
98
+ <div class="carousel-indicators mt-3">
99
99
  {%- for row in include.screenshots %}
100
100
  <button
101
101
  {%- if forloop.first %} class="active" aria-current="true"{% endif %}
@@ -108,4 +108,4 @@ row too.
108
108
  </div>
109
109
  </div>
110
110
  {%- endcapture -%}
111
- {%- include base/download_accordion_item.html.liquid icon="fa-solid fa-desktop" title="Screenshots" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body_class="p-0" body=download_screenshots_body -%}
111
+ {%- include base/accordion_item.html.liquid icon="fa-solid fa-desktop" title="Screenshots" item_id=include.item_id accordion_id=include.accordion_id expanded=include.expanded body_class="p-0" body=download_screenshots_body -%}
@@ -39,11 +39,11 @@ Optional Inputs:
39
39
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
40
40
  <meta name="referrer" content="strict-origin-when-cross-origin" />
41
41
  {% if page.title == site.title -%}
42
- <title>{{ page.title }}</title>
42
+ <title>{{ page.title | escape }}</title>
43
43
  {% else -%}
44
- <title>{{ page.title }} - {{ site.title }}</title>
44
+ <title>{{ page.title | escape }} - {{ site.title | escape }}</title>
45
45
  {% endif -%}
46
- <meta name="description" content="{{ page.description | default: page.excerpt | default: page.title_lead | default: site.description | strip_html | truncate: 160 }}" />
46
+ <meta name="description" content="{{ page.description | default: page.excerpt | default: page.title_lead | default: site.description | strip_html | truncate: 160 | escape }}" />
47
47
  {% include base/ogp.html.liquid %}
48
48
  <link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-16.png" sizes="16x16" />
49
49
  <link rel="icon" href="{{ site.baseurl }}/assets/icons/favicon-32.png" sizes="32x32" />
@@ -90,7 +90,7 @@ Data Source Hierarchy:
90
90
 
91
91
  {%- comment %} --- Title --- {% endcomment %}
92
92
  {%- if with_ogp_data[property].title %}
93
- <meta {{ meta_attr }}="{{ property }}:title" content="{{ page.title }}" />
93
+ <meta {{ meta_attr }}="{{ property }}:title" content="{{ page.title | escape }}" />
94
94
  {%- endif %}
95
95
 
96
96
  {%- comment %} --- OG type and logo (after title, before url) --- {% endcomment %}
@@ -110,11 +110,11 @@ Data Source Hierarchy:
110
110
  {%- comment %} --- Description --- {% endcomment %}
111
111
  {%- if with_ogp_data[property].description %}
112
112
  {%- if page.excerpt %}
113
- <meta {{ meta_attr }}="{{ property }}:description" content="{{ page.excerpt }}" />
113
+ <meta {{ meta_attr }}="{{ property }}:description" content="{{ page.excerpt | strip_html | escape }}" />
114
114
  {%- elsif page.title_lead %}
115
- <meta {{ meta_attr }}="{{ property }}:description" content="{{ page.title_lead }}" />
115
+ <meta {{ meta_attr }}="{{ property }}:description" content="{{ page.title_lead | escape }}" />
116
116
  {%- else %}
117
- <meta {{ meta_attr }}="{{ property }}:description" content="{{ site.description }}" />
117
+ <meta {{ meta_attr }}="{{ property }}:description" content="{{ site.description | escape }}" />
118
118
  {%- endif %}
119
119
  {%- endif %}
120
120
 
@@ -127,14 +127,14 @@ Data Source Hierarchy:
127
127
  <meta {{ meta_attr }}="{{ property }}:image:width" content="{{ ogp_image_width }}" />
128
128
  <meta {{ meta_attr }}="{{ property }}:image:height" content="{{ ogp_image_height }}" />
129
129
  {%- endif %}
130
- <meta {{ meta_attr }}="{{ property }}:image:alt" content="{{ with_ogp_data[property].image.alt | default: with_ogp_og_image_schema.alt.default | default: 'The CentOS Project' }}" />
130
+ <meta {{ meta_attr }}="{{ property }}:image:alt" content="{{ with_ogp_data[property].image.alt | default: with_ogp_og_image_schema.alt.default | default: 'The CentOS Project' | escape }}" />
131
131
  {%- endif %}
132
132
 
133
133
  {%- comment %} --- OG site_name and locale (after image) --- {% endcomment %}
134
134
  {%- if property == "og" %}
135
135
  {%- assign ogp_site_name = with_ogp_data.og.site_name | default: site.title %}
136
136
  {%- if ogp_site_name %}
137
- <meta property="og:site_name" content="{{ ogp_site_name }}" />
137
+ <meta property="og:site_name" content="{{ ogp_site_name | escape }}" />
138
138
  {%- endif %}
139
139
  <meta property="og:locale" content="{{ ogp_locale }}" />
140
140
  {%- endif %}
@@ -94,7 +94,8 @@
94
94
  // and recolored with the theme's own primary shades (var(--bs-border-color)
95
95
  // is centos-purple-100, var(--bs-primary) is centos-purple — see
96
96
  // _variables.scss) instead of Bootstrap's opacity-based active/inactive
97
- // distinction, so the color contrast itself signals "clickable", not just a
97
+ // distinction. The active dot also widens into a pill (GNOME workspace-
98
+ // switcher style), so both color and size signal "current slide", not just a
98
99
  // subtle 50%-vs-100%-opacity difference easy to miss.
99
100
  // ================================================================================
100
101
 
@@ -111,11 +112,36 @@
111
112
 
112
113
  .carousel-control-prev-icon,
113
114
  .carousel-control-next-icon {
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
114
118
  width: 2.5rem;
115
119
  height: 2.5rem;
116
- background-color: rgba(0, 0, 0, .55);
117
- background-size: 55% 55%;
120
+ // $body-color is centos-purple-900 (see _variables.scss) — used via the Sass
121
+ // variable, not a CSS custom property: Bootstrap computes its `-rgb`
122
+ // companion variables from $theme-colors before base/maps.scss merges in
123
+ // the extended centos-purple-XXX shades, so no --bs-centos-purple-900-rgb
124
+ // ever gets generated for rgba() to reference.
125
+ background-color: rgba($body-color, .55); // dark scrim tinted with the theme's own purple, not neutral black
126
+ background-image: none; // drop Bootstrap's built-in chevron SVG — replaced with a FontAwesome icon
118
127
  border-radius: 50%;
128
+ transition: background-color .2s ease;
129
+
130
+ i {
131
+ font-size: 1.1rem;
132
+ color: #fff;
133
+ }
134
+ }
135
+
136
+ .carousel-control-prev:hover .carousel-control-prev-icon,
137
+ .carousel-control-prev:focus-visible .carousel-control-prev-icon,
138
+ .carousel-control-next:hover .carousel-control-next-icon,
139
+ .carousel-control-next:focus-visible .carousel-control-next-icon {
140
+ // :focus-visible, not :focus — a mouse click also sets :focus on a
141
+ // <button>, which would leave the highlight stuck after the pointer
142
+ // moves away; :focus-visible only fires for keyboard navigation, so the
143
+ // mouse-driven highlight is hover-only while Tab users still get a cue.
144
+ background-color: var(--bs-primary); // full-opacity primary on hover/focus, same interactive cue as the active indicator dot
119
145
  }
120
146
 
121
147
  .carousel-indicators {
@@ -129,11 +155,22 @@
129
155
  margin-right: .375rem;
130
156
  margin-left: .375rem;
131
157
  background-color: var(--bs-border-color); // primary-100, see _variables.scss
132
- border-radius: 50%;
158
+ // Reset Bootstrap's default 10px transparent top/bottom border (its
159
+ // thin-bar click-hit-area trick): left in place, its background-clip:
160
+ // padding-box carries over too, and clips our visible color to a
161
+ // padding-box radius of border-radius minus that 10px border — well
162
+ // below 0, so the dot renders square no matter what radius we set.
163
+ border: 0;
164
+ // Fixed radius (half the dot's own height), not 50%: a percentage is
165
+ // computed per-axis, so on the wider active dot it would stretch into
166
+ // an ellipse instead of keeping the same round end-caps as the circle.
167
+ border-radius: .3125rem;
133
168
  opacity: 1;
169
+ transition: width .2s ease, background-color .2s ease;
134
170
  }
135
171
 
136
172
  .active {
173
+ width: 1.375rem;
137
174
  background-color: var(--bs-primary);
138
175
  }
139
176
  }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-theme-centos
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.52.0.beta.92
4
+ version: 2.52.0.beta.94
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alain Reguera Delgado
@@ -326,6 +326,7 @@ files:
326
326
  - _data/base/sponsors_schema.yml
327
327
  - _data/base/title_schema.yml
328
328
  - _data/base/toc_schema.yml
329
+ - _includes/base/accordion_item.html.liquid
329
330
  - _includes/base/announcement.html.liquid
330
331
  - _includes/base/artwork.html.liquid
331
332
  - _includes/base/backtotop.html.liquid
@@ -344,7 +345,6 @@ files:
344
345
  - _includes/base/copyvalue.html.liquid
345
346
  - _includes/base/datatable.html.liquid
346
347
  - _includes/base/download.html.liquid
347
- - _includes/base/download_accordion_item.html.liquid
348
348
  - _includes/base/download_architecture.html.liquid
349
349
  - _includes/base/download_commands.html.liquid
350
350
  - _includes/base/download_documentation.html.liquid