@coreui/coreui 5.4.3 → 5.6.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 (141) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +5 -3
  3. package/dist/css/coreui-grid.css +2 -2
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +2 -2
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +2 -2
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +2 -2
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +11 -2
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +3 -3
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +11 -2
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +3 -3
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +11 -2
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +3 -3
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +11 -2
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +3 -3
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +337 -2
  28. package/dist/css/coreui.css.map +1 -1
  29. package/dist/css/coreui.min.css +3 -3
  30. package/dist/css/coreui.min.css.map +1 -1
  31. package/dist/css/coreui.rtl.css +332 -2
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +3 -3
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/css/themes/bootstrap/bootstrap.css +337 -2
  36. package/dist/css/themes/bootstrap/bootstrap.css.map +1 -1
  37. package/dist/css/themes/bootstrap/bootstrap.min.css +3 -3
  38. package/dist/css/themes/bootstrap/bootstrap.min.css.map +1 -1
  39. package/dist/css/themes/bootstrap/bootstrap.rtl.css +332 -2
  40. package/dist/css/themes/bootstrap/bootstrap.rtl.css.map +1 -1
  41. package/dist/css/themes/bootstrap/bootstrap.rtl.min.css +3 -3
  42. package/dist/css/themes/bootstrap/bootstrap.rtl.min.css.map +1 -1
  43. package/dist/js/bootstrap.bundle.js +874 -60
  44. package/dist/js/bootstrap.bundle.js.map +1 -1
  45. package/dist/js/bootstrap.bundle.min.js +3 -3
  46. package/dist/js/bootstrap.bundle.min.js.map +1 -1
  47. package/dist/js/bootstrap.esm.js +873 -53
  48. package/dist/js/bootstrap.esm.js.map +1 -1
  49. package/dist/js/bootstrap.esm.min.js +3 -3
  50. package/dist/js/bootstrap.esm.min.js.map +1 -1
  51. package/dist/js/bootstrap.js +874 -52
  52. package/dist/js/bootstrap.js.map +1 -1
  53. package/dist/js/bootstrap.min.js +3 -3
  54. package/dist/js/bootstrap.min.js.map +1 -1
  55. package/dist/js/coreui.bundle.js +874 -60
  56. package/dist/js/coreui.bundle.js.map +1 -1
  57. package/dist/js/coreui.bundle.min.js +3 -3
  58. package/dist/js/coreui.bundle.min.js.map +1 -1
  59. package/dist/js/coreui.esm.js +873 -53
  60. package/dist/js/coreui.esm.js.map +1 -1
  61. package/dist/js/coreui.esm.min.js +3 -3
  62. package/dist/js/coreui.esm.min.js.map +1 -1
  63. package/dist/js/coreui.js +874 -52
  64. package/dist/js/coreui.js.map +1 -1
  65. package/dist/js/coreui.min.js +3 -3
  66. package/dist/js/coreui.min.js.map +1 -1
  67. package/js/dist/alert.js +2 -2
  68. package/js/dist/base-component.js +3 -3
  69. package/js/dist/base-component.js.map +1 -1
  70. package/js/dist/button.js +2 -2
  71. package/js/dist/carousel.js +2 -2
  72. package/js/dist/chip-input.js +528 -0
  73. package/js/dist/chip-input.js.map +1 -0
  74. package/js/dist/chip.js +322 -0
  75. package/js/dist/chip.js.map +1 -0
  76. package/js/dist/collapse.js +2 -2
  77. package/js/dist/dom/data.js +2 -2
  78. package/js/dist/dom/event-handler.js +2 -2
  79. package/js/dist/dom/manipulator.js +2 -2
  80. package/js/dist/dom/selector-engine.js +2 -2
  81. package/js/dist/dropdown.js +2 -2
  82. package/js/dist/modal.js +2 -2
  83. package/js/dist/navigation.js +2 -2
  84. package/js/dist/offcanvas.js +2 -2
  85. package/js/dist/popover.js +2 -2
  86. package/js/dist/scrollspy.js +2 -2
  87. package/js/dist/sidebar.js +2 -2
  88. package/js/dist/tab.js +2 -2
  89. package/js/dist/toast.js +2 -2
  90. package/js/dist/tooltip.js +2 -2
  91. package/js/dist/util/backdrop.js +2 -2
  92. package/js/dist/util/component-functions.js +2 -2
  93. package/js/dist/util/config.js +2 -2
  94. package/js/dist/util/focustrap.js +2 -2
  95. package/js/dist/util/index.js +2 -2
  96. package/js/dist/util/sanitizer.js +2 -2
  97. package/js/dist/util/scrollbar.js +2 -2
  98. package/js/dist/util/swipe.js +2 -2
  99. package/js/dist/util/template-factory.js +2 -2
  100. package/js/index.esm.js +2 -0
  101. package/js/index.umd.js +4 -0
  102. package/js/src/base-component.js +1 -1
  103. package/js/src/chip-input.js +595 -0
  104. package/js/src/chip.js +365 -0
  105. package/package.json +34 -33
  106. package/scss/_banner.scss +2 -2
  107. package/scss/_buttons.scss +9 -5
  108. package/scss/_card.scss +2 -1
  109. package/scss/_carousel.scss +4 -2
  110. package/scss/_chip.import.scss +1 -0
  111. package/scss/_chip.scss +261 -0
  112. package/scss/_dropdown.scss +5 -3
  113. package/scss/_forms.scss +1 -0
  114. package/scss/_header.scss +3 -2
  115. package/scss/_list-group.scss +1 -1
  116. package/scss/_maps.scss +16 -1
  117. package/scss/_modal.scss +2 -1
  118. package/scss/_nav.scss +3 -2
  119. package/scss/_navbar.scss +5 -3
  120. package/scss/_pagination.scss +3 -2
  121. package/scss/_root.scss +5 -0
  122. package/scss/coreui.scss +1 -0
  123. package/scss/forms/_chip-input.import.scss +1 -0
  124. package/scss/forms/_chip-input.scss +109 -0
  125. package/scss/forms/_form-control.scss +2 -1
  126. package/scss/functions/_color.scss +5 -1
  127. package/scss/functions/_contrast-ratio.scss +3 -2
  128. package/scss/functions/_maps.scss +9 -1
  129. package/scss/functions/_math.scss +4 -3
  130. package/scss/helpers/_color-bg.scss +8 -4
  131. package/scss/helpers/_colored-links.scss +18 -9
  132. package/scss/mixins/_breakpoints.scss +9 -4
  133. package/scss/mixins/_buttons.scss +4 -4
  134. package/scss/mixins/_chip.scss +14 -0
  135. package/scss/mixins/_focus-ring.scss +9 -0
  136. package/scss/mixins/_forms.scss +3 -3
  137. package/scss/mixins/_grid.scss +4 -2
  138. package/scss/mixins/_ltr-rtl.scss +24 -12
  139. package/scss/mixins/_table-variants.scss +6 -4
  140. package/scss/mixins/_utilities.scss +22 -12
  141. package/scss/vendor/_rfs.scss +27 -19
@@ -0,0 +1,261 @@
1
+ @use "sass:map";
2
+ @use "mixins/border-radius" as *;
3
+ @use "mixins/chip" as *;
4
+ @use "mixins/focus-ring" as *;
5
+ @use "mixins/transition" as *;
6
+ @use "variables" as *;
7
+
8
+ // scss-docs-start chip-variables
9
+ $chip-font-size: .875rem !default;
10
+ $chip-font-weight: $font-weight-normal !default;
11
+ $chip-height: 1.75rem !default;
12
+ $chip-padding-x: .625rem !default;
13
+ $chip-gap: .3125rem !default;
14
+ $chip-border-radius: var(--#{$prefix}border-radius-pill) !default;
15
+ $chip-icon-size: 1rem !default;
16
+ $chip-img-size: 1.25rem !default;
17
+ $chip-img-border-radius: 50% !default;
18
+ $chip-remove-size: 1rem !default;
19
+ $chip-remove-opacity: .65 !default;
20
+ $chip-remove-hover-opacity: 1 !default;
21
+ $chip-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out, color .15s ease-in-out !default;
22
+
23
+ $chip-color: var(--#{$prefix}body-color) !default;
24
+ $chip-bg: var(--#{$prefix}secondary-bg) !default;
25
+ $chip-border-width: var(--#{$prefix}border-width) !default;
26
+ $chip-border-color: transparent !default;
27
+
28
+ $chip-active-color: rgba($white, .87) !default;
29
+ $chip-active-bg: var(--#{$prefix}primary) !default;
30
+ $chip-active-border-color: transparent !default;
31
+
32
+ $chip-hover-color: $chip-color !default;
33
+ $chip-hover-bg: color-mix(in srgb, var(--#{$prefix}secondary-bg) 95%, #000) !default;
34
+ $chip-hover-border-color: transparent !default;
35
+
36
+ $chip-font-size-sm: .75rem !default;
37
+ $chip-height-sm: 1.5rem !default;
38
+ $chip-padding-x-sm: .625rem !default;
39
+ $chip-gap-sm: .25rem !default;
40
+ $chip-icon-size-sm: .875rem !default;
41
+ $chip-img-size-sm: 1rem !default;
42
+ $chip-remove-size-sm: .875rem !default;
43
+
44
+ $chip-font-size-lg: 1rem !default;
45
+ $chip-height-lg: 2rem !default;
46
+ $chip-padding-x-lg: .75rem !default;
47
+ $chip-gap-lg: .375rem !default;
48
+ $chip-icon-size-lg: 1.25rem !default;
49
+ $chip-img-size-lg: 1.5rem !default;
50
+ $chip-remove-size-lg: 1.25rem !default;
51
+ // scss-docs-end chip-variables
52
+
53
+ .chip {
54
+ // scss-docs-start chip-css-vars
55
+ --#{$prefix}chip-height: #{$chip-height};
56
+ --#{$prefix}chip-padding-x: #{$chip-padding-x};
57
+ --#{$prefix}chip-gap: #{$chip-gap};
58
+ --#{$prefix}chip-font-size: #{$chip-font-size};
59
+ --#{$prefix}chip-font-weight: #{$chip-font-weight};
60
+ --#{$prefix}chip-border-radius: #{$chip-border-radius};
61
+ --#{$prefix}chip-img-size: #{$chip-img-size};
62
+ --#{$prefix}chip-img-border-radius: #{$chip-img-border-radius};
63
+ --#{$prefix}chip-icon-size: #{$chip-icon-size};
64
+ --#{$prefix}chip-remove-size: #{$chip-remove-size};
65
+ --#{$prefix}chip-remove-opacity: #{$chip-remove-opacity};
66
+ --#{$prefix}chip-remove-hover-opacity: #{$chip-remove-hover-opacity};
67
+ --#{$prefix}chip-transition: #{$chip-transition};
68
+
69
+ --#{$prefix}chip-color: var(--#{$prefix}text-emphasis, #{$chip-color});
70
+ --#{$prefix}chip-bg: var(--#{$prefix}bg-subtle, #{$chip-bg});
71
+ --#{$prefix}chip-border-width: #{$chip-border-width};
72
+ --#{$prefix}chip-border-color: #{$chip-border-color};
73
+
74
+ --#{$prefix}chip-active-color: var(--#{$prefix}contrast, #{$chip-active-color});
75
+ --#{$prefix}chip-active-bg: var(--#{$prefix}color, #{$chip-active-bg});
76
+ --#{$prefix}chip-active-border-color: #{$chip-active-border-color};
77
+
78
+ --#{$prefix}chip-hover-color: var(--#{$prefix}contrast, #{$chip-hover-color});
79
+ --#{$prefix}chip-hover-bg: var(--#{$prefix}color, #{$chip-hover-bg});
80
+ --#{$prefix}chip-hover-border-color: #{$chip-hover-border-color};
81
+ // scss-docs-end chip-css-vars
82
+
83
+ display: inline-flex;
84
+ gap: var(--#{$prefix}chip-gap);
85
+ align-items: center;
86
+ height: var(--#{$prefix}chip-height);
87
+ padding-inline: var(--#{$prefix}chip-padding-x);
88
+ font-size: var(--#{$prefix}chip-font-size);
89
+ font-weight: var(--#{$prefix}chip-font-weight);
90
+ color: var(--#{$prefix}chip-color);
91
+ text-decoration: none;
92
+ white-space: nowrap;
93
+ vertical-align: middle;
94
+ background-color: var(--#{$prefix}chip-bg);
95
+ border: var(--#{$prefix}chip-border-width) solid var(--#{$prefix}chip-border-color);
96
+ @include border-radius(var(--#{$prefix}chip-border-radius));
97
+ @include transition(var(--#{$prefix}chip-transition));
98
+
99
+ &.active {
100
+ color: var(--#{$prefix}chip-active-color);
101
+ background-color: var(--#{$prefix}chip-active-bg);
102
+ border-color: var(--#{$prefix}chip-active-border-color);
103
+ }
104
+
105
+ &.disabled,
106
+ &:disabled {
107
+ pointer-events: none;
108
+ opacity: .65;
109
+ }
110
+
111
+ &:focus-visible {
112
+ @include focus-ring();
113
+ }
114
+
115
+ .avatar {
116
+ --#{$prefix}avatar-width: var(--#{$prefix}chip-img-size);
117
+ --#{$prefix}avatar-height: var(--#{$prefix}chip-img-size);
118
+
119
+ font-size: inherit;
120
+
121
+ &:first-child {
122
+ margin-inline-start: -.375rem;
123
+ }
124
+ }
125
+ }
126
+
127
+ .chip-outline {
128
+ // scss-docs-start chip-outline-css-vars
129
+ --#{$prefix}chip-color: var(--#{$prefix}color, var(--#{$prefix}body-color));
130
+ --#{$prefix}chip-bg: transparent;
131
+ --#{$prefix}chip-border-color: var(--#{$prefix}color, var(--#{$prefix}border-color));
132
+ --#{$prefix}chip-hover-bg: var(--#{$prefix}bg-subtle, #{$chip-hover-bg});
133
+ --#{$prefix}chip-hover-color: var(--#{$prefix}text-emphasis, #{$chip-color});
134
+ --#{$prefix}chip-hover-border-color: var(--#{$prefix}color, var(--#{$prefix}border-color));
135
+ --#{$prefix}chip-active-bg: var(--#{$prefix}color, #{$chip-active-bg});
136
+ --#{$prefix}chip-active-color: var(--#{$prefix}contrast, #{$chip-active-color});
137
+ // scss-docs-end chip-outline-css-vars
138
+ }
139
+
140
+ .chip-clickable {
141
+ cursor: pointer;
142
+
143
+ &:hover {
144
+ color: var(--#{$prefix}chip-hover-color);
145
+ background-color: var(--#{$prefix}chip-hover-bg);
146
+ border-color: var(--#{$prefix}chip-hover-border-color);
147
+ }
148
+
149
+ &.active:hover {
150
+ color: var(--#{$prefix}chip-active-color);
151
+ background-color: var(--#{$prefix}chip-active-bg);
152
+ opacity: .9;
153
+ }
154
+ }
155
+
156
+ .chip-img {
157
+ width: var(--#{$prefix}chip-img-size);
158
+ height: var(--#{$prefix}chip-img-size);
159
+ @include border-radius(var(--#{$prefix}chip-img-border-radius));
160
+
161
+ &:first-child {
162
+ margin-inline-start: -.375rem;
163
+ }
164
+ }
165
+
166
+ .chip-icon {
167
+ display: flex;
168
+ flex-shrink: 0;
169
+ align-items: center;
170
+ justify-content: center;
171
+ margin-inline-start: calc(var(--#{$prefix}chip-gap) * -.25); // stylelint-disable-line function-disallowed-list
172
+
173
+ > svg {
174
+ display: block; // Prevents baseline alignment issues
175
+ width: var(--#{$prefix}chip-icon-size);
176
+ height: var(--#{$prefix}chip-icon-size);
177
+ }
178
+
179
+ > img {
180
+ width: var(--#{$prefix}chip-icon-size);
181
+ height: var(--#{$prefix}chip-icon-size);
182
+ object-fit: cover;
183
+ @include border-radius(var(--#{$prefix}chip-img-border-radius));
184
+ }
185
+ }
186
+
187
+ .chip-remove {
188
+ display: flex;
189
+ flex-shrink: 0;
190
+ align-items: center;
191
+ justify-content: center;
192
+ width: var(--#{$prefix}chip-min-height);
193
+ height: var(--#{$prefix}chip-min-height);
194
+ padding: 0;
195
+ margin-inline-end: calc(var(--#{$prefix}chip-padding-x) * -.25); // stylelint-disable-line function-disallowed-list
196
+ color: inherit;
197
+ cursor: pointer;
198
+ background: transparent;
199
+ border: 0;
200
+ opacity: var(--#{$prefix}chip-remove-opacity);
201
+ @include transition(opacity .15s ease-in-out);
202
+
203
+ &:hover {
204
+ opacity: var(--#{$prefix}chip-remove-hover-opacity);
205
+ }
206
+
207
+ &:focus-visible {
208
+ outline: 0;
209
+ opacity: 1;
210
+ @include focus-ring();
211
+ }
212
+
213
+ > svg {
214
+ display: block; // Prevents baseline alignment issues
215
+ width: var(--#{$prefix}chip-remove-size);
216
+ height: var(--#{$prefix}chip-remove-size);
217
+ }
218
+ }
219
+
220
+ //
221
+ // Chip sizes
222
+ //
223
+
224
+ .chip-lg,
225
+ .chip-input-lg .chip {
226
+ @include chip-size(
227
+ $chip-height-lg,
228
+ $chip-padding-x-lg,
229
+ $chip-gap-lg,
230
+ $chip-font-size-lg,
231
+ $chip-icon-size-lg,
232
+ $chip-img-size-lg,
233
+ $chip-remove-size-lg
234
+ );
235
+ }
236
+
237
+ .chip-sm,
238
+ .chip-input-sm .chip {
239
+ @include chip-size(
240
+ $chip-height-sm,
241
+ $chip-padding-x-sm,
242
+ $chip-gap-sm,
243
+ $chip-font-size-sm,
244
+ $chip-icon-size-sm,
245
+ $chip-img-size-sm,
246
+ $chip-remove-size-sm
247
+ );
248
+ }
249
+
250
+ // scss-docs-start chip-modifiers
251
+ @each $state in map.keys($theme-colors) {
252
+ .chip-#{$state} {
253
+ --#{$prefix}bg-subtle: var(--#{$prefix}#{$state}-bg-subtle);
254
+ --#{$prefix}color: var(--#{$prefix}#{$state});
255
+ --#{$prefix}color-rgb: var(--#{$prefix}#{$state}-rgb);
256
+ --#{$prefix}contrast: var(--#{$prefix}#{$state}-contrast);
257
+ --#{$prefix}text-emphasis: var(--#{$prefix}#{$state}-text-emphasis);
258
+ --#{$prefix}focus-ring-color: rgba(var(--#{$prefix}#{$state}-rgb), var(--#{$prefix}focus-ring-opacity));
259
+ }
260
+ }
261
+ // scss-docs-end chip-modifiers
@@ -189,7 +189,7 @@
189
189
  font-weight: $font-weight-normal;
190
190
  color: var(--#{$prefix}dropdown-link-color);
191
191
  text-align: inherit; // For `<button>`s
192
- text-decoration: if($link-decoration == none, null, none);
192
+ text-decoration: if(not sass($link-decoration == none): none);
193
193
  white-space: nowrap; // prevent links from randomly breaking onto new lines
194
194
  background-color: transparent; // For `<button>`s
195
195
  border: 0; // For `<button>`s
@@ -198,7 +198,8 @@
198
198
  &:hover,
199
199
  &:focus {
200
200
  color: var(--#{$prefix}dropdown-link-hover-color);
201
- text-decoration: if($link-hover-decoration == underline, none, null);
201
+ // stylelint-disable-next-line scss/at-function-named-arguments
202
+ text-decoration: if(sass($link-hover-decoration == underline): none);
202
203
  @include gradient-bg(var(--#{$prefix}dropdown-link-hover-bg));
203
204
  }
204
205
 
@@ -215,7 +216,8 @@
215
216
  pointer-events: none;
216
217
  background-color: transparent;
217
218
  // Remove CSS gradients if they're enabled
218
- background-image: if($enable-gradients, none, null);
219
+ // stylelint-disable-next-line scss/at-function-named-arguments
220
+ background-image: if(sass($enable-gradients): none);
219
221
  }
220
222
  }
221
223
 
package/scss/_forms.scss CHANGED
@@ -1,3 +1,4 @@
1
+ @forward "forms/chip-input";
1
2
  @forward "forms/labels";
2
3
  @forward "forms/form-text";
3
4
  @forward "forms/form-control";
package/scss/_header.scss CHANGED
@@ -89,13 +89,14 @@
89
89
  margin-inline-end: $header-brand-margin-end;
90
90
  @include font-size($header-brand-font-size);
91
91
  color: var(--#{$prefix}header-brand-color);
92
- text-decoration: if($link-decoration == none, null, none);
92
+ text-decoration: if(not sass($link-decoration == none): none);
93
93
  white-space: nowrap;
94
94
 
95
95
  &:hover,
96
96
  &:focus {
97
97
  color: var(--#{$prefix}header-brand-hover-color);
98
- text-decoration: if($link-hover-decoration == underline, none, null);
98
+ // stylelint-disable-next-line scss/at-function-named-arguments
99
+ text-decoration: if(sass($link-hover-decoration == underline): none);
99
100
  }
100
101
  }
101
102
 
@@ -57,7 +57,7 @@
57
57
  display: block;
58
58
  padding: var(--#{$prefix}list-group-item-padding-y) var(--#{$prefix}list-group-item-padding-x);
59
59
  color: var(--#{$prefix}list-group-color);
60
- text-decoration: if($link-decoration == none, null, none);
60
+ text-decoration: if(not sass($link-decoration == none): none);
61
61
  background-color: var(--#{$prefix}list-group-bg);
62
62
  border: var(--#{$prefix}list-group-border-width) solid var(--#{$prefix}list-group-border-color);
63
63
 
package/scss/_maps.scss CHANGED
@@ -1,5 +1,6 @@
1
1
  @use "sass:map";
2
2
  @use "functions/color" as *;
3
+ @use "functions/color-contrast" as *;
3
4
  @use "functions/maps" as *;
4
5
  @use "functions/to-rgb" as *;
5
6
  @use "variables" as *;
@@ -52,6 +53,19 @@ $theme-colors-border-subtle: (
52
53
  ) !default;
53
54
  // scss-docs-end theme-border-subtle-map
54
55
 
56
+ // scss-docs-start theme-contrast-map
57
+ $theme-colors-contrast: (
58
+ "primary": color-contrast($primary),
59
+ "secondary": color-contrast($secondary),
60
+ "success": color-contrast($success),
61
+ "info": color-contrast($info),
62
+ "warning": color-contrast($warning),
63
+ "danger": color-contrast($danger),
64
+ "light": color-contrast($light),
65
+ "dark": color-contrast($dark),
66
+ ) !default;
67
+ // scss-docs-end theme-contrast-map
68
+
55
69
  $theme-colors-rgb-dark: null !default;
56
70
  $theme-colors-text-dark: null !default;
57
71
  $theme-colors-bg-subtle-dark: null !default;
@@ -181,6 +195,7 @@ $utilities-border-subtle: (
181
195
 
182
196
  $utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$prefix", "$key", "link-underline") !default;
183
197
 
184
- $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
198
+ // stylelint-disable-next-line scss/at-function-named-arguments
199
+ $negative-spacers: if(sass($enable-negative-margins): negativify-map($spacers)) !default;
185
200
 
186
201
  $gutters: $spacers !default;
package/scss/_modal.scss CHANGED
@@ -217,7 +217,8 @@
217
217
  // scss-docs-start modal-fullscreen-loop
218
218
  @each $breakpoint in map.keys($grid-breakpoints) {
219
219
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
220
- $postfix: if($infix != "", $infix + "-down", "");
220
+ // stylelint-disable-next-line scss/at-function-named-arguments
221
+ $postfix: if(sass($infix != ""): $infix + "-down"; else: "");
221
222
 
222
223
  @include media-breakpoint-down($breakpoint) {
223
224
  .modal-fullscreen#{$postfix} {
package/scss/_nav.scss CHANGED
@@ -33,7 +33,7 @@
33
33
  @include font-size(var(--#{$prefix}nav-link-font-size));
34
34
  font-weight: var(--#{$prefix}nav-link-font-weight);
35
35
  color: var(--#{$prefix}nav-link-color);
36
- text-decoration: if($link-decoration == none, null, none);
36
+ text-decoration: if(not sass($link-decoration == none): none);
37
37
  background: none;
38
38
  border: 0;
39
39
  @include transition($nav-link-transition);
@@ -41,7 +41,8 @@
41
41
  &:hover,
42
42
  &:focus {
43
43
  color: var(--#{$prefix}nav-link-hover-color);
44
- text-decoration: if($link-hover-decoration == underline, none, null);
44
+ // stylelint-disable-next-line scss/at-function-named-arguments
45
+ text-decoration: if(sass($link-hover-decoration == underline): none);
45
46
  }
46
47
 
47
48
  &:focus-visible {
package/scss/_navbar.scss CHANGED
@@ -17,7 +17,8 @@
17
17
 
18
18
  .navbar {
19
19
  // scss-docs-start navbar-css-vars
20
- --#{$prefix}navbar-padding-x: #{if($navbar-padding-x == null, 0, $navbar-padding-x)};
20
+ // stylelint-disable-next-line scss/at-function-named-arguments
21
+ --#{$prefix}navbar-padding-x: #{if(sass($navbar-padding-x == null): 0; else: $navbar-padding-x)};
21
22
  --#{$prefix}navbar-padding-y: #{$navbar-padding-y};
22
23
  --#{$prefix}navbar-color: #{$navbar-light-color};
23
24
  --#{$prefix}navbar-hover-color: #{$navbar-light-hover-color};
@@ -80,13 +81,14 @@
80
81
  margin-inline-end: var(--#{$prefix}navbar-brand-margin-end);
81
82
  @include font-size(var(--#{$prefix}navbar-brand-font-size));
82
83
  color: var(--#{$prefix}navbar-brand-color);
83
- text-decoration: if($link-decoration == none, null, none);
84
+ text-decoration: if(not sass($link-decoration == none): none);
84
85
  white-space: nowrap;
85
86
 
86
87
  &:hover,
87
88
  &:focus {
88
89
  color: var(--#{$prefix}navbar-brand-hover-color);
89
- text-decoration: if($link-hover-decoration == underline, none, null);
90
+ // stylelint-disable-next-line scss/at-function-named-arguments
91
+ text-decoration: if(sass($link-hover-decoration == underline): none);
90
92
  }
91
93
  }
92
94
 
@@ -40,7 +40,7 @@
40
40
  padding: var(--#{$prefix}pagination-padding-y) var(--#{$prefix}pagination-padding-x);
41
41
  @include font-size(var(--#{$prefix}pagination-font-size));
42
42
  color: var(--#{$prefix}pagination-color);
43
- text-decoration: if($link-decoration == none, null, none);
43
+ text-decoration: if(not sass($link-decoration == none): none);
44
44
  background-color: var(--#{$prefix}pagination-bg);
45
45
  border: var(--#{$prefix}pagination-border-width) solid var(--#{$prefix}pagination-border-color);
46
46
  @include transition($pagination-transition);
@@ -48,7 +48,8 @@
48
48
  &:hover {
49
49
  z-index: 2;
50
50
  color: var(--#{$prefix}pagination-hover-color);
51
- text-decoration: if($link-hover-decoration == underline, none, null);
51
+ // stylelint-disable-next-line scss/at-function-named-arguments
52
+ text-decoration: if(sass($link-hover-decoration == underline): none);
52
53
  background-color: var(--#{$prefix}pagination-hover-bg);
53
54
  border-color: var(--#{$prefix}pagination-hover-border-color);
54
55
  }
package/scss/_root.scss CHANGED
@@ -43,6 +43,10 @@
43
43
  --#{$prefix}#{$color}-border-subtle: #{$value};
44
44
  }
45
45
 
46
+ @each $color, $value in $theme-colors-contrast {
47
+ --#{$prefix}#{$color}-contrast: #{$value};
48
+ }
49
+
46
50
  --#{$prefix}white-rgb: #{to-rgb($white)};
47
51
  --#{$prefix}black-rgb: #{to-rgb($black)};
48
52
 
@@ -154,6 +158,7 @@
154
158
  --#{$prefix}focus-ring-width: #{$focus-ring-width};
155
159
  --#{$prefix}focus-ring-opacity: #{$focus-ring-opacity};
156
160
  --#{$prefix}focus-ring-color: #{$focus-ring-color};
161
+ --#{$prefix}focus-ring-blur: #{$focus-ring-blur};
157
162
  // scss-docs-end root-focus-variables
158
163
 
159
164
  // scss-docs-start root-form-validation-variables
package/scss/coreui.scss CHANGED
@@ -39,6 +39,7 @@
39
39
  @forward "spinners";
40
40
  @forward "offcanvas";
41
41
  @forward "placeholders";
42
+ @forward "chip";
42
43
 
43
44
  @forward "avatar";
44
45
  @forward "callout";
@@ -0,0 +1 @@
1
+ @forward "chip-input";
@@ -0,0 +1,109 @@
1
+ @use "../mixins/border-radius" as *;
2
+ @use "../mixins/box-shadow" as *;
3
+ @use "../mixins/focus-ring" as *;
4
+ @use "../mixins/transition" as *;
5
+ @use "../vendor/rfs" as *;
6
+ @use "../variables" as *;
7
+
8
+ // scss-docs-start chip-input-variables
9
+ $chip-input-min-height: $input-height !default;
10
+ $chip-input-padding-y: .25rem !default;
11
+ $chip-input-padding-x: .75rem !default;
12
+ $chip-input-font-size: $input-font-size !default;
13
+ $chip-input-bg: var(--#{$prefix}body-bg) !default;
14
+ $chip-input-color: var(--#{$prefix}body-color) !default;
15
+ $chip-input-border-width: var(--#{$prefix}border-width) !default;
16
+ $chip-input-border-color: var(--#{$prefix}border-color) !default;
17
+ $chip-input-border-radius: var(--#{$prefix}border-radius) !default;
18
+ $chip-input-gap: .375rem !default;
19
+ $chip-input-transition: $input-transition !default;
20
+
21
+ $chip-input-min-height-sm: $input-height-sm !default;
22
+ $chip-input-padding-y-sm: .125rem !default;
23
+ $chip-input-padding-x-sm: .5rem !default;
24
+ $chip-input-font-size-sm: $input-font-size-sm !default;
25
+ $chip-input-border-radius-sm: var(--#{$prefix}border-radius-sm) !default;
26
+ $chip-input-gap-sm: .125rem !default;
27
+
28
+ $chip-input-min-height-lg: $input-height-lg !default;
29
+ $chip-input-padding-y-lg: .375rem !default;
30
+ $chip-input-padding-x-lg: 1rem !default;
31
+ $chip-input-font-size-lg: $input-font-size-lg !default;
32
+ $chip-input-border-radius-lg: var(--#{$prefix}border-radius-lg) !default;
33
+ $chip-input-gap-lg: .5rem !default;
34
+ // scss-docs-end chip-input-variables
35
+
36
+ .chip-input {
37
+ // scss-docs-start chip-input-css-vars
38
+ --#{$prefix}chip-input-min-height: #{$chip-input-min-height};
39
+ --#{$prefix}chip-input-padding-y: #{$chip-input-padding-y};
40
+ --#{$prefix}chip-input-padding-x: #{$chip-input-padding-x};
41
+ --#{$prefix}chip-input-font-size: #{$chip-input-font-size};
42
+ --#{$prefix}chip-input-bg: #{$chip-input-bg};
43
+ --#{$prefix}chip-input-color: #{$chip-input-color};
44
+ --#{$prefix}chip-input-border-width: #{$chip-input-border-width};
45
+ --#{$prefix}chip-input-border-color: #{$chip-input-border-color};
46
+ --#{$prefix}chip-input-border-radius: #{$chip-input-border-radius};
47
+ --#{$prefix}chip-input-gap: #{$chip-input-gap};
48
+ --#{$prefix}chip-input-transition: #{$chip-input-transition};
49
+ // scss-docs-end chip-input-css-vars
50
+
51
+ display: flex;
52
+ flex-wrap: wrap;
53
+ gap: var(--#{$prefix}chip-input-gap);
54
+ align-items: center;
55
+ min-height: var(--#{$prefix}chip-input-min-height);
56
+ padding: var(--#{$prefix}chip-input-padding-y) var(--#{$prefix}chip-input-padding-x);
57
+ @include font-size(var(--#{$prefix}chip-input-font-size));
58
+ color: var(--#{$prefix}chip-input-color);
59
+ background-color: var(--#{$prefix}chip-input-bg);
60
+ border: var(--#{$prefix}chip-input-border-width) solid var(--#{$prefix}chip-input-border-color);
61
+ @include border-radius(var(--#{$prefix}chip-input-border-radius), 0);
62
+ @include transition(var(--#{$prefix}chip-input-transition));
63
+
64
+ // Focus state when ghost input is focused
65
+ &:focus-within {
66
+ border-color: $input-focus-border-color;
67
+ @include focus-ring();
68
+ }
69
+
70
+ // Disabled state
71
+ &.disabled {
72
+ background-color: $input-disabled-bg;
73
+ opacity: 1;
74
+
75
+ > .chip {
76
+ opacity: .65;
77
+
78
+ .chip-dismiss {
79
+ pointer-events: none;
80
+ }
81
+ }
82
+ }
83
+ }
84
+
85
+ .chip-input-field {
86
+ flex: 1 1 auto;
87
+ margin: 0;
88
+ border: 0;
89
+ outline: 0;
90
+ }
91
+
92
+ // Sizing variants
93
+ .chip-input-lg {
94
+ --#{$prefix}chip-input-min-height: #{$chip-input-min-height-lg};
95
+ --#{$prefix}chip-input-padding-y: #{$chip-input-padding-y-lg};
96
+ --#{$prefix}chip-input-padding-x: #{$chip-input-padding-x-lg};
97
+ --#{$prefix}chip-input-border-radius: #{$chip-input-border-radius-lg};
98
+ --#{$prefix}chip-input-font-size: #{$chip-input-font-size-lg};
99
+ --#{$prefix}chip-input-gap: #{$chip-input-gap-lg};
100
+ }
101
+
102
+ .chip-input-sm {
103
+ --#{$prefix}chip-input-min-height: #{$chip-input-min-height-sm};
104
+ --#{$prefix}chip-input-padding-y: #{$chip-input-padding-y-sm};
105
+ --#{$prefix}chip-input-padding-x: #{$chip-input-padding-x-sm};
106
+ --#{$prefix}chip-input-border-radius: #{$chip-input-border-radius-sm};
107
+ --#{$prefix}chip-input-font-size: #{$chip-input-font-size-sm};
108
+ --#{$prefix}chip-input-gap: #{$chip-input-gap-sm};
109
+ }
@@ -64,7 +64,8 @@
64
64
  // https://github.com/twbs/bootstrap/issues/23307
65
65
  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
66
66
  // Multiply line-height by 1em if it has no unit
67
- height: if(math.unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
67
+ // stylelint-disable-next-line scss/at-function-named-arguments
68
+ height: if(sass(math.unit($input-line-height) == ""): $input-line-height * 1em; else: $input-line-height);
68
69
 
69
70
  // Android Chrome type="date" is taller than the other inputs
70
71
  // because of "margin: 1px 24px 1px 4px" inside the shadow DOM
@@ -13,6 +13,10 @@
13
13
 
14
14
  // Shade the color if the weight is positive, else tint it
15
15
  @function shift-color($color, $weight) {
16
- @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
16
+ @if $weight > 0 {
17
+ @return shade-color($color, $weight);
18
+ } @else {
19
+ @return tint-color($color, -$weight);
20
+ }
17
21
  }
18
22
  // scss-docs-end color-functions
@@ -11,7 +11,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
11
11
  $l1: luminance($background);
12
12
  $l2: luminance(opaque($background, $foreground));
13
13
 
14
- @return if($l1 > $l2, math.div($l1 + .05, $l2 + .05), math.div($l2 + .05, $l1 + .05));
14
+ @return if(sass($l1 > $l2): math.div($l1 + .05, $l2 + .05); else: math.div($l2 + .05, $l1 + .05));
15
15
  }
16
16
 
17
17
  // Return WCAG2.2 relative luminance
@@ -25,7 +25,8 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
25
25
  );
26
26
 
27
27
  @each $name, $value in $rgb {
28
- $value: if(math.div($value, 255) < .04045, math.div(math.div($value, 255), 12.92), list.nth($_luminance-list, math.round($value + 1)));
28
+ // stylelint-disable-next-line scss/at-function-named-arguments, @stylistic/function-whitespace-after
29
+ $value: if(sass(math.div($value, 255) < .04045): math.div(math.div($value, 255), 12.92); else: list.nth($_luminance-list, math.round($value + 1)));
29
30
  $rgb: map.merge($rgb, ($name: $value));
30
31
  }
31
32
 
@@ -14,7 +14,15 @@
14
14
  // allow to pass the $key and $value of the map as an function argument
15
15
  $_args: ();
16
16
  @each $arg in $args {
17
- $_args: list.append($_args, if($arg == "$prefix", $prefix, if($arg == "$key", $key, if($arg == "$value", $value, $arg))));
17
+ @if $arg == "$prefix" {
18
+ $_args: list.append($_args, $prefix);
19
+ } @else if $arg == "$key" {
20
+ $_args: list.append($_args, $key);
21
+ } @else if $arg == "$value" {
22
+ $_args: list.append($_args, $value);
23
+ } @else {
24
+ $_args: list.append($_args, $arg);
25
+ }
18
26
  }
19
27
 
20
28
  $_map: map.merge($_map, ($key: meta.call(meta.get-function($func), $_args...)));
@@ -17,7 +17,7 @@
17
17
  @return $value1 + $value2;
18
18
  }
19
19
 
20
- @return if($return-calc == true, calc(#{$value1} + #{$value2}), $value1 + string.unquote(" + ") + $value2);
20
+ @return if(sass($return-calc == true): calc(#{$value1} + #{$value2}); else: $value1 + string.unquote(" + ") + $value2);
21
21
  }
22
22
 
23
23
  @function subtract($value1, $value2, $return-calc: true) {
@@ -41,11 +41,12 @@
41
41
  $value2: string.unquote("(") + $value2 + string.unquote(")");
42
42
  }
43
43
 
44
- @return if($return-calc == true, calc(#{$value1} - #{$value2}), $value1 + string.unquote(" - ") + $value2);
44
+ @return if(sass($return-calc == true): calc(#{$value1} - #{$value2}); else: $value1 + string.unquote(" - ") + $value2);
45
45
  }
46
46
 
47
47
  @function divide($dividend, $divisor, $precision: 10) {
48
- $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);
48
+ // stylelint-disable-next-line scss/at-function-named-arguments
49
+ $sign: if(sass($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0): 1; else: -1);
49
50
  $dividend: abs($dividend);
50
51
  $divisor: abs($divisor);
51
52
  @if $dividend == 0 {