@expressivecss/expressive 0.15.0 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (602) hide show
  1. package/CHANGELOG.md +1502 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19247 -11923
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
  8. package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
  9. package/dist/fonts/LICENSE-noto-sans-thai +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
  15. package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
  16. package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
  17. package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
  18. package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
  19. package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
  20. package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
  21. package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
  22. package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
  23. package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
  24. package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
  25. package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
  26. package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
  27. package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
  28. package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
  29. package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
  30. package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
  31. package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
  32. package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
  33. package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
  34. package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
  35. package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
  36. package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
  37. package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
  38. package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
  39. package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
  40. package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
  41. package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
  42. package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
  43. package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
  44. package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
  45. package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
  46. package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
  47. package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
  48. package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
  49. package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
  50. package/dist/fonts/roboto-greek-400.woff2 +0 -0
  51. package/dist/fonts/roboto-greek-500.woff2 +0 -0
  52. package/dist/fonts/roboto-greek-700.woff2 +0 -0
  53. package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
  54. package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
  55. package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
  56. package/dist/fonts/roboto-latin-700.woff2 +0 -0
  57. package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
  58. package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
  59. package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
  60. package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
  61. package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
  62. package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
  63. package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
  64. package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
  66. package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
  67. package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
  68. package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
  69. package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
  70. package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
  72. package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
  73. package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
  74. package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
  84. package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
  85. package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
  86. package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
  87. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
  90. package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
  92. package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
  94. package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
  96. package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
  98. package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
  99. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
  102. package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
  103. package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
  104. package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
  105. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
  106. package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
  108. package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
  110. package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
  111. package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
  112. package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
  114. package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
  115. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
  118. package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
  119. package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
  120. package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
  121. package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
  122. package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
  123. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  124. package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
  125. package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
  127. package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
  128. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
  129. package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
  131. package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
  133. package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
  134. package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
  135. package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
  137. package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
  139. package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
  140. package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
  141. package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
  143. package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
  145. package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
  146. package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
  147. package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
  148. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
  149. package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
  151. package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
  152. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
  155. package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
  157. package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
  158. package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
  159. package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
  160. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
  163. package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
  164. package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
  165. package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
  166. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
  167. package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
  169. package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
  170. package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
  171. package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
  172. package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
  173. package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
  175. package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
  177. package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
  179. package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
  181. package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
  183. package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
  187. package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  189. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
  191. package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
  193. package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
  194. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
  195. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
  197. package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
  199. package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
  201. package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
  202. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
  203. package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
  205. package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
  206. package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
  207. package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
  208. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
  209. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
  211. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
  212. package/dist/js/expressive.cjs +10613 -4327
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10613 -4327
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -22
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +182 -71
  219. package/dist/js/expressive.mjs.map +2 -2
  220. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  221. package/dist/js/internal/behaviors/copy.mjs +9 -0
  222. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  223. package/dist/js/internal/behaviors/dataTables.mjs +10 -0
  224. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  226. package/dist/js/internal/behaviors/forms.mjs +2 -2
  227. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  228. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  229. package/dist/js/internal/behaviors/lists.mjs +8 -0
  230. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  232. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  234. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  235. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  236. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  237. package/dist/js/internal/behaviors/theme.mjs +8 -0
  238. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/tour.mjs +8 -0
  240. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  242. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  243. package/dist/js/internal/components/appBar.mjs +3 -2
  244. package/dist/js/internal/components/autocomplete.mjs +4 -4
  245. package/dist/js/internal/components/backToTop.mjs +9 -0
  246. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  247. package/dist/js/internal/components/barChart.mjs +5 -4
  248. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  249. package/dist/js/internal/components/buttons.mjs +3 -3
  250. package/dist/js/internal/components/cards.mjs +3 -3
  251. package/dist/js/internal/components/carousel.mjs +3 -3
  252. package/dist/js/internal/components/cascader.mjs +10 -0
  253. package/dist/js/internal/components/cascader.mjs.map +7 -0
  254. package/dist/js/internal/components/characterCounter.mjs +3 -2
  255. package/dist/js/internal/components/chips.mjs +6 -5
  256. package/dist/js/internal/components/colorPicker.mjs +9 -0
  257. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  258. package/dist/js/internal/components/columnChart.mjs +4 -3
  259. package/dist/js/internal/components/commandPalette.mjs +3 -3
  260. package/dist/js/internal/components/confetti.mjs +3 -2
  261. package/dist/js/internal/components/currencyInput.mjs +9 -0
  262. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  263. package/dist/js/internal/components/datepicker.mjs +11 -8
  264. package/dist/js/internal/components/expandingCard.mjs +3 -3
  265. package/dist/js/internal/components/funnelChart.mjs +10 -0
  266. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  267. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  268. package/dist/js/internal/components/hoverCard.mjs +9 -0
  269. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  270. package/dist/js/internal/components/index.mjs +131 -66
  271. package/dist/js/internal/components/inputMask.mjs +9 -0
  272. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  273. package/dist/js/internal/components/keypad.mjs +3 -3
  274. package/dist/js/internal/components/lightbox.mjs +3 -3
  275. package/dist/js/internal/components/lineChart.mjs +25 -4
  276. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  277. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  278. package/dist/js/internal/components/mapView.mjs +3 -3
  279. package/dist/js/internal/components/menu.mjs +3 -3
  280. package/dist/js/internal/components/menubar.mjs +10 -0
  281. package/dist/js/internal/components/menubar.mjs.map +7 -0
  282. package/dist/js/internal/components/messageScroller.mjs +3 -3
  283. package/dist/js/internal/components/mixedChart.mjs +5 -4
  284. package/dist/js/internal/components/navigationRail.mjs +3 -2
  285. package/dist/js/internal/components/particles.mjs +3 -2
  286. package/dist/js/internal/components/pieChart.mjs +4 -3
  287. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  288. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  289. package/dist/js/internal/components/questionnaire.mjs +3 -3
  290. package/dist/js/internal/components/radarChart.mjs +4 -3
  291. package/dist/js/internal/components/radialChart.mjs +4 -3
  292. package/dist/js/internal/components/registry.mjs +59 -41
  293. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  294. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  295. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  296. package/dist/js/internal/components/scatterChart.mjs +10 -0
  297. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scrollspy.mjs +3 -2
  299. package/dist/js/internal/components/select.mjs +4 -4
  300. package/dist/js/internal/components/showMore.mjs +9 -0
  301. package/dist/js/internal/components/showMore.mjs.map +7 -0
  302. package/dist/js/internal/components/slider.mjs +3 -3
  303. package/dist/js/internal/components/snackbar.mjs +2 -2
  304. package/dist/js/internal/components/swipeActions.mjs +9 -0
  305. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  306. package/dist/js/internal/components/tabs.mjs +3 -4
  307. package/dist/js/internal/components/timepicker.mjs +5 -4
  308. package/dist/js/internal/components/tooltip.mjs +3 -3
  309. package/dist/js/internal/components/treeSelect.mjs +13 -0
  310. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  311. package/dist/js/internal/components/treemapChart.mjs +10 -0
  312. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  313. package/dist/js/internal/core/component.mjs +2 -1
  314. package/dist/js/internal/core/formControl.mjs +12 -0
  315. package/dist/js/internal/core/formControl.mjs.map +7 -0
  316. package/dist/js/internal/core/spring.mjs +11 -0
  317. package/dist/js/internal/core/spring.mjs.map +7 -0
  318. package/dist/js/internal/core/utils.mjs +11 -3
  319. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  320. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  322. package/dist/js/modular.mjs +173 -71
  323. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  324. package/dist/types/behaviors/copy.d.ts +18 -0
  325. package/dist/types/behaviors/dataTables.d.ts +129 -0
  326. package/dist/types/behaviors/dialogs.d.ts +27 -1
  327. package/dist/types/behaviors/forms.d.ts +68 -2
  328. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  329. package/dist/types/behaviors/lists.d.ts +12 -0
  330. package/dist/types/behaviors/paneResize.d.ts +29 -0
  331. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  332. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  333. package/dist/types/behaviors/sortable.d.ts +28 -0
  334. package/dist/types/behaviors/theme.d.ts +22 -0
  335. package/dist/types/behaviors/tour.d.ts +36 -0
  336. package/dist/types/behaviors/transferList.d.ts +51 -0
  337. package/dist/types/components/appBar.d.ts +5 -6
  338. package/dist/types/components/autocomplete.d.ts +91 -17
  339. package/dist/types/components/backToTop.d.ts +36 -0
  340. package/dist/types/components/barChart.d.ts +3 -6
  341. package/dist/types/components/buttonGroup.d.ts +2 -4
  342. package/dist/types/components/buttons.d.ts +5 -5
  343. package/dist/types/components/cards.d.ts +3 -16
  344. package/dist/types/components/carousel.d.ts +9 -15
  345. package/dist/types/components/cascader.d.ts +130 -0
  346. package/dist/types/components/characterCounter.d.ts +2 -15
  347. package/dist/types/components/chips.d.ts +65 -19
  348. package/dist/types/components/colorPicker.d.ts +42 -0
  349. package/dist/types/components/columnChart.d.ts +23 -10
  350. package/dist/types/components/commandPalette.d.ts +11 -16
  351. package/dist/types/components/confetti.d.ts +2 -4
  352. package/dist/types/components/currencyInput.d.ts +59 -0
  353. package/dist/types/components/datepicker.d.ts +56 -32
  354. package/dist/types/components/expandingCard.d.ts +4 -6
  355. package/dist/types/components/funnelChart.d.ts +38 -0
  356. package/dist/types/components/heatmapChart.d.ts +39 -8
  357. package/dist/types/components/hoverCard.d.ts +58 -0
  358. package/dist/types/components/index.d.ts +16 -1
  359. package/dist/types/components/inputMask.d.ts +30 -0
  360. package/dist/types/components/keypad.d.ts +38 -6
  361. package/dist/types/components/lightbox.d.ts +14 -20
  362. package/dist/types/components/lineChart.d.ts +172 -10
  363. package/dist/types/components/loadingOverlay.d.ts +42 -0
  364. package/dist/types/components/mapView.d.ts +26 -17
  365. package/dist/types/components/menu.d.ts +60 -22
  366. package/dist/types/components/menubar.d.ts +37 -0
  367. package/dist/types/components/messageScroller.d.ts +2 -14
  368. package/dist/types/components/mixedChart.d.ts +15 -6
  369. package/dist/types/components/navigationRail.d.ts +16 -5
  370. package/dist/types/components/particles.d.ts +8 -4
  371. package/dist/types/components/pieChart.d.ts +32 -7
  372. package/dist/types/components/pullToRefresh.d.ts +80 -0
  373. package/dist/types/components/questionnaire.d.ts +58 -16
  374. package/dist/types/components/radarChart.d.ts +10 -6
  375. package/dist/types/components/radialChart.d.ts +58 -7
  376. package/dist/types/components/registry.d.ts +73 -3
  377. package/dist/types/components/richTextEditor.d.ts +6 -14
  378. package/dist/types/components/sankeyChart.d.ts +72 -0
  379. package/dist/types/components/scatterChart.d.ts +102 -0
  380. package/dist/types/components/scrollspy.d.ts +3 -5
  381. package/dist/types/components/select.d.ts +43 -30
  382. package/dist/types/components/showMore.d.ts +51 -0
  383. package/dist/types/components/slider.d.ts +3 -15
  384. package/dist/types/components/snackbar.d.ts +61 -0
  385. package/dist/types/components/swipeActions.d.ts +81 -0
  386. package/dist/types/components/tabs.d.ts +89 -27
  387. package/dist/types/components/timepicker.d.ts +113 -21
  388. package/dist/types/components/tooltip.d.ts +56 -20
  389. package/dist/types/components/treeSelect.d.ts +106 -0
  390. package/dist/types/components/treemapChart.d.ts +56 -0
  391. package/dist/types/core/component.d.ts +43 -25
  392. package/dist/types/core/formControl.d.ts +21 -0
  393. package/dist/types/core/spring.d.ts +20 -0
  394. package/dist/types/core/utils.d.ts +85 -72
  395. package/dist/types/modular.d.ts +33 -1
  396. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  397. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  398. package/package.json +10 -8
  399. package/src/sass/README.md +27 -18
  400. package/src/sass/abstracts/_elevation.scss +13 -7
  401. package/src/sass/abstracts/_index.scss +1 -0
  402. package/src/sass/abstracts/_mixins.scss +422 -36
  403. package/src/sass/abstracts/_spring.scss +63 -0
  404. package/src/sass/abstracts/_variables.scss +39 -21
  405. package/src/sass/base/_fonts.scss +61 -48
  406. package/src/sass/base/_global.scss +104 -24
  407. package/src/sass/base/_index.scss +2 -0
  408. package/src/sass/base/_normalize.scss +59 -114
  409. package/src/sass/base/_print.scss +21 -0
  410. package/src/sass/base/_prose.scss +68 -0
  411. package/src/sass/base/_typography.scss +9 -5
  412. package/src/sass/components/_accordion.scss +9 -16
  413. package/src/sass/components/_alert.scss +102 -0
  414. package/src/sass/components/_aura.scss +8 -3
  415. package/src/sass/components/_avatar.scss +3 -3
  416. package/src/sass/components/_back-to-top.scss +38 -0
  417. package/src/sass/components/_badges.scss +6 -5
  418. package/src/sass/components/_bar-chart.scss +41 -19
  419. package/src/sass/components/_bottom-sheet.scss +44 -16
  420. package/src/sass/components/_breadcrumb.scss +8 -1
  421. package/src/sass/components/_button-groups.scss +15 -25
  422. package/src/sass/components/_buttons.scss +156 -63
  423. package/src/sass/components/_calendar.scss +246 -0
  424. package/src/sass/components/_cards.scss +36 -44
  425. package/src/sass/components/_carousel.scss +27 -103
  426. package/src/sass/components/_cascader.scss +142 -0
  427. package/src/sass/components/_chips.scss +36 -46
  428. package/src/sass/components/_column-chart.scss +19 -12
  429. package/src/sass/components/_command-palette.scss +4 -7
  430. package/src/sass/components/_confetti.scss +0 -2
  431. package/src/sass/components/_countdown.scss +1 -1
  432. package/src/sass/components/_data-table.scss +162 -25
  433. package/src/sass/components/_datepicker.scss +54 -40
  434. package/src/sass/components/_description-list.scss +85 -0
  435. package/src/sass/components/_dialog.scss +42 -41
  436. package/src/sass/components/_docked-display.scss +1 -3
  437. package/src/sass/components/_drag-handle.scss +16 -20
  438. package/src/sass/components/_expanding-card.scss +20 -9
  439. package/src/sass/components/_fab-menu.scss +44 -32
  440. package/src/sass/components/_funnel-chart.scss +124 -0
  441. package/src/sass/components/_heatmap-chart.scss +111 -22
  442. package/src/sass/components/_icon-buttons.scss +7 -7
  443. package/src/sass/components/_icons-material-design.scss +2 -2
  444. package/src/sass/components/_image-compare.scss +108 -0
  445. package/src/sass/components/_index.scss +20 -0
  446. package/src/sass/components/_keypad.scss +39 -19
  447. package/src/sass/components/_kpi.scss +6 -11
  448. package/src/sass/components/_lightbox.scss +24 -13
  449. package/src/sass/components/_line-chart.scss +16 -2
  450. package/src/sass/components/_list.scss +59 -14
  451. package/src/sass/components/_loading-indicator.scss +1 -0
  452. package/src/sass/components/_loading-overlay.scss +105 -0
  453. package/src/sass/components/_map.scss +33 -11
  454. package/src/sass/components/_marquee.scss +3 -2
  455. package/src/sass/components/_mega-menu.scss +137 -0
  456. package/src/sass/components/_menu.scss +143 -123
  457. package/src/sass/components/_menubar.scss +59 -0
  458. package/src/sass/components/_message-scroller.scss +2 -2
  459. package/src/sass/components/_message.scss +3 -3
  460. package/src/sass/components/_mixed-chart.scss +37 -9
  461. package/src/sass/components/_modal-display.scss +21 -0
  462. package/src/sass/components/_navbar.scss +34 -20
  463. package/src/sass/components/_navigation-bar.scss +15 -77
  464. package/src/sass/components/_navigation-rail.scss +151 -92
  465. package/src/sass/components/_org-chart.scss +192 -0
  466. package/src/sass/components/_page-footer.scss +1 -1
  467. package/src/sass/components/_pagination.scss +6 -13
  468. package/src/sass/components/_panes.scss +32 -26
  469. package/src/sass/components/_particles.scss +0 -2
  470. package/src/sass/components/_pie-chart.scss +91 -11
  471. package/src/sass/components/_popover.scss +18 -5
  472. package/src/sass/components/_progress.scss +152 -31
  473. package/src/sass/components/_pull-to-refresh.scss +90 -0
  474. package/src/sass/components/_questionnaire.scss +74 -3
  475. package/src/sass/components/_radar-chart.scss +38 -10
  476. package/src/sass/components/_radial-chart.scss +113 -5
  477. package/src/sass/components/_rich-text-editor.scss +2 -2
  478. package/src/sass/components/_sankey-chart.scss +114 -0
  479. package/src/sass/components/_scatter-chart.scss +153 -0
  480. package/src/sass/components/_scrim.scss +0 -2
  481. package/src/sass/components/_scrollspy.scss +0 -2
  482. package/src/sass/components/_search.scss +26 -22
  483. package/src/sass/components/_show-more.scss +8 -0
  484. package/src/sass/components/_side-sheet.scss +23 -37
  485. package/src/sass/components/_skeleton.scss +2 -4
  486. package/src/sass/components/_snackbar.scss +27 -21
  487. package/src/sass/components/_split-button.scss +5 -5
  488. package/src/sass/components/_stat.scss +3 -8
  489. package/src/sass/components/_stepper.scss +1 -1
  490. package/src/sass/components/_swipe-actions.scss +71 -0
  491. package/src/sass/components/_tabs.scss +51 -32
  492. package/src/sass/components/_timeline.scss +12 -12
  493. package/src/sass/components/_timepicker.scss +109 -78
  494. package/src/sass/components/_toolbar.scss +35 -43
  495. package/src/sass/components/_tooltip.scss +21 -12
  496. package/src/sass/components/_tour.scss +89 -0
  497. package/src/sass/components/_transfer-list.scss +73 -0
  498. package/src/sass/components/_transitions.scss +4 -4
  499. package/src/sass/components/_tree.scss +3 -16
  500. package/src/sass/components/_treemap-chart.scss +122 -0
  501. package/src/sass/components/forms/_checkboxes.scss +106 -24
  502. package/src/sass/components/forms/_color-picker.scss +135 -0
  503. package/src/sass/components/forms/_color-swatches.scss +85 -0
  504. package/src/sass/components/forms/_drop-zone.scss +15 -9
  505. package/src/sass/components/forms/_fieldset.scss +7 -7
  506. package/src/sass/components/forms/_file-input.scss +6 -8
  507. package/src/sass/components/forms/_index.scss +3 -1
  508. package/src/sass/components/forms/_input-fields.scss +254 -90
  509. package/src/sass/components/forms/_radio-buttons.scss +33 -94
  510. package/src/sass/components/forms/_rating.scss +2 -32
  511. package/src/sass/components/forms/_select.scss +199 -20
  512. package/src/sass/components/forms/_slider.scss +91 -94
  513. package/src/sass/components/forms/_switches.scss +53 -164
  514. package/src/sass/custom.scss +10 -1
  515. package/src/sass/expressive.scss +3 -63
  516. package/src/sass/tokens/_contrast.scss +94 -0
  517. package/src/sass/tokens/_elevation.scss +16 -0
  518. package/src/sass/tokens/_index.scss +5 -0
  519. package/src/sass/tokens/_motion.scss +109 -0
  520. package/src/sass/tokens/_reference.scss +72 -141
  521. package/src/sass/tokens/_shape.scss +38 -0
  522. package/src/sass/tokens/_stacking.scss +27 -0
  523. package/src/sass/tokens/_state.scss +0 -2
  524. package/src/sass/tokens/_theme.scss +10 -1
  525. package/src/sass/tokens/_vibrant.scss +2 -5
  526. package/src/sass/utilities/_defer-render.scss +17 -0
  527. package/src/sass/utilities/_helpers.scss +183 -26
  528. package/src/sass/utilities/_index.scss +1 -0
  529. package/src/sass/utilities/_scroll-area.scss +0 -2
  530. package/src/sass/utilities/_spacing.scss +52 -34
  531. package/src/sass/utilities/_typescale.scss +8 -1
  532. package/src/sass/utilities/_visibility.scss +47 -76
  533. package/src/sass/utilities/_z-depth.scss +7 -4
  534. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  535. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  536. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  537. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  540. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  541. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  543. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  548. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  553. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  556. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  562. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  564. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  567. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  568. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  569. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  570. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  572. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  574. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  578. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  582. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  584. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  587. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  589. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  590. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  592. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  593. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  594. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  596. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  598. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  599. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  602. /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -3,11 +3,13 @@
3
3
  // Vertical menus (M3 Expressive).
4
4
  //
5
5
  // Anatomy is the HTML. A <menu id> is the surface; each <li> is an item.
6
- // A leading <i> is the leading icon; a trailing <i> or <kbd> is trailing
7
- // content. An <li class="divider" role="separator"> is a divider; a bare
8
- // <hr> is the older form and still styled, though <menu> only permits <li>.
6
+ // An icon leads its label; a trailing icon or <kbd> is trailing content. An
7
+ // <li class="divider" role="separator"> is a divider: <menu> only permits
8
+ // <li>, so a bare <hr> is not styled.
9
9
  // A .gap <li> splits groups. A .label
10
- // <li> is a 32dp group heading. A nested <menu> is a flyout. The trigger
10
+ // <li> is a 32dp group heading. A nested <menu> is a flyout. An
11
+ // <li role="none"> holding a <ul role="group"> is a group of rows, styled
12
+ // as if each row were a direct item. The trigger
11
13
  // is .menu-trigger[data-target] — that is the JS contract.
12
14
  //
13
15
  // Tokens are md.comp.menus - the expressive family, not baseline
@@ -29,9 +31,13 @@
29
31
  $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M10 6l6 6-6 6'/%3E%3C/svg%3E");
30
32
 
31
33
  // Item states, interpolated after `li`. An item is any <li> that is not a
32
- // divider, optgroup, gap or label; an enabled item is also not disabled.
33
- $_item: ":not(.divider, .optgroup, .gap, .label)";
34
- $_enabled: ':not(.disabled, [aria-disabled="true"], .divider, .optgroup, .gap, .label)';
34
+ // divider, optgroup, gap, label or group wrapper; an enabled item is also not
35
+ // disabled. A segment is a run of a grouped surface, which a wrapper is.
36
+ $_segment: ":not(.divider, .optgroup, .gap, .label)";
37
+ $_item: ':not(.divider, .optgroup, .gap, .label, [role="none"])';
38
+ $_enabled: ':not(.disabled, [aria-disabled="true"], .divider, .optgroup, .gap, .label, [role="none"])';
39
+ // A row is a direct <li> or one inside a group.
40
+ $_rows: '> li, > li > ul[role="group"] > li';
35
41
  $_selected: ':is(.selected, [aria-selected="true"], [aria-checked="true"])';
36
42
  $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
37
43
 
@@ -41,17 +47,20 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
41
47
  border: none;
42
48
  }
43
49
 
44
- @mixin menu-surface {
50
+ // Search dialogs host trees directly, so their rows need the same menu tokens.
51
+ menu[id],
52
+ menu[id] li > menu,
53
+ .select-search-popup {
45
54
  --md-comp-menu-container-color: var(--md-sys-color-surface-container-low);
46
- --md-comp-menu-container-shape: 16px;
47
- --md-comp-menu-group-shape: 8px;
55
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
56
+ --md-comp-menu-group-shape: var(--md-sys-shape-corner-small);
48
57
  --md-comp-menu-container-inactive-shape: var(--md-comp-menu-group-shape);
49
58
  --md-comp-menu-group-padding: 2px;
50
59
  --md-comp-menu-gap: 2px;
51
60
  --md-comp-menu-item-container-height: 44px;
52
- --md-comp-menu-item-container-shape: 4px;
53
- --md-comp-menu-item-edge-shape: 12px;
54
- --md-comp-menu-item-selected-container-shape: 12px;
61
+ --md-comp-menu-item-container-shape: var(--md-sys-shape-corner-extra-small);
62
+ --md-comp-menu-item-edge-shape: var(--md-sys-shape-corner-medium);
63
+ --md-comp-menu-item-selected-container-shape: var(--md-sys-shape-corner-medium);
55
64
  --md-comp-menu-item-leading-space: 16px;
56
65
  --md-comp-menu-item-trailing-space: 16px;
57
66
  --md-comp-menu-item-between-space: 12px;
@@ -74,19 +83,6 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
74
83
  --md-comp-menu-item-icon-size: 20px;
75
84
  --md-comp-menu-supporting-text-color: var(--md-sys-color-on-surface-variant);
76
85
 
77
- box-sizing: border-box;
78
- min-width: 112px;
79
- max-width: 280px;
80
- margin: 0;
81
- padding: var(--md-comp-menu-group-padding);
82
- list-style: none;
83
- background-color: var(--md-comp-menu-container-color);
84
- border-radius: var(--md-comp-menu-container-shape);
85
- color: var(--md-comp-menu-item-label-text-color);
86
- @include z-depth("2");
87
- transition: border-radius 200ms ease;
88
- @include glass(var(--md-comp-menu-container-color));
89
-
90
86
  // The [vibrant] arms are not a second mapping - they are the statement that
91
87
  // a menu on a vibrant surface IS a vibrant menu. Without them the foundation
92
88
  // paints the container tertiary-container while the selected item keeps the
@@ -119,14 +115,35 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
119
115
  --md-sys-color-on-tertiary
120
116
  );
121
117
  }
118
+ }
119
+
120
+ @mixin menu-surface {
121
+ box-sizing: border-box;
122
+ min-width: 112px;
123
+ max-width: 280px;
124
+ margin: 0;
125
+ padding: var(--md-comp-menu-group-padding);
126
+ list-style: none;
127
+ background-color: var(--md-comp-menu-container-color);
128
+ border-radius: var(--md-comp-menu-container-shape);
129
+ color: var(--md-comp-menu-item-label-text-color);
130
+ @include z-depth("2");
131
+ transition: border-radius var(--md-sys-motion-duration-short4) ease;
132
+ @include glass(var(--md-comp-menu-container-color));
133
+
134
+ > li > ul[role="group"] {
135
+ margin: 0;
136
+ padding: 0;
137
+ list-style: none;
138
+ }
122
139
 
123
- > li {
140
+ #{$_rows} {
124
141
  box-sizing: border-box;
125
142
  margin: 0;
126
143
  padding: 0;
127
144
  width: 100%;
128
145
  cursor: pointer;
129
- text-align: left;
146
+ text-align: start;
130
147
  border-radius: var(--md-comp-menu-item-container-shape);
131
148
 
132
149
  // The bare-span arm is the non-interactive item. It has to exclude icons,
@@ -217,8 +234,10 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
217
234
  }
218
235
  }
219
236
 
220
- > li#{$_item} {
221
- min-height: var(--md-comp-menu-item-container-height);
237
+ #{$_rows} {
238
+ &#{$_item} {
239
+ min-height: var(--md-comp-menu-item-container-height);
240
+ }
222
241
  }
223
242
 
224
243
  > li#{$_item}:first-child {
@@ -234,74 +253,75 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
234
253
  var(--md-comp-menu-item-edge-shape) var(--md-comp-menu-item-edge-shape);
235
254
  }
236
255
 
237
- // Hover / press sit on extra-small corners and do not span the container.
238
- > li#{$_enabled}:hover,
239
- > li.active#{$_unselected} {
240
- background-color: color-mix(
241
- in oklab,
242
- var(--md-comp-menu-item-label-text-color) 8%,
243
- transparent
244
- );
256
+ // A group at either end of the menu rounds its end row the same way.
257
+ > li[role="none"]:first-child
258
+ > ul[role="group"]
259
+ > li#{$_item}#{$_unselected}:first-child {
260
+ border-start-start-radius: var(--md-comp-menu-item-edge-shape);
261
+ border-start-end-radius: var(--md-comp-menu-item-edge-shape);
245
262
  }
246
263
 
247
- > li#{$_enabled}:active {
248
- background-color: color-mix(
249
- in oklab,
250
- var(--md-comp-menu-item-label-text-color) 10%,
251
- transparent
252
- );
264
+ > li[role="none"]:last-child
265
+ > ul[role="group"]
266
+ > li#{$_item}#{$_unselected}:last-child {
267
+ border-end-start-radius: var(--md-comp-menu-item-edge-shape);
268
+ border-end-end-radius: var(--md-comp-menu-item-edge-shape);
253
269
  }
254
270
 
255
- // :not(.divider) only buys specificity: menu-item.selected.shape is 12dp
256
- // unconditionally, so it has to outrank the first/last-child edge rule that
257
- // would otherwise leave a selected end item with 4dp inner corners.
258
- > li#{$_selected}:not(.divider) {
259
- border-radius: var(--md-comp-menu-item-selected-container-shape);
260
- background-color: var(--md-comp-menu-item-selected-container-color);
261
- color: var(--md-comp-menu-item-selected-label-text-color);
262
-
263
- > :is(a, button, #{$icon-label}) {
264
- color: var(--md-comp-menu-item-selected-label-text-color);
271
+ #{$_rows} {
272
+ // Hover / press sit on extra-small corners and do not span the container.
273
+ &#{$_enabled}:hover,
274
+ &.active#{$_unselected} {
275
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "hover");
265
276
  }
266
277
 
267
- > :is(a, button, #{$icon-label}) > #{$icon},
268
- > #{$icon} {
269
- color: var(--md-comp-menu-item-selected-leading-icon-color);
278
+ &#{$_enabled}:active {
279
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "pressed");
270
280
  }
271
281
 
272
- > :is(a, button, #{$icon-label}) :is(.supporting-text, kbd, .shortcut) {
282
+ // :not(.divider) only buys specificity: menu-item.selected.shape is 12dp
283
+ // unconditionally, so it has to outrank the first/last-child edge rule that
284
+ // would otherwise leave a selected end item with 4dp inner corners.
285
+ &#{$_selected}:not(.divider) {
286
+ border-radius: var(--md-comp-menu-item-selected-container-shape);
287
+ background-color: var(--md-comp-menu-item-selected-container-color);
273
288
  color: var(--md-comp-menu-item-selected-label-text-color);
289
+ @include forced-colors-selected;
290
+
291
+ > :is(a, button, #{$icon-label}) {
292
+ color: var(--md-comp-menu-item-selected-label-text-color);
293
+ }
294
+
295
+ > :is(a, button, #{$icon-label}) > #{$icon},
296
+ > #{$icon} {
297
+ color: var(--md-comp-menu-item-selected-leading-icon-color);
298
+ }
299
+
300
+ > :is(a, button, #{$icon-label}) :is(.supporting-text, kbd, .shortcut) {
301
+ color: var(--md-comp-menu-item-selected-label-text-color);
302
+ }
274
303
  }
275
- }
276
304
 
277
- > li#{$_selected}:hover {
278
- background-color: color-mix(
279
- in oklab,
280
- var(--md-comp-menu-item-selected-label-text-color) 8%,
281
- var(--md-comp-menu-item-selected-container-color)
282
- );
283
- }
305
+ &#{$_selected}:hover {
306
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "hover", var(--md-comp-menu-item-selected-container-color));
307
+ }
284
308
 
285
- > li#{$_selected}:is(:focus, :focus-visible, :active) {
286
- background-color: color-mix(
287
- in oklab,
288
- var(--md-comp-menu-item-selected-label-text-color) 10%,
289
- var(--md-comp-menu-item-selected-container-color)
290
- );
291
- }
309
+ &#{$_selected}:is(:focus, :focus-visible, :active) {
310
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "pressed", var(--md-comp-menu-item-selected-container-color));
311
+ }
292
312
 
293
- > li:focus-visible {
294
- outline: 3px solid var(--md-sys-color-secondary);
295
- outline-offset: -3px;
296
- }
313
+ &:focus-visible {
314
+ outline: 3px solid var(--md-sys-color-secondary);
315
+ outline-offset: -3px;
316
+ }
297
317
 
298
- > li:is(.disabled, [aria-disabled="true"]) {
299
- pointer-events: none;
300
- opacity: 0.38;
318
+ &:is(.disabled, [aria-disabled="true"]) {
319
+ pointer-events: none;
320
+ opacity: 0.38;
321
+ }
301
322
  }
302
323
 
303
324
  // Inset divider — selection and rules do not span the container.
304
- > hr,
305
325
  > li.divider {
306
326
  display: block;
307
327
  width: calc(100% - 8px);
@@ -353,21 +373,21 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
353
373
  // blur the menu itself. Grouped menus stay solid.
354
374
  backdrop-filter: none;
355
375
 
356
- > li#{$_item} {
376
+ > li#{$_segment} {
357
377
  padding-inline: var(--md-comp-menu-group-padding);
358
378
  background-color: var(--md-comp-menu-container-color);
359
379
  border-radius: 0;
360
380
  }
361
381
 
362
- > li#{$_item}:first-child,
363
- > li.gap + li#{$_item} {
382
+ > li#{$_segment}:first-child,
383
+ > li.gap + li#{$_segment} {
364
384
  padding-block-start: var(--md-comp-menu-group-padding);
365
385
  border-start-start-radius: var(--md-comp-menu-group-shape);
366
386
  border-start-end-radius: var(--md-comp-menu-group-shape);
367
387
  }
368
388
 
369
- > li#{$_item}:has(+ li.gap),
370
- > li#{$_item}:last-child {
389
+ > li#{$_segment}:has(+ li.gap),
390
+ > li#{$_segment}:last-child {
371
391
  padding-block-end: var(--md-comp-menu-group-padding);
372
392
  border-end-start-radius: var(--md-comp-menu-group-shape);
373
393
  border-end-end-radius: var(--md-comp-menu-group-shape);
@@ -391,20 +411,12 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
391
411
  > li.active#{$_unselected}
392
412
  > :is(a, button, #{$icon-label}) {
393
413
  border-radius: var(--md-comp-menu-item-container-shape);
394
- background-color: color-mix(
395
- in oklab,
396
- var(--md-comp-menu-item-label-text-color) 8%,
397
- transparent
398
- );
414
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "hover");
399
415
  }
400
416
 
401
417
  > li#{$_enabled}:active
402
418
  > :is(a, button, #{$icon-label}) {
403
- background-color: color-mix(
404
- in oklab,
405
- var(--md-comp-menu-item-label-text-color) 10%,
406
- transparent
407
- );
419
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "pressed");
408
420
  }
409
421
 
410
422
  > li#{$_selected}
@@ -415,20 +427,12 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
415
427
 
416
428
  > li#{$_selected}:hover
417
429
  > :is(a, button, #{$icon-label}) {
418
- background-color: color-mix(
419
- in oklab,
420
- var(--md-comp-menu-item-selected-label-text-color) 8%,
421
- var(--md-comp-menu-item-selected-container-color)
422
- );
430
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "hover", var(--md-comp-menu-item-selected-container-color));
423
431
  }
424
432
 
425
433
  > li#{$_selected}:is(:focus, :focus-visible, :active)
426
434
  > :is(a, button, #{$icon-label}) {
427
- background-color: color-mix(
428
- in oklab,
429
- var(--md-comp-menu-item-selected-label-text-color) 10%,
430
- var(--md-comp-menu-item-selected-container-color)
431
- );
435
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "pressed", var(--md-comp-menu-item-selected-container-color));
432
436
  }
433
437
  }
434
438
 
@@ -444,6 +448,7 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
444
448
  margin-inline-start: auto;
445
449
  background-color: var(--md-comp-menu-item-trailing-icon-color);
446
450
  mask: $_menu-chevron center / 20px no-repeat;
451
+ @include forced-colors-fill;
447
452
  }
448
453
  }
449
454
 
@@ -452,14 +457,21 @@ menu[id] {
452
457
 
453
458
  display: none;
454
459
  position: absolute;
460
+ // JS positions the menu with physical left/top. Clear the UA [popover]
461
+ // inset: 0 first, or the over-constrained box ignores left in RTL.
462
+ inset: auto;
455
463
  left: 0;
456
464
  top: 0;
457
- z-index: 9999;
458
465
  overflow-y: auto;
459
466
  opacity: 0;
460
467
  user-select: none;
461
468
  transform-origin: 0 0;
462
469
 
470
+ // Menu opens the surface as a manual popover, in the top layer.
471
+ &:popover-open {
472
+ display: block;
473
+ }
474
+
463
475
  // Nested flyouts sit outside the list box; do not clip them.
464
476
  &:has(> li > menu) {
465
477
  overflow: visible;
@@ -494,7 +506,13 @@ menu[id] li > menu {
494
506
  opacity 180ms ease,
495
507
  transform 180ms ease,
496
508
  visibility 180ms ease,
497
- border-radius 200ms ease;
509
+ border-radius var(--md-sys-motion-duration-short4) ease;
510
+
511
+ // The flyout opens toward inline-end, so it slides in from the other side.
512
+ &:dir(rtl) {
513
+ transform: translateX(4px) scale(0.96);
514
+ transform-origin: 100% 0;
515
+ }
498
516
  }
499
517
 
500
518
  @media (hover: hover) and (pointer: fine) {
@@ -503,7 +521,7 @@ menu[id] li > menu {
503
521
  opacity: 1;
504
522
  pointer-events: auto;
505
523
  transform: none;
506
- --md-comp-menu-container-shape: 16px;
524
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
507
525
  }
508
526
  }
509
527
 
@@ -512,13 +530,22 @@ menu[id] li.open > menu {
512
530
  opacity: 1;
513
531
  pointer-events: auto;
514
532
  transform: none;
515
- --md-comp-menu-container-shape: 16px;
533
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
516
534
  }
517
535
 
518
536
  menu[id] li.submenu-start > menu {
519
537
  inset-inline-start: auto;
520
538
  inset-inline-end: 100%;
521
539
  transform-origin: 100% 0;
540
+
541
+ // Flipped toward inline-start, so it also slides in from the far side:
542
+ // the right in a right-to-left menu.
543
+ transform: translateX(4px) scale(0.96);
544
+
545
+ &:dir(rtl) {
546
+ transform: translateX(-4px) scale(0.96);
547
+ transform-origin: 0 0;
548
+ }
522
549
  }
523
550
 
524
551
  menu[id] li.submenu-start:is(:hover, :focus-within, .open) > menu {
@@ -531,12 +558,9 @@ menu[id] li.submenu-start:is(:hover, :focus-within, .open) > menu {
531
558
  // item gets focus here - inherits :focus-visible from the element that had it,
532
559
  // so opening the menu by keyboard still lights the item and opening it by
533
560
  // pointer still does not.
534
- menu[id] > li:focus-visible {
535
- background-color: color-mix(
536
- in oklab,
537
- var(--md-comp-menu-item-label-text-color) 10%,
538
- transparent
539
- );
561
+ menu[id] > li:focus-visible,
562
+ menu[id] > li > ul[role="group"] > li:focus-visible {
563
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "focus");
540
564
  }
541
565
 
542
566
  menu[id].grouped > li:focus-visible {
@@ -547,11 +571,7 @@ menu[id].grouped
547
571
  > li:focus-visible#{$_unselected}
548
572
  > :is(a, button, span:not(.material-symbols, .badge, .supporting-text)) {
549
573
  border-radius: var(--md-comp-menu-item-container-shape);
550
- background-color: color-mix(
551
- in oklab,
552
- var(--md-comp-menu-item-label-text-color) 10%,
553
- transparent
554
- );
574
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "focus");
555
575
  }
556
576
 
557
577
  @media (prefers-reduced-motion: reduce) {
@@ -575,8 +595,8 @@ menu[id].grouped
575
595
  // The trigger stays in its pressed state for as long as its menu is open.
576
596
  &[aria-expanded="true"] {
577
597
  background-image: linear-gradient(
578
- color-mix(in oklab, currentcolor 10%, transparent),
579
- color-mix(in oklab, currentcolor 10%, transparent)
598
+ state-layer(currentcolor, "pressed"),
599
+ state-layer(currentcolor, "pressed")
580
600
  );
581
601
  }
582
602
  }
@@ -0,0 +1,59 @@
1
+ @use "../abstracts" as *;
2
+
3
+ // Menubar. An application's row of menus (File, Edit, View) on a .menubar of
4
+ // .menu-trigger buttons; each opens an ordinary <menu>. The Menubar
5
+ // component adds the menubar role and keyboard contract. The bar is a
6
+ // surface-container row of text-styled items, and an item whose menu is open
7
+ // stays selected.
8
+ //
9
+ // Tokens:
10
+ // --md-comp-menubar-container-color surface-container
11
+ // --md-comp-menubar-shape 12px
12
+ // --md-comp-menubar-item-height 40px
13
+
14
+ .menubar {
15
+ --md-comp-menubar-container-color: var(--md-sys-color-surface-container);
16
+ --md-comp-menubar-shape: var(--md-sys-shape-corner-medium);
17
+ --md-comp-menubar-item-height: 40px;
18
+
19
+ display: flex;
20
+ flex-wrap: wrap;
21
+ align-items: center;
22
+ gap: 2px;
23
+ inline-size: fit-content;
24
+ max-inline-size: 100%;
25
+ padding: 4px;
26
+ border-radius: var(--md-comp-menubar-shape);
27
+ background-color: var(--md-comp-menubar-container-color);
28
+
29
+ > .menu-trigger {
30
+ min-block-size: var(--md-comp-menubar-item-height);
31
+ margin: 0;
32
+ padding: 0 12px;
33
+ border: 0;
34
+ border-radius: var(--md-sys-shape-corner-small);
35
+ background: none;
36
+ color: var(--md-sys-color-on-surface);
37
+ font: inherit;
38
+ cursor: pointer;
39
+ @include typescale("label-large");
40
+ @include focus-visible;
41
+
42
+ &:hover {
43
+ background-color: state-layer(var(--md-sys-color-on-surface), "hover");
44
+ }
45
+
46
+ &[aria-expanded="true"] {
47
+ background-color: var(--md-sys-color-secondary-container);
48
+ color: var(--md-sys-color-on-secondary-container);
49
+ }
50
+ }
51
+
52
+ @media (forced-colors: active) {
53
+ border: 1px solid CanvasText;
54
+
55
+ > .menu-trigger[aria-expanded="true"] {
56
+ outline: 2px solid Highlight;
57
+ }
58
+ }
59
+ }
@@ -51,11 +51,11 @@
51
51
  width: fit-content;
52
52
  margin-inline: auto;
53
53
  @include z-depth("2");
54
- transition: opacity .15s ease-out, scale .15s ease-out;
54
+ transition: opacity var(--md-sys-motion-duration-short3) ease-out, scale var(--md-sys-motion-duration-short3) ease-out;
55
55
 
56
56
  &[inert] {
57
57
  opacity: 0;
58
- scale: .8;
58
+ scale: 0.8;
59
59
  }
60
60
  }
61
61
 
@@ -25,8 +25,8 @@
25
25
  --md-comp-message-avatar-size: 32px;
26
26
  --md-comp-message-gap: 8px;
27
27
  --md-comp-message-surface-max-width: 80%;
28
- --md-comp-message-bubble-shape: 20px;
29
- --md-comp-message-bubble-grouped-shape: 4px;
28
+ --md-comp-message-bubble-shape: var(--md-sys-shape-corner-large-increased);
29
+ --md-comp-message-bubble-grouped-shape: var(--md-sys-shape-corner-extra-small);
30
30
  --md-comp-message-bubble-container-color: var(--md-sys-color-surface-container-high);
31
31
  --md-comp-message-bubble-color: var(--md-sys-color-on-surface);
32
32
 
@@ -102,7 +102,7 @@
102
102
  }
103
103
 
104
104
  > #{$icon} {
105
- font-size: 20px;
105
+ font-size: rem(20px);
106
106
  }
107
107
  }
108
108
 
@@ -6,6 +6,11 @@
6
6
  // else as a line. `dashed` dashes a line. A series with `end` is drawn
7
7
  // against a second scale, set by data-end-min and data-end-max on the
8
8
  // figure. The plot, tooltip, labels and legend come from chart().
9
+ // .axis labels the start scale beside the plot at round values, with a
10
+ // grid line at each, and an end scale on the far side, stretched so its
11
+ // labels share those lines when neither scale's ends are set.
12
+ // .stacked stacks the columns on each scale into one per row, .points marks
13
+ // each line's values with dots, and .straight draws straight lines.
9
14
  //
10
15
  // Columns are full-height spans clipped to their value, as in the column
11
16
  // chart, behind an SVG of the lines and areas, as in the line chart.
@@ -17,14 +22,16 @@
17
22
  // --md-comp-mixed-chart-shape 4px, the column's end radius
18
23
  // --md-comp-mixed-chart-line-width 3px (sparkline 2px)
19
24
  // --md-comp-mixed-chart-grid-color outline-variant
25
+ // --md-comp-mixed-chart-axis-width 48px, room for each scale's .axis labels
20
26
  // --md-comp-mixed-chart-color-1..4 primary, tertiary, secondary,
21
27
  // on-surface-variant
22
28
 
23
29
  @include chart("mixed-chart");
30
+ @include chart-axis("mixed-chart");
24
31
 
25
32
  .mixed-chart {
26
33
  --md-comp-mixed-chart-column-width: 50%;
27
- --md-comp-mixed-chart-shape: 4px;
34
+ --md-comp-mixed-chart-shape: var(--md-sys-shape-corner-extra-small);
28
35
  --md-comp-mixed-chart-line-width: 3px;
29
36
 
30
37
  &.sparkline {
@@ -73,16 +80,28 @@
73
80
  &.negative {
74
81
  --mixed-chart-ends: 0 0 var(--md-comp-mixed-chart-shape) var(--md-comp-mixed-chart-shape);
75
82
  }
83
+
84
+ // A range floats, so both its ends are rounded.
85
+ &.floating {
86
+ --mixed-chart-ends: var(--md-comp-mixed-chart-shape);
87
+ }
76
88
  }
77
89
 
78
- @media (prefers-reduced-motion: no-preference) {
79
- > div > span {
80
- transition: clip-path 400ms cubic-bezier(0.2, 0, 0, 1);
90
+ @include chart-column-motion;
91
+ }
81
92
 
82
- @starting-style {
83
- clip-path: inset(var(--zero, 100%) 0 calc(100% - var(--zero, 100%)) round var(--mixed-chart-ends));
84
- }
85
- }
93
+ // Stacked columns share one column per row, and the end scale's another
94
+ // beside it. Only each stack's top segment is rounded: the last of its
95
+ // scale, with the end scale's columns after the others in the table.
96
+ .mixed-chart.stacked .mixed-chart-columns > div > span {
97
+ grid-area: 1 / 1;
98
+
99
+ &.end {
100
+ grid-column: 2;
101
+ }
102
+
103
+ &:not(:last-child, :has(+ .end)) {
104
+ --mixed-chart-ends: 0;
86
105
  }
87
106
  }
88
107
 
@@ -99,6 +118,15 @@
99
118
  stroke-dasharray: 2 8;
100
119
  }
101
120
 
121
+ // Round caps on zero-length lines: dots that keep their size at any scale.
122
+ .mixed-chart-points {
123
+ fill: none;
124
+ stroke: var(--mixed-chart-color);
125
+ stroke-width: calc(var(--md-comp-mixed-chart-line-width) * 3);
126
+ stroke-linecap: round;
127
+ vector-effect: non-scaling-stroke;
128
+ }
129
+
102
130
  .mixed-chart-series:not(.area) .mixed-chart-area {
103
131
  display: none;
104
132
  }
@@ -125,7 +153,7 @@
125
153
  inset: 0;
126
154
  z-index: -1;
127
155
  border-radius: var(--md-comp-mixed-chart-shape);
128
- background-color: color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
156
+ background-color: state-layer(var(--md-sys-color-on-surface), "hover");
129
157
  }
130
158
 
131
159
  > span {
@@ -0,0 +1,21 @@
1
+ // Dialog created by src/ts/plugins/modalDisplayPlugin.ts for a modal date or
2
+ // time picker. The dialog partial draws it as a basic dialog over a scrim,
3
+ // so a selective build needs "dialog" too; this only fits it to the picker,
4
+ // which scrolls inside it on a short screen.
5
+
6
+ dialog.display-modal {
7
+ width: auto;
8
+ min-width: 0;
9
+ max-height: calc(100% - 48px);
10
+
11
+ > :is(.datepicker-container, .timepicker-container) {
12
+ flex: 1 1 auto;
13
+ min-height: 0;
14
+ // The dialog sizes to the picker, so the time picker's AM and PM
15
+ // buttons, which run past its 325px, stay inside.
16
+ max-width: none;
17
+ padding: 0;
18
+ overflow: auto;
19
+ background-color: transparent;
20
+ }
21
+ }