@coreui/coreui 4.2.6 → 5.0.0-alpha.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 (205) hide show
  1. package/LICENSE +1 -2
  2. package/README.md +1 -1
  3. package/dist/css/coreui-grid.css +133 -22
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +3 -5
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +216 -113
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +3 -11
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +151 -36
  12. package/dist/css/coreui-reboot.css.map +1 -1
  13. package/dist/css/coreui-reboot.min.css +3 -5
  14. package/dist/css/coreui-reboot.min.css.map +1 -1
  15. package/dist/css/coreui-reboot.rtl.css +159 -47
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +3 -11
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +1116 -104
  20. package/dist/css/coreui-utilities.css.map +1 -1
  21. package/dist/css/coreui-utilities.min.css +3 -5
  22. package/dist/css/coreui-utilities.min.css.map +1 -1
  23. package/dist/css/coreui-utilities.rtl.css +1261 -246
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +3 -11
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +2412 -1220
  28. package/dist/css/coreui.css.map +1 -1
  29. package/dist/css/coreui.min.css +3 -5
  30. package/dist/css/coreui.min.css.map +1 -1
  31. package/dist/css/coreui.rtl.css +2821 -1574
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +3 -11
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/js/coreui.bundle.js +80 -80
  36. package/dist/js/coreui.bundle.js.map +1 -1
  37. package/dist/js/coreui.bundle.min.js +4 -4
  38. package/dist/js/coreui.bundle.min.js.map +1 -1
  39. package/dist/js/coreui.esm.js +78 -78
  40. package/dist/js/coreui.esm.js.map +1 -1
  41. package/dist/js/coreui.esm.min.js +4 -4
  42. package/dist/js/coreui.esm.min.js.map +1 -1
  43. package/dist/js/coreui.js +80 -80
  44. package/dist/js/coreui.js.map +1 -1
  45. package/dist/js/coreui.min.js +4 -4
  46. package/dist/js/coreui.min.js.map +1 -1
  47. package/js/dist/alert.js +5 -5
  48. package/js/dist/alert.js.map +1 -1
  49. package/js/dist/base-component.js +6 -6
  50. package/js/dist/base-component.js.map +1 -1
  51. package/js/dist/button.js +5 -5
  52. package/js/dist/button.js.map +1 -1
  53. package/js/dist/carousel.js +5 -5
  54. package/js/dist/carousel.js.map +1 -1
  55. package/js/dist/collapse.js +5 -5
  56. package/js/dist/collapse.js.map +1 -1
  57. package/js/dist/dom/data.js +6 -6
  58. package/js/dist/dom/data.js.map +1 -1
  59. package/js/dist/dom/event-handler.js +6 -6
  60. package/js/dist/dom/event-handler.js.map +1 -1
  61. package/js/dist/dom/manipulator.js +7 -7
  62. package/js/dist/dom/manipulator.js.map +1 -1
  63. package/js/dist/dom/selector-engine.js +6 -6
  64. package/js/dist/dom/selector-engine.js.map +1 -1
  65. package/js/dist/dropdown.js +7 -7
  66. package/js/dist/dropdown.js.map +1 -1
  67. package/js/dist/modal.js +5 -5
  68. package/js/dist/modal.js.map +1 -1
  69. package/js/dist/navigation.js +5 -5
  70. package/js/dist/navigation.js.map +1 -1
  71. package/js/dist/offcanvas.js +6 -6
  72. package/js/dist/offcanvas.js.map +1 -1
  73. package/js/dist/popover.js +5 -5
  74. package/js/dist/popover.js.map +1 -1
  75. package/js/dist/scrollspy.js +12 -12
  76. package/js/dist/scrollspy.js.map +1 -1
  77. package/js/dist/sidebar.js +5 -5
  78. package/js/dist/sidebar.js.map +1 -1
  79. package/js/dist/tab.js +5 -5
  80. package/js/dist/tab.js.map +1 -1
  81. package/js/dist/toast.js +5 -5
  82. package/js/dist/toast.js.map +1 -1
  83. package/js/dist/tooltip.js +6 -6
  84. package/js/dist/tooltip.js.map +1 -1
  85. package/js/dist/util/backdrop.js +6 -6
  86. package/js/dist/util/backdrop.js.map +1 -1
  87. package/js/dist/util/component-functions.js +6 -6
  88. package/js/dist/util/component-functions.js.map +1 -1
  89. package/js/dist/util/config.js +6 -6
  90. package/js/dist/util/config.js.map +1 -1
  91. package/js/dist/util/focustrap.js +6 -6
  92. package/js/dist/util/focustrap.js.map +1 -1
  93. package/js/dist/util/index.js +6 -6
  94. package/js/dist/util/index.js.map +1 -1
  95. package/js/dist/util/sanitizer.js +6 -6
  96. package/js/dist/util/sanitizer.js.map +1 -1
  97. package/js/dist/util/scrollbar.js +6 -6
  98. package/js/dist/util/scrollbar.js.map +1 -1
  99. package/js/dist/util/swipe.js +6 -6
  100. package/js/dist/util/swipe.js.map +1 -1
  101. package/js/dist/util/template-factory.js +6 -6
  102. package/js/dist/util/template-factory.js.map +1 -1
  103. package/js/src/alert.js +2 -2
  104. package/js/src/base-component.js +3 -3
  105. package/js/src/button.js +2 -3
  106. package/js/src/carousel.js +2 -2
  107. package/js/src/collapse.js +2 -2
  108. package/js/src/dom/data.js +3 -3
  109. package/js/src/dom/event-handler.js +3 -3
  110. package/js/src/dom/manipulator.js +4 -4
  111. package/js/src/dom/selector-engine.js +3 -3
  112. package/js/src/dropdown.js +4 -4
  113. package/js/src/modal.js +2 -2
  114. package/js/src/navigation.js +2 -2
  115. package/js/src/offcanvas.js +3 -3
  116. package/js/src/popover.js +2 -2
  117. package/js/src/scrollspy.js +6 -6
  118. package/js/src/sidebar.js +2 -2
  119. package/js/src/tab.js +2 -2
  120. package/js/src/toast.js +2 -2
  121. package/js/src/tooltip.js +3 -3
  122. package/js/src/util/backdrop.js +3 -3
  123. package/js/src/util/component-functions.js +3 -3
  124. package/js/src/util/config.js +3 -3
  125. package/js/src/util/focustrap.js +3 -3
  126. package/js/src/util/index.js +3 -3
  127. package/js/src/util/sanitizer.js +3 -3
  128. package/js/src/util/scrollbar.js +3 -3
  129. package/js/src/util/swipe.js +3 -3
  130. package/js/src/util/template-factory.js +4 -3
  131. package/package.json +9 -6
  132. package/scss/_accordion.scss +9 -1
  133. package/scss/_alert.scss +9 -13
  134. package/scss/_avatar.scss +4 -4
  135. package/scss/_badge.scss +1 -10
  136. package/scss/_breadcrumb.scss +4 -9
  137. package/scss/_button-group.scss +4 -4
  138. package/scss/_buttons.scss +70 -15
  139. package/scss/_callout.scss +2 -2
  140. package/scss/_card.scss +7 -3
  141. package/scss/_carousel.scss +17 -7
  142. package/scss/_close.scss +30 -9
  143. package/scss/_dropdown.scss +9 -9
  144. package/scss/_functions.scss +6 -81
  145. package/scss/_images.scss +3 -3
  146. package/scss/_list-group.scss +22 -6
  147. package/scss/_maps.scss +71 -0
  148. package/scss/_mixins.scss +4 -9
  149. package/scss/_modal.scss +2 -2
  150. package/scss/_nav.scss +41 -4
  151. package/scss/_navbar.scss +14 -3
  152. package/scss/_offcanvas.scss +12 -10
  153. package/scss/_pagination.scss +2 -2
  154. package/scss/_progress.scss +10 -44
  155. package/scss/_reboot.scss +22 -21
  156. package/scss/_root.scss +133 -6
  157. package/scss/_sidebar.scss +11 -0
  158. package/scss/_tables.scss +1 -5
  159. package/scss/_toasts.scss +2 -2
  160. package/scss/_tooltip.scss +10 -10
  161. package/scss/_type.scss +3 -1
  162. package/scss/_utilities.scss +160 -53
  163. package/scss/_variables-dark.scss +109 -0
  164. package/scss/_variables.scss +402 -538
  165. package/scss/coreui-grid.scss +4 -8
  166. package/scss/coreui-reboot.scss +4 -7
  167. package/scss/coreui-utilities.scss +3 -7
  168. package/scss/coreui.scss +5 -10
  169. package/scss/forms/_floating-labels.scss +16 -1
  170. package/scss/forms/_form-check.scss +30 -53
  171. package/scss/forms/_form-control.scss +18 -11
  172. package/scss/forms/_form-range.scss +8 -8
  173. package/scss/forms/_form-select.scss +24 -14
  174. package/scss/forms/_form-text.scss +1 -1
  175. package/scss/forms/_input-group.scss +5 -5
  176. package/scss/forms/_labels.scss +2 -2
  177. package/scss/helpers/_colored-links.scss +2 -2
  178. package/scss/helpers/_ratio.scss +1 -1
  179. package/scss/helpers/_vr.scss +0 -1
  180. package/scss/mixins/_alert.scss +4 -1
  181. package/scss/mixins/_banner.scss +7 -0
  182. package/scss/mixins/_border-radius.scss +7 -7
  183. package/scss/mixins/_breakpoints.scss +0 -13
  184. package/scss/mixins/_buttons.scss +49 -53
  185. package/scss/mixins/_caret.scss +31 -26
  186. package/scss/mixins/_color-mode.scss +21 -0
  187. package/scss/mixins/_forms.scss +15 -14
  188. package/scss/mixins/_grid.scss +2 -2
  189. package/scss/mixins/_list-group.scss +22 -11
  190. package/scss/mixins/_lists.scss +1 -1
  191. package/scss/mixins/_utilities.scss +29 -14
  192. package/scss/sidebar/_sidebar-narrow.scss +6 -6
  193. package/scss/sidebar/_sidebar-nav.scss +4 -4
  194. package/scss/sidebar/_sidebar.scss +20 -20
  195. package/scss/tests/mixins/_color-modes.test.scss +69 -0
  196. package/scss/tests/mixins/_utilities.test.scss +393 -0
  197. package/scss/tests/utilities/_api.test.scss +75 -0
  198. package/scss/_header.scss +0 -195
  199. package/scss/_subheader.scss +0 -72
  200. package/scss/coreui-grid.rtl.scss +0 -12
  201. package/scss/coreui-reboot.rtl.scss +0 -12
  202. package/scss/coreui-utilities.rtl.scss +0 -12
  203. package/scss/coreui.rtl.scss +0 -12
  204. package/scss/mixins/_css-vars.scss +0 -87
  205. package/scss/mixins/_ltr-rtl.scss +0 -87
@@ -13,8 +13,8 @@
13
13
  padding: var(--#{$prefix}callout-padding-y) var(--#{$prefix}callout-padding-x);
14
14
  margin: var(--#{$prefix}callout-margin-y) var(--#{$prefix}callout-margin-x);
15
15
  border: var(--#{$prefix}callout-border-width) solid var(--#{$prefix}callout-border-color);
16
- @include ltr-rtl("border-left-width", var(--#{$prefix}callout-border-left-width));
17
- @include ltr-rtl("border-left-color", var(--#{$prefix}callout-border-left-color));
16
+ border-left-color: var(--#{$prefix}callout-border-left-color);
17
+ border-left-width: var(--#{$prefix}callout-border-left-width);
18
18
  @include border-radius(var(--#{$prefix}callout-border-radius));
19
19
  }
20
20
 
package/scss/_card.scss CHANGED
@@ -7,6 +7,8 @@
7
7
  --#{$prefix}card-spacer-y: #{$card-spacer-y};
8
8
  --#{$prefix}card-spacer-x: #{$card-spacer-x};
9
9
  --#{$prefix}card-title-spacer-y: #{$card-title-spacer-y};
10
+ --#{$prefix}card-title-color: #{$card-title-color};
11
+ --#{$prefix}card-subtitle-color: #{$card-subtitle-color};
10
12
  --#{$prefix}card-border-width: #{$card-border-width};
11
13
  --#{$prefix}card-border-color: #{$card-border-color};
12
14
  --#{$prefix}card-border-radius: #{$card-border-radius};
@@ -73,11 +75,13 @@
73
75
 
74
76
  .card-title {
75
77
  margin-bottom: var(--#{$prefix}card-title-spacer-y);
78
+ color: var(--#{$prefix}card-title-color);
76
79
  }
77
80
 
78
81
  .card-subtitle {
79
82
  margin-top: calc(-.5 * var(--#{$prefix}card-title-spacer-y)); // stylelint-disable-line function-disallowed-list
80
83
  margin-bottom: 0;
84
+ color: var(--#{$prefix}card-subtitle-color);
81
85
  }
82
86
 
83
87
  .card-text:last-child {
@@ -90,7 +94,7 @@
90
94
  }
91
95
 
92
96
  + .card-link {
93
- @include ltr-rtl("margin-left", var(--#{$prefix}card-spacer-x));
97
+ margin-left: var(--#{$prefix}card-spacer-x);
94
98
  }
95
99
  }
96
100
 
@@ -193,8 +197,8 @@
193
197
  margin-bottom: 0;
194
198
 
195
199
  + .card {
196
- @include ltr-rtl("margin-left", 0);
197
- @include ltr-rtl("border-left", 0);
200
+ margin-left: 0;
201
+ border-left: 0;
198
202
  }
199
203
 
200
204
  // Handle rounded corners
@@ -96,7 +96,7 @@
96
96
  justify-content: center; // 3. horizontally center contents
97
97
  width: $carousel-control-width;
98
98
  padding: 0;
99
- color: var(--#{$prefix}carousel-control-color, $carousel-control-color);
99
+ color: $carousel-control-color;
100
100
  text-align: center;
101
101
  background: none;
102
102
  border: 0;
@@ -106,7 +106,7 @@
106
106
  // Hover/focus state
107
107
  &:hover,
108
108
  &:focus {
109
- color: var(--#{$prefix}carousel-control-color, $carousel-control-color);
109
+ color: $carousel-control-color;
110
110
  text-decoration: none;
111
111
  outline: 0;
112
112
  opacity: $carousel-control-hover-opacity;
@@ -177,7 +177,7 @@
177
177
  margin-left: $carousel-indicator-spacer;
178
178
  text-indent: -999px;
179
179
  cursor: pointer;
180
- background-color: var(--#{$prefix}carousel-indicator-active-bg, $carousel-indicator-active-bg);
180
+ background-color: $carousel-indicator-active-bg;
181
181
  background-clip: padding-box;
182
182
  border: 0;
183
183
  // Use transparent borders to increase the hit area by 10px on top and bottom.
@@ -204,15 +204,13 @@
204
204
  left: (100% - $carousel-caption-width) * .5;
205
205
  padding-top: $carousel-caption-padding-y;
206
206
  padding-bottom: $carousel-caption-padding-y;
207
- color: var(--#{$prefix}carousel-caption-color, $carousel-caption-color);
207
+ color: $carousel-caption-color;
208
208
  text-align: center;
209
209
  }
210
210
 
211
211
  // Dark mode carousel
212
212
 
213
- .carousel-dark {
214
- --#{$prefix}carousel-indicator-active-bg: #{$carousel-dark-indicator-active-bg};
215
- --#{$prefix}carousel-caption-color: #{$carousel-dark-caption-color};
213
+ @mixin carousel-dark() {
216
214
  .carousel-control-prev-icon,
217
215
  .carousel-control-next-icon {
218
216
  filter: $carousel-dark-control-icon-filter;
@@ -226,3 +224,15 @@
226
224
  color: $carousel-dark-caption-color;
227
225
  }
228
226
  }
227
+
228
+ .carousel-dark {
229
+ @include carousel-dark();
230
+ }
231
+
232
+ @if $enable-dark-mode {
233
+ @include color-mode(dark) {
234
+ .carousel {
235
+ @include carousel-dark();
236
+ }
237
+ }
238
+ }
package/scss/_close.scss CHANGED
@@ -4,37 +4,58 @@
4
4
  // See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
5
5
 
6
6
  .btn-close {
7
+ --#{$prefix}btn-close-color: #{$btn-close-color};
8
+ --#{$prefix}btn-close-bg: #{ escape-svg($btn-close-bg) };
9
+ --#{$prefix}btn-close-opacity: #{$btn-close-opacity};
10
+ --#{$prefix}btn-close-hover-opacity: #{$btn-close-hover-opacity};
11
+ --#{$prefix}btn-close-focus-shadow: #{$btn-close-focus-shadow};
12
+ --#{$prefix}btn-close-focus-opacity: #{$btn-close-focus-opacity};
13
+ --#{$prefix}btn-close-disabled-opacity: #{$btn-close-disabled-opacity};
14
+ --#{$prefix}btn-close-white-filter: #{$btn-close-white-filter};
15
+
7
16
  box-sizing: content-box;
8
17
  width: $btn-close-width;
9
18
  height: $btn-close-height;
10
19
  padding: $btn-close-padding-y $btn-close-padding-x;
11
- color: var(--#{$prefix}btn-close-color, $btn-close-color);
12
- background: transparent var(--#{$prefix}btn-close-bg, escape-svg($btn-close-bg)) center / $btn-close-width auto no-repeat; // include transparent for button elements
20
+ color: var(--#{$prefix}btn-close-color);
21
+ background: transparent var(--#{$prefix}btn-close-bg) center / $btn-close-width auto no-repeat; // include transparent for button elements
13
22
  border: 0; // for button elements
14
23
  @include border-radius();
15
- opacity: $btn-close-opacity;
24
+ opacity: var(--#{$prefix}btn-close-opacity);
16
25
 
17
26
  // Override <a>'s hover style
18
27
  &:hover {
19
- color: var(--#{$prefix}btn-close-color, $btn-close-color);
28
+ color: var(--#{$prefix}btn-close-color);
20
29
  text-decoration: none;
21
- opacity: $btn-close-hover-opacity;
30
+ opacity: var(--#{$prefix}btn-close-hover-opacity);
22
31
  }
23
32
 
24
33
  &:focus {
25
34
  outline: 0;
26
- box-shadow: $btn-close-focus-shadow;
27
- opacity: $btn-close-focus-opacity;
35
+ box-shadow: var(--#{$prefix}btn-close-focus-shadow);
36
+ opacity: var(--#{$prefix}btn-close-focus-opacity);
28
37
  }
29
38
 
30
39
  &:disabled,
31
40
  &.disabled {
32
41
  pointer-events: none;
33
42
  user-select: none;
34
- opacity: $btn-close-disabled-opacity;
43
+ opacity: var(--#{$prefix}btn-close-disabled-opacity);
35
44
  }
36
45
  }
37
46
 
47
+ @mixin btn-close-white() {
48
+ filter: var(--#{$prefix}btn-close-white-filter);
49
+ }
50
+
38
51
  .btn-close-white {
39
- filter: $btn-close-white-filter;
52
+ @include btn-close-white();
53
+ }
54
+
55
+ @if $enable-dark-mode {
56
+ @include color-mode(dark) {
57
+ .btn-close {
58
+ @include btn-close-white();
59
+ }
60
+ }
40
61
  }
@@ -64,7 +64,7 @@
64
64
 
65
65
  &[data-coreui-popper] {
66
66
  top: 100%;
67
- @include ltr-rtl("left", 0);
67
+ left: 0;
68
68
  margin-top: var(--#{$prefix}dropdown-spacer);
69
69
  }
70
70
 
@@ -82,7 +82,7 @@
82
82
  }
83
83
 
84
84
  // scss-docs-start responsive-breakpoints
85
- // We deliberately hardcode the `cui-` prefix because we check
85
+ // We deliberately hardcode the `bs-` prefix because we check
86
86
  // this custom property in JS to determine Popper's positioning
87
87
 
88
88
  @each $breakpoint in map-keys($grid-breakpoints) {
@@ -128,10 +128,10 @@
128
128
  .dropend {
129
129
  .dropdown-menu[data-coreui-popper] {
130
130
  top: 0;
131
- @include ltr-rtl("right", auto);
132
- @include ltr-rtl("left", 100%);
131
+ right: auto;
132
+ left: 100%;
133
133
  margin-top: 0;
134
- @include ltr-rtl("margin-left", var(--#{$prefix}dropdown-spacer));
134
+ margin-left: var(--#{$prefix}dropdown-spacer);
135
135
  }
136
136
 
137
137
  .dropdown-toggle {
@@ -145,11 +145,10 @@
145
145
  .dropstart {
146
146
  .dropdown-menu[data-coreui-popper] {
147
147
  top: 0;
148
-
149
- @include ltr-rtl("right", 100%);
150
- @include ltr-rtl("left", auto);
148
+ right: 100%;
149
+ left: auto;
151
150
  margin-top: 0;
152
- @include ltr-rtl("margin-right", var(--#{$prefix}dropdown-spacer));
151
+ margin-right: var(--#{$prefix}dropdown-spacer);
153
152
  }
154
153
 
155
154
  .dropdown-toggle {
@@ -185,6 +184,7 @@
185
184
  white-space: nowrap; // prevent links from randomly breaking onto new lines
186
185
  background-color: transparent; // For `<button>`s
187
186
  border: 0; // For `<button>`s
187
+ @include border-radius(var(--#{$prefix}dropdown-item-border-radius, 0));
188
188
 
189
189
  &:hover,
190
190
  &:focus {
@@ -188,7 +188,7 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
188
188
  );
189
189
 
190
190
  @each $name, $value in $rgb {
191
- $value: if(divide($value, 255) < .03928, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
191
+ $value: if(divide($value, 255) < .04045, divide(divide($value, 255), 12.92), nth($_luminance-list, $value + 1));
192
192
  $rgb: map-merge($rgb, ($name: $value));
193
193
  }
194
194
 
@@ -218,86 +218,6 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
218
218
  }
219
219
  // scss-docs-end color-functions
220
220
 
221
- // scss-docs-start alert-color-functions
222
- @function alert-color-map($color) {
223
- @return (
224
- "alert-bg": shift-color($color, $alert-bg-scale),
225
- "alert-border": shift-color($color, $alert-border-scale),
226
- "alert-color": shift-color($color, $alert-color-scale),
227
- "base-color": $color
228
- );
229
- }
230
- // scss-docs-end alert-color-functions
231
-
232
- // scss-docs-start button-color-functions
233
- @function btn-color($color, $shade, $tint) {
234
- @return if(color-contrast($color) == $color-contrast-light, shade-color($color, $shade), tint-color($color, $tint));
235
- }
236
-
237
- @function btn-color-map($background, $border-color) {
238
- @return (
239
- "bg": $background,
240
- "border-color": $border-color,
241
- "color": color-contrast($background),
242
- "hover-bg": btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount),
243
- "hover-border-color": btn-color($border-color, $btn-hover-border-shade-amount, $btn-hover-border-tint-amount),
244
- "hover-color": color-contrast(btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount)),
245
- "active-bg": btn-color($background, $btn-active-bg-shade-amount, $btn-active-bg-tint-amount),
246
- "active-border-color": btn-color($border-color, $btn-active-border-shade-amount, $btn-active-border-tint-amount),
247
- "active-color": color-contrast(btn-color($border-color, $btn-active-border-shade-amount, $btn-active-border-tint-amount)),
248
- "disabled-bg": $background,
249
- "disabled-border-color": $border-color,
250
- "disabled-color": color-contrast($background),
251
- "shadow": rgba(mix($background, $border-color, 15%), .5)
252
- );
253
- }
254
-
255
- @function btn-outline-color-map($background) {
256
- @return (
257
- "color": $background,
258
- "hover-bg": btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount),
259
- "hover-border-color": btn-color($background, $btn-hover-border-shade-amount, $btn-hover-border-tint-amount),
260
- "hover-color": color-contrast(btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount)),
261
- "active-bg": btn-color($background, $btn-active-bg-shade-amount, $btn-active-bg-tint-amount),
262
- "active-border-color": btn-color($background, $btn-active-border-shade-amount, $btn-active-border-tint-amount),
263
- "active-color": color-contrast(btn-color($background, $btn-active-border-shade-amount, $btn-active-border-tint-amount)),
264
- "disabled-color": $background,
265
- "shadow": rgba(mix($background, $background, 15%), .5)
266
- );
267
- }
268
- // scss-docs-end button-color-functions
269
-
270
- // scss-docs-start list-group-color-functions
271
- @function list-group-color-map($color) {
272
- @return (
273
- "bg": shift-color($color, $list-group-item-bg-scale),
274
- "bg-hover": shade-color($color, 10%),
275
- "color": shift-color($color, $list-group-item-color-scale)
276
- );
277
- }
278
- // scss-docs-end list-group-color-functions
279
-
280
- // scss-docs-start table-color-functions
281
- @function table-color-map($background, $body-bg: $body-bg) {
282
- $color: color-contrast(opaque($body-bg, $background));
283
- $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
284
- $active-bg: mix($color, $background, percentage($table-active-bg-factor));
285
- $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
286
-
287
- @return (
288
- "bg": $background,
289
- "color": $color,
290
- "border-color": mix($color, $background, percentage($table-border-factor)),
291
- "striped-bg": $striped-bg,
292
- "striped-color": color-contrast($striped-bg),
293
- "active-bg": $active-bg,
294
- "active-color": color-contrast($active-bg),
295
- "hover-bg": $hover-bg,
296
- "hover-color": color-contrast($hover-bg)
297
- );
298
- }
299
- // scss-docs-end table-color-functions
300
-
301
221
  // Return valid calc
302
222
  @function add($value1, $value2, $return-calc: true) {
303
223
  @if $value1 == null {
@@ -380,3 +300,8 @@ $_luminance-list: .0008 .001 .0011 .0013 .0015 .0017 .002 .0022 .0025 .0027 .003
380
300
  }
381
301
  @return $result;
382
302
  }
303
+
304
+ // Generate selectors for theme variants
305
+ @function theme-prefix($theme, $selector) {
306
+ @return #{"[data-coreui-theme="$theme + "] ." + $theme + "\\:" + $selector + ", [data-coreui-theme="$theme + "] ." + $theme + "\\:" + $selector + ":not([class*='#{$theme}:'])"};
307
+ }
package/scss/_images.scss CHANGED
@@ -13,8 +13,8 @@
13
13
  // Image thumbnails
14
14
  .img-thumbnail {
15
15
  padding: $thumbnail-padding;
16
- background-color: var(--#{$prefix}thumbnail-bg, $thumbnail-bg);
17
- border: $thumbnail-border-width solid var(--#{$prefix}thumbnail-border-color, $thumbnail-border-color);
16
+ background-color: $thumbnail-bg;
17
+ border: $thumbnail-border-width solid $thumbnail-border-color;
18
18
  @include border-radius($thumbnail-border-radius);
19
19
  @include box-shadow($thumbnail-box-shadow);
20
20
 
@@ -38,5 +38,5 @@
38
38
 
39
39
  .figure-caption {
40
40
  @include font-size($figure-caption-font-size);
41
- color: var(--#{$prefix}figure-caption-color, $figure-caption-color);
41
+ color: $figure-caption-color;
42
42
  }
@@ -27,7 +27,7 @@
27
27
  flex-direction: column;
28
28
 
29
29
  // No need to set list-style: none; since .list-group-item is block level
30
- @include ltr-rtl("padding-left", 0); // reset padding because ul and ol
30
+ padding-left: 0; // reset padding because ul and ol
31
31
  margin-bottom: 0;
32
32
  @include border-radius(var(--#{$prefix}list-group-border-radius));
33
33
  }
@@ -143,11 +143,11 @@
143
143
 
144
144
  + .list-group-item {
145
145
  border-top-width: var(--#{$prefix}list-group-border-width);
146
- @include ltr-rtl("border-left-width", 0);
146
+ border-left-width: 0;
147
147
 
148
148
  &.active {
149
- @include ltr-rtl("margin-left", calc(-1 * var(--#{$prefix}list-group-border-width)));
150
- @include ltr-rtl("border-left-width", var(--#{$prefix}list-group-border-width));
149
+ margin-left: calc(-1 * var(--#{$prefix}list-group-border-width)); // stylelint-disable-line function-disallowed-list
150
+ border-left-width: var(--#{$prefix}list-group-border-width);
151
151
  }
152
152
  }
153
153
  }
@@ -180,9 +180,25 @@
180
180
  // Add modifier classes to change text and background color on individual items.
181
181
  // Organizationally, this must come after the `:hover` states.
182
182
 
183
- @each $state, $variant in $list-group-variants {
183
+ @each $state in map-keys($theme-colors) {
184
184
  .list-group-item-#{$state} {
185
- @include list-group-item-variant($state, $variant);
185
+ --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text);
186
+ --#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);
187
+ --#{$prefix}list-group-border-color: var(--#{$prefix}#{$state}-border-subtle);
188
+
189
+ &.list-group-item-action {
190
+ &:hover,
191
+ &:focus {
192
+ --#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);
193
+ --#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);
194
+ }
195
+
196
+ &:active {
197
+ --#{$prefix}list-group-active-color: var(--#{$prefix}emphasis-color);
198
+ --#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text);
199
+ --#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text);
200
+ }
201
+ }
186
202
  }
187
203
  }
188
204
  // scss-docs-end list-group-modifiers
package/scss/_maps.scss CHANGED
@@ -6,6 +6,43 @@
6
6
  $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value") !default;
7
7
  // scss-docs-end theme-colors-rgb
8
8
 
9
+ // scss-docs-start theme-colors-dark-rgb
10
+ $theme-colors-dark-rgb: map-loop($theme-colors-dark, to-rgb, "$value") !default;
11
+ // scss-docs-end theme-colors-dark-rgb
12
+
13
+ $theme-colors-text: (
14
+ "primary": $primary-text,
15
+ "secondary": $secondary-text,
16
+ "success": $success-text,
17
+ "info": $info-text,
18
+ "warning": $warning-text,
19
+ "danger": $danger-text,
20
+ "light": $light-text,
21
+ "dark": $dark-text,
22
+ ) !default;
23
+
24
+ $theme-colors-bg-subtle: (
25
+ "primary": $primary-bg-subtle,
26
+ "secondary": $secondary-bg-subtle,
27
+ "success": $success-bg-subtle,
28
+ "info": $info-bg-subtle,
29
+ "warning": $warning-bg-subtle,
30
+ "danger": $danger-bg-subtle,
31
+ "light": $light-bg-subtle,
32
+ "dark": $dark-bg-subtle,
33
+ ) !default;
34
+
35
+ $theme-colors-border-subtle: (
36
+ "primary": $primary-border-subtle,
37
+ "secondary": $secondary-border-subtle,
38
+ "success": $success-border-subtle,
39
+ "info": $info-border-subtle,
40
+ "warning": $warning-border-subtle,
41
+ "danger": $danger-border-subtle,
42
+ "light": $light-border-subtle,
43
+ "dark": $dark-border-subtle,
44
+ ) !default;
45
+
9
46
  // Utilities maps
10
47
  //
11
48
  // Extends the default `$theme-colors` maps to help create our utilities.
@@ -25,6 +62,17 @@ $utilities-text: map-merge(
25
62
  )
26
63
  ) !default;
27
64
  $utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
65
+
66
+ $utilities-text-emphasis-colors: (
67
+ "primary-emphasis": var(--#{$prefix}primary-text),
68
+ "secondary-emphasis": var(--#{$prefix}secondary-text),
69
+ "success-emphasis": var(--#{$prefix}success-text),
70
+ "info-emphasis": var(--#{$prefix}info-text),
71
+ "warning-emphasis": var(--#{$prefix}warning-text),
72
+ "danger-emphasis": var(--#{$prefix}danger-text),
73
+ "light-emphasis": var(--#{$prefix}light-text),
74
+ "dark-emphasis": var(--#{$prefix}dark-text)
75
+ ) !default;
28
76
  // scss-docs-end utilities-text-colors
29
77
 
30
78
  // scss-docs-start utilities-bg-colors
@@ -37,6 +85,18 @@ $utilities-bg: map-merge(
37
85
  )
38
86
  ) !default;
39
87
  $utilities-bg-colors: map-loop($utilities-bg, rgba-css-var, "$key", "bg") !default;
88
+
89
+ $utilities-bg-subtle: (
90
+ "primary-subtle": var(--#{$prefix}primary-bg-subtle),
91
+ "secondary-subtle": var(--#{$prefix}secondary-bg-subtle),
92
+ "success-subtle": var(--#{$prefix}success-bg-subtle),
93
+ "info-subtle": var(--#{$prefix}info-bg-subtle),
94
+ "warning-subtle": var(--#{$prefix}warning-bg-subtle),
95
+ "danger-subtle": var(--#{$prefix}danger-bg-subtle),
96
+ "light-subtle": var(--#{$prefix}light-bg-subtle),
97
+ "dark-subtle": var(--#{$prefix}dark-bg-subtle)
98
+ ) !default;
99
+ // $utilities-bg-subtle-colors: map-loop($utilities-bg-subtle, rgba-css-var, "$key", "bg") !default;
40
100
  // scss-docs-end utilities-bg-colors
41
101
 
42
102
  // scss-docs-start utilities-border-colors
@@ -47,6 +107,17 @@ $utilities-border: map-merge(
47
107
  )
48
108
  ) !default;
49
109
  $utilities-border-colors: map-loop($utilities-border, rgba-css-var, "$key", "border") !default;
110
+
111
+ $utilities-border-subtle: (
112
+ "primary-subtle": var(--#{$prefix}primary-border-subtle),
113
+ "secondary-subtle": var(--#{$prefix}secondary-border-subtle),
114
+ "success-subtle": var(--#{$prefix}success-border-subtle),
115
+ "info-subtle": var(--#{$prefix}info-border-subtle),
116
+ "warning-subtle": var(--#{$prefix}warning-border-subtle),
117
+ "danger-subtle": var(--#{$prefix}danger-border-subtle),
118
+ "light-subtle": var(--#{$prefix}light-border-subtle),
119
+ "dark-subtle": var(--#{$prefix}dark-border-subtle)
120
+ ) !default;
50
121
  // scss-docs-end utilities-border-colors
51
122
 
52
123
  $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
package/scss/_mixins.scss CHANGED
@@ -2,9 +2,6 @@
2
2
  //
3
3
  // Used in conjunction with global variables to enable certain theme features.
4
4
 
5
- // LTR & RTL
6
- @import "mixins/ltr-rtl";
7
-
8
5
  // Vendor
9
6
  @import "vendor/rfs";
10
7
 
@@ -13,6 +10,7 @@
13
10
 
14
11
  // Helpers
15
12
  @import "mixins/breakpoints";
13
+ @import "mixins/color-mode";
16
14
  @import "mixins/color-scheme";
17
15
  @import "mixins/image";
18
16
  @import "mixins/resize";
@@ -24,17 +22,13 @@
24
22
  @import "mixins/utilities";
25
23
 
26
24
  // Components
27
- @import "mixins/alert";
28
- @import "mixins/avatar";
29
25
  @import "mixins/backdrop";
30
26
  @import "mixins/buttons";
31
27
  @import "mixins/caret";
32
28
  @import "mixins/pagination";
33
29
  @import "mixins/lists";
34
- @import "mixins/list-group";
35
30
  @import "mixins/forms";
36
31
  @import "mixins/table-variants";
37
- @import "mixins/icon";
38
32
 
39
33
  // Skins
40
34
  @import "mixins/border-radius";
@@ -47,5 +41,6 @@
47
41
  @import "mixins/container";
48
42
  @import "mixins/grid";
49
43
 
50
- // CSS Variables
51
- @import "mixins/css-vars";
44
+ // CoreUI Components
45
+ @import "mixins/avatar";
46
+ @import "mixins/icon";
package/scss/_modal.scss CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  position: fixed;
36
36
  top: 0;
37
- @include ltr-rtl("left", 0);
37
+ left: 0;
38
38
  z-index: var(--#{$prefix}modal-zindex);
39
39
  display: none;
40
40
  width: 100%;
@@ -133,7 +133,7 @@
133
133
 
134
134
  .btn-close {
135
135
  padding: calc(var(--#{$prefix}modal-header-padding-y) * .5) calc(var(--#{$prefix}modal-header-padding-x) * .5);
136
- @include ltr-rtl-value-only("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, calc(-.5 * var(--#{$prefix}modal-header-padding-y)) auto calc(-.5 * var(--#{$prefix}modal-header-padding-y)) calc(-.5 * var(--#{$prefix}modal-header-padding-x)));
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;
137
137
  }
138
138
  }
139
139
 
package/scss/_nav.scss CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  display: flex;
18
18
  flex-wrap: wrap;
19
- @include ltr-rtl("padding-left", 0);
19
+ padding-left: 0;
20
20
  margin-bottom: 0;
21
21
  list-style: none;
22
22
  }
@@ -28,6 +28,8 @@
28
28
  font-weight: var(--#{$prefix}nav-link-font-weight);
29
29
  color: var(--#{$prefix}nav-link-color);
30
30
  text-decoration: if($link-decoration == none, null, none);
31
+ background: none;
32
+ border: 0;
31
33
  @include transition($nav-link-transition);
32
34
 
33
35
  &:hover,
@@ -63,7 +65,6 @@
63
65
 
64
66
  .nav-link {
65
67
  margin-bottom: calc(-1 * var(--#{$prefix}nav-tabs-border-width)); // stylelint-disable-line function-disallowed-list
66
- background: none;
67
68
  border: var(--#{$prefix}nav-tabs-border-width) solid transparent;
68
69
  @include border-top-radius(var(--#{$prefix}nav-tabs-border-radius));
69
70
 
@@ -110,8 +111,6 @@
110
111
  // scss-docs-end nav-pills-css-vars
111
112
 
112
113
  .nav-link {
113
- background: none;
114
- border: 0;
115
114
  @include border-radius(var(--#{$prefix}nav-pills-border-radius));
116
115
 
117
116
  &:disabled {
@@ -129,6 +128,44 @@
129
128
  }
130
129
 
131
130
 
131
+ //
132
+ // Underline
133
+ //
134
+
135
+ .nav-underline {
136
+ // scss-docs-start nav-underline-css-vars
137
+ --#{$prefix}nav-underline-gap: #{$nav-underline-gap};
138
+ --#{$prefix}nav-underline-border-width: #{$nav-underline-border-width};
139
+ --#{$prefix}nav-underline-link-active-color: #{$nav-underline-link-active-color};
140
+ // scss-docs-end nav-underline-css-vars
141
+
142
+ gap: var(--#{$prefix}nav-underline-gap);
143
+
144
+ // .nav-item + .nav-item,
145
+ // .nav-link + .nav-link {
146
+ // margin-left: $nav-link-padding-x;
147
+ // }
148
+
149
+ .nav-link {
150
+ padding-right: 0;
151
+ padding-left: 0;
152
+ border-bottom: var(--#{$prefix}nav-underline-border-width) solid transparent;
153
+
154
+ &:hover,
155
+ &:focus {
156
+ border-bottom-color: currentcolor;
157
+ }
158
+ }
159
+
160
+ .nav-link.active,
161
+ .show > .nav-link {
162
+ font-weight: $font-weight-bold;
163
+ color: var(--#{$prefix}nav-underline-link-active-color);
164
+ border-bottom-color: currentcolor;
165
+ }
166
+ }
167
+
168
+
132
169
  //
133
170
  // Justified variants
134
171
  //