@coreui/coreui 5.2.0 → 5.3.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 (273) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -4
  3. package/dist/css/coreui-grid.css +456 -229
  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 +229 -229
  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 +56 -49
  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 +54 -49
  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 +531 -371
  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 +353 -353
  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 +1457 -1020
  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 +1115 -1002
  32. package/dist/css/coreui.rtl.css.map +1 -1
  33. package/dist/css/coreui.rtl.min.css +3 -3
  34. package/dist/css/coreui.rtl.min.css.map +1 -1
  35. package/dist/css/themes/bootstrap/bootstrap.css +5195 -4350
  36. package/dist/css/themes/bootstrap/bootstrap.css.map +1 -1
  37. package/dist/css/themes/bootstrap/bootstrap.min.css +3 -7
  38. package/dist/css/themes/bootstrap/bootstrap.min.css.map +1 -1
  39. package/dist/css/themes/bootstrap/bootstrap.rtl.css +4971 -4625
  40. package/dist/css/themes/bootstrap/bootstrap.rtl.css.map +1 -1
  41. package/dist/css/themes/bootstrap/bootstrap.rtl.min.css +3 -7
  42. package/dist/css/themes/bootstrap/bootstrap.rtl.min.css.map +1 -1
  43. package/dist/js/bootstrap.bundle.js +4 -7
  44. package/dist/js/bootstrap.bundle.js.map +1 -1
  45. package/dist/js/bootstrap.bundle.min.js +3 -3
  46. package/dist/js/bootstrap.bundle.min.js.map +1 -1
  47. package/dist/js/bootstrap.esm.js +4 -5
  48. package/dist/js/bootstrap.esm.js.map +1 -1
  49. package/dist/js/bootstrap.esm.min.js +3 -3
  50. package/dist/js/bootstrap.esm.min.js.map +1 -1
  51. package/dist/js/bootstrap.js +4 -5
  52. package/dist/js/bootstrap.js.map +1 -1
  53. package/dist/js/bootstrap.min.js +3 -3
  54. package/dist/js/bootstrap.min.js.map +1 -1
  55. package/dist/js/coreui.bundle.js +4 -7
  56. package/dist/js/coreui.bundle.js.map +1 -1
  57. package/dist/js/coreui.bundle.min.js +3 -3
  58. package/dist/js/coreui.bundle.min.js.map +1 -1
  59. package/dist/js/coreui.esm.js +4 -5
  60. package/dist/js/coreui.esm.js.map +1 -1
  61. package/dist/js/coreui.esm.min.js +3 -3
  62. package/dist/js/coreui.esm.min.js.map +1 -1
  63. package/dist/js/coreui.js +4 -5
  64. package/dist/js/coreui.js.map +1 -1
  65. package/dist/js/coreui.min.js +3 -3
  66. package/dist/js/coreui.min.js.map +1 -1
  67. package/js/dist/alert.js +2 -2
  68. package/js/dist/base-component.js +3 -3
  69. package/js/dist/base-component.js.map +1 -1
  70. package/js/dist/button.js +2 -2
  71. package/js/dist/carousel.js +2 -2
  72. package/js/dist/collapse.js +2 -2
  73. package/js/dist/dom/data.js +2 -2
  74. package/js/dist/dom/event-handler.js +2 -2
  75. package/js/dist/dom/manipulator.js +2 -2
  76. package/js/dist/dom/selector-engine.js +2 -2
  77. package/js/dist/dropdown.js +2 -2
  78. package/js/dist/modal.js +2 -2
  79. package/js/dist/navigation.js +3 -3
  80. package/js/dist/navigation.js.map +1 -1
  81. package/js/dist/offcanvas.js +2 -2
  82. package/js/dist/popover.js +2 -2
  83. package/js/dist/scrollspy.js +2 -2
  84. package/js/dist/sidebar.js +2 -2
  85. package/js/dist/tab.js +2 -2
  86. package/js/dist/toast.js +2 -2
  87. package/js/dist/tooltip.js +2 -2
  88. package/js/dist/util/backdrop.js +2 -2
  89. package/js/dist/util/component-functions.js +2 -2
  90. package/js/dist/util/config.js +2 -2
  91. package/js/dist/util/focustrap.js +2 -2
  92. package/js/dist/util/index.js +2 -2
  93. package/js/dist/util/index.js.map +1 -1
  94. package/js/dist/util/sanitizer.js +2 -3
  95. package/js/dist/util/sanitizer.js.map +1 -1
  96. package/js/dist/util/scrollbar.js +2 -2
  97. package/js/dist/util/swipe.js +2 -2
  98. package/js/dist/util/template-factory.js +2 -2
  99. package/js/src/base-component.js +1 -1
  100. package/js/src/navigation.js +1 -1
  101. package/js/src/util/sanitizer.js +0 -1
  102. package/package.json +26 -29
  103. package/scss/_accordion.import.scss +1 -0
  104. package/scss/_accordion.scss +10 -2
  105. package/scss/_alert.import.scss +1 -0
  106. package/scss/_alert.scss +7 -3
  107. package/scss/_avatar.import.scss +1 -0
  108. package/scss/_avatar.scss +13 -8
  109. package/scss/_badge.import.scss +1 -0
  110. package/scss/_badge.scss +4 -0
  111. package/scss/_banner.scss +7 -0
  112. package/scss/_breadcrumb.import.scss +1 -0
  113. package/scss/_breadcrumb.scss +9 -3
  114. package/scss/_button-group.import.scss +1 -0
  115. package/scss/_button-group.scss +7 -3
  116. package/scss/_buttons.import.scss +1 -0
  117. package/scss/_buttons.scss +49 -18
  118. package/scss/_callout.import.scss +1 -0
  119. package/scss/_callout.scss +5 -2
  120. package/scss/_card.import.scss +1 -0
  121. package/scss/_card.scss +8 -3
  122. package/scss/_carousel.import.scss +1 -0
  123. package/scss/_carousel.scss +9 -3
  124. package/scss/_close.import.scss +1 -0
  125. package/scss/_close.scss +6 -1
  126. package/scss/_containers.import.scss +1 -0
  127. package/scss/_containers.scss +4 -0
  128. package/scss/_dropdown.import.scss +1 -0
  129. package/scss/_dropdown.scss +30 -21
  130. package/scss/_footer.import.scss +1 -0
  131. package/scss/_footer.scss +2 -0
  132. package/scss/_forms.import.scss +9 -0
  133. package/scss/_forms.scss +9 -9
  134. package/scss/_functions.import.scss +1 -0
  135. package/scss/_functions.scss +12 -366
  136. package/scss/_grid.import.scss +1 -0
  137. package/scss/_grid.scss +23 -1
  138. package/scss/_header.import.scss +1 -0
  139. package/scss/_header.scss +9 -2
  140. package/scss/_helpers.import.scss +1 -0
  141. package/scss/_helpers.scss +12 -12
  142. package/scss/_icon.import.scss +1 -0
  143. package/scss/_icon.scss +3 -0
  144. package/scss/_images.import.scss +1 -0
  145. package/scss/_images.scss +6 -0
  146. package/scss/_list-group.import.scss +1 -0
  147. package/scss/_list-group.scss +11 -6
  148. package/scss/_maps.import.scss +1 -0
  149. package/scss/_maps.scss +14 -7
  150. package/scss/_mixins.import.scss +1 -0
  151. package/scss/_mixins.scss +29 -29
  152. package/scss/_modal.import.scss +1 -0
  153. package/scss/_modal.scss +12 -3
  154. package/scss/_nav.import.scss +1 -0
  155. package/scss/_nav.scss +7 -1
  156. package/scss/_navbar.import.scss +1 -0
  157. package/scss/_navbar.scss +16 -4
  158. package/scss/_offcanvas.import.scss +1 -0
  159. package/scss/_offcanvas.scss +14 -7
  160. package/scss/_pagination.import.scss +1 -0
  161. package/scss/_pagination.scss +9 -1
  162. package/scss/_placeholders.import.scss +1 -0
  163. package/scss/_placeholders.scss +2 -0
  164. package/scss/_popover.import.scss +1 -0
  165. package/scss/_popover.scss +6 -0
  166. package/scss/_progress.import.scss +1 -0
  167. package/scss/_progress.scss +7 -0
  168. package/scss/_reboot.import.scss +1 -0
  169. package/scss/_reboot.scss +11 -7
  170. package/scss/_root.import.scss +1 -0
  171. package/scss/_root.scss +14 -5
  172. package/scss/_sidebar.import.scss +3 -0
  173. package/scss/_sidebar.scss +3 -3
  174. package/scss/_spinners.import.scss +1 -0
  175. package/scss/_spinners.scss +2 -0
  176. package/scss/_tables.import.scss +1 -0
  177. package/scss/_tables.scss +6 -1
  178. package/scss/_toasts.import.scss +1 -0
  179. package/scss/_toasts.scss +5 -2
  180. package/scss/_tooltip.import.scss +1 -0
  181. package/scss/_tooltip.scss +6 -0
  182. package/scss/_transitions.import.scss +1 -0
  183. package/scss/_transitions.scss +3 -0
  184. package/scss/_type.import.scss +1 -0
  185. package/scss/_type.scss +6 -1
  186. package/scss/_utilities.import.scss +1 -0
  187. package/scss/_utilities.scss +50 -63
  188. package/scss/_variables-dark.import.scss +1 -0
  189. package/scss/_variables-dark.scss +17 -36
  190. package/scss/_variables.import.scss +1 -0
  191. package/scss/_variables.scss +36 -34
  192. package/scss/coreui-grid.rtl.scss +4 -4
  193. package/scss/coreui-grid.scss +12 -21
  194. package/scss/coreui-reboot.rtl.scss +4 -4
  195. package/scss/coreui-reboot.scss +8 -9
  196. package/scss/coreui-utilities.rtl.scss +4 -4
  197. package/scss/coreui-utilities.scss +8 -11
  198. package/scss/coreui.rtl.scss +4 -4
  199. package/scss/coreui.scss +44 -47
  200. package/scss/forms/_floating-labels.import.scss +1 -0
  201. package/scss/forms/_floating-labels.scss +5 -1
  202. package/scss/forms/_form-check.import.scss +1 -0
  203. package/scss/forms/_form-check.scss +24 -20
  204. package/scss/forms/_form-control.import.scss +1 -0
  205. package/scss/forms/_form-control.scss +9 -1
  206. package/scss/forms/_form-range.import.scss +1 -0
  207. package/scss/forms/_form-range.scss +7 -0
  208. package/scss/forms/_form-select.import.scss +1 -0
  209. package/scss/forms/_form-select.scss +18 -5
  210. package/scss/forms/_form-text.import.scss +1 -0
  211. package/scss/forms/_form-text.scss +3 -0
  212. package/scss/forms/_input-group.import.scss +1 -0
  213. package/scss/forms/_input-group.scss +10 -4
  214. package/scss/forms/_labels.import.scss +1 -0
  215. package/scss/forms/_labels.scss +4 -0
  216. package/scss/forms/_validation.import.scss +1 -0
  217. package/scss/forms/_validation.scss +3 -0
  218. package/scss/functions/_assert-ascending.scss +19 -0
  219. package/scss/functions/_assert-starts-at-zero.scss +14 -0
  220. package/scss/functions/_color-contrast-variables.scss +23 -0
  221. package/scss/functions/_color-contrast.scss +27 -0
  222. package/scss/functions/_color.scss +18 -0
  223. package/scss/functions/_contrast-ratio.scss +35 -0
  224. package/scss/functions/_escape-svg.scss +22 -0
  225. package/scss/functions/_maps.scss +57 -0
  226. package/scss/functions/_math.scss +87 -0
  227. package/scss/functions/_rgba-css-var.scss +9 -0
  228. package/scss/functions/_str-replace.scss +19 -0
  229. package/scss/functions/_to-rgb.scss +5 -0
  230. package/scss/helpers/_clearfix.scss +2 -0
  231. package/scss/helpers/_color-bg.scss +9 -3
  232. package/scss/helpers/_colored-links.scss +13 -9
  233. package/scss/helpers/_focus-ring.scss +2 -0
  234. package/scss/helpers/_icon-link.scss +3 -0
  235. package/scss/helpers/_position.scss +5 -1
  236. package/scss/helpers/_ratio.scss +3 -1
  237. package/scss/helpers/_stretched-link.scss +2 -0
  238. package/scss/helpers/_text-truncation.scss +2 -0
  239. package/scss/helpers/_visually-hidden.scss +2 -0
  240. package/scss/helpers/_vr.scss +2 -0
  241. package/scss/mixins/_alert.scss +3 -0
  242. package/scss/mixins/_avatar.scss +3 -0
  243. package/scss/mixins/_backdrop.scss +2 -0
  244. package/scss/mixins/_border-radius.scss +15 -11
  245. package/scss/mixins/_box-shadow.scss +5 -2
  246. package/scss/mixins/_breakpoints.scss +82 -5
  247. package/scss/mixins/_buttons.scss +54 -50
  248. package/scss/mixins/_caret.scss +5 -3
  249. package/scss/mixins/_color-mode.scss +3 -1
  250. package/scss/mixins/_container.scss +2 -0
  251. package/scss/mixins/_deprecate.scss +2 -0
  252. package/scss/mixins/_forms.scss +12 -5
  253. package/scss/mixins/_gradients.scss +2 -0
  254. package/scss/mixins/_grid.scss +76 -7
  255. package/scss/mixins/_list-group.scss +6 -3
  256. package/scss/mixins/_lists.scss +1 -1
  257. package/scss/mixins/_ltr-rtl.scss +48 -17
  258. package/scss/mixins/_pagination.scss +3 -0
  259. package/scss/mixins/_reset-text.scss +2 -1
  260. package/scss/mixins/_table-variants.scss +10 -4
  261. package/scss/mixins/_transition.scss +7 -4
  262. package/scss/mixins/_utilities.import.scss +1 -0
  263. package/scss/mixins/_utilities.scss +30 -17
  264. package/scss/sidebar/_sidebar-narrow.scss +5 -0
  265. package/scss/sidebar/_sidebar-nav.scss +8 -4
  266. package/scss/sidebar/_sidebar.scss +24 -15
  267. package/scss/themes/bootstrap/bootstrap.rtl.scss +4 -22
  268. package/scss/themes/bootstrap/bootstrap.scss +121 -15
  269. package/scss/utilities/_api.import.scss +1 -0
  270. package/scss/utilities/_api.scss +14 -6
  271. package/scss/vendor/_rfs.scss +33 -27
  272. package/scss/mixins/_banner.scss +0 -7
  273. package/scss/themes/bootstrap/mixins/_banner.scss +0 -7
@@ -1,4 +1,4 @@
1
- $enable-ltr: false !default;
2
- $enable-rtl: true !default;
3
-
4
- @import "coreui-utilities";
1
+ @use "coreui-utilities" with (
2
+ $enable-ltr: false,
3
+ $enable-rtl: true
4
+ );
@@ -1,19 +1,16 @@
1
- @import "mixins/banner";
2
- @include bsBanner(Utilities);
1
+ @use "banner" with (
2
+ $file: "Utilities"
3
+ );
3
4
 
4
5
  // Configuration
5
- @import "functions";
6
- @import "variables";
7
- @import "variables-dark";
8
- @import "maps";
9
- @import "mixins";
10
- @import "utilities";
6
+ @forward "variables";
7
+ @forward "variables-dark";
11
8
 
12
9
  // Layout & components
13
- @import "root";
10
+ @forward "root";
14
11
 
15
12
  // Helpers
16
- @import "helpers";
13
+ @forward "helpers";
17
14
 
18
15
  // Utilities
19
- @import "utilities/api";
16
+ @forward "utilities/api";
@@ -1,4 +1,4 @@
1
- $enable-ltr: false !default;
2
- $enable-rtl: true !default;
3
-
4
- @import "coreui";
1
+ @use "coreui" with (
2
+ $enable-ltr: false,
3
+ $enable-rtl: true
4
+ );
package/scss/coreui.scss CHANGED
@@ -1,58 +1,55 @@
1
- @import "mixins/banner";
2
- @include bsBanner("");
1
+ @use "banner";
3
2
 
4
3
  // scss-docs-start import-stack
5
4
  // Configuration
6
- @import "functions";
7
- @import "variables";
8
- @import "variables-dark";
9
- @import "maps";
10
- @import "mixins";
11
- @import "utilities";
5
+ @forward "variables";
6
+ @forward "variables-dark";
7
+ @forward "functions";
8
+ @forward "mixins";
12
9
 
13
10
  // Layout & components
14
- @import "root";
15
- @import "reboot";
16
- @import "type";
17
- @import "images";
18
- @import "containers";
19
- @import "grid";
20
- @import "tables";
21
- @import "forms";
22
- @import "buttons";
23
- @import "transitions";
24
- @import "dropdown";
25
- @import "button-group";
26
- @import "nav";
27
- @import "navbar";
28
- @import "card";
29
- @import "accordion";
30
- @import "breadcrumb";
31
- @import "pagination";
32
- @import "badge";
33
- @import "alert";
34
- @import "progress";
35
- @import "list-group";
36
- @import "close";
37
- @import "toasts";
38
- @import "modal";
39
- @import "tooltip";
40
- @import "popover";
41
- @import "carousel";
42
- @import "spinners";
43
- @import "offcanvas";
44
- @import "placeholders";
11
+ @forward "root";
12
+ @forward "reboot";
13
+ @forward "type";
14
+ @forward "images";
15
+ @forward "containers";
16
+ @forward "grid";
17
+ @forward "tables";
18
+ @forward "forms";
19
+ @forward "buttons";
20
+ @forward "transitions";
21
+ @forward "dropdown";
22
+ @forward "button-group";
23
+ @forward "nav";
24
+ @forward "navbar";
25
+ @forward "card";
26
+ @forward "accordion";
27
+ @forward "breadcrumb";
28
+ @forward "pagination";
29
+ @forward "badge";
30
+ @forward "alert";
31
+ @forward "progress";
32
+ @forward "list-group";
33
+ @forward "close";
34
+ @forward "toasts";
35
+ @forward "modal";
36
+ @forward "tooltip";
37
+ @forward "popover";
38
+ @forward "carousel";
39
+ @forward "spinners";
40
+ @forward "offcanvas";
41
+ @forward "placeholders";
45
42
 
46
- @import "avatar";
47
- @import "callout";
48
- @import "footer";
49
- @import "header";
50
- @import "icon";
51
- @import "sidebar";
43
+ @forward "avatar";
44
+ @forward "callout";
45
+ @forward "footer";
46
+ @forward "header";
47
+ @forward "icon";
48
+ @forward "sidebar";
52
49
 
53
50
  // Helpers
54
- @import "helpers";
51
+ @forward "helpers";
55
52
 
56
53
  // Utilities
57
- @import "utilities/api";
54
+ @forward "utilities/api";
58
55
  // scss-docs-end import-stack
@@ -0,0 +1 @@
1
+ @forward "floating-labels";
@@ -1,3 +1,7 @@
1
+ @use "../mixins/border-radius" as *;
2
+ @use "../mixins/transition" as *;
3
+ @use "../variables" as *;
4
+
1
5
  .form-floating {
2
6
  position: relative;
3
7
 
@@ -11,8 +15,8 @@
11
15
 
12
16
  > label {
13
17
  position: absolute;
18
+ inset-inline-start: 0;
14
19
  top: 0;
15
- @include ltr-rtl("left", 0);
16
20
  z-index: 2;
17
21
  max-width: 100%;
18
22
  height: 100%; // allow textareas
@@ -0,0 +1 @@
1
+ @forward "form-check";
@@ -1,3 +1,11 @@
1
+ @use "sass:map";
2
+ @use "../functions/escape-svg" as *;
3
+ @use "../mixins/border-radius" as *;
4
+ @use "../mixins/color-mode" as *;
5
+ @use "../mixins/transition" as *;
6
+ @use "../variables" as *;
7
+ @use "../variables-dark" as *;
8
+
1
9
  //
2
10
  // Check/radio
3
11
  //
@@ -5,24 +13,22 @@
5
13
  .form-check {
6
14
  display: block;
7
15
  min-height: $form-check-min-height;
8
- @include ltr-rtl("padding-left", $form-check-padding-start);
16
+ padding-inline-start: $form-check-padding-start;
9
17
  margin-bottom: $form-check-margin-bottom;
10
18
 
11
19
  .form-check-input {
12
- @include ltr-rtl("float", left);
13
- @include ltr-rtl("margin-left", $form-check-padding-start * -1);
20
+ float: inline-start;
21
+ margin-inline-start: $form-check-padding-start * -1;
14
22
  }
15
23
  }
16
24
 
17
25
  .form-check-reverse {
18
- @include ltr-rtl("padding-right", $form-check-padding-start);
19
- @include ltr-rtl("padding-left", 0);
20
- @include ltr-rtl("text-align", right);
26
+ padding-inline: 0 $form-check-padding-start;
27
+ text-align: end;
21
28
 
22
29
  .form-check-input {
23
- @include ltr-rtl("float", right);
24
- @include ltr-rtl("margin-right", $form-check-padding-start * -1);
25
- @include ltr-rtl("margin-left", 0);
30
+ float: inline-end;
31
+ margin-inline: 0 $form-check-padding-start * -1;
26
32
  }
27
33
  }
28
34
 
@@ -122,13 +128,13 @@
122
128
  //
123
129
 
124
130
  .form-switch {
125
- @include ltr-rtl("padding-left", $form-switch-padding-start);
131
+ padding-inline-start: $form-switch-padding-start;
126
132
 
127
133
  .form-check-input {
128
134
  --#{$prefix}form-switch-bg: #{escape-svg($form-switch-bg-image)};
129
135
 
130
136
  width: $form-switch-width;
131
- @include ltr-rtl("margin-left", $form-switch-padding-start * -1);
137
+ margin-inline-start: $form-switch-padding-start * -1;
132
138
  background-image: var(--#{$prefix}form-switch-bg);
133
139
  background-position: left center;
134
140
  @include border-radius($form-switch-border-radius, 0);
@@ -150,28 +156,26 @@
150
156
  }
151
157
 
152
158
  &.form-check-reverse {
153
- @include ltr-rtl("padding-right", $form-check-padding-start);
154
- @include ltr-rtl("padding-left", 0);
159
+ padding-inline: 0 $form-switch-padding-start;
155
160
 
156
161
  .form-check-input {
157
- @include ltr-rtl("margin-right", $form-check-padding-start * -1);
158
- @include ltr-rtl("margin-left", 0);
162
+ margin-inline: 0 $form-switch-padding-start * -1;
159
163
  }
160
164
  }
161
165
  }
162
166
 
163
167
  @each $size, $map in $form-switch-widths {
164
- $width: map-get($map, "width");
165
- $height: map-get($map, "height");
168
+ $width: map.get($map, "width");
169
+ $height: map.get($map, "height");
166
170
 
167
171
  .form-switch-#{$size} {
168
172
  min-height: $height;
169
- @include ltr-rtl("padding-left", $width + .5em);
173
+ padding-inline-start: $width + .5em;
170
174
 
171
175
  .form-check-input {
172
176
  width: $width;
173
177
  height: $height;
174
- @include ltr-rtl("margin-left", ($width + .5em) * -1);
178
+ margin-inline-start: ($width + .5em) * -1;
175
179
  }
176
180
 
177
181
  .form-check-label {
@@ -183,7 +187,7 @@
183
187
 
184
188
  .form-check-inline {
185
189
  display: inline-block;
186
- @include ltr-rtl("margin-right", $form-check-inline-margin-end);
190
+ margin-inline-end: $form-check-inline-margin-end;
187
191
  }
188
192
 
189
193
  .btn-check {
@@ -0,0 +1 @@
1
+ @forward "form-control";
@@ -1,3 +1,11 @@
1
+ @use "sass:math";
2
+ @use "../mixins/border-radius" as *;
3
+ @use "../mixins/box-shadow" as *;
4
+ @use "../mixins/gradients" as *;
5
+ @use "../mixins/transition" as *;
6
+ @use "../vendor/rfs" as *;
7
+ @use "../variables" as *;
8
+
1
9
  //
2
10
  // General form controls (plus a few specific high-level interventions)
3
11
  //
@@ -56,7 +64,7 @@
56
64
  // https://github.com/twbs/bootstrap/issues/23307
57
65
  // TODO: we can remove this workaround once https://bugs.webkit.org/show_bug.cgi?id=198959 is resolved
58
66
  // Multiply line-height by 1em if it has no unit
59
- height: if(unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
67
+ height: if(math.unit($input-line-height) == "", $input-line-height * 1em, $input-line-height);
60
68
 
61
69
  // Android Chrome type="date" is taller than the other inputs
62
70
  // because of "margin: 1px 24px 1px 4px" inside the shadow DOM
@@ -0,0 +1 @@
1
+ @forward "form-range";
@@ -1,3 +1,10 @@
1
+ @use "../functions/math" as *;
2
+ @use "../mixins/border-radius" as *;
3
+ @use "../mixins/box-shadow" as *;
4
+ @use "../mixins/gradients" as *;
5
+ @use "../mixins/transition" as *;
6
+ @use "../variables" as *;
7
+
1
8
  // Range
2
9
  //
3
10
  // Style range inputs the same across browsers. Vendor-specific rules for pseudo
@@ -0,0 +1 @@
1
+ @forward "form-select";
@@ -1,3 +1,13 @@
1
+ @use "../functions/escape-svg" as *;
2
+ @use "../mixins/border-radius" as *;
3
+ @use "../mixins/box-shadow" as *;
4
+ @use "../mixins/color-mode" as *;
5
+ @use "../mixins/ltr-rtl" as *;
6
+ @use "../mixins/transition" as *;
7
+ @use "../vendor/rfs" as *;
8
+ @use "../variables" as *;
9
+ @use "../variables-dark" as *;
10
+
1
11
  // Select
2
12
  //
3
13
  // Replaces the browser default select with a custom one, mostly pulled from
@@ -8,7 +18,10 @@
8
18
 
9
19
  display: block;
10
20
  width: 100%;
11
- @include ltr-rtl-value-only("padding", $form-select-padding-y $form-select-indicator-padding $form-select-padding-y $form-select-padding-x, $form-select-padding-y $form-select-padding-x $form-select-padding-y $form-select-indicator-padding);
21
+ padding-inline-start: $form-select-padding-x;
22
+ padding-inline-end: $form-select-indicator-padding;
23
+ padding-top: $form-select-padding-y;
24
+ padding-bottom: $form-select-padding-y;
12
25
  font-family: $form-select-font-family;
13
26
  @include font-size($form-select-font-size);
14
27
  font-weight: $form-select-font-weight;
@@ -26,7 +39,7 @@
26
39
  @include transition($form-select-transition);
27
40
 
28
41
  &:focus {
29
- border-color: var($form-select-focus-border-color);
42
+ border-color: $form-select-focus-border-color;
30
43
  outline: 0;
31
44
  @if $enable-shadows {
32
45
  @include box-shadow($form-select-box-shadow, $form-select-focus-box-shadow);
@@ -38,7 +51,7 @@
38
51
 
39
52
  &[multiple],
40
53
  &[size]:not([size="1"]) {
41
- @include ltr-rtl("padding-right", $form-select-padding-x);
54
+ padding-inline-end: $form-select-padding-x;
42
55
  background-image: none;
43
56
  }
44
57
 
@@ -56,17 +69,17 @@
56
69
  }
57
70
 
58
71
  .form-select-sm {
72
+ padding-inline-start: $form-select-padding-x-sm;
59
73
  padding-top: $form-select-padding-y-sm;
60
74
  padding-bottom: $form-select-padding-y-sm;
61
- @include ltr-rtl("padding-left", $form-select-padding-x-sm);
62
75
  @include font-size($form-select-font-size-sm);
63
76
  @include border-radius($form-select-border-radius-sm);
64
77
  }
65
78
 
66
79
  .form-select-lg {
80
+ padding-inline-start: $form-select-padding-x-lg;
67
81
  padding-top: $form-select-padding-y-lg;
68
82
  padding-bottom: $form-select-padding-y-lg;
69
- @include ltr-rtl("padding-left", $form-select-padding-x-lg);
70
83
  @include font-size($form-select-font-size-lg);
71
84
  @include border-radius($form-select-border-radius-lg);
72
85
  }
@@ -0,0 +1 @@
1
+ @forward "form-text";
@@ -1,3 +1,6 @@
1
+ @use "../vendor/rfs" as *;
2
+ @use "../variables" as *;
3
+
1
4
  //
2
5
  // Form text
3
6
  //
@@ -0,0 +1 @@
1
+ @forward "input-group";
@@ -1,3 +1,9 @@
1
+ @use "sass:map";
2
+ @use "sass:string";
3
+ @use "../mixins/border-radius" as *;
4
+ @use "../vendor/rfs" as *;
5
+ @use "../variables" as *;
6
+
1
7
  //
2
8
  // Base styles
3
9
  //
@@ -85,7 +91,7 @@
85
91
 
86
92
  .input-group-lg > .form-select,
87
93
  .input-group-sm > .form-select {
88
- @include ltr-rtl("padding-right", $form-select-padding-x + $form-select-indicator-padding);
94
+ padding-inline-end: $form-select-padding-x + $form-select-indicator-padding;
89
95
  }
90
96
 
91
97
 
@@ -116,12 +122,12 @@
116
122
  }
117
123
 
118
124
  $validation-messages: "";
119
- @each $state in map-keys($form-validation-states) {
120
- $validation-messages: $validation-messages + ":not(." + unquote($state) + "-tooltip)" + ":not(." + unquote($state) + "-feedback)";
125
+ @each $state in map.keys($form-validation-states) {
126
+ $validation-messages: $validation-messages + ":not(." + string.unquote($state) + "-tooltip)" + ":not(." + string.unquote($state) + "-feedback)";
121
127
  }
122
128
 
123
129
  > :not(:first-child):not(.dropdown-menu)#{$validation-messages} {
124
- @include ltr-rtl("margin-left", calc(#{$input-border-width} * -1));
130
+ margin-inline-start: calc(#{$input-border-width} * -1); // stylelint-disable-line function-disallowed-list
125
131
  @include border-start-radius(0);
126
132
  }
127
133
 
@@ -0,0 +1 @@
1
+ @forward "labels";
@@ -1,3 +1,7 @@
1
+ @use "../functions/math" as *;
2
+ @use "../vendor/rfs" as *;
3
+ @use "../variables" as *;
4
+
1
5
  //
2
6
  // Labels
3
7
  //
@@ -0,0 +1 @@
1
+ @forward "validation";
@@ -1,3 +1,6 @@
1
+ @use "../mixins/forms" as *;
2
+ @use "../variables" as *;
3
+
1
4
  // Form validation
2
5
  //
3
6
  // Provide feedback to users when form field values are valid or invalid. Works
@@ -0,0 +1,19 @@
1
+ @use "sass:math";
2
+
3
+ // Ascending
4
+ // Used to evaluate Sass maps like our grid breakpoints.
5
+ @mixin assert-ascending($map, $map-name) {
6
+ $prev-key: null;
7
+ $prev-num: null;
8
+ @each $key, $num in $map {
9
+ @if $prev-num == null or math.unit($num) == "%" or math.unit($prev-num) == "%" {
10
+ // Do nothing
11
+ } @else if not math.compatible($prev-num, $num) {
12
+ @warn "Potentially invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} whose unit makes it incomparable to #{$prev-num}, the value of the previous key '#{$prev-key}' !";
13
+ } @else if $prev-num >= $num {
14
+ @warn "Invalid value for #{$map-name}: This map must be in ascending order, but key '#{$key}' has value #{$num} which isn't greater than #{$prev-num}, the value of the previous key '#{$prev-key}' !";
15
+ }
16
+ $prev-key: $key;
17
+ $prev-num: $num;
18
+ }
19
+ }
@@ -0,0 +1,14 @@
1
+ @use "sass:list";
2
+ @use "sass:map";
3
+
4
+ // Starts at zero
5
+ // Used to ensure the min-width of the lowest breakpoint starts at 0.
6
+ @mixin assert-starts-at-zero($map, $map-name: "$grid-breakpoints") {
7
+ @if list.length($map) > 0 {
8
+ $values: map.values($map);
9
+ $first-value: list.nth($values, 1);
10
+ @if $first-value != 0 {
11
+ @warn "First breakpoint in #{$map-name} must start at 0, but starts at #{$first-value}.";
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,23 @@
1
+ @use "contrast-ratio" as *;
2
+
3
+ // We use this function only in variables.scss because recursive imports are not allowed in Sass anymore.
4
+
5
+ @function color-contrast-variables($background, $color-contrast-dark, $color-contrast-light, $white, $black, $min-contrast-ratio) {
6
+ $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
7
+ $max-ratio: 0;
8
+ $max-ratio-color: null;
9
+
10
+ @each $color in $foregrounds {
11
+ $contrast-ratio: contrast-ratio($background, $color);
12
+ @if $contrast-ratio > $min-contrast-ratio {
13
+ @return $color;
14
+ } @else if $contrast-ratio > $max-ratio {
15
+ $max-ratio: $contrast-ratio;
16
+ $max-ratio-color: $color;
17
+ }
18
+ }
19
+
20
+ @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
21
+
22
+ @return $max-ratio-color;
23
+ }
@@ -0,0 +1,27 @@
1
+ @use "contrast-ratio" as *;
2
+ @use "../variables" as *;
3
+
4
+ // Color contrast
5
+ // See https://github.com/twbs/bootstrap/pull/30168
6
+
7
+ // scss-docs-start color-contrast-function
8
+ @function color-contrast($background, $color-contrast-dark: $color-contrast-dark, $color-contrast-light: $color-contrast-light, $min-contrast-ratio: $min-contrast-ratio) {
9
+ $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
10
+ $max-ratio: 0;
11
+ $max-ratio-color: null;
12
+
13
+ @each $color in $foregrounds {
14
+ $contrast-ratio: contrast-ratio($background, $color);
15
+ @if $contrast-ratio > $min-contrast-ratio {
16
+ @return $color;
17
+ } @else if $contrast-ratio > $max-ratio {
18
+ $max-ratio: $contrast-ratio;
19
+ $max-ratio-color: $color;
20
+ }
21
+ }
22
+
23
+ @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
24
+
25
+ @return $max-ratio-color;
26
+ }
27
+ // scss-docs-end color-contrast-function
@@ -0,0 +1,18 @@
1
+ @use "sass:color";
2
+
3
+ // scss-docs-start color-functions
4
+ // Tint a color: mix a color with white
5
+ @function tint-color($color, $weight) {
6
+ @return color.mix(white, $color, $weight);
7
+ }
8
+
9
+ // Shade a color: mix a color with black
10
+ @function shade-color($color, $weight) {
11
+ @return color.mix(black, $color, $weight);
12
+ }
13
+
14
+ // Shade the color if the weight is positive, else tint it
15
+ @function shift-color($color, $weight) {
16
+ @return if($weight > 0, shade-color($color, $weight), tint-color($color, -$weight));
17
+ }
18
+ // scss-docs-end color-functions
@@ -0,0 +1,35 @@
1
+ @use "sass:color";
2
+ @use "sass:map";
3
+ @use "sass:math";
4
+ @use "math" as *;
5
+
6
+ @function contrast-ratio($background, $foreground) {
7
+ $l1: luminance($background);
8
+ $l2: luminance(opaque($background, $foreground));
9
+
10
+ @return if($l1 > $l2, divide($l1 + .05, $l2 + .05), divide($l2 + .05, $l1 + .05));
11
+ }
12
+
13
+ // Return WCAG2.2 relative luminance
14
+ // See https://www.w3.org/TR/WCAG/#dfn-relative-luminance
15
+ // See https://www.w3.org/TR/WCAG/#dfn-contrast-ratio
16
+ @function luminance($color) {
17
+ $rgb: (
18
+ "r": color.channel($color, "red", $space: rgb), // stylelint-disable-line scss/at-function-named-arguments
19
+ "g": color.channel($color, "green", $space: rgb), // stylelint-disable-line scss/at-function-named-arguments
20
+ "b": color.channel($color, "blue", $space: rgb) // stylelint-disable-line scss/at-function-named-arguments
21
+ );
22
+
23
+ @each $name, $value in $rgb {
24
+ $value: if(divide($value, 255) < .04045, divide(divide($value, 255), 12.92), math.pow(divide((divide(math.round($value) + 1, 255) + .055), 1.055), 2.4));
25
+ $rgb: map.merge($rgb, ($name: $value));
26
+ }
27
+
28
+ @return (map.get($rgb, "r") * .2126) + (map.get($rgb, "g") * .7152) + (map.get($rgb, "b") * .0722);
29
+ }
30
+
31
+ // Return opaque color
32
+ // opaque(#fff, rgba(0, 0, 0, .5)) => #808080
33
+ @function opaque($background, $foreground) {
34
+ @return color.mix(rgba($foreground, 1), $background, color.opacity($foreground) * 100%);
35
+ }
@@ -0,0 +1,22 @@
1
+ @use "sass:string";
2
+ @use "str-replace" as *;
3
+ @use "../variables" as *;
4
+
5
+ // See https://codepen.io/kevinweber/pen/dXWoRw
6
+ //
7
+ // Requires the use of quotes around data URIs.
8
+
9
+ @function escape-svg($string) {
10
+ @if string.index($string, "data:image/svg+xml") {
11
+ @each $char, $encoded in $escaped-characters {
12
+ // Do not escape the url brackets
13
+ @if string.index($string, "url(") == 1 {
14
+ $string: url("#{str-replace(string.slice($string, 6, -3), $char, $encoded)}");
15
+ } @else {
16
+ $string: str-replace($string, $char, $encoded);
17
+ }
18
+ }
19
+ }
20
+
21
+ @return $string;
22
+ }