@expressivecss/expressive 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/CHANGELOG.md +1502 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19247 -11923
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
  8. package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
  9. package/dist/fonts/LICENSE-noto-sans-thai +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
  15. package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
  16. package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
  17. package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
  18. package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
  19. package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
  20. package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
  21. package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
  22. package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
  23. package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
  24. package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
  25. package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
  26. package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
  27. package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
  28. package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
  29. package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
  30. package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
  31. package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
  32. package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
  33. package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
  34. package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
  35. package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
  36. package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
  37. package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
  38. package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
  39. package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
  40. package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
  41. package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
  42. package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
  43. package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
  44. package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
  45. package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
  46. package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
  47. package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
  48. package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
  49. package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
  50. package/dist/fonts/roboto-greek-400.woff2 +0 -0
  51. package/dist/fonts/roboto-greek-500.woff2 +0 -0
  52. package/dist/fonts/roboto-greek-700.woff2 +0 -0
  53. package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
  54. package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
  55. package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
  56. package/dist/fonts/roboto-latin-700.woff2 +0 -0
  57. package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
  58. package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
  59. package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
  60. package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
  61. package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
  62. package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
  63. package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
  64. package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
  66. package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
  67. package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
  68. package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
  69. package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
  70. package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
  72. package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
  73. package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
  74. package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
  84. package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
  85. package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
  86. package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
  87. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
  90. package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
  92. package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
  94. package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
  96. package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
  98. package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
  99. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
  102. package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
  103. package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
  104. package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
  105. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
  106. package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
  108. package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
  110. package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
  111. package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
  112. package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
  114. package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
  115. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
  118. package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
  119. package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
  120. package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
  121. package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
  122. package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
  123. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  124. package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
  125. package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
  127. package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
  128. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
  129. package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
  131. package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
  133. package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
  134. package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
  135. package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
  137. package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
  139. package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
  140. package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
  141. package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
  143. package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
  145. package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
  146. package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
  147. package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
  148. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
  149. package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
  151. package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
  152. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
  155. package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
  157. package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
  158. package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
  159. package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
  160. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
  163. package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
  164. package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
  165. package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
  166. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
  167. package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
  169. package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
  170. package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
  171. package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
  172. package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
  173. package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
  175. package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
  177. package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
  179. package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
  181. package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
  183. package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
  187. package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  189. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
  191. package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
  193. package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
  194. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
  195. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
  197. package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
  199. package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
  201. package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
  202. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
  203. package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
  205. package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
  206. package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
  207. package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
  208. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
  209. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
  211. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
  212. package/dist/js/expressive.cjs +10613 -4327
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10613 -4327
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -22
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +182 -71
  219. package/dist/js/expressive.mjs.map +2 -2
  220. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  221. package/dist/js/internal/behaviors/copy.mjs +9 -0
  222. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  223. package/dist/js/internal/behaviors/dataTables.mjs +10 -0
  224. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  226. package/dist/js/internal/behaviors/forms.mjs +2 -2
  227. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  228. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  229. package/dist/js/internal/behaviors/lists.mjs +8 -0
  230. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  232. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  234. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  235. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  236. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  237. package/dist/js/internal/behaviors/theme.mjs +8 -0
  238. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/tour.mjs +8 -0
  240. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  242. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  243. package/dist/js/internal/components/appBar.mjs +3 -2
  244. package/dist/js/internal/components/autocomplete.mjs +4 -4
  245. package/dist/js/internal/components/backToTop.mjs +9 -0
  246. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  247. package/dist/js/internal/components/barChart.mjs +5 -4
  248. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  249. package/dist/js/internal/components/buttons.mjs +3 -3
  250. package/dist/js/internal/components/cards.mjs +3 -3
  251. package/dist/js/internal/components/carousel.mjs +3 -3
  252. package/dist/js/internal/components/cascader.mjs +10 -0
  253. package/dist/js/internal/components/cascader.mjs.map +7 -0
  254. package/dist/js/internal/components/characterCounter.mjs +3 -2
  255. package/dist/js/internal/components/chips.mjs +6 -5
  256. package/dist/js/internal/components/colorPicker.mjs +9 -0
  257. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  258. package/dist/js/internal/components/columnChart.mjs +4 -3
  259. package/dist/js/internal/components/commandPalette.mjs +3 -3
  260. package/dist/js/internal/components/confetti.mjs +3 -2
  261. package/dist/js/internal/components/currencyInput.mjs +9 -0
  262. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  263. package/dist/js/internal/components/datepicker.mjs +11 -8
  264. package/dist/js/internal/components/expandingCard.mjs +3 -3
  265. package/dist/js/internal/components/funnelChart.mjs +10 -0
  266. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  267. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  268. package/dist/js/internal/components/hoverCard.mjs +9 -0
  269. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  270. package/dist/js/internal/components/index.mjs +131 -66
  271. package/dist/js/internal/components/inputMask.mjs +9 -0
  272. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  273. package/dist/js/internal/components/keypad.mjs +3 -3
  274. package/dist/js/internal/components/lightbox.mjs +3 -3
  275. package/dist/js/internal/components/lineChart.mjs +25 -4
  276. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  277. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  278. package/dist/js/internal/components/mapView.mjs +3 -3
  279. package/dist/js/internal/components/menu.mjs +3 -3
  280. package/dist/js/internal/components/menubar.mjs +10 -0
  281. package/dist/js/internal/components/menubar.mjs.map +7 -0
  282. package/dist/js/internal/components/messageScroller.mjs +3 -3
  283. package/dist/js/internal/components/mixedChart.mjs +5 -4
  284. package/dist/js/internal/components/navigationRail.mjs +3 -2
  285. package/dist/js/internal/components/particles.mjs +3 -2
  286. package/dist/js/internal/components/pieChart.mjs +4 -3
  287. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  288. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  289. package/dist/js/internal/components/questionnaire.mjs +3 -3
  290. package/dist/js/internal/components/radarChart.mjs +4 -3
  291. package/dist/js/internal/components/radialChart.mjs +4 -3
  292. package/dist/js/internal/components/registry.mjs +59 -41
  293. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  294. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  295. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  296. package/dist/js/internal/components/scatterChart.mjs +10 -0
  297. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scrollspy.mjs +3 -2
  299. package/dist/js/internal/components/select.mjs +4 -4
  300. package/dist/js/internal/components/showMore.mjs +9 -0
  301. package/dist/js/internal/components/showMore.mjs.map +7 -0
  302. package/dist/js/internal/components/slider.mjs +3 -3
  303. package/dist/js/internal/components/snackbar.mjs +2 -2
  304. package/dist/js/internal/components/swipeActions.mjs +9 -0
  305. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  306. package/dist/js/internal/components/tabs.mjs +3 -4
  307. package/dist/js/internal/components/timepicker.mjs +5 -4
  308. package/dist/js/internal/components/tooltip.mjs +3 -3
  309. package/dist/js/internal/components/treeSelect.mjs +13 -0
  310. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  311. package/dist/js/internal/components/treemapChart.mjs +10 -0
  312. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  313. package/dist/js/internal/core/component.mjs +2 -1
  314. package/dist/js/internal/core/formControl.mjs +12 -0
  315. package/dist/js/internal/core/formControl.mjs.map +7 -0
  316. package/dist/js/internal/core/spring.mjs +11 -0
  317. package/dist/js/internal/core/spring.mjs.map +7 -0
  318. package/dist/js/internal/core/utils.mjs +11 -3
  319. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  320. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  322. package/dist/js/modular.mjs +173 -71
  323. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  324. package/dist/types/behaviors/copy.d.ts +18 -0
  325. package/dist/types/behaviors/dataTables.d.ts +129 -0
  326. package/dist/types/behaviors/dialogs.d.ts +27 -1
  327. package/dist/types/behaviors/forms.d.ts +68 -2
  328. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  329. package/dist/types/behaviors/lists.d.ts +12 -0
  330. package/dist/types/behaviors/paneResize.d.ts +29 -0
  331. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  332. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  333. package/dist/types/behaviors/sortable.d.ts +28 -0
  334. package/dist/types/behaviors/theme.d.ts +22 -0
  335. package/dist/types/behaviors/tour.d.ts +36 -0
  336. package/dist/types/behaviors/transferList.d.ts +51 -0
  337. package/dist/types/components/appBar.d.ts +5 -6
  338. package/dist/types/components/autocomplete.d.ts +91 -17
  339. package/dist/types/components/backToTop.d.ts +36 -0
  340. package/dist/types/components/barChart.d.ts +3 -6
  341. package/dist/types/components/buttonGroup.d.ts +2 -4
  342. package/dist/types/components/buttons.d.ts +5 -5
  343. package/dist/types/components/cards.d.ts +3 -16
  344. package/dist/types/components/carousel.d.ts +9 -15
  345. package/dist/types/components/cascader.d.ts +130 -0
  346. package/dist/types/components/characterCounter.d.ts +2 -15
  347. package/dist/types/components/chips.d.ts +65 -19
  348. package/dist/types/components/colorPicker.d.ts +42 -0
  349. package/dist/types/components/columnChart.d.ts +23 -10
  350. package/dist/types/components/commandPalette.d.ts +11 -16
  351. package/dist/types/components/confetti.d.ts +2 -4
  352. package/dist/types/components/currencyInput.d.ts +59 -0
  353. package/dist/types/components/datepicker.d.ts +56 -32
  354. package/dist/types/components/expandingCard.d.ts +4 -6
  355. package/dist/types/components/funnelChart.d.ts +38 -0
  356. package/dist/types/components/heatmapChart.d.ts +39 -8
  357. package/dist/types/components/hoverCard.d.ts +58 -0
  358. package/dist/types/components/index.d.ts +16 -1
  359. package/dist/types/components/inputMask.d.ts +30 -0
  360. package/dist/types/components/keypad.d.ts +38 -6
  361. package/dist/types/components/lightbox.d.ts +14 -20
  362. package/dist/types/components/lineChart.d.ts +172 -10
  363. package/dist/types/components/loadingOverlay.d.ts +42 -0
  364. package/dist/types/components/mapView.d.ts +26 -17
  365. package/dist/types/components/menu.d.ts +60 -22
  366. package/dist/types/components/menubar.d.ts +37 -0
  367. package/dist/types/components/messageScroller.d.ts +2 -14
  368. package/dist/types/components/mixedChart.d.ts +15 -6
  369. package/dist/types/components/navigationRail.d.ts +16 -5
  370. package/dist/types/components/particles.d.ts +8 -4
  371. package/dist/types/components/pieChart.d.ts +32 -7
  372. package/dist/types/components/pullToRefresh.d.ts +80 -0
  373. package/dist/types/components/questionnaire.d.ts +58 -16
  374. package/dist/types/components/radarChart.d.ts +10 -6
  375. package/dist/types/components/radialChart.d.ts +58 -7
  376. package/dist/types/components/registry.d.ts +73 -3
  377. package/dist/types/components/richTextEditor.d.ts +6 -14
  378. package/dist/types/components/sankeyChart.d.ts +72 -0
  379. package/dist/types/components/scatterChart.d.ts +102 -0
  380. package/dist/types/components/scrollspy.d.ts +3 -5
  381. package/dist/types/components/select.d.ts +43 -30
  382. package/dist/types/components/showMore.d.ts +51 -0
  383. package/dist/types/components/slider.d.ts +3 -15
  384. package/dist/types/components/snackbar.d.ts +61 -0
  385. package/dist/types/components/swipeActions.d.ts +81 -0
  386. package/dist/types/components/tabs.d.ts +89 -27
  387. package/dist/types/components/timepicker.d.ts +113 -21
  388. package/dist/types/components/tooltip.d.ts +56 -20
  389. package/dist/types/components/treeSelect.d.ts +106 -0
  390. package/dist/types/components/treemapChart.d.ts +56 -0
  391. package/dist/types/core/component.d.ts +43 -25
  392. package/dist/types/core/formControl.d.ts +21 -0
  393. package/dist/types/core/spring.d.ts +20 -0
  394. package/dist/types/core/utils.d.ts +85 -72
  395. package/dist/types/modular.d.ts +33 -1
  396. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  397. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  398. package/package.json +10 -8
  399. package/src/sass/README.md +27 -18
  400. package/src/sass/abstracts/_elevation.scss +13 -7
  401. package/src/sass/abstracts/_index.scss +1 -0
  402. package/src/sass/abstracts/_mixins.scss +422 -36
  403. package/src/sass/abstracts/_spring.scss +63 -0
  404. package/src/sass/abstracts/_variables.scss +39 -21
  405. package/src/sass/base/_fonts.scss +61 -48
  406. package/src/sass/base/_global.scss +104 -24
  407. package/src/sass/base/_index.scss +2 -0
  408. package/src/sass/base/_normalize.scss +59 -114
  409. package/src/sass/base/_print.scss +21 -0
  410. package/src/sass/base/_prose.scss +68 -0
  411. package/src/sass/base/_typography.scss +9 -5
  412. package/src/sass/components/_accordion.scss +9 -16
  413. package/src/sass/components/_alert.scss +102 -0
  414. package/src/sass/components/_aura.scss +8 -3
  415. package/src/sass/components/_avatar.scss +3 -3
  416. package/src/sass/components/_back-to-top.scss +38 -0
  417. package/src/sass/components/_badges.scss +6 -5
  418. package/src/sass/components/_bar-chart.scss +41 -19
  419. package/src/sass/components/_bottom-sheet.scss +44 -16
  420. package/src/sass/components/_breadcrumb.scss +8 -1
  421. package/src/sass/components/_button-groups.scss +15 -25
  422. package/src/sass/components/_buttons.scss +156 -63
  423. package/src/sass/components/_calendar.scss +246 -0
  424. package/src/sass/components/_cards.scss +36 -44
  425. package/src/sass/components/_carousel.scss +27 -103
  426. package/src/sass/components/_cascader.scss +142 -0
  427. package/src/sass/components/_chips.scss +36 -46
  428. package/src/sass/components/_column-chart.scss +19 -12
  429. package/src/sass/components/_command-palette.scss +4 -7
  430. package/src/sass/components/_confetti.scss +0 -2
  431. package/src/sass/components/_countdown.scss +1 -1
  432. package/src/sass/components/_data-table.scss +162 -25
  433. package/src/sass/components/_datepicker.scss +54 -40
  434. package/src/sass/components/_description-list.scss +85 -0
  435. package/src/sass/components/_dialog.scss +42 -41
  436. package/src/sass/components/_docked-display.scss +1 -3
  437. package/src/sass/components/_drag-handle.scss +16 -20
  438. package/src/sass/components/_expanding-card.scss +20 -9
  439. package/src/sass/components/_fab-menu.scss +44 -32
  440. package/src/sass/components/_funnel-chart.scss +124 -0
  441. package/src/sass/components/_heatmap-chart.scss +111 -22
  442. package/src/sass/components/_icon-buttons.scss +7 -7
  443. package/src/sass/components/_icons-material-design.scss +2 -2
  444. package/src/sass/components/_image-compare.scss +108 -0
  445. package/src/sass/components/_index.scss +20 -0
  446. package/src/sass/components/_keypad.scss +39 -19
  447. package/src/sass/components/_kpi.scss +6 -11
  448. package/src/sass/components/_lightbox.scss +24 -13
  449. package/src/sass/components/_line-chart.scss +16 -2
  450. package/src/sass/components/_list.scss +59 -14
  451. package/src/sass/components/_loading-indicator.scss +1 -0
  452. package/src/sass/components/_loading-overlay.scss +105 -0
  453. package/src/sass/components/_map.scss +33 -11
  454. package/src/sass/components/_marquee.scss +3 -2
  455. package/src/sass/components/_mega-menu.scss +137 -0
  456. package/src/sass/components/_menu.scss +143 -123
  457. package/src/sass/components/_menubar.scss +59 -0
  458. package/src/sass/components/_message-scroller.scss +2 -2
  459. package/src/sass/components/_message.scss +3 -3
  460. package/src/sass/components/_mixed-chart.scss +37 -9
  461. package/src/sass/components/_modal-display.scss +21 -0
  462. package/src/sass/components/_navbar.scss +34 -20
  463. package/src/sass/components/_navigation-bar.scss +15 -77
  464. package/src/sass/components/_navigation-rail.scss +151 -92
  465. package/src/sass/components/_org-chart.scss +192 -0
  466. package/src/sass/components/_page-footer.scss +1 -1
  467. package/src/sass/components/_pagination.scss +6 -13
  468. package/src/sass/components/_panes.scss +32 -26
  469. package/src/sass/components/_particles.scss +0 -2
  470. package/src/sass/components/_pie-chart.scss +91 -11
  471. package/src/sass/components/_popover.scss +18 -5
  472. package/src/sass/components/_progress.scss +152 -31
  473. package/src/sass/components/_pull-to-refresh.scss +90 -0
  474. package/src/sass/components/_questionnaire.scss +74 -3
  475. package/src/sass/components/_radar-chart.scss +38 -10
  476. package/src/sass/components/_radial-chart.scss +113 -5
  477. package/src/sass/components/_rich-text-editor.scss +2 -2
  478. package/src/sass/components/_sankey-chart.scss +114 -0
  479. package/src/sass/components/_scatter-chart.scss +153 -0
  480. package/src/sass/components/_scrim.scss +0 -2
  481. package/src/sass/components/_scrollspy.scss +0 -2
  482. package/src/sass/components/_search.scss +26 -22
  483. package/src/sass/components/_show-more.scss +8 -0
  484. package/src/sass/components/_side-sheet.scss +23 -37
  485. package/src/sass/components/_skeleton.scss +2 -4
  486. package/src/sass/components/_snackbar.scss +27 -21
  487. package/src/sass/components/_split-button.scss +5 -5
  488. package/src/sass/components/_stat.scss +3 -8
  489. package/src/sass/components/_stepper.scss +1 -1
  490. package/src/sass/components/_swipe-actions.scss +71 -0
  491. package/src/sass/components/_tabs.scss +51 -32
  492. package/src/sass/components/_timeline.scss +12 -12
  493. package/src/sass/components/_timepicker.scss +109 -78
  494. package/src/sass/components/_toolbar.scss +35 -43
  495. package/src/sass/components/_tooltip.scss +21 -12
  496. package/src/sass/components/_tour.scss +89 -0
  497. package/src/sass/components/_transfer-list.scss +73 -0
  498. package/src/sass/components/_transitions.scss +4 -4
  499. package/src/sass/components/_tree.scss +3 -16
  500. package/src/sass/components/_treemap-chart.scss +122 -0
  501. package/src/sass/components/forms/_checkboxes.scss +106 -24
  502. package/src/sass/components/forms/_color-picker.scss +135 -0
  503. package/src/sass/components/forms/_color-swatches.scss +85 -0
  504. package/src/sass/components/forms/_drop-zone.scss +15 -9
  505. package/src/sass/components/forms/_fieldset.scss +7 -7
  506. package/src/sass/components/forms/_file-input.scss +6 -8
  507. package/src/sass/components/forms/_index.scss +3 -1
  508. package/src/sass/components/forms/_input-fields.scss +254 -90
  509. package/src/sass/components/forms/_radio-buttons.scss +33 -94
  510. package/src/sass/components/forms/_rating.scss +2 -32
  511. package/src/sass/components/forms/_select.scss +199 -20
  512. package/src/sass/components/forms/_slider.scss +91 -94
  513. package/src/sass/components/forms/_switches.scss +53 -164
  514. package/src/sass/custom.scss +10 -1
  515. package/src/sass/expressive.scss +3 -63
  516. package/src/sass/tokens/_contrast.scss +94 -0
  517. package/src/sass/tokens/_elevation.scss +16 -0
  518. package/src/sass/tokens/_index.scss +5 -0
  519. package/src/sass/tokens/_motion.scss +109 -0
  520. package/src/sass/tokens/_reference.scss +72 -141
  521. package/src/sass/tokens/_shape.scss +38 -0
  522. package/src/sass/tokens/_stacking.scss +27 -0
  523. package/src/sass/tokens/_state.scss +0 -2
  524. package/src/sass/tokens/_theme.scss +10 -1
  525. package/src/sass/tokens/_vibrant.scss +2 -5
  526. package/src/sass/utilities/_defer-render.scss +17 -0
  527. package/src/sass/utilities/_helpers.scss +183 -26
  528. package/src/sass/utilities/_index.scss +1 -0
  529. package/src/sass/utilities/_scroll-area.scss +0 -2
  530. package/src/sass/utilities/_spacing.scss +52 -34
  531. package/src/sass/utilities/_typescale.scss +8 -1
  532. package/src/sass/utilities/_visibility.scss +47 -76
  533. package/src/sass/utilities/_z-depth.scss +7 -4
  534. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  535. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  536. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  537. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  540. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  541. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  543. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  548. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  553. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  556. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  562. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  564. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  567. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  568. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  569. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  570. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  572. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  574. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  578. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  582. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  584. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  587. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  589. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  590. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  592. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  593. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  594. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  596. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  598. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  599. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  602. /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -0,0 +1,124 @@
1
+ @use "../abstracts" as *;
2
+
3
+ // Funnel chart. A <figure class="funnel-chart"> holds a <figcaption> and a
4
+ // <table> of data: the first column labels each row, and the second holds
5
+ // each stage's value. Without JavaScript the table shows. FunnelChart draws
6
+ // each row as a stage, top to bottom in table order, as wide as its value
7
+ // against the largest one and centered, with the row's label at the inline
8
+ // start. It hides the table visually, so a screen reader still reads the
9
+ // data as a table. The plot and tooltip come from chart(). The plot is as
10
+ // tall as its rows, so --md-comp-funnel-chart-height does not apply; set
11
+ // the row height instead.
12
+ //
13
+ // Each stage's span carries --width, its width as a percentage of the plot.
14
+ //
15
+ // Tokens:
16
+ // --md-comp-funnel-chart-row-height 40px
17
+ // --md-comp-funnel-chart-stage-height 60% of each row's height
18
+ // --md-comp-funnel-chart-shape 4px, the stage's corner radius
19
+ // --md-comp-funnel-chart-color-1 primary, every stage's color
20
+
21
+ @include chart("funnel-chart");
22
+
23
+ .funnel-chart {
24
+ --md-comp-funnel-chart-row-height: #{rem(40px)};
25
+ --md-comp-funnel-chart-stage-height: 60%;
26
+ --md-comp-funnel-chart-shape: var(--md-sys-shape-corner-extra-small);
27
+
28
+ // Labels beside the plot, up to 40% of the width; everything else spans
29
+ // both columns. Dense flow puts the labels in the plot's row.
30
+ display: grid;
31
+ grid-template-columns: fit-content(40%) minmax(0, 1fr);
32
+ grid-auto-flow: row dense;
33
+ align-content: start;
34
+ column-gap: 12px;
35
+
36
+ > * {
37
+ grid-column: 1 / -1;
38
+ }
39
+
40
+ > .funnel-chart-plot {
41
+ grid-column: 2;
42
+ }
43
+
44
+ > .funnel-chart-labels {
45
+ grid-column: 1;
46
+ }
47
+ }
48
+
49
+ .funnel-chart-plot {
50
+ isolation: isolate;
51
+ height: calc(var(--rows, 1) * var(--md-comp-funnel-chart-row-height));
52
+ border-block-end: 0;
53
+ background: none;
54
+ }
55
+
56
+ .funnel-chart-labels {
57
+ grid-auto-rows: minmax(0, 1fr);
58
+ grid-auto-flow: row;
59
+ align-items: center;
60
+ text-align: end;
61
+ }
62
+
63
+ .funnel-chart-stages {
64
+ position: absolute;
65
+ inset: 0;
66
+ display: grid;
67
+ grid-auto-rows: minmax(0, 1fr);
68
+
69
+ > div {
70
+ display: flex;
71
+ align-items: center;
72
+ }
73
+
74
+ > div > span {
75
+ width: calc(var(--width, 0) * 1%);
76
+ height: var(--md-comp-funnel-chart-stage-height);
77
+ margin-inline: auto;
78
+ border-radius: var(--md-comp-funnel-chart-shape);
79
+ background-color: var(--funnel-chart-color);
80
+ }
81
+
82
+ // Each stage grows from nothing, or after update() from its old width,
83
+ // which FunnelChart writes as --from-width.
84
+ @media (prefers-reduced-motion: no-preference) {
85
+ > div > span {
86
+ transition: width var(--md-sys-motion-duration-medium4) var(--md-sys-motion-easing-standard);
87
+
88
+ @starting-style {
89
+ width: calc(var(--from-width, 0) * 1%);
90
+ }
91
+ }
92
+ }
93
+ }
94
+
95
+ // A band behind the highlighted row's stage.
96
+ .funnel-chart-cursor {
97
+ z-index: -1;
98
+ inset-block: auto;
99
+ inset-inline: 0;
100
+ height: calc(100% / var(--rows, 1));
101
+ border-radius: var(--md-comp-funnel-chart-shape);
102
+ background-color: state-layer(var(--md-sys-color-on-surface), "hover");
103
+ translate: 0 -50%;
104
+ }
105
+
106
+ // Below the highlighted row, or above it in the lower half.
107
+ .funnel-chart-tooltip {
108
+ left: 50%;
109
+ translate: -50% calc(var(--md-comp-funnel-chart-row-height) / 2);
110
+
111
+ &.end {
112
+ translate: -50% calc(-100% - var(--md-comp-funnel-chart-row-height) / 2);
113
+ }
114
+ }
115
+
116
+ @media (forced-colors: active) {
117
+ .funnel-chart-stages > div > span {
118
+ forced-color-adjust: none;
119
+ }
120
+
121
+ .funnel-chart-cursor {
122
+ outline: 1px solid CanvasText;
123
+ }
124
+ }
@@ -7,25 +7,49 @@
7
7
  // its rows, so --md-comp-heatmap-chart-height does not apply.
8
8
  //
9
9
  // Each cell carries --level, 0 for the lowest value and 1 for the highest,
10
- // and mixes the color into the empty color by that much. A .gap cell has no
11
- // value and draws no fill. Value text is black or white, whichever
12
- // contrasts more with the cell's mix, in any theme.
10
+ // and mixes the color into the empty color by that much. On a diverging
11
+ // scale (data-mid) a level below 0 mixes in the low color instead. A .gap
12
+ // cell has no value and draws no fill. Value text is black or white,
13
+ // whichever contrasts more with the cell's mix, in any theme.
14
+ //
15
+ // Cells keep --md-comp-heatmap-chart-cell-min-width, and a grid too wide
16
+ // for its figure scrolls its cells sideways beside the row labels.
13
17
  //
14
18
  // Modifiers: .values writes each cell's text on it.
15
19
  //
16
20
  // Tokens:
17
- // --md-comp-heatmap-chart-row-height 32px
18
- // --md-comp-heatmap-chart-gap 3px between cells
19
- // --md-comp-heatmap-chart-shape 4px, the cell's corner radius
20
- // --md-comp-heatmap-chart-color primary, the highest value
21
- // --md-comp-heatmap-chart-empty-color surface-container-highest, the lowest
21
+ // --md-comp-heatmap-chart-row-height 32px
22
+ // --md-comp-heatmap-chart-cell-min-width 12px, below which the grid scrolls
23
+ // --md-comp-heatmap-chart-gap 3px between cells
24
+ // --md-comp-heatmap-chart-shape 4px, the cell's corner radius
25
+ // --md-comp-heatmap-chart-color primary, the highest value
26
+ // --md-comp-heatmap-chart-low-color tertiary, the lowest value on a
27
+ // diverging scale
28
+ // --md-comp-heatmap-chart-empty-color surface-container-highest, the
29
+ // lowest, or the midpoint
22
30
 
23
31
  @include chart("heatmap-chart");
24
32
 
33
+ // A level's color: the color above 0, the low color below it, both mixed
34
+ // into the empty color, so one formula serves both kinds of scale.
35
+ @function shade($level) {
36
+ @return color-mix(
37
+ in oklab,
38
+ var(--md-comp-heatmap-chart-color) calc(max(#{$level}, 0) * 100%),
39
+ color-mix(
40
+ in oklab,
41
+ var(--md-comp-heatmap-chart-low-color) calc(max(-1 * #{$level}, 0) * 100%),
42
+ var(--md-comp-heatmap-chart-empty-color)
43
+ )
44
+ );
45
+ }
46
+
25
47
  .heatmap-chart {
26
- --md-comp-heatmap-chart-row-height: 32px;
48
+ --md-comp-heatmap-chart-row-height: #{rem(32px)};
49
+ --md-comp-heatmap-chart-cell-min-width: 12px;
50
+ --md-comp-heatmap-chart-low-color: var(--md-sys-color-tertiary);
27
51
  --md-comp-heatmap-chart-gap: 3px;
28
- --md-comp-heatmap-chart-shape: 4px;
52
+ --md-comp-heatmap-chart-shape: var(--md-sys-shape-corner-extra-small);
29
53
  --md-comp-heatmap-chart-color: var(--md-sys-color-primary);
30
54
  --md-comp-heatmap-chart-empty-color: var(--md-sys-color-surface-container-highest);
31
55
  }
@@ -33,11 +57,7 @@
33
57
  // The cells and the tooltip swatch share the mix.
34
58
  .heatmap-chart-cell,
35
59
  .heatmap-chart-tooltip > span {
36
- --heatmap-chart-color: color-mix(
37
- in oklab,
38
- var(--md-comp-heatmap-chart-color) calc(var(--level, 0) * 100%),
39
- var(--md-comp-heatmap-chart-empty-color)
40
- );
60
+ --heatmap-chart-color: #{shade(var(--level, 0))};
41
61
  }
42
62
 
43
63
  .heatmap-chart-plot {
@@ -46,16 +66,42 @@
46
66
  background: none;
47
67
  }
48
68
 
69
+ // The row labels, then the cells beside them. Row labels take up to 40% of
70
+ // the width and end in an ellipsis past it; the cells take the rest and
71
+ // scroll sideways when their minimum width would not fit, while the row
72
+ // labels stay in view. Both sides use the same fixed row height, so the
73
+ // rows line up.
49
74
  .heatmap-chart-grid {
50
75
  display: grid;
51
- // Row labels take up to 40% of the width and end in an ellipsis past it.
52
- grid-template-columns: fit-content(40%) repeat(var(--columns, 1), minmax(0, 1fr));
53
- grid-template-rows: repeat(var(--rows, 1), var(--md-comp-heatmap-chart-row-height));
54
- gap: var(--md-comp-heatmap-chart-gap);
76
+ grid-template-columns: fit-content(40%) minmax(0, 1fr);
77
+ column-gap: var(--md-comp-heatmap-chart-gap);
55
78
  color: var(--md-sys-color-on-surface-variant);
56
79
  @include typescale("body-small");
57
80
  }
58
81
 
82
+ .heatmap-chart-rows,
83
+ .heatmap-chart-cells {
84
+ display: grid;
85
+ grid-template-rows: repeat(var(--rows, 1), var(--md-comp-heatmap-chart-row-height)) auto;
86
+ gap: var(--md-comp-heatmap-chart-gap);
87
+ }
88
+
89
+ .heatmap-chart-rows {
90
+ min-width: 0;
91
+ }
92
+
93
+ .heatmap-chart-scroll {
94
+ overflow-x: auto;
95
+ // Room for the active cell's outline, which the scrolling would clip.
96
+ margin: -3px;
97
+ padding: 3px;
98
+ }
99
+
100
+ .heatmap-chart-cells {
101
+ grid-template-columns: repeat(var(--columns, 1), minmax(var(--md-comp-heatmap-chart-cell-min-width), 1fr));
102
+ width: max(100%, var(--columns, 1) * (var(--md-comp-heatmap-chart-cell-min-width) + var(--md-comp-heatmap-chart-gap)) - var(--md-comp-heatmap-chart-gap));
103
+ }
104
+
59
105
  .heatmap-chart-row,
60
106
  .heatmap-chart-column {
61
107
  overflow: hidden;
@@ -76,6 +122,27 @@
76
122
  &.run {
77
123
  text-align: start;
78
124
  }
125
+
126
+ // When each label is wider than its column, HeatmapChart keeps every nth
127
+ // one, as LineChart does. A kept label spreads over the hidden ones beside
128
+ // it, centred on its column; the end labels line up with the grid's edges.
129
+ .heatmap-chart-cells[data-thinned] > &:not([data-skip]) {
130
+ display: flex;
131
+ justify-content: center;
132
+ overflow: visible;
133
+
134
+ &:nth-child(1 of .heatmap-chart-column) {
135
+ justify-content: start;
136
+ }
137
+
138
+ &:nth-last-child(1 of .heatmap-chart-column) {
139
+ justify-content: end;
140
+ }
141
+ }
142
+
143
+ &[data-skip] {
144
+ visibility: hidden;
145
+ }
79
146
  }
80
147
 
81
148
  .heatmap-chart-cell {
@@ -134,12 +201,34 @@
134
201
  .heatmap-chart-scale {
135
202
  width: 96px;
136
203
  height: 8px;
137
- border-radius: 4px;
204
+ border-radius: var(--md-sys-shape-corner-extra-small);
138
205
  // From the lowest cell's shade to the highest's, set by HeatmapChart.
139
206
  background: linear-gradient(
140
207
  in oklab to var(--heatmap-chart-to, right),
141
- color-mix(in oklab, var(--md-comp-heatmap-chart-color) calc(var(--low, 0) * 100%), var(--md-comp-heatmap-chart-empty-color)),
142
- color-mix(in oklab, var(--md-comp-heatmap-chart-color) calc(var(--high, 1) * 100%), var(--md-comp-heatmap-chart-empty-color))
208
+ #{shade(var(--low, 0))},
209
+ #{shade(var(--high, 1))}
210
+ );
211
+
212
+ // A stepped scale is a swatch per band, which HeatmapChart writes.
213
+ &:has(> span) {
214
+ display: flex;
215
+ overflow: hidden;
216
+ background: none;
217
+ }
218
+
219
+ > span {
220
+ flex: 1;
221
+ background: #{shade(var(--level, 0))};
222
+ }
223
+ }
224
+
225
+ // A diverging scale whose data crosses the midpoint passes its empty color.
226
+ .heatmap-chart-scale.diverging {
227
+ background: linear-gradient(
228
+ in oklab to var(--heatmap-chart-to, right),
229
+ #{shade(var(--low, 0))},
230
+ var(--md-comp-heatmap-chart-empty-color) var(--mid, 0%),
231
+ #{shade(var(--high, 1))}
143
232
  );
144
233
  }
145
234
 
@@ -43,7 +43,7 @@
43
43
 
44
44
  --md-comp-icon-button-color: var(--md-sys-color-on-surface-variant);
45
45
  --md-comp-icon-button-container-color: transparent;
46
- --md-comp-icon-button-container-shape: 9999px;
46
+ --md-comp-icon-button-container-shape: var(--md-sys-shape-corner-full);
47
47
 
48
48
  box-sizing: border-box;
49
49
  display: inline-flex;
@@ -65,7 +65,11 @@
65
65
  appearance: none;
66
66
  vertical-align: middle;
67
67
  -webkit-tap-highlight-color: transparent;
68
- transition: background-color .2s ease-out, border-radius .2s ease-out;
68
+ transition: background-color var(--md-sys-motion-duration-short4) ease-out, border-radius var(--md-sys-motion-duration-short4) ease-out;
69
+
70
+ @media (prefers-reduced-motion: reduce) {
71
+ transition: none;
72
+ }
69
73
 
70
74
  > #{$icon} {
71
75
  flex: 0 0 auto;
@@ -82,11 +86,7 @@
82
86
  // icon button gets a translucent tint instead of an opaque one.
83
87
  @each $state, $selector in ("hover": "&:hover", "focus": "&:focus", "pressed": "&:active") {
84
88
  #{$selector} {
85
- background-color: color-mix(
86
- in oklab,
87
- var(--md-comp-icon-button-color) state-opacity($state),
88
- var(--md-comp-icon-button-container-color)
89
- );
89
+ background-color: state-layer(var(--md-comp-icon-button-color), $state, var(--md-comp-icon-button-container-color));
90
90
  }
91
91
  }
92
92
 
@@ -30,14 +30,14 @@
30
30
  [icon-style="sharp"],
31
31
  :host([icon-style="sharp"]) { --md-icon-font: var(--md-icon-font-sharp); }
32
32
 
33
- $_icon: ".material-symbols, .material-symbols-outlined, .material-symbols-rounded, .material-symbols-sharp, .material-icons";
33
+ $_icon: ".material-symbols, .material-symbols-outlined, .material-symbols-rounded, .material-symbols-sharp";
34
34
 
35
35
  #{$_icon} {
36
36
  display: inline-block;
37
37
  font-family: var(--md-icon-font);
38
38
  font-weight: normal;
39
39
  font-style: normal;
40
- font-size: 24px;
40
+ font-size: rem(24px);
41
41
  line-height: 1;
42
42
  letter-spacing: normal;
43
43
  text-transform: none;
@@ -0,0 +1,108 @@
1
+ @use "../abstracts" as *;
2
+
3
+ // Image compare. Two images of the same scene stacked, with a divider that
4
+ // reveals the second over the first. A .image-compare holds two <img> and a
5
+ // native <input type="range">: the range is the control, so keyboard,
6
+ // pointer, touch and its "slider" semantics are the browser's. It covers the
7
+ // images invisibly, and the container draws the divider and handle at
8
+ // --md-comp-image-compare-position, which the ImageCompare behavior keeps in
9
+ // step with the range's value.
10
+ //
11
+ // Tokens:
12
+ // --md-comp-image-compare-position 50% (from the inline start)
13
+ // --md-comp-image-compare-shape 16px
14
+ // --md-comp-image-compare-divider-color surface
15
+ // --md-comp-image-compare-handle-size 40px
16
+
17
+ .image-compare {
18
+ --md-comp-image-compare-position: 50%;
19
+ --md-comp-image-compare-shape: var(--md-sys-shape-corner-large);
20
+ --md-comp-image-compare-divider-color: var(--md-sys-color-surface);
21
+ --md-comp-image-compare-handle-size: 40px;
22
+
23
+ position: relative;
24
+ display: grid;
25
+ overflow: hidden;
26
+ border-radius: var(--md-comp-image-compare-shape);
27
+ isolation: isolate;
28
+
29
+ > img {
30
+ grid-area: 1 / 1;
31
+ display: block;
32
+ inline-size: 100%;
33
+ block-size: 100%;
34
+ object-fit: cover;
35
+ }
36
+
37
+ > img + img {
38
+ clip-path: inset(0 0 0 var(--md-comp-image-compare-position));
39
+ }
40
+
41
+ &:dir(rtl) > img + img {
42
+ clip-path: inset(0 var(--md-comp-image-compare-position) 0 0);
43
+ }
44
+
45
+ > input[type="range"] {
46
+ grid-area: 1 / 1;
47
+ z-index: 2;
48
+ inline-size: 100%;
49
+ block-size: 100%;
50
+ margin: 0;
51
+ cursor: ew-resize;
52
+ opacity: 0;
53
+ }
54
+
55
+ // The divider line, then the round handle on it.
56
+ &::before,
57
+ &::after {
58
+ content: "";
59
+ position: absolute;
60
+ z-index: 1;
61
+ inset-inline-start: var(--md-comp-image-compare-position);
62
+ pointer-events: none;
63
+ translate: -50% 0;
64
+ }
65
+
66
+ &:dir(rtl)::before,
67
+ &:dir(rtl)::after {
68
+ translate: 50% 0;
69
+ }
70
+
71
+ &::before {
72
+ inset-block: 0;
73
+ inline-size: 2px;
74
+ background-color: var(--md-comp-image-compare-divider-color);
75
+ }
76
+
77
+ &::after {
78
+ inset-block-start: calc(50% - var(--md-comp-image-compare-handle-size) / 2);
79
+ inline-size: var(--md-comp-image-compare-handle-size);
80
+ block-size: var(--md-comp-image-compare-handle-size);
81
+ border-radius: 50%;
82
+ background-color: var(--md-comp-image-compare-divider-color);
83
+ @include z-depth("2");
84
+ }
85
+
86
+ &:has(> input:focus-visible)::after {
87
+ @include focus-ring();
88
+ }
89
+
90
+ &:has(> input:disabled) {
91
+ > input {
92
+ cursor: default;
93
+ }
94
+
95
+ &::after {
96
+ opacity: 0.38;
97
+ }
98
+ }
99
+
100
+ @media (forced-colors: active) {
101
+ &::before,
102
+ &::after {
103
+ forced-color-adjust: none;
104
+ background-color: Canvas;
105
+ outline: 2px solid CanvasText;
106
+ }
107
+ }
108
+ }
@@ -31,6 +31,7 @@
31
31
  @forward "chips";
32
32
  @forward "lightbox";
33
33
  @forward "docked-display";
34
+ @forward "modal-display";
34
35
  @forward "page-footer";
35
36
  @forward "forms";
36
37
  @forward "table_of_contents";
@@ -44,6 +45,11 @@
44
45
  @forward "panes";
45
46
  @forward "fab-menu";
46
47
  @forward "loading-indicator";
48
+ @forward "pull-to-refresh";
49
+ @forward "loading-overlay";
50
+ @forward "swipe-actions";
51
+ @forward "show-more";
52
+ @forward "transfer-list";
47
53
  @forward "search";
48
54
  @forward "drag-handle";
49
55
  @forward "scrim";
@@ -53,9 +59,16 @@
53
59
  @forward "map";
54
60
  @forward "accordion";
55
61
  @forward "data-table";
62
+ @forward "description-list";
63
+ @forward "calendar";
64
+ @forward "mega-menu";
65
+ @forward "image-compare";
66
+ @forward "tour";
67
+ @forward "menubar";
56
68
  @forward "avatar";
57
69
  @forward "skeleton";
58
70
  @forward "empty-state";
71
+ @forward "alert";
59
72
  @forward "countdown";
60
73
  @forward "popover";
61
74
  @forward "stepper";
@@ -72,9 +85,16 @@
72
85
  @forward "radar-chart";
73
86
  @forward "radial-chart";
74
87
  @forward "mixed-chart";
88
+ @forward "scatter-chart";
89
+ @forward "funnel-chart";
90
+ @forward "sankey-chart";
91
+ @forward "treemap-chart";
75
92
  @forward "aura";
76
93
  @forward "kpi";
77
94
  @forward "marquee";
78
95
  @forward "confetti";
79
96
  @forward "particles";
80
97
  @forward "keypad";
98
+ @forward "org-chart";
99
+ @forward "back-to-top";
100
+ @forward "cascader";
@@ -4,8 +4,10 @@
4
4
  //
5
5
  // Anatomy is the HTML. Every key is a <button type="button">. A key with a
6
6
  // `value` types that value; a key with `data-key` is a function key
7
- // (Backspace, Enter, Shift). `.keypad` is a three-column grid of round keys,
8
- // the dial pad and PIN pad. `.keyboard` is a column of rows (any <div>), each
7
+ // (Backspace, Enter, Shift, CapsLock, Layer). A Layer key shows the
8
+ // elements whose `data-layer` matches its `value`, such as a row of
9
+ // symbols. `.keypad` is a three-column grid of round keys, the dial pad
10
+ // and PIN pad. `.keyboard` is a column of rows (any <div>), each
9
11
  // row a flex line of keys. A key carrying a button style class (.filled,
10
12
  // .tonal, .outlined, .elevated, .text) keeps that style, so a call or submit
11
13
  // key is written the same way as any other button.
@@ -25,9 +27,10 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
25
27
  --md-comp-keypad-key-label-color: var(--md-sys-color-on-surface);
26
28
  --md-comp-keypad-function-key-color: var(--md-sys-color-secondary-container);
27
29
  --md-comp-keypad-function-key-label-color: var(--md-sys-color-on-secondary-container);
28
- --md-comp-keypad-key-pressed-shape: 12px;
30
+ --md-comp-keypad-key-pressed-shape: var(--md-sys-shape-corner-medium);
29
31
  // Material's fast-spatial spring, the curve button groups press with.
30
- --md-comp-keypad-motion: #{$motion-fast-spatial};
32
+ --md-comp-keypad-motion: var(--md-sys-motion-spring-fast-spatial);
33
+ --md-comp-keypad-motion-duration: var(--md-sys-motion-spring-fast-spatial-duration);
31
34
 
32
35
  touch-action: manipulation;
33
36
 
@@ -37,8 +40,8 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
37
40
  min-width: 0;
38
41
  padding: 0;
39
42
  transition:
40
- border-radius 200ms var(--md-comp-keypad-motion),
41
- background-color 200ms ease-out;
43
+ border-radius var(--md-comp-keypad-motion-duration) var(--md-comp-keypad-motion),
44
+ background-color var(--md-sys-motion-duration-short4) ease-out;
42
45
 
43
46
  &[data-key] {
44
47
  --_color: var(--md-comp-keypad-function-key-color);
@@ -47,13 +50,14 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
47
50
 
48
51
  // The state layer's opacity. Only the rule below reads it, so a key
49
52
  // that keeps a button style ignores it.
50
- @each $state, $selector in ("hover": "&:hover", "focus": "&:focus", "pressed": "&:active") {
53
+ // .pressed is a hardware key held down in the field.
54
+ @each $state, $selector in ("hover": "&:hover", "focus": "&:focus", "pressed": "&:is(:active, .pressed)") {
51
55
  #{$selector} {
52
56
  --_state: #{state-opacity($state)};
53
57
  }
54
58
  }
55
59
 
56
- &:active:not(:disabled) {
60
+ &:is(:active, .pressed):not(:disabled) {
57
61
  border-radius: var(--md-comp-keypad-key-pressed-shape);
58
62
  }
59
63
 
@@ -68,8 +72,8 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
68
72
  background-color: color-mix(in oklab, var(--_label) var(--_state, 0%), var(--_color));
69
73
  }
70
74
 
71
- // A latched Shift reads as selected: primary, like a selected toggle.
72
- [data-key="Shift"][aria-pressed="true"] {
75
+ // A latched Shift or Caps Lock reads as selected: primary, like a selected toggle.
76
+ :is([data-key="Shift"], [data-key="CapsLock"])[aria-pressed="true"] {
73
77
  --_color: var(--md-sys-color-primary);
74
78
  --_label: var(--md-sys-color-on-primary);
75
79
  }
@@ -80,7 +84,7 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
80
84
  // Keys fill their cell, so `.wide` spans two and becomes a pill: a call key
81
85
  // beside Backspace leaves no hole in the last row.
82
86
  .keypad {
83
- --md-comp-keypad-key-size: 72px;
87
+ --md-comp-keypad-key-size: #{rem(72px)};
84
88
  --md-comp-keypad-gap: 12px;
85
89
 
86
90
  display: inline-grid;
@@ -102,7 +106,7 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
102
106
  > small {
103
107
  @include typescale("label-small");
104
108
  color: inherit;
105
- opacity: .78;
109
+ opacity: 0.78;
106
110
  }
107
111
  }
108
112
  }
@@ -115,12 +119,12 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
115
119
  .keyboard {
116
120
  --md-comp-keyboard-columns: 10;
117
121
  --md-comp-keyboard-gap: 6px;
118
- --md-comp-keyboard-key-height: 48px;
119
- --md-comp-keyboard-number-key-height: 40px;
120
- --md-comp-keyboard-key-shape: 12px;
122
+ --md-comp-keyboard-key-height: #{rem(48px)};
123
+ --md-comp-keyboard-number-key-height: #{rem(40px)};
124
+ --md-comp-keyboard-key-shape: var(--md-sys-shape-corner-medium);
121
125
  --md-comp-keypad-key-pressed-shape: 6px;
122
126
  --md-comp-keyboard-container-color: var(--md-sys-color-surface-container);
123
- --md-comp-keyboard-container-shape: 16px;
127
+ --md-comp-keyboard-container-shape: var(--md-sys-shape-corner-large);
124
128
 
125
129
  display: flex;
126
130
  flex-direction: column;
@@ -143,7 +147,7 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
143
147
  @include typescale("title-medium");
144
148
 
145
149
  &[data-key] {
146
- flex-basis: calc(1.5 * var(--_unit) + .5 * var(--md-comp-keyboard-gap));
150
+ flex-basis: calc(1.5 * var(--_unit) + 0.5 * var(--md-comp-keyboard-gap));
147
151
  }
148
152
 
149
153
  &[value=" "] {
@@ -155,8 +159,24 @@ $_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
155
159
  height: var(--md-comp-keyboard-number-key-height);
156
160
  }
157
161
 
158
- // Shift shows capitals on the character keys while it is latched.
159
- &:has([data-key="Shift"][aria-pressed="true"]) button[value] {
162
+ // Shift or Caps Lock shows capitals on the character keys while latched.
163
+ &:has(:is([data-key="Shift"], [data-key="CapsLock"])[aria-pressed="true"]) button[value] {
160
164
  text-transform: uppercase;
161
165
  }
162
166
  }
167
+
168
+ // Forced colors paint the keys and the keyboard's container as Canvas.
169
+ @media (forced-colors: active) {
170
+ :is(.keypad, .keyboard) button,
171
+ .keyboard {
172
+ outline: 1px solid ButtonText;
173
+ outline-offset: -1px;
174
+ }
175
+
176
+ // The fill that marks the main key, such as Call, is dropped too, so a
177
+ // thicker edge sets it apart, as a default button's is in high contrast.
178
+ :is(.keypad, .keyboard) button.filled {
179
+ outline-width: 3px;
180
+ outline-offset: -3px;
181
+ }
182
+ }