jekyll-theme-centos 2.52.0.beta.98 → 2.52.0.beta.99
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/card_schema.yml +25 -4
- data/_data/base/color.yml +119 -119
- data/_data/base/copyright_schema.yml +11 -4
- data/_data/base/link_schema.yml +22 -15
- data/_includes/base/card.html.liquid +25 -3
- data/_includes/base/color-table.html.liquid +1 -1
- data/_includes/base/copyright.html.liquid +4 -1
- data/_includes/base/link.html.liquid +3 -2
- data/_includes/base/shortcut.html.liquid +0 -1
- data/_sass/base/_customization.scss +10 -15
- data/_sass/base/_maps.scss +37 -45
- data/_sass/base/_theme-colors.scss +46 -0
- data/assets/css/base/stylesheet.min.scss +8 -0
- metadata +2 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: da6dfbcaa572ae9c1c1b8bdee6a982429740cbbfda79a0ed571e8356673a9545
|
|
4
|
+
data.tar.gz: 567c6a9023b34cc9d2dc5f4f54cc5a786c7d198ce9f4e33fe43675d0cccb9fc9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cbe38939080be0dd02cc85feb855e71bad830c3181f5555ce3aa987e7feb277cf17d28624f5e825a6d5f8d756d4ba635165dd957d8c3d81d82d248589c36a063
|
|
7
|
+
data.tar.gz: f99bd72cab746951008b04d19b7087216e47b2e89d259367d8773f228ca1b620fdd8c8b136f8aa00713e6f4fe22ff121db31391c2a9e64eaadd6b5638cc1819c
|
data/_data/base/card_schema.yml
CHANGED
|
@@ -55,14 +55,34 @@ properties:
|
|
|
55
55
|
type: string
|
|
56
56
|
default: ""
|
|
57
57
|
description: >-
|
|
58
|
-
Title text displayed in the card.
|
|
59
|
-
|
|
58
|
+
Title text displayed in the card. Supports inline Markdown (e.g.
|
|
59
|
+
`` `code` `` spans), rendered via the `markdownify` filter. When
|
|
60
|
+
empty, the name section is not rendered.
|
|
60
61
|
name_class:
|
|
61
62
|
type: string
|
|
62
63
|
default: "display-5 fw-bold mb-3"
|
|
63
64
|
description: >-
|
|
64
65
|
CSS classes applied to the name wrapper `<div>`
|
|
65
66
|
(e.g., `display-5 fw-bold mb-3`).
|
|
67
|
+
name_link:
|
|
68
|
+
type: string
|
|
69
|
+
default: ""
|
|
70
|
+
description: >-
|
|
71
|
+
URL to wrap `name` in a link, rendered via `base/link.html.liquid`
|
|
72
|
+
(relative paths, absolute URLs, and anchors all resolve the same way
|
|
73
|
+
that component already does). When empty (default), `name` renders
|
|
74
|
+
as plain text, unchanged from prior behavior.
|
|
75
|
+
name_link_class:
|
|
76
|
+
type: string
|
|
77
|
+
default: ""
|
|
78
|
+
description: >-
|
|
79
|
+
CSS classes applied to the `name_link` anchor (e.g., `link-dark`).
|
|
80
|
+
When empty, falls back to `base/link.html.liquid`'s own color-driven
|
|
81
|
+
default styling, driven by this card's own `color` parameter (e.g., a
|
|
82
|
+
`color: "centos-purple"` card renders `link-centos-purple
|
|
83
|
+
link-underline-centos-purple`, matching its screenshot/button
|
|
84
|
+
theming — not a hardcoded `primary`). Ignored when `name_link` is
|
|
85
|
+
empty.
|
|
66
86
|
screenshot:
|
|
67
87
|
type: string
|
|
68
88
|
default: ""
|
|
@@ -91,8 +111,9 @@ properties:
|
|
|
91
111
|
type: string
|
|
92
112
|
default: ""
|
|
93
113
|
description: >-
|
|
94
|
-
Body text displayed below the name.
|
|
95
|
-
|
|
114
|
+
Body text displayed below the name. Supports inline Markdown (e.g.
|
|
115
|
+
`` `code` `` spans), rendered via the `markdownify` filter. When
|
|
116
|
+
empty, the description section is not rendered.
|
|
96
117
|
description_class:
|
|
97
118
|
type: string
|
|
98
119
|
default: "mb-3"
|
data/_data/base/color.yml
CHANGED
|
@@ -20,12 +20,12 @@ branding_colors:
|
|
|
20
20
|
rgb: "239, 167, 36"
|
|
21
21
|
hsv: "39° / 85% / 94%"
|
|
22
22
|
text_color: "Black"
|
|
23
|
-
text_color_hex: "#
|
|
24
|
-
contrast_ratio: "
|
|
23
|
+
text_color_hex: "#1C0D19"
|
|
24
|
+
contrast_ratio: "9.12:1"
|
|
25
25
|
wcag_2_2_aa: true
|
|
26
|
-
wcag_2_2_aa_margin: "+
|
|
26
|
+
wcag_2_2_aa_margin: "+4.62:1"
|
|
27
27
|
wcag_2_2_aaa: true
|
|
28
|
-
wcag_2_2_aaa_margin: "+
|
|
28
|
+
wcag_2_2_aaa_margin: "+2.12:1"
|
|
29
29
|
hue: "39°"
|
|
30
30
|
saturation: "85%"
|
|
31
31
|
lightness: "94%"
|
|
@@ -52,12 +52,12 @@ semantic_colors:
|
|
|
52
52
|
rgb: "200, 106, 0"
|
|
53
53
|
hsv: "32° / 100% / 78%"
|
|
54
54
|
text_color: "Black"
|
|
55
|
-
text_color_hex: "#
|
|
56
|
-
contrast_ratio: "
|
|
55
|
+
text_color_hex: "#1C0D19"
|
|
56
|
+
contrast_ratio: "4.92:1"
|
|
57
57
|
wcag_2_2_aa: true
|
|
58
|
-
wcag_2_2_aa_margin: "+
|
|
58
|
+
wcag_2_2_aa_margin: "+0.42:1"
|
|
59
59
|
wcag_2_2_aaa: false
|
|
60
|
-
wcag_2_2_aaa_margin: "-
|
|
60
|
+
wcag_2_2_aaa_margin: "-2.08:1"
|
|
61
61
|
hue: "32°"
|
|
62
62
|
saturation: "100%"
|
|
63
63
|
lightness: "78%"
|
|
@@ -98,12 +98,12 @@ neutral_colors:
|
|
|
98
98
|
rgb: "246, 237, 244"
|
|
99
99
|
hsv: "313° / 4% / 96%"
|
|
100
100
|
text_color: "Black"
|
|
101
|
-
text_color_hex: "#
|
|
102
|
-
contrast_ratio: "
|
|
101
|
+
text_color_hex: "#1C0D19"
|
|
102
|
+
contrast_ratio: "16.36:1"
|
|
103
103
|
wcag_2_2_aa: true
|
|
104
|
-
wcag_2_2_aa_margin: "+
|
|
104
|
+
wcag_2_2_aa_margin: "+11.86:1"
|
|
105
105
|
wcag_2_2_aaa: true
|
|
106
|
-
wcag_2_2_aaa_margin: "+
|
|
106
|
+
wcag_2_2_aaa_margin: "+9.36:1"
|
|
107
107
|
hue: "313°"
|
|
108
108
|
saturation: "4%"
|
|
109
109
|
lightness: "96%"
|
|
@@ -131,12 +131,12 @@ purple_shades:
|
|
|
131
131
|
rgb: "246, 237, 244"
|
|
132
132
|
hsv: "313° / 4% / 96%"
|
|
133
133
|
text_color: "Black"
|
|
134
|
-
text_color_hex: "#
|
|
135
|
-
contrast_ratio: "
|
|
134
|
+
text_color_hex: "#1C0D19"
|
|
135
|
+
contrast_ratio: "16.36:1"
|
|
136
136
|
wcag_2_2_aa: true
|
|
137
|
-
wcag_2_2_aa_margin: "+
|
|
137
|
+
wcag_2_2_aa_margin: "+11.86:1"
|
|
138
138
|
wcag_2_2_aaa: true
|
|
139
|
-
wcag_2_2_aaa_margin: "+
|
|
139
|
+
wcag_2_2_aaa_margin: "+9.36:1"
|
|
140
140
|
hue: "313°"
|
|
141
141
|
saturation: "4%"
|
|
142
142
|
lightness: "96%"
|
|
@@ -147,12 +147,12 @@ purple_shades:
|
|
|
147
147
|
rgb: "236, 220, 232"
|
|
148
148
|
hsv: "315° / 7% / 93%"
|
|
149
149
|
text_color: "Black"
|
|
150
|
-
text_color_hex: "#
|
|
151
|
-
contrast_ratio: "
|
|
150
|
+
text_color_hex: "#1C0D19"
|
|
151
|
+
contrast_ratio: "14.25:1"
|
|
152
152
|
wcag_2_2_aa: true
|
|
153
|
-
wcag_2_2_aa_margin: "+
|
|
153
|
+
wcag_2_2_aa_margin: "+9.75:1"
|
|
154
154
|
wcag_2_2_aaa: true
|
|
155
|
-
wcag_2_2_aaa_margin: "+
|
|
155
|
+
wcag_2_2_aaa_margin: "+7.25:1"
|
|
156
156
|
hue: "315°"
|
|
157
157
|
saturation: "7%"
|
|
158
158
|
lightness: "93%"
|
|
@@ -163,12 +163,12 @@ purple_shades:
|
|
|
163
163
|
rgb: "217, 185, 209"
|
|
164
164
|
hsv: "315° / 15% / 85%"
|
|
165
165
|
text_color: "Black"
|
|
166
|
-
text_color_hex: "#
|
|
167
|
-
contrast_ratio: "
|
|
166
|
+
text_color_hex: "#1C0D19"
|
|
167
|
+
contrast_ratio: "10.54:1"
|
|
168
168
|
wcag_2_2_aa: true
|
|
169
|
-
wcag_2_2_aa_margin: "+
|
|
169
|
+
wcag_2_2_aa_margin: "+6.04:1"
|
|
170
170
|
wcag_2_2_aaa: true
|
|
171
|
-
wcag_2_2_aaa_margin: "+
|
|
171
|
+
wcag_2_2_aaa_margin: "+3.54:1"
|
|
172
172
|
hue: "315°"
|
|
173
173
|
saturation: "15%"
|
|
174
174
|
lightness: "85%"
|
|
@@ -179,12 +179,12 @@ purple_shades:
|
|
|
179
179
|
rgb: "199, 149, 186"
|
|
180
180
|
hsv: "316° / 25% / 78%"
|
|
181
181
|
text_color: "Black"
|
|
182
|
-
text_color_hex: "#
|
|
183
|
-
contrast_ratio: "
|
|
182
|
+
text_color_hex: "#1C0D19"
|
|
183
|
+
contrast_ratio: "7.53:1"
|
|
184
184
|
wcag_2_2_aa: true
|
|
185
|
-
wcag_2_2_aa_margin: "+3.
|
|
185
|
+
wcag_2_2_aa_margin: "+3.03:1"
|
|
186
186
|
wcag_2_2_aaa: true
|
|
187
|
-
wcag_2_2_aaa_margin: "+
|
|
187
|
+
wcag_2_2_aaa_margin: "+0.53:1"
|
|
188
188
|
hue: "316°"
|
|
189
189
|
saturation: "25%"
|
|
190
190
|
lightness: "78%"
|
|
@@ -195,12 +195,12 @@ purple_shades:
|
|
|
195
195
|
rgb: "180, 114, 163"
|
|
196
196
|
hsv: "315° / 37% / 71%"
|
|
197
197
|
text_color: "Black"
|
|
198
|
-
text_color_hex: "#
|
|
199
|
-
contrast_ratio: "5.
|
|
198
|
+
text_color_hex: "#1C0D19"
|
|
199
|
+
contrast_ratio: "5.24:1"
|
|
200
200
|
wcag_2_2_aa: true
|
|
201
|
-
wcag_2_2_aa_margin: "+
|
|
201
|
+
wcag_2_2_aa_margin: "+0.74:1"
|
|
202
202
|
wcag_2_2_aaa: false
|
|
203
|
-
wcag_2_2_aaa_margin: "-1.
|
|
203
|
+
wcag_2_2_aaa_margin: "-1.76:1"
|
|
204
204
|
hue: "315°"
|
|
205
205
|
saturation: "37%"
|
|
206
206
|
lightness: "71%"
|
|
@@ -308,12 +308,12 @@ orange_shades:
|
|
|
308
308
|
rgb: "253, 246, 233"
|
|
309
309
|
hsv: "39° / 8% / 99%"
|
|
310
310
|
text_color: "Black"
|
|
311
|
-
text_color_hex: "#
|
|
312
|
-
contrast_ratio: "
|
|
311
|
+
text_color_hex: "#1C0D19"
|
|
312
|
+
contrast_ratio: "17.43:1"
|
|
313
313
|
wcag_2_2_aa: true
|
|
314
|
-
wcag_2_2_aa_margin: "+
|
|
314
|
+
wcag_2_2_aa_margin: "+12.93:1"
|
|
315
315
|
wcag_2_2_aaa: true
|
|
316
|
-
wcag_2_2_aaa_margin: "+
|
|
316
|
+
wcag_2_2_aaa_margin: "+10.43:1"
|
|
317
317
|
hue: "39°"
|
|
318
318
|
saturation: "8%"
|
|
319
319
|
lightness: "99%"
|
|
@@ -324,12 +324,12 @@ orange_shades:
|
|
|
324
324
|
rgb: "252, 237, 211"
|
|
325
325
|
hsv: "38° / 16% / 99%"
|
|
326
326
|
text_color: "Black"
|
|
327
|
-
text_color_hex: "#
|
|
328
|
-
contrast_ratio: "
|
|
327
|
+
text_color_hex: "#1C0D19"
|
|
328
|
+
contrast_ratio: "16.23:1"
|
|
329
329
|
wcag_2_2_aa: true
|
|
330
|
-
wcag_2_2_aa_margin: "+
|
|
330
|
+
wcag_2_2_aa_margin: "+11.73:1"
|
|
331
331
|
wcag_2_2_aaa: true
|
|
332
|
-
wcag_2_2_aaa_margin: "+
|
|
332
|
+
wcag_2_2_aaa_margin: "+9.23:1"
|
|
333
333
|
hue: "38°"
|
|
334
334
|
saturation: "16%"
|
|
335
335
|
lightness: "99%"
|
|
@@ -340,12 +340,12 @@ orange_shades:
|
|
|
340
340
|
rgb: "249, 220, 167"
|
|
341
341
|
hsv: "39° / 33% / 98%"
|
|
342
342
|
text_color: "Black"
|
|
343
|
-
text_color_hex: "#
|
|
344
|
-
contrast_ratio: "
|
|
343
|
+
text_color_hex: "#1C0D19"
|
|
344
|
+
contrast_ratio: "14.12:1"
|
|
345
345
|
wcag_2_2_aa: true
|
|
346
|
-
wcag_2_2_aa_margin: "+
|
|
346
|
+
wcag_2_2_aa_margin: "+9.62:1"
|
|
347
347
|
wcag_2_2_aaa: true
|
|
348
|
-
wcag_2_2_aaa_margin: "+
|
|
348
|
+
wcag_2_2_aaa_margin: "+7.12:1"
|
|
349
349
|
hue: "39°"
|
|
350
350
|
saturation: "33%"
|
|
351
351
|
lightness: "98%"
|
|
@@ -356,12 +356,12 @@ orange_shades:
|
|
|
356
356
|
rgb: "245, 202, 124"
|
|
357
357
|
hsv: "39° / 49% / 96%"
|
|
358
358
|
text_color: "Black"
|
|
359
|
-
text_color_hex: "#
|
|
360
|
-
contrast_ratio: "
|
|
359
|
+
text_color_hex: "#1C0D19"
|
|
360
|
+
contrast_ratio: "12.15:1"
|
|
361
361
|
wcag_2_2_aa: true
|
|
362
|
-
wcag_2_2_aa_margin: "+
|
|
362
|
+
wcag_2_2_aa_margin: "+7.65:1"
|
|
363
363
|
wcag_2_2_aaa: true
|
|
364
|
-
wcag_2_2_aaa_margin: "+
|
|
364
|
+
wcag_2_2_aaa_margin: "+5.15:1"
|
|
365
365
|
hue: "39°"
|
|
366
366
|
saturation: "49%"
|
|
367
367
|
lightness: "96%"
|
|
@@ -372,12 +372,12 @@ orange_shades:
|
|
|
372
372
|
rgb: "242, 185, 80"
|
|
373
373
|
hsv: "39° / 67% / 95%"
|
|
374
374
|
text_color: "Black"
|
|
375
|
-
text_color_hex: "#
|
|
376
|
-
contrast_ratio: "
|
|
375
|
+
text_color_hex: "#1C0D19"
|
|
376
|
+
contrast_ratio: "10.55:1"
|
|
377
377
|
wcag_2_2_aa: true
|
|
378
|
-
wcag_2_2_aa_margin: "+
|
|
378
|
+
wcag_2_2_aa_margin: "+6.05:1"
|
|
379
379
|
wcag_2_2_aaa: true
|
|
380
|
-
wcag_2_2_aaa_margin: "+
|
|
380
|
+
wcag_2_2_aaa_margin: "+3.55:1"
|
|
381
381
|
hue: "39°"
|
|
382
382
|
saturation: "67%"
|
|
383
383
|
lightness: "95%"
|
|
@@ -388,12 +388,12 @@ orange_shades:
|
|
|
388
388
|
rgb: "239, 167, 36"
|
|
389
389
|
hsv: "39° / 85% / 94%"
|
|
390
390
|
text_color: "Black"
|
|
391
|
-
text_color_hex: "#
|
|
392
|
-
contrast_ratio: "
|
|
391
|
+
text_color_hex: "#1C0D19"
|
|
392
|
+
contrast_ratio: "9.12:1"
|
|
393
393
|
wcag_2_2_aa: true
|
|
394
|
-
wcag_2_2_aa_margin: "+
|
|
394
|
+
wcag_2_2_aa_margin: "+4.62:1"
|
|
395
395
|
wcag_2_2_aaa: true
|
|
396
|
-
wcag_2_2_aaa_margin: "+
|
|
396
|
+
wcag_2_2_aaa_margin: "+2.12:1"
|
|
397
397
|
hue: "39°"
|
|
398
398
|
saturation: "85%"
|
|
399
399
|
lightness: "94%"
|
|
@@ -404,12 +404,12 @@ orange_shades:
|
|
|
404
404
|
rgb: "209, 140, 15"
|
|
405
405
|
hsv: "39° / 93% / 82%"
|
|
406
406
|
text_color: "Black"
|
|
407
|
-
text_color_hex: "#
|
|
408
|
-
contrast_ratio: "
|
|
407
|
+
text_color_hex: "#1C0D19"
|
|
408
|
+
contrast_ratio: "6.66:1"
|
|
409
409
|
wcag_2_2_aa: true
|
|
410
|
-
wcag_2_2_aa_margin: "+2.
|
|
411
|
-
wcag_2_2_aaa:
|
|
412
|
-
wcag_2_2_aaa_margin: "
|
|
410
|
+
wcag_2_2_aa_margin: "+2.16:1"
|
|
411
|
+
wcag_2_2_aaa: false
|
|
412
|
+
wcag_2_2_aaa_margin: "-0.34:1"
|
|
413
413
|
hue: "39°"
|
|
414
414
|
saturation: "93%"
|
|
415
415
|
lightness: "82%"
|
|
@@ -485,12 +485,12 @@ blue_shades:
|
|
|
485
485
|
rgb: "233, 233, 241"
|
|
486
486
|
hsv: "240° / 3% / 95%"
|
|
487
487
|
text_color: "Black"
|
|
488
|
-
text_color_hex: "#
|
|
489
|
-
contrast_ratio: "
|
|
488
|
+
text_color_hex: "#1C0D19"
|
|
489
|
+
contrast_ratio: "15.51:1"
|
|
490
490
|
wcag_2_2_aa: true
|
|
491
|
-
wcag_2_2_aa_margin: "+
|
|
491
|
+
wcag_2_2_aa_margin: "+11.01:1"
|
|
492
492
|
wcag_2_2_aaa: true
|
|
493
|
-
wcag_2_2_aaa_margin: "+
|
|
493
|
+
wcag_2_2_aaa_margin: "+8.51:1"
|
|
494
494
|
hue: "240°"
|
|
495
495
|
saturation: "3%"
|
|
496
496
|
lightness: "95%"
|
|
@@ -501,12 +501,12 @@ blue_shades:
|
|
|
501
501
|
rgb: "212, 211, 228"
|
|
502
502
|
hsv: "244° / 7% / 89%"
|
|
503
503
|
text_color: "Black"
|
|
504
|
-
text_color_hex: "#
|
|
505
|
-
contrast_ratio: "
|
|
504
|
+
text_color_hex: "#1C0D19"
|
|
505
|
+
contrast_ratio: "12.70:1"
|
|
506
506
|
wcag_2_2_aa: true
|
|
507
|
-
wcag_2_2_aa_margin: "+
|
|
507
|
+
wcag_2_2_aa_margin: "+8.20:1"
|
|
508
508
|
wcag_2_2_aaa: true
|
|
509
|
-
wcag_2_2_aaa_margin: "+
|
|
509
|
+
wcag_2_2_aaa_margin: "+5.70:1"
|
|
510
510
|
hue: "244°"
|
|
511
511
|
saturation: "7%"
|
|
512
512
|
lightness: "89%"
|
|
@@ -517,12 +517,12 @@ blue_shades:
|
|
|
517
517
|
rgb: "168, 168, 201"
|
|
518
518
|
hsv: "240° / 16% / 79%"
|
|
519
519
|
text_color: "Black"
|
|
520
|
-
text_color_hex: "#
|
|
521
|
-
contrast_ratio: "
|
|
520
|
+
text_color_hex: "#1C0D19"
|
|
521
|
+
contrast_ratio: "8.13:1"
|
|
522
522
|
wcag_2_2_aa: true
|
|
523
|
-
wcag_2_2_aa_margin: "+
|
|
523
|
+
wcag_2_2_aa_margin: "+3.63:1"
|
|
524
524
|
wcag_2_2_aaa: true
|
|
525
|
-
wcag_2_2_aaa_margin: "+
|
|
525
|
+
wcag_2_2_aaa_margin: "+1.13:1"
|
|
526
526
|
hue: "240°"
|
|
527
527
|
saturation: "16%"
|
|
528
528
|
lightness: "79%"
|
|
@@ -533,12 +533,12 @@ blue_shades:
|
|
|
533
533
|
rgb: "125, 124, 173"
|
|
534
534
|
hsv: "241° / 28% / 68%"
|
|
535
535
|
text_color: "Black"
|
|
536
|
-
text_color_hex: "#
|
|
537
|
-
contrast_ratio: "
|
|
536
|
+
text_color_hex: "#1C0D19"
|
|
537
|
+
contrast_ratio: "4.78:1"
|
|
538
538
|
wcag_2_2_aa: true
|
|
539
|
-
wcag_2_2_aa_margin: "+0.
|
|
539
|
+
wcag_2_2_aa_margin: "+0.28:1"
|
|
540
540
|
wcag_2_2_aaa: false
|
|
541
|
-
wcag_2_2_aaa_margin: "-
|
|
541
|
+
wcag_2_2_aaa_margin: "-2.22:1"
|
|
542
542
|
hue: "241°"
|
|
543
543
|
saturation: "28%"
|
|
544
544
|
lightness: "68%"
|
|
@@ -662,12 +662,12 @@ green_shades:
|
|
|
662
662
|
rgb: "245, 250, 234"
|
|
663
663
|
hsv: "79° / 6% / 98%"
|
|
664
664
|
text_color: "Black"
|
|
665
|
-
text_color_hex: "#
|
|
666
|
-
contrast_ratio: "
|
|
665
|
+
text_color_hex: "#1C0D19"
|
|
666
|
+
contrast_ratio: "17.61:1"
|
|
667
667
|
wcag_2_2_aa: true
|
|
668
|
-
wcag_2_2_aa_margin: "+
|
|
668
|
+
wcag_2_2_aa_margin: "+13.11:1"
|
|
669
669
|
wcag_2_2_aaa: true
|
|
670
|
-
wcag_2_2_aaa_margin: "+
|
|
670
|
+
wcag_2_2_aaa_margin: "+10.61:1"
|
|
671
671
|
hue: "79°"
|
|
672
672
|
saturation: "6%"
|
|
673
673
|
lightness: "98%"
|
|
@@ -678,12 +678,12 @@ green_shades:
|
|
|
678
678
|
rgb: "235, 245, 212"
|
|
679
679
|
hsv: "78° / 13% / 96%"
|
|
680
680
|
text_color: "Black"
|
|
681
|
-
text_color_hex: "#
|
|
682
|
-
contrast_ratio: "
|
|
681
|
+
text_color_hex: "#1C0D19"
|
|
682
|
+
contrast_ratio: "16.54:1"
|
|
683
683
|
wcag_2_2_aa: true
|
|
684
|
-
wcag_2_2_aa_margin: "+
|
|
684
|
+
wcag_2_2_aa_margin: "+12.04:1"
|
|
685
685
|
wcag_2_2_aaa: true
|
|
686
|
-
wcag_2_2_aaa_margin: "+
|
|
686
|
+
wcag_2_2_aaa_margin: "+9.54:1"
|
|
687
687
|
hue: "78°"
|
|
688
688
|
saturation: "13%"
|
|
689
689
|
lightness: "96%"
|
|
@@ -694,12 +694,12 @@ green_shades:
|
|
|
694
694
|
rgb: "215, 235, 170"
|
|
695
695
|
hsv: "78° / 28% / 92%"
|
|
696
696
|
text_color: "Black"
|
|
697
|
-
text_color_hex: "#
|
|
698
|
-
contrast_ratio: "
|
|
697
|
+
text_color_hex: "#1C0D19"
|
|
698
|
+
contrast_ratio: "14.59:1"
|
|
699
699
|
wcag_2_2_aa: true
|
|
700
|
-
wcag_2_2_aa_margin: "+
|
|
700
|
+
wcag_2_2_aa_margin: "+10.09:1"
|
|
701
701
|
wcag_2_2_aaa: true
|
|
702
|
-
wcag_2_2_aaa_margin: "+
|
|
702
|
+
wcag_2_2_aaa_margin: "+7.59:1"
|
|
703
703
|
hue: "78°"
|
|
704
704
|
saturation: "28%"
|
|
705
705
|
lightness: "92%"
|
|
@@ -710,12 +710,12 @@ green_shades:
|
|
|
710
710
|
rgb: "196, 225, 127"
|
|
711
711
|
hsv: "78° / 44% / 88%"
|
|
712
712
|
text_color: "Black"
|
|
713
|
-
text_color_hex: "#
|
|
714
|
-
contrast_ratio: "
|
|
713
|
+
text_color_hex: "#1C0D19"
|
|
714
|
+
contrast_ratio: "12.87:1"
|
|
715
715
|
wcag_2_2_aa: true
|
|
716
|
-
wcag_2_2_aa_margin: "+
|
|
716
|
+
wcag_2_2_aa_margin: "+8.37:1"
|
|
717
717
|
wcag_2_2_aaa: true
|
|
718
|
-
wcag_2_2_aaa_margin: "+
|
|
718
|
+
wcag_2_2_aaa_margin: "+5.87:1"
|
|
719
719
|
hue: "78°"
|
|
720
720
|
saturation: "44%"
|
|
721
721
|
lightness: "88%"
|
|
@@ -726,12 +726,12 @@ green_shades:
|
|
|
726
726
|
rgb: "176, 215, 85"
|
|
727
727
|
hsv: "78° / 60% / 84%"
|
|
728
728
|
text_color: "Black"
|
|
729
|
-
text_color_hex: "#
|
|
730
|
-
contrast_ratio: "
|
|
729
|
+
text_color_hex: "#1C0D19"
|
|
730
|
+
contrast_ratio: "11.33:1"
|
|
731
731
|
wcag_2_2_aa: true
|
|
732
|
-
wcag_2_2_aa_margin: "+
|
|
732
|
+
wcag_2_2_aa_margin: "+6.83:1"
|
|
733
733
|
wcag_2_2_aaa: true
|
|
734
|
-
wcag_2_2_aaa_margin: "+
|
|
734
|
+
wcag_2_2_aaa_margin: "+4.33:1"
|
|
735
735
|
hue: "78°"
|
|
736
736
|
saturation: "60%"
|
|
737
737
|
lightness: "84%"
|
|
@@ -742,12 +742,12 @@ green_shades:
|
|
|
742
742
|
rgb: "156, 205, 42"
|
|
743
743
|
hsv: "78° / 80% / 80%"
|
|
744
744
|
text_color: "Black"
|
|
745
|
-
text_color_hex: "#
|
|
746
|
-
contrast_ratio: "
|
|
745
|
+
text_color_hex: "#1C0D19"
|
|
746
|
+
contrast_ratio: "9.97:1"
|
|
747
747
|
wcag_2_2_aa: true
|
|
748
|
-
wcag_2_2_aa_margin: "+
|
|
748
|
+
wcag_2_2_aa_margin: "+5.47:1"
|
|
749
749
|
wcag_2_2_aaa: true
|
|
750
|
-
wcag_2_2_aaa_margin: "+
|
|
750
|
+
wcag_2_2_aaa_margin: "+2.97:1"
|
|
751
751
|
hue: "78°"
|
|
752
752
|
saturation: "80%"
|
|
753
753
|
lightness: "80%"
|
|
@@ -758,12 +758,12 @@ green_shades:
|
|
|
758
758
|
rgb: "128, 168, 34"
|
|
759
759
|
hsv: "78° / 80% / 66%"
|
|
760
760
|
text_color: "Black"
|
|
761
|
-
text_color_hex: "#
|
|
762
|
-
contrast_ratio: "
|
|
761
|
+
text_color_hex: "#1C0D19"
|
|
762
|
+
contrast_ratio: "6.73:1"
|
|
763
763
|
wcag_2_2_aa: true
|
|
764
|
-
wcag_2_2_aa_margin: "+
|
|
765
|
-
wcag_2_2_aaa:
|
|
766
|
-
wcag_2_2_aaa_margin: "
|
|
764
|
+
wcag_2_2_aa_margin: "+2.23:1"
|
|
765
|
+
wcag_2_2_aaa: false
|
|
766
|
+
wcag_2_2_aaa_margin: "-0.27:1"
|
|
767
767
|
hue: "78°"
|
|
768
768
|
saturation: "80%"
|
|
769
769
|
lightness: "66%"
|
|
@@ -774,12 +774,12 @@ green_shades:
|
|
|
774
774
|
rgb: "109, 144, 29"
|
|
775
775
|
hsv: "78° / 80% / 56%"
|
|
776
776
|
text_color: "Black"
|
|
777
|
-
text_color_hex: "#
|
|
778
|
-
contrast_ratio: "5.
|
|
777
|
+
text_color_hex: "#1C0D19"
|
|
778
|
+
contrast_ratio: "5.05:1"
|
|
779
779
|
wcag_2_2_aa: true
|
|
780
|
-
wcag_2_2_aa_margin: "+
|
|
780
|
+
wcag_2_2_aa_margin: "+0.55:1"
|
|
781
781
|
wcag_2_2_aaa: false
|
|
782
|
-
wcag_2_2_aaa_margin: "-1.
|
|
782
|
+
wcag_2_2_aaa_margin: "-1.95:1"
|
|
783
783
|
hue: "78°"
|
|
784
784
|
saturation: "80%"
|
|
785
785
|
lightness: "56%"
|
|
@@ -868,12 +868,12 @@ palette:
|
|
|
868
868
|
rgb: "239, 167, 36"
|
|
869
869
|
hsv: "39° / 85% / 94%"
|
|
870
870
|
text_color: "Black"
|
|
871
|
-
text_color_hex: "#
|
|
872
|
-
contrast_ratio: "
|
|
871
|
+
text_color_hex: "#1C0D19"
|
|
872
|
+
contrast_ratio: "9.12:1"
|
|
873
873
|
wcag_2_2_aa: true
|
|
874
|
-
wcag_2_2_aa_margin: "+
|
|
874
|
+
wcag_2_2_aa_margin: "+4.62:1"
|
|
875
875
|
wcag_2_2_aaa: true
|
|
876
|
-
wcag_2_2_aaa_margin: "+
|
|
876
|
+
wcag_2_2_aaa_margin: "+2.12:1"
|
|
877
877
|
hue: "39°"
|
|
878
878
|
saturation: "85%"
|
|
879
879
|
lightness: "94%"
|
|
@@ -926,12 +926,12 @@ palette:
|
|
|
926
926
|
rgb: "156, 205, 42"
|
|
927
927
|
hsv: "78° / 80% / 80%"
|
|
928
928
|
text_color: "Black"
|
|
929
|
-
text_color_hex: "#
|
|
930
|
-
contrast_ratio: "
|
|
929
|
+
text_color_hex: "#1C0D19"
|
|
930
|
+
contrast_ratio: "9.97:1"
|
|
931
931
|
wcag_2_2_aa: true
|
|
932
|
-
wcag_2_2_aa_margin: "+
|
|
932
|
+
wcag_2_2_aa_margin: "+5.47:1"
|
|
933
933
|
wcag_2_2_aaa: true
|
|
934
|
-
wcag_2_2_aaa_margin: "+
|
|
934
|
+
wcag_2_2_aaa_margin: "+2.97:1"
|
|
935
935
|
hue: "78°"
|
|
936
936
|
saturation: "80%"
|
|
937
937
|
lightness: "80%"
|
|
@@ -1038,5 +1038,5 @@ base_colors:
|
|
|
1038
1038
|
shade_name: "centos-green-500"
|
|
1039
1039
|
light_bg_contrast: "1.88:1"
|
|
1040
1040
|
light_bg_status: false
|
|
1041
|
-
dark_bg_contrast: "
|
|
1041
|
+
dark_bg_contrast: "9.97:1"
|
|
1042
1042
|
dark_bg_status: true
|
|
@@ -41,10 +41,12 @@ properties:
|
|
|
41
41
|
`/privacy/`, `#terms`).
|
|
42
42
|
color:
|
|
43
43
|
type: string
|
|
44
|
+
default: light
|
|
44
45
|
description: >-
|
|
45
|
-
The Bootstrap link color scheme (e.g., `light`, `primary`).
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
The Bootstrap link color scheme (e.g., `light`, `primary`).
|
|
47
|
+
Substituted into `class`'s own default (see `class` below).
|
|
48
|
+
Has no effect when `class` is also set, because an explicit
|
|
49
|
+
`class` overrides the default entirely.
|
|
48
50
|
icon:
|
|
49
51
|
type: string
|
|
50
52
|
description: >-
|
|
@@ -65,9 +67,14 @@ properties:
|
|
|
65
67
|
(e.g., `menuitem`).
|
|
66
68
|
class:
|
|
67
69
|
type: string
|
|
70
|
+
default: "link link-{color} link-offset-3 link-offset-3-hover link-underline-{color} link-underline-opacity-0 link-underline-opacity-100-hover border-start ms-2 ps-2"
|
|
68
71
|
description: >-
|
|
69
72
|
Custom CSS classes applied to the anchor element. When set,
|
|
70
|
-
overrides the default legal link styling entirely
|
|
73
|
+
overrides the default legal link styling entirely, including
|
|
74
|
+
`color`. When unset, the template substitutes `color` (or
|
|
75
|
+
this property's own default color, if `color` is also
|
|
76
|
+
unset) into this schema's own documented default (see
|
|
77
|
+
`default` above).
|
|
71
78
|
required:
|
|
72
79
|
- name
|
|
73
80
|
additionalProperties: false
|
data/_data/base/link_schema.yml
CHANGED
|
@@ -49,13 +49,22 @@ properties:
|
|
|
49
49
|
- _blank
|
|
50
50
|
class:
|
|
51
51
|
type: string
|
|
52
|
-
default: ""
|
|
52
|
+
default: "link link-{color} link-offset-3 link-offset-3-hover link-underline-{color} link-underline-opacity-0 link-underline-opacity-100-hover"
|
|
53
53
|
description: >-
|
|
54
54
|
One or more CSS classes to apply to the link element. Use this
|
|
55
55
|
to override default link styling and apply component styles like
|
|
56
|
-
Bootstrap buttons (e.g., `btn btn-primary btn-lg`). When not set, the
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
Bootstrap buttons (e.g., `btn btn-primary btn-lg`). When not set, the
|
|
57
|
+
template substitutes `color` into this schema's own documented
|
|
58
|
+
default (see `default` above) — a baseline specific to this
|
|
59
|
+
component's color-driven presentation, independent of
|
|
60
|
+
`jekyll-link-decorator`'s site-wide `default_link_classes` (which
|
|
61
|
+
only applies to plain links the decorator's post-processing pass
|
|
62
|
+
can reach; several `color`-driven call sites — `bits`, `card`,
|
|
63
|
+
`shortcut` — render via the layout, which the decorator
|
|
64
|
+
structurally never processes). Override this schema's default via
|
|
65
|
+
a site's own `_data/base/link_schema.yml` to change color-mode
|
|
66
|
+
styling site-wide, or pass `class` on an individual `{% include %}`
|
|
67
|
+
call to override just that one link.
|
|
59
68
|
role:
|
|
60
69
|
type: string
|
|
61
70
|
default: ""
|
|
@@ -77,17 +86,15 @@ properties:
|
|
|
77
86
|
type: string
|
|
78
87
|
default: primary
|
|
79
88
|
description: >-
|
|
80
|
-
The visual color of the link text
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
|
|
89
|
-
- light
|
|
90
|
-
- dark
|
|
89
|
+
The visual color of the link text and underline, substituted into
|
|
90
|
+
the `class` property's default (see `class` above) as
|
|
91
|
+
`link-{color}` and `link-underline-{color}`. Accepts either one of
|
|
92
|
+
Bootstrap's eight semantic names (`primary`, `secondary`,
|
|
93
|
+
`success`, `info`, `warning`, `danger`, `light`, `dark`) or a
|
|
94
|
+
CentOS-generated color-shade name from the color component (e.g.,
|
|
95
|
+
`centos-purple`, `centos-orange-700`) — see
|
|
96
|
+
[CSS utility classes reference](/components/color/#css-utility-classes-reference).
|
|
97
|
+
Only takes effect when `class` is not also set.
|
|
91
98
|
icon:
|
|
92
99
|
type: string
|
|
93
100
|
default: ""
|
|
@@ -16,7 +16,16 @@ Optional Inputs:
|
|
|
16
16
|
- class: Card container CSS classes
|
|
17
17
|
- color: Color scheme for styling (default: "primary")
|
|
18
18
|
- image, icon, screenshot: Visual elements
|
|
19
|
-
- name, description: Text content
|
|
19
|
+
- name, description: Text content, run through Liquid's `markdownify` filter
|
|
20
|
+
so inline Markdown (e.g. `` `code` `` spans) renders as HTML. The
|
|
21
|
+
paragraph wrapper kramdown adds is stripped, since each already renders
|
|
22
|
+
inside its own `<p>`.
|
|
23
|
+
- name_link: URL to wrap `name` in a link, rendered via
|
|
24
|
+
base/link.html.liquid. Empty by default (name renders as plain text).
|
|
25
|
+
- name_link_class: CSS classes for the name_link anchor (e.g. "link-dark").
|
|
26
|
+
Ignored when name_link is empty; when left empty, falls back to
|
|
27
|
+
base/link.html.liquid's own color-driven default styling, driven by this
|
|
28
|
+
card's own `color` parameter (not a hardcoded "primary").
|
|
20
29
|
- actions: Array of action buttons [{name, link, icon}]
|
|
21
30
|
- All image/icon/name/description have customizable CSS classes
|
|
22
31
|
|
|
@@ -37,6 +46,8 @@ Data Source:
|
|
|
37
46
|
{%- assign card_icon_class = include.icon_class | default: with_card_schema.icon_class.default %}
|
|
38
47
|
{%- assign card_name = include.name | default: with_card_schema.name.default %}
|
|
39
48
|
{%- assign card_name_class = include.name_class | default: with_card_schema.name_class.default %}
|
|
49
|
+
{%- assign card_name_link = include.name_link | default: with_card_schema.name_link.default %}
|
|
50
|
+
{%- assign card_name_link_class = include.name_link_class | default: with_card_schema.name_link_class.default %}
|
|
40
51
|
{%- assign card_screenshot = include.screenshot | default: with_card_schema.screenshot.default %}
|
|
41
52
|
{%- assign card_screenshot_class = include.screenshot_class | default: with_card_schema.screenshot_class.default %}
|
|
42
53
|
{%- assign card_screenshot_style = include.screenshot_style | default: with_card_schema.screenshot_style.default %}
|
|
@@ -70,15 +81,26 @@ Data Source:
|
|
|
70
81
|
{% endif %}
|
|
71
82
|
{%- endcapture %}
|
|
72
83
|
|
|
84
|
+
{%- comment %} Liquid 4.0.4 (this project's pinned version) has no remove_last/replace_last
|
|
85
|
+
filter, so the trailing "</p>" kramdown adds is stripped via split/join
|
|
86
|
+
instead: splitting on "</p>" drops the trailing empty segment left by the
|
|
87
|
+
closing tag at the very end of the string, and joining the remaining parts
|
|
88
|
+
back with "</p>" reconstructs everything except that final occurrence. {% endcomment %}
|
|
89
|
+
{%- capture card_name_markdown -%}{{ card_name | markdownify }}{%- endcapture -%}
|
|
90
|
+
{%- assign card_name_html = card_name_markdown | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip -%}
|
|
91
|
+
|
|
92
|
+
{%- capture card_description_markdown -%}{{ card_description | markdownify }}{%- endcapture -%}
|
|
93
|
+
{%- assign card_description_html = card_description_markdown | strip | remove_first: "<p>" | split: "</p>" | join: "</p>" | strip -%}
|
|
94
|
+
|
|
73
95
|
{%- capture html_card_name -%}
|
|
74
96
|
{% if card_name != "" %}
|
|
75
|
-
<p class="{{ card_name_class }}">{{
|
|
97
|
+
<p class="{{ card_name_class }}">{% if card_name_link != "" %}{% include base/link.html.liquid name=card_name_html link=card_name_link class=card_name_link_class color=card_color %}{% else %}{{ card_name_html }}{% endif %}</p>
|
|
76
98
|
{% endif %}
|
|
77
99
|
{%- endcapture %}
|
|
78
100
|
|
|
79
101
|
{%- capture html_card_description -%}
|
|
80
102
|
{% if card_description != "" %}
|
|
81
|
-
<p class="{{ card_description_class }}">{{
|
|
103
|
+
<p class="{{ card_description_class }}">{{ card_description_html }}</p>
|
|
82
104
|
{% endif %}
|
|
83
105
|
{%- endcapture %}
|
|
84
106
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
<td class="text-nowrap"><i class="fas fa-circle fa-xl" style="color: {{ item.hex }}"></i><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 }}"><code>{{ item.hex }}</code> <span class="fa-regular fa-copy"></span></span></td>
|
|
28
28
|
<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 }}"><code>{{ item.rgb }}</code> <span class="fa-regular fa-copy"></span></span></td>
|
|
29
29
|
<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 }}"><code>{{ item.hsv }}</code> <span class="fa-regular fa-copy"></span></span></td>
|
|
30
|
-
<td><span class="badge {{ item.text_badge }}">{{ item.text_color }}</span></td>
|
|
30
|
+
<td class="text-nowrap">{% if item.text_color == "Black" %}<span class="badge {{ item.text_badge }}" data-bs-toggle="tooltip" data-bs-title="{{ item.text_color }} — near-black brand color, not literal black"><span aria-hidden="true">{{ item.text_color | slice: 0, 1 }}</span><span class="visually-hidden">{{ item.text_color }}</span></span>{% else %}<span class="badge {{ item.text_badge }}" data-bs-toggle="tooltip" data-bs-title="{{ item.text_color }}"><span aria-hidden="true">{{ item.text_color | slice: 0, 1 }}</span><span class="visually-hidden">{{ item.text_color }}</span></span>{% endif %} <span role="button" class="copy-btn" data-bs-toggle="tooltip" data-bs-title="Copy text color hex value" data-copy-value="{{ item.text_color_hex }}" aria-label="Copy text color hex value {{ item.text_color_hex }}"><code>{{ item.text_color_hex }}</code> <span class="fa-regular fa-copy"></span></span></td>
|
|
31
31
|
<td class="text-nowrap"><code>{{ item.contrast_ratio | remove: '`' }}</code> {% include base/link.html.liquid link=_webaim_link target="_blank" class="text-decoration-none" icon="fas fa-external-link-alt" data_bs_toggle="tooltip" data_bs_title="Verify with WebAIM" aria_label="Verify contrast ratio with WebAIM" %}</td>
|
|
32
32
|
<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>
|
|
33
33
|
<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>
|
|
@@ -50,9 +50,12 @@ Data Source Hierarchy (priority):
|
|
|
50
50
|
{%- assign copyright_author = with_copyright_data.author | default: with_copyright_schema.author.default %}
|
|
51
51
|
{%- assign copyright_legals = with_copyright_data.legals | default: with_copyright_schema.legals.default %}
|
|
52
52
|
|
|
53
|
+
{%- assign copyright_legal_schema = with_copyright_schema.legals.items.properties %}
|
|
54
|
+
|
|
53
55
|
{%- capture copyright_links -%}
|
|
54
56
|
{%- for item in copyright_legals -%}
|
|
55
|
-
{%- assign
|
|
57
|
+
{%- assign copyright_link_color = item.color | default: copyright_legal_schema.color.default %}
|
|
58
|
+
{%- assign copyright_link_class = item.class | default: copyright_legal_schema.class.default | replace: '{color}', copyright_link_color %}
|
|
56
59
|
{%- include base/link.html.liquid
|
|
57
60
|
class = copyright_link_class
|
|
58
61
|
name = item.name
|
|
@@ -43,10 +43,11 @@ Security & External Links:
|
|
|
43
43
|
{%- if page.with_link -%}
|
|
44
44
|
{%- capture html_link -%}
|
|
45
45
|
{%- comment %} === Data source selection === {% endcomment %}
|
|
46
|
+
{%- assign link_schema = site.data.base.link_schema.properties.with_link_data.properties %}
|
|
46
47
|
{%- assign link = include.link | default: nil %}
|
|
47
48
|
{%- assign name = include.name | default: nil %}
|
|
48
49
|
{%- assign target = include.target | default: nil %}
|
|
49
|
-
{%- assign color = include.color | default: "
|
|
50
|
+
{%- assign color = include.color | default: link_schema["color"].default %}
|
|
50
51
|
{%- assign role = include.role | default: nil %}
|
|
51
52
|
{%- assign icon = include.icon | default: nil %}
|
|
52
53
|
{%- assign icon_position = include.icon_position | default: "start" %}
|
|
@@ -89,7 +90,7 @@ Security & External Links:
|
|
|
89
90
|
{%- if class != nil -%}
|
|
90
91
|
{%- assign link_class = class %}
|
|
91
92
|
{%- else -%}
|
|
92
|
-
{%-
|
|
93
|
+
{%- assign link_class = link_schema["class"].default | replace: '{color}', color %}
|
|
93
94
|
{%- endif -%}
|
|
94
95
|
|
|
95
96
|
{%- comment %} --- Security attributes for external links --- {% endcomment %}
|
|
@@ -41,20 +41,7 @@ body {
|
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
//
|
|
45
|
-
// Backgrounds, Texts, and Gradients classes
|
|
46
|
-
// --------------------------------------------------------------------------------
|
|
47
|
-
@each $color, $value in $theme-colors {
|
|
48
|
-
// Create a background utility class for each color.
|
|
49
|
-
.bg-#{$color} {
|
|
50
|
-
background-color: $value;
|
|
51
|
-
}
|
|
52
|
-
// Create a text color utility class for each color.
|
|
53
|
-
.text-#{$color} {
|
|
54
|
-
color: $value;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
44
|
+
// Text gradient classes (no native Bootstrap equivalent)
|
|
58
45
|
@each $color, $value in $centos-text-gradients {
|
|
59
46
|
.text-gradient-#{$color} {
|
|
60
47
|
background-image: $value;
|
|
@@ -115,6 +102,10 @@ body {
|
|
|
115
102
|
background-position: bottom;
|
|
116
103
|
}
|
|
117
104
|
|
|
105
|
+
.bg-image-cover {
|
|
106
|
+
background-size: cover;
|
|
107
|
+
}
|
|
108
|
+
|
|
118
109
|
// --------------------------------------------------------------------------------
|
|
119
110
|
// Lists
|
|
120
111
|
// --------------------------------------------------------------------------------
|
|
@@ -170,11 +161,15 @@ $centos-alert-icons: (
|
|
|
170
161
|
// Markdown-based alerts with CSS-generated icons
|
|
171
162
|
// Only apply to alerts that are neither announcements nor breaking news
|
|
172
163
|
.alert:not(.announcement):not(.breakingnews) {
|
|
173
|
-
padding-left: $spacer * 3;
|
|
174
164
|
border-left-width: 0.5rem;
|
|
175
165
|
|
|
166
|
+
// Reserve icon space only for the semantic types that have an icon
|
|
167
|
+
// defined in $centos-alert-icons. Shade-extended alert-centos-* classes
|
|
168
|
+
// keep the default padding so they don't carry an empty icon gutter.
|
|
176
169
|
@each $color, $icon-url in $centos-alert-icons {
|
|
177
170
|
&.alert-#{$color} {
|
|
171
|
+
padding-left: $spacer * 3;
|
|
172
|
+
|
|
178
173
|
&::before {
|
|
179
174
|
content: "";
|
|
180
175
|
position: absolute;
|
data/_sass/base/_maps.scss
CHANGED
|
@@ -1,37 +1,38 @@
|
|
|
1
|
-
|
|
1
|
+
// Extend Bootstrap's text-emphasis/bg-subtle/border-subtle maps — consumed
|
|
2
|
+
// by .alert-*, .list-group-item-*, and the .bg-*-subtle/.text-*-emphasis/
|
|
3
|
+
// .border-*-subtle utilities via --bs-{color}-text-emphasis/-bg-subtle/
|
|
4
|
+
// -border-subtle custom properties — to cover every CentOS color and shade,
|
|
5
|
+
// not just Bootstrap's original 8 semantic names. Without this,
|
|
6
|
+
// .alert-centos-*/.list-group-item-* reference those custom properties but
|
|
7
|
+
// nothing ever defines them for CentOS colors, so the classes apply with no
|
|
8
|
+
// visible color at all (a `var()` pointing at an undefined custom property
|
|
9
|
+
// falls back to the property's initial value, e.g. a transparent
|
|
10
|
+
// background).
|
|
11
|
+
//
|
|
12
|
+
// Unlike $theme-colors-rgb (see base/theme-colors), Bootstrap defines these
|
|
13
|
+
// as literal 8-entry maps in bootstrap/_maps.scss rather than deriving them
|
|
14
|
+
// from $theme-colors via map-loop, so this doesn't need an import-order
|
|
15
|
+
// fix — base/maps already runs after bootstrap/maps defines the Bootstrap
|
|
16
|
+
// defaults and before bootstrap/bootstrap's _root.scss compiles them into
|
|
17
|
+
// :root custom properties, so extending them here is enough.
|
|
18
|
+
$bootstrap-semantic-colors: primary, secondary, success, danger, warning, info, light, dark;
|
|
2
19
|
|
|
3
|
-
|
|
4
|
-
|
|
20
|
+
@each $name, $value in $theme-colors {
|
|
21
|
+
@if not index($bootstrap-semantic-colors, $name) {
|
|
22
|
+
// Formulas match Bootstrap's own defaults for these maps exactly (see
|
|
23
|
+
// $primary-text-emphasis/-bg-subtle/-border-subtle in
|
|
24
|
+
// bootstrap/_variables.scss) so CentOS colors get the same tint/shade
|
|
25
|
+
// treatment Bootstrap's own semantic colors do.
|
|
26
|
+
$theme-colors-text: map-merge($theme-colors-text, ($name: shade-color($value, 60%)));
|
|
27
|
+
$theme-colors-bg-subtle: map-merge($theme-colors-bg-subtle, ($name: tint-color($value, 80%)));
|
|
28
|
+
$theme-colors-border-subtle: map-merge($theme-colors-border-subtle, ($name: tint-color($value, 60%)));
|
|
5
29
|
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
@each $shade in $centos-color-shades {
|
|
12
|
-
$shade-name: "#{$name}-#{$shade}";
|
|
13
|
-
$shade-color: null;
|
|
14
|
-
|
|
15
|
-
@if $shade < 500 {
|
|
16
|
-
// Light shades: use standard tint-color (adds white, works well)
|
|
17
|
-
$shade-color: tint-color($color, percentage(math.div(500 - $shade, 500)));
|
|
18
|
-
} @else if $shade > 500 {
|
|
19
|
-
// Special case: Green 700 needs 30% black mix (not 20%) for AA compliance.
|
|
20
|
-
// This ensures WHITE text contrast meets 4.5:1 threshold.
|
|
21
|
-
@if $name == "centos-green" and $shade == 700 {
|
|
22
|
-
$shade-color: shade-color($color, 30%);
|
|
23
|
-
} @else {
|
|
24
|
-
// NEW: Use saturation-normalized shade for all other dark shades
|
|
25
|
-
// This function increases saturation multiplier for grades 800-950
|
|
26
|
-
// Result: vivid dark colors that feel on-brand
|
|
27
|
-
$shade-color: saturated-shade($color, $shade);
|
|
28
|
-
}
|
|
29
|
-
} @else {
|
|
30
|
-
// Grade 500: use base color as-is
|
|
31
|
-
$shade-color: $color;
|
|
30
|
+
@if $enable-dark-mode {
|
|
31
|
+
// Matches $primary-text-emphasis-dark/-bg-subtle-dark/-border-subtle-dark.
|
|
32
|
+
$theme-colors-text-dark: map-merge($theme-colors-text-dark, ($name: tint-color($value, 40%)));
|
|
33
|
+
$theme-colors-bg-subtle-dark: map-merge($theme-colors-bg-subtle-dark, ($name: shade-color($value, 80%)));
|
|
34
|
+
$theme-colors-border-subtle-dark: map-merge($theme-colors-border-subtle-dark, ($name: shade-color($value, 40%)));
|
|
32
35
|
}
|
|
33
|
-
|
|
34
|
-
$theme-colors: map-merge($theme-colors, ($shade-name: $shade-color));
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
|
|
@@ -73,23 +74,14 @@ $centos-text-gradients: (
|
|
|
73
74
|
)
|
|
74
75
|
);
|
|
75
76
|
|
|
76
|
-
// Define custom utilities using the correct Bootstrap API.
|
|
77
|
-
//
|
|
77
|
+
// Define custom utilities using the correct Bootstrap API. These are genuine
|
|
78
|
+
// custom concepts Bootstrap has no equivalent for; `.bg-*`/`.text-*`/
|
|
79
|
+
// `.border-*`/`.text-bg-*`/`.link-underline-*` are now generated natively by
|
|
80
|
+
// Bootstrap's own utilities API for every CentOS color and shade (see
|
|
81
|
+
// base/theme-colors, imported before bootstrap/maps/utilities).
|
|
78
82
|
$utilities: map-merge(
|
|
79
83
|
$utilities,
|
|
80
84
|
(
|
|
81
|
-
"centos-text-bg-color": (
|
|
82
|
-
property: background-color,
|
|
83
|
-
class: text-bg,
|
|
84
|
-
values: $theme-colors,
|
|
85
|
-
state: "text-bg"
|
|
86
|
-
),
|
|
87
|
-
"centos-border-color": (
|
|
88
|
-
property: border-color,
|
|
89
|
-
class: border,
|
|
90
|
-
values: $theme-colors,
|
|
91
|
-
state: "border"
|
|
92
|
-
),
|
|
93
85
|
"centos-bg-gradient": (
|
|
94
86
|
property: background,
|
|
95
87
|
class: bg-gradient,
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
@use "sass:math";
|
|
2
|
+
|
|
3
|
+
// Merge the base colors and generated shades into `$theme-colors` here, in
|
|
4
|
+
// their own partial imported right after bootstrap/variables-dark (so
|
|
5
|
+
// $theme-colors already exists) but before bootstrap/maps/utilities (see
|
|
6
|
+
// src/CSS/stylesheet.min.scss), so those partials snapshot the FULL
|
|
7
|
+
// CentOS-merged color set when they compute
|
|
8
|
+
// $theme-colors-rgb/$utilities-colors/etc. Those snapshots are taken once,
|
|
9
|
+
// eagerly, at import time — Sass variables aren't reactive — so if this
|
|
10
|
+
// merge ran any later (e.g. from base/maps, which still runs after
|
|
11
|
+
// bootstrap/utilities for unrelated reasons), Bootstrap's native
|
|
12
|
+
// .bg-*/.text-*/.border-*/.text-bg-*/.link-underline-* utilities would only
|
|
13
|
+
// ever cover Bootstrap's original 8 semantic names.
|
|
14
|
+
$theme-colors: map-merge($theme-colors, $centos-base-colors);
|
|
15
|
+
|
|
16
|
+
// Generate all custom color shades and merge them into `$theme-colors`.
|
|
17
|
+
// Uses saturation-normalized shade generation to maintain brand saturation
|
|
18
|
+
// throughout the dark range (grades 800-950), creating visual consistency
|
|
19
|
+
// between web UI and wallpaper colors.
|
|
20
|
+
@each $name, $color in $centos-base-colors {
|
|
21
|
+
@each $shade in $centos-color-shades {
|
|
22
|
+
$shade-name: "#{$name}-#{$shade}";
|
|
23
|
+
$shade-color: null;
|
|
24
|
+
|
|
25
|
+
@if $shade < 500 {
|
|
26
|
+
// Light shades: use standard tint-color (adds white, works well)
|
|
27
|
+
$shade-color: tint-color($color, percentage(math.div(500 - $shade, 500)));
|
|
28
|
+
} @else if $shade > 500 {
|
|
29
|
+
// Special case: Green 700 needs 30% black mix (not 20%) for AA compliance.
|
|
30
|
+
// This ensures WHITE text contrast meets 4.5:1 threshold.
|
|
31
|
+
@if $name == "centos-green" and $shade == 700 {
|
|
32
|
+
$shade-color: shade-color($color, 30%);
|
|
33
|
+
} @else {
|
|
34
|
+
// NEW: Use saturation-normalized shade for all other dark shades
|
|
35
|
+
// This function increases saturation multiplier for grades 800-950
|
|
36
|
+
// Result: vivid dark colors that feel on-brand
|
|
37
|
+
$shade-color: saturated-shade($color, $shade);
|
|
38
|
+
}
|
|
39
|
+
} @else {
|
|
40
|
+
// Grade 500: use base color as-is
|
|
41
|
+
$shade-color: $color;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
$theme-colors: map-merge($theme-colors, ($shade-name: $shade-color));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -21,6 +21,14 @@
|
|
|
21
21
|
// This defines variables like $theme-colors and $utilities.
|
|
22
22
|
@import "bootstrap/variables";
|
|
23
23
|
@import "bootstrap/variables-dark";
|
|
24
|
+
|
|
25
|
+
// 3b. Merge CentOS colors/shades into $theme-colors now that Bootstrap has
|
|
26
|
+
// defined it, but before bootstrap/maps and bootstrap/utilities snapshot it,
|
|
27
|
+
// so Bootstrap's native .bg-*/.text-*/.border-*/.text-bg-*/.link-underline-*
|
|
28
|
+
// utilities cover every CentOS color and shade automatically instead of only
|
|
29
|
+
// Bootstrap's original 8 semantic names.
|
|
30
|
+
@import "base/theme-colors";
|
|
31
|
+
|
|
24
32
|
@import "bootstrap/maps";
|
|
25
33
|
@import "bootstrap/mixins";
|
|
26
34
|
@import "bootstrap/utilities";
|
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.99
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Alain Reguera Delgado
|
|
@@ -381,6 +381,7 @@ files:
|
|
|
381
381
|
- _sass/base/_download.scss
|
|
382
382
|
- _sass/base/_light-dark.scss
|
|
383
383
|
- _sass/base/_maps.scss
|
|
384
|
+
- _sass/base/_theme-colors.scss
|
|
384
385
|
- _sass/base/_variables.scss
|
|
385
386
|
- _sass/bootstrap/_accordion.scss
|
|
386
387
|
- _sass/bootstrap/_alert.scss
|