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

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 +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 +123 -275
  8. package/dist/css/coreui-grid.rtl.css.map +1 -1
  9. package/dist/css/coreui-grid.rtl.min.css +7 -3
  10. package/dist/css/coreui-grid.rtl.min.css.map +1 -1
  11. package/dist/css/coreui-reboot.css +151 -138
  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 +160 -146
  16. package/dist/css/coreui-reboot.rtl.css.map +1 -1
  17. package/dist/css/coreui-reboot.rtl.min.css +7 -3
  18. package/dist/css/coreui-reboot.rtl.min.css.map +1 -1
  19. package/dist/css/coreui-utilities.css +633 -412
  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 +809 -688
  24. package/dist/css/coreui-utilities.rtl.css.map +1 -1
  25. package/dist/css/coreui-utilities.rtl.min.css +7 -3
  26. package/dist/css/coreui-utilities.rtl.min.css.map +1 -1
  27. package/dist/css/coreui.css +1925 -1617
  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 +2238 -2091
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +7 -3
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/js/coreui.bundle.js +302 -289
  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 +262 -243
  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 +265 -245
  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 +10 -9
  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 +6 -6
  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 +2 -2
  139. package/scss/_buttons.scss +38 -71
  140. package/scss/_callout.scss +2 -2
  141. package/scss/_card.scss +1 -0
  142. package/scss/_carousel.scss +9 -3
  143. package/scss/_close.scss +2 -0
  144. package/scss/_dropdown.scss +10 -10
  145. package/scss/_functions.scss +59 -0
  146. package/scss/_grid.scss +8 -0
  147. package/scss/_header.scss +195 -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 +9 -39
  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 +19 -21
  160. package/scss/_root.scss +65 -64
  161. package/scss/_sidebar.scss +0 -11
  162. package/scss/_subheader.scss +72 -0
  163. package/scss/_tables.scss +18 -11
  164. package/scss/_toasts.scss +2 -2
  165. package/scss/_tooltip.scss +13 -14
  166. package/scss/_utilities.scss +117 -65
  167. package/scss/_variables-dark.scss +115 -55
  168. package/scss/_variables.scss +400 -247
  169. package/scss/coreui-grid.rtl.scss +7 -0
  170. package/scss/coreui-grid.scss +2 -5
  171. package/scss/coreui-reboot.rtl.scss +7 -0
  172. package/scss/coreui-reboot.scss +1 -1
  173. package/scss/coreui-utilities.rtl.scss +7 -0
  174. package/scss/coreui-utilities.scss +1 -1
  175. package/scss/coreui.rtl.scss +7 -0
  176. package/scss/coreui.scss +4 -3
  177. package/scss/forms/_floating-labels.scss +19 -15
  178. package/scss/forms/_form-check.scss +29 -8
  179. package/scss/forms/_form-control.scss +17 -4
  180. package/scss/forms/_form-select.scss +6 -7
  181. package/scss/forms/_input-group.scss +5 -5
  182. package/scss/helpers/_color-bg.scss +12 -2
  183. package/scss/helpers/_colored-links.scss +20 -2
  184. package/scss/helpers/_focus-ring.scss +5 -0
  185. package/scss/helpers/_icon-link.scss +25 -0
  186. package/scss/helpers/_ratio.scss +1 -1
  187. package/scss/helpers/_vr.scss +1 -0
  188. package/scss/mixins/_alert.scss +1 -1
  189. package/scss/mixins/_banner.scss +3 -3
  190. package/scss/mixins/_border-radius.scss +7 -7
  191. package/scss/mixins/_buttons.scss +53 -49
  192. package/scss/mixins/_forms.scss +7 -7
  193. package/scss/mixins/_grid.scss +1 -1
  194. package/scss/mixins/_list-group.scss +12 -20
  195. package/scss/mixins/_lists.scss +1 -1
  196. package/scss/mixins/_ltr-rtl.scss +87 -0
  197. package/scss/mixins/_utilities.scss +6 -1
  198. package/scss/mixins/_visually-hidden.scss +5 -1
  199. package/scss/sidebar/_sidebar-narrow.scss +6 -6
  200. package/scss/sidebar/_sidebar-nav.scss +4 -4
  201. package/scss/sidebar/_sidebar.scss +30 -22
  202. package/scss/vendor/_rfs.scss +24 -30
  203. package/scss/tests/mixins/_color-modes.test.scss +0 -69
  204. package/scss/tests/mixins/_utilities.test.scss +0 -393
  205. package/scss/tests/utilities/_api.test.scss +0 -75
@@ -4,87 +4,91 @@
4
4
  // and disabled options for all buttons
5
5
 
6
6
  // scss-docs-start btn-variant-mixin
7
- @mixin button-variant(
8
- $background,
9
- $border,
10
- $color: color-contrast($background),
11
- $hover-background: if($color == $color-contrast-light, shade-color($background, $btn-hover-bg-shade-amount), tint-color($background, $btn-hover-bg-tint-amount)),
12
- $hover-border: if($color == $color-contrast-light, shade-color($border, $btn-hover-border-shade-amount), tint-color($border, $btn-hover-border-tint-amount)),
13
- $hover-color: color-contrast($hover-background),
14
- $active-background: if($color == $color-contrast-light, shade-color($background, $btn-active-bg-shade-amount), tint-color($background, $btn-active-bg-tint-amount)),
15
- $active-border: if($color == $color-contrast-light, shade-color($border, $btn-active-border-shade-amount), tint-color($border, $btn-active-border-tint-amount)),
16
- $active-color: color-contrast($active-background),
17
- $disabled-background: $background,
18
- $disabled-border: $border,
19
- $disabled-color: color-contrast($disabled-background)
20
- ) {
7
+ @mixin button-variant($variant) {
8
+ $background: map-get($variant, "bg");
9
+ $border-color: map-get($variant, "border-color");
10
+ $color: map-get($variant, "color");
11
+ $hover-background: map-get($variant, "hover-bg");
12
+ $hover-border-color: map-get($variant, "hover-border-color");
13
+ $hover-color: map-get($variant, "hover-color");
14
+ $active-background: map-get($variant, "active-bg");
15
+ $active-border-color: map-get($variant, "active-border-color");
16
+ $active-color: map-get($variant, "active-color");
17
+ $disabled-background: map-get($variant, "disabled-bg");
18
+ $disabled-border-color: map-get($variant, "disabled-border-color");
19
+ $disabled-color: map-get($variant, "disabled-color");
20
+ $shadow: map-get($variant, "shadow");
21
+
21
22
  --#{$prefix}btn-color: #{$color};
22
23
  --#{$prefix}btn-bg: #{$background};
23
- --#{$prefix}btn-border-color: #{$border};
24
+ --#{$prefix}btn-border-color: #{$border-color};
24
25
  --#{$prefix}btn-hover-color: #{$hover-color};
25
26
  --#{$prefix}btn-hover-bg: #{$hover-background};
26
- --#{$prefix}btn-hover-border-color: #{$hover-border};
27
- --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border, 15%))};
27
+ --#{$prefix}btn-hover-border-color: #{$hover-border-color};
28
+ --#{$prefix}btn-focus-shadow-rgb: #{to-rgb(mix($color, $border-color, 15%))};
28
29
  --#{$prefix}btn-active-color: #{$active-color};
29
30
  --#{$prefix}btn-active-bg: #{$active-background};
30
- --#{$prefix}btn-active-border-color: #{$active-border};
31
+ --#{$prefix}btn-active-border-color: #{$active-border-color};
31
32
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
32
33
  --#{$prefix}btn-disabled-color: #{$disabled-color};
33
34
  --#{$prefix}btn-disabled-bg: #{$disabled-background};
34
- --#{$prefix}btn-disabled-border-color: #{$disabled-border};
35
+ --#{$prefix}btn-disabled-border-color: #{$disabled-border-color};
35
36
  }
36
37
  // scss-docs-end btn-variant-mixin
37
38
 
38
39
  // scss-docs-start btn-outline-variant-mixin
39
- @mixin button-outline-variant(
40
- $color,
41
- $color-hover: color-contrast($color),
42
- $active-background: $color,
43
- $active-border: $color,
44
- $active-color: color-contrast($active-background)
45
- ) {
40
+ @mixin button-outline-variant($variant) {
41
+ $color: map-get($variant, "color");
42
+ $hover-background: map-get($variant, "hover-bg");
43
+ $hover-border-color: map-get($variant, "hover-border-color");
44
+ $hover-color: map-get($variant, "hover-color");
45
+ $active-background: map-get($variant, "active-bg");
46
+ $active-border-color: map-get($variant, "active-border-color");
47
+ $active-color: map-get($variant, "active-color");
48
+ $disabled-color: map-get($variant, "disabled-color");
49
+ $shadow: map-get($variant, "shadow");
50
+
46
51
  --#{$prefix}btn-color: #{$color};
47
52
  --#{$prefix}btn-border-color: #{$color};
48
- --#{$prefix}btn-hover-color: #{$color-hover};
53
+ --#{$prefix}btn-hover-color: #{$hover-color};
49
54
  --#{$prefix}btn-hover-bg: #{$active-background};
50
- --#{$prefix}btn-hover-border-color: #{$active-border};
55
+ --#{$prefix}btn-hover-border-color: #{$active-border-color};
51
56
  --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
52
57
  --#{$prefix}btn-active-color: #{$active-color};
53
58
  --#{$prefix}btn-active-bg: #{$active-background};
54
- --#{$prefix}btn-active-border-color: #{$active-border};
59
+ --#{$prefix}btn-active-border-color: #{$active-border-color};
55
60
  --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
56
61
  --#{$prefix}btn-disabled-color: #{$color};
57
62
  --#{$prefix}btn-disabled-bg: transparent;
58
- --#{$prefix}btn-disabled-border-color: #{$color};
59
63
  --#{$prefix}gradient: none;
60
64
  }
61
65
  // scss-docs-end btn-outline-variant-mixin
62
66
 
63
67
  // scss-docs-start btn-ghost-variant-mixin
64
- @mixin button-ghost-variant(
65
- $color,
66
- $color-hover: color-contrast($color),
67
- $active-background: $color,
68
- $active-border: $color,
69
- $active-color: color-contrast($active-background)
70
- ) {
68
+ @mixin button-ghost-variant($variant) {
69
+ $color: map-get($variant, "color");
70
+ $hover-background: map-get($variant, "hover-bg");
71
+ $hover-border-color: map-get($variant, "hover-border-color");
72
+ $hover-color: map-get($variant, "hover-color");
73
+ $active-background: map-get($variant, "active-bg");
74
+ $active-border-color: map-get($variant, "active-border-color");
75
+ $active-color: map-get($variant, "active-color");
76
+ $disabled-color: map-get($variant, "disabled-color");
77
+ $shadow: map-get($variant, "shadow");
78
+
71
79
  --#{$prefix}btn-color: #{$color};
72
- --#{$prefix}btn-hover-color: #{$color-hover};
73
- --#{$prefix}btn-hover-bg: #{$active-background};
74
- --#{$prefix}btn-hover-border-color: #{$active-border};
75
- --#{$prefix}btn-focus-shadow-rgb: #{to-rgb($color)};
76
- --#{$prefix}btn-active-color: #{$active-color};
80
+ --#{$prefix}btn-hover-bg: #{$hover-background};
81
+ --#{$prefix}btn-hover-border-color: #{$hover-border-color};
82
+ --#{$prefix}btn-hover-color: #{$hover-color};
77
83
  --#{$prefix}btn-active-bg: #{$active-background};
78
- --#{$prefix}btn-active-border-color: #{$active-border};
79
- --#{$prefix}btn-active-shadow: #{$btn-active-box-shadow};
80
- --#{$prefix}btn-disabled-color: #{$color};
81
- --#{$prefix}btn-disabled-bg: transparent;
82
- --#{$prefix}btn-disabled-border-color: #{$color};
83
- --#{$prefix}gradient: none;
84
+ --#{$prefix}btn-active-border-color: #{$active-border-color};
85
+ --#{$prefix}btn-active-color: #{$active-color};
86
+ --#{$prefix}btn-disabled-color: #{$disabled-color};
87
+ --#{$prefix}btn-shadow: #{$shadow};
84
88
  }
85
89
  // scss-docs-end btn-ghost-variant-mixin
86
90
 
87
-
91
+ // Button sizes
88
92
  // scss-docs-start btn-size-mixin
89
93
  @mixin button-size($padding-y, $padding-x, $font-size, $border-radius) {
90
94
  --#{$prefix}btn-padding-y: #{$padding-y};
@@ -60,10 +60,10 @@
60
60
  border-color: $border-color;
61
61
 
62
62
  @if $enable-validation-icons {
63
- padding-right: $input-height-inner;
63
+ @include ltr-rtl("padding-right", $input-height-inner);
64
64
  background-image: escape-svg($icon);
65
65
  background-repeat: no-repeat;
66
- background-position: right $input-height-inner-quarter center;
66
+ @include ltr-rtl-value-only("background-position", right $input-height-inner-quarter center, left $input-height-inner-quarter center);
67
67
  background-size: $input-height-inner-half $input-height-inner-half;
68
68
  }
69
69
 
@@ -78,8 +78,8 @@
78
78
  textarea.form-control {
79
79
  @include form-validation-state-selector($state) {
80
80
  @if $enable-validation-icons {
81
- padding-right: $input-height-inner;
82
- background-position: top $input-height-inner-quarter right $input-height-inner-quarter;
81
+ @include ltr-rtl("padding-right", $input-height-inner);
82
+ @include ltr-rtl-value-only("background-position", top $input-height-inner-quarter right $input-height-inner-quarter, top $input-height-inner-quarter left $input-height-inner-quarter);
83
83
  }
84
84
  }
85
85
  }
@@ -92,8 +92,8 @@
92
92
  &:not([multiple]):not([size]),
93
93
  &:not([multiple])[size="1"] {
94
94
  --#{$prefix}form-select-bg-icon: #{escape-svg($icon)};
95
- padding-right: $form-select-feedback-icon-padding-end;
96
- background-position: $form-select-bg-position, $form-select-feedback-icon-position;
95
+ @include ltr-rtl("padding-right", $form-select-feedback-icon-padding-end);
96
+ @include ltr-rtl-value-only("background-position", #{$form-select-bg-position, $form-select-feedback-icon-position});
97
97
  background-size: $form-select-bg-size, $form-select-feedback-icon-size;
98
98
  }
99
99
  }
@@ -132,7 +132,7 @@
132
132
  }
133
133
  .form-check-inline .form-check-input {
134
134
  ~ .#{$state}-feedback {
135
- margin-left: .5em;
135
+ @include ltr-rtl("margin-left", .5em);
136
136
  }
137
137
  }
138
138
 
@@ -45,7 +45,7 @@
45
45
 
46
46
  @mixin make-col-offset($size, $columns: $grid-columns) {
47
47
  $num: divide($size, $columns);
48
- margin-left: if($num == 0, 0, percentage($num));
48
+ @include ltr-rtl("margin-left", if($num == 0, 0, percentage($num)));
49
49
  }
50
50
 
51
51
  // Row columns
@@ -1,27 +1,19 @@
1
- @include deprecate("`list-group-item-variant()`", "v5.0.0", "v6.0.0");
2
-
1
+ @include deprecate("`list-group-item-variant()`", "v4.3.0", "v6.0.0");
3
2
 
4
3
  // List Groups
5
4
 
6
5
  // scss-docs-start list-group-mixin
7
- @mixin list-group-item-variant($state, $background, $color) {
8
- .list-group-item-#{$state} {
9
- color: $color;
10
- background-color: $background;
11
-
12
- &.list-group-item-action {
13
- &:hover,
14
- &:focus {
15
- color: $color;
16
- background-color: shade-color($background, 10%);
17
- }
6
+ @mixin list-group-item-variant($state, $variant) {
7
+ $background: map-get($variant, "bg");
8
+ $background-hover: map-get($variant, "bg-hover");
9
+ $color: contrast-ratio-correction(map-get($variant, "color"), map-get($variant, "bg"), abs($alert-color-scale), $state);
18
10
 
19
- &.active {
20
- color: $white;
21
- background-color: $color;
22
- border-color: $color;
23
- }
24
- }
25
- }
11
+ --#{$prefix}list-group-color: #{$color};
12
+ --#{$prefix}list-group-bg: #{$background};
13
+ --#{$prefix}list-group-hover-bg: #{$background-hover};
14
+ --#{$prefix}list-group-action-hover-color: #{$color};
15
+ --#{$prefix}list-group-action-active-color: #{$white};
16
+ --#{$prefix}list-group-action-active-bg: #{$color};
17
+ --#{$prefix}list-group-action-active-border-color: #{$color};
26
18
  }
27
19
  // scss-docs-end list-group-mixin
@@ -2,6 +2,6 @@
2
2
 
3
3
  // Unstyled keeps list items block level, just removes default browser padding and list-style
4
4
  @mixin list-unstyled {
5
- padding-left: 0;
5
+ @include ltr-rtl("padding-left", 0);
6
6
  list-style: none;
7
7
  }
@@ -0,0 +1,87 @@
1
+ @mixin ltr {
2
+ @if $enable-ltr {
3
+ html:not([dir="rtl"]) & {
4
+ @content;
5
+ }
6
+ }
7
+ }
8
+
9
+ @mixin rtl {
10
+ @if $enable-rtl {
11
+ *[dir="rtl"] & {
12
+ @content;
13
+ }
14
+ }
15
+ }
16
+
17
+ @function reflect($element) {
18
+ $string: #{$element};
19
+ @if str-index($string, "left") {
20
+ @return str-replace($string, "left", "right");
21
+ }
22
+ @if str-index($string, "right") {
23
+ @return str-replace($string, "right", "left");
24
+ }
25
+
26
+ @return unquote($string);
27
+ }
28
+
29
+ @mixin ltr-rtl($property, $value, $property-rtl: null, $value-rtl: null, $important: null) {
30
+ $property-reflected: reflect($property);
31
+ $value-reflected: reflect($value);
32
+
33
+ @if $enable-ltr and $enable-rtl {
34
+ @include ltr() {
35
+ #{$property}: $value $important;
36
+ }
37
+ @include rtl() {
38
+ @if $value-rtl {
39
+ #{$property-reflected}: $value-rtl $important;
40
+ }
41
+ @else {
42
+ #{$property-reflected}: $value-reflected $important;
43
+ }
44
+ }
45
+ }
46
+ @else {
47
+ @if $enable-rtl {
48
+ @if $value-rtl {
49
+ #{$property-reflected}: $value-rtl $important;
50
+ }
51
+ @else {
52
+ #{$property-reflected}: $value-reflected $important;
53
+ }
54
+ }
55
+ @else {
56
+ #{$property}: $value $important;
57
+ }
58
+ }
59
+ }
60
+
61
+ @mixin ltr-rtl-value-only($property, $value, $value-rtl: null, $important: null) {
62
+ $value-reflected: reflect($value);
63
+
64
+ @if $enable-ltr and $enable-rtl {
65
+ @include ltr() {
66
+ #{$property}: $value $important;
67
+ }
68
+ @include rtl() {
69
+ @if $value-rtl {
70
+ #{$property}: $value-rtl $important;
71
+ } @else {
72
+ #{$property}: $value-reflected $important;
73
+ }
74
+ }
75
+ }
76
+ @else {
77
+ @if $enable-rtl {
78
+ @if $value-rtl {
79
+ #{$property}: $value-rtl $important;
80
+ } @else {
81
+ #{$property}: $value-reflected $important;
82
+ }
83
+ } @else {
84
+ #{$property}: $value $important;
85
+ }
86
+ }
87
+ }
@@ -92,7 +92,12 @@
92
92
  --#{$prefix}#{$local-var}: #{$variable};
93
93
  }
94
94
  }
95
- #{$property}: $value if($enable-important-utilities, !important, null);
95
+ @if $is-rtl == true {
96
+ @include ltr-rtl($property, $value, null, null, if($enable-important-utilities, !important, null));
97
+ } @else {
98
+ #{$property}: $value if($enable-important-utilities, !important, null);
99
+ }
100
+
96
101
  }
97
102
  }
98
103
  }
@@ -6,7 +6,6 @@
6
6
  // See: https://kittygiraudel.com/2016/10/13/css-hide-and-seek/
7
7
 
8
8
  @mixin visually-hidden() {
9
- position: absolute !important;
10
9
  width: 1px !important;
11
10
  height: 1px !important;
12
11
  padding: 0 !important;
@@ -15,6 +14,11 @@
15
14
  clip: rect(0, 0, 0, 0) !important;
16
15
  white-space: nowrap !important;
17
16
  border: 0 !important;
17
+
18
+ // Fix for positioned table caption that could become anonymous cells
19
+ &:not(caption) {
20
+ position: absolute !important;
21
+ }
18
22
  }
19
23
 
20
24
  // Use to only display content when it's focused, or one of its child elements is focused
@@ -39,12 +39,12 @@
39
39
  bottom: 0;
40
40
 
41
41
  &::before {
42
- transform: rotate(180deg) #{"/* rtl:rotate(0deg) */"};
42
+ @include ltr-rtl("transform", rotate(-180deg), null, rotate(0deg));
43
43
  }
44
44
  }
45
45
 
46
46
  &.sidebar-end .sidebar-toggler::before {
47
- transform: rotate(0deg) #{"/* rtl:rotate(180deg) */"};
47
+ transform: rotate(0deg);
48
48
  }
49
49
  }
50
50
  }
@@ -77,12 +77,12 @@
77
77
  &:hover {
78
78
  .sidebar-toggler {
79
79
  &::before {
80
- transform: rotate(-180deg) #{"/* rtl:rotate(0deg) */"};
80
+ @include ltr-rtl("transform", rotate(-180deg), null, rotate(0deg));
81
81
  }
82
82
  }
83
83
 
84
84
  &.sidebar-end .sidebar-toggler::before {
85
- transform: rotate(0deg) #{"/* rtl:rotate(180deg) */"};
85
+ transform: rotate(0deg);
86
86
  }
87
87
  }
88
88
  }
@@ -95,10 +95,10 @@
95
95
  &.sidebar-narrow,
96
96
  &.sidebar-narrow-unfoldable {
97
97
  &:not(.sidebar-end) {
98
- margin-left: calc(var(--#{$prefix}sidebar-narrow-width) * -1); // stylelint-disable-line function-disallowed-list
98
+ @include ltr-rtl("margin-left", calc(var(--#{$prefix}sidebar-narrow-width) * -1));
99
99
  }
100
100
  &.sidebar-end {
101
- margin-right: calc(var(--#{$prefix}sidebar-narrow-width) * -1); // stylelint-disable-line function-disallowed-list
101
+ @include ltr-rtl("margin-right", calc(var(--#{$prefix}sidebar-narrow-width) * -1));
102
102
  }
103
103
  }
104
104
  }
@@ -94,7 +94,7 @@
94
94
  @include transition(inherit);
95
95
 
96
96
  &:first-child {
97
- margin-left: calc(var(--#{$prefix}sidebar-nav-link-padding-x) * -1); // stylelint-disable-line function-disallowed-list
97
+ @include ltr-rtl("margin-left", calc(var(--#{$prefix}sidebar-nav-link-padding-x) * -1));
98
98
  }
99
99
  }
100
100
  // stylelint-disable-next-line selector-no-qualifying-type
@@ -140,7 +140,7 @@
140
140
  display: block;
141
141
  flex: 0 12px;
142
142
  height: 12px;
143
- margin-left: auto;
143
+ @include ltr-rtl("margin-left", auto);
144
144
  content: "";
145
145
  background-image: var(--#{$prefix}sidebar-nav-group-indicator);
146
146
  background-repeat: no-repeat;
@@ -154,10 +154,10 @@
154
154
  list-style: none;
155
155
 
156
156
  .nav-link {
157
- padding-left: var(--#{$prefix}sidebar-nav-icon-width);
157
+ @include ltr-rtl("padding-left", var(--#{$prefix}sidebar-nav-icon-width));
158
158
 
159
159
  .nav-icon {
160
- margin-left: calc(var(--#{$prefix}sidebar-nav-icon-width) * -1); // stylelint-disable-line function-disallowed-list
160
+ @include ltr-rtl("margin-left", calc(var(--#{$prefix}sidebar-nav-icon-width) * -1));
161
161
  }
162
162
  }
163
163
  }
@@ -25,9 +25,7 @@
25
25
  --#{$prefix}sidebar-toggler-indicator-height: #{$sidebar-toggler-indicator-height};
26
26
  --#{$prefix}sidebar-toggler-hover-bg: #{$sidebar-toggler-hover-bg};
27
27
  --#{$prefix}sidebar-toggler-indicator-hover: #{escape-svg($sidebar-toggler-indicator-hover-icon)};
28
-
29
28
  --#{$prefix}sidebar-narrow-width: #{$sidebar-narrow-width};
30
-
31
29
  --#{$prefix}sidebar-nav-title-padding-x: #{$sidebar-nav-title-padding-x};
32
30
  --#{$prefix}sidebar-nav-title-padding-y: #{$sidebar-nav-title-padding-y};
33
31
  --#{$prefix}sidebar-nav-title-margin-top: #{$sidebar-nav-title-margin-top};
@@ -70,12 +68,12 @@
70
68
  padding: var(--#{$prefix}sidebar-padding-y) var(--#{$prefix}sidebar-padding-x);
71
69
  color: var(--#{$prefix}sidebar-color);
72
70
  background: var(--#{$prefix}sidebar-bg);
71
+ @include ltr-rtl("border-right", var(--#{$prefix}sidebar-border-width) solid var(--#{$prefix}sidebar-border-color));
73
72
  box-shadow: none;
74
73
  @include transition($sidebar-transition);
75
74
 
76
75
  &:not(.sidebar-end){
77
- margin-left: 0;
78
- border-right: var(--#{$prefix}sidebar-border-width) solid var(--#{$prefix}sidebar-border-color);
76
+ @include ltr-rtl("margin-left", 0);
79
77
  ~ * {
80
78
  --#{$prefix}sidebar-occupy-start: #{$sidebar-width};
81
79
  }
@@ -83,8 +81,7 @@
83
81
 
84
82
  &.sidebar-end {
85
83
  order: 99;
86
- margin-right: 0;
87
- border-left: var(--#{$prefix}sidebar-border-width) solid var(--#{$prefix}sidebar-border-color);
84
+ @include ltr-rtl("margin-right", 0);
88
85
  ~ * {
89
86
  --#{$prefix}sidebar-occupy-end: #{$sidebar-width};
90
87
  }
@@ -115,13 +112,13 @@
115
112
  @include media-breakpoint-up($mobile-breakpoint) {
116
113
  &.hide {
117
114
  &:not(.sidebar-end){
118
- margin-left: calc(-1 * var(--#{$prefix}sidebar-width)); // stylelint-disable-line function-disallowed-list
115
+ @include ltr-rtl("margin-left", calc(-1 * var(--#{$prefix}sidebar-width)));
119
116
  ~ * {
120
117
  --#{$prefix}sidebar-occupy-start: 0;
121
118
  }
122
119
  }
123
120
  &.sidebar-end {
124
- margin-right: calc(-1 * var(--#{$prefix}sidebar-width)); // stylelint-disable-line function-disallowed-list
121
+ @include ltr-rtl("margin-right", calc(-1 * var(--#{$prefix}sidebar-width)));
125
122
  ~ * {
126
123
  --#{$prefix}sidebar-occupy-end: 0;
127
124
  }
@@ -137,11 +134,11 @@
137
134
  z-index: $zindex-fixed;
138
135
 
139
136
  &:not(.sidebar-end) {
140
- left: 0;
137
+ @include ltr-rtl("left", 0);
141
138
  }
142
139
 
143
140
  &.sidebar-end {
144
- right: 0;
141
+ @include ltr-rtl("right", 0);
145
142
  }
146
143
  }
147
144
  }
@@ -161,14 +158,14 @@
161
158
  z-index: $zindex-fixed + 2;
162
159
 
163
160
  &:not(.sidebar-end) {
164
- left: 0;
161
+ @include ltr-rtl("left", 0);
165
162
  ~ * {
166
163
  --#{$prefix}sidebar-occupy-start: 0;
167
164
  }
168
165
  }
169
166
 
170
167
  &.sidebar-end {
171
- right: 0;
168
+ @include ltr-rtl("right", 0);
172
169
  ~ * {
173
170
  --#{$prefix}sidebar-occupy-end: 0;
174
171
  }
@@ -184,23 +181,23 @@
184
181
  z-index: $zindex-fixed + 1;
185
182
 
186
183
  &:not(.sidebar-end) {
187
- left: 0;
184
+ @include ltr-rtl("left", 0);
188
185
  ~ * {
189
186
  --#{$prefix}sidebar-occupy-start: 0 !important; // stylelint-disable-line
190
187
  }
191
188
 
192
189
  &:not(.show) {
193
- margin-left: calc(-1 * var(--#{$prefix}sidebar-width)); // stylelint-disable-line function-disallowed-list
190
+ @include ltr-rtl("margin-left", calc(-1 * var(--#{$prefix}sidebar-width)));
194
191
  }
195
192
  }
196
193
  &.sidebar-end {
197
- right: 0;
194
+ @include ltr-rtl("right", 0);
198
195
  ~ * {
199
196
  --#{$prefix}sidebar-occupy-end: 0 !important; // stylelint-disable-line
200
197
  }
201
198
 
202
199
  &:not(.show) {
203
- margin-right: calc(-1 * var(--#{$prefix}sidebar-width)); // stylelint-disable-line function-disallowed-list
200
+ @include ltr-rtl("margin-right", calc(-1 * var(--#{$prefix}sidebar-width)));
204
201
  }
205
202
  }
206
203
  }
@@ -209,7 +206,7 @@
209
206
  .sidebar-close {
210
207
  position: absolute;
211
208
  top: 0;
212
- right: 0;
209
+ @include ltr-rtl("right", 0);
213
210
  width: var(--#{$prefix}sidebar-width);
214
211
  height: var(--#{$prefix}sidebar-header-height);
215
212
  color: var(--#{$prefix}sidebar-color);
@@ -228,6 +225,8 @@
228
225
  .sidebar-brand {
229
226
  display: flex;
230
227
  flex: 0 0 var(--#{$prefix}sidebar-brand-height);
228
+ align-items: center;
229
+ justify-content: center;
231
230
  color: var(--#{$prefix}sidebar-brand-color);
232
231
  background: var(--#{$prefix}sidebar-brand-bg);
233
232
 
@@ -281,10 +280,9 @@
281
280
  background-position: center;
282
281
  background-size: calc(var(--#{$prefix}sidebar-toggler-indicator-height) * .25); // stylelint-disable-line function-disallowed-list
283
282
  @include transition($sidebar-toggler-transition);
284
-
285
- /* rtl:raw:
286
- transform: rotate(-180deg);
287
- */
283
+ @include rtl() {
284
+ transform: rotate(-180deg);
285
+ }
288
286
  }
289
287
 
290
288
  &:focus {
@@ -301,7 +299,7 @@
301
299
  .sidebar-end & {
302
300
  justify-content: flex-start;
303
301
  &::before {
304
- transform: rotate(-180deg) #{"/* rtl:rotate(0deg) */"};
302
+ transform: rotate(-180deg);
305
303
  }
306
304
  }
307
305
  }
@@ -319,3 +317,13 @@
319
317
  @include overlay-backdrop(var(--#{$prefix}backdrop-zindex), var(--#{$prefix}backdrop-bg), var(--#{$prefix}backdrop-opacity));
320
318
  }
321
319
  }
320
+
321
+ @if $enable-dark-mode {
322
+ @include color-mode(dark) {
323
+ .sidebar {
324
+ --#{$prefix}sidebar-bg: #{$sidebar-bg-dark};
325
+ --#{$prefix}sidebar-border-width: #{$sidebar-border-width-dark};
326
+ --#{$prefix}sidebar-border-color: #{$sidebar-border-color-dark};
327
+ }
328
+ }
329
+ }