jekyll-theme-centos 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/_config.yml +196 -0
- data/_data/base/announcement_schema.yml +49 -0
- data/_data/base/artwork_schema.yml +46 -0
- data/_data/base/backtotop_schema.yml +59 -0
- data/_data/base/bits.yml +96 -0
- data/_data/base/bits_schema.yml +185 -0
- data/_data/base/breadcrumb_schema.yml +27 -0
- data/_data/base/breakingnews_schema.yml +67 -0
- data/_data/base/card_schema.yml +146 -0
- data/_data/base/color.yml +1042 -0
- data/_data/base/color_schema.yml +1036 -0
- data/_data/base/configuration_variables_schema.yml +42 -0
- data/_data/base/content.yml +2 -0
- data/_data/base/content_schema.yml +26 -0
- data/_data/base/copyright.yml +12 -0
- data/_data/base/copyright_schema.yml +74 -0
- data/_data/base/copyvalue_schema.yml +49 -0
- data/_data/base/datatable_schema.yml +57 -0
- data/_data/base/event_schema.yml +130 -0
- data/_data/base/fontawesome_schema.yml +62 -0
- data/_data/base/footer.yml +9 -0
- data/_data/base/footer_schema.yml +55 -0
- data/_data/base/head_schema.yml +19 -0
- data/_data/base/heading_anchor.yml +2 -0
- data/_data/base/heading_anchor_schema.yml +37 -0
- data/_data/base/highlight_schema.yml +98 -0
- data/_data/base/image_schema.yml +34 -0
- data/_data/base/languages.yml +186 -0
- data/_data/base/link_schema.yml +187 -0
- data/_data/base/locales_schema.yml +158 -0
- data/_data/base/navbar.yml +20 -0
- data/_data/base/navbar_schema.yml +129 -0
- data/_data/base/navindex_schema.yml +67 -0
- data/_data/base/ogp.yml +24 -0
- data/_data/base/ogp_schema.yml +192 -0
- data/_data/base/project.yml +37 -0
- data/_data/base/project_schema.yml +124 -0
- data/_data/base/script_schema.yml +41 -0
- data/_data/base/shortcut_schema.yml +74 -0
- data/_data/base/social.yml +26 -0
- data/_data/base/social_schema.yml +57 -0
- data/_data/base/sponsors.yml +41 -0
- data/_data/base/sponsors_schema.yml +73 -0
- data/_data/base/title_schema.yml +49 -0
- data/_data/base/toc_schema.yml +114 -0
- data/_data/download/cards.yml +309 -0
- data/_data/download/navbar.yml +11 -0
- data/_includes/base/announcement.html.liquid +65 -0
- data/_includes/base/artwork.html.liquid +63 -0
- data/_includes/base/backtotop.html.liquid +73 -0
- data/_includes/base/bits.html.liquid +152 -0
- data/_includes/base/breadcrumb.html.liquid +77 -0
- data/_includes/base/breakingnews.html.liquid +90 -0
- data/_includes/base/card.html.liquid +110 -0
- data/_includes/base/color-table.html.liquid +33 -0
- data/_includes/base/configuration_variables-nested.html.liquid +98 -0
- data/_includes/base/configuration_variables.html.liquid +98 -0
- data/_includes/base/content.html.liquid +7 -0
- data/_includes/base/copyright.html.liquid +70 -0
- data/_includes/base/copyvalue.html.liquid +82 -0
- data/_includes/base/datatable.html.liquid +83 -0
- data/_includes/base/event.html.liquid +105 -0
- data/_includes/base/fontawesome.html.liquid +91 -0
- data/_includes/base/footer.html.liquid +69 -0
- data/_includes/base/head.html.liquid +135 -0
- data/_includes/base/heading_anchor.html.liquid +67 -0
- data/_includes/base/highlight.html.liquid +84 -0
- data/_includes/base/image.html.liquid +42 -0
- data/_includes/base/link.html.liquid +129 -0
- data/_includes/base/locales.html.liquid +78 -0
- data/_includes/base/navbar.html.liquid +121 -0
- data/_includes/base/navindex.html.liquid +200 -0
- data/_includes/base/ogp.html.liquid +144 -0
- data/_includes/base/project.html.liquid +104 -0
- data/_includes/base/shortcut.html.liquid +77 -0
- data/_includes/base/social.html.liquid +76 -0
- data/_includes/base/sponsors-cards.html.liquid +69 -0
- data/_includes/base/sponsors-carousel.html.liquid +91 -0
- data/_includes/base/title.html.liquid +65 -0
- data/_includes/base/toc-generator.html.liquid +189 -0
- data/_includes/base/toc.html.liquid +95 -0
- data/_includes/download/cards-body-commands.html +7 -0
- data/_includes/download/cards-body-convert.html +10 -0
- data/_includes/download/cards-body-doc.html +9 -0
- data/_includes/download/cards-body-documentation.html +11 -0
- data/_includes/download/cards-body-eol.html +16 -0
- data/_includes/download/cards-body-mirrors.html +8 -0
- data/_includes/download/cards-body-screenshot.html +26 -0
- data/_includes/download/cards-body-screenshots.html +32 -0
- data/_includes/download/cards-body.html +8 -0
- data/_includes/download/cards-footer.html +3 -0
- data/_includes/download/cards-header-commands.html +8 -0
- data/_includes/download/cards-header-convert.html +8 -0
- data/_includes/download/cards-header-doc.html +8 -0
- data/_includes/download/cards-header-documentation.html +8 -0
- data/_includes/download/cards-header-eol.html +8 -0
- data/_includes/download/cards-header-mirrors.html +13 -0
- data/_includes/download/cards-header-screenshot.html +8 -0
- data/_includes/download/cards-header-screenshots.html +8 -0
- data/_includes/download/cards-header.html +13 -0
- data/_includes/download/cards.html +120 -0
- data/_layouts/base/default.html +68 -0
- data/_layouts/download/cards.html +7 -0
- data/_layouts/download/default.html +7 -0
- data/_layouts/people/default.html +68 -0
- data/_sass/base/_customization.scss +331 -0
- data/_sass/base/_light-dark.scss +10 -0
- data/_sass/base/_maps.scss +104 -0
- data/_sass/base/_variables.scss +232 -0
- data/_sass/bootstrap/_accordion.scss +153 -0
- data/_sass/bootstrap/_alert.scss +68 -0
- data/_sass/bootstrap/_badge.scss +38 -0
- data/_sass/bootstrap/_breadcrumb.scss +40 -0
- data/_sass/bootstrap/_button-group.scss +147 -0
- data/_sass/bootstrap/_buttons.scss +216 -0
- data/_sass/bootstrap/_card.scss +238 -0
- data/_sass/bootstrap/_carousel.scss +226 -0
- data/_sass/bootstrap/_close.scss +66 -0
- data/_sass/bootstrap/_containers.scss +41 -0
- data/_sass/bootstrap/_dropdown.scss +250 -0
- data/_sass/bootstrap/_forms.scss +9 -0
- data/_sass/bootstrap/_functions.scss +302 -0
- data/_sass/bootstrap/_grid.scss +39 -0
- data/_sass/bootstrap/_helpers.scss +12 -0
- data/_sass/bootstrap/_images.scss +42 -0
- data/_sass/bootstrap/_list-group.scss +199 -0
- data/_sass/bootstrap/_maps.scss +174 -0
- data/_sass/bootstrap/_mixins.scss +42 -0
- data/_sass/bootstrap/_modal.scss +240 -0
- data/_sass/bootstrap/_nav.scss +197 -0
- data/_sass/bootstrap/_navbar.scss +289 -0
- data/_sass/bootstrap/_offcanvas.scss +147 -0
- data/_sass/bootstrap/_pagination.scss +109 -0
- data/_sass/bootstrap/_placeholders.scss +51 -0
- data/_sass/bootstrap/_popover.scss +196 -0
- data/_sass/bootstrap/_progress.scss +68 -0
- data/_sass/bootstrap/_reboot.scss +617 -0
- data/_sass/bootstrap/_root.scss +187 -0
- data/_sass/bootstrap/_spinners.scss +86 -0
- data/_sass/bootstrap/_tables.scss +171 -0
- data/_sass/bootstrap/_toasts.scss +73 -0
- data/_sass/bootstrap/_tooltip.scss +119 -0
- data/_sass/bootstrap/_transitions.scss +27 -0
- data/_sass/bootstrap/_type.scss +106 -0
- data/_sass/bootstrap/_utilities.scss +806 -0
- data/_sass/bootstrap/_variables-dark.scss +102 -0
- data/_sass/bootstrap/_variables.scss +1753 -0
- data/_sass/bootstrap/bootstrap-grid.scss +62 -0
- data/_sass/bootstrap/bootstrap-reboot.scss +10 -0
- data/_sass/bootstrap/bootstrap-utilities.scss +19 -0
- data/_sass/bootstrap/bootstrap.scss +52 -0
- data/_sass/bootstrap/forms/_floating-labels.scss +97 -0
- data/_sass/bootstrap/forms/_form-check.scss +189 -0
- data/_sass/bootstrap/forms/_form-control.scss +214 -0
- data/_sass/bootstrap/forms/_form-range.scss +91 -0
- data/_sass/bootstrap/forms/_form-select.scss +80 -0
- data/_sass/bootstrap/forms/_form-text.scss +11 -0
- data/_sass/bootstrap/forms/_input-group.scss +132 -0
- data/_sass/bootstrap/forms/_labels.scss +36 -0
- data/_sass/bootstrap/forms/_validation.scss +12 -0
- data/_sass/bootstrap/helpers/_clearfix.scss +3 -0
- data/_sass/bootstrap/helpers/_color-bg.scss +7 -0
- data/_sass/bootstrap/helpers/_colored-links.scss +30 -0
- data/_sass/bootstrap/helpers/_focus-ring.scss +5 -0
- data/_sass/bootstrap/helpers/_icon-link.scss +25 -0
- data/_sass/bootstrap/helpers/_position.scss +36 -0
- data/_sass/bootstrap/helpers/_ratio.scss +26 -0
- data/_sass/bootstrap/helpers/_stacks.scss +15 -0
- data/_sass/bootstrap/helpers/_stretched-link.scss +15 -0
- data/_sass/bootstrap/helpers/_text-truncation.scss +7 -0
- data/_sass/bootstrap/helpers/_visually-hidden.scss +8 -0
- data/_sass/bootstrap/helpers/_vr.scss +8 -0
- data/_sass/bootstrap/mixins/_alert.scss +18 -0
- data/_sass/bootstrap/mixins/_backdrop.scss +14 -0
- data/_sass/bootstrap/mixins/_banner.scss +7 -0
- data/_sass/bootstrap/mixins/_border-radius.scss +78 -0
- data/_sass/bootstrap/mixins/_box-shadow.scss +24 -0
- data/_sass/bootstrap/mixins/_breakpoints.scss +127 -0
- data/_sass/bootstrap/mixins/_buttons.scss +70 -0
- data/_sass/bootstrap/mixins/_caret.scss +69 -0
- data/_sass/bootstrap/mixins/_clearfix.scss +9 -0
- data/_sass/bootstrap/mixins/_color-mode.scss +21 -0
- data/_sass/bootstrap/mixins/_color-scheme.scss +7 -0
- data/_sass/bootstrap/mixins/_container.scss +11 -0
- data/_sass/bootstrap/mixins/_deprecate.scss +10 -0
- data/_sass/bootstrap/mixins/_forms.scss +163 -0
- data/_sass/bootstrap/mixins/_gradients.scss +47 -0
- data/_sass/bootstrap/mixins/_grid.scss +151 -0
- data/_sass/bootstrap/mixins/_image.scss +16 -0
- data/_sass/bootstrap/mixins/_list-group.scss +26 -0
- data/_sass/bootstrap/mixins/_lists.scss +7 -0
- data/_sass/bootstrap/mixins/_pagination.scss +10 -0
- data/_sass/bootstrap/mixins/_reset-text.scss +17 -0
- data/_sass/bootstrap/mixins/_resize.scss +6 -0
- data/_sass/bootstrap/mixins/_table-variants.scss +24 -0
- data/_sass/bootstrap/mixins/_text-truncate.scss +8 -0
- data/_sass/bootstrap/mixins/_transition.scss +26 -0
- data/_sass/bootstrap/mixins/_utilities.scss +97 -0
- data/_sass/bootstrap/mixins/_visually-hidden.scss +38 -0
- data/_sass/bootstrap/utilities/_api.scss +47 -0
- data/_sass/bootstrap/vendor/_rfs.scss +348 -0
- data/assets/css/base/stylesheet.min.scss +35 -0
- data/assets/icons/android-chrome-192.png +0 -0
- data/assets/icons/android-chrome-512.png +0 -0
- data/assets/icons/apple-touch-icon.png +0 -0
- data/assets/icons/favicon-16.png +0 -0
- data/assets/icons/favicon-32.png +0 -0
- data/assets/icons/favicon.ico +0 -0
- data/assets/icons/favicon.svg +1 -0
- data/assets/img/anaconda-symbolic.svg +1 -0
- data/assets/img/anaconda.svg +1 -0
- data/assets/img/base/centos-colors.gpl +55 -0
- data/assets/img/base/example-ogp-image.svg +297 -0
- data/assets/img/base/example-sponsors-design.svg +226 -0
- data/assets/img/base/example-sponsors-logo-1.svg +120 -0
- data/assets/img/base/example-sponsors-logo-2.svg +116 -0
- data/assets/img/base/example-sponsors-logo-3.svg +123 -0
- data/assets/img/base/example-sponsors-logo-4.svg +116 -0
- data/assets/img/base/example-sponsors-logo-5.svg +116 -0
- data/assets/img/base/example-sponsors-logo-6.svg +116 -0
- data/assets/img/base/example-sponsors-logo-7.svg +116 -0
- data/assets/img/base/example-sponsors-logo-8.svg +110 -0
- data/assets/img/base/page-layout-default.svg +1217 -0
- data/assets/img/base/page-with-alert.svg +383 -0
- data/assets/img/base/page-with-announcement.svg +956 -0
- data/assets/img/base/page-with-artwork.svg +1009 -0
- data/assets/img/base/page-with-backtotop.svg +1009 -0
- data/assets/img/base/page-with-bits.svg +891 -0
- data/assets/img/base/page-with-breadcrumb.svg +676 -0
- data/assets/img/base/page-with-breakingnews.svg +957 -0
- data/assets/img/base/page-with-color.svg +57 -0
- data/assets/img/base/page-with-copyright.svg +1018 -0
- data/assets/img/base/page-with-copyvalue.svg +57 -0
- data/assets/img/base/page-with-datatable.svg +857 -0
- data/assets/img/base/page-with-event.svg +518 -0
- data/assets/img/base/page-with-fontawesome.svg +147 -0
- data/assets/img/base/page-with-footer.svg +1018 -0
- data/assets/img/base/page-with-heading.svg +57 -0
- data/assets/img/base/page-with-highlight.svg +86 -0
- data/assets/img/base/page-with-image.svg +57 -0
- data/assets/img/base/page-with-link.svg +57 -0
- data/assets/img/base/page-with-locales.svg +1009 -0
- data/assets/img/base/page-with-navbar.svg +958 -0
- data/assets/img/base/page-with-navindex.svg +279 -0
- data/assets/img/base/page-with-ogp.svg +401 -0
- data/assets/img/base/page-with-project.svg +423 -0
- data/assets/img/base/page-with-shortcut.svg +937 -0
- data/assets/img/base/page-with-social.svg +937 -0
- data/assets/img/base/page-with-sponsors.svg +937 -0
- data/assets/img/base/page-with-title.svg +584 -0
- data/assets/img/base/page-with-toc.svg +399 -0
- data/assets/img/base/screenshot-1200x600.svg +114 -0
- data/assets/img/centos-dynamicmsg-logo.svg +1 -0
- data/assets/img/centos-dynamicmsg-type.svg +1 -0
- data/assets/img/centos-dynamicmsg-whitelogo.svg +1 -0
- data/assets/img/centos-dynamicmsg-whitetype.svg +1 -0
- data/assets/img/centos-gdm-whitelogo.svg +1 -0
- data/assets/img/centos-ipa-whiteheader.svg +1 -0
- data/assets/img/centos-logo-2bits.svg +1 -0
- data/assets/img/centos-logo.svg +1 -0
- data/assets/img/centos-message-logo.svg +1 -0
- data/assets/img/centos-motif.png +0 -0
- data/assets/img/centos-poweredby-logo.svg +1 -0
- data/assets/img/centos-social-share.png +0 -0
- data/assets/img/centos-symbol-2bits.svg +1 -0
- data/assets/img/centos-symbol.svg +1 -0
- data/assets/img/centos-type.svg +1 -0
- data/assets/img/centos-vertical-logo.svg +1 -0
- data/assets/img/centos-vertical-message-logo.svg +1 -0
- data/assets/img/centos-whitelogo.svg +1 -0
- data/assets/img/download/centos-linux-7-2009-screenshot-n.png +0 -0
- data/assets/img/download/centos-stream-8-screenshot-n.png +0 -0
- data/assets/img/download/centos-stream-9-screenshot-n.png +0 -0
- data/assets/img/download/distribution-release-screenshot-1.png +0 -0
- data/assets/img/download/distribution-release-screenshot-2.png +0 -0
- data/assets/img/download/distribution-release-screenshot-3.png +0 -0
- data/assets/img/download/distribution-release-screenshot-n.png +0 -0
- data/assets/img/download/distribution-release-screenshot-n.svg +134 -0
- data/assets/img/download/download.svg +421 -0
- data/assets/img/download/fig-the-downloads-cards-presentation-template.png +0 -0
- data/assets/img/people/page.svg +900 -0
- data/assets/img/people/page.webp +0 -0
- data/assets/img/people/username.webp +0 -0
- data/assets/js/base/backtotop.js +20 -0
- data/assets/js/base/copyvalue.js +145 -0
- data/assets/js/base/datatable.js +41 -0
- data/assets/js/base/heading-anchor.js +108 -0
- data/assets/js/base/highlight.js +12 -0
- data/assets/js/base/init-tooltips.js +12 -0
- data/assets/js/bootstrap.bundle.js +6312 -0
- data/assets/js/bootstrap.bundle.js.map +1 -0
- data/assets/js/bootstrap.bundle.min.js +7 -0
- data/assets/js/bootstrap.bundle.min.js.map +1 -0
- data/assets/js/bootstrap.esm.js +4447 -0
- data/assets/js/bootstrap.esm.js.map +1 -0
- data/assets/js/bootstrap.esm.min.js +7 -0
- data/assets/js/bootstrap.esm.min.js.map +1 -0
- data/assets/js/bootstrap.js +4494 -0
- data/assets/js/bootstrap.js.map +1 -0
- data/assets/js/bootstrap.min.js +7 -0
- data/assets/js/bootstrap.min.js.map +1 -0
- data/site.webmanifest +11 -0
- metadata +611 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
@use "sass:math";
|
|
2
|
+
|
|
3
|
+
// Merge the base colors into the main `$theme-colors` map
|
|
4
|
+
$theme-colors: map-merge($theme-colors, $centos-base-colors);
|
|
5
|
+
|
|
6
|
+
// Generate all custom color shades and merge them into `$theme-colors`.
|
|
7
|
+
// Uses saturation-normalized shade generation to maintain brand saturation
|
|
8
|
+
// throughout the dark range (grades 800-950), creating visual consistency
|
|
9
|
+
// between web UI and wallpaper colors.
|
|
10
|
+
@each $name, $color in $centos-base-colors {
|
|
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;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
$theme-colors: map-merge($theme-colors, ($shade-name: $shade-color));
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Define custom background gradients.
|
|
39
|
+
$centos-bg-gradients: (
|
|
40
|
+
"primary": linear-gradient(
|
|
41
|
+
90deg,
|
|
42
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 50%,
|
|
43
|
+
rgba(map-get($theme-colors, "centos-orange-100"), 1) 100%
|
|
44
|
+
),
|
|
45
|
+
"secondary": linear-gradient(
|
|
46
|
+
90deg,
|
|
47
|
+
rgba(map-get($theme-colors, "centos-orange-100"), 1) 50%,
|
|
48
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 100%
|
|
49
|
+
),
|
|
50
|
+
"header": linear-gradient(
|
|
51
|
+
180deg,
|
|
52
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 0%,
|
|
53
|
+
rgba($white, 0.98) 100%
|
|
54
|
+
),
|
|
55
|
+
"footer": linear-gradient(
|
|
56
|
+
180deg,
|
|
57
|
+
rgba($white, 1) 0%,
|
|
58
|
+
rgba(map-get($theme-colors, "centos-purple-100"), 1) 100%
|
|
59
|
+
)
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
// Define custom text gradients.
|
|
63
|
+
$centos-text-gradients: (
|
|
64
|
+
"primary": linear-gradient(
|
|
65
|
+
90deg,
|
|
66
|
+
rgba(map-get($theme-colors, "centos-purple"), 1) 50%,
|
|
67
|
+
rgba(map-get($theme-colors, "centos-orange"), 1) 100%
|
|
68
|
+
),
|
|
69
|
+
"secondary": linear-gradient(
|
|
70
|
+
270deg,
|
|
71
|
+
rgba(map-get($theme-colors, "centos-purple"), 1) 50%,
|
|
72
|
+
rgba(map-get($theme-colors, "centos-orange"), 1) 100%
|
|
73
|
+
)
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
// Define custom utilities using the correct Bootstrap API. This allows you to
|
|
77
|
+
// use classes like `text-bg-centos-purple-800`.
|
|
78
|
+
$utilities: map-merge(
|
|
79
|
+
$utilities,
|
|
80
|
+
(
|
|
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
|
+
"centos-bg-gradient": (
|
|
94
|
+
property: background,
|
|
95
|
+
class: bg-gradient,
|
|
96
|
+
values: $centos-bg-gradients
|
|
97
|
+
),
|
|
98
|
+
"centos-text-gradient": (
|
|
99
|
+
property: color,
|
|
100
|
+
class: text-gradient,
|
|
101
|
+
values: $centos-text-gradients,
|
|
102
|
+
),
|
|
103
|
+
)
|
|
104
|
+
);
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
// ================================================================================
|
|
2
|
+
// SATURATION-NORMALIZED SHADE GENERATION
|
|
3
|
+
// ================================================================================
|
|
4
|
+
// Purpose: Generate color shades that maintain brand saturation throughout
|
|
5
|
+
// the entire range (light to dark), creating visual consistency between
|
|
6
|
+
// web UI and wallpapers.
|
|
7
|
+
//
|
|
8
|
+
// Background: Bootstrap's default shade-color() desaturates dark colors,
|
|
9
|
+
// making them look gray. This custom function maintains saturation for
|
|
10
|
+
// a unified brand experience aligned with wallpaper colors.
|
|
11
|
+
//
|
|
12
|
+
// Reference: Analyzed centos-background-p-1024x1024.png wallpaper to extract
|
|
13
|
+
// dark purple corners (#1A0029) which use 100% saturation at 16% brightness.
|
|
14
|
+
// Standard shade algorithm produces #210F1D (55% saturation) which feels gray.
|
|
15
|
+
// ================================================================================
|
|
16
|
+
|
|
17
|
+
@use "sass:color";
|
|
18
|
+
@use "sass:math";
|
|
19
|
+
|
|
20
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
21
|
+
// Function: Get saturation multiplier for a given shade grade
|
|
22
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// For dark shades (800-950), multiply saturation to prevent desaturation
|
|
24
|
+
// For medium shades (600-700), keep saturation as-is (already good)
|
|
25
|
+
// For light shades (50-400), reduce saturation for softer appearance on light bg
|
|
26
|
+
// For base shade (500), use normal saturation
|
|
27
|
+
//
|
|
28
|
+
// Option 2: Target wallpaper saturation (100%) for grade 950
|
|
29
|
+
// Using 2.0x multiplier to reach 100% from base ~50% saturation
|
|
30
|
+
@function saturation-multiplier($shade) {
|
|
31
|
+
@if $shade <= 400 {
|
|
32
|
+
@return 0.6; // Light shades (50-400): reduce saturation for soft appearance
|
|
33
|
+
} @else if $shade == 500 {
|
|
34
|
+
@return 1.0; // Base color: keep normal saturation
|
|
35
|
+
} @else if $shade == 600 {
|
|
36
|
+
@return 1.0; // Keep as-is, already perceptually good
|
|
37
|
+
} @else if $shade == 700 {
|
|
38
|
+
@return 1.0; // Keep as-is, already perceptually good
|
|
39
|
+
} @else if $shade == 800 {
|
|
40
|
+
@return 1.1; // Subtle boost for slight vibrancy increase
|
|
41
|
+
} @else if $shade == 900 {
|
|
42
|
+
@return 1.8; // Significant increase to match wallpaper saturation
|
|
43
|
+
} @else if $shade == 950 {
|
|
44
|
+
@return 2.0; // Ensure 100% saturation for all colors (wallpaper-anchored)
|
|
45
|
+
} @else {
|
|
46
|
+
@return 1.0; // Default fallback
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
51
|
+
// Function: Calculate target lightness for a shade grade
|
|
52
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
53
|
+
// Returns the lightness percentage for each shade number (50-950)
|
|
54
|
+
// Creates smooth interpolation from light to dark
|
|
55
|
+
// Option 2: Target 8% lightness for grade 950 (matches wallpaper ~16% brightness)
|
|
56
|
+
@function target-lightness($shade, $base-lightness) {
|
|
57
|
+
@if $shade < 500 {
|
|
58
|
+
// Light shades: interpolate from 95% (very light) down to base lightness
|
|
59
|
+
@return $base-lightness + math.div(500 - $shade, 450) * (95% - $base-lightness);
|
|
60
|
+
} @else if $shade == 500 {
|
|
61
|
+
// Base color: return as-is
|
|
62
|
+
@return $base-lightness;
|
|
63
|
+
} @else if $shade == 600 or $shade == 700 or $shade == 800 {
|
|
64
|
+
// Grades 600-800: use original Bootstrap curve (down to 5%)
|
|
65
|
+
@return $base-lightness - math.div($shade - 500, 500) * ($base-lightness - 5%);
|
|
66
|
+
} @else if $shade == 900 {
|
|
67
|
+
// Grade 900: transition toward wallpaper lightness
|
|
68
|
+
@return $base-lightness - math.div(900 - 500, 500) * ($base-lightness - 10%);
|
|
69
|
+
} @else if $shade == 950 {
|
|
70
|
+
// Grade 950: target 8% lightness (wallpaper-aligned, matches #1A0029)
|
|
71
|
+
// All grade-950 colors use 8% lightness to match wallpaper depth
|
|
72
|
+
@return 8%;
|
|
73
|
+
} @else {
|
|
74
|
+
// Default fallback
|
|
75
|
+
@return $base-lightness - math.div($shade - 500, 500) * ($base-lightness - 5%);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
80
|
+
// Function: Generate saturation-normalized shade
|
|
81
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
82
|
+
// Main function that creates shades with maintained saturation
|
|
83
|
+
// Extracts HSL from base color, applies multipliers, returns HSL shade
|
|
84
|
+
// Special case: purple-950 returns wallpaper-anchored #1A0029 (exact match)
|
|
85
|
+
@function saturated-shade($color, $shade) {
|
|
86
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
87
|
+
// Function: Generate saturation-normalized shade with wallpaper alignment
|
|
88
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
89
|
+
// Design Principle: Grade-950 colors maintain native hues while achieving
|
|
90
|
+
// wallpaper aesthetic through shared saturation (100%) and lightness (~8%)
|
|
91
|
+
//
|
|
92
|
+
// Wallpaper Reference: #1A0029 (100% saturation, 8% lightness)
|
|
93
|
+
// Grade-950 Alignment: All colors achieve 100% saturation + 8% lightness
|
|
94
|
+
// Result: UI colors share wallpaper depth while maintaining brand identity
|
|
95
|
+
//
|
|
96
|
+
// Why function-based instead of hardcoded?
|
|
97
|
+
// - Maintains hue consistency within each color family
|
|
98
|
+
// - Preserves algorithmic cohesion across all 4 color families
|
|
99
|
+
// - Achieves wallpaper correlation through saturation/brightness alignment
|
|
100
|
+
// - Creates unified visual language respecting color family rules
|
|
101
|
+
// ────────────────────────────────────────────────────────────────────────────
|
|
102
|
+
|
|
103
|
+
// Extract current HSL values from the color
|
|
104
|
+
$current-hue: hue($color);
|
|
105
|
+
$current-saturation: saturation($color);
|
|
106
|
+
$current-lightness: lightness($color);
|
|
107
|
+
|
|
108
|
+
// Calculate target values for this shade
|
|
109
|
+
$target-light: target-lightness($shade, $current-lightness);
|
|
110
|
+
$sat-multiplier: saturation-multiplier($shade);
|
|
111
|
+
$target-saturation: math.min($current-saturation * $sat-multiplier, 100%);
|
|
112
|
+
|
|
113
|
+
// Generate and return the new color in HSL
|
|
114
|
+
@return hsl($current-hue, $target-saturation, $target-light);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// ================================================================================
|
|
118
|
+
// CentOS Color (Our beloved branding colors)
|
|
119
|
+
// ================================================================================
|
|
120
|
+
$centos-base-colors: (
|
|
121
|
+
centos-purple: #A14F8C,
|
|
122
|
+
centos-orange: #EFA724,
|
|
123
|
+
centos-blue: #262577,
|
|
124
|
+
centos-green: #9CCD2A,
|
|
125
|
+
);
|
|
126
|
+
|
|
127
|
+
// Define the shade steps.
|
|
128
|
+
$centos-color-shades: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, 950;
|
|
129
|
+
|
|
130
|
+
// --------------------------------------------------------------------------------
|
|
131
|
+
// Theme Colors - Option D: Orange Family Variants for Brand Coherence
|
|
132
|
+
// All colors verified to meet WCAG 2.1 standards with color theory compliance.
|
|
133
|
+
//
|
|
134
|
+
// CentOS brand colors are directly integrated as semantic colors to reinforce
|
|
135
|
+
// brand identity and follow international color standards (ISO 3864). Warning
|
|
136
|
+
// uses a darkened centos-orange variant to communicate caution urgency while
|
|
137
|
+
// maintaining brand coherence. Success uses darkened centos-green for positive
|
|
138
|
+
// outcomes. Brand colors remain from official CentOS specification.
|
|
139
|
+
//
|
|
140
|
+
// Color Theory Rationale:
|
|
141
|
+
// - Orange = Caution/Warning (warm, attention-getting, ISO standard)
|
|
142
|
+
// - Blue = Information (cool, trustworthy, ISO standard)
|
|
143
|
+
// - Red = Danger (alert, critical, ISO standard)
|
|
144
|
+
// - Green = Success (positive, safe, ISO standard)
|
|
145
|
+
// - Purple = Brand primary (custom, strong visual identity)
|
|
146
|
+
//
|
|
147
|
+
// Mapping:
|
|
148
|
+
// - Primary: centos-purple #A54C93 (brand primary - balanced for visual prominence)
|
|
149
|
+
// - Secondary: centos-orange #B27800 (brand secondary - balanced for color harmony)
|
|
150
|
+
// - Success: centos-green #4A8400 darkened (positive outcomes, from #84B800)
|
|
151
|
+
// - Warning: centos-orange #C86A00 darkened (caution/attention, warm tone - correct psychology)
|
|
152
|
+
// - Danger: External red #C62828 (critical/destructive - no CentOS equivalent)
|
|
153
|
+
// - Info: External blue #1976D2 (informational - distinguishes from warning)
|
|
154
|
+
//
|
|
155
|
+
// See color.md documentation for detailed contrast ratio and psychology analysis.
|
|
156
|
+
// --------------------------------------------------------------------------------
|
|
157
|
+
$primary: map-get($centos-base-colors, 'centos-purple');
|
|
158
|
+
$secondary: map-get($centos-base-colors, 'centos-orange'); // #B27800 - CentOS brand secondary
|
|
159
|
+
$success: #4A8400; // Darkened centos-green: 4.57:1 (white), 4.59:1 (black) - WCAG AA ✓
|
|
160
|
+
$warning: #C86A00; // Darkened centos-orange: 3.81:1 (white), 8.21:1 (black) - warm, urgent
|
|
161
|
+
$danger: #C62828; // External red: 5.39:1 (white), 3.89:1 (black) - WCAG AA ✓
|
|
162
|
+
$info: #1976D2; // External blue: 4.60:1 (white), 4.56:1 (black) - WCAG AA ✓
|
|
163
|
+
|
|
164
|
+
// Light and dark are automatically generated from centos-purple using the saturation-normalized
|
|
165
|
+
// shade system. Instead of assigning function results to variables here (which causes Dart Sass
|
|
166
|
+
// chicken-egg issues), we generate these values with a Python script and import them below.
|
|
167
|
+
// This ensures $light and $dark are consistently computed from the same shade algorithm used
|
|
168
|
+
// for all other shades in the color system.
|
|
169
|
+
//
|
|
170
|
+
// To update after color changes: python3 scripts/colors/generate-scss-light-dark.py
|
|
171
|
+
// The generated values are imported from: src/SASS/_light-dark.scss
|
|
172
|
+
@import "light-dark";
|
|
173
|
+
|
|
174
|
+
$white: #ffffff;
|
|
175
|
+
$black: #000000;
|
|
176
|
+
|
|
177
|
+
// Background and Body variables
|
|
178
|
+
// These control the default background and text colors for the entire page.
|
|
179
|
+
$body-bg: $white;
|
|
180
|
+
$body-color: #1c0d19; // centos-purple-900
|
|
181
|
+
|
|
182
|
+
// Border and Emphasis colors
|
|
183
|
+
// Used for borders, dividers, and higher-contrast text.
|
|
184
|
+
$border-color: #e8d9e5; // centos-purple-100
|
|
185
|
+
$emphasis-color: #d1b3cb; // centos-purple-200
|
|
186
|
+
|
|
187
|
+
// Dropdown menu
|
|
188
|
+
$dropdown-dark-bg: $dark;
|
|
189
|
+
$dropdown-dark-color: $light;
|
|
190
|
+
|
|
191
|
+
// --------------------------------------------------------------------------------
|
|
192
|
+
// Spacing customization
|
|
193
|
+
// --------------------------------------------------------------------------------
|
|
194
|
+
$spacer: 1rem;
|
|
195
|
+
$spacers: (
|
|
196
|
+
0: 0,
|
|
197
|
+
1: $spacer * .25,
|
|
198
|
+
2: $spacer * .5,
|
|
199
|
+
3: $spacer,
|
|
200
|
+
4: $spacer * 1.5,
|
|
201
|
+
5: $spacer * 3,
|
|
202
|
+
6: $spacer * 5,
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
// --------------------------------------------------------------------------------
|
|
206
|
+
// Typography
|
|
207
|
+
// --------------------------------------------------------------------------------
|
|
208
|
+
$font-family-sans-serif: "Montserrat", sans-serif;
|
|
209
|
+
$font-family-monospace: "Source Code Pro", monospace;
|
|
210
|
+
$headings-font-weight: 700;
|
|
211
|
+
$font-size-base: $spacer;
|
|
212
|
+
$h1-font-size: $font-size-base * 2.75;
|
|
213
|
+
$body-emphasis-color: mix(#000, $body-color, 15%);
|
|
214
|
+
|
|
215
|
+
// --------------------------------------------------------------------------------
|
|
216
|
+
// Breadcrumb
|
|
217
|
+
// --------------------------------------------------------------------------------
|
|
218
|
+
$breadcrumb-divider: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='8' height='8'><path d='M2.5 0L1 1.5 3.5 4 1 6.5 2.5 8l4-4-4-4z'/></svg>");
|
|
219
|
+
|
|
220
|
+
// --------------------------------------------------------------------------------
|
|
221
|
+
// Negative margins
|
|
222
|
+
// --------------------------------------------------------------------------------
|
|
223
|
+
$enable-negative-margins: true;
|
|
224
|
+
|
|
225
|
+
// --------------------------------------------------------------------------------
|
|
226
|
+
// Breakingnews
|
|
227
|
+
// --------------------------------------------------------------------------------
|
|
228
|
+
// Use a Sass variable for the breaking news height to make it easy to update
|
|
229
|
+
// both the body padding and the sticky element's top position. If you change
|
|
230
|
+
// this value, you also need to tune-up the _includes/head.html file, where
|
|
231
|
+
// dynamic calculation of scroll-margin-top property takes place.
|
|
232
|
+
$breakingnews-height: 59px;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Base styles
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
.accordion {
|
|
6
|
+
// scss-docs-start accordion-css-vars
|
|
7
|
+
--#{$prefix}accordion-color: #{$accordion-color};
|
|
8
|
+
--#{$prefix}accordion-bg: #{$accordion-bg};
|
|
9
|
+
--#{$prefix}accordion-transition: #{$accordion-transition};
|
|
10
|
+
--#{$prefix}accordion-border-color: #{$accordion-border-color};
|
|
11
|
+
--#{$prefix}accordion-border-width: #{$accordion-border-width};
|
|
12
|
+
--#{$prefix}accordion-border-radius: #{$accordion-border-radius};
|
|
13
|
+
--#{$prefix}accordion-inner-border-radius: #{$accordion-inner-border-radius};
|
|
14
|
+
--#{$prefix}accordion-btn-padding-x: #{$accordion-button-padding-x};
|
|
15
|
+
--#{$prefix}accordion-btn-padding-y: #{$accordion-button-padding-y};
|
|
16
|
+
--#{$prefix}accordion-btn-color: #{$accordion-button-color};
|
|
17
|
+
--#{$prefix}accordion-btn-bg: #{$accordion-button-bg};
|
|
18
|
+
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon)};
|
|
19
|
+
--#{$prefix}accordion-btn-icon-width: #{$accordion-icon-width};
|
|
20
|
+
--#{$prefix}accordion-btn-icon-transform: #{$accordion-icon-transform};
|
|
21
|
+
--#{$prefix}accordion-btn-icon-transition: #{$accordion-icon-transition};
|
|
22
|
+
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon)};
|
|
23
|
+
--#{$prefix}accordion-btn-focus-box-shadow: #{$accordion-button-focus-box-shadow};
|
|
24
|
+
--#{$prefix}accordion-body-padding-x: #{$accordion-body-padding-x};
|
|
25
|
+
--#{$prefix}accordion-body-padding-y: #{$accordion-body-padding-y};
|
|
26
|
+
--#{$prefix}accordion-active-color: #{$accordion-button-active-color};
|
|
27
|
+
--#{$prefix}accordion-active-bg: #{$accordion-button-active-bg};
|
|
28
|
+
// scss-docs-end accordion-css-vars
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.accordion-button {
|
|
32
|
+
position: relative;
|
|
33
|
+
display: flex;
|
|
34
|
+
align-items: center;
|
|
35
|
+
width: 100%;
|
|
36
|
+
padding: var(--#{$prefix}accordion-btn-padding-y) var(--#{$prefix}accordion-btn-padding-x);
|
|
37
|
+
@include font-size($font-size-base);
|
|
38
|
+
color: var(--#{$prefix}accordion-btn-color);
|
|
39
|
+
text-align: left; // Reset button style
|
|
40
|
+
background-color: var(--#{$prefix}accordion-btn-bg);
|
|
41
|
+
border: 0;
|
|
42
|
+
@include border-radius(0);
|
|
43
|
+
overflow-anchor: none;
|
|
44
|
+
@include transition(var(--#{$prefix}accordion-transition));
|
|
45
|
+
|
|
46
|
+
&:not(.collapsed) {
|
|
47
|
+
color: var(--#{$prefix}accordion-active-color);
|
|
48
|
+
background-color: var(--#{$prefix}accordion-active-bg);
|
|
49
|
+
box-shadow: inset 0 calc(-1 * var(--#{$prefix}accordion-border-width)) 0 var(--#{$prefix}accordion-border-color); // stylelint-disable-line function-disallowed-list
|
|
50
|
+
|
|
51
|
+
&::after {
|
|
52
|
+
background-image: var(--#{$prefix}accordion-btn-active-icon);
|
|
53
|
+
transform: var(--#{$prefix}accordion-btn-icon-transform);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// Accordion icon
|
|
58
|
+
&::after {
|
|
59
|
+
flex-shrink: 0;
|
|
60
|
+
width: var(--#{$prefix}accordion-btn-icon-width);
|
|
61
|
+
height: var(--#{$prefix}accordion-btn-icon-width);
|
|
62
|
+
margin-left: auto;
|
|
63
|
+
content: "";
|
|
64
|
+
background-image: var(--#{$prefix}accordion-btn-icon);
|
|
65
|
+
background-repeat: no-repeat;
|
|
66
|
+
background-size: var(--#{$prefix}accordion-btn-icon-width);
|
|
67
|
+
@include transition(var(--#{$prefix}accordion-btn-icon-transition));
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
&:hover {
|
|
71
|
+
z-index: 2;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&:focus {
|
|
75
|
+
z-index: 3;
|
|
76
|
+
outline: 0;
|
|
77
|
+
box-shadow: var(--#{$prefix}accordion-btn-focus-box-shadow);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
.accordion-header {
|
|
82
|
+
margin-bottom: 0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
.accordion-item {
|
|
86
|
+
color: var(--#{$prefix}accordion-color);
|
|
87
|
+
background-color: var(--#{$prefix}accordion-bg);
|
|
88
|
+
border: var(--#{$prefix}accordion-border-width) solid var(--#{$prefix}accordion-border-color);
|
|
89
|
+
|
|
90
|
+
&:first-of-type {
|
|
91
|
+
@include border-top-radius(var(--#{$prefix}accordion-border-radius));
|
|
92
|
+
|
|
93
|
+
> .accordion-header .accordion-button {
|
|
94
|
+
@include border-top-radius(var(--#{$prefix}accordion-inner-border-radius));
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
&:not(:first-of-type) {
|
|
99
|
+
border-top: 0;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// Only set a border-radius on the last item if the accordion is collapsed
|
|
103
|
+
&:last-of-type {
|
|
104
|
+
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
|
105
|
+
|
|
106
|
+
> .accordion-header .accordion-button {
|
|
107
|
+
&.collapsed {
|
|
108
|
+
@include border-bottom-radius(var(--#{$prefix}accordion-inner-border-radius));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
> .accordion-collapse {
|
|
113
|
+
@include border-bottom-radius(var(--#{$prefix}accordion-border-radius));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
.accordion-body {
|
|
119
|
+
padding: var(--#{$prefix}accordion-body-padding-y) var(--#{$prefix}accordion-body-padding-x);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
// Flush accordion items
|
|
124
|
+
//
|
|
125
|
+
// Remove borders and border-radius to keep accordion items edge-to-edge.
|
|
126
|
+
|
|
127
|
+
.accordion-flush {
|
|
128
|
+
> .accordion-item {
|
|
129
|
+
border-right: 0;
|
|
130
|
+
border-left: 0;
|
|
131
|
+
@include border-radius(0);
|
|
132
|
+
|
|
133
|
+
&:first-child { border-top: 0; }
|
|
134
|
+
&:last-child { border-bottom: 0; }
|
|
135
|
+
|
|
136
|
+
// stylelint-disable selector-max-class
|
|
137
|
+
> .accordion-collapse,
|
|
138
|
+
> .accordion-header .accordion-button,
|
|
139
|
+
> .accordion-header .accordion-button.collapsed {
|
|
140
|
+
@include border-radius(0);
|
|
141
|
+
}
|
|
142
|
+
// stylelint-enable selector-max-class
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
@if $enable-dark-mode {
|
|
147
|
+
@include color-mode(dark) {
|
|
148
|
+
.accordion-button::after {
|
|
149
|
+
--#{$prefix}accordion-btn-icon: #{escape-svg($accordion-button-icon-dark)};
|
|
150
|
+
--#{$prefix}accordion-btn-active-icon: #{escape-svg($accordion-button-active-icon-dark)};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Base styles
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
.alert {
|
|
6
|
+
// scss-docs-start alert-css-vars
|
|
7
|
+
--#{$prefix}alert-bg: transparent;
|
|
8
|
+
--#{$prefix}alert-padding-x: #{$alert-padding-x};
|
|
9
|
+
--#{$prefix}alert-padding-y: #{$alert-padding-y};
|
|
10
|
+
--#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
|
|
11
|
+
--#{$prefix}alert-color: inherit;
|
|
12
|
+
--#{$prefix}alert-border-color: transparent;
|
|
13
|
+
--#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
|
|
14
|
+
--#{$prefix}alert-border-radius: #{$alert-border-radius};
|
|
15
|
+
--#{$prefix}alert-link-color: inherit;
|
|
16
|
+
// scss-docs-end alert-css-vars
|
|
17
|
+
|
|
18
|
+
position: relative;
|
|
19
|
+
padding: var(--#{$prefix}alert-padding-y) var(--#{$prefix}alert-padding-x);
|
|
20
|
+
margin-bottom: var(--#{$prefix}alert-margin-bottom);
|
|
21
|
+
color: var(--#{$prefix}alert-color);
|
|
22
|
+
background-color: var(--#{$prefix}alert-bg);
|
|
23
|
+
border: var(--#{$prefix}alert-border);
|
|
24
|
+
@include border-radius(var(--#{$prefix}alert-border-radius));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
// Headings for larger alerts
|
|
28
|
+
.alert-heading {
|
|
29
|
+
// Specified to prevent conflicts of changing $headings-color
|
|
30
|
+
color: inherit;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Provide class for links that match alerts
|
|
34
|
+
.alert-link {
|
|
35
|
+
font-weight: $alert-link-font-weight;
|
|
36
|
+
color: var(--#{$prefix}alert-link-color);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
// Dismissible alerts
|
|
41
|
+
//
|
|
42
|
+
// Expand the right padding and account for the close button's positioning.
|
|
43
|
+
|
|
44
|
+
.alert-dismissible {
|
|
45
|
+
padding-right: $alert-dismissible-padding-r;
|
|
46
|
+
|
|
47
|
+
// Adjust close link position
|
|
48
|
+
.btn-close {
|
|
49
|
+
position: absolute;
|
|
50
|
+
top: 0;
|
|
51
|
+
right: 0;
|
|
52
|
+
z-index: $stretched-link-z-index + 1;
|
|
53
|
+
padding: $alert-padding-y * 1.25 $alert-padding-x;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
// scss-docs-start alert-modifiers
|
|
59
|
+
// Generate contextual modifier classes for colorizing the alert
|
|
60
|
+
@each $state in map-keys($theme-colors) {
|
|
61
|
+
.alert-#{$state} {
|
|
62
|
+
--#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
|
|
63
|
+
--#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
|
64
|
+
--#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
|
|
65
|
+
--#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// scss-docs-end alert-modifiers
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// Base class
|
|
2
|
+
//
|
|
3
|
+
// Requires one of the contextual, color modifier classes for `color` and
|
|
4
|
+
// `background-color`.
|
|
5
|
+
|
|
6
|
+
.badge {
|
|
7
|
+
// scss-docs-start badge-css-vars
|
|
8
|
+
--#{$prefix}badge-padding-x: #{$badge-padding-x};
|
|
9
|
+
--#{$prefix}badge-padding-y: #{$badge-padding-y};
|
|
10
|
+
@include rfs($badge-font-size, --#{$prefix}badge-font-size);
|
|
11
|
+
--#{$prefix}badge-font-weight: #{$badge-font-weight};
|
|
12
|
+
--#{$prefix}badge-color: #{$badge-color};
|
|
13
|
+
--#{$prefix}badge-border-radius: #{$badge-border-radius};
|
|
14
|
+
// scss-docs-end badge-css-vars
|
|
15
|
+
|
|
16
|
+
display: inline-block;
|
|
17
|
+
padding: var(--#{$prefix}badge-padding-y) var(--#{$prefix}badge-padding-x);
|
|
18
|
+
@include font-size(var(--#{$prefix}badge-font-size));
|
|
19
|
+
font-weight: var(--#{$prefix}badge-font-weight);
|
|
20
|
+
line-height: 1;
|
|
21
|
+
color: var(--#{$prefix}badge-color);
|
|
22
|
+
text-align: center;
|
|
23
|
+
white-space: nowrap;
|
|
24
|
+
vertical-align: baseline;
|
|
25
|
+
@include border-radius(var(--#{$prefix}badge-border-radius));
|
|
26
|
+
@include gradient-bg();
|
|
27
|
+
|
|
28
|
+
// Empty badges collapse automatically
|
|
29
|
+
&:empty {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// Quick fix for badges in buttons
|
|
35
|
+
.btn .badge {
|
|
36
|
+
position: relative;
|
|
37
|
+
top: -1px;
|
|
38
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
.breadcrumb {
|
|
2
|
+
// scss-docs-start breadcrumb-css-vars
|
|
3
|
+
--#{$prefix}breadcrumb-padding-x: #{$breadcrumb-padding-x};
|
|
4
|
+
--#{$prefix}breadcrumb-padding-y: #{$breadcrumb-padding-y};
|
|
5
|
+
--#{$prefix}breadcrumb-margin-bottom: #{$breadcrumb-margin-bottom};
|
|
6
|
+
@include rfs($breadcrumb-font-size, --#{$prefix}breadcrumb-font-size);
|
|
7
|
+
--#{$prefix}breadcrumb-bg: #{$breadcrumb-bg};
|
|
8
|
+
--#{$prefix}breadcrumb-border-radius: #{$breadcrumb-border-radius};
|
|
9
|
+
--#{$prefix}breadcrumb-divider-color: #{$breadcrumb-divider-color};
|
|
10
|
+
--#{$prefix}breadcrumb-item-padding-x: #{$breadcrumb-item-padding-x};
|
|
11
|
+
--#{$prefix}breadcrumb-item-active-color: #{$breadcrumb-active-color};
|
|
12
|
+
// scss-docs-end breadcrumb-css-vars
|
|
13
|
+
|
|
14
|
+
display: flex;
|
|
15
|
+
flex-wrap: wrap;
|
|
16
|
+
padding: var(--#{$prefix}breadcrumb-padding-y) var(--#{$prefix}breadcrumb-padding-x);
|
|
17
|
+
margin-bottom: var(--#{$prefix}breadcrumb-margin-bottom);
|
|
18
|
+
@include font-size(var(--#{$prefix}breadcrumb-font-size));
|
|
19
|
+
list-style: none;
|
|
20
|
+
background-color: var(--#{$prefix}breadcrumb-bg);
|
|
21
|
+
@include border-radius(var(--#{$prefix}breadcrumb-border-radius));
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.breadcrumb-item {
|
|
25
|
+
// The separator between breadcrumbs (by default, a forward-slash: "/")
|
|
26
|
+
+ .breadcrumb-item {
|
|
27
|
+
padding-left: var(--#{$prefix}breadcrumb-item-padding-x);
|
|
28
|
+
|
|
29
|
+
&::before {
|
|
30
|
+
float: left; // Suppress inline spacings and underlining of the separator
|
|
31
|
+
padding-right: var(--#{$prefix}breadcrumb-item-padding-x);
|
|
32
|
+
color: var(--#{$prefix}breadcrumb-divider-color);
|
|
33
|
+
content: var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider)) #{"/* rtl:"} var(--#{$prefix}breadcrumb-divider, escape-svg($breadcrumb-divider-flipped)) #{"*/"};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
&.active {
|
|
38
|
+
color: var(--#{$prefix}breadcrumb-item-active-color);
|
|
39
|
+
}
|
|
40
|
+
}
|