bootstrap 5.2.2 → 5.3.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +61 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -0
- data/README.md +9 -3
- data/Rakefile +17 -4
- data/assets/javascripts/bootstrap/alert.js +22 -32
- data/assets/javascripts/bootstrap/base-component.js +22 -38
- data/assets/javascripts/bootstrap/button.js +19 -22
- data/assets/javascripts/bootstrap/carousel.js +52 -135
- data/assets/javascripts/bootstrap/collapse.js +40 -102
- data/assets/javascripts/bootstrap/dom/data.js +8 -12
- data/assets/javascripts/bootstrap/dom/event-handler.js +19 -66
- data/assets/javascripts/bootstrap/dom/manipulator.js +4 -17
- data/assets/javascripts/bootstrap/dom/selector-engine.js +42 -24
- data/assets/javascripts/bootstrap/dropdown.js +74 -145
- data/assets/javascripts/bootstrap/modal.js +53 -133
- data/assets/javascripts/bootstrap/offcanvas.js +50 -102
- data/assets/javascripts/bootstrap/popover.js +23 -29
- data/assets/javascripts/bootstrap/scrollspy.js +53 -90
- data/assets/javascripts/bootstrap/tab.js +63 -112
- data/assets/javascripts/bootstrap/toast.js +31 -73
- data/assets/javascripts/bootstrap/tooltip.js +80 -191
- data/assets/javascripts/bootstrap/util/backdrop.js +27 -54
- data/assets/javascripts/bootstrap/util/component-functions.js +13 -18
- data/assets/javascripts/bootstrap/util/config.js +15 -27
- data/assets/javascripts/bootstrap/util/focustrap.js +19 -36
- data/assets/javascripts/bootstrap/util/index.js +42 -112
- data/assets/javascripts/bootstrap/util/sanitizer.js +33 -42
- data/assets/javascripts/bootstrap/util/scrollbar.js +24 -50
- data/assets/javascripts/bootstrap/util/swipe.js +27 -48
- data/assets/javascripts/bootstrap/util/template-factory.js +25 -52
- data/assets/javascripts/bootstrap-sprockets.js +8 -8
- data/assets/javascripts/bootstrap.js +686 -1450
- data/assets/javascripts/bootstrap.min.js +3 -3
- data/assets/stylesheets/_bootstrap-grid.scss +1 -3
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -0
- data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
- data/assets/stylesheets/_bootstrap.scss +1 -0
- data/assets/stylesheets/bootstrap/_accordion.scss +20 -11
- data/assets/stylesheets/bootstrap/_alert.scss +8 -11
- data/assets/stylesheets/bootstrap/_button-group.scss +2 -2
- data/assets/stylesheets/bootstrap/_buttons.scss +12 -3
- data/assets/stylesheets/bootstrap/_card.scss +5 -0
- data/assets/stylesheets/bootstrap/_carousel.scss +22 -15
- data/assets/stylesheets/bootstrap/_close.scss +32 -9
- data/assets/stylesheets/bootstrap/_dropdown.scss +1 -0
- data/assets/stylesheets/bootstrap/_functions.scss +2 -2
- data/assets/stylesheets/bootstrap/_grid.scss +6 -0
- data/assets/stylesheets/bootstrap/_helpers.scss +2 -0
- data/assets/stylesheets/bootstrap/_list-group.scss +12 -7
- data/assets/stylesheets/bootstrap/_maps.scss +120 -0
- data/assets/stylesheets/bootstrap/_mixins.scss +1 -2
- data/assets/stylesheets/bootstrap/_modal.scss +0 -1
- data/assets/stylesheets/bootstrap/_nav.scss +42 -17
- data/assets/stylesheets/bootstrap/_navbar.scss +15 -4
- data/assets/stylesheets/bootstrap/_offcanvas.scss +5 -6
- data/assets/stylesheets/bootstrap/_pagination.scss +1 -1
- data/assets/stylesheets/bootstrap/_progress.scss +10 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +8 -7
- data/assets/stylesheets/bootstrap/_root.scss +124 -10
- data/assets/stylesheets/bootstrap/_tables.scss +19 -12
- data/assets/stylesheets/bootstrap/_tooltip.scss +4 -5
- data/assets/stylesheets/bootstrap/_utilities.scss +175 -16
- data/assets/stylesheets/bootstrap/_variables-dark.scss +87 -0
- data/assets/stylesheets/bootstrap/_variables.scss +289 -172
- data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +23 -3
- data/assets/stylesheets/bootstrap/forms/_form-check.scss +27 -13
- data/assets/stylesheets/bootstrap/forms/_form-control.scss +24 -4
- data/assets/stylesheets/bootstrap/forms/_form-range.scss +3 -3
- data/assets/stylesheets/bootstrap/forms/_form-select.scss +12 -3
- data/assets/stylesheets/bootstrap/forms/_input-group.scss +1 -1
- data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +1 -4
- data/assets/stylesheets/bootstrap/helpers/_colored-links.scss +20 -2
- data/assets/stylesheets/bootstrap/helpers/_focus-ring.scss +5 -0
- data/assets/stylesheets/bootstrap/helpers/_icon-link.scss +25 -0
- data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_alert.scss +4 -1
- data/assets/stylesheets/bootstrap/mixins/_banner.scss +2 -4
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +30 -25
- data/assets/stylesheets/bootstrap/mixins/_color-mode.scss +21 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +20 -9
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +2 -0
- data/assets/stylesheets/bootstrap/mixins/_utilities.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +5 -1
- data/assets/stylesheets/bootstrap/vendor/_rfs.scss +23 -29
- data/bootstrap.gemspec +4 -3
- data/lib/bootstrap/engine.rb +17 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/js.rb +1 -1
- data/tasks/updater/network.rb +2 -2
- data/tasks/updater/scss.rb +2 -2
- data/test/gemfiles/rails_4_2.gemfile +2 -1
- data/test/gemfiles/rails_5_0.gemfile +1 -1
- data/test/gemfiles/rails_5_1.gemfile +1 -1
- data/test/gemfiles/rails_5_2.gemfile +8 -0
- data/test/gemfiles/rails_6_0.gemfile +1 -0
- data/test/gemfiles/rails_6_1.gemfile +1 -0
- data/test/gemfiles/rails_7_0_dartsass.gemfile +8 -0
- data/test/gemfiles/rails_7_0_sassc.gemfile +8 -0
- data/test/test_helper.rb +3 -2
- metadata +42 -18
- data/.travis.yml +0 -32
- data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +0 -15
@@ -42,7 +42,6 @@
|
|
42
42
|
display: block;
|
43
43
|
}
|
44
44
|
|
45
|
-
/* rtl:begin:ignore */
|
46
45
|
.carousel-item-next:not(.carousel-item-start),
|
47
46
|
.active.carousel-item-end {
|
48
47
|
transform: translateX(100%);
|
@@ -53,8 +52,6 @@
|
|
53
52
|
transform: translateX(-100%);
|
54
53
|
}
|
55
54
|
|
56
|
-
/* rtl:end:ignore */
|
57
|
-
|
58
55
|
|
59
56
|
//
|
60
57
|
// Alternate transitions
|
@@ -135,19 +132,11 @@
|
|
135
132
|
background-size: 100% 100%;
|
136
133
|
}
|
137
134
|
|
138
|
-
/* rtl:options: {
|
139
|
-
"autoRename": true,
|
140
|
-
"stringMap":[ {
|
141
|
-
"name" : "prev-next",
|
142
|
-
"search" : "prev",
|
143
|
-
"replace" : "next"
|
144
|
-
} ]
|
145
|
-
} */
|
146
135
|
.carousel-control-prev-icon {
|
147
|
-
background-image: escape-svg($carousel-control-prev-icon-bg);
|
136
|
+
background-image: escape-svg($carousel-control-prev-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-next-icon-bg) + "*/"};
|
148
137
|
}
|
149
138
|
.carousel-control-next-icon {
|
150
|
-
background-image: escape-svg($carousel-control-next-icon-bg);
|
139
|
+
background-image: escape-svg($carousel-control-next-icon-bg) #{"/*rtl:" + escape-svg($carousel-control-prev-icon-bg) + "*/"};
|
151
140
|
}
|
152
141
|
|
153
142
|
// Optional indicator pips/controls
|
@@ -168,7 +157,6 @@
|
|
168
157
|
margin-right: $carousel-control-width;
|
169
158
|
margin-bottom: 1rem;
|
170
159
|
margin-left: $carousel-control-width;
|
171
|
-
list-style: none;
|
172
160
|
|
173
161
|
[data-bs-target] {
|
174
162
|
box-sizing: content-box;
|
@@ -213,7 +201,7 @@
|
|
213
201
|
|
214
202
|
// Dark mode carousel
|
215
203
|
|
216
|
-
|
204
|
+
@mixin carousel-dark() {
|
217
205
|
.carousel-control-prev-icon,
|
218
206
|
.carousel-control-next-icon {
|
219
207
|
filter: $carousel-dark-control-icon-filter;
|
@@ -227,3 +215,22 @@
|
|
227
215
|
color: $carousel-dark-caption-color;
|
228
216
|
}
|
229
217
|
}
|
218
|
+
|
219
|
+
.carousel-dark {
|
220
|
+
@include carousel-dark();
|
221
|
+
}
|
222
|
+
|
223
|
+
@if $enable-dark-mode {
|
224
|
+
@include color-mode(dark) {
|
225
|
+
@if $color-mode-type == "media-query" {
|
226
|
+
.carousel {
|
227
|
+
@include carousel-dark();
|
228
|
+
}
|
229
|
+
} @else {
|
230
|
+
.carousel,
|
231
|
+
&.carousel {
|
232
|
+
@include carousel-dark();
|
233
|
+
}
|
234
|
+
}
|
235
|
+
}
|
236
|
+
}
|
@@ -4,37 +4,60 @@
|
|
4
4
|
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
|
5
5
|
|
6
6
|
.btn-close {
|
7
|
+
// scss-docs-start close-css-vars
|
8
|
+
--#{$prefix}btn-close-color: #{$btn-close-color};
|
9
|
+
--#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
|
10
|
+
--#{$prefix}btn-close-opacity: #{$btn-close-opacity};
|
11
|
+
--#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
|
12
|
+
--#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
|
13
|
+
--#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
|
14
|
+
--#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
|
15
|
+
--#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
|
16
|
+
// scss-docs-end close-css-vars
|
17
|
+
|
7
18
|
box-sizing: content-box;
|
8
19
|
width: $btn-close-width;
|
9
20
|
height: $btn-close-height;
|
10
21
|
padding: $btn-close-padding-y $btn-close-padding-x;
|
11
|
-
color: $btn-close-color;
|
12
|
-
background: transparent
|
22
|
+
color: var(--#{$prefix}btn-close-color);
|
23
|
+
background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
|
13
24
|
border: 0; // for button elements
|
14
25
|
@include border-radius();
|
15
|
-
opacity: $btn-close-opacity;
|
26
|
+
opacity: var(--#{$prefix}btn-close-opacity);
|
16
27
|
|
17
28
|
// Override <a>'s hover style
|
18
29
|
&:hover {
|
19
|
-
color: $btn-close-color;
|
30
|
+
color: var(--#{$prefix}btn-close-color);
|
20
31
|
text-decoration: none;
|
21
|
-
opacity: $btn-close-hover-opacity;
|
32
|
+
opacity: var(--#{$prefix}btn-close-hover-opacity);
|
22
33
|
}
|
23
34
|
|
24
35
|
&:focus {
|
25
36
|
outline: 0;
|
26
|
-
box-shadow: $btn-close-focus-shadow;
|
27
|
-
opacity: $btn-close-focus-opacity;
|
37
|
+
box-shadow: var(--#{$prefix}btn-close-focus-shadow);
|
38
|
+
opacity: var(--#{$prefix}btn-close-focus-opacity);
|
28
39
|
}
|
29
40
|
|
30
41
|
&:disabled,
|
31
42
|
&.disabled {
|
32
43
|
pointer-events: none;
|
33
44
|
user-select: none;
|
34
|
-
opacity: $btn-close-disabled-opacity;
|
45
|
+
opacity: var(--#{$prefix}btn-close-disabled-opacity);
|
35
46
|
}
|
36
47
|
}
|
37
48
|
|
49
|
+
@mixin btn-close-white() {
|
50
|
+
filter: var(--#{$prefix}btn-close-white-filter);
|
51
|
+
}
|
52
|
+
|
38
53
|
.btn-close-white {
|
39
|
-
|
54
|
+
@include btn-close-white();
|
55
|
+
}
|
56
|
+
|
57
|
+
@if $enable-dark-mode {
|
58
|
+
@include color-mode(dark) {
|
59
|
+
.btn-close {
|
60
|
+
@include btn-close-white();
|
61
|
+
}
|
62
|
+
}
|
40
63
|
}
|
@@ -184,6 +184,7 @@
|
|
184
184
|
white-space: nowrap; // prevent links from randomly breaking onto new lines
|
185
185
|
background-color: transparent; // For `<button>`s
|
186
186
|
border: 0; // For `<button>`s
|
187
|
+
@include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));
|
187
188
|
|
188
189
|
&:hover,
|
189
190
|
&:focus {
|
@@ -188,7 +188,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
|
|
188
188
|
);
|
189
189
|
|
190
190
|
@each $name, $value in $rgb {
|
191
|
-
$value: if(divide($value, 255) < .
|
191
|
+
$value: if(divide($value, 255) < .04045, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
|
192
192
|
$rgb: map-merge($rgb, ($name: $value));
|
193
193
|
}
|
194
194
|
|
@@ -198,7 +198,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
|
|
198
198
|
// Return opaque color
|
199
199
|
// opaque(#fff, rgba(0, 0, 0, .5)) => #808080
|
200
200
|
@function opaque($background, $foreground) {
|
201
|
-
@return mix(rgba($foreground, 1), $background, opacity($foreground) * 100);
|
201
|
+
@return mix(rgba($foreground, 1), $background, opacity($foreground) * 100%);
|
202
202
|
}
|
203
203
|
|
204
204
|
// scss-docs-start color-functions
|
@@ -180,13 +180,18 @@
|
|
180
180
|
// Add modifier classes to change text and background color on individual items.
|
181
181
|
// Organizationally, this must come after the `:hover` states.
|
182
182
|
|
183
|
-
@each $state
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
$list-group-
|
183
|
+
@each $state in map-keys($theme-colors) {
|
184
|
+
.list-group-item-#{$state} {
|
185
|
+
--#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis);
|
186
|
+
--#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);
|
187
|
+
--#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}-border-subtle);
|
188
|
+
--#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);
|
189
|
+
--#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);
|
190
|
+
--#{$prefix}list-group-action-active-color: var(--#{$prefix}emphasis-color);
|
191
|
+
--#{$prefix}list-group-action-active-bg: var(--#{$prefix}#{$state}-border-subtle);
|
192
|
+
--#{$prefix}list-group-active-color: var(--#{$prefix}#{$state}-bg-subtle);
|
193
|
+
--#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text-emphasis);
|
194
|
+
--#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);
|
188
195
|
}
|
189
|
-
|
190
|
-
@include list-group-item-variant($state, $list-group-variant-bg, $list-group-variant-color);
|
191
196
|
}
|
192
197
|
// scss-docs-end list-group-modifiers
|
@@ -6,6 +6,90 @@
|
|
6
6
|
$theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
|
7
7
|
// scss-docs-end theme-colors-rgb
|
8
8
|
|
9
|
+
// scss-docs-start theme-text-map
|
10
|
+
$theme-colors-text: (
|
11
|
+
"primary": $primary-text-emphasis,
|
12
|
+
"secondary": $secondary-text-emphasis,
|
13
|
+
"success": $success-text-emphasis,
|
14
|
+
"info": $info-text-emphasis,
|
15
|
+
"warning": $warning-text-emphasis,
|
16
|
+
"danger": $danger-text-emphasis,
|
17
|
+
"light": $light-text-emphasis,
|
18
|
+
"dark": $dark-text-emphasis,
|
19
|
+
) !default;
|
20
|
+
// scss-docs-end theme-text-map
|
21
|
+
|
22
|
+
// scss-docs-start theme-bg-subtle-map
|
23
|
+
$theme-colors-bg-subtle: (
|
24
|
+
"primary": $primary-bg-subtle,
|
25
|
+
"secondary": $secondary-bg-subtle,
|
26
|
+
"success": $success-bg-subtle,
|
27
|
+
"info": $info-bg-subtle,
|
28
|
+
"warning": $warning-bg-subtle,
|
29
|
+
"danger": $danger-bg-subtle,
|
30
|
+
"light": $light-bg-subtle,
|
31
|
+
"dark": $dark-bg-subtle,
|
32
|
+
) !default;
|
33
|
+
// scss-docs-end theme-bg-subtle-map
|
34
|
+
|
35
|
+
// scss-docs-start theme-border-subtle-map
|
36
|
+
$theme-colors-border-subtle: (
|
37
|
+
"primary": $primary-border-subtle,
|
38
|
+
"secondary": $secondary-border-subtle,
|
39
|
+
"success": $success-border-subtle,
|
40
|
+
"info": $info-border-subtle,
|
41
|
+
"warning": $warning-border-subtle,
|
42
|
+
"danger": $danger-border-subtle,
|
43
|
+
"light": $light-border-subtle,
|
44
|
+
"dark": $dark-border-subtle,
|
45
|
+
) !default;
|
46
|
+
// scss-docs-end theme-border-subtle-map
|
47
|
+
|
48
|
+
$theme-colors-text-dark: null !default;
|
49
|
+
$theme-colors-bg-subtle-dark: null !default;
|
50
|
+
$theme-colors-border-subtle-dark: null !default;
|
51
|
+
|
52
|
+
@if $enable-dark-mode {
|
53
|
+
// scss-docs-start theme-text-dark-map
|
54
|
+
$theme-colors-text-dark: (
|
55
|
+
"primary": $primary-text-emphasis-dark,
|
56
|
+
"secondary": $secondary-text-emphasis-dark,
|
57
|
+
"success": $success-text-emphasis-dark,
|
58
|
+
"info": $info-text-emphasis-dark,
|
59
|
+
"warning": $warning-text-emphasis-dark,
|
60
|
+
"danger": $danger-text-emphasis-dark,
|
61
|
+
"light": $light-text-emphasis-dark,
|
62
|
+
"dark": $dark-text-emphasis-dark,
|
63
|
+
) !default;
|
64
|
+
// scss-docs-end theme-text-dark-map
|
65
|
+
|
66
|
+
// scss-docs-start theme-bg-subtle-dark-map
|
67
|
+
$theme-colors-bg-subtle-dark: (
|
68
|
+
"primary": $primary-bg-subtle-dark,
|
69
|
+
"secondary": $secondary-bg-subtle-dark,
|
70
|
+
"success": $success-bg-subtle-dark,
|
71
|
+
"info": $info-bg-subtle-dark,
|
72
|
+
"warning": $warning-bg-subtle-dark,
|
73
|
+
"danger": $danger-bg-subtle-dark,
|
74
|
+
"light": $light-bg-subtle-dark,
|
75
|
+
"dark": $dark-bg-subtle-dark,
|
76
|
+
) !default;
|
77
|
+
// scss-docs-end theme-bg-subtle-dark-map
|
78
|
+
|
79
|
+
// scss-docs-start theme-border-subtle-dark-map
|
80
|
+
$theme-colors-border-subtle-dark: (
|
81
|
+
"primary": $primary-border-subtle-dark,
|
82
|
+
"secondary": $secondary-border-subtle-dark,
|
83
|
+
"success": $success-border-subtle-dark,
|
84
|
+
"info": $info-border-subtle-dark,
|
85
|
+
"warning": $warning-border-subtle-dark,
|
86
|
+
"danger": $danger-border-subtle-dark,
|
87
|
+
"light": $light-border-subtle-dark,
|
88
|
+
"dark": $dark-border-subtle-dark,
|
89
|
+
) !default;
|
90
|
+
// scss-docs-end theme-border-subtle-dark-map
|
91
|
+
}
|
92
|
+
|
9
93
|
// Utilities maps
|
10
94
|
//
|
11
95
|
// Extends the default `$theme-colors` maps to help create our utilities.
|
@@ -25,6 +109,17 @@ $utilities-text: map-merge(
|
|
25
109
|
)
|
26
110
|
) !default;
|
27
111
|
$utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
|
112
|
+
|
113
|
+
$utilities-text-emphasis-colors: (
|
114
|
+
"primary-emphasis": var(--#{$prefix}primary-text-emphasis),
|
115
|
+
"secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
|
116
|
+
"success-emphasis": var(--#{$prefix}success-text-emphasis),
|
117
|
+
"info-emphasis": var(--#{$prefix}info-text-emphasis),
|
118
|
+
"warning-emphasis": var(--#{$prefix}warning-text-emphasis),
|
119
|
+
"danger-emphasis": var(--#{$prefix}danger-text-emphasis),
|
120
|
+
"light-emphasis": var(--#{$prefix}light-text-emphasis),
|
121
|
+
"dark-emphasis": var(--#{$prefix}dark-text-emphasis)
|
122
|
+
) !default;
|
28
123
|
// scss-docs-end utilities-text-colors
|
29
124
|
|
30
125
|
// scss-docs-start utilities-bg-colors
|
@@ -37,18 +132,43 @@ $utilities-bg: map-merge(
|
|
37
132
|
)
|
38
133
|
) !default;
|
39
134
|
$utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
|
135
|
+
|
136
|
+
$utilities-bg-subtle: (
|
137
|
+
"primary-subtle": var(--#{$prefix}primary-bg-subtle),
|
138
|
+
"secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
|
139
|
+
"success-subtle": var(--#{$prefix}success-bg-subtle),
|
140
|
+
"info-subtle": var(--#{$prefix}info-bg-subtle),
|
141
|
+
"warning-subtle": var(--#{$prefix}warning-bg-subtle),
|
142
|
+
"danger-subtle": var(--#{$prefix}danger-bg-subtle),
|
143
|
+
"light-subtle": var(--#{$prefix}light-bg-subtle),
|
144
|
+
"dark-subtle": var(--#{$prefix}dark-bg-subtle)
|
145
|
+
) !default;
|
40
146
|
// scss-docs-end utilities-bg-colors
|
41
147
|
|
42
148
|
// scss-docs-start utilities-border-colors
|
43
149
|
$utilities-border: map-merge(
|
44
150
|
$utilities-colors,
|
45
151
|
(
|
152
|
+
"black": to-rgb($black),
|
46
153
|
"white": to-rgb($white)
|
47
154
|
)
|
48
155
|
) !default;
|
49
156
|
$utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
|
157
|
+
|
158
|
+
$utilities-border-subtle: (
|
159
|
+
"primary-subtle": var(--#{$prefix}primary-border-subtle),
|
160
|
+
"secondary-subtle": var(--#{$prefix}secondary-border-subtle),
|
161
|
+
"success-subtle": var(--#{$prefix}success-border-subtle),
|
162
|
+
"info-subtle": var(--#{$prefix}info-border-subtle),
|
163
|
+
"warning-subtle": var(--#{$prefix}warning-border-subtle),
|
164
|
+
"danger-subtle": var(--#{$prefix}danger-border-subtle),
|
165
|
+
"light-subtle": var(--#{$prefix}light-border-subtle),
|
166
|
+
"dark-subtle": var(--#{$prefix}dark-border-subtle)
|
167
|
+
) !default;
|
50
168
|
// scss-docs-end utilities-border-colors
|
51
169
|
|
170
|
+
$utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
|
171
|
+
|
52
172
|
$negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
|
53
173
|
|
54
174
|
$gutters: $spacers !default;
|
@@ -10,6 +10,7 @@
|
|
10
10
|
|
11
11
|
// Helpers
|
12
12
|
@import "mixins/breakpoints";
|
13
|
+
@import "mixins/color-mode";
|
13
14
|
@import "mixins/color-scheme";
|
14
15
|
@import "mixins/image";
|
15
16
|
@import "mixins/resize";
|
@@ -21,13 +22,11 @@
|
|
21
22
|
@import "mixins/utilities";
|
22
23
|
|
23
24
|
// Components
|
24
|
-
@import "mixins/alert";
|
25
25
|
@import "mixins/backdrop";
|
26
26
|
@import "mixins/buttons";
|
27
27
|
@import "mixins/caret";
|
28
28
|
@import "mixins/pagination";
|
29
29
|
@import "mixins/lists";
|
30
|
-
@import "mixins/list-group";
|
31
30
|
@import "mixins/forms";
|
32
31
|
@import "mixins/table-variants";
|
33
32
|
|
@@ -126,7 +126,6 @@
|
|
126
126
|
display: flex;
|
127
127
|
flex-shrink: 0;
|
128
128
|
align-items: center;
|
129
|
-
justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends
|
130
129
|
padding: var(--#{$prefix}modal-header-padding);
|
131
130
|
border-bottom: var(--#{$prefix}modal-header-border-width) solid var(--#{$prefix}modal-header-border-color);
|
132
131
|
@include border-top-radius(var(--#{$prefix}modal-inner-border-radius));
|
@@ -28,6 +28,8 @@
|
|
28
28
|
font-weight: var(--#{$prefix}nav-link-font-weight);
|
29
29
|
color: var(--#{$prefix}nav-link-color);
|
30
30
|
text-decoration: if($link-decoration == none, null, none);
|
31
|
+
background: none;
|
32
|
+
border: 0;
|
31
33
|
@include transition($nav-link-transition);
|
32
34
|
|
33
35
|
&:hover,
|
@@ -36,8 +38,14 @@
|
|
36
38
|
text-decoration: if($link-hover-decoration == underline, none, null);
|
37
39
|
}
|
38
40
|
|
41
|
+
&:focus-visible {
|
42
|
+
outline: 0;
|
43
|
+
box-shadow: $nav-link-focus-box-shadow;
|
44
|
+
}
|
45
|
+
|
39
46
|
// Disabled state lightens text
|
40
|
-
&.disabled
|
47
|
+
&.disabled,
|
48
|
+
&:disabled {
|
41
49
|
color: var(--#{$prefix}nav-link-disabled-color);
|
42
50
|
pointer-events: none;
|
43
51
|
cursor: default;
|
@@ -63,7 +71,6 @@
|
|
63
71
|
|
64
72
|
.nav-link {
|
65
73
|
margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
|
66
|
-
background: none;
|
67
74
|
border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
|
68
75
|
@include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
|
69
76
|
|
@@ -73,13 +80,6 @@
|
|
73
80
|
isolation: isolate;
|
74
81
|
border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
|
75
82
|
}
|
76
|
-
|
77
|
-
&.disabled,
|
78
|
-
&:disabled {
|
79
|
-
color: var(--#{$prefix}nav-link-disabled-color);
|
80
|
-
background-color: transparent;
|
81
|
-
border-color: transparent;
|
82
|
-
}
|
83
83
|
}
|
84
84
|
|
85
85
|
.nav-link.active,
|
@@ -110,15 +110,7 @@
|
|
110
110
|
// scss-docs-end nav-pills-css-vars
|
111
111
|
|
112
112
|
.nav-link {
|
113
|
-
background: none;
|
114
|
-
border: 0;
|
115
113
|
@include border-radius(var(--#{$prefix}nav-pills-border-radius));
|
116
|
-
|
117
|
-
&:disabled {
|
118
|
-
color: var(--#{$prefix}nav-link-disabled-color);
|
119
|
-
background-color: transparent;
|
120
|
-
border-color: transparent;
|
121
|
-
}
|
122
114
|
}
|
123
115
|
|
124
116
|
.nav-link.active,
|
@@ -129,6 +121,39 @@
|
|
129
121
|
}
|
130
122
|
|
131
123
|
|
124
|
+
//
|
125
|
+
// Underline
|
126
|
+
//
|
127
|
+
|
128
|
+
.nav-underline {
|
129
|
+
// scss-docs-start nav-underline-css-vars
|
130
|
+
--#{$prefix}nav-underline-gap: #{$nav-underline-gap};
|
131
|
+
--#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};
|
132
|
+
--#{$prefix}nav-underline-link-active-color: #{$nav-underline-link-active-color};
|
133
|
+
// scss-docs-end nav-underline-css-vars
|
134
|
+
|
135
|
+
gap: var(--#{$prefix}nav-underline-gap);
|
136
|
+
|
137
|
+
.nav-link {
|
138
|
+
padding-right: 0;
|
139
|
+
padding-left: 0;
|
140
|
+
border-bottom: var(--#{$prefix}nav-underline-border-width) solid transparent;
|
141
|
+
|
142
|
+
&:hover,
|
143
|
+
&:focus {
|
144
|
+
border-bottom-color: currentcolor;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
.nav-link.active,
|
149
|
+
.show > .nav-link {
|
150
|
+
font-weight: $font-weight-bold;
|
151
|
+
color: var(--#{$prefix}nav-underline-link-active-color);
|
152
|
+
border-bottom-color: currentcolor;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
|
132
157
|
//
|
133
158
|
// Justified variants
|
134
159
|
//
|
@@ -100,9 +100,11 @@
|
|
100
100
|
margin-bottom: 0;
|
101
101
|
list-style: none;
|
102
102
|
|
103
|
-
.
|
104
|
-
|
105
|
-
|
103
|
+
.nav-link {
|
104
|
+
&.active,
|
105
|
+
&.show {
|
106
|
+
color: var(--#{$prefix}navbar-active-color);
|
107
|
+
}
|
106
108
|
}
|
107
109
|
|
108
110
|
.dropdown-menu {
|
@@ -264,7 +266,8 @@
|
|
264
266
|
@include deprecate("`.navbar-light`", "v5.2.0", "v6.0.0", true);
|
265
267
|
}
|
266
268
|
|
267
|
-
.navbar-dark
|
269
|
+
.navbar-dark,
|
270
|
+
.navbar[data-bs-theme="dark"] {
|
268
271
|
// scss-docs-start navbar-dark-css-vars
|
269
272
|
--#{$prefix}navbar-color: #{$navbar-dark-color};
|
270
273
|
--#{$prefix}navbar-hover-color: #{$navbar-dark-hover-color};
|
@@ -276,3 +279,11 @@
|
|
276
279
|
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
|
277
280
|
// scss-docs-end navbar-dark-css-vars
|
278
281
|
}
|
282
|
+
|
283
|
+
@if $enable-dark-mode {
|
284
|
+
@include color-mode(dark) {
|
285
|
+
.navbar-toggler-icon {
|
286
|
+
--#{$prefix}navbar-toggler-icon-bg: #{escape-svg($navbar-dark-toggler-icon-bg)};
|
287
|
+
}
|
288
|
+
}
|
289
|
+
}
|
@@ -12,6 +12,8 @@
|
|
12
12
|
--#{$prefix}offcanvas-border-width: #{$offcanvas-border-width};
|
13
13
|
--#{$prefix}offcanvas-border-color: #{$offcanvas-border-color};
|
14
14
|
--#{$prefix}offcanvas-box-shadow: #{$offcanvas-box-shadow};
|
15
|
+
--#{$prefix}offcanvas-transition: #{transform $offcanvas-transition-duration ease-in-out};
|
16
|
+
--#{$prefix}offcanvas-title-line-height: #{$offcanvas-title-line-height};
|
15
17
|
// scss-docs-end offcanvas-css-vars
|
16
18
|
}
|
17
19
|
|
@@ -42,7 +44,7 @@
|
|
42
44
|
background-clip: padding-box;
|
43
45
|
outline: 0;
|
44
46
|
@include box-shadow(var(--#{$prefix}offcanvas-box-shadow));
|
45
|
-
@include transition(
|
47
|
+
@include transition(var(--#{$prefix}offcanvas-transition));
|
46
48
|
|
47
49
|
&.offcanvas-start {
|
48
50
|
top: 0;
|
@@ -121,20 +123,17 @@
|
|
121
123
|
.offcanvas-header {
|
122
124
|
display: flex;
|
123
125
|
align-items: center;
|
124
|
-
justify-content: space-between;
|
125
126
|
padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
|
126
127
|
|
127
128
|
.btn-close {
|
128
129
|
padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
|
129
|
-
margin
|
130
|
-
margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
|
131
|
-
margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
|
130
|
+
margin: calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) calc(-.5 * var(--#{$prefix}offcanvas-padding-x)) calc(-.5 * var(--#{$prefix}offcanvas-padding-y)) auto;
|
132
131
|
}
|
133
132
|
}
|
134
133
|
|
135
134
|
.offcanvas-title {
|
136
135
|
margin-bottom: 0;
|
137
|
-
line-height: $offcanvas-title-line-height;
|
136
|
+
line-height: var(--#{$prefix}offcanvas-title-line-height);
|
138
137
|
}
|
139
138
|
|
140
139
|
.offcanvas-body {
|
@@ -75,7 +75,7 @@
|
|
75
75
|
margin-left: $pagination-margin-start;
|
76
76
|
}
|
77
77
|
|
78
|
-
@if $pagination-margin-start == ($pagination-border-width * -1) {
|
78
|
+
@if $pagination-margin-start == calc(#{$pagination-border-width} * -1) {
|
79
79
|
&:first-child {
|
80
80
|
.page-link {
|
81
81
|
@include border-start-radius(var(--#{$prefix}pagination-border-radius));
|
@@ -8,7 +8,8 @@
|
|
8
8
|
}
|
9
9
|
// scss-docs-end progress-keyframes
|
10
10
|
|
11
|
-
.progress
|
11
|
+
.progress,
|
12
|
+
.progress-stacked {
|
12
13
|
// scss-docs-start progress-css-vars
|
13
14
|
--#{$prefix}progress-height: #{$progress-height};
|
14
15
|
@include rfs($progress-font-size, --#{$prefix}progress-font-size);
|
@@ -46,6 +47,14 @@
|
|
46
47
|
background-size: var(--#{$prefix}progress-height) var(--#{$prefix}progress-height);
|
47
48
|
}
|
48
49
|
|
50
|
+
.progress-stacked > .progress {
|
51
|
+
overflow: visible;
|
52
|
+
}
|
53
|
+
|
54
|
+
.progress-stacked > .progress > .progress-bar {
|
55
|
+
width: 100%;
|
56
|
+
}
|
57
|
+
|
49
58
|
@if $enable-transitions {
|
50
59
|
.progress-bar-animated {
|
51
60
|
animation: $progress-bar-animation-timing progress-bar-stripes;
|
@@ -87,7 +87,7 @@ hr {
|
|
87
87
|
font-style: $headings-font-style;
|
88
88
|
font-weight: $headings-font-weight;
|
89
89
|
line-height: $headings-line-height;
|
90
|
-
color: $
|
90
|
+
color: var(--#{$prefix}heading-color);
|
91
91
|
}
|
92
92
|
|
93
93
|
h1 {
|
@@ -217,6 +217,7 @@ small {
|
|
217
217
|
|
218
218
|
mark {
|
219
219
|
padding: $mark-padding;
|
220
|
+
color: var(--#{$prefix}highlight-color);
|
220
221
|
background-color: var(--#{$prefix}highlight-bg);
|
221
222
|
}
|
222
223
|
|
@@ -241,11 +242,11 @@ sup { top: -.5em; }
|
|
241
242
|
// Links
|
242
243
|
|
243
244
|
a {
|
244
|
-
color: var(--#{$prefix}link-color);
|
245
|
+
color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));
|
245
246
|
text-decoration: $link-decoration;
|
246
247
|
|
247
248
|
&:hover {
|
248
|
-
color: var(--#{$prefix}link-hover-color);
|
249
|
+
--#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);
|
249
250
|
text-decoration: $link-hover-decoration;
|
250
251
|
}
|
251
252
|
}
|
@@ -524,15 +525,15 @@ legend {
|
|
524
525
|
height: auto;
|
525
526
|
}
|
526
527
|
|
527
|
-
// 1.
|
528
|
-
// 2. This overrides the extra rounded corners on search inputs in iOS so that our
|
528
|
+
// 1. This overrides the extra rounded corners on search inputs in iOS so that our
|
529
529
|
// `.form-control` class can properly style them. Note that this cannot simply
|
530
530
|
// be added to `.form-control` as it's not specific enough. For details, see
|
531
531
|
// https://github.com/twbs/bootstrap/issues/11586.
|
532
|
+
// 2. Correct the outline style in Safari.
|
532
533
|
|
533
534
|
[type="search"] {
|
534
|
-
|
535
|
-
-
|
535
|
+
-webkit-appearance: textfield; // 1
|
536
|
+
outline-offset: -2px; // 2
|
536
537
|
}
|
537
538
|
|
538
539
|
// 1. A few input types should stay LTR
|