@coreui/coreui 5.0.0-alpha.0 → 5.0.0-alpha.2

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 (207) hide show
  1. package/LICENSE +5 -5
  2. package/README.md +2 -2
  3. package/dist/css/coreui-grid.css +34 -192
  4. package/dist/css/coreui-grid.css.map +1 -1
  5. package/dist/css/coreui-grid.min.css +3 -3
  6. package/dist/css/coreui-grid.min.css.map +1 -1
  7. package/dist/css/coreui-grid.rtl.css +118 -275
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +3 -3
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +166 -148
  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 +170 -156
  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 +653 -427
  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 +824 -703
  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 +2082 -1790
  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 +2333 -2213
  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/js/coreui.bundle.js +313 -292
  36. package/dist/js/coreui.bundle.js.map +1 -1
  37. package/dist/js/coreui.bundle.min.js +2 -2
  38. package/dist/js/coreui.bundle.min.js.map +1 -1
  39. package/dist/js/coreui.esm.js +273 -246
  40. package/dist/js/coreui.esm.js.map +1 -1
  41. package/dist/js/coreui.esm.min.js +2 -2
  42. package/dist/js/coreui.esm.min.js.map +1 -1
  43. package/dist/js/coreui.js +276 -248
  44. package/dist/js/coreui.js.map +1 -1
  45. package/dist/js/coreui.min.js +2 -2
  46. package/dist/js/coreui.min.js.map +1 -1
  47. package/js/dist/alert.js +7 -6
  48. package/js/dist/alert.js.map +1 -1
  49. package/js/dist/base-component.js +8 -7
  50. package/js/dist/base-component.js.map +1 -1
  51. package/js/dist/button.js +7 -6
  52. package/js/dist/button.js.map +1 -1
  53. package/js/dist/carousel.js +8 -7
  54. package/js/dist/carousel.js.map +1 -1
  55. package/js/dist/collapse.js +7 -6
  56. package/js/dist/collapse.js.map +1 -1
  57. package/js/dist/dom/data.js +3 -3
  58. package/js/dist/dom/data.js.map +1 -1
  59. package/js/dist/dom/event-handler.js +7 -7
  60. package/js/dist/dom/event-handler.js.map +1 -1
  61. package/js/dist/dom/manipulator.js +4 -4
  62. package/js/dist/dom/manipulator.js.map +1 -1
  63. package/js/dist/dom/selector-engine.js +4 -3
  64. package/js/dist/dom/selector-engine.js.map +1 -1
  65. package/js/dist/dropdown.js +10 -9
  66. package/js/dist/dropdown.js.map +1 -1
  67. package/js/dist/modal.js +9 -10
  68. package/js/dist/modal.js.map +1 -1
  69. package/js/dist/navigation.js +7 -6
  70. package/js/dist/navigation.js.map +1 -1
  71. package/js/dist/offcanvas.js +11 -10
  72. package/js/dist/offcanvas.js.map +1 -1
  73. package/js/dist/popover.js +7 -6
  74. package/js/dist/popover.js.map +1 -1
  75. package/js/dist/scrollspy.js +9 -8
  76. package/js/dist/scrollspy.js.map +1 -1
  77. package/js/dist/sidebar.js +7 -6
  78. package/js/dist/sidebar.js.map +1 -1
  79. package/js/dist/tab.js +21 -12
  80. package/js/dist/tab.js.map +1 -1
  81. package/js/dist/toast.js +7 -6
  82. package/js/dist/toast.js.map +1 -1
  83. package/js/dist/tooltip.js +12 -11
  84. package/js/dist/tooltip.js.map +1 -1
  85. package/js/dist/util/backdrop.js +8 -7
  86. package/js/dist/util/backdrop.js.map +1 -1
  87. package/js/dist/util/component-functions.js +8 -7
  88. package/js/dist/util/component-functions.js.map +1 -1
  89. package/js/dist/util/config.js +8 -7
  90. package/js/dist/util/config.js.map +1 -1
  91. package/js/dist/util/focustrap.js +4 -3
  92. package/js/dist/util/focustrap.js.map +1 -1
  93. package/js/dist/util/index.js +3 -3
  94. package/js/dist/util/index.js.map +1 -1
  95. package/js/dist/util/sanitizer.js +28 -30
  96. package/js/dist/util/sanitizer.js.map +1 -1
  97. package/js/dist/util/scrollbar.js +8 -7
  98. package/js/dist/util/scrollbar.js.map +1 -1
  99. package/js/dist/util/swipe.js +8 -7
  100. package/js/dist/util/swipe.js.map +1 -1
  101. package/js/dist/util/template-factory.js +8 -7
  102. package/js/dist/util/template-factory.js.map +1 -1
  103. package/js/index.esm.js +21 -0
  104. package/js/index.umd.js +38 -0
  105. package/js/src/alert.js +3 -3
  106. package/js/src/base-component.js +3 -3
  107. package/js/src/button.js +4 -3
  108. package/js/src/carousel.js +6 -6
  109. package/js/src/collapse.js +4 -4
  110. package/js/src/dom/data.js +2 -2
  111. package/js/src/dom/event-handler.js +4 -5
  112. package/js/src/dom/manipulator.js +3 -3
  113. package/js/src/dom/selector-engine.js +2 -2
  114. package/js/src/dropdown.js +8 -8
  115. package/js/src/modal.js +8 -9
  116. package/js/src/navigation.js +3 -3
  117. package/js/src/offcanvas.js +11 -11
  118. package/js/src/popover.js +2 -2
  119. package/js/src/scrollspy.js +5 -5
  120. package/js/src/sidebar.js +4 -4
  121. package/js/src/tab.js +19 -9
  122. package/js/src/toast.js +3 -3
  123. package/js/src/tooltip.js +9 -9
  124. package/js/src/util/backdrop.js +3 -3
  125. package/js/src/util/component-functions.js +3 -3
  126. package/js/src/util/config.js +3 -3
  127. package/js/src/util/focustrap.js +2 -2
  128. package/js/src/util/index.js +2 -2
  129. package/js/src/util/sanitizer.js +40 -43
  130. package/js/src/util/scrollbar.js +3 -3
  131. package/js/src/util/swipe.js +3 -3
  132. package/js/src/util/template-factory.js +4 -5
  133. package/package.json +51 -45
  134. package/scss/_alert.scss +5 -5
  135. package/scss/_avatar.scss +4 -4
  136. package/scss/_badge.scss +11 -1
  137. package/scss/_breadcrumb.scss +9 -4
  138. package/scss/_button-group.scss +4 -4
  139. package/scss/_buttons.scss +38 -71
  140. package/scss/_callout.scss +2 -2
  141. package/scss/_card.scss +4 -3
  142. package/scss/_carousel.scss +9 -3
  143. package/scss/_close.scss +3 -0
  144. package/scss/_dropdown.scss +14 -14
  145. package/scss/_functions.scss +59 -0
  146. package/scss/_grid.scss +8 -0
  147. package/scss/_header.scss +186 -0
  148. package/scss/_helpers.scss +2 -0
  149. package/scss/_images.scss +3 -3
  150. package/scss/_list-group.scss +12 -19
  151. package/scss/_maps.scss +75 -21
  152. package/scss/_mixins.scss +6 -4
  153. package/scss/_modal.scss +2 -2
  154. package/scss/_nav.scss +8 -20
  155. package/scss/_navbar.scss +11 -8
  156. package/scss/_offcanvas.scss +8 -8
  157. package/scss/_pagination.scss +2 -2
  158. package/scss/_progress.scss +43 -0
  159. package/scss/_reboot.scss +23 -25
  160. package/scss/_root.scss +70 -63
  161. package/scss/_sidebar.scss +0 -11
  162. package/scss/_tables.scss +18 -11
  163. package/scss/_toasts.scss +2 -2
  164. package/scss/_tooltip.scss +14 -15
  165. package/scss/_type.scss +1 -1
  166. package/scss/_utilities.scss +117 -65
  167. package/scss/_variables-dark.scss +112 -61
  168. package/scss/_variables.scss +401 -268
  169. package/scss/coreui-grid.rtl.scss +4 -0
  170. package/scss/coreui-grid.scss +2 -5
  171. package/scss/coreui-reboot.rtl.scss +4 -0
  172. package/scss/coreui-reboot.scss +1 -1
  173. package/scss/coreui-utilities.rtl.scss +4 -0
  174. package/scss/coreui-utilities.scss +1 -1
  175. package/scss/coreui.rtl.scss +4 -0
  176. package/scss/coreui.scss +3 -3
  177. package/scss/forms/_floating-labels.scss +21 -16
  178. package/scss/forms/_form-check.scss +41 -20
  179. package/scss/forms/_form-control.scss +18 -5
  180. package/scss/forms/_form-range.scss +3 -3
  181. package/scss/forms/_form-select.scss +7 -8
  182. package/scss/forms/_input-group.scss +5 -5
  183. package/scss/helpers/_color-bg.scss +13 -4
  184. package/scss/helpers/_colored-links.scss +20 -2
  185. package/scss/helpers/_focus-ring.scss +5 -0
  186. package/scss/helpers/_icon-link.scss +25 -0
  187. package/scss/helpers/_ratio.scss +1 -1
  188. package/scss/helpers/_vr.scss +2 -1
  189. package/scss/mixins/_alert.scss +1 -1
  190. package/scss/mixins/_banner.scss +3 -3
  191. package/scss/mixins/_border-radius.scss +7 -7
  192. package/scss/mixins/_buttons.scss +53 -49
  193. package/scss/mixins/_caret.scss +3 -3
  194. package/scss/mixins/_forms.scss +7 -7
  195. package/scss/mixins/_grid.scss +1 -1
  196. package/scss/mixins/_list-group.scss +12 -20
  197. package/scss/mixins/_lists.scss +1 -1
  198. package/scss/mixins/_ltr-rtl.scss +87 -0
  199. package/scss/mixins/_utilities.scss +6 -1
  200. package/scss/mixins/_visually-hidden.scss +5 -1
  201. package/scss/sidebar/_sidebar-narrow.scss +37 -17
  202. package/scss/sidebar/_sidebar-nav.scss +115 -20
  203. package/scss/sidebar/_sidebar.scss +98 -139
  204. package/scss/vendor/_rfs.scss +24 -30
  205. package/scss/tests/mixins/_color-modes.test.scss +0 -69
  206. package/scss/tests/mixins/_utilities.test.scss +0 -393
  207. package/scss/tests/utilities/_api.test.scss +0 -75
@@ -64,7 +64,7 @@
64
64
 
65
65
  &[data-coreui-popper] {
66
66
  top: 100%;
67
- left: 0;
67
+ @include ltr-rtl("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 `bs-` prefix because we check
85
+ // We deliberately hardcode the `cui-` 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) {
@@ -90,20 +90,20 @@
90
90
  $infix: breakpoint-infix($breakpoint, $grid-breakpoints);
91
91
 
92
92
  .dropdown-menu#{$infix}-start {
93
- --#{$prefix}position: start;
93
+ --cui-position: start;
94
94
 
95
95
  &[data-coreui-popper] {
96
- right: auto;
97
- left: 0;
96
+ @include ltr-rtl("right", auto);
97
+ @include ltr-rtl("left", 0);
98
98
  }
99
99
  }
100
100
 
101
101
  .dropdown-menu#{$infix}-end {
102
- --#{$prefix}position: end;
102
+ --cui-position: end;
103
103
 
104
104
  &[data-coreui-popper] {
105
- right: 0;
106
- left: auto;
105
+ @include ltr-rtl("right", 0);
106
+ @include ltr-rtl("left", auto);
107
107
  }
108
108
  }
109
109
  }
@@ -128,10 +128,10 @@
128
128
  .dropend {
129
129
  .dropdown-menu[data-coreui-popper] {
130
130
  top: 0;
131
- right: auto;
132
- left: 100%;
131
+ @include ltr-rtl("right", auto);
132
+ @include ltr-rtl("left", 100%);
133
133
  margin-top: 0;
134
- margin-left: var(--#{$prefix}dropdown-spacer);
134
+ @include ltr-rtl("margin-left", var(--#{$prefix}dropdown-spacer));
135
135
  }
136
136
 
137
137
  .dropdown-toggle {
@@ -145,10 +145,10 @@
145
145
  .dropstart {
146
146
  .dropdown-menu[data-coreui-popper] {
147
147
  top: 0;
148
- right: 100%;
149
- left: auto;
148
+ @include ltr-rtl("right", 100%);
149
+ @include ltr-rtl("left", auto);
150
150
  margin-top: 0;
151
- margin-right: var(--#{$prefix}dropdown-spacer);
151
+ @include ltr-rtl("margin-right", var(--#{$prefix}dropdown-spacer));
152
152
  }
153
153
 
154
154
  .dropdown-toggle {
@@ -218,6 +218,65 @@ $_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 button-color-functions
222
+ @function btn-color($color, $shade, $tint) {
223
+ @return if(color-contrast($color) == $color-contrast-light, shade-color($color, $shade), tint-color($color, $tint));
224
+ }
225
+
226
+ @function btn-color-map($background, $border-color) {
227
+ @return (
228
+ "bg": $background,
229
+ "border-color": $border-color,
230
+ "color": color-contrast($background),
231
+ "hover-bg": btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount),
232
+ "hover-border-color": btn-color($border-color, $btn-hover-border-shade-amount, $btn-hover-border-tint-amount),
233
+ "hover-color": color-contrast(btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount)),
234
+ "active-bg": btn-color($background, $btn-active-bg-shade-amount, $btn-active-bg-tint-amount),
235
+ "active-border-color": btn-color($border-color, $btn-active-border-shade-amount, $btn-active-border-tint-amount),
236
+ "active-color": color-contrast(btn-color($border-color, $btn-active-border-shade-amount, $btn-active-border-tint-amount)),
237
+ "disabled-bg": $background,
238
+ "disabled-border-color": $border-color,
239
+ "disabled-color": color-contrast($background),
240
+ "shadow": rgba(mix($background, $border-color, 15%), .5)
241
+ );
242
+ }
243
+
244
+ @function btn-outline-color-map($background) {
245
+ @return (
246
+ "color": $background,
247
+ "hover-bg": btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount),
248
+ "hover-border-color": btn-color($background, $btn-hover-border-shade-amount, $btn-hover-border-tint-amount),
249
+ "hover-color": color-contrast(btn-color($background, $btn-hover-bg-shade-amount, $btn-hover-bg-tint-amount)),
250
+ "active-bg": btn-color($background, $btn-active-bg-shade-amount, $btn-active-bg-tint-amount),
251
+ "active-border-color": btn-color($background, $btn-active-border-shade-amount, $btn-active-border-tint-amount),
252
+ "active-color": color-contrast(btn-color($background, $btn-active-border-shade-amount, $btn-active-border-tint-amount)),
253
+ "disabled-color": $background,
254
+ "shadow": rgba(mix($background, $background, 15%), .5)
255
+ );
256
+ }
257
+ // scss-docs-end button-color-functions
258
+
259
+ // scss-docs-start table-color-functions
260
+ @function table-color-map($background, $body-bg: $body-bg) {
261
+ $color: color-contrast(opaque($body-bg, $background));
262
+ $striped-bg: mix($color, $background, percentage($table-striped-bg-factor));
263
+ $active-bg: mix($color, $background, percentage($table-active-bg-factor));
264
+ $hover-bg: mix($color, $background, percentage($table-hover-bg-factor));
265
+
266
+ @return (
267
+ "bg": $background,
268
+ "color": $color,
269
+ "border-color": mix($color, $background, percentage($table-border-factor)),
270
+ "striped-bg": $striped-bg,
271
+ "striped-color": color-contrast($striped-bg),
272
+ "active-bg": $active-bg,
273
+ "active-color": color-contrast($active-bg),
274
+ "hover-bg": $hover-bg,
275
+ "hover-color": color-contrast($hover-bg)
276
+ );
277
+ }
278
+ // scss-docs-end table-color-functions
279
+
221
280
  // Return valid calc
222
281
  @function add($value1, $value2, $return-calc: true) {
223
282
  @if $value1 == null {
package/scss/_grid.scss CHANGED
@@ -2,6 +2,14 @@
2
2
  //
3
3
  // Rows contain your columns.
4
4
 
5
+ :root {
6
+ @each $name, $value in $grid-breakpoints {
7
+ --#{$prefix}breakpoint-#{$name}: #{$value};
8
+ }
9
+
10
+ --#{$prefix}mobile-breakpoint: #{$mobile-breakpoint};
11
+ }
12
+
5
13
  @if $enable-grid-classes {
6
14
  .row {
7
15
  @include make-row();
@@ -0,0 +1,186 @@
1
+ .header {
2
+ // scss-docs-start header-css-vars
3
+ --#{$prefix}header-min-height: #{$header-min-height};
4
+ --#{$prefix}header-padding-x: #{$header-padding-x};
5
+ --#{$prefix}header-padding-y: #{$header-padding-y};
6
+ --#{$prefix}header-bg: #{$header-bg};
7
+ --#{$prefix}header-color: #{$header-color};
8
+ --#{$prefix}header-border-color: #{$header-border-color};
9
+ --#{$prefix}header-border: #{$header-border-width} solid var(--#{$prefix}header-border-color);
10
+ --#{$prefix}header-hover-color: #{$header-hover-color};
11
+ --#{$prefix}header-disabled-color: #{$header-disabled-color};
12
+ --#{$prefix}header-active-color: #{$header-active-color};
13
+ --#{$prefix}header-transition: #{$header-transition};
14
+ --#{$prefix}header-brand-padding-y: #{$header-brand-padding-y};
15
+ --#{$prefix}header-brand-color: #{$header-brand-color};
16
+ --#{$prefix}header-brand-hover-color: #{$header-brand-hover-color};
17
+ --#{$prefix}header-toggler-padding-x: #{$header-toggler-padding-x};
18
+ --#{$prefix}header-toggler-padding-y: #{$header-toggler-padding-y};
19
+ --#{$prefix}header-toggler-bg: #{$header-toggler-bg};
20
+ --#{$prefix}header-toggler-color: #{$header-toggler-color};
21
+ --#{$prefix}header-toggler-border-radius: #{$header-toggler-border-radius};
22
+ --#{$prefix}header-toggler-hover-color: #{$header-toggler-hover-color};
23
+ --#{$prefix}header-toggler-icon-bg: #{escape-svg($header-toggler-icon-bg)};
24
+ --#{$prefix}header-toggler-hover-icon-bg: #{escape-svg($header-toggler-hover-icon-bg)};
25
+ --#{$prefix}header-nav-link-padding-x: #{$header-nav-link-padding-x};
26
+ --#{$prefix}header-nav-link-padding-y: #{$header-nav-link-padding-y};
27
+ --#{$prefix}header-divider-border-color: #{$header-divider-border-color};
28
+ --#{$prefix}header-divider-border: #{$header-divider-border-width} solid var(--#{$prefix}header-divider-border-color);
29
+ // scss-docs-end header-css-vars
30
+
31
+ position: relative;
32
+ display: flex;
33
+ flex-wrap: wrap; // allow us to do the line break for collapsing content
34
+ align-items: center;
35
+ justify-content: space-between; // space out brand from logo
36
+ // min-height: var(--#{$prefix}header-min-height);
37
+ padding: var(--#{$prefix}header-padding-y) var(--#{$prefix}header-padding-x);
38
+ background: var(--#{$prefix}header-bg);
39
+ border-bottom: var(--#{$prefix}header-border);
40
+ @include transition(var(--#{$prefix}header-transition));
41
+
42
+ // Because flex properties aren't inherited, we need to redeclare these first
43
+ // few properties so that content nested within behave properly.
44
+ // The `flex-wrap` property is inherited to simplify the expanded navbars
45
+ %container-flex-properties {
46
+ display: flex;
47
+ flex-wrap: inherit;
48
+ align-items: center;
49
+ justify-content: space-between;
50
+ }
51
+
52
+ > .container,
53
+ > .container-fluid {
54
+ @extend %container-flex-properties;
55
+ }
56
+
57
+ @each $breakpoint, $container-max-width in $container-max-widths {
58
+ > .container#{breakpoint-infix($breakpoint, $container-max-widths)} {
59
+ @extend %container-flex-properties;
60
+ }
61
+ }
62
+
63
+ &.header-sticky {
64
+ position: sticky;
65
+ top: 0;
66
+ z-index: $zindex-fixed - 1;
67
+ }
68
+ }
69
+
70
+ .header-divider {
71
+ flex-basis: calc(100% + (2 * var(--#{$prefix}header-padding-x))); // stylelint-disable-line function-disallowed-list
72
+ height: 0;
73
+ margin: var(--#{$prefix}header-padding-y) calc(var(--#{$prefix}header-padding-x) * -1); // stylelint-disable-line function-disallowed-list
74
+ border-top: var(--#{$prefix}header-divider-border);
75
+ }
76
+
77
+ // Header brand
78
+ //
79
+ // Used for brand, project, or site names.
80
+
81
+ .header-brand {
82
+ padding-top: var(--#{$prefix}header-brand-padding-y);
83
+ padding-bottom: var(--#{$prefix}header-brand-padding-y);
84
+ @include ltr-rtl("margin-right", $header-brand-margin-end);
85
+ @include font-size($header-brand-font-size);
86
+ color: var(--#{$prefix}header-brand-color);
87
+ text-decoration: if($link-decoration == none, null, none);
88
+ white-space: nowrap;
89
+
90
+ &:hover,
91
+ &:focus {
92
+ color: var(--#{$prefix}header-brand-hover-color);
93
+ text-decoration: if($link-hover-decoration == underline, none, null);
94
+ }
95
+ }
96
+
97
+ // Header nav
98
+ //
99
+ // Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).
100
+
101
+ .header-nav {
102
+ display: flex;
103
+ flex-direction: row; // cannot use `inherit` to get the `.header`s value
104
+ @include ltr-rtl("padding-left", 0);
105
+ margin-bottom: 0;
106
+ list-style: none;
107
+
108
+ .nav-link {
109
+ padding: var(--#{$prefix}header-nav-link-padding-y) var(--#{$prefix}header-nav-link-padding-x);
110
+ color: var(--#{$prefix}header-color);
111
+
112
+ &:hover,
113
+ &:focus {
114
+ color: var(--#{$prefix}header-hover-color);
115
+ }
116
+
117
+ &.disabled {
118
+ color: var(--#{$prefix}header-disabled-color);
119
+ }
120
+ }
121
+
122
+ .show > .nav-link,
123
+ .nav-link.active {
124
+ color: var(--#{$prefix}header-active-color);
125
+ }
126
+
127
+ .dropdown-menu {
128
+ position: absolute;
129
+ }
130
+ }
131
+
132
+
133
+ // Header text
134
+ //
135
+ //
136
+
137
+ .header-text {
138
+ padding-top: var(--#{$prefix}header-nav-link-padding-y);
139
+ padding-bottom: var(--#{$prefix}header-nav-link-padding-y);
140
+ color: var(--#{$prefix}header-color);
141
+
142
+ a {
143
+ color: var(--#{$prefix}header-active-color);
144
+
145
+ &:hover,
146
+ &:focus {
147
+ color: var(--#{$prefix}header-active-color);
148
+ }
149
+ }
150
+ }
151
+
152
+ .header-toggler {
153
+ padding: var(--#{$prefix}header-toggler-padding-y) var(--#{$prefix}header-toggler-padding-x);
154
+ @include font-size($header-toggler-font-size);
155
+ color: var(--#{$prefix}header-toggler-color);
156
+ background-color: var(--#{$prefix}header-toggler-bg);
157
+ border: 0; // remove default button style
158
+ @include border-radius(var(--#{$prefix}header-toggler-border-radius));
159
+
160
+ &:hover {
161
+ color: var(--#{$prefix}header-toggler-hover-color);
162
+ text-decoration: none;
163
+ }
164
+
165
+ &:focus {
166
+ outline: 0;
167
+ }
168
+
169
+ // Opinionated: add "hand" cursor to non-disabled .navbar-toggler elements
170
+ &:not(:disabled) {
171
+ cursor: pointer;
172
+ }
173
+ }
174
+
175
+ .header-toggler-icon {
176
+ display: block;
177
+ height: $header-toggler-font-size * 1.25;
178
+ background-image: var(--#{$prefix}header-toggler-icon-bg);
179
+ background-repeat: no-repeat;
180
+ background-position: center center;
181
+ background-size: 100% 100%;
182
+
183
+ &:hover {
184
+ background-image: var(--#{$prefix}header-toggler-hover-icon-bg);
185
+ }
186
+ }
@@ -1,6 +1,8 @@
1
1
  @import "helpers/clearfix";
2
2
  @import "helpers/color-bg";
3
3
  @import "helpers/colored-links";
4
+ @import "helpers/focus-ring";
5
+ @import "helpers/icon-link";
4
6
  @import "helpers/ratio";
5
7
  @import "helpers/position";
6
8
  @import "helpers/stacks";
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: $thumbnail-bg;
17
- border: $thumbnail-border-width solid $thumbnail-border-color;
16
+ background-color: var(--#{$prefix}thumbnail-bg, $thumbnail-bg);
17
+ border: $thumbnail-border-width solid var(--#{$prefix}thumbnail-border-color, $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: $figure-caption-color;
41
+ color: var(--#{$prefix}figure-caption-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
- padding-left: 0; // reset padding because ul and ol
30
+ @include ltr-rtl("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
- border-left-width: 0;
146
+ @include ltr-rtl("border-left-width", 0);
147
147
 
148
148
  &.active {
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);
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));
151
151
  }
152
152
  }
153
153
  }
@@ -182,23 +182,16 @@
182
182
 
183
183
  @each $state in map-keys($theme-colors) {
184
184
  .list-group-item-#{$state} {
185
- --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text);
185
+ --#{$prefix}list-group-color: var(--#{$prefix}#{$state}-text-emphasis);
186
186
  --#{$prefix}list-group-bg: var(--#{$prefix}#{$state}-bg-subtle);
187
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
- }
188
+ --#{$prefix}list-group-action-hover-color: var(--#{$prefix}emphasis-color);
189
+ --#{$prefix}list-group-action-hover-bg: var(--#{$prefix}#{$state}-border-subtle);
190
+ --#{$prefix}list-group-action-active-color: var(--#{$prefix}emphasis-color);
191
+ --#{$prefix}list-group-action-active-bg: var(--#{$prefix}#{$state}-border-subtle);
192
+ --#{$prefix}list-group-active-color: var(--#{$prefix}#{$state}-bg-subtle);
193
+ --#{$prefix}list-group-active-bg: var(--#{$prefix}#{$state}-text-emphasis);
194
+ --#{$prefix}list-group-active-border-color: var(--#{$prefix}#{$state}-text-emphasis);
202
195
  }
203
196
  }
204
197
  // scss-docs-end list-group-modifiers
package/scss/_maps.scss CHANGED
@@ -6,21 +6,20 @@
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
-
9
+ // scss-docs-start theme-text-map
13
10
  $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,
11
+ "primary": $primary-text-emphasis,
12
+ "secondary": $secondary-text-emphasis,
13
+ "success": $success-text-emphasis,
14
+ "info": $info-text-emphasis,
15
+ "warning": $warning-text-emphasis,
16
+ "danger": $danger-text-emphasis,
17
+ "light": $light-text-emphasis,
18
+ "dark": $dark-text-emphasis,
22
19
  ) !default;
20
+ // scss-docs-end theme-text-map
23
21
 
22
+ // scss-docs-start theme-bg-subtle-map
24
23
  $theme-colors-bg-subtle: (
25
24
  "primary": $primary-bg-subtle,
26
25
  "secondary": $secondary-bg-subtle,
@@ -31,7 +30,9 @@ $theme-colors-bg-subtle: (
31
30
  "light": $light-bg-subtle,
32
31
  "dark": $dark-bg-subtle,
33
32
  ) !default;
33
+ // scss-docs-end theme-bg-subtle-map
34
34
 
35
+ // scss-docs-start theme-border-subtle-map
35
36
  $theme-colors-border-subtle: (
36
37
  "primary": $primary-border-subtle,
37
38
  "secondary": $secondary-border-subtle,
@@ -42,6 +43,57 @@ $theme-colors-border-subtle: (
42
43
  "light": $light-border-subtle,
43
44
  "dark": $dark-border-subtle,
44
45
  ) !default;
46
+ // scss-docs-end theme-border-subtle-map
47
+
48
+ $theme-colors-rgb-dark: null !default;
49
+ $theme-colors-text-dark: null !default;
50
+ $theme-colors-bg-subtle-dark: null !default;
51
+ $theme-colors-border-subtle-dark: null !default;
52
+
53
+ @if $enable-dark-mode {
54
+ // scss-docs-start theme-colors-rgb-dark
55
+ $theme-colors-rgb-dark: map-loop($theme-colors-dark, to-rgb, "$value") !default;
56
+ // scss-docs-end theme-colors-rgb-dark
57
+
58
+ // scss-docs-start theme-text-dark-map
59
+ $theme-colors-text-dark: (
60
+ "primary": $primary-text-emphasis-dark,
61
+ "secondary": $secondary-text-emphasis-dark,
62
+ "success": $success-text-emphasis-dark,
63
+ "info": $info-text-emphasis-dark,
64
+ "warning": $warning-text-emphasis-dark,
65
+ "danger": $danger-text-emphasis-dark,
66
+ "light": $light-text-emphasis-dark,
67
+ "dark": $dark-text-emphasis-dark,
68
+ ) !default;
69
+ // scss-docs-end theme-text-dark-map
70
+
71
+ // scss-docs-start theme-bg-subtle-dark-map
72
+ $theme-colors-bg-subtle-dark: (
73
+ "primary": $primary-bg-subtle-dark,
74
+ "secondary": $secondary-bg-subtle-dark,
75
+ "success": $success-bg-subtle-dark,
76
+ "info": $info-bg-subtle-dark,
77
+ "warning": $warning-bg-subtle-dark,
78
+ "danger": $danger-bg-subtle-dark,
79
+ "light": $light-bg-subtle-dark,
80
+ "dark": $dark-bg-subtle-dark,
81
+ ) !default;
82
+ // scss-docs-end theme-bg-subtle-dark-map
83
+
84
+ // scss-docs-start theme-border-subtle-dark-map
85
+ $theme-colors-border-subtle-dark: (
86
+ "primary": $primary-border-subtle-dark,
87
+ "secondary": $secondary-border-subtle-dark,
88
+ "success": $success-border-subtle-dark,
89
+ "info": $info-border-subtle-dark,
90
+ "warning": $warning-border-subtle-dark,
91
+ "danger": $danger-border-subtle-dark,
92
+ "light": $light-border-subtle-dark,
93
+ "dark": $dark-border-subtle-dark,
94
+ ) !default;
95
+ // scss-docs-end theme-border-subtle-dark-map
96
+ }
45
97
 
46
98
  // Utilities maps
47
99
  //
@@ -64,14 +116,14 @@ $utilities-text: map-merge(
64
116
  $utilities-text-colors: map-loop($utilities-text, rgba-css-var, "$key", "text") !default;
65
117
 
66
118
  $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)
119
+ "primary-emphasis": var(--#{$prefix}primary-text-emphasis),
120
+ "secondary-emphasis": var(--#{$prefix}secondary-text-emphasis),
121
+ "success-emphasis": var(--#{$prefix}success-text-emphasis),
122
+ "info-emphasis": var(--#{$prefix}info-text-emphasis),
123
+ "warning-emphasis": var(--#{$prefix}warning-text-emphasis),
124
+ "danger-emphasis": var(--#{$prefix}danger-text-emphasis),
125
+ "light-emphasis": var(--#{$prefix}light-text-emphasis),
126
+ "dark-emphasis": var(--#{$prefix}dark-text-emphasis)
75
127
  ) !default;
76
128
  // scss-docs-end utilities-text-colors
77
129
 
@@ -96,13 +148,13 @@ $utilities-bg-subtle: (
96
148
  "light-subtle": var(--#{$prefix}light-bg-subtle),
97
149
  "dark-subtle": var(--#{$prefix}dark-bg-subtle)
98
150
  ) !default;
99
- // $utilities-bg-subtle-colors: map-loop($utilities-bg-subtle, rgba-css-var, "$key", "bg") !default;
100
151
  // scss-docs-end utilities-bg-colors
101
152
 
102
153
  // scss-docs-start utilities-border-colors
103
154
  $utilities-border: map-merge(
104
155
  $utilities-colors,
105
156
  (
157
+ "black": to-rgb($black),
106
158
  "white": to-rgb($white)
107
159
  )
108
160
  ) !default;
@@ -120,6 +172,8 @@ $utilities-border-subtle: (
120
172
  ) !default;
121
173
  // scss-docs-end utilities-border-colors
122
174
 
175
+ $utilities-links-underline: map-loop($utilities-colors, rgba-css-var, "$key", "link-underline") !default;
176
+
123
177
  $negative-spacers: if($enable-negative-margins, negativify-map($spacers), null) !default;
124
178
 
125
179
  $gutters: $spacers !default;
package/scss/_mixins.scss CHANGED
@@ -2,6 +2,9 @@
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
+
5
8
  // Vendor
6
9
  @import "vendor/rfs";
7
10
 
@@ -22,6 +25,8 @@
22
25
  @import "mixins/utilities";
23
26
 
24
27
  // Components
28
+ @import "mixins/alert";
29
+ @import "mixins/avatar";
25
30
  @import "mixins/backdrop";
26
31
  @import "mixins/buttons";
27
32
  @import "mixins/caret";
@@ -29,6 +34,7 @@
29
34
  @import "mixins/lists";
30
35
  @import "mixins/forms";
31
36
  @import "mixins/table-variants";
37
+ @import "mixins/icon";
32
38
 
33
39
  // Skins
34
40
  @import "mixins/border-radius";
@@ -40,7 +46,3 @@
40
46
  @import "mixins/clearfix";
41
47
  @import "mixins/container";
42
48
  @import "mixins/grid";
43
-
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
- left: 0;
37
+ @include ltr-rtl("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
- 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;
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)));
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
- padding-left: 0;
19
+ @include ltr-rtl("padding-left", 0);
20
20
  margin-bottom: 0;
21
21
  list-style: none;
22
22
  }
@@ -38,8 +38,14 @@
38
38
  text-decoration: if($link-hover-decoration == underline, none, null);
39
39
  }
40
40
 
41
+ &:focus-visible {
42
+ outline: 0;
43
+ box-shadow: $nav-link-focus-box-shadow;
44
+ }
45
+
41
46
  // Disabled state lightens text
42
- &.disabled {
47
+ &.disabled,
48
+ &:disabled {
43
49
  color: var(--#{$prefix}nav-link-disabled-color);
44
50
  pointer-events: none;
45
51
  cursor: default;
@@ -74,13 +80,6 @@
74
80
  isolation: isolate;
75
81
  border-color: var(--#{$prefix}nav-tabs-link-hover-border-color);
76
82
  }
77
-
78
- &.disabled,
79
- &:disabled {
80
- color: var(--#{$prefix}nav-link-disabled-color);
81
- background-color: transparent;
82
- border-color: transparent;
83
- }
84
83
  }
85
84
 
86
85
  .nav-link.active,
@@ -112,12 +111,6 @@
112
111
 
113
112
  .nav-link {
114
113
  @include border-radius(var(--#{$prefix}nav-pills-border-radius));
115
-
116
- &:disabled {
117
- color: var(--#{$prefix}nav-link-disabled-color);
118
- background-color: transparent;
119
- border-color: transparent;
120
- }
121
114
  }
122
115
 
123
116
  .nav-link.active,
@@ -141,11 +134,6 @@
141
134
 
142
135
  gap: var(--#{$prefix}nav-underline-gap);
143
136
 
144
- // .nav-item + .nav-item,
145
- // .nav-link + .nav-link {
146
- // margin-left: $nav-link-padding-x;
147
- // }
148
-
149
137
  .nav-link {
150
138
  padding-right: 0;
151
139
  padding-left: 0;