@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
@@ -84,17 +84,17 @@
84
84
  text-decoration: none;
85
85
  cursor: pointer;
86
86
  -webkit-tap-highlight-color: transparent;
87
- transition: background-color 0.2s ease-out;
87
+ transition: background-color var(--md-sys-motion-duration-short4) ease-out;
88
88
  @include focus-visible;
89
89
 
90
90
  &:hover {
91
- background-color: color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
91
+ background-color: state-layer(var(--md-sys-color-on-surface), "hover");
92
92
  }
93
93
 
94
94
  // The pressed layer is the only feedback a touch tap gets: hover never
95
95
  // fires there and the tap highlight is suppressed above.
96
96
  &:active {
97
- background-color: color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("pressed"), transparent);
97
+ background-color: state-layer(var(--md-sys-color-on-surface), "pressed");
98
98
  }
99
99
 
100
100
  // "Does this control carry a text label?" - the icon is a <span>, so a
@@ -116,21 +116,14 @@
116
116
  li:has(> [aria-current="page"]) > :is(a, button) {
117
117
  background-color: var(--md-comp-pagination-selected-color);
118
118
  color: var(--md-comp-pagination-selected-on-color);
119
+ @include forced-colors-selected;
119
120
 
120
121
  &:hover {
121
- background-color: color-mix(
122
- in oklab,
123
- var(--md-comp-pagination-selected-on-color) state-opacity("hover"),
124
- var(--md-comp-pagination-selected-color)
125
- );
122
+ background-color: state-layer(var(--md-comp-pagination-selected-on-color), "hover", var(--md-comp-pagination-selected-color));
126
123
  }
127
124
 
128
125
  &:active {
129
- background-color: color-mix(
130
- in oklab,
131
- var(--md-comp-pagination-selected-on-color) state-opacity("pressed"),
132
- var(--md-comp-pagination-selected-color)
133
- );
126
+ background-color: state-layer(var(--md-comp-pagination-selected-on-color), "pressed", var(--md-comp-pagination-selected-color));
134
127
  }
135
128
  }
136
129
 
@@ -150,6 +150,35 @@
150
150
  --_pane-wide-columns: var(--md-comp-pane-list-width) 1fr var(--md-comp-pane-supporting-width);
151
151
  }
152
152
 
153
+ // ---------------------------------------------------------------------------
154
+ // Resizable panes
155
+ // ---------------------------------------------------------------------------
156
+ // A <button class="drag-handle"> between the two panes of a list-detail or
157
+ // supporting layout takes the spacer's place as its own column, and the
158
+ // PaneResize behavior writes the list or supporting width token as it moves.
159
+ // Below 840px only one pane shows, so the handle hides with the others.
160
+ // Equal and three-pane layouts have no width token to move, so they keep
161
+ // their own columns.
162
+ :is(.panes, .pane-layout, .list-detail, .supporting-pane-layout):not(.equal, .three-pane):has(> button.drag-handle) {
163
+ --_pane-expanded-columns: var(--md-comp-pane-list-width) auto minmax(0, 1fr);
164
+ column-gap: 0;
165
+
166
+ > button.drag-handle {
167
+ display: var(--_pane-display);
168
+ align-self: center;
169
+ cursor: col-resize;
170
+ touch-action: none;
171
+ }
172
+ }
173
+
174
+ :is(.panes.supporting, .supporting-pane-layout):has(> button.drag-handle) {
175
+ --_pane-expanded-columns: minmax(0, 1fr) auto var(--md-comp-pane-supporting-width);
176
+
177
+ &:is(.start, .left) {
178
+ --_pane-expanded-columns: var(--md-comp-pane-supporting-width) auto minmax(0, 1fr);
179
+ }
180
+ }
181
+
153
182
  // ---------------------------------------------------------------------------
154
183
  // Separated / Floating Appearance
155
184
  // ---------------------------------------------------------------------------
@@ -157,7 +186,7 @@
157
186
  .panes.floating,
158
187
  .pane-layout.separated,
159
188
  .pane-layout.floating {
160
- --md-comp-pane-container-shape: 16px;
189
+ --md-comp-pane-container-shape: var(--md-sys-shape-corner-large);
161
190
  --md-comp-pane-container-color: transparent;
162
191
  gap: var(--md-comp-pane-gap);
163
192
  padding: var(--md-comp-pane-gap);
@@ -169,7 +198,6 @@
169
198
  @include z-depth("0");
170
199
 
171
200
  &.elevated {
172
- background-color: var(--md-sys-color-surface-container-low);
173
201
  @include z-depth("1");
174
202
  }
175
203
 
@@ -184,7 +212,7 @@
184
212
  // Coplanar / Docked Dividers (Default)
185
213
  // ---------------------------------------------------------------------------
186
214
  :is(.panes, .pane-layout, .list-detail, .supporting-pane-layout):not(.separated, .floating) {
187
- > :is(.pane, .list-pane, .primary-pane, .detail-pane, .supporting-pane):not(:last-child) {
215
+ > :is(.pane, .list-pane, .primary-pane, .detail-pane, .supporting-pane):not(:last-child, :has(+ button.drag-handle)) {
188
216
  border-inline-end: var(--_pane-divider) solid var(--md-comp-pane-divider-color);
189
217
  }
190
218
  }
@@ -232,33 +260,7 @@
232
260
  // See _dialog: `:only-child` cannot see a text-node label, so `.button`
233
261
  // is the opt-out for an icon action that also carries one.
234
262
  > :is(button:not(.button, .icon-button), a.button):has(> #{$icon}:only-child) {
235
- flex: 0 0 48px;
236
- box-sizing: border-box;
237
- width: 48px;
238
- height: 48px;
239
- min-width: 48px;
240
- padding: 0;
241
- border: none;
242
- border-radius: 50%;
243
- background-color: transparent;
244
- color: var(--md-sys-color-on-surface-variant);
245
- box-shadow: none;
246
-
247
- > #{$icon} {
248
- font-size: 24px;
249
- width: 24px;
250
- height: 24px;
251
- line-height: 24px;
252
- }
253
-
254
- &:hover {
255
- background-color: color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
256
- }
257
-
258
- &:focus-visible {
259
- outline: 3px solid var(--md-sys-color-secondary);
260
- outline-offset: 2px;
261
- }
263
+ @include header-icon-action;
262
264
  }
263
265
  }
264
266
 
@@ -281,7 +283,7 @@
281
283
  }
282
284
 
283
285
  // Footer / Action Bar
284
- > footer:not(:has(> nav:only-child)),
286
+ > footer:not(:has(> .navigation-bar:only-child)),
285
287
  > :is(footer, .pane-footer, nav:last-child) {
286
288
  display: flex;
287
289
  flex-wrap: wrap;
@@ -1,5 +1,3 @@
1
- @use "../abstracts" as *;
2
-
3
1
  // Particles. A <canvas class="particles"> covers its nearest positioned
4
2
  // ancestor and lets clicks through to what is under it. The Particles script
5
3
  // paints the dots in the canvas's `color`.
@@ -12,39 +12,50 @@
12
12
  // --turn PieChart sets, a fraction of a turn clockwise from the top.
13
13
  //
14
14
  // Modifiers: .donut cuts a hole and shows a <tfoot> total in it, .values
15
- // writes each slice's share on it, .sparkline is a small pie with no
16
- // legend or tooltip.
15
+ // writes each slice's share on it, .labels writes each slice's name
16
+ // outside it with a leader line, .sparkline is a small pie with no
17
+ // legend, tooltip or names.
17
18
  //
18
19
  // Tokens:
19
20
  // --md-comp-pie-chart-height 240px, the pie's diameter (sparkline 48px)
20
21
  // --md-comp-pie-chart-hole 0.6, the donut hole's share of the diameter
22
+ // --md-comp-pie-chart-label-width 96px, the room each side of the pie for
23
+ // .labels, at most a quarter of the figure
21
24
  // --md-comp-pie-chart-gap 1.5, the gap between slices in hundredths
22
25
  // of the plot's width
23
26
  // --md-comp-pie-chart-color-1..6 primary, tertiary, secondary,
24
- // on-surface-variant, primary-container,
25
- // tertiary-container
27
+ // on-surface-variant, then primary- and
28
+ // tertiary-container deepened toward
29
+ // on-surface
26
30
  // --md-comp-pie-chart-on-color-1..6 on-primary, on-tertiary, on-secondary,
27
- // surface, on-primary-container,
28
- // on-tertiary-container; .values text
31
+ // surface, surface, surface; .values text
29
32
 
30
33
  @include chart("pie-chart");
31
34
 
32
35
  .pie-chart {
33
36
  --md-comp-pie-chart-hole: 0.6;
34
37
  --md-comp-pie-chart-gap: 1.5;
35
- --md-comp-pie-chart-color-5: var(--md-sys-color-primary-container);
36
- --md-comp-pie-chart-color-6: var(--md-sys-color-tertiary-container);
38
+ // The container roles alone are 1.3:1 on the surface in light mode and
39
+ // 2:1 in dark. Mixed 45% with on-surface, they keep their hue and reach
40
+ // 5:1 and 6.8:1, past the 3:1 a slice needs (WCAG 1.4.11), and surface
41
+ // text on them passes too.
42
+ --md-comp-pie-chart-color-5: color-mix(in oklab, var(--md-sys-color-primary-container) 45%, var(--md-sys-color-on-surface));
43
+ --md-comp-pie-chart-color-6: color-mix(in oklab, var(--md-sys-color-tertiary-container) 45%, var(--md-sys-color-on-surface));
37
44
  --md-comp-pie-chart-on-color-1: var(--md-sys-color-on-primary);
38
45
  --md-comp-pie-chart-on-color-2: var(--md-sys-color-on-tertiary);
39
46
  --md-comp-pie-chart-on-color-3: var(--md-sys-color-on-secondary);
40
47
  --md-comp-pie-chart-on-color-4: var(--md-sys-color-surface);
41
- --md-comp-pie-chart-on-color-5: var(--md-sys-color-on-primary-container);
42
- --md-comp-pie-chart-on-color-6: var(--md-sys-color-on-tertiary-container);
48
+ --md-comp-pie-chart-on-color-5: var(--md-sys-color-surface);
49
+ --md-comp-pie-chart-on-color-6: var(--md-sys-color-surface);
43
50
  // Where labels and the tooltip sit, as a share of the radius.
44
51
  --pie-chart-label-at: 0.62;
45
52
 
46
53
  gap: 16px;
47
54
 
55
+ &.labels {
56
+ --md-comp-pie-chart-label-width: #{rem(96px)};
57
+ }
58
+
48
59
  &.donut {
49
60
  // The middle of the ring.
50
61
  --pie-chart-label-at: calc((1 + var(--md-comp-pie-chart-hole)) / 2);
@@ -101,7 +112,7 @@
101
112
  }
102
113
 
103
114
  @media (prefers-reduced-motion: no-preference) {
104
- transition: transform 200ms cubic-bezier(0.2, 0, 0, 1), opacity 400ms cubic-bezier(0.2, 0, 0, 1);
115
+ transition: transform var(--md-sys-motion-duration-short4) var(--md-sys-motion-easing-standard), opacity var(--md-sys-motion-duration-medium4) var(--md-sys-motion-easing-standard);
105
116
 
106
117
  @starting-style {
107
118
  opacity: 0;
@@ -127,6 +138,75 @@
127
138
  white-space: nowrap;
128
139
  }
129
140
 
141
+ .pie-chart.labels:not(.sparkline) .pie-chart-plot {
142
+ // A narrow figure keeps at least half its width for the pie.
143
+ width: min(100% - 2 * min(var(--md-comp-pie-chart-label-width), 25%), var(--md-comp-pie-chart-height));
144
+ margin-block: 24px;
145
+ }
146
+
147
+ // One unit of the names' places is 1cqw, a hundredth of the pie, so the
148
+ // leader lines can measure from it as well as the names.
149
+ .pie-chart.labels .pie-chart-pie {
150
+ container-type: size;
151
+ }
152
+
153
+ // PieChart sets each name's --pie-chart-name-top, pushed apart from its
154
+ // neighbours.
155
+ .pie-chart-names > span {
156
+ // The middle of the name's near edge, 8px past the grown active slice.
157
+ --pie-chart-name-at: calc(50cqw + 8px);
158
+ --pie-chart-name-step: 1.25lh;
159
+ --pie-chart-angle: calc(var(--turn, 0) * 1turn);
160
+ // 1 for a name running rightwards, -1 for one running leftwards.
161
+ --pie-chart-side: 1;
162
+
163
+ position: absolute;
164
+ left: calc(50cqw + sin(var(--pie-chart-angle)) * var(--pie-chart-name-at));
165
+ top: var(--pie-chart-name-top, 50cqw);
166
+ translate: 0 -50%;
167
+ color: var(--md-sys-color-on-surface-variant);
168
+ @include typescale("label-medium");
169
+ white-space: nowrap;
170
+
171
+ &.end {
172
+ --pie-chart-side: -1;
173
+
174
+ translate: -100% -50%;
175
+ }
176
+
177
+ // No wider than the room beside the pie, which is at least half the pie's
178
+ // width when the plot rule above caps it at a quarter of the figure.
179
+ > span {
180
+ display: block;
181
+ max-width: calc(min(var(--md-comp-pie-chart-label-width), 50cqw) - 8px);
182
+ overflow: hidden;
183
+ text-overflow: ellipsis;
184
+ }
185
+
186
+ // The leader line runs from 4px before the name to the slice's edge on its
187
+ // middle, so a name pushed up or down still points at its slice. The drop
188
+ // is how far the name sits below that edge; it adds the top because
189
+ // Chromium gets x - max(…) wrong when max() has one argument.
190
+ &::before {
191
+ --pie-chart-dx: calc(sin(var(--pie-chart-angle)) * (46cqw - var(--pie-chart-name-at)) + var(--pie-chart-side) * 4px);
192
+ --pie-chart-drop: calc(var(--pie-chart-name-top, 50cqw) + cos(var(--pie-chart-angle)) * 46cqw - 50cqw);
193
+
194
+ content: "";
195
+ position: absolute;
196
+ top: calc(50% - 0.5px);
197
+ left: -4px;
198
+ width: hypot(var(--pie-chart-dx), var(--pie-chart-drop));
199
+ height: 1px;
200
+ transform-origin: 0 50%;
201
+ rotate: calc(-1 * atan2(var(--pie-chart-drop), var(--pie-chart-dx)));
202
+ background: var(--md-sys-color-outline-variant);
203
+ }
204
+
205
+ &.end::before {
206
+ left: calc(100% + 4px);
207
+ }
208
+ }
209
+
130
210
  .pie-chart-tooltip {
131
211
  translate: 12px -50%;
132
212
 
@@ -10,7 +10,8 @@
10
10
  // press, stays open while the user reads or acts, and can hold links and
11
11
  // buttons. A small one behind an info button is a toggletip.
12
12
  //
13
- // Placement (the panel flips to the other side when it would not fit):
13
+ // Placement (the panel flips to the other side when it would not fit, and
14
+ // is centered in the viewport where anchor positioning is missing):
14
15
  // (default) below, start edges aligned
15
16
  // .top above, start edges aligned
16
17
  // .start before the button, centered on it
@@ -25,7 +26,7 @@
25
26
 
26
27
  .popover {
27
28
  --md-comp-popover-container-color: var(--md-sys-color-surface-container);
28
- --md-comp-popover-shape: 12px;
29
+ --md-comp-popover-shape: var(--md-sys-shape-corner-medium);
29
30
  --md-comp-popover-padding: 12px 16px;
30
31
  --md-comp-popover-max-width: 320px;
31
32
  --md-comp-popover-gap: 4px;
@@ -49,9 +50,9 @@
49
50
 
50
51
  opacity: 0;
51
52
  transition:
52
- opacity 150ms ease-out,
53
- display 150ms allow-discrete,
54
- overlay 150ms allow-discrete;
53
+ opacity var(--md-sys-motion-duration-short3) ease-out,
54
+ display var(--md-sys-motion-duration-short3) allow-discrete,
55
+ overlay var(--md-sys-motion-duration-short3) allow-discrete;
55
56
  @include glass(var(--md-comp-popover-container-color));
56
57
 
57
58
  &:popover-open {
@@ -110,3 +111,15 @@
110
111
  border: 1px solid CanvasText;
111
112
  }
112
113
  }
114
+
115
+ // Without anchor positioning the browser ignores position-area, and the
116
+ // panel would sit in the viewport's top-left corner, far from its button.
117
+ // Centered instead, as a native popover is, it stays in view. :is() matches
118
+ // .start and .end too, which set their own margin.
119
+ @supports not (anchor-name: --a) {
120
+ .popover:is(*, .start, .end) {
121
+ inset: 0;
122
+ height: fit-content;
123
+ margin: auto;
124
+ }
125
+ }
@@ -1,31 +1,39 @@
1
+ @use "sass:math";
1
2
  @use "../abstracts" as *;
2
3
 
3
4
  // Progress. Anatomy is the HTML:
4
5
  // <progress class="progress" value="70" max="100"> determinate bar
5
6
  // <progress class="progress"> indeterminate bar
6
- // <span class="preloader" role="status"> circular spinner
7
+ // <span class="progress circular" role="status"> circular spinner
7
8
  //
8
9
  // Linear aliases: .progress > .determinate / .indeterminate, and
9
10
  // --md-comp-progress-value on a bare div.progress.
10
11
  //
12
+ // Linear modifiers, from M3 Expressive: .stop puts a dot in the indicator
13
+ // colour at the track's end, so the end still reads where the track's own
14
+ // contrast falls short; .wavy draws the indicator as a wave over a thin
15
+ // track. A circular indicator takes .wavy too.
16
+ //
11
17
  // Tokens:
12
18
  // --md-comp-progress-track
13
19
  // --md-comp-progress-indicator
14
20
  // --md-comp-progress-thickness 4px
15
21
  // --md-comp-progress-shape 4px
16
22
  // --md-comp-progress-value determinate fill (optional)
23
+ // --md-comp-progress-stop-size 4px, the .stop dot
24
+ // --md-comp-progress-wavelength 40px, the .wavy indicator's wavelength
17
25
  // --md-comp-progress-circular-size 48px
18
26
  // --md-comp-progress-circular-thickness 4px
19
27
 
20
28
  // M3 names this component "Progress indicators", linear and circular. The
21
- // class is `.progress`; `.preloader` is the older name for the circular
22
- // one and stays as an alias, as does `.progress.circular`.
23
- .progress,
24
- .preloader {
29
+ // class is `.progress`, and `.progress.circular` is the circular one.
30
+ .progress {
25
31
  --md-comp-progress-track: var(--md-sys-color-secondary-container);
26
32
  --md-comp-progress-indicator: var(--md-sys-color-primary);
27
33
  --md-comp-progress-thickness: 4px;
28
- --md-comp-progress-shape: 4px;
34
+ --md-comp-progress-shape: var(--md-sys-shape-corner-extra-small);
35
+ --md-comp-progress-stop-size: 4px;
36
+ --md-comp-progress-wavelength: 40px;
29
37
  --md-comp-progress-circular-size: 48px;
30
38
  --md-comp-progress-circular-thickness: 4px;
31
39
  }
@@ -44,9 +52,10 @@
44
52
  overflow: hidden;
45
53
  border: 0;
46
54
  border-radius: var(--md-comp-progress-shape);
47
- background-color: var(--md-comp-progress-track);
55
+ // The track, under the .stop dot when there is one. .wavy narrows the track
56
+ // to a stripe; the layers are custom properties so the two combine.
57
+ background: var(--_progress-stop, none), var(--_progress-track, var(--md-comp-progress-track));
48
58
  appearance: none;
49
- -webkit-appearance: none;
50
59
  }
51
60
 
52
61
  .progress:not(.circular) {
@@ -57,7 +66,7 @@ progress.progress {
57
66
  vertical-align: baseline;
58
67
 
59
68
  &::-webkit-progress-bar {
60
- background-color: var(--md-comp-progress-track);
69
+ background: var(--_progress-stop, none), var(--_progress-track, var(--md-comp-progress-track));
61
70
  border-radius: var(--md-comp-progress-shape);
62
71
  }
63
72
 
@@ -84,6 +93,47 @@ progress.progress {
84
93
  }
85
94
  }
86
95
 
96
+ // The end stop, at the inline end of the track.
97
+ .progress.stop:not(.circular) {
98
+ --_progress-stop-at: calc(100% - var(--md-comp-progress-thickness) / 2);
99
+ --_progress-stop: radial-gradient(
100
+ circle at var(--_progress-stop-at) 50%,
101
+ var(--md-comp-progress-indicator) calc(var(--md-comp-progress-stop-size) / 2),
102
+ transparent calc(var(--md-comp-progress-stop-size) / 2 + 0.5px)
103
+ ) no-repeat;
104
+
105
+ &:dir(rtl) {
106
+ --_progress-stop-at: calc(var(--md-comp-progress-thickness) / 2);
107
+ }
108
+ }
109
+
110
+ // The wavy indicator: a 4px wave, 3px either side of the track's middle,
111
+ // drawn by masking the indicator with one wavelength repeated along it.
112
+ $_wave: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='14'%3E%3Cpath d='M0 7C6.67 3 13.33 3 20 7S33.33 11 40 7' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E");
113
+
114
+ .progress.wavy:not(.circular) {
115
+ --_progress-track: linear-gradient(var(--md-comp-progress-track) 0 0) center / 100% var(--md-comp-progress-thickness) no-repeat;
116
+ --_progress-wave: #{$_wave} repeat-x 0 50% / var(--md-comp-progress-wavelength) 14px;
117
+
118
+ height: 14px;
119
+ border-radius: 0;
120
+ }
121
+
122
+ .progress.wavy:not(.circular) > .determinate,
123
+ .progress.wavy:not(.circular) > .indeterminate::before,
124
+ .progress.wavy:not(.circular) > .indeterminate::after,
125
+ progress.progress.wavy::-webkit-progress-value,
126
+ progress.progress.wavy:indeterminate::before,
127
+ progress.progress.wavy:indeterminate::after {
128
+ mask: var(--_progress-wave);
129
+ }
130
+
131
+ // Firefox's own pseudo-element, kept out of the list above: Chromium drops a
132
+ // list naming a pseudo-element it does not know.
133
+ progress.progress.wavy::-moz-progress-bar {
134
+ mask: var(--_progress-wave);
135
+ }
136
+
87
137
  @keyframes progress-indeterminate-moz {
88
138
  from { margin-inline-start: -40%; margin-inline-end: 100%; }
89
139
  to { margin-inline-start: 100%; margin-inline-end: -40%; }
@@ -95,14 +145,16 @@ progress.progress {
95
145
  inset-inline: 0 auto;
96
146
  width: var(--md-comp-progress-value, 0%);
97
147
  background-color: var(--md-comp-progress-indicator);
98
- transition: width 0.3s linear;
148
+ transition: width var(--md-sys-motion-duration-medium2) linear;
99
149
  }
100
150
 
101
151
  // Bare div.progress with a value token, no child. :not(.circular) because a
102
152
  // `<span class="progress circular">` is not a <progress>, has no determinate
103
153
  // child, and so matched this too - drawing a linear fill on top of the conic
104
154
  // circular indicator.
105
- .progress:not(:is(progress)):not(.circular):not(:has(> .determinate, > .indeterminate)) {
155
+ $_bare: ".progress:not(:is(progress)):not(.circular):not(:has(> .determinate, > .indeterminate))";
156
+
157
+ #{$_bare} {
106
158
  &::after {
107
159
  content: "";
108
160
  position: absolute;
@@ -110,7 +162,7 @@ progress.progress {
110
162
  inset-inline: 0 auto;
111
163
  width: var(--md-comp-progress-value, 0%);
112
164
  background-color: var(--md-comp-progress-indicator);
113
- transition: width 0.3s linear;
165
+ transition: width var(--md-sys-motion-duration-medium2) linear;
114
166
  }
115
167
 
116
168
  &:not([style*="--md-comp-progress-value"])::after {
@@ -119,6 +171,10 @@ progress.progress {
119
171
  }
120
172
  }
121
173
 
174
+ #{$_bare}.wavy::after {
175
+ mask: var(--_progress-wave);
176
+ }
177
+
122
178
  .progress > .indeterminate {
123
179
  background-color: transparent;
124
180
  }
@@ -160,9 +216,8 @@ progress.progress:indeterminate {
160
216
  // Circular — one element
161
217
  // ---------------------------------------------------------------------------
162
218
 
163
- // The circular indicator. `.progress.circular` is the M3-aligned name;
164
- // `.preloader` remains a compatibility alias.
165
- :is(.preloader, .progress.circular) {
219
+ // The circular indicator.
220
+ .progress.circular {
166
221
  box-sizing: border-box;
167
222
  display: inline-block;
168
223
  width: var(--md-comp-progress-circular-size);
@@ -178,11 +233,6 @@ progress.progress:indeterminate {
178
233
  transparent calc(100% - var(--md-comp-progress-circular-thickness)),
179
234
  #000 0
180
235
  );
181
- -webkit-mask: radial-gradient(
182
- farthest-side,
183
- transparent calc(100% - var(--md-comp-progress-circular-thickness)),
184
- #000 0
185
- );
186
236
  animation: preloader-rotate 1.4s linear infinite;
187
237
  vertical-align: middle;
188
238
 
@@ -200,13 +250,66 @@ progress.progress:indeterminate {
200
250
  }
201
251
  }
202
252
 
253
+ // Wavy circular: the indicator is a wave round the ring, 10 waves of 1.5
254
+ // units in a 48-unit box, over a thin plain track. The element draws
255
+ // nothing itself; ::before is the indicator and ::after the determinate
256
+ // track, each masked to its own ring.
257
+ @function _wave-ring($waves: 10, $amplitude: 1.5, $radius: 20, $steps: 80) {
258
+ $path: "";
259
+ @for $i from 0 through $steps {
260
+ $angle: math.div($i, $steps) * 2 * math.$pi;
261
+ $r: $radius + $amplitude * math.sin($waves * $angle);
262
+ $x: math.div(math.round((24 + $r * math.cos($angle)) * 10), 10);
263
+ $y: math.div(math.round((24 + $r * math.sin($angle)) * 10), 10);
264
+ $command: "L";
265
+ @if $i == 0 {
266
+ $command: "M";
267
+ }
268
+ $path: "#{$path}#{$command}#{$x} #{$y}";
269
+ }
270
+ @return url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 48 48'%3E%3Cpath d='#{$path}Z' fill='none' stroke='%23000' stroke-width='4' stroke-linejoin='round'/%3E%3C/svg%3E");
271
+ }
272
+
273
+ .progress.circular.wavy {
274
+ position: relative;
275
+ // The pseudo-elements carry their own masks; a rounded clip as well
276
+ // leaves a hairline at the edge in WebKit.
277
+ overflow: visible;
278
+ background: none;
279
+ mask: none;
280
+
281
+ &::before,
282
+ &::after {
283
+ content: "";
284
+ position: absolute;
285
+ inset: 0;
286
+ }
287
+
288
+ &::before {
289
+ background: conic-gradient(var(--md-comp-progress-indicator) 0 90deg, transparent 0);
290
+ mask: _wave-ring() center / 100% 100% no-repeat;
291
+ }
292
+
293
+ &.determinate::before {
294
+ background: conic-gradient(var(--md-comp-progress-indicator) 0 var(--md-comp-progress-value, 0%), transparent 0);
295
+ }
296
+
297
+ // The track: a 2-unit ring through the middle of the wave, after the fill.
298
+ &.determinate::after {
299
+ background: conic-gradient(
300
+ transparent 0 var(--md-comp-progress-value, 0%),
301
+ color-mix(in oklab, var(--md-comp-progress-indicator) 20%, transparent) 0
302
+ );
303
+ mask: radial-gradient(farthest-side, transparent 79%, #000 79.5% 87%, transparent 87.5% 100%);
304
+ }
305
+ }
306
+
203
307
  @keyframes preloader-rotate {
204
308
  to { transform: rotate(1turn); }
205
309
  }
206
310
 
207
311
  @media (forced-colors: active) {
208
- .progress,
209
- .preloader {
312
+ .progress {
210
313
  forced-color-adjust: none;
211
314
  }
212
315
 
@@ -219,7 +322,7 @@ progress.progress:indeterminate {
219
322
  .progress > .determinate,
220
323
  .progress > .indeterminate::before,
221
324
  .progress > .indeterminate::after,
222
- .progress:not(:is(progress)):not(.circular):not(:has(> .determinate, > .indeterminate))::after,
325
+ #{$_bare}::after,
223
326
  progress.progress:indeterminate::before,
224
327
  progress.progress:indeterminate::after {
225
328
  background-color: CanvasText;
@@ -235,16 +338,40 @@ progress.progress:indeterminate {
235
338
  animation: none;
236
339
  }
237
340
 
238
- :is(.preloader, .progress.circular) {
341
+ .progress.circular.wavy::before {
342
+ background: conic-gradient(CanvasText 0 90deg, transparent 0);
343
+ }
344
+
345
+ .progress.circular.wavy.determinate::before {
346
+ background: conic-gradient(CanvasText 0 var(--md-comp-progress-value, 0%), transparent 0);
347
+ }
348
+
349
+ .progress.circular.wavy.determinate::after {
350
+ background: conic-gradient(transparent 0 var(--md-comp-progress-value, 0%), GrayText 0);
351
+ }
352
+
353
+ .progress.circular {
239
354
  background: conic-gradient(CanvasText 0 90deg, transparent 90deg 360deg);
240
355
 
356
+ // The value fills the ring and the track is a 2px line through its
357
+ // middle, so the two differ in shape and not only in GrayText against
358
+ // CanvasText, which a theme can set close together.
241
359
  &.determinate {
242
- background: conic-gradient(
243
- CanvasText 0 var(--md-comp-progress-value, 0%),
244
- GrayText var(--md-comp-progress-value, 0%)
245
- );
360
+ background:
361
+ conic-gradient(CanvasText 0 var(--md-comp-progress-value, 0%), transparent 0),
362
+ radial-gradient(
363
+ farthest-side,
364
+ transparent calc(100% - var(--md-comp-progress-circular-thickness) / 2 - 1px),
365
+ GrayText 0 calc(100% - var(--md-comp-progress-circular-thickness) / 2 + 1px),
366
+ transparent 0
367
+ );
246
368
  }
247
369
  }
370
+
371
+ // A wavy ring draws on its pseudo-elements, so the element stays empty here too.
372
+ .progress.circular.wavy {
373
+ background: none;
374
+ }
248
375
  }
249
376
 
250
377
  @media (prefers-reduced-motion: reduce) {
@@ -253,8 +380,8 @@ progress.progress:indeterminate {
253
380
  .progress::after,
254
381
  progress.progress:indeterminate::before,
255
382
  progress.progress:indeterminate::after,
256
- .progress:not(:is(progress)):not(.circular):not(:has(> .determinate, > .indeterminate)):not([style*="--md-comp-progress-value"])::after,
257
- :is(.preloader, .progress.circular) {
383
+ #{$_bare}:not([style*="--md-comp-progress-value"])::after,
384
+ .progress.circular {
258
385
  animation: none;
259
386
  }
260
387
 
@@ -262,14 +389,10 @@ progress.progress:indeterminate {
262
389
  .progress > .indeterminate::after,
263
390
  progress.progress:indeterminate::before,
264
391
  progress.progress:indeterminate::after,
265
- .progress:not(:is(progress)):not(.circular):not(:has(> .determinate, > .indeterminate)):not([style*="--md-comp-progress-value"])::after {
392
+ #{$_bare}:not([style*="--md-comp-progress-value"])::after {
266
393
  width: 40%;
267
394
  }
268
395
 
269
- .preloader {
270
- transform: none;
271
- }
272
-
273
396
  progress.progress:indeterminate::-moz-progress-bar {
274
397
  animation: none;
275
398
  }