@gitlab/ui 113.3.2 → 113.5.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/components/base/new_dropdowns/base_dropdown/base_dropdown.js +6 -2
  3. package/dist/components/base/new_dropdowns/listbox/listbox.js +145 -44
  4. package/dist/components/base/new_dropdowns/listbox/listbox_search_input.js +2 -1
  5. package/dist/index.css +1 -1
  6. package/dist/index.css.map +1 -1
  7. package/dist/tailwind.css +1 -1
  8. package/dist/tailwind.css.map +1 -1
  9. package/package.json +4 -4
  10. package/src/components/base/animated_icon/animated_icon.scss +2 -2
  11. package/src/components/base/avatar/avatar.scss +12 -9
  12. package/src/components/base/badge/badge.scss +1 -1
  13. package/src/components/base/breadcrumb/breadcrumb.scss +1 -1
  14. package/src/components/base/button/button.scss +4 -4
  15. package/src/components/base/form/form_input/form_input.scss +4 -4
  16. package/src/components/base/new_dropdowns/base_dropdown/base_dropdown.vue +15 -5
  17. package/src/components/base/new_dropdowns/dropdown_item.scss +2 -2
  18. package/src/components/base/new_dropdowns/listbox/listbox.vue +321 -186
  19. package/src/components/base/new_dropdowns/listbox/listbox_search_input.vue +2 -0
  20. package/src/components/base/pagination/pagination.scss +4 -4
  21. package/src/components/charts/single_stat/single_stat.scss +3 -1
  22. package/src/scss/functions.scss +4 -3
  23. package/src/scss/mixins.scss +6 -4
  24. package/src/scss/variables.scss +9 -8
  25. package/src/vendor/bootstrap/scss/_custom-forms.scss +3 -3
  26. package/src/vendor/bootstrap/scss/_dropdown.scss +2 -1
  27. package/src/vendor/bootstrap/scss/_forms.scss +2 -1
  28. package/src/vendor/bootstrap/scss/_functions.scss +36 -30
  29. package/src/vendor/bootstrap/scss/_list-group.scss +2 -1
  30. package/src/vendor/bootstrap/scss/_modal.scss +1 -1
  31. package/src/vendor/bootstrap/scss/_navbar.scss +2 -1
  32. package/src/vendor/bootstrap/scss/_popover.scss +2 -1
  33. package/src/vendor/bootstrap/scss/_root.scss +3 -2
  34. package/src/vendor/bootstrap/scss/_tables.scss +2 -1
  35. package/src/vendor/bootstrap/scss/_variables.scss +21 -17
  36. package/src/vendor/bootstrap/scss/mixins/_alert.scss +3 -2
  37. package/src/vendor/bootstrap/scss/mixins/_background-variant.scss +3 -2
  38. package/src/vendor/bootstrap/scss/mixins/_badge.scss +2 -1
  39. package/src/vendor/bootstrap/scss/mixins/_border-radius.scss +5 -3
  40. package/src/vendor/bootstrap/scss/mixins/_box-shadow.scss +6 -5
  41. package/src/vendor/bootstrap/scss/mixins/_breakpoints.scss +6 -4
  42. package/src/vendor/bootstrap/scss/mixins/_buttons.scss +6 -5
  43. package/src/vendor/bootstrap/scss/mixins/_forms.scss +3 -2
  44. package/src/vendor/bootstrap/scss/mixins/_gradients.scss +2 -1
  45. package/src/vendor/bootstrap/scss/mixins/_grid-framework.scss +2 -1
  46. package/src/vendor/bootstrap/scss/mixins/_grid.scss +4 -3
  47. package/src/vendor/bootstrap/scss/mixins/_list-group.scss +2 -1
  48. package/src/vendor/bootstrap/scss/mixins/_table-row.scss +2 -1
  49. package/src/vendor/bootstrap/scss/mixins/_text-emphasis.scss +2 -1
  50. package/src/vendor/bootstrap/scss/mixins/_transition.scss +5 -4
  51. package/src/vendor/bootstrap/scss/utilities/_display.scss +2 -1
  52. package/src/vendor/bootstrap/scss/utilities/_embed.scss +5 -3
  53. package/src/vendor/bootstrap/scss/utilities/_flex.scss +2 -1
  54. package/src/vendor/bootstrap/scss/utilities/_float.scss +2 -1
  55. package/src/vendor/bootstrap/scss/utilities/_spacing.scss +2 -1
  56. package/src/vendor/bootstrap/scss/utilities/_text.scss +2 -1
  57. package/src/vendor/bootstrap/scss/vendor/_rfs.scss +13 -10
  58. package/src/vendor/bootstrap-vue/src/_variables.scss +3 -1
  59. package/src/vendor/bootstrap-vue/src/components/form-input/_form-input.scss +8 -6
  60. package/src/vendor/bootstrap-vue/src/components/table/_table.scss +5 -2
  61. package/src/vendor/bootstrap-vue/src/components/toast/_toast.scss +4 -2
  62. package/translations.js +3 -0
@@ -1,4 +1,5 @@
1
1
  @use 'sass:math';
2
+ @use 'sass:meta';
2
3
 
3
4
  /*
4
5
  * SASS preserves units in arithmetic operations. For example:
@@ -11,7 +12,7 @@
11
12
  }
12
13
 
13
14
  @function strip-unit($number) {
14
- @if type-of($number) == 'number' and not unitless($number) {
15
+ @if meta.type-of($number) == 'number' and not math.is-unitless($number) {
15
16
  @return math.div($number, extract-unit($number));
16
17
  }
17
18
 
@@ -39,9 +40,9 @@
39
40
  }
40
41
 
41
42
  @function px-to-rem($px, $font-size-base: 16px) {
42
- @if type-of($px) == 'number' {
43
+ @if meta.type-of($px) == 'number' {
43
44
  @return single-unit-rem($px, $font-size-base);
44
- } @else if type-of($px) == 'list' {
45
+ } @else if meta.type-of($px) == 'list' {
45
46
  @return multiple-units-rem($px, $font-size-base);
46
47
  } @else {
47
48
  @return $px;
@@ -1,3 +1,5 @@
1
+ @use 'sass:map';
2
+
1
3
  @mixin str-truncated($max-width: 82%) {
2
4
  display: inline-block;
3
5
  overflow: hidden;
@@ -102,7 +104,7 @@
102
104
  * @param $name Breakpoint name, such as `sm` or `md`.
103
105
  */
104
106
  @mixin gl-media-breakpoint-up($name) {
105
- $min: map-get($breakpoints, $name);
107
+ $min: map.get($breakpoints, $name);
106
108
  @if $min == null {
107
109
  @error "#{$name} is not a valid breakpoint for this @media query.";
108
110
  }
@@ -127,7 +129,7 @@
127
129
  * @param $name Breakpoint, such as `sm` or `md`. `xs` is not valid
128
130
  */
129
131
  @mixin gl-media-breakpoint-down($name) {
130
- $max: map-get($breakpoints, $name);
132
+ $max: map.get($breakpoints, $name);
131
133
  @if ($max == null or $max == 0) {
132
134
  @error "#{$name} is not a valid breakpoint for this @media query.";
133
135
  }
@@ -153,14 +155,14 @@
153
155
  @function get-font-size-variable($size, $fixed) {
154
156
  @if $fixed == true {
155
157
  @if map-has-key($gl-font-sizes-fixed, $size) {
156
- @return map-get($gl-font-sizes-fixed, $size);
158
+ @return map.get($gl-font-sizes-fixed, $size);
157
159
  } @else {
158
160
  @error "#{$size} is not a valid fixed font size property";
159
161
  @return null;
160
162
  }
161
163
  } @else {
162
164
  @if map-has-key($gl-font-sizes, $size) {
163
- @return map-get($gl-font-sizes, $size);
165
+ @return map.get($gl-font-sizes, $size);
164
166
  } @else {
165
167
  @error "#{$size} is not a valid font size property";
166
168
  @return null;
@@ -1,3 +1,4 @@
1
+ @use 'sass:map';
1
2
  @import 'functions';
2
3
  @import '../tokens/build/scss/tokens';
3
4
 
@@ -108,14 +109,14 @@ $gl-font-sizes-fixed: (
108
109
 
109
110
  // dynamic scale (default) resizes based on viewport width
110
111
  $gl-font-sizes: (
111
- 100: map-get($gl-font-sizes-fixed, 100),
112
- 200: map-get($gl-font-sizes-fixed, 200),
113
- 300: map-get($gl-font-sizes-fixed, 300),
114
- 400: map-get($gl-font-sizes-fixed, 400),
115
- 500: clamp-between(map-get($gl-font-sizes-fixed, 500), px-to-rem(20px)),
116
- 600: clamp-between(map-get($gl-font-sizes-fixed, 600), px-to-rem(25px)),
117
- 700: clamp-between(map-get($gl-font-sizes-fixed, 700), px-to-rem(30px)),
118
- 800: clamp-between(map-get($gl-font-sizes-fixed, 800), px-to-rem(36px)),
112
+ 100: map.get($gl-font-sizes-fixed, 100),
113
+ 200: map.get($gl-font-sizes-fixed, 200),
114
+ 300: map.get($gl-font-sizes-fixed, 300),
115
+ 400: map.get($gl-font-sizes-fixed, 400),
116
+ 500: clamp-between(map.get($gl-font-sizes-fixed, 500), px-to-rem(20px)),
117
+ 600: clamp-between(map.get($gl-font-sizes-fixed, 600), px-to-rem(25px)),
118
+ 700: clamp-between(map.get($gl-font-sizes-fixed, 700), px-to-rem(30px)),
119
+ 800: clamp-between(map.get($gl-font-sizes-fixed, 800), px-to-rem(36px)),
119
120
  );
120
121
 
121
122
  // Heading variables
@@ -404,6 +404,7 @@
404
404
  }
405
405
 
406
406
  &::-webkit-slider-thumb {
407
+ appearance: none;
407
408
  width: $custom-range-thumb-width;
408
409
  height: $custom-range-thumb-height;
409
410
  margin-top: ($custom-range-track-height - $custom-range-thumb-height) * .5; // Webkit specific
@@ -412,7 +413,6 @@
412
413
  @include border-radius($custom-range-thumb-border-radius);
413
414
  @include box-shadow($custom-range-thumb-box-shadow);
414
415
  @include transition($custom-forms-transition);
415
- appearance: none;
416
416
 
417
417
  &:active {
418
418
  @include gradient-bg($custom-range-thumb-active-bg);
@@ -431,6 +431,7 @@
431
431
  }
432
432
 
433
433
  &::-moz-range-thumb {
434
+ appearance: none;
434
435
  width: $custom-range-thumb-width;
435
436
  height: $custom-range-thumb-height;
436
437
  @include gradient-bg($custom-range-thumb-bg);
@@ -438,7 +439,6 @@
438
439
  @include border-radius($custom-range-thumb-border-radius);
439
440
  @include box-shadow($custom-range-thumb-box-shadow);
440
441
  @include transition($custom-forms-transition);
441
- appearance: none;
442
442
 
443
443
  &:active {
444
444
  @include gradient-bg($custom-range-thumb-active-bg);
@@ -457,6 +457,7 @@
457
457
  }
458
458
 
459
459
  &::-ms-thumb {
460
+ appearance: none;
460
461
  width: $custom-range-thumb-width;
461
462
  height: $custom-range-thumb-height;
462
463
  margin-top: 0; // Edge specific
@@ -467,7 +468,6 @@
467
468
  @include border-radius($custom-range-thumb-border-radius);
468
469
  @include box-shadow($custom-range-thumb-box-shadow);
469
470
  @include transition($custom-forms-transition);
470
- appearance: none;
471
471
 
472
472
  &:active {
473
473
  @include gradient-bg($custom-range-thumb-active-bg);
@@ -1,3 +1,4 @@
1
+ @use "sass:map";
1
2
  // The dropdown wrapper (`<div>`)
2
3
  .dropup,
3
4
  .dropright,
@@ -35,7 +36,7 @@
35
36
  @include box-shadow($dropdown-box-shadow);
36
37
  }
37
38
 
38
- @each $breakpoint in map-keys($grid-breakpoints) {
39
+ @each $breakpoint in map.keys($grid-breakpoints) {
39
40
  @include media-breakpoint-up($breakpoint) {
40
41
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
41
42
 
@@ -1,3 +1,4 @@
1
+ @use "sass:map";
1
2
  // stylelint-disable selector-no-qualifying-type
2
3
 
3
4
  //
@@ -260,7 +261,7 @@ textarea.form-control {
260
261
  // server side validation.
261
262
 
262
263
  @each $state, $data in $form-validation-states {
263
- @include form-validation-state($state, map-get($data, color), map-get($data, icon));
264
+ @include form-validation-state($state, map.get($data, color), map.get($data, icon));
264
265
  }
265
266
 
266
267
  // Inline forms
@@ -1,3 +1,9 @@
1
+ @use "sass:color";
2
+ @use "sass:list";
3
+ @use "sass:map";
4
+ @use "sass:math";
5
+ @use "sass:meta";
6
+ @use "sass:string";
1
7
  // Bootstrap functions
2
8
  //
3
9
  // Utility mixins and functions for evaluating source code across our variables, maps, and mixins.
@@ -8,9 +14,9 @@
8
14
  $prev-key: null;
9
15
  $prev-num: null;
10
16
  @each $key, $num in $map {
11
- @if $prev-num == null or unit($num) == "%" or unit($prev-num) == "%" {
17
+ @if $prev-num == null or math.unit($num) == "%" or math.unit($prev-num) == "%" {
12
18
  // Do nothing
13
- } @else if not comparable($prev-num, $num) {
19
+ } @else if not math.compatible($prev-num, $num) {
14
20
  @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
15
21
  } @else if $prev-num >= $num {
16
22
  @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
@@ -23,9 +29,9 @@
23
29
  // Starts at zero
24
30
  // Used to ensure the min-width of the lowest breakpoint starts at 0.
25
31
  @mixin _assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
26
- @if length($map) > 0 {
27
- $values: map-values($map);
28
- $first-value: nth($values, 1);
32
+ @if list.length($map) > 0 {
33
+ $values: map.values($map);
34
+ $first-value: list.nth($values, 1);
29
35
  @if $first-value != 0 {
30
36
  @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
31
37
  }
@@ -41,10 +47,10 @@
41
47
  // @param {String} $replace ('') - New value
42
48
  // @return {String} - Updated string
43
49
  @function str-replace($string, $search, $replace: "") {
44
- $index: str-index($string, $search);
50
+ $index: string.index($string, $search);
45
51
 
46
52
  @if $index {
47
- @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace);
53
+ @return string.slice($string, 1, $index - 1) + $replace + str-replace(string.slice($string, $index + string.length($search)), $search, $replace);
48
54
  }
49
55
 
50
56
  @return $string;
@@ -55,11 +61,11 @@
55
61
  // Requires the use of quotes around data URIs.
56
62
 
57
63
  @function escape-svg($string) {
58
- @if str-index($string, "data:image/svg+xml") {
64
+ @if string.index($string, "data:image/svg+xml") {
59
65
  @each $char, $encoded in $escaped-characters {
60
66
  // Do not escape the url brackets
61
- @if str-index($string, "url(") == 1 {
62
- $string: url("#{str-replace(str-slice($string, 6, -3), $char, $encoded)}");
67
+ @if string.index($string, "url(") == 1 {
68
+ $string: url("#{str-replace(string.slice($string, 6, -3), $char, $encoded)}");
63
69
  } @else {
64
70
  $string: str-replace($string, $char, $encoded);
65
71
  }
@@ -71,9 +77,9 @@
71
77
 
72
78
  // Color contrast
73
79
  @function color-yiq($color, $dark: $yiq-text-dark, $light: $yiq-text-light) {
74
- $r: red($color);
75
- $g: green($color);
76
- $b: blue($color);
80
+ $r: color.red($color);
81
+ $g: color.green($color);
82
+ $b: color.blue($color);
77
83
 
78
84
  $yiq: (($r * 299) + ($g * 587) + ($b * 114)) * .001;
79
85
 
@@ -86,24 +92,24 @@
86
92
 
87
93
  // Retrieve color Sass maps
88
94
  @function color($key: "blue") {
89
- @return map-get($colors, $key);
95
+ @return map.get($colors, $key);
90
96
  }
91
97
 
92
98
  @function theme-color($key: "primary") {
93
- @return map-get($theme-colors, $key);
99
+ @return map.get($theme-colors, $key);
94
100
  }
95
101
 
96
102
  @function gray($key: "100") {
97
- @return map-get($grays, $key);
103
+ @return map.get($grays, $key);
98
104
  }
99
105
 
100
106
  // Request a theme color level
101
107
  @function theme-color-level($color-name: "primary", $level: 0) {
102
108
  $color: theme-color($color-name);
103
109
  $color-base: if($level > 0, $black, $white);
104
- $level: abs($level);
110
+ $level: math.abs($level);
105
111
 
106
- @return mix($color-base, $color, $level * $theme-color-interval);
112
+ @return color.mix($color-base, $color, $level * $theme-color-interval);
107
113
  }
108
114
 
109
115
  // Return valid calc
@@ -116,11 +122,11 @@
116
122
  @return $value1;
117
123
  }
118
124
 
119
- @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
125
+ @if meta.type-of($value1) == number and meta.type-of($value2) == number and math.compatible($value1, $value2) {
120
126
  @return $value1 + $value2;
121
127
  }
122
128
 
123
- @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + unquote(" + ") + $value2);
129
+ @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + string.unquote(" + ") + $value2);
124
130
  }
125
131
 
126
132
  @function subtract($value1, $value2, $return-calc: true) {
@@ -136,21 +142,21 @@
136
142
  @return $value1;
137
143
  }
138
144
 
139
- @if type-of($value1) == number and type-of($value2) == number and comparable($value1, $value2) {
145
+ @if meta.type-of($value1) == number and meta.type-of($value2) == number and math.compatible($value1, $value2) {
140
146
  @return $value1 - $value2;
141
147
  }
142
148
 
143
- @if type-of($value2) != number {
144
- $value2: unquote("(") + $value2 + unquote(")");
149
+ @if meta.type-of($value2) != number {
150
+ $value2: string.unquote("(") + $value2 + string.unquote(")");
145
151
  }
146
152
 
147
- @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + unquote(" - ") + $value2);
153
+ @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + string.unquote(" - ") + $value2);
148
154
  }
149
155
 
150
156
  @function divide($dividend, $divisor, $precision: 10) {
151
157
  $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
152
- $dividend: abs($dividend);
153
- $divisor: abs($divisor);
158
+ $dividend: math.abs($dividend);
159
+ $divisor: math.abs($divisor);
154
160
  @if $dividend == 0 {
155
161
  @return 0;
156
162
  }
@@ -175,16 +181,16 @@
175
181
  }
176
182
  }
177
183
  $result: $result * $factor * $sign;
178
- $dividend-unit: unit($dividend);
179
- $divisor-unit: unit($divisor);
184
+ $dividend-unit: math.unit($dividend);
185
+ $divisor-unit: math.unit($divisor);
180
186
  $unit-map: (
181
187
  "px": 1px,
182
188
  "rem": 1rem,
183
189
  "em": 1em,
184
190
  "%": 1%
185
191
  );
186
- @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {
187
- $result: $result * map-get($unit-map, $dividend-unit);
192
+ @if ($dividend-unit != $divisor-unit and map.has-key($unit-map, $dividend-unit)) {
193
+ $result: $result * map.get($unit-map, $dividend-unit);
188
194
  }
189
195
  @return $result;
190
196
  }
@@ -1,3 +1,4 @@
1
+ @use "sass:map";
1
2
  // Base class
2
3
  //
3
4
  // Easily usable on <ul>, <ol>, or <div>.
@@ -89,7 +90,7 @@
89
90
  //
90
91
  // Change the layout of list group items from vertical (default) to horizontal.
91
92
 
92
- @each $breakpoint in map-keys($grid-breakpoints) {
93
+ @each $breakpoint in map.keys($grid-breakpoints) {
93
94
  @include media-breakpoint-up($breakpoint) {
94
95
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
95
96
 
@@ -42,8 +42,8 @@
42
42
 
43
43
  // When fading in the modal, animate it to slide down
44
44
  .modal.fade & {
45
- @include transition($modal-transition);
46
45
  transform: $modal-fade-transform;
46
+ @include transition($modal-transition);
47
47
  }
48
48
  .modal.show & {
49
49
  transform: $modal-show-transform;
@@ -1,3 +1,4 @@
1
+ @use "sass:map";
1
2
  // Contents
2
3
  //
3
4
  // Navbar
@@ -147,7 +148,7 @@
147
148
  // Generate series of `.navbar-expand-*` responsive classes for configuring
148
149
  // where your navbar collapses.
149
150
  .navbar-expand {
150
- @each $breakpoint in map-keys($grid-breakpoints) {
151
+ @each $breakpoint in map.keys($grid-breakpoints) {
151
152
  $next: breakpoint-next($breakpoint, $grid-breakpoints);
152
153
  $infix: breakpoint-infix($next, $grid-breakpoints);
153
154
 
@@ -1,3 +1,4 @@
1
+ @use "sass:color";
1
2
  .popover {
2
3
  position: absolute;
3
4
  top: 0;
@@ -156,7 +157,7 @@
156
157
  @include font-size($font-size-base);
157
158
  color: $popover-header-color;
158
159
  background-color: $popover-header-bg;
159
- border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);
160
+ border-bottom: $popover-border-width solid color.adjust($popover-header-bg, $lightness: -5%);
160
161
  @include border-top-radius($popover-inner-border-radius);
161
162
 
162
163
  &:empty {
@@ -1,3 +1,4 @@
1
+ @use "sass:meta";
1
2
  :root {
2
3
  // Custom variable values only support SassScript inside `#{}`.
3
4
  @each $color, $value in $colors {
@@ -14,6 +15,6 @@
14
15
 
15
16
  // Use `inspect` for lists so that quoted items keep the quotes.
16
17
  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
17
- --font-family-sans-serif: #{inspect($font-family-sans-serif)};
18
- --font-family-monospace: #{inspect($font-family-monospace)};
18
+ --font-family-sans-serif: #{meta.inspect($font-family-sans-serif)};
19
+ --font-family-monospace: #{meta.inspect($font-family-monospace)};
19
20
  }
@@ -1,3 +1,4 @@
1
+ @use "sass:map";
1
2
  //
2
3
  // Condensed table w/ half padding
3
4
  //
@@ -136,7 +137,7 @@
136
137
  // size of where your table will overflow.
137
138
 
138
139
  .table-responsive {
139
- @each $breakpoint in map-keys($grid-breakpoints) {
140
+ @each $breakpoint in map.keys($grid-breakpoints) {
140
141
  $next: breakpoint-next($breakpoint, $grid-breakpoints);
141
142
  $infix: breakpoint-infix($next, $grid-breakpoints);
142
143
 
@@ -1,3 +1,7 @@
1
+ @use "sass:color";
2
+ @use "sass:list";
3
+ @use "sass:map";
4
+ @use "sass:string";
1
5
  // Variables
2
6
  //
3
7
  // Variables should follow the `$component-state-property-size` formula for
@@ -18,7 +22,7 @@ $gray-900: #212529 !default;
18
22
  $black: #000 !default;
19
23
 
20
24
  $grays: () !default;
21
- $grays: map-merge(
25
+ $grays: map.merge(
22
26
  (
23
27
  "100": $gray-100,
24
28
  "200": $gray-200,
@@ -45,7 +49,7 @@ $teal: #20c997 !default;
45
49
  $cyan: #17a2b8 !default;
46
50
 
47
51
  $colors: () !default;
48
- $colors: map-merge(
52
+ $colors: map.merge(
49
53
  (
50
54
  "blue": $blue,
51
55
  "indigo": $indigo,
@@ -74,7 +78,7 @@ $light: $gray-100 !default;
74
78
  $dark: $gray-800 !default;
75
79
 
76
80
  $theme-colors: () !default;
77
- $theme-colors: map-merge(
81
+ $theme-colors: map.merge(
78
82
  (
79
83
  "primary": $primary,
80
84
  "secondary": $secondary,
@@ -135,7 +139,7 @@ $enable-deprecation-messages: true !default;
135
139
 
136
140
  $spacer: 1rem !default;
137
141
  $spacers: () !default;
138
- $spacers: map-merge(
142
+ $spacers: map.merge(
139
143
  (
140
144
  0: 0,
141
145
  1: ($spacer * .25),
@@ -149,7 +153,7 @@ $spacers: map-merge(
149
153
 
150
154
  // This variable affects the `.h-*` and `.w-*` classes.
151
155
  $sizes: () !default;
152
- $sizes: map-merge(
156
+ $sizes: map.merge(
153
157
  (
154
158
  25: 25%,
155
159
  50: 50%,
@@ -175,7 +179,7 @@ $body-color: $gray-900 !default;
175
179
 
176
180
  $link-color: theme-color("primary") !default;
177
181
  $link-decoration: none !default;
178
- $link-hover-color: darken($link-color, 15%) !default;
182
+ $link-hover-color: color.adjust($link-color, $lightness: -15%) !default;
179
183
  $link-hover-decoration: underline !default;
180
184
  // Darken percentage for links with `.text-*` class (e.g. `.text-success`)
181
185
  $emphasized-link-hover-darken-percentage: 15% !default;
@@ -260,7 +264,7 @@ $transition-collapse: height .35s ease !default;
260
264
  $transition-collapse-width: width .35s ease !default;
261
265
 
262
266
  $embed-responsive-aspect-ratios: () !default;
263
- $embed-responsive-aspect-ratios: join(
267
+ $embed-responsive-aspect-ratios: list.join(
264
268
  (
265
269
  (21 9),
266
270
  (16 9),
@@ -371,7 +375,7 @@ $table-dark-bg: $gray-800 !default;
371
375
  $table-dark-accent-bg: rgba($white, .05) !default;
372
376
  $table-dark-hover-color: $table-dark-color !default;
373
377
  $table-dark-hover-bg: rgba($white, .075) !default;
374
- $table-dark-border-color: lighten($table-dark-bg, 7.5%) !default;
378
+ $table-dark-border-color: color.adjust($table-dark-bg, $lightness: 7.5%) !default;
375
379
 
376
380
  $table-striped-order: odd !default;
377
381
 
@@ -484,7 +488,7 @@ $input-border-radius-lg: $border-radius-lg !default;
484
488
  $input-border-radius-sm: $border-radius-sm !default;
485
489
 
486
490
  $input-focus-bg: $input-bg !default;
487
- $input-focus-border-color: lighten($component-active-bg, 25%) !default;
491
+ $input-focus-border-color: color.adjust($component-active-bg, $lightness: 25%) !default;
488
492
  $input-focus-color: $input-color !default;
489
493
  $input-focus-width: $input-btn-focus-width !default;
490
494
  $input-focus-box-shadow: $input-btn-focus-box-shadow !default;
@@ -549,7 +553,7 @@ $custom-control-indicator-focus-box-shadow: $input-focus-box-shadow !default
549
553
  $custom-control-indicator-focus-border-color: $input-focus-border-color !default;
550
554
 
551
555
  $custom-control-indicator-active-color: $component-active-color !default;
552
- $custom-control-indicator-active-bg: lighten($component-active-bg, 35%) !default;
556
+ $custom-control-indicator-active-bg: color.adjust($component-active-bg, $lightness: 35%) !default;
553
557
  $custom-control-indicator-active-box-shadow: null !default;
554
558
  $custom-control-indicator-active-border-color: $custom-control-indicator-active-bg !default;
555
559
 
@@ -624,7 +628,7 @@ $custom-range-thumb-border-radius: 1rem !default;
624
628
  $custom-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;
625
629
  $custom-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;
626
630
  $custom-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in IE/Edge
627
- $custom-range-thumb-active-bg: lighten($component-active-bg, 35%) !default;
631
+ $custom-range-thumb-active-bg: color.adjust($component-active-bg, $lightness: 35%) !default;
628
632
  $custom-range-thumb-disabled-bg: $gray-500 !default;
629
633
 
630
634
  $custom-file-height: $input-height !default;
@@ -664,7 +668,7 @@ $form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;
664
668
  $form-feedback-icon-invalid: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='#{$form-feedback-icon-invalid-color}' viewBox='0 0 12 12'><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;
665
669
 
666
670
  $form-validation-states: () !default;
667
- $form-validation-states: map-merge(
671
+ $form-validation-states: map.merge(
668
672
  (
669
673
  "valid": (
670
674
  "color": $form-feedback-valid-color,
@@ -774,7 +778,7 @@ $dropdown-divider-margin-y: $nav-divider-margin-y !default;
774
778
  $dropdown-box-shadow: 0 .5rem 1rem rgba($black, .175) !default;
775
779
 
776
780
  $dropdown-link-color: $gray-900 !default;
777
- $dropdown-link-hover-color: darken($gray-900, 5%) !default;
781
+ $dropdown-link-hover-color: color.adjust($gray-900, $lightness: -5%) !default;
778
782
  $dropdown-link-hover-bg: $gray-200 !default;
779
783
 
780
784
  $dropdown-link-active-color: $component-active-color !default;
@@ -890,7 +894,7 @@ $popover-border-radius: $border-radius-lg !default;
890
894
  $popover-inner-border-radius: subtract($popover-border-radius, $popover-border-width) !default;
891
895
  $popover-box-shadow: 0 .25rem .5rem rgba($black, .2) !default;
892
896
 
893
- $popover-header-bg: darken($popover-bg, 3%) !default;
897
+ $popover-header-bg: color.adjust($popover-bg, $lightness: -3%) !default;
894
898
  $popover-header-color: $headings-color !default;
895
899
  $popover-header-padding-y: .5rem !default;
896
900
  $popover-header-padding-x: .75rem !default;
@@ -903,7 +907,7 @@ $popover-arrow-width: 1rem !default;
903
907
  $popover-arrow-height: .5rem !default;
904
908
  $popover-arrow-color: $popover-bg !default;
905
909
 
906
- $popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
910
+ $popover-arrow-outer-color: color.adjust($popover-border-color, $alpha: .05) !default;
907
911
 
908
912
 
909
913
  // Toasts
@@ -1068,7 +1072,7 @@ $breadcrumb-margin-bottom: 1rem !default;
1068
1072
  $breadcrumb-bg: $gray-200 !default;
1069
1073
  $breadcrumb-divider-color: $gray-600 !default;
1070
1074
  $breadcrumb-active-color: $gray-600 !default;
1071
- $breadcrumb-divider: quote("/") !default;
1075
+ $breadcrumb-divider: string.quote("/") !default;
1072
1076
 
1073
1077
  $breadcrumb-border-radius: $border-radius !default;
1074
1078
 
@@ -1146,4 +1150,4 @@ $user-selects: all, auto, none !default;
1146
1150
  // Printing
1147
1151
 
1148
1152
  $print-page-size: a3 !default;
1149
- $print-body-min-width: map-get($grid-breakpoints, "lg") !default;
1153
+ $print-body-min-width: map.get($grid-breakpoints, "lg") !default;
@@ -1,13 +1,14 @@
1
+ @use "sass:color";
1
2
  @mixin alert-variant($background, $border, $color) {
2
3
  color: $color;
3
4
  @include gradient-bg($background);
4
5
  border-color: $border;
5
6
 
6
7
  hr {
7
- border-top-color: darken($border, 5%);
8
+ border-top-color: color.adjust($border, $lightness: -5%);
8
9
  }
9
10
 
10
11
  .alert-link {
11
- color: darken($color, 10%);
12
+ color: color.adjust($color, $lightness: -10%);
12
13
  }
13
14
  }
@@ -1,3 +1,4 @@
1
+ @use "sass:color";
1
2
  // stylelint-disable declaration-no-important
2
3
 
3
4
  // Contextual backgrounds
@@ -9,7 +10,7 @@
9
10
  a#{$parent},
10
11
  button#{$parent} {
11
12
  @include hover-focus() {
12
- background-color: darken($color, 10%) !important;
13
+ background-color: color.adjust($color, $lightness: -10%) !important;
13
14
  }
14
15
  }
15
16
  @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning);
@@ -17,7 +18,7 @@
17
18
 
18
19
  @mixin bg-gradient-variant($parent, $color, $ignore-warning: false) {
19
20
  #{$parent} {
20
- background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;
21
+ background: $color linear-gradient(180deg, color.mix($body-bg, $color, 15%), $color) repeat-x !important;
21
22
  }
22
23
  @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning);
23
24
  }
@@ -1,3 +1,4 @@
1
+ @use "sass:color";
1
2
  @mixin badge-variant($bg) {
2
3
  color: color-yiq($bg);
3
4
  background-color: $bg;
@@ -5,7 +6,7 @@
5
6
  @at-root a#{&} {
6
7
  @include hover-focus() {
7
8
  color: color-yiq($bg);
8
- background-color: darken($bg, 10%);
9
+ background-color: color.adjust($bg, $lightness: -10%);
9
10
  }
10
11
 
11
12
  &:focus,
@@ -1,3 +1,5 @@
1
+ @use "sass:list";
2
+ @use "sass:meta";
1
3
  // stylelint-disable property-disallowed-list
2
4
  // Single side border-radius
3
5
 
@@ -5,10 +7,10 @@
5
7
  @function valid-radius($radius) {
6
8
  $return: ();
7
9
  @each $value in $radius {
8
- @if type-of($value) == number {
9
- $return: append($return, max($value, 0));
10
+ @if meta.type-of($value) == number {
11
+ $return: list.append($return, max($value, 0));
10
12
  } @else {
11
- $return: append($return, $value);
13
+ $return: list.append($return, $value);
12
14
  }
13
15
  }
14
16
  @return $return;