@coreui/coreui 5.1.2 → 5.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (298) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +4 -4
  3. package/dist/css/coreui-grid.css +462 -235
  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 +235 -235
  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 +1554 -1199
  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 +1212 -1180
  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 +6027 -5264
  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 +5651 -5388
  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 +37 -40
  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 +53 -54
  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 +53 -54
  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/alert.js.map +1 -1
  69. package/js/dist/base-component.js +3 -3
  70. package/js/dist/base-component.js.map +1 -1
  71. package/js/dist/button.js +2 -2
  72. package/js/dist/button.js.map +1 -1
  73. package/js/dist/carousel.js +2 -2
  74. package/js/dist/carousel.js.map +1 -1
  75. package/js/dist/collapse.js +2 -2
  76. package/js/dist/collapse.js.map +1 -1
  77. package/js/dist/dom/data.js +2 -2
  78. package/js/dist/dom/data.js.map +1 -1
  79. package/js/dist/dom/event-handler.js +2 -2
  80. package/js/dist/dom/event-handler.js.map +1 -1
  81. package/js/dist/dom/manipulator.js +2 -2
  82. package/js/dist/dom/manipulator.js.map +1 -1
  83. package/js/dist/dom/selector-engine.js +2 -2
  84. package/js/dist/dom/selector-engine.js.map +1 -1
  85. package/js/dist/dropdown.js +2 -2
  86. package/js/dist/dropdown.js.map +1 -1
  87. package/js/dist/modal.js +2 -2
  88. package/js/dist/modal.js.map +1 -1
  89. package/js/dist/navigation.js +3 -3
  90. package/js/dist/navigation.js.map +1 -1
  91. package/js/dist/offcanvas.js +2 -2
  92. package/js/dist/offcanvas.js.map +1 -1
  93. package/js/dist/popover.js +2 -2
  94. package/js/dist/popover.js.map +1 -1
  95. package/js/dist/scrollspy.js +2 -2
  96. package/js/dist/scrollspy.js.map +1 -1
  97. package/js/dist/sidebar.js +2 -2
  98. package/js/dist/sidebar.js.map +1 -1
  99. package/js/dist/tab.js +2 -2
  100. package/js/dist/tab.js.map +1 -1
  101. package/js/dist/toast.js +2 -2
  102. package/js/dist/toast.js.map +1 -1
  103. package/js/dist/tooltip.js +2 -2
  104. package/js/dist/tooltip.js.map +1 -1
  105. package/js/dist/util/backdrop.js +2 -2
  106. package/js/dist/util/backdrop.js.map +1 -1
  107. package/js/dist/util/component-functions.js +2 -2
  108. package/js/dist/util/component-functions.js.map +1 -1
  109. package/js/dist/util/config.js +2 -2
  110. package/js/dist/util/config.js.map +1 -1
  111. package/js/dist/util/focustrap.js +2 -2
  112. package/js/dist/util/focustrap.js.map +1 -1
  113. package/js/dist/util/index.js +2 -2
  114. package/js/dist/util/index.js.map +1 -1
  115. package/js/dist/util/sanitizer.js +2 -3
  116. package/js/dist/util/sanitizer.js.map +1 -1
  117. package/js/dist/util/scrollbar.js +2 -2
  118. package/js/dist/util/scrollbar.js.map +1 -1
  119. package/js/dist/util/swipe.js +2 -2
  120. package/js/dist/util/swipe.js.map +1 -1
  121. package/js/dist/util/template-factory.js +2 -2
  122. package/js/dist/util/template-factory.js.map +1 -1
  123. package/js/src/base-component.js +1 -1
  124. package/js/src/navigation.js +1 -1
  125. package/js/src/util/sanitizer.js +0 -1
  126. package/package.json +31 -34
  127. package/scss/_accordion.import.scss +1 -0
  128. package/scss/_accordion.scss +10 -2
  129. package/scss/_alert.import.scss +1 -0
  130. package/scss/_alert.scss +7 -3
  131. package/scss/_avatar.import.scss +1 -0
  132. package/scss/_avatar.scss +13 -8
  133. package/scss/_badge.import.scss +1 -0
  134. package/scss/_badge.scss +4 -0
  135. package/scss/_banner.scss +7 -0
  136. package/scss/_breadcrumb.import.scss +1 -0
  137. package/scss/_breadcrumb.scss +9 -3
  138. package/scss/_button-group.import.scss +1 -0
  139. package/scss/_button-group.scss +7 -3
  140. package/scss/_buttons.import.scss +1 -0
  141. package/scss/_buttons.scss +49 -18
  142. package/scss/_callout.import.scss +1 -0
  143. package/scss/_callout.scss +5 -2
  144. package/scss/_card.import.scss +1 -0
  145. package/scss/_card.scss +9 -5
  146. package/scss/_carousel.import.scss +1 -0
  147. package/scss/_carousel.scss +9 -3
  148. package/scss/_close.import.scss +1 -0
  149. package/scss/_close.scss +6 -1
  150. package/scss/_containers.import.scss +1 -0
  151. package/scss/_containers.scss +4 -0
  152. package/scss/_dropdown.import.scss +1 -0
  153. package/scss/_dropdown.scss +30 -21
  154. package/scss/_footer.import.scss +1 -0
  155. package/scss/_footer.scss +2 -0
  156. package/scss/_forms.import.scss +9 -0
  157. package/scss/_forms.scss +9 -9
  158. package/scss/_functions.import.scss +1 -0
  159. package/scss/_functions.scss +11 -366
  160. package/scss/_grid.import.scss +1 -0
  161. package/scss/_grid.scss +23 -1
  162. package/scss/_header.import.scss +1 -0
  163. package/scss/_header.scss +9 -2
  164. package/scss/_helpers.import.scss +1 -0
  165. package/scss/_helpers.scss +12 -12
  166. package/scss/_icon.import.scss +1 -0
  167. package/scss/_icon.scss +3 -0
  168. package/scss/_images.import.scss +1 -0
  169. package/scss/_images.scss +6 -0
  170. package/scss/_list-group.import.scss +1 -0
  171. package/scss/_list-group.scss +11 -6
  172. package/scss/_maps.import.scss +1 -0
  173. package/scss/_maps.scss +14 -7
  174. package/scss/_mixins.import.scss +1 -0
  175. package/scss/_mixins.scss +29 -29
  176. package/scss/_modal.import.scss +1 -0
  177. package/scss/_modal.scss +12 -3
  178. package/scss/_nav.import.scss +1 -0
  179. package/scss/_nav.scss +8 -2
  180. package/scss/_navbar.import.scss +1 -0
  181. package/scss/_navbar.scss +17 -5
  182. package/scss/_offcanvas.import.scss +1 -0
  183. package/scss/_offcanvas.scss +14 -7
  184. package/scss/_pagination.import.scss +1 -0
  185. package/scss/_pagination.scss +9 -1
  186. package/scss/_placeholders.import.scss +1 -0
  187. package/scss/_placeholders.scss +2 -0
  188. package/scss/_popover.import.scss +1 -0
  189. package/scss/_popover.scss +6 -0
  190. package/scss/_progress.import.scss +1 -0
  191. package/scss/_progress.scss +7 -0
  192. package/scss/_reboot.import.scss +1 -0
  193. package/scss/_reboot.scss +11 -7
  194. package/scss/_root.import.scss +1 -0
  195. package/scss/_root.scss +14 -5
  196. package/scss/_sidebar.import.scss +3 -0
  197. package/scss/_sidebar.scss +3 -3
  198. package/scss/_spinners.import.scss +1 -0
  199. package/scss/_spinners.scss +2 -0
  200. package/scss/_tables.import.scss +1 -0
  201. package/scss/_tables.scss +6 -1
  202. package/scss/_toasts.import.scss +1 -0
  203. package/scss/_toasts.scss +5 -2
  204. package/scss/_tooltip.import.scss +1 -0
  205. package/scss/_tooltip.scss +6 -0
  206. package/scss/_transitions.import.scss +1 -0
  207. package/scss/_transitions.scss +3 -0
  208. package/scss/_type.import.scss +1 -0
  209. package/scss/_type.scss +6 -1
  210. package/scss/_utilities.import.scss +1 -0
  211. package/scss/_utilities.scss +50 -63
  212. package/scss/_variables-dark.import.scss +1 -0
  213. package/scss/_variables-dark.scss +17 -36
  214. package/scss/_variables.import.scss +1 -0
  215. package/scss/_variables.scss +39 -35
  216. package/scss/coreui-grid.rtl.scss +4 -4
  217. package/scss/coreui-grid.scss +12 -21
  218. package/scss/coreui-reboot.rtl.scss +4 -4
  219. package/scss/coreui-reboot.scss +8 -9
  220. package/scss/coreui-utilities.rtl.scss +4 -4
  221. package/scss/coreui-utilities.scss +8 -11
  222. package/scss/coreui.rtl.scss +4 -4
  223. package/scss/coreui.scss +44 -47
  224. package/scss/forms/_floating-labels.import.scss +1 -0
  225. package/scss/forms/_floating-labels.scss +5 -1
  226. package/scss/forms/_form-check.import.scss +1 -0
  227. package/scss/forms/_form-check.scss +24 -20
  228. package/scss/forms/_form-control.import.scss +1 -0
  229. package/scss/forms/_form-control.scss +9 -1
  230. package/scss/forms/_form-range.import.scss +1 -0
  231. package/scss/forms/_form-range.scss +7 -0
  232. package/scss/forms/_form-select.import.scss +1 -0
  233. package/scss/forms/_form-select.scss +18 -5
  234. package/scss/forms/_form-text.import.scss +1 -0
  235. package/scss/forms/_form-text.scss +3 -0
  236. package/scss/forms/_input-group.import.scss +1 -0
  237. package/scss/forms/_input-group.scss +10 -4
  238. package/scss/forms/_labels.import.scss +1 -0
  239. package/scss/forms/_labels.scss +4 -0
  240. package/scss/forms/_validation.import.scss +1 -0
  241. package/scss/forms/_validation.scss +3 -0
  242. package/scss/functions/_assert-ascending.scss +19 -0
  243. package/scss/functions/_assert-starts-at-zero.scss +14 -0
  244. package/scss/functions/_color-contrast-variables.scss +24 -0
  245. package/scss/functions/_color-contrast.scss +27 -0
  246. package/scss/functions/_color.scss +18 -0
  247. package/scss/functions/_contrast-ratio.scss +35 -0
  248. package/scss/functions/_escape-svg.scss +22 -0
  249. package/scss/functions/_maps.scss +57 -0
  250. package/scss/functions/_math.scss +87 -0
  251. package/scss/functions/_rgba-css-var.scss +9 -0
  252. package/scss/functions/_str-replace.scss +19 -0
  253. package/scss/functions/_to-rgb.scss +5 -0
  254. package/scss/helpers/_clearfix.scss +2 -0
  255. package/scss/helpers/_color-bg.scss +9 -3
  256. package/scss/helpers/_colored-links.scss +13 -9
  257. package/scss/helpers/_focus-ring.scss +2 -0
  258. package/scss/helpers/_icon-link.scss +3 -0
  259. package/scss/helpers/_position.scss +5 -1
  260. package/scss/helpers/_ratio.scss +3 -1
  261. package/scss/helpers/_stretched-link.scss +2 -0
  262. package/scss/helpers/_text-truncation.scss +2 -0
  263. package/scss/helpers/_visually-hidden.scss +2 -0
  264. package/scss/helpers/_vr.scss +2 -0
  265. package/scss/mixins/_alert.scss +3 -0
  266. package/scss/mixins/_avatar.scss +3 -0
  267. package/scss/mixins/_backdrop.scss +2 -0
  268. package/scss/mixins/_border-radius.scss +15 -11
  269. package/scss/mixins/_box-shadow.scss +5 -2
  270. package/scss/mixins/_breakpoints.scss +82 -5
  271. package/scss/mixins/_buttons.scss +54 -50
  272. package/scss/mixins/_caret.scss +5 -3
  273. package/scss/mixins/_color-mode.scss +3 -1
  274. package/scss/mixins/_container.scss +2 -0
  275. package/scss/mixins/_deprecate.scss +2 -0
  276. package/scss/mixins/_forms.scss +12 -5
  277. package/scss/mixins/_gradients.scss +2 -0
  278. package/scss/mixins/_grid.scss +77 -8
  279. package/scss/mixins/_list-group.scss +6 -3
  280. package/scss/mixins/_lists.scss +1 -1
  281. package/scss/mixins/_ltr-rtl.scss +48 -17
  282. package/scss/mixins/_pagination.scss +3 -0
  283. package/scss/mixins/_reset-text.scss +2 -1
  284. package/scss/mixins/_table-variants.scss +10 -4
  285. package/scss/mixins/_transition.scss +7 -4
  286. package/scss/mixins/_utilities.import.scss +1 -0
  287. package/scss/mixins/_utilities.scss +30 -17
  288. package/scss/sidebar/_sidebar-narrow.scss +24 -45
  289. package/scss/sidebar/_sidebar-nav.scss +11 -6
  290. package/scss/sidebar/_sidebar.scss +80 -106
  291. package/scss/themes/bootstrap/bootstrap.rtl.scss +4 -24
  292. package/scss/themes/bootstrap/bootstrap.scss +120 -16
  293. package/scss/utilities/_api.import.scss +1 -0
  294. package/scss/utilities/_api.scss +14 -6
  295. package/scss/vendor/_rfs.scss +33 -27
  296. package/scss/mixins/_banner.scss +0 -7
  297. package/scss/themes/bootstrap/_variables.scss +0 -2
  298. 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-reboot";
1
+ @use "coreui-reboot" with (
2
+ $enable-ltr: false,
3
+ $enable-rtl: true
4
+ );
@@ -1,10 +1,9 @@
1
- @import "mixins/banner";
2
- @include bsBanner(Reboot);
1
+ @use "banner" with (
2
+ $file: "Reboot"
3
+ );
3
4
 
4
- @import "functions";
5
- @import "variables";
6
- @import "variables-dark";
7
- @import "maps";
8
- @import "mixins";
9
- @import "root";
10
- @import "reboot";
5
+ @forward "variables";
6
+ @forward "variables-dark";
7
+
8
+ @forward "root";
9
+ @forward "reboot";
@@ -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,24 @@
1
+ @use "contrast-ratio" as *;
2
+
3
+ // Color contrast
4
+ // See https://github.com/twbs/bootstrap/pull/30168
5
+
6
+ @function color-contrast($background, $color-contrast-dark, $color-contrast-light, $white, $black, $min-contrast-ratio) {
7
+ $foregrounds: $color-contrast-light, $color-contrast-dark, $white, $black;
8
+ $max-ratio: 0;
9
+ $max-ratio-color: null;
10
+
11
+ @each $color in $foregrounds {
12
+ $contrast-ratio: contrast-ratio($background, $color);
13
+ @if $contrast-ratio > $min-contrast-ratio {
14
+ @return $color;
15
+ } @else if $contrast-ratio > $max-ratio {
16
+ $max-ratio: $contrast-ratio;
17
+ $max-ratio-color: $color;
18
+ }
19
+ }
20
+
21
+ @warn "Found no color leading to #{$min-contrast-ratio}:1 contrast ratio against #{$background}...";
22
+
23
+ @return $max-ratio-color;
24
+ }
@@ -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
+ }