jekyll-theme-centos 2.52.0.beta.91 → 2.52.0.beta.93
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/bits_schema.yml +25 -4
- data/_data/base/download_schema.yml +14 -0
- data/_includes/base/{download_accordion_item.html.liquid → accordion_item.html.liquid} +10 -9
- data/_includes/base/bits.html.liquid +107 -34
- data/_includes/base/download.html.liquid +11 -5
- data/_includes/base/download_architecture.html.liquid +17 -10
- data/_includes/base/download_commands.html.liquid +1 -1
- data/_includes/base/download_documentation.html.liquid +40 -6
- data/_includes/base/download_eol.html.liquid +1 -1
- data/_includes/base/download_screenshots.html.liquid +66 -34
- data/_includes/base/head.html.liquid +3 -3
- data/_includes/base/navindex.html.liquid +4 -4
- data/_includes/base/ogp.html.liquid +6 -6
- data/_sass/base/_download.scss +116 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 836151018cf8fe713204e9e09cfc1fc62aa72394ed2a38d44b2acde91fccb3bc
|
|
4
|
+
data.tar.gz: 7f5d355430ec907001fc2aeac3a05000884f9f2fa4ea965ec4cf0253103f0550
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dd4ad0f0437c111e41e46162330f39b24d065c81e1af6a132acbabc98c6018b8cfd00207dc7df0cfec557a70ac2118028ffac3f88ec85a2a11cc2d2d85aa2223
|
|
7
|
+
data.tar.gz: aa1d9d40a3f7ccb1cc5de0c4f3b0e1157ef81dcce527cbadfdc4c67b9445a95d052243e22322c468ce9bb7650e47deb090dca3ab6f370df8439c1d5b51d61895
|
data/_data/base/bits_schema.yml
CHANGED
|
@@ -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
|
|
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-
|
|
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
|
|
@@ -175,11 +175,32 @@ properties:
|
|
|
175
175
|
to this Upstream Bit. For example, if the Upstream is at `/my-project/`,
|
|
176
176
|
this might be `/my-project/derivatives/`.
|
|
177
177
|
format: uri-reference
|
|
178
|
+
downstream_style:
|
|
179
|
+
type: string
|
|
180
|
+
default: card
|
|
181
|
+
description: >-
|
|
182
|
+
Presentation style for this Upstream Bit's downstream projects.
|
|
183
|
+
`card` (default) keeps the fixed 3-item card preview grid. `accordion`
|
|
184
|
+
renders every related downstream Bit as a Bootstrap accordion item
|
|
185
|
+
instead, optionally capped via `downstream_limit`. Only relevant
|
|
186
|
+
when `type` is `upstream`.
|
|
187
|
+
enum:
|
|
188
|
+
- card
|
|
189
|
+
- accordion
|
|
190
|
+
downstream_limit:
|
|
191
|
+
type: integer
|
|
192
|
+
minimum: 1
|
|
193
|
+
description: >-
|
|
194
|
+
Only used when `downstream_style` is `accordion`. Maximum number of
|
|
195
|
+
downstream Bits shown in the accordion for this Upstream Bit. When
|
|
196
|
+
omitted, every related downstream Bit is shown and the index-page
|
|
197
|
+
link is not rendered, since there is nothing left to link to. Has
|
|
198
|
+
no effect on the `card` style, whose display count stays fixed at 3.
|
|
178
199
|
required:
|
|
179
200
|
- screenshot
|
|
180
201
|
- description
|
|
181
202
|
- type
|
|
182
203
|
- color
|
|
183
|
-
- name
|
|
204
|
+
- name
|
|
184
205
|
additionalProperties: false
|
|
185
206
|
additionalProperties: false
|
|
@@ -205,6 +205,20 @@ properties:
|
|
|
205
205
|
properties:
|
|
206
206
|
title: { type: string, default: "", description: "Visible link label." }
|
|
207
207
|
link: { type: string, default: "", description: "Target URL." }
|
|
208
|
+
description:
|
|
209
|
+
type: string
|
|
210
|
+
default: ""
|
|
211
|
+
description: >-
|
|
212
|
+
Optional supporting text or HTML explaining why
|
|
213
|
+
this link is worth revisiting, not just what it's
|
|
214
|
+
called. Empty renders this entry as a plain button
|
|
215
|
+
(most entries need only `title`/`link`); set,
|
|
216
|
+
renders as one prose sentence instead — `title` as
|
|
217
|
+
the inline link, this text continuing the sentence
|
|
218
|
+
grammatically right after it (e.g. a `title` of
|
|
219
|
+
"Release Notes" and a `description` of "are
|
|
220
|
+
continuously updated..." reads as "Release Notes
|
|
221
|
+
are continuously updated...").
|
|
208
222
|
additionalProperties: false
|
|
209
223
|
eol:
|
|
210
224
|
type: array
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{% comment %}
|
|
2
2
|
================================================================================
|
|
3
|
-
Utility:
|
|
4
|
-
Purpose: The Bootstrap accordion-item/header/button/collapse/body shell
|
|
5
|
-
shared by the four sibling sections below a
|
|
6
|
-
(Screenshots, Documentation, Migration,
|
|
7
|
-
download_sections.html.liquid for how these compose into
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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="
|
|
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 }}">
|
|
@@ -2,14 +2,16 @@
|
|
|
2
2
|
================================================================================
|
|
3
3
|
Template: Bits Component (Upstream/Downstream Relationships)
|
|
4
4
|
Purpose: Renders hierarchical relationships between upstream and downstream
|
|
5
|
-
components. Displays upstream with preamble, card, finale, and
|
|
6
|
-
|
|
7
|
-
================================================================================
|
|
5
|
+
components. Displays upstream with preamble, card, finale, and its related
|
|
6
|
+
downstream items in one of two switchable presentation styles.
|
|
8
7
|
|
|
9
8
|
Strategic Design Logic:
|
|
10
9
|
- Hierarchical relationships: upstream parent, downstream children
|
|
11
10
|
- Card-based presentation: reuses card component for consistency
|
|
12
|
-
-
|
|
11
|
+
- Switchable downstream presentation: `card` (fixed 3-item preview grid,
|
|
12
|
+
the default) or `accordion` (every related downstream item, optionally
|
|
13
|
+
capped via `downstream_limit`), picked per upstream Bit — never both at
|
|
14
|
+
once for the same upstream Bit
|
|
13
15
|
- Optional sections: preamble, finale, "View All" link
|
|
14
16
|
- Relationship linking: downstream filtered by upstream name
|
|
15
17
|
- Customizable styling: per-element class overrides
|
|
@@ -23,7 +25,13 @@ Optional Inputs (from data objects):
|
|
|
23
25
|
- description, screenshot, icon, image, actions, color
|
|
24
26
|
- preamble, finale: Text before/after card
|
|
25
27
|
- class, card_class, preamble_class, finale_class: Custom styling
|
|
26
|
-
-
|
|
28
|
+
- downstream_style: 'card' (default) or 'accordion' — which presentation
|
|
29
|
+
renders this upstream Bit's downstream items
|
|
30
|
+
- downstream_limit: accordion style only; max downstream items shown. Omit
|
|
31
|
+
for unlimited (all shown, "View All" link never rendered)
|
|
32
|
+
- index_page_name, index_page_url: For "View All" link (card style shows it
|
|
33
|
+
if >3 items; accordion style shows it only when downstream_limit is set
|
|
34
|
+
and exceeded)
|
|
27
35
|
|
|
28
36
|
Data Source Hierarchy (in priority order):
|
|
29
37
|
1. include.data - Explicitly passed array
|
|
@@ -35,8 +43,9 @@ Component Layout:
|
|
|
35
43
|
- Outer loop: upstream bits (type='upstream')
|
|
36
44
|
- Preamble text (if present)
|
|
37
45
|
- Card component for upstream
|
|
38
|
-
- Finale section with optional "View All" link
|
|
39
|
-
- Downstream
|
|
46
|
+
- Finale section with optional "View All" link
|
|
47
|
+
- Downstream items: card style (max 3 preview cards) or accordion style
|
|
48
|
+
(all items, or up to downstream_limit), filtered by relationship
|
|
40
49
|
================================================================================
|
|
41
50
|
{% endcomment %}
|
|
42
51
|
|
|
@@ -70,10 +79,13 @@ Component Layout:
|
|
|
70
79
|
{%- assign upstream_bit_screenshot_class = upstream_bit.screenshot_class | default: with_bits_schema.screenshot_class.default %}
|
|
71
80
|
{%- assign upstream_bit_actions_class = upstream_bit.actions_class | default: with_bits_schema.actions_class.default %}
|
|
72
81
|
{%- assign upstream_bit_btn_class = "btn btn-sm m-1 btn-" | append: upstream_bit_color %}
|
|
82
|
+
{%- assign upstream_bit_downstream_style = upstream_bit.downstream_style | default: with_bits_schema.downstream_style.default %}
|
|
83
|
+
{%- assign upstream_bit_downstream_limit = upstream_bit.downstream_limit %}
|
|
84
|
+
{%- assign card_style_downstream_cap = 3 %}
|
|
73
85
|
|
|
74
86
|
<div class="d-flex flex-column{% if upstream_bit_class != "" %} {{ upstream_bit_class }}{% endif %}">
|
|
75
87
|
|
|
76
|
-
{%- comment %} --- Upstream
|
|
88
|
+
{%- comment %} --- Upstream Preamble --- {% endcomment %}
|
|
77
89
|
{%- if upstream_bit.preamble %}
|
|
78
90
|
<p{% if upstream_bit_preamble_class != "" %} class="{{ upstream_bit_preamble_class }}"{% endif %}>{{ upstream_bit.preamble }}</p>
|
|
79
91
|
{%- endif %}
|
|
@@ -98,55 +110,116 @@ Component Layout:
|
|
|
98
110
|
actions = upstream_bit.actions
|
|
99
111
|
actions_class = upstream_bit_actions_class
|
|
100
112
|
color = upstream_bit_color
|
|
101
|
-
|
|
113
|
+
-%}
|
|
102
114
|
|
|
103
115
|
{%- comment %} --- Upstream Finale (Downstream Introduction) --- {% endcomment %}
|
|
104
116
|
{%- assign downstream_bits = with_bits_data | where: "type", "downstream" | where: "relationship", upstream_bit.name %}
|
|
105
117
|
{%- assign downstream_bit_total = downstream_bits | size %}
|
|
106
118
|
{%- assign downstream_bit_index_name = upstream_bit_index_page_name | append: " (" | append: downstream_bit_total | append: ")" %}
|
|
107
119
|
|
|
120
|
+
{%- assign show_index_link = false %}
|
|
121
|
+
{%- if upstream_bit_downstream_style == "accordion" %}
|
|
122
|
+
{%- if upstream_bit_downstream_limit and downstream_bit_total > upstream_bit_downstream_limit %}
|
|
123
|
+
{%- assign show_index_link = true %}
|
|
124
|
+
{%- endif %}
|
|
125
|
+
{%- else %}
|
|
126
|
+
{%- if downstream_bit_total > card_style_downstream_cap %}
|
|
127
|
+
{%- assign show_index_link = true %}
|
|
128
|
+
{%- endif %}
|
|
129
|
+
{%- endif %}
|
|
130
|
+
|
|
108
131
|
{%- if upstream_bit.finale %}
|
|
109
|
-
<div class="d-flex flex-row w-100 justify-content-between align-items-center
|
|
132
|
+
<div class="d-flex flex-row w-100 justify-content-between align-items-center">
|
|
110
133
|
<p class="m-1{% if upstream_bit_finale_class != "" %} {{ upstream_bit_finale_class }}{% endif %}">{{ upstream_bit.finale }}</p>
|
|
111
|
-
{%- if
|
|
134
|
+
{%- if show_index_link %}
|
|
112
135
|
<div class="m-1">
|
|
113
|
-
{
|
|
136
|
+
{%- include base/link.html.liquid
|
|
114
137
|
name = downstream_bit_index_name
|
|
115
138
|
class = ""
|
|
116
139
|
icon = "fa-solid fa-arrow-right"
|
|
117
140
|
icon_position = "end"
|
|
118
141
|
link = upstream_bit_index_page_url
|
|
119
|
-
|
|
142
|
+
-%}
|
|
120
143
|
</div>
|
|
121
|
-
{
|
|
144
|
+
{%- endif %}
|
|
122
145
|
</div>
|
|
123
146
|
{%- endif %}
|
|
124
147
|
|
|
125
|
-
{%- comment %} --- Downstream
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
148
|
+
{%- comment %} --- Downstream Items --- {% endcomment %}
|
|
149
|
+
{%- assign downstream_display_limit = upstream_bit_downstream_limit %}
|
|
150
|
+
{%- if upstream_bit_downstream_style != "accordion" %}
|
|
151
|
+
{%- assign downstream_display_limit = card_style_downstream_cap %}
|
|
152
|
+
{%- endif %}
|
|
153
|
+
{%- if downstream_display_limit %}
|
|
154
|
+
{%- assign visible_downstream_bits = downstream_bits | slice: 0, downstream_display_limit %}
|
|
155
|
+
{%- else %}
|
|
156
|
+
{%- assign visible_downstream_bits = downstream_bits %}
|
|
157
|
+
{%- endif %}
|
|
158
|
+
|
|
159
|
+
{%- if upstream_bit_downstream_style == "accordion" %}
|
|
160
|
+
{%- assign downstream_accordion_id = upstream_bit_id | append: "-downstream-accordion" %}
|
|
161
|
+
{%- assign downstream_item_img_class = "img-fluid" %}
|
|
162
|
+
{%- else %}
|
|
163
|
+
{%- assign downstream_item_img_class = "card-img-top" %}
|
|
164
|
+
{%- endif %}
|
|
165
|
+
|
|
166
|
+
{%- capture downstream_items_html %}
|
|
167
|
+
{%- for downstream_bit in visible_downstream_bits %}
|
|
168
|
+
{%- assign downstream_bit_first_action = downstream_bit.actions | first %}
|
|
169
|
+
{%- capture downstream_bit_action_button %}
|
|
170
|
+
{%- if downstream_bit_first_action %}
|
|
171
|
+
{%- include base/link.html.liquid
|
|
172
|
+
name = downstream_bit_first_action.name
|
|
173
|
+
link = downstream_bit_first_action.link
|
|
174
|
+
class = upstream_bit_btn_class
|
|
175
|
+
icon = downstream_bit_first_action.icon
|
|
176
|
+
icon_position = downstream_bit_first_action.icon_position
|
|
177
|
+
-%}
|
|
178
|
+
{%- endif %}
|
|
179
|
+
{%- endcapture %}
|
|
180
|
+
|
|
181
|
+
{%- capture downstream_bit_media %}
|
|
129
182
|
<div class="bg-{{ upstream_bit_color }} rounded-top">
|
|
130
|
-
<img src="{{ site.baseurl }}/assets/img/{{ downstream_bit.screenshot }}" class="
|
|
183
|
+
<img src="{{ site.baseurl }}/assets/img/{{ downstream_bit.screenshot }}" class="{{ downstream_item_img_class }}" alt="{{ downstream_bit.screenshot }}">
|
|
131
184
|
</div>
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
185
|
+
{%- endcapture %}
|
|
186
|
+
|
|
187
|
+
{%- if upstream_bit_downstream_style == "accordion" %}
|
|
188
|
+
{%- assign downstream_bit_id = downstream_bit.name | replace: " ", "" | capitalize %}
|
|
189
|
+
{%- assign downstream_item_id = downstream_accordion_id | append: "-" | append: downstream_bit_id %}
|
|
190
|
+
{%- capture downstream_bit_body %}
|
|
191
|
+
{{- downstream_bit_media | strip -}}
|
|
192
|
+
<p class="card-text mt-3">{{ downstream_bit.description }}</p>
|
|
193
|
+
{{ downstream_bit_action_button }}
|
|
194
|
+
{%- endcapture %}
|
|
195
|
+
{%- include base/accordion_item.html.liquid
|
|
196
|
+
icon = downstream_bit.icon
|
|
197
|
+
title = downstream_bit.name
|
|
198
|
+
item_id = downstream_item_id
|
|
199
|
+
accordion_id = downstream_accordion_id
|
|
200
|
+
expanded = false
|
|
201
|
+
body = downstream_bit_body
|
|
202
|
+
-%}
|
|
203
|
+
{%- else %}
|
|
204
|
+
<div class="card border-{{ upstream_bit_color }}-subtle m-1">
|
|
205
|
+
{{- downstream_bit_media | strip -}}
|
|
206
|
+
<div class="card-body">
|
|
207
|
+
<p class="h5 card-title">{{ downstream_bit.name }}</p>
|
|
208
|
+
<p class="card-text">{{ downstream_bit.description }}</p>
|
|
209
|
+
{{ downstream_bit_action_button }}
|
|
210
|
+
</div>
|
|
144
211
|
</div>
|
|
145
|
-
|
|
212
|
+
{%- endif %}
|
|
146
213
|
{%- endfor %}
|
|
147
|
-
|
|
214
|
+
{%- endcapture %}
|
|
215
|
+
|
|
216
|
+
{%- if upstream_bit_downstream_style == "accordion" %}
|
|
217
|
+
<div class="accordion w-100 mb-3" id="{{ downstream_accordion_id }}">{{- downstream_items_html -}}</div>
|
|
218
|
+
{%- else %}
|
|
219
|
+
<div class="d-flex flex-row flex-wrap flex-lg-nowrap justify-content-between w-100 mb-3">{{- downstream_items_html -}}</div>
|
|
220
|
+
{%- endif %}
|
|
148
221
|
|
|
149
222
|
</div>
|
|
150
|
-
{
|
|
223
|
+
{%- endfor %}
|
|
151
224
|
|
|
152
225
|
{%- endif -%}
|
|
@@ -22,8 +22,14 @@ Data Source Hierarchy (in priority order):
|
|
|
22
22
|
4. site.data.base.download - Theme defaults
|
|
23
23
|
|
|
24
24
|
Optional Inputs (from include):
|
|
25
|
-
- title:
|
|
26
|
-
- id:
|
|
25
|
+
- title: Render only the entry whose title matches exactly.
|
|
26
|
+
- id: HTML id prefix for the nav-pills tab selector (default: DownloadsCard-1).
|
|
27
|
+
- with_title: Set to false to skip the entry's own title heading, e.g. when
|
|
28
|
+
the calling page already presents it as a real markdown
|
|
29
|
+
heading immediately above the include (for TOC/anchor
|
|
30
|
+
navigation). Default: true.
|
|
31
|
+
- with_description: Set to false to skip the entry's own description text for the
|
|
32
|
+
same reason. Default: true.
|
|
27
33
|
================================================================================
|
|
28
34
|
{% endcomment %}
|
|
29
35
|
|
|
@@ -76,13 +82,13 @@ Optional Inputs (from include):
|
|
|
76
82
|
{%- assign single_release = entry.releases | first %}
|
|
77
83
|
{%- endif %}
|
|
78
84
|
|
|
79
|
-
{%- if entry.title and entry.title != "" %}
|
|
85
|
+
{%- if entry.title and entry.title != "" and include.with_title != false %}
|
|
80
86
|
<div class="h2">
|
|
81
87
|
{{ entry.title | escape }}{% if single_release %} {{ single_release[0] | escape }}{% endif %}
|
|
82
88
|
</div>
|
|
83
89
|
{%- endif %}
|
|
84
90
|
|
|
85
|
-
{%- if entry.description and entry.description != "" %}
|
|
91
|
+
{%- if entry.description and entry.description != "" and include.with_description != false %}
|
|
86
92
|
{{ entry.description | strip_newlines | markdownify }}
|
|
87
93
|
{%- endif %}
|
|
88
94
|
|
|
@@ -102,7 +108,7 @@ Optional Inputs (from include):
|
|
|
102
108
|
</div>
|
|
103
109
|
{%- endfor %}
|
|
104
110
|
{%- elsif entry.releases.size > 1 %}
|
|
105
|
-
<ul class="nav nav-pills
|
|
111
|
+
<ul class="nav nav-pills mb-3 justify-content-start" id="{{ card_id }}-pills-tab" role="tablist">
|
|
106
112
|
{%- for release in entry.releases %}
|
|
107
113
|
<li class="nav-item" role="presentation">
|
|
108
114
|
<button class="nav-link{% if forloop.first %} active{% endif %} fw-bold"
|
|
@@ -154,10 +154,10 @@ content — see examples/components/download-alternative-images.md.
|
|
|
154
154
|
{%- assign arch_name_id_safe = arch_name | remove: '"' | remove: "'" | remove: '<' | remove: '>' | remove: '&' | remove: '#' | remove: '?' | remove: '/' %}
|
|
155
155
|
{%- assign arch_id_prefix = include.release_id | default: "download" | append: "-" | append: arch_name_id_safe | downcase | replace: " ", "-" %}
|
|
156
156
|
<div class="{{ arch_col_class }}"{% if arch_orphan_style != "" %} style="{{ arch_orphan_style }}"{% endif %}>
|
|
157
|
-
<div class="d-flex flex-column align-items-start p-3">
|
|
158
|
-
<div class="mb-2">
|
|
159
|
-
<
|
|
160
|
-
<
|
|
157
|
+
<div class="d-flex flex-column align-items-start p-3 pt-1">
|
|
158
|
+
<div class="mb-2 d-flex align-items-center gap-2">
|
|
159
|
+
<i class="fa-solid fa-microchip fs-2"></i>
|
|
160
|
+
<span class="h3 mb-0">{{ arch_name | escape }}</span>
|
|
161
161
|
</div>
|
|
162
162
|
|
|
163
163
|
{%- assign has_download_button = false %}
|
|
@@ -213,24 +213,31 @@ content — see examples/components/download-alternative-images.md.
|
|
|
213
213
|
{%- endif %}
|
|
214
214
|
|
|
215
215
|
{%- if has_mirrors %}
|
|
216
|
+
{%- comment %} These are outbound links to a mirror/registry, not
|
|
217
|
+
in-page navigation, so each opens in a new tab (target="_blank") with
|
|
218
|
+
the same trailing external-link icon as the Documentation section's
|
|
219
|
+
buttons (base/download_documentation.html.liquid), rather than the
|
|
220
|
+
Download button's leading icon above — the leading icon there signals
|
|
221
|
+
the primary action; the trailing external icon here signals "leaves
|
|
222
|
+
the site". {% endcomment %}
|
|
216
223
|
<div class="d-flex flex-wrap gap-2">
|
|
217
224
|
{%- if arch_data.mirrors.iso and arch_data.mirrors.iso != "" %}
|
|
218
|
-
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="ISO Mirrors" link=arch_data.mirrors.iso icon="fa-solid fa-
|
|
225
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="ISO Mirrors" link=arch_data.mirrors.iso target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
219
226
|
{%- endif %}
|
|
220
227
|
{%- if arch_data.mirrors.rpm and arch_data.mirrors.rpm != "" %}
|
|
221
|
-
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="RPM Mirrors" link=arch_data.mirrors.rpm icon="fa-solid fa-
|
|
228
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="RPM Mirrors" link=arch_data.mirrors.rpm target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
222
229
|
{%- endif %}
|
|
223
230
|
{%- if arch_data.mirrors.cloud and arch_data.mirrors.cloud != "" %}
|
|
224
|
-
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Cloud Images" link=arch_data.mirrors.cloud icon="fa-solid fa-
|
|
231
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Cloud Images" link=arch_data.mirrors.cloud target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
225
232
|
{%- endif %}
|
|
226
233
|
{%- if arch_data.mirrors.containers and arch_data.mirrors.containers != "" %}
|
|
227
|
-
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Container Images" link=arch_data.mirrors.containers icon="fa-solid fa-
|
|
234
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Container Images" link=arch_data.mirrors.containers target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
228
235
|
{%- endif %}
|
|
229
236
|
{%- if arch_data.mirrors.vagrant and arch_data.mirrors.vagrant != "" %}
|
|
230
|
-
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Vagrant Boxes" link=arch_data.mirrors.vagrant icon="fa-solid fa-
|
|
237
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Vagrant Boxes" link=arch_data.mirrors.vagrant target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
231
238
|
{%- endif %}
|
|
232
239
|
{%- if arch_data.mirrors.torrent and arch_data.mirrors.torrent != "" %}
|
|
233
|
-
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Torrent" link=arch_data.mirrors.torrent icon="fa-solid fa-
|
|
240
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary flex-fill text-start" role="button" name="Torrent" link=arch_data.mirrors.torrent target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
234
241
|
{%- endif %}
|
|
235
242
|
</div>
|
|
236
243
|
{%- endif %}
|
|
@@ -24,4 +24,4 @@ Required Inputs:
|
|
|
24
24
|
{%- endif %}
|
|
25
25
|
{%- endfor %}
|
|
26
26
|
{%- endcapture -%}
|
|
27
|
-
{%- include base/
|
|
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 -%}
|
|
@@ -7,18 +7,52 @@ eol/screenshots accordion — release-wide metadata that applies in common to
|
|
|
7
7
|
every architecture above. Called from download_sections.html.liquid.
|
|
8
8
|
|
|
9
9
|
Required Inputs:
|
|
10
|
-
- documentation: Array of {title, link}
|
|
10
|
+
- documentation: Array of {title, link, description}
|
|
11
11
|
- accordion_id: Parent accordion's id, for data-bs-parent scoping
|
|
12
12
|
- item_id: This item's unique collapse id
|
|
13
13
|
- expanded: true starts this item open; false starts it closed. Passed
|
|
14
14
|
through from the caller (see download_sections.html.liquid).
|
|
15
|
+
|
|
16
|
+
An entry's optional `description` switches its own presentation rather than
|
|
17
|
+
attaching a caption to a button: a bare button reads as a call to action
|
|
18
|
+
("do this now"), a mismatched signifier for a full explanatory sentence
|
|
19
|
+
sitting next to it — so once there's a sentence to say, the entry renders as
|
|
20
|
+
one prose paragraph with `title` as the inline link and `description`
|
|
21
|
+
continuing the sentence grammatically (e.g. "Release Notes are continuously
|
|
22
|
+
updated..."), the standard, immediately-recognizable convention for
|
|
23
|
+
referencing a resource from explanatory text. Entries without a description
|
|
24
|
+
still render as a bare button, identical to before this field existed —
|
|
25
|
+
prose and buttons render as two separate groups (prose first, since it's the
|
|
26
|
+
richer content) rather than interleaved, so a documentation list mixing both
|
|
27
|
+
kinds doesn't end up with paragraphs breaking up a button row.
|
|
15
28
|
================================================================================
|
|
16
29
|
{% endcomment %}
|
|
17
|
-
{%- capture
|
|
30
|
+
{%- capture download_documentation_prose -%}
|
|
18
31
|
{%- for row in include.documentation %}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
32
|
+
{%- assign has_description = false %}
|
|
33
|
+
{%- if row.description and row.description != "" %}
|
|
34
|
+
{%- assign has_description = true %}
|
|
35
|
+
{%- endif %}
|
|
36
|
+
{%- if row.title and row.title != "" and has_description %}
|
|
37
|
+
<p class="mb-2">{%- include base/link.html.liquid name=row.title link=row.link target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" %} {{ row.description }}</p>
|
|
38
|
+
{%- endif %}
|
|
22
39
|
{%- endfor %}
|
|
23
40
|
{%- endcapture -%}
|
|
24
|
-
{%-
|
|
41
|
+
{%- capture download_documentation_buttons -%}
|
|
42
|
+
{%- for row in include.documentation %}
|
|
43
|
+
{%- assign has_description = false %}
|
|
44
|
+
{%- if row.description and row.description != "" %}
|
|
45
|
+
{%- assign has_description = true %}
|
|
46
|
+
{%- endif %}
|
|
47
|
+
{%- if row.title and row.title != "" and has_description == false %}
|
|
48
|
+
{%- include base/link.html.liquid class="btn btn-outline-primary text-start" role="button" name=row.title link=row.link target="_blank" icon="fa-solid fa-up-right-from-square" icon_position="end" -%}
|
|
49
|
+
{%- endif %}
|
|
50
|
+
{%- endfor %}
|
|
51
|
+
{%- endcapture -%}
|
|
52
|
+
{%- assign download_documentation_prose_stripped = download_documentation_prose | strip %}
|
|
53
|
+
{%- assign download_documentation_buttons_stripped = download_documentation_buttons | strip %}
|
|
54
|
+
{%- capture download_documentation_body -%}
|
|
55
|
+
{%- if download_documentation_prose_stripped != "" %}{{ download_documentation_prose }}{%- endif %}
|
|
56
|
+
{%- if download_documentation_buttons_stripped != "" %}<div class="d-flex flex-wrap gap-2">{{ download_documentation_buttons }}</div>{%- endif %}
|
|
57
|
+
{%- endcapture -%}
|
|
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/
|
|
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 -%}
|
|
@@ -24,19 +24,78 @@ Required Inputs:
|
|
|
24
24
|
- expanded: true starts this item open; false starts it closed. Passed
|
|
25
25
|
through from the caller (see download_sections.html.liquid).
|
|
26
26
|
|
|
27
|
-
Each slide is wrapped in Bootstrap's
|
|
28
|
-
ratio
|
|
27
|
+
Each slide is wrapped in Bootstrap's `.ratio` utility, set to a fixed 16:10
|
|
28
|
+
box (`--bs-aspect-ratio: 62.5%` — 800 / 1280) so screenshots of any native
|
|
29
|
+
size crop to a consistent box instead of each slide having its own height.
|
|
30
|
+
16:10 matches actual OS screenshot captures (e.g. 1280x800, a common
|
|
31
|
+
display resolution) — deliberately not the 16:9 `ratio-16x9` modifier class
|
|
32
|
+
artwork.html.liquid uses for its own image presentation
|
|
29
33
|
(artwork_schema.yml's image_class default: `ratio ratio-16x9 rounded
|
|
30
|
-
bg-dark bg-artwork`)
|
|
31
|
-
|
|
34
|
+
bg-dark bg-artwork`); real screen captures are rarely 16:9 natively, so
|
|
35
|
+
matching artwork's ratio here would crop more than necessary. Bootstrap
|
|
36
|
+
ships no `ratio-16x10` modifier class, hence the inline `--bs-aspect-ratio`
|
|
37
|
+
override on the base `.ratio` class instead of a second modifier class.
|
|
32
38
|
`object-fit-cover` on the `<img>` itself does the actual cropping — `.ratio`
|
|
33
39
|
alone only stretches its child to fill the box.
|
|
40
|
+
|
|
41
|
+
The carousel skips Bootstrap's `.carousel-dark` modifier: its indicator/
|
|
42
|
+
caption colors are meant to react to whether the underlying image is
|
|
43
|
+
generally light or dark, which fits calm banner photography but not real OS
|
|
44
|
+
screenshots — a single release's slides span stark-white installer screens
|
|
45
|
+
to busy desktop/app-grid content, no single color choice reads clearly
|
|
46
|
+
against all of them. `.download-screenshots-carousel` (see
|
|
47
|
+
src/SASS/_download.scss) instead gives the prev/next icons their own fixed
|
|
48
|
+
dark scrim and the caption its own dark backdrop, so both stay legible over
|
|
49
|
+
any screenshot regardless of image content.
|
|
50
|
+
|
|
51
|
+
`.carousel-inner` and the two control buttons are wrapped in their own
|
|
52
|
+
`.position-relative` div, separate from `.carousel-indicators` — Bootstrap's
|
|
53
|
+
default markup puts indicators inside that same positioned box, overlaid on
|
|
54
|
+
the image (`.carousel-indicators` is `position: absolute; bottom: 0`), which
|
|
55
|
+
is illegible over screenshot content no scrim reliably fixes since a slide's
|
|
56
|
+
content near the bottom edge varies per screenshot. Moving indicators
|
|
57
|
+
outside the wrapper and resetting them to `position: static` in
|
|
58
|
+
_download.scss instead renders them in normal flow below the image — plain
|
|
59
|
+
dots on the page's own background, not an overlay — where they don't need a
|
|
60
|
+
scrim at all. `.position-relative` also keeps the prev/next buttons
|
|
61
|
+
(`top: 0; bottom: 0`, relative to the nearest positioned ancestor) scoped to
|
|
62
|
+
the image's own height instead of stretching down to cover the indicator
|
|
63
|
+
row too.
|
|
34
64
|
================================================================================
|
|
35
65
|
{% endcomment %}
|
|
36
66
|
{%- capture download_screenshots_body -%}
|
|
37
67
|
<div class="p-3">
|
|
38
|
-
<div id="carouselScreenshotsIndicators-{{ include.release_id }}" class="carousel carousel
|
|
39
|
-
<div class="
|
|
68
|
+
<div id="carouselScreenshotsIndicators-{{ include.release_id }}" class="carousel slide download-screenshots-carousel" data-bs-ride="true">
|
|
69
|
+
<div class="position-relative">
|
|
70
|
+
<div class="carousel-inner">
|
|
71
|
+
{%- for row in include.screenshots %}
|
|
72
|
+
<div class="carousel-item{% if forloop.first %} active{% endif %}">
|
|
73
|
+
<div class="ratio" style="--bs-aspect-ratio: 62.5%;">
|
|
74
|
+
<img class="object-fit-cover" src="{{ site.baseurl }}{{ include.image_base_path }}{{ row.src | escape }}" alt="{{ row.alt | escape }}" />
|
|
75
|
+
</div>
|
|
76
|
+
{%- if row.title and row.title != "" or row.description and row.description != "" %}
|
|
77
|
+
<div class="carousel-caption d-none d-md-block">
|
|
78
|
+
{%- if row.title and row.title != "" %}
|
|
79
|
+
<div class="h5">{{ row.title }}</div>
|
|
80
|
+
{%- endif %}
|
|
81
|
+
{%- if row.description and row.description != "" %}
|
|
82
|
+
<p>{{ row.description }}</p>
|
|
83
|
+
{%- endif %}
|
|
84
|
+
</div>
|
|
85
|
+
{%- endif %}
|
|
86
|
+
</div>
|
|
87
|
+
{%- endfor %}
|
|
88
|
+
</div>
|
|
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"><i class="fa-solid fa-chevron-left"></i></span>
|
|
91
|
+
<span class="visually-hidden">Previous</span>
|
|
92
|
+
</button>
|
|
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"><i class="fa-solid fa-chevron-right"></i></span>
|
|
95
|
+
<span class="visually-hidden">Next</span>
|
|
96
|
+
</button>
|
|
97
|
+
</div>
|
|
98
|
+
<div class="carousel-indicators mt-3">
|
|
40
99
|
{%- for row in include.screenshots %}
|
|
41
100
|
<button
|
|
42
101
|
{%- if forloop.first %} class="active" aria-current="true"{% endif %}
|
|
@@ -46,34 +105,7 @@ alone only stretches its child to fill the box.
|
|
|
46
105
|
aria-label="Screenshot {{ forloop.index }}"></button>
|
|
47
106
|
{%- endfor %}
|
|
48
107
|
</div>
|
|
49
|
-
<div class="carousel-inner">
|
|
50
|
-
{%- for row in include.screenshots %}
|
|
51
|
-
<div class="carousel-item{% if forloop.first %} active{% endif %}">
|
|
52
|
-
<div class="ratio ratio-16x9">
|
|
53
|
-
<img class="object-fit-cover" src="{{ site.baseurl }}{{ include.image_base_path }}{{ row.src | escape }}" alt="{{ row.alt | escape }}" />
|
|
54
|
-
</div>
|
|
55
|
-
{%- if row.title and row.title != "" or row.description and row.description != "" %}
|
|
56
|
-
<div class="carousel-caption d-none d-md-block">
|
|
57
|
-
{%- if row.title and row.title != "" %}
|
|
58
|
-
<div class="h5">{{ row.title }}</div>
|
|
59
|
-
{%- endif %}
|
|
60
|
-
{%- if row.description and row.description != "" %}
|
|
61
|
-
<p>{{ row.description }}</p>
|
|
62
|
-
{%- endif %}
|
|
63
|
-
</div>
|
|
64
|
-
{%- endif %}
|
|
65
|
-
</div>
|
|
66
|
-
{%- endfor %}
|
|
67
|
-
</div>
|
|
68
|
-
<button class="carousel-control-prev" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ include.release_id }}" data-bs-slide="prev">
|
|
69
|
-
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
|
70
|
-
<span class="visually-hidden">Previous</span>
|
|
71
|
-
</button>
|
|
72
|
-
<button class="carousel-control-next" type="button" data-bs-target="#carouselScreenshotsIndicators-{{ include.release_id }}" data-bs-slide="next">
|
|
73
|
-
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
|
74
|
-
<span class="visually-hidden">Next</span>
|
|
75
|
-
</button>
|
|
76
108
|
</div>
|
|
77
109
|
</div>
|
|
78
110
|
{%- endcapture -%}
|
|
79
|
-
{%- include base/
|
|
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" />
|
|
@@ -71,7 +71,7 @@ Data Object Properties:
|
|
|
71
71
|
{% assign show_page_filename = include.show_page_filename | default: "false" %}
|
|
72
72
|
<div class="row g-3 mb-3 pt-1">
|
|
73
73
|
{%- for item in data %}
|
|
74
|
-
{%- if item.
|
|
74
|
+
{%- if item.url != page.url %}
|
|
75
75
|
<div class="col-12 col-md-6">
|
|
76
76
|
<div class="p-3 pb-1 bg-light border rounded">
|
|
77
77
|
<div class="h5">
|
|
@@ -98,7 +98,7 @@ Data Object Properties:
|
|
|
98
98
|
{% assign show_page_filename = include.show_page_filename | default: "false" %}
|
|
99
99
|
<div class="row g-3 mb-3 pt-1">
|
|
100
100
|
{%- for item in data %}
|
|
101
|
-
{%- if item.
|
|
101
|
+
{%- if item.url != page.url %}
|
|
102
102
|
<div class="col-12 col-md-6">
|
|
103
103
|
{%- if show_page_filename == "true" %}
|
|
104
104
|
{%- assign item_name = item.name | remove: '.md' %}
|
|
@@ -116,7 +116,7 @@ Data Object Properties:
|
|
|
116
116
|
{% assign show_page_filename = include.show_page_filename | default: "false" %}
|
|
117
117
|
<ul>
|
|
118
118
|
{%- for item in data %}
|
|
119
|
-
{%- if item.
|
|
119
|
+
{%- if item.url != page.url %}
|
|
120
120
|
{%- if show_page_filename == "true" %}
|
|
121
121
|
{%- assign item_name = item.name | remove: '.md' %}
|
|
122
122
|
<li>{% include base/link.html.liquid name=item_name link=item.url %}{% if item.title_lead != nil %} — {{ item.title_lead | strip_newlines | markdownify | remove: "<p>" | remove: "</p>" | strip }}{% endif %}</li>
|
|
@@ -140,7 +140,7 @@ Data Object Properties:
|
|
|
140
140
|
<tbody>
|
|
141
141
|
{%- for item in data %}
|
|
142
142
|
<tr>
|
|
143
|
-
{%- if item.
|
|
143
|
+
{%- if item.url != page.url %}
|
|
144
144
|
{%- if show_page_filename == "true" %}
|
|
145
145
|
{%- assign item_name = item.name | remove: '.md' %}
|
|
146
146
|
<td>{% include base/link.html.liquid name=item_name link=item.url %}</td>
|
|
@@ -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 %}
|
data/_sass/base/_download.scss
CHANGED
|
@@ -68,3 +68,119 @@
|
|
|
68
68
|
width: var(--download-arch-orphan-lg-width);
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
+
|
|
72
|
+
// ================================================================================
|
|
73
|
+
// Download component: screenshot carousel control legibility
|
|
74
|
+
// ================================================================================
|
|
75
|
+
// Purpose: Bootstrap's carousel controls are built for calm banner
|
|
76
|
+
// photography — prev/next icons get only a faint 25%-opacity edge gradient,
|
|
77
|
+
// and captions get no backdrop at all, just white text on the bare image
|
|
78
|
+
// (download_screenshots.html.liquid drops `.carousel-dark` for this same
|
|
79
|
+
// reason — see that file's own comment). Against real OS screenshots
|
|
80
|
+
// (stark-white installer screens through busy desktop/app-grid content),
|
|
81
|
+
// that's not enough separation: the arrows and caption text read as part of
|
|
82
|
+
// the screenshot rather than as clickable/readable UI chrome, so each gets
|
|
83
|
+
// its own fixed dark scrim here instead — legibility no longer depends on
|
|
84
|
+
// what happens to be under it.
|
|
85
|
+
//
|
|
86
|
+
// Indicators get a different fix, not a scrim: a solid backdrop dark/light
|
|
87
|
+
// enough for every screenshot doesn't exist (slides range from near-white
|
|
88
|
+
// to near-black), so download_screenshots.html.liquid moves
|
|
89
|
+
// `.carousel-indicators` outside the image's positioned wrapper entirely —
|
|
90
|
+
// this resets it from Bootstrap's default absolute overlay to normal
|
|
91
|
+
// in-flow content below the image, on the page's own background, where a
|
|
92
|
+
// single theme-adaptive dot color (not a scrim) is all that's needed.
|
|
93
|
+
// Dots are also reshaped from Bootstrap's default 30x3px bars into circles,
|
|
94
|
+
// and recolored with the theme's own primary shades (var(--bs-border-color)
|
|
95
|
+
// is centos-purple-100, var(--bs-primary) is centos-purple — see
|
|
96
|
+
// _variables.scss) instead of Bootstrap's opacity-based active/inactive
|
|
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
|
|
99
|
+
// subtle 50%-vs-100%-opacity difference easy to miss.
|
|
100
|
+
// ================================================================================
|
|
101
|
+
|
|
102
|
+
.download-screenshots-carousel {
|
|
103
|
+
.carousel-control-prev,
|
|
104
|
+
.carousel-control-next {
|
|
105
|
+
opacity: .9;
|
|
106
|
+
|
|
107
|
+
&:hover,
|
|
108
|
+
&:focus {
|
|
109
|
+
opacity: 1;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.carousel-control-prev-icon,
|
|
114
|
+
.carousel-control-next-icon {
|
|
115
|
+
display: flex;
|
|
116
|
+
align-items: center;
|
|
117
|
+
justify-content: center;
|
|
118
|
+
width: 2.5rem;
|
|
119
|
+
height: 2.5rem;
|
|
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
|
|
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
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
.carousel-indicators {
|
|
148
|
+
position: static;
|
|
149
|
+
margin: .75rem 0 0;
|
|
150
|
+
padding: 0;
|
|
151
|
+
|
|
152
|
+
[data-bs-target] {
|
|
153
|
+
width: .625rem;
|
|
154
|
+
height: .625rem;
|
|
155
|
+
margin-right: .375rem;
|
|
156
|
+
margin-left: .375rem;
|
|
157
|
+
background-color: var(--bs-border-color); // primary-100, see _variables.scss
|
|
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;
|
|
168
|
+
opacity: 1;
|
|
169
|
+
transition: width .2s ease, background-color .2s ease;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.active {
|
|
173
|
+
width: 1.375rem;
|
|
174
|
+
background-color: var(--bs-primary);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
.carousel-caption {
|
|
179
|
+
right: .75rem;
|
|
180
|
+
bottom: .75rem;
|
|
181
|
+
left: .75rem;
|
|
182
|
+
padding: .5rem .75rem;
|
|
183
|
+
background-color: rgba(0, 0, 0, .55);
|
|
184
|
+
border-radius: var(--bs-border-radius);
|
|
185
|
+
}
|
|
186
|
+
}
|
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.
|
|
4
|
+
version: 2.52.0.beta.93
|
|
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
|