bootstrap 5.3.0 → 5.3.8

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.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +22 -21
  3. data/CHANGELOG.md +9 -0
  4. data/Gemfile +1 -0
  5. data/README.md +11 -10
  6. data/Rakefile +16 -5
  7. data/assets/javascripts/bootstrap/alert.js +2 -2
  8. data/assets/javascripts/bootstrap/base-component.js +5 -3
  9. data/assets/javascripts/bootstrap/button.js +2 -2
  10. data/assets/javascripts/bootstrap/carousel.js +2 -2
  11. data/assets/javascripts/bootstrap/collapse.js +4 -4
  12. data/assets/javascripts/bootstrap/dom/data.js +2 -2
  13. data/assets/javascripts/bootstrap/dom/event-handler.js +2 -2
  14. data/assets/javascripts/bootstrap/dom/manipulator.js +3 -3
  15. data/assets/javascripts/bootstrap/dom/selector-engine.js +3 -3
  16. data/assets/javascripts/bootstrap/dropdown.js +4 -4
  17. data/assets/javascripts/bootstrap/modal.js +2 -2
  18. data/assets/javascripts/bootstrap/offcanvas.js +2 -2
  19. data/assets/javascripts/bootstrap/popover.js +2 -2
  20. data/assets/javascripts/bootstrap/scrollspy.js +2 -2
  21. data/assets/javascripts/bootstrap/tab.js +14 -6
  22. data/assets/javascripts/bootstrap/toast.js +2 -3
  23. data/assets/javascripts/bootstrap/tooltip.js +6 -6
  24. data/assets/javascripts/bootstrap/util/backdrop.js +2 -3
  25. data/assets/javascripts/bootstrap/util/component-functions.js +2 -2
  26. data/assets/javascripts/bootstrap/util/config.js +2 -2
  27. data/assets/javascripts/bootstrap/util/focustrap.js +2 -3
  28. data/assets/javascripts/bootstrap/util/index.js +4 -5
  29. data/assets/javascripts/bootstrap/util/sanitizer.js +5 -3
  30. data/assets/javascripts/bootstrap/util/scrollbar.js +2 -2
  31. data/assets/javascripts/bootstrap/util/swipe.js +2 -2
  32. data/assets/javascripts/bootstrap/util/template-factory.js +3 -3
  33. data/assets/javascripts/bootstrap-sprockets.js +13 -13
  34. data/assets/javascripts/bootstrap.js +33 -25
  35. data/assets/javascripts/bootstrap.min.js +3 -3
  36. data/assets/stylesheets/_bootstrap-utilities.scss +19 -0
  37. data/assets/stylesheets/bootstrap/_accordion.scss +10 -15
  38. data/assets/stylesheets/bootstrap/_button-group.scss +8 -3
  39. data/assets/stylesheets/bootstrap/_buttons.scss +10 -1
  40. data/assets/stylesheets/bootstrap/_card.scss +9 -10
  41. data/assets/stylesheets/bootstrap/_carousel.scss +17 -35
  42. data/assets/stylesheets/bootstrap/_close.scss +9 -6
  43. data/assets/stylesheets/bootstrap/_functions.scss +2 -2
  44. data/assets/stylesheets/bootstrap/_list-group.scss +27 -25
  45. data/assets/stylesheets/bootstrap/_modal.scss +6 -3
  46. data/assets/stylesheets/bootstrap/_nav.scss +3 -15
  47. data/assets/stylesheets/bootstrap/_navbar.scss +1 -1
  48. data/assets/stylesheets/bootstrap/_offcanvas.scss +2 -1
  49. data/assets/stylesheets/bootstrap/_pagination.scss +1 -1
  50. data/assets/stylesheets/bootstrap/_progress.scss +1 -1
  51. data/assets/stylesheets/bootstrap/_reboot.scss +12 -5
  52. data/assets/stylesheets/bootstrap/_root.scss +3 -0
  53. data/assets/stylesheets/bootstrap/_spinners.scss +1 -0
  54. data/assets/stylesheets/bootstrap/_tables.scss +1 -1
  55. data/assets/stylesheets/bootstrap/_type.scss +1 -1
  56. data/assets/stylesheets/bootstrap/_utilities.scss +3 -3
  57. data/assets/stylesheets/bootstrap/_variables-dark.scss +20 -3
  58. data/assets/stylesheets/bootstrap/_variables.scss +42 -32
  59. data/assets/stylesheets/bootstrap/forms/_floating-labels.scss +20 -17
  60. data/assets/stylesheets/bootstrap/forms/_form-check.scss +3 -2
  61. data/assets/stylesheets/bootstrap/forms/_form-control.scss +1 -1
  62. data/assets/stylesheets/bootstrap/forms/_form-range.scss +3 -3
  63. data/assets/stylesheets/bootstrap/forms/_form-select.scss +1 -1
  64. data/assets/stylesheets/bootstrap/forms/_input-group.scss +1 -1
  65. data/assets/stylesheets/bootstrap/helpers/_color-bg.scss +1 -2
  66. data/assets/stylesheets/bootstrap/helpers/_vr.scss +1 -1
  67. data/assets/stylesheets/bootstrap/mixins/_banner.scss +2 -2
  68. data/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +11 -5
  69. data/assets/stylesheets/bootstrap/mixins/_forms.scss +12 -2
  70. data/assets/stylesheets/bootstrap/mixins/_grid.scss +3 -3
  71. data/assets/stylesheets/bootstrap/mixins/_visually-hidden.scss +6 -1
  72. data/bootstrap.gemspec +4 -4
  73. data/lib/bootstrap/engine.rb +17 -2
  74. data/lib/bootstrap/version.rb +2 -2
  75. data/tasks/updater/scss.rb +1 -1
  76. data/test/dummy_rails/config/application.rb +0 -2
  77. data/test/dummy_rails/public/favicon.ico +0 -0
  78. data/test/gemfiles/rails_4_2.gemfile +2 -1
  79. data/test/gemfiles/rails_5_0.gemfile +1 -2
  80. data/test/gemfiles/rails_5_1.gemfile +1 -2
  81. data/test/gemfiles/rails_5_2.gemfile +1 -2
  82. data/test/gemfiles/rails_6_0.gemfile +9 -1
  83. data/test/gemfiles/rails_6_1.gemfile +9 -1
  84. data/test/gemfiles/rails_7_0_dartsass.gemfile +15 -0
  85. data/test/gemfiles/rails_7_0_sassc.gemfile +15 -0
  86. data/test/rails_test.rb +0 -5
  87. data/test/test_helper.rb +6 -4
  88. metadata +42 -32
  89. data/assets/stylesheets/bootstrap/bootstrap-utilities.scss +0 -19
  90. data/test/gemfiles/rails_7_0.gemfile +0 -7
@@ -12,7 +12,6 @@
12
12
  --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
13
13
  --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
14
14
  --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
15
- --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
16
15
  // scss-docs-end close-css-vars
17
16
 
18
17
  box-sizing: content-box;
@@ -21,6 +20,7 @@
21
20
  padding: $btn-close-padding-y $btn-close-padding-x;
22
21
  color: var(--#{$prefix}btn-close-color);
23
22
  background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
23
+ filter: var(--#{$prefix}btn-close-filter);
24
24
  border: 0; // for button elements
25
25
  @include border-radius();
26
26
  opacity: var(--#{$prefix}btn-close-opacity);
@@ -47,17 +47,20 @@
47
47
  }
48
48
 
49
49
  @mixin btn-close-white() {
50
- filter: var(--#{$prefix}btn-close-white-filter);
50
+ --#{$prefix}btn-close-filter: #{$btn-close-filter-dark};
51
51
  }
52
52
 
53
53
  .btn-close-white {
54
54
  @include btn-close-white();
55
55
  }
56
56
 
57
+ :root,
58
+ [data-bs-theme="light"] {
59
+ --#{$prefix}btn-close-filter: #{$btn-close-filter};
60
+ }
61
+
57
62
  @if $enable-dark-mode {
58
- @include color-mode(dark) {
59
- .btn-close {
60
- @include btn-close-white();
61
- }
63
+ @include color-mode(dark, true) {
64
+ @include btn-close-white();
62
65
  }
63
66
  }
@@ -157,7 +157,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
157
157
 
158
158
  @each $color in $foregrounds {
159
159
  $contrast-ratio: contrast-ratio($background, $color);
160
- @if $contrast-ratio > $min-contrast-ratio {
160
+ @if $contrast-ratio >= $min-contrast-ratio {
161
161
  @return $color;
162
162
  } @else if $contrast-ratio > $max-ratio {
163
163
  $max-ratio: $contrast-ratio;
@@ -177,7 +177,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
177
177
  @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
178
178
  }
179
179
 
180
- // Return WCAG2.1 relative luminance
180
+ // Return WCAG2.2 relative luminance
181
181
  // See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
182
182
  // See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
183
183
  @function luminance($color) {
@@ -43,31 +43,6 @@
43
43
  }
44
44
  }
45
45
 
46
- // Interactive list items
47
- //
48
- // Use anchor or button elements instead of `li`s or `div`s to create interactive
49
- // list items. Includes an extra `.active` modifier class for selected items.
50
-
51
- .list-group-item-action {
52
- width: 100%; // For `<button>`s (anchors become 100% by default though)
53
- color: var(--#{$prefix}list-group-action-color);
54
- text-align: inherit; // For `<button>`s (anchors inherit)
55
-
56
- // Hover state
57
- &:hover,
58
- &:focus {
59
- z-index: 1; // Place hover/focus items above their siblings for proper border styling
60
- color: var(--#{$prefix}list-group-action-hover-color);
61
- text-decoration: none;
62
- background-color: var(--#{$prefix}list-group-action-hover-bg);
63
- }
64
-
65
- &:active {
66
- color: var(--#{$prefix}list-group-action-active-color);
67
- background-color: var(--#{$prefix}list-group-action-active-bg);
68
- }
69
- }
70
-
71
46
  // Individual list items
72
47
  //
73
48
  // Use on `li`s or `div`s within the `.list-group` parent.
@@ -115,6 +90,33 @@
115
90
  }
116
91
  }
117
92
 
93
+ // Interactive list items
94
+ //
95
+ // Use anchor or button elements instead of `li`s or `div`s to create interactive
96
+ // list items. Includes an extra `.active` modifier class for selected items.
97
+
98
+ .list-group-item-action {
99
+ width: 100%; // For `<button>`s (anchors become 100% by default though)
100
+ color: var(--#{$prefix}list-group-action-color);
101
+ text-align: inherit; // For `<button>`s (anchors inherit)
102
+
103
+ &:not(.active) {
104
+ // Hover state
105
+ &:hover,
106
+ &:focus {
107
+ z-index: 1; // Place hover/focus items above their siblings for proper border styling
108
+ color: var(--#{$prefix}list-group-action-hover-color);
109
+ text-decoration: none;
110
+ background-color: var(--#{$prefix}list-group-action-hover-bg);
111
+ }
112
+
113
+ &:active {
114
+ color: var(--#{$prefix}list-group-action-active-color);
115
+ background-color: var(--#{$prefix}list-group-action-active-bg);
116
+ }
117
+ }
118
+ }
119
+
118
120
  // Horizontal
119
121
  //
120
122
  // Change the layout of list group items from vertical (default) to horizontal.
@@ -59,8 +59,8 @@
59
59
 
60
60
  // When fading in the modal, animate it to slide down
61
61
  .modal.fade & {
62
- @include transition($modal-transition);
63
62
  transform: $modal-fade-transform;
63
+ @include transition($modal-transition);
64
64
  }
65
65
  .modal.show & {
66
66
  transform: $modal-show-transform;
@@ -126,14 +126,17 @@
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));
133
132
 
134
133
  .btn-close {
135
134
  padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
136
- margin: calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)) calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto;
135
+ // Split properties to avoid invalid calc() function if value is 0
136
+ margin-top: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
137
+ margin-right: calc(-.5 * var(--#{$prefix}modal-header-padding-x));
138
+ margin-bottom: calc(-.5 * var(--#{$prefix}modal-header-padding-y));
139
+ margin-left: auto;
137
140
  }
138
141
  }
139
142
 
@@ -44,7 +44,8 @@
44
44
  }
45
45
 
46
46
  // Disabled state lightens text
47
- &.disabled {
47
+ &.disabled,
48
+ &:disabled {
48
49
  color: var(--#{$prefix}nav-link-disabled-color);
49
50
  pointer-events: none;
50
51
  cursor: default;
@@ -79,13 +80,6 @@
79
80
  isolation: isolate;
80
81
  border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
81
82
  }
82
-
83
- &.disabled,
84
- &:disabled {
85
- color: var(--#{$prefix}nav-link-disabled-color);
86
- background-color: transparent;
87
- border-color: transparent;
88
- }
89
83
  }
90
84
 
91
85
  .nav-link.active,
@@ -117,12 +111,6 @@
117
111
 
118
112
  .nav-link {
119
113
  @include border-radius(var(--#{$prefix}nav-pills-border-radius));
120
-
121
- &:disabled {
122
- color: var(--#{$prefix}nav-link-disabled-color);
123
- background-color: transparent;
124
- border-color: transparent;
125
- }
126
114
  }
127
115
 
128
116
  .nav-link.active,
@@ -181,8 +169,8 @@
181
169
  .nav-justified {
182
170
  > .nav-link,
183
171
  .nav-item {
184
- flex-basis: 0;
185
172
  flex-grow: 1;
173
+ flex-basis: 0;
186
174
  text-align: center;
187
175
  }
188
176
  }
@@ -139,8 +139,8 @@
139
139
  // the default flexbox row orientation. Requires the use of `flex-wrap: wrap`
140
140
  // on the `.navbar` parent.
141
141
  .navbar-collapse {
142
- flex-basis: 100%;
143
142
  flex-grow: 1;
143
+ flex-basis: 100%;
144
144
  // For always expanded or extra full navbars, ensure content aligns itself
145
145
  // properly vertically. Can be easily overridden with flex utilities.
146
146
  align-items: center;
@@ -123,14 +123,15 @@
123
123
  .offcanvas-header {
124
124
  display: flex;
125
125
  align-items: center;
126
- justify-content: space-between;
127
126
  padding: var(--#{$prefix}offcanvas-padding-y) var(--#{$prefix}offcanvas-padding-x);
128
127
 
129
128
  .btn-close {
130
129
  padding: calc(var(--#{$prefix}offcanvas-padding-y) * .5) calc(var(--#{$prefix}offcanvas-padding-x) * .5);
130
+ // Split properties to avoid invalid calc() function if value is 0
131
131
  margin-top: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
132
132
  margin-right: calc(-.5 * var(--#{$prefix}offcanvas-padding-x));
133
133
  margin-bottom: calc(-.5 * var(--#{$prefix}offcanvas-padding-y));
134
+ margin-left: auto;
134
135
  }
135
136
  }
136
137
 
@@ -75,7 +75,7 @@
75
75
  margin-left: $pagination-margin-start;
76
76
  }
77
77
 
78
- @if $pagination-margin-start == calc(#{$pagination-border-width} * -1) {
78
+ @if $pagination-margin-start == calc(-1 * #{$pagination-border-width}) {
79
79
  &:first-child {
80
80
  .page-link {
81
81
  @include border-start-radius(var(--#{$prefix}pagination-border-radius));
@@ -3,7 +3,7 @@
3
3
  // scss-docs-start progress-keyframes
4
4
  @if $enable-transitions {
5
5
  @keyframes progress-bar-stripes {
6
- 0% { background-position-x: $progress-height; }
6
+ 0% { background-position-x: var(--#{$prefix}progress-height); }
7
7
  }
8
8
  }
9
9
  // scss-docs-end progress-keyframes
@@ -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
 
@@ -498,9 +499,9 @@ legend {
498
499
  width: 100%;
499
500
  padding: 0;
500
501
  margin-bottom: $legend-margin-bottom;
501
- @include font-size($legend-font-size);
502
502
  font-weight: $legend-font-weight;
503
503
  line-height: inherit;
504
+ @include font-size($legend-font-size);
504
505
 
505
506
  + * {
506
507
  clear: left; // 2
@@ -524,15 +525,21 @@ legend {
524
525
  height: auto;
525
526
  }
526
527
 
527
- // 1. Correct the outline style in Safari.
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
- outline-offset: -2px; // 1
535
- -webkit-appearance: textfield; // 2
535
+ -webkit-appearance: textfield; // 1
536
+ outline-offset: -2px; // 2
537
+
538
+ // 3. Better affordance and consistent appearance for search cancel button
539
+ &::-webkit-search-cancel-button {
540
+ cursor: pointer;
541
+ filter: grayscale(1);
542
+ }
536
543
  }
537
544
 
538
545
  // 1. A few input types should stay LTR
@@ -91,6 +91,7 @@
91
91
  }
92
92
 
93
93
  --#{$prefix}code-color: #{$code-color};
94
+ --#{$prefix}highlight-color: #{$mark-color};
94
95
  --#{$prefix}highlight-bg: #{$mark-bg};
95
96
 
96
97
  // scss-docs-start root-border-var
@@ -171,6 +172,8 @@
171
172
  --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};
172
173
 
173
174
  --#{$prefix}code-color: #{$code-color-dark};
175
+ --#{$prefix}highlight-color: #{$mark-color-dark};
176
+ --#{$prefix}highlight-bg: #{$mark-bg-dark};
174
177
 
175
178
  --#{$prefix}border-color: #{$border-color-dark};
176
179
  --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};
@@ -5,6 +5,7 @@
5
5
  .spinner-grow,
6
6
  .spinner-border {
7
7
  display: inline-block;
8
+ flex-shrink: 0;
8
9
  width: var(--#{$prefix}spinner-width);
9
10
  height: var(--#{$prefix}spinner-height);
10
11
  vertical-align: var(--#{$prefix}spinner-vertical-align);
@@ -79,7 +79,7 @@
79
79
  //
80
80
  // When borders are added on all sides of the cells, the corners can render odd when
81
81
  // these borders do not have the same color or if they are semi-transparent.
82
- // Therefor we add top and border bottoms to the `tr`s and left and right borders
82
+ // Therefore we add top and border bottoms to the `tr`s and left and right borders
83
83
  // to the `td`s or `th`s
84
84
 
85
85
  .table-bordered {
@@ -34,11 +34,11 @@
34
34
  // Type display classes
35
35
  @each $display, $font-size in $display-font-sizes {
36
36
  .display-#{$display} {
37
- @include font-size($font-size);
38
37
  font-family: $display-font-family;
39
38
  font-style: $display-font-style;
40
39
  font-weight: $display-font-weight;
41
40
  line-height: $display-line-height;
41
+ @include font-size($font-size);
42
42
  }
43
43
  }
44
44
 
@@ -77,9 +77,9 @@ $utilities: map-merge(
77
77
  property: box-shadow,
78
78
  class: shadow,
79
79
  values: (
80
- null: $box-shadow,
81
- sm: $box-shadow-sm,
82
- lg: $box-shadow-lg,
80
+ null: var(--#{$prefix}box-shadow),
81
+ sm: var(--#{$prefix}box-shadow-sm),
82
+ lg: var(--#{$prefix}box-shadow-lg),
83
83
  none: none,
84
84
  )
85
85
  ),
@@ -40,7 +40,7 @@ $light-border-subtle-dark: $gray-700 !default;
40
40
  $dark-border-subtle-dark: $gray-800 !default;
41
41
  // scss-docs-end theme-border-subtle-dark-variables
42
42
 
43
- $body-color-dark: $gray-500 !default;
43
+ $body-color-dark: $gray-300 !default;
44
44
  $body-bg-dark: $gray-900 !default;
45
45
  $body-secondary-color-dark: rgba($body-color-dark, .75) !default;
46
46
  $body-secondary-bg-dark: $gray-800 !default;
@@ -53,6 +53,8 @@ $headings-color-dark: inherit !default;
53
53
  $link-color-dark: tint-color($primary, 40%) !default;
54
54
  $link-hover-color-dark: shift-color($link-color-dark, -$link-shade-percentage) !default;
55
55
  $code-color-dark: tint-color($code-color, 40%) !default;
56
+ $mark-color-dark: $body-color-dark !default;
57
+ $mark-bg-dark: $yellow-800 !default;
56
58
 
57
59
 
58
60
  //
@@ -80,6 +82,21 @@ $form-invalid-border-color-dark: $red-300 !default;
80
82
  $accordion-icon-color-dark: $primary-text-emphasis-dark !default;
81
83
  $accordion-icon-active-color-dark: $primary-text-emphasis-dark !default;
82
84
 
83
- $accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
84
- $accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
85
+ $accordion-button-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>") !default;
86
+ $accordion-button-active-icon-dark: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color-dark}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708'/></svg>") !default;
85
87
  // scss-docs-end sass-dark-mode-vars
88
+
89
+
90
+ //
91
+ // Carousel
92
+ //
93
+
94
+ $carousel-indicator-active-bg-dark: $carousel-dark-indicator-active-bg !default;
95
+ $carousel-caption-color-dark: $carousel-dark-caption-color !default;
96
+ $carousel-control-icon-filter-dark: $carousel-dark-control-icon-filter !default;
97
+
98
+ //
99
+ // Close button
100
+ //
101
+
102
+ $btn-close-filter-dark: $btn-close-white-filter !default;
@@ -67,8 +67,8 @@ $colors: (
67
67
  ) !default;
68
68
  // scss-docs-end colors-map
69
69
 
70
- // The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.
71
- // See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast
70
+ // The contrast ratio to reach against white, to determine if color changes from "light" to "dark". Acceptable values for WCAG 2.2 are 3, 4.5 and 7.
71
+ // See https://www.w3.org/TR/WCAG/#contrast-minimum
72
72
  $min-contrast-ratio: 4.5 !default;
73
73
 
74
74
  // Customize the light and dark text colors for use in our color contrast function.
@@ -705,6 +705,10 @@ $hr-border-color: null !default; // Allows for inherited colors
705
705
  $hr-border-width: var(--#{$prefix}border-width) !default;
706
706
  $hr-opacity: .25 !default;
707
707
 
708
+ // scss-docs-start vr-variables
709
+ $vr-border-width: var(--#{$prefix}border-width) !default;
710
+ // scss-docs-end vr-variables
711
+
708
712
  $legend-margin-bottom: .5rem !default;
709
713
  $legend-font-size: 1.5rem !default;
710
714
  $legend-font-weight: null !default;
@@ -714,6 +718,7 @@ $dt-font-weight: $font-weight-bold !default;
714
718
  $list-inline-padding: .5rem !default;
715
719
 
716
720
  $mark-padding: .1875em !default;
721
+ $mark-color: $body-color !default;
717
722
  $mark-bg: $yellow-100 !default;
718
723
  // scss-docs-end type-variables
719
724
 
@@ -730,7 +735,7 @@ $table-cell-padding-x-sm: .25rem !default;
730
735
 
731
736
  $table-cell-vertical-align: top !default;
732
737
 
733
- $table-color: var(--#{$prefix}body-color) !default;
738
+ $table-color: var(--#{$prefix}emphasis-color) !default;
734
739
  $table-bg: var(--#{$prefix}body-bg) !default;
735
740
  $table-accent-bg: transparent !default;
736
741
 
@@ -738,17 +743,17 @@ $table-th-font-weight: null !default;
738
743
 
739
744
  $table-striped-color: $table-color !default;
740
745
  $table-striped-bg-factor: .05 !default;
741
- $table-striped-bg: rgba($black, $table-striped-bg-factor) !default;
746
+ $table-striped-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-striped-bg-factor) !default;
742
747
 
743
748
  $table-active-color: $table-color !default;
744
749
  $table-active-bg-factor: .1 !default;
745
- $table-active-bg: rgba($black, $table-active-bg-factor) !default;
750
+ $table-active-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-active-bg-factor) !default;
746
751
 
747
752
  $table-hover-color: $table-color !default;
748
753
  $table-hover-bg-factor: .075 !default;
749
- $table-hover-bg: rgba($black, $table-hover-bg-factor) !default;
754
+ $table-hover-bg: rgba(var(--#{$prefix}emphasis-color-rgb), $table-hover-bg-factor) !default;
750
755
 
751
- $table-border-factor: .1 !default;
756
+ $table-border-factor: .2 !default;
752
757
  $table-border-width: var(--#{$prefix}border-width) !default;
753
758
  $table-border-color: var(--#{$prefix}border-color) !default;
754
759
 
@@ -838,6 +843,7 @@ $btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;
838
843
  $btn-link-color: var(--#{$prefix}link-color) !default;
839
844
  $btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;
840
845
  $btn-link-disabled-color: $gray-600 !default;
846
+ $btn-link-focus-shadow-rgb: to-rgb(mix(color-contrast($link-color), $link-color, 15%)) !default;
841
847
 
842
848
  // Allows for customizing button radius independently from global border radius
843
849
  $btn-border-radius: var(--#{$prefix}border-radius) !default;
@@ -899,7 +905,7 @@ $input-disabled-border-color: null !default;
899
905
  $input-color: var(--#{$prefix}body-color) !default;
900
906
  $input-border-color: var(--#{$prefix}border-color) !default;
901
907
  $input-border-width: $input-btn-border-width !default;
902
- $input-box-shadow: $box-shadow-inset !default;
908
+ $input-box-shadow: var(--#{$prefix}box-shadow-inset) !default;
903
909
 
904
910
  $input-border-radius: var(--#{$prefix}border-radius) !default;
905
911
  $input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
@@ -1015,7 +1021,7 @@ $form-select-feedback-icon-size: $input-height-inner-half $input-height-i
1015
1021
  $form-select-border-width: $input-border-width !default;
1016
1022
  $form-select-border-color: $input-border-color !default;
1017
1023
  $form-select-border-radius: $input-border-radius !default;
1018
- $form-select-box-shadow: $box-shadow-inset !default;
1024
+ $form-select-box-shadow: var(--#{$prefix}box-shadow-inset) !default;
1019
1025
 
1020
1026
  $form-select-focus-border-color: $input-focus-border-color !default;
1021
1027
  $form-select-focus-width: $input-focus-width !default;
@@ -1038,9 +1044,9 @@ $form-select-transition: $input-transition !default;
1038
1044
  $form-range-track-width: 100% !default;
1039
1045
  $form-range-track-height: .5rem !default;
1040
1046
  $form-range-track-cursor: pointer !default;
1041
- $form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;
1047
+ $form-range-track-bg: var(--#{$prefix}secondary-bg) !default;
1042
1048
  $form-range-track-border-radius: 1rem !default;
1043
- $form-range-track-box-shadow: $box-shadow-inset !default;
1049
+ $form-range-track-box-shadow: var(--#{$prefix}box-shadow-inset) !default;
1044
1050
 
1045
1051
  $form-range-thumb-width: 1rem !default;
1046
1052
  $form-range-thumb-height: $form-range-thumb-width !default;
@@ -1085,7 +1091,7 @@ $form-feedback-valid-color: $success !default;
1085
1091
  $form-feedback-invalid-color: $danger !default;
1086
1092
 
1087
1093
  $form-feedback-icon-valid-color: $form-feedback-valid-color !default;
1088
- $form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/></svg>") !default;
1094
+ $form-feedback-icon-valid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'><path fill='#{$form-feedback-icon-valid-color}' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1'/></svg>") !default;
1089
1095
  $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
1090
1096
  $form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}'><circle cx='6' cy='6' r='4.5'/><path stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/><circle cx='6' cy='8.2' r='.6' fill='#{$form-feedback-icon-invalid-color}' stroke='none'/></svg>") !default;
1091
1097
  // scss-docs-end form-feedback-variables
@@ -1216,7 +1222,8 @@ $navbar-dark-color: rgba($white, .55) !default;
1216
1222
  $navbar-dark-hover-color: rgba($white, .75) !default;
1217
1223
  $navbar-dark-active-color: $white !default;
1218
1224
  $navbar-dark-disabled-color: rgba($white, .25) !default;
1219
- $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
1225
+ $navbar-dark-icon-color: $navbar-dark-color !default;
1226
+ $navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-icon-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>") !default;
1220
1227
  $navbar-dark-toggler-border-color: rgba($white, .1) !default;
1221
1228
  $navbar-dark-brand-color: $navbar-dark-active-color !default;
1222
1229
  $navbar-dark-brand-hover-color: $navbar-dark-active-color !default;
@@ -1241,7 +1248,7 @@ $dropdown-border-width: var(--#{$prefix}border-width) !default;
1241
1248
  $dropdown-inner-border-radius: calc(#{$dropdown-border-radius} - #{$dropdown-border-width}) !default; // stylelint-disable-line function-disallowed-list
1242
1249
  $dropdown-divider-bg: $dropdown-border-color !default;
1243
1250
  $dropdown-divider-margin-y: $spacer * .5 !default;
1244
- $dropdown-box-shadow: $box-shadow !default;
1251
+ $dropdown-box-shadow: var(--#{$prefix}box-shadow) !default;
1245
1252
 
1246
1253
  $dropdown-link-color: var(--#{$prefix}body-color) !default;
1247
1254
  $dropdown-link-hover-color: $dropdown-link-color !default;
@@ -1295,7 +1302,7 @@ $pagination-color: var(--#{$prefix}link-color) !default;
1295
1302
  $pagination-bg: var(--#{$prefix}body-bg) !default;
1296
1303
  $pagination-border-radius: var(--#{$prefix}border-radius) !default;
1297
1304
  $pagination-border-width: var(--#{$prefix}border-width) !default;
1298
- $pagination-margin-start: calc(#{$pagination-border-width} * -1) !default; // stylelint-disable-line function-disallowed-list
1305
+ $pagination-margin-start: calc(-1 * #{$pagination-border-width}) !default; // stylelint-disable-line function-disallowed-list
1299
1306
  $pagination-border-color: var(--#{$prefix}border-color) !default;
1300
1307
 
1301
1308
  $pagination-focus-color: var(--#{$prefix}link-hover-color) !default;
@@ -1376,7 +1383,9 @@ $accordion-transition: $btn-transition, border-radius .15s ea
1376
1383
  $accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;
1377
1384
  $accordion-button-active-color: var(--#{$prefix}primary-text-emphasis) !default;
1378
1385
 
1379
- $accordion-button-focus-border-color: $input-focus-border-color !default;
1386
+ // fusv-disable
1387
+ $accordion-button-focus-border-color: $input-focus-border-color !default; // Deprecated in v5.3.3
1388
+ // fusv-enable
1380
1389
  $accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;
1381
1390
 
1382
1391
  $accordion-icon-width: 1.25rem !default;
@@ -1385,8 +1394,8 @@ $accordion-icon-active-color: $primary-text-emphasis !default;
1385
1394
  $accordion-icon-transition: transform .2s ease-in-out !default;
1386
1395
  $accordion-icon-transform: rotate(-180deg) !default;
1387
1396
 
1388
- $accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
1389
- $accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$accordion-icon-active-color}'><path fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/></svg>") !default;
1397
+ $accordion-button-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>") !default;
1398
+ $accordion-button-active-icon: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='#{$accordion-icon-active-color}' stroke-linecap='round' stroke-linejoin='round'><path d='m2 5 6 6 6-6'/></svg>") !default;
1390
1399
  // scss-docs-end accordion-variables
1391
1400
 
1392
1401
  // Tooltips
@@ -1430,7 +1439,7 @@ $popover-border-width: var(--#{$prefix}border-width) !default;
1430
1439
  $popover-border-color: var(--#{$prefix}border-color-translucent) !default;
1431
1440
  $popover-border-radius: var(--#{$prefix}border-radius-lg) !default;
1432
1441
  $popover-inner-border-radius: calc(#{$popover-border-radius} - #{$popover-border-width}) !default; // stylelint-disable-line function-disallowed-list
1433
- $popover-box-shadow: $box-shadow !default;
1442
+ $popover-box-shadow: var(--#{$prefix}box-shadow) !default;
1434
1443
 
1435
1444
  $popover-header-font-size: $font-size-base !default;
1436
1445
  $popover-header-bg: var(--#{$prefix}secondary-bg) !default;
@@ -1498,14 +1507,14 @@ $modal-dialog-margin-y-sm-up: 1.75rem !default;
1498
1507
 
1499
1508
  $modal-title-line-height: $line-height-base !default;
1500
1509
 
1501
- $modal-content-color: null !default;
1510
+ $modal-content-color: var(--#{$prefix}body-color) !default;
1502
1511
  $modal-content-bg: var(--#{$prefix}body-bg) !default;
1503
1512
  $modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;
1504
1513
  $modal-content-border-width: var(--#{$prefix}border-width) !default;
1505
1514
  $modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;
1506
1515
  $modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;
1507
- $modal-content-box-shadow-xs: $box-shadow-sm !default;
1508
- $modal-content-box-shadow-sm-up: $box-shadow !default;
1516
+ $modal-content-box-shadow-xs: var(--#{$prefix}box-shadow-sm) !default;
1517
+ $modal-content-box-shadow-sm-up: var(--#{$prefix}box-shadow) !default;
1509
1518
 
1510
1519
  $modal-backdrop-bg: $black !default;
1511
1520
  $modal-backdrop-opacity: .5 !default;
@@ -1543,9 +1552,6 @@ $alert-margin-bottom: 1rem !default;
1543
1552
  $alert-border-radius: var(--#{$prefix}border-radius) !default;
1544
1553
  $alert-link-font-weight: $font-weight-bold !default;
1545
1554
  $alert-border-width: var(--#{$prefix}border-width) !default;
1546
- $alert-bg-scale: -80% !default;
1547
- $alert-border-scale: -70% !default;
1548
- $alert-color-scale: 40% !default;
1549
1555
  $alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side
1550
1556
  // scss-docs-end alert-variables
1551
1557
 
@@ -1646,6 +1652,7 @@ $carousel-control-width: 15% !default;
1646
1652
  $carousel-control-opacity: .5 !default;
1647
1653
  $carousel-control-hover-opacity: .9 !default;
1648
1654
  $carousel-control-transition: opacity .15s ease !default;
1655
+ $carousel-control-icon-filter: null !default;
1649
1656
 
1650
1657
  $carousel-indicator-width: 30px !default;
1651
1658
  $carousel-indicator-height: 3px !default;
@@ -1663,17 +1670,17 @@ $carousel-caption-spacer: 1.25rem !default;
1663
1670
 
1664
1671
  $carousel-control-icon-width: 2rem !default;
1665
1672
 
1666
- $carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/></svg>") !default;
1667
- $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/></svg>") !default;
1673
+ $carousel-control-prev-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0'/></svg>") !default;
1674
+ $carousel-control-next-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$carousel-control-color}'><path d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708'/></svg>") !default;
1668
1675
 
1669
1676
  $carousel-transition-duration: .6s !default;
1670
1677
  $carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)
1671
1678
  // scss-docs-end carousel-variables
1672
1679
 
1673
1680
  // scss-docs-start carousel-dark-variables
1674
- $carousel-dark-indicator-active-bg: $black !default;
1675
- $carousel-dark-caption-color: $black !default;
1676
- $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;
1681
+ $carousel-dark-indicator-active-bg: $black !default; // Deprecated in v5.3.4
1682
+ $carousel-dark-caption-color: $black !default; // Deprecated in v5.3.4
1683
+ $carousel-dark-control-icon-filter: invert(1) grayscale(100) !default; // Deprecated in v5.3.4
1677
1684
  // scss-docs-end carousel-dark-variables
1678
1685
 
1679
1686
 
@@ -1700,13 +1707,14 @@ $btn-close-height: $btn-close-width !default;
1700
1707
  $btn-close-padding-x: .25em !default;
1701
1708
  $btn-close-padding-y: $btn-close-padding-x !default;
1702
1709
  $btn-close-color: $black !default;
1703
- $btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/></svg>") !default;
1710
+ $btn-close-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='#{$btn-close-color}'><path d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414'/></svg>") !default;
1704
1711
  $btn-close-focus-shadow: $focus-ring-box-shadow !default;
1705
1712
  $btn-close-opacity: .5 !default;
1706
1713
  $btn-close-hover-opacity: .75 !default;
1707
1714
  $btn-close-focus-opacity: 1 !default;
1708
1715
  $btn-close-disabled-opacity: .25 !default;
1709
- $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;
1716
+ $btn-close-filter: null !default;
1717
+ $btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default; // Deprecated in v5.3.4
1710
1718
  // scss-docs-end close-variables
1711
1719
 
1712
1720
 
@@ -1741,3 +1749,5 @@ $kbd-bg: var(--#{$prefix}body-color) !default;
1741
1749
  $nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6
1742
1750
 
1743
1751
  $pre-color: null !default;
1752
+
1753
+ @import "variables-dark"; // TODO: can be removed safely in v6, only here to avoid breaking changes in v5.3