@expressivecss/expressive 0.14.1 → 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 (603) hide show
  1. package/CHANGELOG.md +1589 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19304 -12021
  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-A7ALMYUR.mjs → chunk-4QUCNFSD.mjs} +68 -125
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-4TKTLGEM.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-BG6ZRB5H.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-YDCS5S3J.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-3DHK5CZU.mjs → chunk-6FSEUFVW.mjs} +40 -29
  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-GVGT6MIU.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-TBM3FT7G.mjs → chunk-7NLUI3RR.mjs} +148 -78
  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-NS2UMNZV.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-GIW4K4SE.mjs → chunk-B7DQFHA5.mjs} +37 -53
  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-GUB3TNO2.mjs → chunk-BPF3I2MN.mjs} +109 -27
  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-JIDMQGK6.mjs → chunk-CSYWKEK3.mjs} +322 -223
  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-QDAL4IYN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-3GVFZ4XO.mjs → chunk-EVCVFEV3.mjs} +238 -152
  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-ZAS25YFD.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-KHV6DZXX.mjs → chunk-KZPSAXIU.mjs} +156 -46
  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-Z2NRKI7R.mjs → chunk-OP43LLIC.mjs} +44 -73
  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-PM655FXL.mjs → chunk-OYNUDOHR.mjs} +20 -48
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UEZUJQ66.mjs → chunk-P6DRQ6KS.mjs} +36 -31
  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-5HQSGDZ5.mjs → chunk-QXKWVHBD.mjs} +286 -203
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-DAIU5SLG.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-FS7XY3HT.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-4HZMB7LI.mjs → chunk-VGY4M57S.mjs} +281 -135
  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-S3XDFGSZ.mjs → chunk-VMY55K2X.mjs} +92 -141
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-UEXCIMJZ.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-MZ6Z24BX.mjs → chunk-ZJNLAGY5.mjs} +19 -34
  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 +10333 -4070
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10333 -4070
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -25
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +184 -69
  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 +133 -64
  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 +9 -0
  274. package/dist/js/internal/components/keypad.mjs.map +7 -0
  275. package/dist/js/internal/components/lightbox.mjs +3 -3
  276. package/dist/js/internal/components/lineChart.mjs +29 -4
  277. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  278. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  279. package/dist/js/internal/components/mapView.mjs +3 -3
  280. package/dist/js/internal/components/menu.mjs +3 -3
  281. package/dist/js/internal/components/menubar.mjs +10 -0
  282. package/dist/js/internal/components/menubar.mjs.map +7 -0
  283. package/dist/js/internal/components/messageScroller.mjs +3 -3
  284. package/dist/js/internal/components/mixedChart.mjs +5 -4
  285. package/dist/js/internal/components/navigationRail.mjs +3 -2
  286. package/dist/js/internal/components/particles.mjs +3 -2
  287. package/dist/js/internal/components/pieChart.mjs +4 -3
  288. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  289. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  290. package/dist/js/internal/components/questionnaire.mjs +3 -3
  291. package/dist/js/internal/components/radarChart.mjs +4 -3
  292. package/dist/js/internal/components/radialChart.mjs +4 -3
  293. package/dist/js/internal/components/registry.mjs +59 -40
  294. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  295. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  296. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  297. package/dist/js/internal/components/scatterChart.mjs +10 -0
  298. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  299. package/dist/js/internal/components/scrollspy.mjs +3 -2
  300. package/dist/js/internal/components/select.mjs +4 -4
  301. package/dist/js/internal/components/showMore.mjs +9 -0
  302. package/dist/js/internal/components/showMore.mjs.map +7 -0
  303. package/dist/js/internal/components/slider.mjs +3 -3
  304. package/dist/js/internal/components/snackbar.mjs +2 -2
  305. package/dist/js/internal/components/swipeActions.mjs +9 -0
  306. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  307. package/dist/js/internal/components/tabs.mjs +3 -4
  308. package/dist/js/internal/components/timepicker.mjs +5 -4
  309. package/dist/js/internal/components/tooltip.mjs +3 -3
  310. package/dist/js/internal/components/treeSelect.mjs +13 -0
  311. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  312. package/dist/js/internal/components/treemapChart.mjs +10 -0
  313. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  314. package/dist/js/internal/core/component.mjs +2 -1
  315. package/dist/js/internal/core/formControl.mjs +12 -0
  316. package/dist/js/internal/core/formControl.mjs.map +7 -0
  317. package/dist/js/internal/core/spring.mjs +11 -0
  318. package/dist/js/internal/core/spring.mjs.map +7 -0
  319. package/dist/js/internal/core/utils.mjs +11 -3
  320. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  322. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  323. package/dist/js/modular.mjs +175 -69
  324. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  325. package/dist/types/behaviors/copy.d.ts +18 -0
  326. package/dist/types/behaviors/dataTables.d.ts +129 -0
  327. package/dist/types/behaviors/dialogs.d.ts +27 -1
  328. package/dist/types/behaviors/forms.d.ts +68 -2
  329. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  330. package/dist/types/behaviors/lists.d.ts +12 -0
  331. package/dist/types/behaviors/paneResize.d.ts +29 -0
  332. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  333. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  334. package/dist/types/behaviors/sortable.d.ts +28 -0
  335. package/dist/types/behaviors/theme.d.ts +22 -0
  336. package/dist/types/behaviors/tour.d.ts +36 -0
  337. package/dist/types/behaviors/transferList.d.ts +51 -0
  338. package/dist/types/components/appBar.d.ts +5 -6
  339. package/dist/types/components/autocomplete.d.ts +92 -17
  340. package/dist/types/components/backToTop.d.ts +36 -0
  341. package/dist/types/components/barChart.d.ts +3 -6
  342. package/dist/types/components/buttonGroup.d.ts +2 -4
  343. package/dist/types/components/buttons.d.ts +5 -5
  344. package/dist/types/components/cards.d.ts +3 -16
  345. package/dist/types/components/carousel.d.ts +9 -15
  346. package/dist/types/components/cascader.d.ts +130 -0
  347. package/dist/types/components/characterCounter.d.ts +2 -15
  348. package/dist/types/components/chips.d.ts +65 -19
  349. package/dist/types/components/colorPicker.d.ts +42 -0
  350. package/dist/types/components/columnChart.d.ts +23 -10
  351. package/dist/types/components/commandPalette.d.ts +11 -16
  352. package/dist/types/components/confetti.d.ts +2 -4
  353. package/dist/types/components/currencyInput.d.ts +59 -0
  354. package/dist/types/components/datepicker.d.ts +59 -36
  355. package/dist/types/components/expandingCard.d.ts +6 -6
  356. package/dist/types/components/funnelChart.d.ts +38 -0
  357. package/dist/types/components/heatmapChart.d.ts +39 -8
  358. package/dist/types/components/hoverCard.d.ts +58 -0
  359. package/dist/types/components/index.d.ts +17 -1
  360. package/dist/types/components/inputMask.d.ts +30 -0
  361. package/dist/types/components/keypad.d.ts +66 -0
  362. package/dist/types/components/lightbox.d.ts +17 -25
  363. package/dist/types/components/lineChart.d.ts +176 -10
  364. package/dist/types/components/loadingOverlay.d.ts +42 -0
  365. package/dist/types/components/mapView.d.ts +26 -17
  366. package/dist/types/components/menu.d.ts +61 -22
  367. package/dist/types/components/menubar.d.ts +37 -0
  368. package/dist/types/components/messageScroller.d.ts +2 -14
  369. package/dist/types/components/mixedChart.d.ts +15 -6
  370. package/dist/types/components/navigationRail.d.ts +16 -5
  371. package/dist/types/components/particles.d.ts +8 -4
  372. package/dist/types/components/pieChart.d.ts +32 -7
  373. package/dist/types/components/pullToRefresh.d.ts +80 -0
  374. package/dist/types/components/questionnaire.d.ts +58 -16
  375. package/dist/types/components/radarChart.d.ts +10 -6
  376. package/dist/types/components/radialChart.d.ts +58 -8
  377. package/dist/types/components/registry.d.ts +77 -3
  378. package/dist/types/components/richTextEditor.d.ts +6 -14
  379. package/dist/types/components/sankeyChart.d.ts +72 -0
  380. package/dist/types/components/scatterChart.d.ts +102 -0
  381. package/dist/types/components/scrollspy.d.ts +3 -5
  382. package/dist/types/components/select.d.ts +43 -30
  383. package/dist/types/components/showMore.d.ts +51 -0
  384. package/dist/types/components/slider.d.ts +5 -15
  385. package/dist/types/components/snackbar.d.ts +62 -0
  386. package/dist/types/components/swipeActions.d.ts +81 -0
  387. package/dist/types/components/tabs.d.ts +93 -27
  388. package/dist/types/components/timepicker.d.ts +114 -20
  389. package/dist/types/components/tooltip.d.ts +56 -20
  390. package/dist/types/components/treeSelect.d.ts +106 -0
  391. package/dist/types/components/treemapChart.d.ts +56 -0
  392. package/dist/types/core/component.d.ts +43 -25
  393. package/dist/types/core/formControl.d.ts +21 -0
  394. package/dist/types/core/spring.d.ts +20 -0
  395. package/dist/types/core/utils.d.ts +85 -72
  396. package/dist/types/modular.d.ts +33 -1
  397. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -7
  398. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  399. package/package.json +10 -8
  400. package/src/sass/README.md +27 -18
  401. package/src/sass/abstracts/_breakpoints.scss +0 -1
  402. package/src/sass/abstracts/_elevation.scss +13 -7
  403. package/src/sass/abstracts/_index.scss +1 -0
  404. package/src/sass/abstracts/_mixins.scss +438 -92
  405. package/src/sass/abstracts/_spring.scss +63 -0
  406. package/src/sass/abstracts/_variables.scss +43 -15
  407. package/src/sass/base/_fonts.scss +61 -48
  408. package/src/sass/base/_global.scss +105 -34
  409. package/src/sass/base/_index.scss +3 -1
  410. package/src/sass/base/_normalize.scss +59 -114
  411. package/src/sass/base/_print.scss +21 -0
  412. package/src/sass/base/_prose.scss +68 -0
  413. package/src/sass/base/_typography.scss +9 -5
  414. package/src/sass/components/_accordion.scss +9 -16
  415. package/src/sass/components/_alert.scss +102 -0
  416. package/src/sass/components/_aura.scss +8 -3
  417. package/src/sass/components/_avatar.scss +3 -3
  418. package/src/sass/components/_back-to-top.scss +38 -0
  419. package/src/sass/components/_badges.scss +7 -13
  420. package/src/sass/components/_bar-chart.scss +41 -19
  421. package/src/sass/components/_bottom-sheet.scss +44 -16
  422. package/src/sass/components/_breadcrumb.scss +8 -1
  423. package/src/sass/components/_button-groups.scss +44 -89
  424. package/src/sass/components/_buttons.scss +156 -63
  425. package/src/sass/components/_calendar.scss +246 -0
  426. package/src/sass/components/_cards.scss +41 -68
  427. package/src/sass/components/_carousel.scss +43 -158
  428. package/src/sass/components/_cascader.scss +142 -0
  429. package/src/sass/components/_chips.scss +36 -52
  430. package/src/sass/components/_column-chart.scss +19 -12
  431. package/src/sass/components/_command-palette.scss +4 -7
  432. package/src/sass/components/_confetti.scss +0 -2
  433. package/src/sass/components/_countdown.scss +1 -1
  434. package/src/sass/components/_data-table.scss +162 -27
  435. package/src/sass/components/_datepicker.scss +57 -62
  436. package/src/sass/components/_description-list.scss +85 -0
  437. package/src/sass/components/_dialog.scss +42 -44
  438. package/src/sass/components/_docked-display.scss +1 -3
  439. package/src/sass/components/_drag-handle.scss +16 -20
  440. package/src/sass/components/_expanding-card.scss +20 -9
  441. package/src/sass/components/_fab-menu.scss +44 -32
  442. package/src/sass/components/_funnel-chart.scss +124 -0
  443. package/src/sass/components/_heatmap-chart.scss +113 -24
  444. package/src/sass/components/_icon-buttons.scss +7 -8
  445. package/src/sass/components/_icons-material-design.scss +2 -2
  446. package/src/sass/components/_image-compare.scss +108 -0
  447. package/src/sass/components/_index.scss +21 -0
  448. package/src/sass/components/_keypad.scss +182 -0
  449. package/src/sass/components/_kpi.scss +6 -11
  450. package/src/sass/components/_lightbox.scss +26 -20
  451. package/src/sass/components/_line-chart.scss +16 -2
  452. package/src/sass/components/_list.scss +59 -14
  453. package/src/sass/components/_loading-indicator.scss +1 -0
  454. package/src/sass/components/_loading-overlay.scss +105 -0
  455. package/src/sass/components/_map.scss +35 -13
  456. package/src/sass/components/_marquee.scss +3 -2
  457. package/src/sass/components/_mega-menu.scss +137 -0
  458. package/src/sass/components/_menu.scss +159 -182
  459. package/src/sass/components/_menubar.scss +59 -0
  460. package/src/sass/components/_message-scroller.scss +2 -2
  461. package/src/sass/components/_message.scss +3 -3
  462. package/src/sass/components/_mixed-chart.scss +37 -9
  463. package/src/sass/components/_modal-display.scss +21 -0
  464. package/src/sass/components/_navbar.scss +43 -65
  465. package/src/sass/components/_navigation-bar.scss +15 -77
  466. package/src/sass/components/_navigation-rail.scss +171 -121
  467. package/src/sass/components/_org-chart.scss +192 -0
  468. package/src/sass/components/_page-footer.scss +16 -13
  469. package/src/sass/components/_pagination.scss +6 -13
  470. package/src/sass/components/_panes.scss +33 -31
  471. package/src/sass/components/_particles.scss +0 -2
  472. package/src/sass/components/_pie-chart.scss +91 -11
  473. package/src/sass/components/_popover.scss +18 -5
  474. package/src/sass/components/_progress.scss +158 -35
  475. package/src/sass/components/_pull-to-refresh.scss +90 -0
  476. package/src/sass/components/_questionnaire.scss +74 -3
  477. package/src/sass/components/_radar-chart.scss +38 -10
  478. package/src/sass/components/_radial-chart.scss +113 -5
  479. package/src/sass/components/_rich-text-editor.scss +2 -2
  480. package/src/sass/components/_sankey-chart.scss +114 -0
  481. package/src/sass/components/_scatter-chart.scss +153 -0
  482. package/src/sass/components/_scrim.scss +0 -2
  483. package/src/sass/components/_scrollspy.scss +0 -2
  484. package/src/sass/components/_search.scss +26 -22
  485. package/src/sass/components/_show-more.scss +8 -0
  486. package/src/sass/components/_side-sheet.scss +23 -40
  487. package/src/sass/components/_skeleton.scss +2 -4
  488. package/src/sass/components/_snackbar.scss +27 -21
  489. package/src/sass/components/_split-button.scss +5 -5
  490. package/src/sass/components/_stat.scss +3 -8
  491. package/src/sass/components/_stepper.scss +1 -5
  492. package/src/sass/components/_swipe-actions.scss +71 -0
  493. package/src/sass/components/_tabs.scss +51 -32
  494. package/src/sass/components/_timeline.scss +12 -12
  495. package/src/sass/components/_timepicker.scss +111 -112
  496. package/src/sass/components/_toolbar.scss +35 -47
  497. package/src/sass/components/_tooltip.scss +21 -12
  498. package/src/sass/components/_tour.scss +89 -0
  499. package/src/sass/components/_transfer-list.scss +73 -0
  500. package/src/sass/components/_transitions.scss +4 -4
  501. package/src/sass/components/_tree.scss +3 -16
  502. package/src/sass/components/_treemap-chart.scss +122 -0
  503. package/src/sass/components/forms/_checkboxes.scss +140 -86
  504. package/src/sass/components/forms/_color-picker.scss +135 -0
  505. package/src/sass/components/forms/_color-swatches.scss +85 -0
  506. package/src/sass/components/forms/_drop-zone.scss +15 -9
  507. package/src/sass/components/forms/_fieldset.scss +10 -10
  508. package/src/sass/components/forms/_file-input.scss +6 -9
  509. package/src/sass/components/forms/_index.scss +3 -1
  510. package/src/sass/components/forms/_input-fields.scss +254 -90
  511. package/src/sass/components/forms/_radio-buttons.scss +40 -127
  512. package/src/sass/components/forms/_rating.scss +2 -32
  513. package/src/sass/components/forms/_select.scss +199 -23
  514. package/src/sass/components/forms/_slider.scss +140 -330
  515. package/src/sass/components/forms/_switches.scss +53 -164
  516. package/src/sass/custom.scss +10 -1
  517. package/src/sass/expressive.scss +3 -63
  518. package/src/sass/tokens/_contrast.scss +94 -0
  519. package/src/sass/tokens/_elevation.scss +16 -0
  520. package/src/sass/tokens/_index.scss +5 -0
  521. package/src/sass/tokens/_motion.scss +109 -0
  522. package/src/sass/tokens/_reference.scss +72 -141
  523. package/src/sass/tokens/_shape.scss +38 -0
  524. package/src/sass/tokens/_stacking.scss +27 -0
  525. package/src/sass/tokens/_state.scss +2 -4
  526. package/src/sass/tokens/_theme.scss +11 -2
  527. package/src/sass/tokens/_vibrant.scss +2 -5
  528. package/src/sass/utilities/_colors.scss +6 -1
  529. package/src/sass/utilities/_defer-render.scss +17 -0
  530. package/src/sass/utilities/_helpers.scss +183 -26
  531. package/src/sass/utilities/_index.scss +2 -1
  532. package/src/sass/utilities/_scroll-area.scss +0 -2
  533. package/src/sass/utilities/_spacing.scss +52 -34
  534. package/src/sass/utilities/_typescale.scss +8 -1
  535. package/src/sass/utilities/_visibility.scss +47 -76
  536. package/src/sass/utilities/_z-depth.scss +7 -4
  537. package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-3GVFZ4XO.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-4HZMB7LI.mjs.map +0 -7
  540. package/dist/js/chunks/chunk-4KMNFIFZ.mjs +0 -270
  541. package/dist/js/chunks/chunk-4KMNFIFZ.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-4TKTLGEM.mjs.map +0 -7
  543. package/dist/js/chunks/chunk-5BKHWHYY.mjs +0 -292
  544. package/dist/js/chunks/chunk-5BKHWHYY.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-5HQSGDZ5.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-6N2XAEFK.mjs +0 -125
  547. package/dist/js/chunks/chunk-6N2XAEFK.mjs.map +0 -7
  548. package/dist/js/chunks/chunk-A7ALMYUR.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-BG6ZRB5H.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-CUQPB25U.mjs +0 -55
  551. package/dist/js/chunks/chunk-CUQPB25U.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-DAIU5SLG.mjs.map +0 -7
  553. package/dist/js/chunks/chunk-FS7XY3HT.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-GIW4K4SE.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-GUB3TNO2.mjs.map +0 -7
  556. package/dist/js/chunks/chunk-GVGT6MIU.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-GZKEFWPM.mjs +0 -181
  558. package/dist/js/chunks/chunk-GZKEFWPM.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-HKT2S7VM.mjs +0 -48
  560. package/dist/js/chunks/chunk-HKT2S7VM.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-ILP3PDTL.mjs +0 -187
  562. package/dist/js/chunks/chunk-ILP3PDTL.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-JIDMQGK6.mjs.map +0 -7
  564. package/dist/js/chunks/chunk-KBNN3QDH.mjs +0 -7
  565. package/dist/js/chunks/chunk-KBNN3QDH.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-KHV6DZXX.mjs.map +0 -7
  567. package/dist/js/chunks/chunk-KY6U46SM.mjs +0 -345
  568. package/dist/js/chunks/chunk-KY6U46SM.mjs.map +0 -7
  569. package/dist/js/chunks/chunk-LRZMJZ3T.mjs +0 -291
  570. package/dist/js/chunks/chunk-LRZMJZ3T.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-LTWPGFBR.mjs +0 -59
  572. package/dist/js/chunks/chunk-LTWPGFBR.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-MNPROCZF.mjs +0 -328
  574. package/dist/js/chunks/chunk-MNPROCZF.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-MZ6Z24BX.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-NS2UMNZV.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-O5XPWXIQ.mjs +0 -406
  578. package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-PM655FXL.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-QDAL4IYN.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-QERLECVU.mjs +0 -572
  582. package/dist/js/chunks/chunk-QERLECVU.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-QJABDLSD.mjs +0 -112
  584. package/dist/js/chunks/chunk-QJABDLSD.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-RHRQKTTX.mjs +0 -139
  586. package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +0 -7
  587. package/dist/js/chunks/chunk-S3XDFGSZ.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-SPETGK25.mjs +0 -59
  589. package/dist/js/chunks/chunk-SPETGK25.mjs.map +0 -7
  590. package/dist/js/chunks/chunk-TBM3FT7G.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-UEXCIMJZ.mjs.map +0 -7
  592. package/dist/js/chunks/chunk-UEZUJQ66.mjs.map +0 -7
  593. package/dist/js/chunks/chunk-VGZSAFTX.mjs +0 -173
  594. package/dist/js/chunks/chunk-VGZSAFTX.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-X7OCHZVF.mjs +0 -76
  596. package/dist/js/chunks/chunk-X7OCHZVF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-YDCS5S3J.mjs.map +0 -7
  598. package/dist/js/chunks/chunk-YMSXJON6.mjs +0 -79
  599. package/dist/js/chunks/chunk-YMSXJON6.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-Z2NRKI7R.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZAS25YFD.mjs.map +0 -7
  602. package/dist/js/chunks/chunk-ZKZKNSLC.mjs +0 -1
  603. /package/dist/js/chunks/{chunk-ZKZKNSLC.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -4,7 +4,7 @@
4
4
  //
5
5
  // Anatomy is the HTML. A <label> wrapping <input type="radio"> is the
6
6
  // control. The label text is a sibling of the input — no extra class, no
7
- // required <span>. input + span still works (legacy).
7
+ // required <span>.
8
8
  //
9
9
  // Tokens follow https://m3.material.io/components/radio-button/specs
10
10
  // icon 20dp ring, 2dp stroke, on-surface-variant
@@ -16,20 +16,16 @@
16
16
  //
17
17
  // .with-gap is a no-op: the selected state is always the ring + inner.
18
18
 
19
+ @mixin _ring($color, $state) {
20
+ @include state-layer-ring(var(--md-comp-radio-button-state-layer-size), var(--md-comp-radio-button-icon-size), $color, $state);
21
+ }
22
+
19
23
  label:has(> [type="radio"]),
20
24
  .radio {
21
25
  --md-comp-radio-button-icon-size: 20px;
22
26
  --md-comp-radio-button-state-layer-size: 40px;
23
27
 
24
- display: flex;
25
- align-items: center;
26
- gap: 12px;
27
- min-height: 48px;
28
- margin: 0;
29
- cursor: pointer;
30
- user-select: none;
31
- color: var(--md-sys-color-on-surface);
32
- @include typescale("body-large");
28
+ @include selection-control-label;
33
29
  }
34
30
 
35
31
  // A row of radios is a group of controls, not navigation - see rule 4 in
@@ -47,9 +43,7 @@ label:has(> [type="radio"]),
47
43
  display: inline-flex;
48
44
  }
49
45
 
50
- // Paint the radio on the input. A following span (legacy) hides this
51
- // control and draws the same anatomy. Nested :has() is invalid, so
52
- // do not write :has(:not(:has(+ span))).
46
+ // Paint the radio on the input.
53
47
  label:has(> [type="radio"]) > [type="radio"],
54
48
  .radio > [type="radio"] {
55
49
  appearance: none;
@@ -63,7 +57,7 @@ label:has(> [type="radio"]) > [type="radio"],
63
57
  border-radius: 50%;
64
58
  background-color: transparent;
65
59
  cursor: pointer;
66
- transition: border-color .2s ease, background-color .2s ease, box-shadow .2s ease;
60
+ transition: border-color var(--md-sys-motion-duration-short4) ease, background-color var(--md-sys-motion-duration-short4) ease, box-shadow var(--md-sys-motion-duration-short4) ease;
67
61
 
68
62
  &:checked {
69
63
  border-color: var(--md-sys-color-primary);
@@ -75,31 +69,15 @@ label:has(> [type="radio"]) > [type="radio"],
75
69
  }
76
70
 
77
71
  &:hover {
78
- @include state-layer-ring(
79
- var(--md-comp-radio-button-state-layer-size),
80
- var(--md-comp-radio-button-icon-size),
81
- var(--md-sys-color-on-surface),
82
- "hover"
83
- );
72
+ @include _ring(var(--md-sys-color-on-surface), "hover");
84
73
  }
85
74
 
86
75
  &:checked:hover {
87
- @include state-layer-ring(
88
- var(--md-comp-radio-button-state-layer-size),
89
- var(--md-comp-radio-button-icon-size),
90
- var(--md-sys-color-primary),
91
- "hover"
92
- );
76
+ @include _ring(var(--md-sys-color-primary), "hover");
93
77
  }
94
78
 
95
- &:focus-visible,
96
- &.tabbed:focus {
97
- @include state-layer-ring(
98
- var(--md-comp-radio-button-state-layer-size),
99
- var(--md-comp-radio-button-icon-size),
100
- var(--md-sys-color-primary),
101
- "focus"
102
- );
79
+ &:focus-visible {
80
+ @include _ring(var(--md-sys-color-primary), "focus");
103
81
  outline: none;
104
82
  }
105
83
 
@@ -117,17 +95,6 @@ label:has(> [type="radio"]) > [type="radio"],
117
95
  transparent 5.5px
118
96
  );
119
97
  }
120
-
121
- &:has(+ span) {
122
- position: absolute;
123
- opacity: 0;
124
- width: 0;
125
- height: 0;
126
- border: 0;
127
- background: none;
128
- box-shadow: none;
129
- pointer-events: none;
130
- }
131
98
  }
132
99
 
133
100
  label:has(> [type="radio"]:disabled),
@@ -136,87 +103,33 @@ label:has(> [type="radio"]:disabled),
136
103
  cursor: default;
137
104
  }
138
105
 
139
- // Legacy: input + span draws the same 20/10 anatomy.
140
- [type="radio"] + span {
141
- position: relative;
142
- display: inline-flex;
143
- align-items: center;
144
- min-height: 48px;
145
- padding-left: 32px;
146
- cursor: pointer;
147
- user-select: none;
148
- }
149
-
150
- [type="radio"] + span::before,
151
- [type="radio"] + span::after {
152
- content: "";
153
- position: absolute;
154
- left: 0;
155
- top: 50%;
156
- box-sizing: border-box;
157
- width: 20px;
158
- height: 20px;
159
- margin-top: -10px;
160
- border-radius: 50%;
161
- }
162
-
163
- [type="radio"] + span::before {
164
- border: 2px solid var(--md-sys-color-on-surface-variant);
165
- transition: border-color .2s ease, box-shadow .2s ease;
166
- }
167
-
168
- [type="radio"] + span::after {
169
- background-color: var(--md-sys-color-primary);
170
- transform: scale(0);
171
- transition: transform .2s ease;
172
- }
173
-
174
- [type="radio"]:checked + span::before {
175
- border-color: var(--md-sys-color-primary);
176
- }
177
-
178
- [type="radio"]:checked + span::after {
179
- transform: scale(0.5);
180
- }
181
-
182
- [type="radio"]:hover + span::before {
183
- @include state-layer-ring(
184
- var(--md-comp-radio-button-state-layer-size),
185
- var(--md-comp-radio-button-icon-size),
186
- var(--md-sys-color-on-surface),
187
- "hover"
188
- );
189
- }
190
-
191
- [type="radio"]:checked:hover + span::before {
192
- @include state-layer-ring(
193
- var(--md-comp-radio-button-state-layer-size),
194
- var(--md-comp-radio-button-icon-size),
195
- var(--md-sys-color-primary),
196
- "hover"
197
- );
198
- }
199
-
200
- [type="radio"]:focus-visible + span::before,
201
- [type="radio"].tabbed:focus + span::before {
202
- @include state-layer-ring(
203
- var(--md-comp-radio-button-state-layer-size),
204
- var(--md-comp-radio-button-icon-size),
205
- var(--md-sys-color-primary),
206
- "focus"
207
- );
208
- }
209
-
210
- [type="radio"]:disabled + span {
211
- color: color-mix(in oklab, var(--md-sys-color-on-surface) 38%, transparent);
212
- cursor: default;
213
- }
214
-
215
- [type="radio"]:disabled + span::before {
216
- border-color: color-mix(in oklab, var(--md-sys-color-on-surface) 38%, transparent);
217
- box-shadow: none;
218
- }
106
+ // Forced colors drop the gradient dot and the box-shadow focus ring.
107
+ @media (forced-colors: active) {
108
+ label:has(> [type="radio"]) > [type="radio"],
109
+ .radio > [type="radio"] {
110
+ &:focus-visible {
111
+ outline: 2px solid CanvasText;
112
+ outline-offset: 2px;
113
+ }
114
+
115
+ &:checked {
116
+ forced-color-adjust: none;
117
+ border-color: Highlight;
118
+ background-image: radial-gradient(circle at center, Highlight 0 5px, transparent 5.5px);
119
+ }
120
+
121
+ &:disabled {
122
+ border-color: GrayText;
123
+ }
124
+
125
+ &:disabled:checked {
126
+ background-image: radial-gradient(circle at center, GrayText 0 5px, transparent 5.5px);
127
+ }
128
+ }
219
129
 
220
- [type="radio"]:disabled:checked + span::after {
221
- background-color: color-mix(in oklab, var(--md-sys-color-on-surface) 38%, transparent);
130
+ // Forced colors repaint the dimmed label as CanvasText, like an enabled one.
131
+ label:has(> [type="radio"]:disabled),
132
+ .radio:has([type="radio"]:disabled) {
133
+ color: GrayText;
134
+ }
222
135
  }
@@ -31,37 +31,7 @@ $_rating-star: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'
31
31
  }
32
32
 
33
33
  fieldset.rating {
34
- display: flex;
35
- flex-wrap: wrap;
36
- align-items: center;
37
- margin: 0;
38
- padding: 0;
39
- border: 0;
40
-
41
- > legend {
42
- margin-block-end: 4px;
43
- padding: 0;
44
- color: var(--md-sys-color-on-surface-variant);
45
- @include typescale("body-medium");
46
- }
47
-
48
- > label {
49
- display: inline-flex;
50
- gap: 0;
51
- min-height: 0;
52
- padding: 4px;
53
- border-radius: 50%;
54
- cursor: pointer;
55
-
56
- &:has(> input:focus-visible) {
57
- @include focus-ring;
58
- }
59
-
60
- &:has(> input:disabled) {
61
- opacity: 0.38;
62
- cursor: default;
63
- }
64
- }
34
+ @include choice-fieldset(50%, "input");
65
35
 
66
36
  > label > [type="radio"] {
67
37
  flex: none;
@@ -74,7 +44,7 @@ fieldset.rating {
74
44
  box-shadow: none;
75
45
  mask: $_rating-star center / 100% no-repeat;
76
46
  outline: 0;
77
- transition: background-color 0.15s ease-out;
47
+ transition: background-color var(--md-sys-motion-duration-short3) ease-out;
78
48
 
79
49
  // The base radio draws its dot in :checked, :hover and the disabled
80
50
  // states, some at a higher weight; the star mask would show it.
@@ -15,7 +15,6 @@
15
15
  // selected item tertiary-container + trailing check
16
16
  // optgroup on-surface-variant, outline-variant rule
17
17
  //
18
- $_select-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
19
18
  $_select-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
20
19
 
21
20
  // Native / no-js / .browser-default: a 56dp field, not a 3rem box.
@@ -26,7 +25,7 @@ select {
26
25
 
27
26
  box-sizing: border-box;
28
27
  width: 100%;
29
- height: 56px;
28
+ height: rem(56px);
30
29
  margin: 0;
31
30
  padding: 16px 12px;
32
31
  border: 1px solid var(--md-sys-color-outline);
@@ -72,30 +71,26 @@ select.browser-default {
72
71
  // open list read as one shape.
73
72
  --md-comp-filled-select-container-shape: 1rem;
74
73
  --md-comp-menu-container-shape: 1rem;
75
- --md-comp-filled-select-trailing-icon-size: 24px;
74
+ --md-comp-filled-select-trailing-icon-size: #{rem(24px)};
76
75
  --md-comp-filled-select-trailing-icon-color: var(--md-sys-color-on-surface-variant);
77
- --md-comp-menu-item-leading-image-size: 40px;
76
+ --md-comp-menu-item-leading-image-size: #{rem(40px)};
78
77
 
79
78
  position: relative;
80
79
  border-radius: var(--md-comp-filled-select-container-shape);
81
80
 
82
81
  > input.menu-trigger {
83
82
  border-radius: inherit;
84
- }
85
-
86
- > input.menu-trigger {
87
- padding-inline-end: 52px;
83
+ padding-inline-end: calc(28px + #{rem(24px)});
88
84
  }
89
85
 
90
86
  // Trailing expand icon. Empty .caret is the hook; the glyph is a mask.
91
- // `left: auto` beats `.field > span { left: 16px }` if that rule ever
92
- // matches again — left + width would otherwise ignore inset-inline-end
93
- // and pin the chevron over the value.
87
+ // `inset-inline-start: auto` beats `.field > span { inset-inline-start:
88
+ // 16px }` if that rule ever matches again — a start inset + width would
89
+ // otherwise ignore inset-inline-end and pin the chevron over the value.
94
90
  .caret {
95
91
  position: absolute;
96
- inset-block-start: 16px;
92
+ inset-block-start: rem(16px);
97
93
  inset-inline-start: auto;
98
- left: auto;
99
94
  inset-inline-end: 12px;
100
95
  z-index: 1;
101
96
  width: var(--md-comp-filled-select-trailing-icon-size);
@@ -103,8 +98,9 @@ select.browser-default {
103
98
  margin: 0;
104
99
  pointer-events: none;
105
100
  background-color: var(--md-comp-filled-select-trailing-icon-color);
106
- mask: $_select-chevron center / 24px no-repeat;
107
- transition: transform 0.2s ease;
101
+ mask: $caret-down center / 100% no-repeat;
102
+ @include forced-colors-fill;
103
+ transition: transform var(--md-sys-motion-duration-short4) ease;
108
104
  }
109
105
 
110
106
  &:has(> input[aria-expanded="true"]) .caret,
@@ -147,15 +143,15 @@ select.browser-default {
147
143
  transform: none;
148
144
  margin: 0;
149
145
  padding: 8px 16px 0;
150
- padding-inline-end: 52px;
146
+ padding-inline-end: calc(28px + #{rem(24px)});
151
147
  overflow-wrap: anywhere;
152
148
  pointer-events: auto;
153
149
  @include typescale("body-small");
154
150
  line-height: normal;
155
151
  }
156
152
 
157
- &:has(> i:first-of-type:not(.suffix):not(:last-child), > i.prefix, > .prefix) > label {
158
- padding-left: 52px;
153
+ &:has(> .prefix) > label {
154
+ padding-inline-start: calc(28px + #{rem(24px)});
159
155
  }
160
156
 
161
157
  &.disabled > label {
@@ -167,6 +163,8 @@ select.browser-default {
167
163
  height: auto;
168
164
  min-height: calc(var(--md-sys-typescale-body-large-line-height) + 8px);
169
165
  padding-block: 0 7px;
166
+ // Narrower than its value at large text sizes; the menu shows it whole.
167
+ text-overflow: ellipsis;
170
168
  border-start-start-radius: 0;
171
169
  border-start-end-radius: 0;
172
170
  }
@@ -202,19 +200,20 @@ menu[role="listbox"] > li:not(.optgroup, .divider) {
202
200
  menu[role="listbox"] > li.selected:not(.disabled, .optgroup) {
203
201
  background-color: var(--md-comp-menu-item-selected-container-color, var(--md-sys-color-tertiary-container));
204
202
  color: var(--md-comp-menu-item-selected-label-text-color, var(--md-sys-color-on-tertiary-container));
205
- border-radius: var(--md-comp-menu-item-selected-container-shape, 12px);
203
+ border-radius: var(--md-comp-menu-item-selected-container-shape, var(--md-sys-shape-corner-medium));
206
204
  }
207
205
 
208
206
  // Single-select: trailing check. Multi-select already has a leading checkbox.
209
207
  menu[role="listbox"]:not(.multiple-select-menu) > li.selected:not(.disabled, .optgroup)::after {
210
208
  content: "";
211
209
  flex: 0 0 20px;
212
- width: 20px;
213
- height: 20px;
210
+ width: rem(20px);
211
+ height: rem(20px);
214
212
  margin-inline-start: auto;
215
213
  margin-inline-end: 8px;
216
214
  background-color: var(--md-comp-menu-item-selected-leading-icon-color, var(--md-sys-color-on-tertiary-container));
217
- mask: $_select-check center / 20px no-repeat;
215
+ mask: $_select-check center / 100% no-repeat;
216
+ @include forced-colors-fill;
218
217
  }
219
218
 
220
219
  menu[role="listbox"] li img {
@@ -224,7 +223,7 @@ menu[role="listbox"] li img {
224
223
  height: var(--md-comp-menu-item-leading-image-size);
225
224
  margin: 4px 12px;
226
225
  object-fit: cover;
227
- border-radius: 4px;
226
+ border-radius: var(--md-sys-shape-corner-extra-small);
228
227
  order: 1;
229
228
  margin-inline-start: auto;
230
229
 
@@ -252,8 +251,185 @@ menu[role="listbox"] li.optgroup-option {
252
251
  padding-inline-start: 1rem;
253
252
  }
254
253
 
254
+ .select-search-popup {
255
+ position: absolute;
256
+ inset: auto;
257
+ margin: 0;
258
+ padding: 8px;
259
+ max-height: min(24rem, calc(100dvh - 2rem));
260
+ overflow: hidden;
261
+ border-radius: var(--md-sys-shape-corner-large);
262
+ background: var(--md-sys-color-surface-container-low);
263
+ color: var(--md-sys-color-on-surface);
264
+ @include z-depth("2");
265
+
266
+ &:popover-open { display: flex; flex-direction: column; }
267
+
268
+ > input {
269
+ flex: none;
270
+ box-sizing: border-box;
271
+ width: 100%;
272
+ min-height: rem(48px);
273
+ padding: 8px;
274
+ border: 1px solid var(--md-sys-color-outline);
275
+ border-radius: var(--md-sys-shape-corner-small);
276
+ @include typescale("body-large");
277
+
278
+ &:focus-visible {
279
+ outline: 2px solid var(--md-sys-color-primary);
280
+ outline-offset: -2px;
281
+ }
282
+ }
283
+
284
+ > [role="status"] {
285
+ flex: none;
286
+ overflow-wrap: anywhere;
287
+ @include typescale("body-medium");
288
+ }
289
+
290
+ > menu {
291
+ display: block;
292
+ position: static;
293
+ flex: 1;
294
+ min-height: 0;
295
+ margin: 0;
296
+ padding: 0;
297
+ opacity: 1;
298
+ box-shadow: none;
299
+ background: transparent;
300
+ }
301
+
302
+ > menu > li[hidden] { display: none; }
303
+
304
+ > ul[role="tree"] {
305
+ flex: 1;
306
+ min-height: 0;
307
+ overflow: auto;
308
+ }
309
+ }
310
+
311
+ @media (prefers-reduced-motion: reduce) {
312
+ .select-search-popup { transition: none !important; }
313
+ }
314
+
315
+ // Tree select. TreeSelect puts a ul[role="tree"] inside the Menu surface,
316
+ // one list below the rows Menu styles, and nests each branch's rows in a
317
+ // ul[role="group"] inside its treeitem. The row is the treeitem's label span:
318
+ // painting the <li> would fill the branch's whole subtree. A branch row leads
319
+ // with the chevron .tree uses, a leaf lines its text up after it, and each
320
+ // level hangs a guide line from its parent's chevron, as in .tree.
321
+ ul[role="tree"] {
322
+ margin: 0;
323
+ padding: 0;
324
+ list-style: none;
325
+
326
+ ul[role="group"] {
327
+ margin: 0;
328
+ margin-inline-start: calc(var(--md-comp-menu-item-leading-space) + 10px);
329
+ padding: 0;
330
+ padding-inline-start: 4px;
331
+ border-inline-start: 1px solid var(--md-sys-color-outline-variant);
332
+ list-style: none;
333
+ }
334
+
335
+ li[role="treeitem"] {
336
+ display: block;
337
+ margin: 0;
338
+ padding: 0;
339
+ cursor: pointer;
340
+ outline: none;
341
+
342
+ &[hidden] { display: none; }
343
+
344
+ > span {
345
+ display: flex;
346
+ align-items: center;
347
+ gap: 8px;
348
+ box-sizing: border-box;
349
+ min-height: var(--md-comp-menu-item-container-height);
350
+ padding-block: 8px;
351
+ padding-inline: calc(var(--md-comp-menu-item-leading-space) + 28px) var(--md-comp-menu-item-trailing-space);
352
+ border-radius: var(--md-comp-menu-item-container-shape);
353
+ color: var(--md-comp-menu-item-label-text-color);
354
+ @include typescale("label-large");
355
+ }
356
+
357
+ > span:hover {
358
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "hover");
359
+ }
360
+
361
+ &:focus-visible > span {
362
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "focus");
363
+
364
+ // Forced colors drop the focus fill, and the row has no outline of its own.
365
+ @media (forced-colors: active) {
366
+ outline: 2px solid CanvasText;
367
+ outline-offset: -2px;
368
+ }
369
+ }
370
+
371
+ &[aria-expanded] > span {
372
+ padding-inline-start: var(--md-comp-menu-item-leading-space);
373
+
374
+ &::before {
375
+ @include tree-chevron;
376
+ @include forced-colors-fill;
377
+ }
378
+ }
379
+
380
+ // A closed branch points to the end edge, which is the left in RTL.
381
+ &[aria-expanded="false"]:dir(rtl) > span::before {
382
+ transform: rotate(90deg);
383
+ }
384
+
385
+ &[aria-expanded="true"] > span::before {
386
+ transform: none;
387
+ }
388
+
389
+ &[aria-selected="true"] > span {
390
+ background-color: var(--md-comp-menu-item-selected-container-color);
391
+ color: var(--md-comp-menu-item-selected-label-text-color);
392
+ @include forced-colors-selected;
393
+ }
394
+
395
+ // The chosen row is where the popup opens, so it shows focus too: the
396
+ // focus layer over the selected fill. In forced colors its Highlight
397
+ // outline takes the label's own outline, so focus rings the row itself;
398
+ // a chosen row is always a leaf, whose <li> is just its label.
399
+ &[aria-selected="true"]:focus-visible {
400
+ > span {
401
+ background-color: state-layer(
402
+ var(--md-comp-menu-item-selected-label-text-color),
403
+ "focus",
404
+ var(--md-comp-menu-item-selected-container-color)
405
+ );
406
+ }
407
+
408
+ @media (forced-colors: active) {
409
+ outline: 2px solid CanvasText;
410
+ }
411
+ }
412
+
413
+ // A disabled row takes no clicks: they reach its group, and TreeSelect
414
+ // ignores a click that lands on no row's label.
415
+ &.disabled {
416
+ cursor: default;
417
+ pointer-events: none;
418
+
419
+ > span {
420
+ background: none;
421
+ color: color-mix(in oklab, var(--md-sys-color-on-surface) 38%, transparent);
422
+ }
423
+ }
424
+ }
425
+ }
426
+
255
427
  @media (prefers-reduced-motion: reduce) {
256
428
  .field:has(> .hide-select) .caret {
257
429
  transition: none;
258
430
  }
431
+
432
+ ul[role="tree"] li[role="treeitem"] > span::before {
433
+ transition: none;
434
+ }
259
435
  }