@expressivecss/expressive 0.15.0 → 0.16.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 (602) hide show
  1. package/CHANGELOG.md +1502 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19247 -11923
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
  8. package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
  9. package/dist/fonts/LICENSE-noto-sans-thai +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
  15. package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
  16. package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
  17. package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
  18. package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
  19. package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
  20. package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
  21. package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
  22. package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
  23. package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
  24. package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
  25. package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
  26. package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
  27. package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
  28. package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
  29. package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
  30. package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
  31. package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
  32. package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
  33. package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
  34. package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
  35. package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
  36. package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
  37. package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
  38. package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
  39. package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
  40. package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
  41. package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
  42. package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
  43. package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
  44. package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
  45. package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
  46. package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
  47. package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
  48. package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
  49. package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
  50. package/dist/fonts/roboto-greek-400.woff2 +0 -0
  51. package/dist/fonts/roboto-greek-500.woff2 +0 -0
  52. package/dist/fonts/roboto-greek-700.woff2 +0 -0
  53. package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
  54. package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
  55. package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
  56. package/dist/fonts/roboto-latin-700.woff2 +0 -0
  57. package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
  58. package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
  59. package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
  60. package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
  61. package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
  62. package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
  63. package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
  64. package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
  66. package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
  67. package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
  68. package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
  69. package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
  70. package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
  72. package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
  73. package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
  74. package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
  84. package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
  85. package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
  86. package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
  87. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
  90. package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
  92. package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
  94. package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
  96. package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
  98. package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
  99. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
  102. package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
  103. package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
  104. package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
  105. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
  106. package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
  108. package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
  110. package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
  111. package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
  112. package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
  114. package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
  115. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
  118. package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
  119. package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
  120. package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
  121. package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
  122. package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
  123. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  124. package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
  125. package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
  127. package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
  128. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
  129. package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
  131. package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
  133. package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
  134. package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
  135. package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
  137. package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
  139. package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
  140. package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
  141. package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
  143. package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
  145. package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
  146. package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
  147. package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
  148. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
  149. package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
  151. package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
  152. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
  155. package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
  157. package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
  158. package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
  159. package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
  160. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
  163. package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
  164. package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
  165. package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
  166. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
  167. package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
  169. package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
  170. package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
  171. package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
  172. package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
  173. package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
  175. package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
  177. package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
  179. package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
  181. package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
  183. package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
  187. package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  189. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
  191. package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
  193. package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
  194. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
  195. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
  197. package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
  199. package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
  201. package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
  202. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
  203. package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
  205. package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
  206. package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
  207. package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
  208. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
  209. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
  211. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
  212. package/dist/js/expressive.cjs +10613 -4327
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10613 -4327
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -22
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +182 -71
  219. package/dist/js/expressive.mjs.map +2 -2
  220. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  221. package/dist/js/internal/behaviors/copy.mjs +9 -0
  222. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  223. package/dist/js/internal/behaviors/dataTables.mjs +10 -0
  224. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  226. package/dist/js/internal/behaviors/forms.mjs +2 -2
  227. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  228. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  229. package/dist/js/internal/behaviors/lists.mjs +8 -0
  230. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  232. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  234. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  235. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  236. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  237. package/dist/js/internal/behaviors/theme.mjs +8 -0
  238. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/tour.mjs +8 -0
  240. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  242. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  243. package/dist/js/internal/components/appBar.mjs +3 -2
  244. package/dist/js/internal/components/autocomplete.mjs +4 -4
  245. package/dist/js/internal/components/backToTop.mjs +9 -0
  246. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  247. package/dist/js/internal/components/barChart.mjs +5 -4
  248. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  249. package/dist/js/internal/components/buttons.mjs +3 -3
  250. package/dist/js/internal/components/cards.mjs +3 -3
  251. package/dist/js/internal/components/carousel.mjs +3 -3
  252. package/dist/js/internal/components/cascader.mjs +10 -0
  253. package/dist/js/internal/components/cascader.mjs.map +7 -0
  254. package/dist/js/internal/components/characterCounter.mjs +3 -2
  255. package/dist/js/internal/components/chips.mjs +6 -5
  256. package/dist/js/internal/components/colorPicker.mjs +9 -0
  257. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  258. package/dist/js/internal/components/columnChart.mjs +4 -3
  259. package/dist/js/internal/components/commandPalette.mjs +3 -3
  260. package/dist/js/internal/components/confetti.mjs +3 -2
  261. package/dist/js/internal/components/currencyInput.mjs +9 -0
  262. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  263. package/dist/js/internal/components/datepicker.mjs +11 -8
  264. package/dist/js/internal/components/expandingCard.mjs +3 -3
  265. package/dist/js/internal/components/funnelChart.mjs +10 -0
  266. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  267. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  268. package/dist/js/internal/components/hoverCard.mjs +9 -0
  269. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  270. package/dist/js/internal/components/index.mjs +131 -66
  271. package/dist/js/internal/components/inputMask.mjs +9 -0
  272. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  273. package/dist/js/internal/components/keypad.mjs +3 -3
  274. package/dist/js/internal/components/lightbox.mjs +3 -3
  275. package/dist/js/internal/components/lineChart.mjs +25 -4
  276. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  277. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  278. package/dist/js/internal/components/mapView.mjs +3 -3
  279. package/dist/js/internal/components/menu.mjs +3 -3
  280. package/dist/js/internal/components/menubar.mjs +10 -0
  281. package/dist/js/internal/components/menubar.mjs.map +7 -0
  282. package/dist/js/internal/components/messageScroller.mjs +3 -3
  283. package/dist/js/internal/components/mixedChart.mjs +5 -4
  284. package/dist/js/internal/components/navigationRail.mjs +3 -2
  285. package/dist/js/internal/components/particles.mjs +3 -2
  286. package/dist/js/internal/components/pieChart.mjs +4 -3
  287. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  288. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  289. package/dist/js/internal/components/questionnaire.mjs +3 -3
  290. package/dist/js/internal/components/radarChart.mjs +4 -3
  291. package/dist/js/internal/components/radialChart.mjs +4 -3
  292. package/dist/js/internal/components/registry.mjs +59 -41
  293. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  294. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  295. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  296. package/dist/js/internal/components/scatterChart.mjs +10 -0
  297. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scrollspy.mjs +3 -2
  299. package/dist/js/internal/components/select.mjs +4 -4
  300. package/dist/js/internal/components/showMore.mjs +9 -0
  301. package/dist/js/internal/components/showMore.mjs.map +7 -0
  302. package/dist/js/internal/components/slider.mjs +3 -3
  303. package/dist/js/internal/components/snackbar.mjs +2 -2
  304. package/dist/js/internal/components/swipeActions.mjs +9 -0
  305. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  306. package/dist/js/internal/components/tabs.mjs +3 -4
  307. package/dist/js/internal/components/timepicker.mjs +5 -4
  308. package/dist/js/internal/components/tooltip.mjs +3 -3
  309. package/dist/js/internal/components/treeSelect.mjs +13 -0
  310. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  311. package/dist/js/internal/components/treemapChart.mjs +10 -0
  312. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  313. package/dist/js/internal/core/component.mjs +2 -1
  314. package/dist/js/internal/core/formControl.mjs +12 -0
  315. package/dist/js/internal/core/formControl.mjs.map +7 -0
  316. package/dist/js/internal/core/spring.mjs +11 -0
  317. package/dist/js/internal/core/spring.mjs.map +7 -0
  318. package/dist/js/internal/core/utils.mjs +11 -3
  319. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  320. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  322. package/dist/js/modular.mjs +173 -71
  323. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  324. package/dist/types/behaviors/copy.d.ts +18 -0
  325. package/dist/types/behaviors/dataTables.d.ts +129 -0
  326. package/dist/types/behaviors/dialogs.d.ts +27 -1
  327. package/dist/types/behaviors/forms.d.ts +68 -2
  328. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  329. package/dist/types/behaviors/lists.d.ts +12 -0
  330. package/dist/types/behaviors/paneResize.d.ts +29 -0
  331. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  332. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  333. package/dist/types/behaviors/sortable.d.ts +28 -0
  334. package/dist/types/behaviors/theme.d.ts +22 -0
  335. package/dist/types/behaviors/tour.d.ts +36 -0
  336. package/dist/types/behaviors/transferList.d.ts +51 -0
  337. package/dist/types/components/appBar.d.ts +5 -6
  338. package/dist/types/components/autocomplete.d.ts +91 -17
  339. package/dist/types/components/backToTop.d.ts +36 -0
  340. package/dist/types/components/barChart.d.ts +3 -6
  341. package/dist/types/components/buttonGroup.d.ts +2 -4
  342. package/dist/types/components/buttons.d.ts +5 -5
  343. package/dist/types/components/cards.d.ts +3 -16
  344. package/dist/types/components/carousel.d.ts +9 -15
  345. package/dist/types/components/cascader.d.ts +130 -0
  346. package/dist/types/components/characterCounter.d.ts +2 -15
  347. package/dist/types/components/chips.d.ts +65 -19
  348. package/dist/types/components/colorPicker.d.ts +42 -0
  349. package/dist/types/components/columnChart.d.ts +23 -10
  350. package/dist/types/components/commandPalette.d.ts +11 -16
  351. package/dist/types/components/confetti.d.ts +2 -4
  352. package/dist/types/components/currencyInput.d.ts +59 -0
  353. package/dist/types/components/datepicker.d.ts +56 -32
  354. package/dist/types/components/expandingCard.d.ts +4 -6
  355. package/dist/types/components/funnelChart.d.ts +38 -0
  356. package/dist/types/components/heatmapChart.d.ts +39 -8
  357. package/dist/types/components/hoverCard.d.ts +58 -0
  358. package/dist/types/components/index.d.ts +16 -1
  359. package/dist/types/components/inputMask.d.ts +30 -0
  360. package/dist/types/components/keypad.d.ts +38 -6
  361. package/dist/types/components/lightbox.d.ts +14 -20
  362. package/dist/types/components/lineChart.d.ts +172 -10
  363. package/dist/types/components/loadingOverlay.d.ts +42 -0
  364. package/dist/types/components/mapView.d.ts +26 -17
  365. package/dist/types/components/menu.d.ts +60 -22
  366. package/dist/types/components/menubar.d.ts +37 -0
  367. package/dist/types/components/messageScroller.d.ts +2 -14
  368. package/dist/types/components/mixedChart.d.ts +15 -6
  369. package/dist/types/components/navigationRail.d.ts +16 -5
  370. package/dist/types/components/particles.d.ts +8 -4
  371. package/dist/types/components/pieChart.d.ts +32 -7
  372. package/dist/types/components/pullToRefresh.d.ts +80 -0
  373. package/dist/types/components/questionnaire.d.ts +58 -16
  374. package/dist/types/components/radarChart.d.ts +10 -6
  375. package/dist/types/components/radialChart.d.ts +58 -7
  376. package/dist/types/components/registry.d.ts +73 -3
  377. package/dist/types/components/richTextEditor.d.ts +6 -14
  378. package/dist/types/components/sankeyChart.d.ts +72 -0
  379. package/dist/types/components/scatterChart.d.ts +102 -0
  380. package/dist/types/components/scrollspy.d.ts +3 -5
  381. package/dist/types/components/select.d.ts +43 -30
  382. package/dist/types/components/showMore.d.ts +51 -0
  383. package/dist/types/components/slider.d.ts +3 -15
  384. package/dist/types/components/snackbar.d.ts +61 -0
  385. package/dist/types/components/swipeActions.d.ts +81 -0
  386. package/dist/types/components/tabs.d.ts +89 -27
  387. package/dist/types/components/timepicker.d.ts +113 -21
  388. package/dist/types/components/tooltip.d.ts +56 -20
  389. package/dist/types/components/treeSelect.d.ts +106 -0
  390. package/dist/types/components/treemapChart.d.ts +56 -0
  391. package/dist/types/core/component.d.ts +43 -25
  392. package/dist/types/core/formControl.d.ts +21 -0
  393. package/dist/types/core/spring.d.ts +20 -0
  394. package/dist/types/core/utils.d.ts +85 -72
  395. package/dist/types/modular.d.ts +33 -1
  396. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  397. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  398. package/package.json +10 -8
  399. package/src/sass/README.md +27 -18
  400. package/src/sass/abstracts/_elevation.scss +13 -7
  401. package/src/sass/abstracts/_index.scss +1 -0
  402. package/src/sass/abstracts/_mixins.scss +422 -36
  403. package/src/sass/abstracts/_spring.scss +63 -0
  404. package/src/sass/abstracts/_variables.scss +39 -21
  405. package/src/sass/base/_fonts.scss +61 -48
  406. package/src/sass/base/_global.scss +104 -24
  407. package/src/sass/base/_index.scss +2 -0
  408. package/src/sass/base/_normalize.scss +59 -114
  409. package/src/sass/base/_print.scss +21 -0
  410. package/src/sass/base/_prose.scss +68 -0
  411. package/src/sass/base/_typography.scss +9 -5
  412. package/src/sass/components/_accordion.scss +9 -16
  413. package/src/sass/components/_alert.scss +102 -0
  414. package/src/sass/components/_aura.scss +8 -3
  415. package/src/sass/components/_avatar.scss +3 -3
  416. package/src/sass/components/_back-to-top.scss +38 -0
  417. package/src/sass/components/_badges.scss +6 -5
  418. package/src/sass/components/_bar-chart.scss +41 -19
  419. package/src/sass/components/_bottom-sheet.scss +44 -16
  420. package/src/sass/components/_breadcrumb.scss +8 -1
  421. package/src/sass/components/_button-groups.scss +15 -25
  422. package/src/sass/components/_buttons.scss +156 -63
  423. package/src/sass/components/_calendar.scss +246 -0
  424. package/src/sass/components/_cards.scss +36 -44
  425. package/src/sass/components/_carousel.scss +27 -103
  426. package/src/sass/components/_cascader.scss +142 -0
  427. package/src/sass/components/_chips.scss +36 -46
  428. package/src/sass/components/_column-chart.scss +19 -12
  429. package/src/sass/components/_command-palette.scss +4 -7
  430. package/src/sass/components/_confetti.scss +0 -2
  431. package/src/sass/components/_countdown.scss +1 -1
  432. package/src/sass/components/_data-table.scss +162 -25
  433. package/src/sass/components/_datepicker.scss +54 -40
  434. package/src/sass/components/_description-list.scss +85 -0
  435. package/src/sass/components/_dialog.scss +42 -41
  436. package/src/sass/components/_docked-display.scss +1 -3
  437. package/src/sass/components/_drag-handle.scss +16 -20
  438. package/src/sass/components/_expanding-card.scss +20 -9
  439. package/src/sass/components/_fab-menu.scss +44 -32
  440. package/src/sass/components/_funnel-chart.scss +124 -0
  441. package/src/sass/components/_heatmap-chart.scss +111 -22
  442. package/src/sass/components/_icon-buttons.scss +7 -7
  443. package/src/sass/components/_icons-material-design.scss +2 -2
  444. package/src/sass/components/_image-compare.scss +108 -0
  445. package/src/sass/components/_index.scss +20 -0
  446. package/src/sass/components/_keypad.scss +39 -19
  447. package/src/sass/components/_kpi.scss +6 -11
  448. package/src/sass/components/_lightbox.scss +24 -13
  449. package/src/sass/components/_line-chart.scss +16 -2
  450. package/src/sass/components/_list.scss +59 -14
  451. package/src/sass/components/_loading-indicator.scss +1 -0
  452. package/src/sass/components/_loading-overlay.scss +105 -0
  453. package/src/sass/components/_map.scss +33 -11
  454. package/src/sass/components/_marquee.scss +3 -2
  455. package/src/sass/components/_mega-menu.scss +137 -0
  456. package/src/sass/components/_menu.scss +143 -123
  457. package/src/sass/components/_menubar.scss +59 -0
  458. package/src/sass/components/_message-scroller.scss +2 -2
  459. package/src/sass/components/_message.scss +3 -3
  460. package/src/sass/components/_mixed-chart.scss +37 -9
  461. package/src/sass/components/_modal-display.scss +21 -0
  462. package/src/sass/components/_navbar.scss +34 -20
  463. package/src/sass/components/_navigation-bar.scss +15 -77
  464. package/src/sass/components/_navigation-rail.scss +151 -92
  465. package/src/sass/components/_org-chart.scss +192 -0
  466. package/src/sass/components/_page-footer.scss +1 -1
  467. package/src/sass/components/_pagination.scss +6 -13
  468. package/src/sass/components/_panes.scss +32 -26
  469. package/src/sass/components/_particles.scss +0 -2
  470. package/src/sass/components/_pie-chart.scss +91 -11
  471. package/src/sass/components/_popover.scss +18 -5
  472. package/src/sass/components/_progress.scss +152 -31
  473. package/src/sass/components/_pull-to-refresh.scss +90 -0
  474. package/src/sass/components/_questionnaire.scss +74 -3
  475. package/src/sass/components/_radar-chart.scss +38 -10
  476. package/src/sass/components/_radial-chart.scss +113 -5
  477. package/src/sass/components/_rich-text-editor.scss +2 -2
  478. package/src/sass/components/_sankey-chart.scss +114 -0
  479. package/src/sass/components/_scatter-chart.scss +153 -0
  480. package/src/sass/components/_scrim.scss +0 -2
  481. package/src/sass/components/_scrollspy.scss +0 -2
  482. package/src/sass/components/_search.scss +26 -22
  483. package/src/sass/components/_show-more.scss +8 -0
  484. package/src/sass/components/_side-sheet.scss +23 -37
  485. package/src/sass/components/_skeleton.scss +2 -4
  486. package/src/sass/components/_snackbar.scss +27 -21
  487. package/src/sass/components/_split-button.scss +5 -5
  488. package/src/sass/components/_stat.scss +3 -8
  489. package/src/sass/components/_stepper.scss +1 -1
  490. package/src/sass/components/_swipe-actions.scss +71 -0
  491. package/src/sass/components/_tabs.scss +51 -32
  492. package/src/sass/components/_timeline.scss +12 -12
  493. package/src/sass/components/_timepicker.scss +109 -78
  494. package/src/sass/components/_toolbar.scss +35 -43
  495. package/src/sass/components/_tooltip.scss +21 -12
  496. package/src/sass/components/_tour.scss +89 -0
  497. package/src/sass/components/_transfer-list.scss +73 -0
  498. package/src/sass/components/_transitions.scss +4 -4
  499. package/src/sass/components/_tree.scss +3 -16
  500. package/src/sass/components/_treemap-chart.scss +122 -0
  501. package/src/sass/components/forms/_checkboxes.scss +106 -24
  502. package/src/sass/components/forms/_color-picker.scss +135 -0
  503. package/src/sass/components/forms/_color-swatches.scss +85 -0
  504. package/src/sass/components/forms/_drop-zone.scss +15 -9
  505. package/src/sass/components/forms/_fieldset.scss +7 -7
  506. package/src/sass/components/forms/_file-input.scss +6 -8
  507. package/src/sass/components/forms/_index.scss +3 -1
  508. package/src/sass/components/forms/_input-fields.scss +254 -90
  509. package/src/sass/components/forms/_radio-buttons.scss +33 -94
  510. package/src/sass/components/forms/_rating.scss +2 -32
  511. package/src/sass/components/forms/_select.scss +199 -20
  512. package/src/sass/components/forms/_slider.scss +91 -94
  513. package/src/sass/components/forms/_switches.scss +53 -164
  514. package/src/sass/custom.scss +10 -1
  515. package/src/sass/expressive.scss +3 -63
  516. package/src/sass/tokens/_contrast.scss +94 -0
  517. package/src/sass/tokens/_elevation.scss +16 -0
  518. package/src/sass/tokens/_index.scss +5 -0
  519. package/src/sass/tokens/_motion.scss +109 -0
  520. package/src/sass/tokens/_reference.scss +72 -141
  521. package/src/sass/tokens/_shape.scss +38 -0
  522. package/src/sass/tokens/_stacking.scss +27 -0
  523. package/src/sass/tokens/_state.scss +0 -2
  524. package/src/sass/tokens/_theme.scss +10 -1
  525. package/src/sass/tokens/_vibrant.scss +2 -5
  526. package/src/sass/utilities/_defer-render.scss +17 -0
  527. package/src/sass/utilities/_helpers.scss +183 -26
  528. package/src/sass/utilities/_index.scss +1 -0
  529. package/src/sass/utilities/_scroll-area.scss +0 -2
  530. package/src/sass/utilities/_spacing.scss +52 -34
  531. package/src/sass/utilities/_typescale.scss +8 -1
  532. package/src/sass/utilities/_visibility.scss +47 -76
  533. package/src/sass/utilities/_z-depth.scss +7 -4
  534. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  535. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  536. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  537. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  540. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  541. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  543. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  548. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  553. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  556. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  562. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  564. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  567. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  568. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  569. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  570. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  572. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  574. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  578. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  582. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  584. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  587. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  589. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  590. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  592. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  593. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  594. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  596. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  598. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  599. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  602. /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -3,17 +3,17 @@
3
3
  // Sliders.
4
4
  //
5
5
  // Anatomy is the HTML. An <input type="range"> is the control. A wrapping
6
- // .slider is the host (.range and .range-field are the older names).
7
- // The plugin is Expressive.Slider; Expressive.Range is kept as an alias.
6
+ // .slider is the host, or a <label> wrapping the input.
7
+ // The plugin is Expressive.Slider.
8
8
  //
9
9
  // Variants (M3 Expressive):
10
10
  // standard default. Active from the start to the handle.
11
11
  // .centered active grows from the midpoint to the handle.
12
- // dual two inputs in one .range; active is between the handles.
12
+ // dual two inputs in one .slider; active is between the handles.
13
13
  //
14
14
  // Orientation: horizontal (default) or .vertical.
15
15
  // Size on the host: default XS, .s / .small, .m / .medium, .l / .large, .xl.
16
- // Optional: a leading <i> (inset icon), .stops (discrete ticks), value
16
+ // Optional: a leading icon (inset), .stops (discrete ticks), value
17
17
  // label (JS .thumb).
18
18
  //
19
19
  // Tokens follow https://m3.material.io/components/sliders/specs
@@ -32,7 +32,7 @@
32
32
  // M3 calls this component "Slider", so `.slider` is the name. It was the image
33
33
  // slideshow's host before 0.8.0. The slideshow is gone in 0.8.0, so the class
34
34
  // belongs to this component and nothing else.
35
- $_host: ".slider, .range, .range-field, label:has(> [type='range'])";
35
+ $_host: ".slider, label:has(> [type='range'])";
36
36
 
37
37
  :is(#{$_host}),
38
38
  input[type="range"] {
@@ -43,7 +43,7 @@ input[type="range"] {
43
43
  --md-comp-slider-gap: 6px;
44
44
  --md-comp-slider-stop-size: 2px;
45
45
  --md-comp-slider-stop-inset: 8px;
46
- --md-comp-slider-icon-size: 24px;
46
+ --md-comp-slider-icon-size: #{rem(24px)};
47
47
  --md-comp-slider-active-track-color: var(--md-sys-color-primary);
48
48
  --md-comp-slider-inactive-track-color: var(--md-sys-color-secondary-container);
49
49
  --md-comp-slider-handle-color: var(--md-sys-color-primary);
@@ -78,28 +78,28 @@ input[type="range"] {
78
78
  :is(#{$_host}).medium,
79
79
  :is(#{$_host}).m [type="range"],
80
80
  :is(#{$_host}).medium [type="range"] {
81
- --md-comp-slider-track-height: 40px;
82
- --md-comp-slider-handle-height: 52px;
81
+ --md-comp-slider-track-height: #{rem(40px)};
82
+ --md-comp-slider-handle-height: #{rem(52px)};
83
83
  --md-comp-slider-stop-inset: 12px;
84
- --md-comp-slider-icon-size: 24px;
84
+ --md-comp-slider-icon-size: #{rem(24px)};
85
85
  }
86
86
 
87
87
  :is(#{$_host}).l,
88
88
  :is(#{$_host}).large,
89
89
  :is(#{$_host}).l [type="range"],
90
90
  :is(#{$_host}).large [type="range"] {
91
- --md-comp-slider-track-height: 56px;
92
- --md-comp-slider-handle-height: 68px;
91
+ --md-comp-slider-track-height: #{rem(56px)};
92
+ --md-comp-slider-handle-height: #{rem(68px)};
93
93
  --md-comp-slider-stop-inset: 16px;
94
- --md-comp-slider-icon-size: 24px;
94
+ --md-comp-slider-icon-size: #{rem(24px)};
95
95
  }
96
96
 
97
97
  :is(#{$_host}).xl,
98
98
  :is(#{$_host}).xl [type="range"] {
99
- --md-comp-slider-track-height: 96px;
100
- --md-comp-slider-handle-height: 108px;
99
+ --md-comp-slider-track-height: #{rem(96px)};
100
+ --md-comp-slider-handle-height: #{rem(108px)};
101
101
  --md-comp-slider-stop-inset: 28px;
102
- --md-comp-slider-icon-size: 32px;
102
+ --md-comp-slider-icon-size: #{rem(32px)};
103
103
  }
104
104
 
105
105
  :is(#{$_host}):dir(rtl),
@@ -198,92 +198,54 @@ $_active: var(--md-comp-slider-active-track-color);
198
198
  $_inactive: var(--md-comp-slider-inactive-track-color);
199
199
  $_active-pos: var(--md-comp-slider-active-position, var(--md-comp-slider-active-fraction));
200
200
 
201
- // Gap around the handle so the tracks do not run under it.
202
- @mixin range-track-fill {
203
- background-image:
204
- _stop(end),
205
- linear-gradient(var(--md-comp-slider-gradient), _handle-gap($_active, $_active-pos, $_inactive));
206
- }
207
-
208
- @mixin range-track-fill-centered {
209
- background-image:
210
- _stop(start),
211
- _stop(end),
212
- linear-gradient(
213
- var(--md-comp-slider-gradient),
214
- _handle-gap($_inactive, min(50%, $_active-pos), $_active),
215
- _handle-gap($_active, max(50%, $_active-pos), $_inactive)
216
- );
217
- }
218
-
219
- @mixin range-track-fill-dual {
220
- background-image:
221
- _stop(start),
222
- _stop(end),
223
- linear-gradient(
224
- var(--md-comp-slider-gradient),
225
- _handle-gap($_inactive, var(--md-comp-slider-start-position, var(--md-comp-slider-start-fraction)), $_active),
226
- _handle-gap($_active, var(--md-comp-slider-end-position, var(--md-comp-slider-end-fraction)), $_inactive)
227
- );
228
- }
229
-
230
- @mixin range-track {
231
- box-sizing: border-box;
232
- width: 100%;
233
- height: var(--md-comp-slider-track-height);
234
- border: none;
235
- border-radius: calc(var(--md-comp-slider-track-height) / 2);
236
- background-color: transparent;
237
- }
238
-
239
- @mixin range-track-vertical {
240
- width: var(--md-comp-slider-track-height);
241
- height: 100%;
242
- }
243
-
244
- @mixin range-thumb {
245
- appearance: none;
246
- -webkit-appearance: none;
247
- box-sizing: border-box;
248
- border: none;
249
- width: var(--md-comp-slider-handle-width);
250
- height: var(--md-comp-slider-handle-height);
251
- border-radius: calc(var(--md-comp-slider-handle-width) / 2);
252
- background: var(--md-comp-slider-handle-color);
253
- box-shadow: none;
254
- cursor: grab;
255
- transition: box-shadow 0.2s ease, width 0.15s ease, height 0.15s ease;
256
- }
257
-
258
- @mixin range-thumb-vertical {
259
- width: var(--md-comp-slider-handle-height);
260
- height: var(--md-comp-slider-handle-width);
261
- border-radius: calc(var(--md-comp-slider-handle-width) / 2);
262
- }
263
-
264
201
  // One set of rules per engine: a browser drops a whole rule with a pseudo-element
265
202
  // it does not know, so the two cannot share a selector list.
266
203
  @each $track, $thumb in ("::-webkit-slider-runnable-track" "::-webkit-slider-thumb", "::-moz-range-track" "::-moz-range-thumb") {
267
204
  $webkit: $thumb == "::-webkit-slider-thumb";
268
205
 
269
206
  input[type="range"]#{$track} {
270
- @include range-track;
271
- @include range-track-fill;
207
+ box-sizing: border-box;
208
+ width: 100%;
209
+ height: var(--md-comp-slider-track-height);
210
+ border: none;
211
+ border-radius: calc(var(--md-comp-slider-track-height) / 2);
212
+ background-color: transparent;
213
+ // Gap around the handle so the tracks do not run under it.
214
+ background-image:
215
+ _stop(end),
216
+ linear-gradient(var(--md-comp-slider-gradient), _handle-gap($_active, $_active-pos, $_inactive));
272
217
  }
273
218
 
274
219
  input[type="range"]#{$thumb} {
275
- @include range-thumb;
220
+ appearance: none;
221
+ box-sizing: border-box;
222
+ border: none;
223
+ width: var(--md-comp-slider-handle-width);
224
+ height: var(--md-comp-slider-handle-height);
225
+ border-radius: calc(var(--md-comp-slider-handle-width) / 2);
226
+ background: var(--md-comp-slider-handle-color);
227
+ box-shadow: none;
228
+ cursor: grab;
229
+ transition: box-shadow var(--md-sys-motion-duration-short4) ease, width var(--md-sys-motion-duration-short3) ease, height var(--md-sys-motion-duration-short3) ease;
230
+
231
+ @media (prefers-reduced-motion: reduce) {
232
+ transition: none;
233
+ }
234
+
276
235
  @if $webkit {
277
236
  margin-top: calc((var(--md-comp-slider-track-height) - var(--md-comp-slider-handle-height)) / 2);
278
237
  }
279
238
  }
280
239
 
281
240
  input[type="range"]:hover:not(:disabled)#{$thumb} {
282
- box-shadow: 0 0 0 18px color-mix(in oklab, var(--md-comp-slider-handle-color) 8%, transparent);
241
+ box-shadow: 0 0 0 18px state-layer(var(--md-comp-slider-handle-color), "hover");
283
242
  }
284
243
 
244
+ // The tint alone was about 1.1:1 against the surface, so the handle also
245
+ // takes the shared focus ring.
285
246
  input[type="range"]:focus-visible:not(:disabled)#{$thumb} {
286
- box-shadow: 0 0 0 18px color-mix(in oklab, var(--md-comp-slider-handle-color) 10%, transparent);
247
+ box-shadow: 0 0 0 18px state-layer(var(--md-comp-slider-handle-color), "focus");
248
+ @include focus-ring;
287
249
  }
288
250
 
289
251
  input[type="range"]:active:not(:disabled)#{$thumb} {
@@ -291,16 +253,26 @@ $_active-pos: var(--md-comp-slider-active-position, var(--md-comp-slider-active-
291
253
  }
292
254
 
293
255
  :is(#{$_host}).centered [type="range"]#{$track} {
294
- @include range-track-fill-centered;
256
+ background-image:
257
+ _stop(start),
258
+ _stop(end),
259
+ linear-gradient(
260
+ var(--md-comp-slider-gradient),
261
+ _handle-gap($_inactive, min(50%, $_active-pos), $_active),
262
+ _handle-gap($_active, max(50%, $_active-pos), $_inactive)
263
+ );
295
264
  }
296
265
 
297
266
  :is(#{$_host}).vertical > [type="range"]#{$track} {
298
- @include range-track-vertical;
267
+ width: var(--md-comp-slider-track-height);
268
+ height: 100%;
299
269
  margin-left: calc((var(--md-comp-slider-handle-height) - var(--md-comp-slider-track-height)) / 2);
300
270
  }
301
271
 
302
272
  :is(#{$_host}).vertical > [type="range"]#{$thumb} {
303
- @include range-thumb-vertical;
273
+ width: var(--md-comp-slider-handle-height);
274
+ height: var(--md-comp-slider-handle-width);
275
+ border-radius: calc(var(--md-comp-slider-handle-width) / 2);
304
276
  @if $webkit {
305
277
  margin-top: 0;
306
278
  }
@@ -326,7 +298,14 @@ $_active-pos: var(--md-comp-slider-active-position, var(--md-comp-slider-active-
326
298
  height: var(--md-comp-slider-track-height);
327
299
  border-radius: calc(var(--md-comp-slider-track-height) / 2);
328
300
  pointer-events: none;
329
- @include range-track-fill-dual;
301
+ background-image:
302
+ _stop(start),
303
+ _stop(end),
304
+ linear-gradient(
305
+ var(--md-comp-slider-gradient),
306
+ _handle-gap($_inactive, var(--md-comp-slider-start-position, var(--md-comp-slider-start-fraction)), $_active),
307
+ _handle-gap($_active, var(--md-comp-slider-end-position, var(--md-comp-slider-end-fraction)), $_inactive)
308
+ );
330
309
  }
331
310
 
332
311
  > [type="range"]:first-of-type {
@@ -427,7 +406,7 @@ $_active-pos: var(--md-comp-slider-active-position, var(--md-comp-slider-active-
427
406
  pointer-events: none;
428
407
  background: radial-gradient(
429
408
  circle var(--md-comp-slider-stop-size) at var(--_dot) 50%,
430
- var(--md-sys-color-on-primary) 99%,
409
+ var(--_stop, var(--md-sys-color-on-primary)) 99%,
431
410
  transparent
432
411
  )
433
412
  0 0 / var(--md-comp-slider-stop-spacing, 0px) 100% repeat-x;
@@ -465,18 +444,22 @@ input[type="range"] + .thumb {
465
444
  display: flex;
466
445
  align-items: center;
467
446
  justify-content: center;
468
- min-width: 40px;
469
- height: 40px;
447
+ min-width: rem(40px);
448
+ height: rem(40px);
470
449
  padding: 0 12px;
471
450
  border: none;
472
- border-radius: 20px;
451
+ border-radius: var(--md-sys-shape-corner-large-increased);
473
452
  background-color: var(--md-sys-color-inverse-surface);
474
453
  color: var(--md-sys-color-inverse-on-surface);
475
454
  pointer-events: none;
476
455
  opacity: 0;
477
456
  transform: translate(-50%, calc(-100% - 4px)) scale(0.9);
478
457
  transform-origin: center bottom;
479
- transition: opacity 0.15s ease, transform 0.15s ease;
458
+ transition: opacity var(--md-sys-motion-duration-short3) ease, transform var(--md-sys-motion-duration-short3) ease;
459
+
460
+ @media (prefers-reduced-motion: reduce) {
461
+ transition: none;
462
+ }
480
463
  @include typescale("body-small");
481
464
 
482
465
  .value {
@@ -500,12 +483,21 @@ input[type="range"] + .thumb {
500
483
  }
501
484
  }
502
485
 
486
+ // GrayText is the disabled color here, so the inactive track is CanvasText
487
+ // and a disabled slider is GrayText throughout. The stops are a gradient,
488
+ // which forced colors drop unless the layer opts out.
503
489
  @media (forced-colors: active) {
504
490
  :is(#{$_host}), input[type="range"] {
505
491
  --md-comp-slider-active-track-color: Highlight;
506
- --md-comp-slider-inactive-track-color: GrayText;
492
+ --md-comp-slider-inactive-track-color: CanvasText;
507
493
  --md-comp-slider-handle-color: CanvasText;
508
- --md-comp-slider-stop-color: CanvasText;
494
+ --md-comp-slider-stop-color: Canvas;
495
+ }
496
+
497
+ :is(#{$_host}):has(> [type="range"]:disabled),
498
+ input[type="range"]:disabled {
499
+ --md-comp-slider-active-track-color: GrayText;
500
+ --md-comp-slider-inactive-track-color: GrayText;
509
501
  }
510
502
 
511
503
  input[type="range"],
@@ -513,6 +505,11 @@ input[type="range"] + .thumb {
513
505
  forced-color-adjust: none;
514
506
  }
515
507
 
508
+ :is(#{$_host}).stops::after {
509
+ --_stop: HighlightText;
510
+ forced-color-adjust: none;
511
+ }
512
+
516
513
  input[type="range"]:focus-visible {
517
514
  outline: 2px solid Highlight;
518
515
  outline-offset: 4px;
@@ -4,12 +4,11 @@
4
4
  //
5
5
  // Anatomy is the HTML. A <label class="switch"> wrapping
6
6
  // <input type="checkbox"> is the control. The label text is a sibling of
7
- // the input — no .lever required. input + .lever and input + span still
8
- // work (legacy).
7
+ // the input — no .lever required.
9
8
  //
10
9
  // Tokens follow https://m3.material.io/components/switch/specs
11
10
  // track 52×32dp, 16dp corners
12
- // unselected surface-variant + 2dp outline, 16dp handle
11
+ // unselected surface-container-highest + 2dp outline, 16dp handle
13
12
  // selected primary track, 24dp on-primary handle
14
13
  // state layer 40dp, 8% hover / 10% focus
15
14
  // touch target 48dp
@@ -18,46 +17,22 @@
18
17
 
19
18
  .switch {
20
19
  --md-comp-switch-track-width: 52px;
20
+ // The handle slides and grows on the fast spatial spring; colors keep
21
+ // their short ease.
22
+ --md-comp-switch-motion: var(--md-sys-motion-spring-fast-spatial);
23
+ --md-comp-switch-motion-duration: var(--md-sys-motion-spring-fast-spatial-duration);
21
24
  --md-comp-switch-track-height: 32px;
22
25
  --md-comp-switch-handle-unselected: 16px;
23
26
  --md-comp-switch-handle-selected: 24px;
24
27
 
25
- display: inline-flex;
26
- align-items: center;
27
- gap: 12px;
28
- min-height: 48px;
29
- margin: 0;
30
- cursor: pointer;
31
- user-select: none;
32
28
  -webkit-tap-highlight-color: transparent;
33
- color: var(--md-sys-color-on-surface);
34
- @include typescale("body-large");
35
- }
36
-
37
- .switch label {
38
- display: inline-flex;
39
- align-items: center;
40
- gap: 12px;
41
- cursor: pointer;
42
- user-select: none;
29
+ @include selection-control-label(inline-flex);
43
30
  }
44
31
 
45
- // Hide the native control only when a following span/lever draws the track.
46
- .switch [type="checkbox"]:has(+ .lever),
47
- .switch [type="checkbox"]:has(+ span) {
48
- position: absolute;
49
- opacity: 0;
50
- width: 0;
51
- height: 0;
52
- pointer-events: none;
53
- }
54
-
55
- // Paint the switch on the checkbox when there is no lever/span.
56
- .switch [type="checkbox"]:not(:has(+ .lever)):not(:has(+ span)) {
32
+ // Paint the switch on the checkbox. The class goes on the <label> that wraps
33
+ // it; a checkbox nested deeper is an ordinary checkbox.
34
+ .switch > [type="checkbox"] {
57
35
  appearance: none;
58
- position: static;
59
- opacity: 1;
60
- pointer-events: auto;
61
36
  flex: 0 0 var(--md-comp-switch-track-width);
62
37
  box-sizing: border-box;
63
38
  width: var(--md-comp-switch-track-width);
@@ -65,8 +40,8 @@
65
40
  margin: 0;
66
41
  padding: 0;
67
42
  border: 2px solid var(--md-sys-color-outline);
68
- border-radius: 16px;
69
- background-color: var(--md-sys-color-surface-variant);
43
+ border-radius: var(--md-sys-shape-corner-large);
44
+ background-color: var(--md-sys-color-surface-container-highest);
70
45
  // Size the image to the handle. A 100% gradient keeps the circle in
71
46
  // the middle of the track, so background-position cannot put off on
72
47
  // the start and on on the end.
@@ -83,8 +58,13 @@
83
58
  // thumb on the start and it only grows.
84
59
  background-position: 6px 50%;
85
60
  cursor: pointer;
86
- transition: background-color .2s ease, background-position .2s ease,
87
- background-size .2s ease, border-color .2s ease, box-shadow .2s ease;
61
+ transition: background-color var(--md-sys-motion-duration-short4) ease,
62
+ background-position var(--md-comp-switch-motion-duration) var(--md-comp-switch-motion),
63
+ background-size var(--md-comp-switch-motion-duration) var(--md-comp-switch-motion), border-color var(--md-sys-motion-duration-short4) ease, box-shadow var(--md-sys-motion-duration-short4) ease;
64
+
65
+ @media (prefers-reduced-motion: reduce) {
66
+ transition: none;
67
+ }
88
68
 
89
69
  &:checked {
90
70
  border-color: var(--md-sys-color-primary);
@@ -103,16 +83,15 @@
103
83
  }
104
84
 
105
85
  &:hover {
106
- box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
86
+ box-shadow: 0 0 0 8px state-layer(var(--md-sys-color-on-surface), "hover");
107
87
  }
108
88
 
109
89
  &:checked:hover {
110
- box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-sys-color-primary) state-opacity("hover"), transparent);
90
+ box-shadow: 0 0 0 8px state-layer(var(--md-sys-color-primary), "hover");
111
91
  }
112
92
 
113
- &:focus-visible,
114
- &.tabbed:focus {
115
- box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-sys-color-primary) state-opacity("focus"), transparent);
93
+ &:focus-visible {
94
+ box-shadow: 0 0 0 8px state-layer(var(--md-sys-color-primary), "focus");
116
95
  outline: none;
117
96
  }
118
97
 
@@ -123,129 +102,39 @@
123
102
  }
124
103
  }
125
104
 
126
- .switch:has(> [type="checkbox"]:disabled),
127
- .switch:has([type="checkbox"]:disabled) label {
105
+ .switch:has(> [type="checkbox"]:disabled) {
128
106
  color: color-mix(in oklab, var(--md-sys-color-on-surface) 38%, transparent);
129
107
  cursor: default;
130
108
  }
131
109
 
132
- // Legacy: input + .lever or input + span draws the same anatomy.
133
- .switch [type="checkbox"] + .lever,
134
- .switch [type="checkbox"] + span {
135
- position: relative;
136
- display: inline-flex;
137
- align-items: center;
138
- flex: 0 0 auto;
139
- box-sizing: border-box;
140
- width: var(--md-comp-switch-track-width);
141
- height: var(--md-comp-switch-track-height);
142
- margin: 0;
143
- padding: 0;
144
- border: 2px solid var(--md-sys-color-outline);
145
- border-radius: 16px;
146
- background-color: var(--md-sys-color-surface-variant);
147
- vertical-align: middle;
148
- transition: background-color .2s ease, border-color .2s ease, box-shadow .2s ease;
149
-
150
- &::before,
151
- &::after {
152
- content: "";
153
- position: absolute;
154
- top: 6px;
155
- left: 6px;
156
- width: 16px;
157
- height: 16px;
158
- border-radius: 50%;
159
- transition: left .2s ease, top .2s ease, width .2s ease, height .2s ease,
160
- background-color .2s ease, transform .2s ease;
161
- }
162
-
163
- &::after {
164
- background-color: var(--md-sys-color-outline);
165
- }
166
- }
167
-
168
- .switch [type="checkbox"]:checked + .lever,
169
- .switch [type="checkbox"]:checked + span {
170
- border-color: var(--md-sys-color-primary);
171
- background-color: var(--md-sys-color-primary);
172
-
173
- &::before,
174
- &::after {
175
- top: 2px;
176
- left: 22px;
177
- width: 24px;
178
- height: 24px;
179
- }
180
-
181
- &::after {
182
- background-color: var(--md-sys-color-on-primary);
183
- }
184
- }
185
-
186
- .switch [type="checkbox"]:hover + .lever,
187
- .switch [type="checkbox"]:hover + span {
188
- box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
189
- }
190
-
191
- .switch [type="checkbox"]:checked:hover + .lever,
192
- .switch [type="checkbox"]:checked:hover + span {
193
- box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-sys-color-primary) state-opacity("hover"), transparent);
194
- }
195
-
196
- .switch [type="checkbox"]:focus-visible + .lever,
197
- .switch [type="checkbox"].tabbed:focus + .lever,
198
- .switch [type="checkbox"]:focus-visible + span,
199
- .switch [type="checkbox"].tabbed:focus + span {
200
- box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-sys-color-primary) state-opacity("focus"), transparent);
201
- }
202
-
203
- .switch [type="checkbox"]:disabled + .lever,
204
- .switch [type="checkbox"]:disabled + span {
205
- opacity: 0.38;
206
- box-shadow: none;
207
- cursor: default;
208
- }
209
-
210
- // The span holds the label text as well as the track.
211
- .switch [type="checkbox"] + span:not(.lever):not(:empty) {
212
- width: auto;
213
- min-width: var(--md-comp-switch-track-width);
214
- height: auto;
215
- min-height: var(--md-comp-switch-track-height);
216
- padding-left: calc(var(--md-comp-switch-track-width) + 12px);
217
- border: 0;
218
- background-color: transparent;
219
- border-radius: 0;
220
-
221
- &::before {
222
- border: 2px solid var(--md-sys-color-outline);
223
- background-color: var(--md-sys-color-surface-variant);
224
- box-sizing: border-box;
225
- width: var(--md-comp-switch-track-width);
226
- height: var(--md-comp-switch-track-height);
227
- border-radius: 16px;
228
- top: 0;
229
- left: 0;
230
- }
231
-
232
- &::after {
233
- top: 8px;
234
- left: 8px;
235
- }
236
- }
237
-
238
- .switch [type="checkbox"]:checked + span:not(.lever):not(:empty) {
239
- background-color: transparent;
240
- border-color: transparent;
241
-
242
- &::before {
243
- border-color: var(--md-sys-color-primary);
244
- background-color: var(--md-sys-color-primary);
245
- }
246
-
247
- &::after {
248
- top: 4px;
249
- left: 24px;
110
+ // Forced colors drop the gradient handle, so a switch shows only an empty
111
+ // track whatever its state. Repaint the whole control in system colors.
112
+ @media (forced-colors: active) {
113
+ .switch > [type="checkbox"] {
114
+ forced-color-adjust: none;
115
+ border-color: CanvasText;
116
+ background-color: Canvas;
117
+ background-image: radial-gradient(circle closest-side, CanvasText 100%, transparent 101%);
118
+
119
+ &:checked {
120
+ border-color: Highlight;
121
+ background-color: Highlight;
122
+ background-image: radial-gradient(circle closest-side, HighlightText 100%, transparent 101%);
123
+ }
124
+
125
+ &:disabled {
126
+ border-color: GrayText;
127
+ background-image: radial-gradient(circle closest-side, GrayText 100%, transparent 101%);
128
+ }
129
+
130
+ &:disabled:checked {
131
+ background-color: GrayText;
132
+ background-image: radial-gradient(circle closest-side, Canvas 100%, transparent 101%);
133
+ }
134
+
135
+ &:focus-visible {
136
+ outline: 2px solid CanvasText;
137
+ outline-offset: 2px;
138
+ }
250
139
  }
251
140
  }
@@ -1,10 +1,19 @@
1
1
  @charset "UTF-8";
2
+
3
+ // The only place cascade order is decided; expressive.scss forwards this file
4
+ // with its defaults. See README.md for why each layer sits where it does.
5
+ // abstracts emits no CSS and is forwarded for the Sass API. @forward cannot
6
+ // appear inside @layer, so each layer is loaded with meta.load-css().
2
7
  @use "sass:meta";
3
- @forward "abstracts";
8
+ // The destination and fieldset mixins only serve the partials that share them.
9
+ @forward "abstracts" hide nav-destination, nav-destination-row, choice-fieldset;
4
10
 
5
11
  $components: null !default;
6
12
  $utilities: null !default;
7
13
 
14
+ // @font-face must stay unlayered. A face declared inside @layer base can
15
+ // lose to any unlayered consumer face, or be ignored by engines that still
16
+ // treat layered faces as experimental.
8
17
  @include meta.load-css("base/fonts");
9
18
 
10
19
  @layer tokens, base, components, utilities;
@@ -1,65 +1,5 @@
1
1
  @charset "UTF-8";
2
2
 
3
- // ExpressiveCSS entry point.
4
- //
5
- // This is the only place cascade order is decided, so a rule's position is
6
- // always answerable from this file. Layers:
7
- //
8
- // abstracts - variables, functions, mixins. Emits nothing, so it is not a
9
- // cascade layer at all; partials pull it in with
10
- // `@use "../abstracts" as *;`. Forwarded below so that
11
- // downstream projects consuming this file keep access to the
12
- // breakpoint mixins, z-depth() and btn-*.
13
- // tokens - :root custom properties (M3 reference palette + theme).
14
- // base - normalize, element defaults, typography, grid.
15
- // components - widgets.
16
- // utilities - helper classes.
17
- //
18
- // Order used to be expressed purely as @forward order, with utilities emitted
19
- // before components so a component rule would win at equal specificity. It is
20
- // now a real @layer list, which changes three things:
21
- //
22
- // 1. Utilities moved after components. Layer order beats specificity
23
- // outright, so a helper class now wins over a component rule without
24
- // needing to out-specify it.
25
- // 2. Unlayered CSS beats every layer. A consumer can override any component
26
- // with a plain `.btn { ... }` - no specificity war, no load-order
27
- // dependence on where the framework sits in their bundle.
28
- // 3. !important is NOT dropped from utilities. Layer order reverses for
29
- // important declarations, so an important rule inside `utilities` would
30
- // also beat a consumer's own !important - but a *normal* rule in a layer
31
- // loses to any unlayered consumer rule. Since `.hide`, `.m-3` and the
32
- // palette classes exist precisely to be unconditional, they keep their
33
- // flags and keep winning. Dropping them would silently make `.hide` lose
34
- // to any unlayered `display` the consumer had already written.
35
- //
36
- // @forward cannot appear inside @layer, so each layer is pulled in with
37
- // meta.load-css() instead. abstracts emits no CSS, so loading it separately
38
- // below duplicates nothing.
39
-
40
- @use "sass:meta";
41
-
42
- @forward "abstracts";
43
-
44
- // @font-face must stay unlayered. A face declared inside @layer base can
45
- // lose to any unlayered consumer face, or be ignored by engines that still
46
- // treat layered faces as experimental.
47
- @include meta.load-css("base/fonts");
48
-
49
- @layer tokens, base, components, utilities;
50
-
51
- @layer tokens {
52
- @include meta.load-css("tokens");
53
- }
54
-
55
- @layer base {
56
- @include meta.load-css("base");
57
- }
58
-
59
- @layer components {
60
- @include meta.load-css("components");
61
- }
62
-
63
- @layer utilities {
64
- @include meta.load-css("utilities");
65
- }
3
+ // ExpressiveCSS entry point: custom.scss with every component and utility.
4
+ // Cascade order is decided there; see README.md for the layer rules.
5
+ @forward "custom" hide $components, $utilities;