@expressivecss/expressive 0.14.1 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/CHANGELOG.md +1589 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19304 -12021
  4. package/dist/css/expressive.css.map +1 -1
  5. package/dist/css/expressive.min.css +1 -1
  6. package/dist/css/expressive.min.css.map +1 -1
  7. package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
  8. package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
  9. package/dist/fonts/LICENSE-noto-sans-thai +93 -0
  10. package/dist/fonts/material-symbols-outlined.woff2 +0 -0
  11. package/dist/fonts/material-symbols-rounded.woff2 +0 -0
  12. package/dist/fonts/material-symbols-sharp.woff2 +0 -0
  13. package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
  14. package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
  15. package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
  16. package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
  17. package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
  18. package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
  19. package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
  20. package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
  21. package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
  22. package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
  23. package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
  24. package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
  25. package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
  26. package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
  27. package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
  28. package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
  29. package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
  30. package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
  31. package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
  32. package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
  33. package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
  34. package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
  35. package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
  36. package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
  37. package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
  38. package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
  39. package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
  40. package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
  41. package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
  42. package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
  43. package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
  44. package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
  45. package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
  46. package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
  47. package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
  48. package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
  49. package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
  50. package/dist/fonts/roboto-greek-400.woff2 +0 -0
  51. package/dist/fonts/roboto-greek-500.woff2 +0 -0
  52. package/dist/fonts/roboto-greek-700.woff2 +0 -0
  53. package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
  54. package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
  55. package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
  56. package/dist/fonts/roboto-latin-700.woff2 +0 -0
  57. package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
  58. package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
  59. package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
  60. package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
  61. package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
  62. package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
  63. package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
  64. package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
  66. package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
  67. package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
  68. package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
  69. package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
  70. package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
  72. package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
  73. package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
  74. package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-A7ALMYUR.mjs → chunk-4QUCNFSD.mjs} +68 -125
  76. package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
  77. package/dist/js/chunks/{chunk-4TKTLGEM.mjs → chunk-4TRZ2AER.mjs} +35 -41
  78. package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-BG6ZRB5H.mjs → chunk-5KIHWJI2.mjs} +40 -26
  80. package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
  81. package/dist/js/chunks/{chunk-YDCS5S3J.mjs → chunk-67ZPPKXS.mjs} +20 -33
  82. package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
  83. package/dist/js/chunks/{chunk-3DHK5CZU.mjs → chunk-6FSEUFVW.mjs} +40 -29
  84. package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
  85. package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
  86. package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
  87. package/dist/js/chunks/{chunk-GVGT6MIU.mjs → chunk-75E5EDJF.mjs} +3 -11
  88. package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
  89. package/dist/js/chunks/{chunk-TBM3FT7G.mjs → chunk-7NLUI3RR.mjs} +148 -78
  90. package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
  92. package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
  94. package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
  96. package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
  98. package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
  99. package/dist/js/chunks/{chunk-NS2UMNZV.mjs → chunk-ANKFWNWT.mjs} +21 -45
  100. package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
  101. package/dist/js/chunks/{chunk-GIW4K4SE.mjs → chunk-B7DQFHA5.mjs} +37 -53
  102. package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
  103. package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
  104. package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
  105. package/dist/js/chunks/{chunk-GUB3TNO2.mjs → chunk-BPF3I2MN.mjs} +109 -27
  106. package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
  108. package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-JIDMQGK6.mjs → chunk-CSYWKEK3.mjs} +322 -223
  110. package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
  111. package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
  112. package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
  114. package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
  115. package/dist/js/chunks/{chunk-QDAL4IYN.mjs → chunk-EC26RU2D.mjs} +11 -29
  116. package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
  117. package/dist/js/chunks/{chunk-3GVFZ4XO.mjs → chunk-EVCVFEV3.mjs} +238 -152
  118. package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
  119. package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
  120. package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
  121. package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
  122. package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
  123. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  124. package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
  125. package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
  127. package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
  128. package/dist/js/chunks/{chunk-ZAS25YFD.mjs → chunk-ILDRRG7T.mjs} +21 -23
  129. package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
  131. package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
  133. package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
  134. package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
  135. package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-KHV6DZXX.mjs → chunk-KZPSAXIU.mjs} +156 -46
  137. package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
  139. package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
  140. package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
  141. package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
  143. package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
  145. package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
  146. package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
  147. package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
  148. package/dist/js/chunks/{chunk-Z2NRKI7R.mjs → chunk-OP43LLIC.mjs} +44 -73
  149. package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
  151. package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
  152. package/dist/js/chunks/{chunk-PM655FXL.mjs → chunk-OYNUDOHR.mjs} +20 -48
  153. package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
  154. package/dist/js/chunks/{chunk-UEZUJQ66.mjs → chunk-P6DRQ6KS.mjs} +36 -31
  155. package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
  157. package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
  158. package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
  159. package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
  160. package/dist/js/chunks/{chunk-5HQSGDZ5.mjs → chunk-QXKWVHBD.mjs} +286 -203
  161. package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
  162. package/dist/js/chunks/{chunk-DAIU5SLG.mjs → chunk-ROH2HDB4.mjs} +7 -6
  163. package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
  164. package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
  165. package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
  166. package/dist/js/chunks/{chunk-FS7XY3HT.mjs → chunk-SPPHF7YZ.mjs} +36 -29
  167. package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
  169. package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
  170. package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
  171. package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
  172. package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
  173. package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
  175. package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
  177. package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-4HZMB7LI.mjs → chunk-VGY4M57S.mjs} +281 -135
  179. package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
  181. package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
  183. package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-S3XDFGSZ.mjs → chunk-VMY55K2X.mjs} +92 -141
  185. package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
  186. package/dist/js/chunks/{chunk-UEXCIMJZ.mjs → chunk-VR3L2WN5.mjs} +11 -17
  187. package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  189. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
  191. package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
  193. package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
  194. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
  195. package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
  197. package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
  199. package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
  201. package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
  202. package/dist/js/chunks/{chunk-MZ6Z24BX.mjs → chunk-ZJNLAGY5.mjs} +19 -34
  203. package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
  205. package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
  206. package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
  207. package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
  208. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
  209. package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
  211. package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
  212. package/dist/js/expressive.cjs +10333 -4070
  213. package/dist/js/expressive.cjs.map +4 -4
  214. package/dist/js/expressive.js +10333 -4070
  215. package/dist/js/expressive.js.map +4 -4
  216. package/dist/js/expressive.min.js +23 -25
  217. package/dist/js/expressive.min.js.map +4 -4
  218. package/dist/js/expressive.mjs +184 -69
  219. package/dist/js/expressive.mjs.map +2 -2
  220. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  221. package/dist/js/internal/behaviors/copy.mjs +9 -0
  222. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  223. package/dist/js/internal/behaviors/dataTables.mjs +10 -0
  224. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  226. package/dist/js/internal/behaviors/forms.mjs +2 -2
  227. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  228. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  229. package/dist/js/internal/behaviors/lists.mjs +8 -0
  230. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  232. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  234. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  235. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  236. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  237. package/dist/js/internal/behaviors/theme.mjs +8 -0
  238. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/tour.mjs +8 -0
  240. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  242. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  243. package/dist/js/internal/components/appBar.mjs +3 -2
  244. package/dist/js/internal/components/autocomplete.mjs +4 -4
  245. package/dist/js/internal/components/backToTop.mjs +9 -0
  246. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  247. package/dist/js/internal/components/barChart.mjs +5 -4
  248. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  249. package/dist/js/internal/components/buttons.mjs +3 -3
  250. package/dist/js/internal/components/cards.mjs +3 -3
  251. package/dist/js/internal/components/carousel.mjs +3 -3
  252. package/dist/js/internal/components/cascader.mjs +10 -0
  253. package/dist/js/internal/components/cascader.mjs.map +7 -0
  254. package/dist/js/internal/components/characterCounter.mjs +3 -2
  255. package/dist/js/internal/components/chips.mjs +6 -5
  256. package/dist/js/internal/components/colorPicker.mjs +9 -0
  257. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  258. package/dist/js/internal/components/columnChart.mjs +4 -3
  259. package/dist/js/internal/components/commandPalette.mjs +3 -3
  260. package/dist/js/internal/components/confetti.mjs +3 -2
  261. package/dist/js/internal/components/currencyInput.mjs +9 -0
  262. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  263. package/dist/js/internal/components/datepicker.mjs +11 -8
  264. package/dist/js/internal/components/expandingCard.mjs +3 -3
  265. package/dist/js/internal/components/funnelChart.mjs +10 -0
  266. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  267. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  268. package/dist/js/internal/components/hoverCard.mjs +9 -0
  269. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  270. package/dist/js/internal/components/index.mjs +133 -64
  271. package/dist/js/internal/components/inputMask.mjs +9 -0
  272. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  273. package/dist/js/internal/components/keypad.mjs +9 -0
  274. package/dist/js/internal/components/keypad.mjs.map +7 -0
  275. package/dist/js/internal/components/lightbox.mjs +3 -3
  276. package/dist/js/internal/components/lineChart.mjs +29 -4
  277. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  278. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  279. package/dist/js/internal/components/mapView.mjs +3 -3
  280. package/dist/js/internal/components/menu.mjs +3 -3
  281. package/dist/js/internal/components/menubar.mjs +10 -0
  282. package/dist/js/internal/components/menubar.mjs.map +7 -0
  283. package/dist/js/internal/components/messageScroller.mjs +3 -3
  284. package/dist/js/internal/components/mixedChart.mjs +5 -4
  285. package/dist/js/internal/components/navigationRail.mjs +3 -2
  286. package/dist/js/internal/components/particles.mjs +3 -2
  287. package/dist/js/internal/components/pieChart.mjs +4 -3
  288. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  289. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  290. package/dist/js/internal/components/questionnaire.mjs +3 -3
  291. package/dist/js/internal/components/radarChart.mjs +4 -3
  292. package/dist/js/internal/components/radialChart.mjs +4 -3
  293. package/dist/js/internal/components/registry.mjs +59 -40
  294. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  295. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  296. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  297. package/dist/js/internal/components/scatterChart.mjs +10 -0
  298. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  299. package/dist/js/internal/components/scrollspy.mjs +3 -2
  300. package/dist/js/internal/components/select.mjs +4 -4
  301. package/dist/js/internal/components/showMore.mjs +9 -0
  302. package/dist/js/internal/components/showMore.mjs.map +7 -0
  303. package/dist/js/internal/components/slider.mjs +3 -3
  304. package/dist/js/internal/components/snackbar.mjs +2 -2
  305. package/dist/js/internal/components/swipeActions.mjs +9 -0
  306. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  307. package/dist/js/internal/components/tabs.mjs +3 -4
  308. package/dist/js/internal/components/timepicker.mjs +5 -4
  309. package/dist/js/internal/components/tooltip.mjs +3 -3
  310. package/dist/js/internal/components/treeSelect.mjs +13 -0
  311. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  312. package/dist/js/internal/components/treemapChart.mjs +10 -0
  313. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  314. package/dist/js/internal/core/component.mjs +2 -1
  315. package/dist/js/internal/core/formControl.mjs +12 -0
  316. package/dist/js/internal/core/formControl.mjs.map +7 -0
  317. package/dist/js/internal/core/spring.mjs +11 -0
  318. package/dist/js/internal/core/spring.mjs.map +7 -0
  319. package/dist/js/internal/core/utils.mjs +11 -3
  320. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  321. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  322. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  323. package/dist/js/modular.mjs +175 -69
  324. package/dist/types/behaviors/bottomSheets.d.ts +19 -3
  325. package/dist/types/behaviors/copy.d.ts +18 -0
  326. package/dist/types/behaviors/dataTables.d.ts +129 -0
  327. package/dist/types/behaviors/dialogs.d.ts +27 -1
  328. package/dist/types/behaviors/forms.d.ts +68 -2
  329. package/dist/types/behaviors/imageCompare.d.ts +12 -0
  330. package/dist/types/behaviors/lists.d.ts +12 -0
  331. package/dist/types/behaviors/paneResize.d.ts +29 -0
  332. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  333. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  334. package/dist/types/behaviors/sortable.d.ts +28 -0
  335. package/dist/types/behaviors/theme.d.ts +22 -0
  336. package/dist/types/behaviors/tour.d.ts +36 -0
  337. package/dist/types/behaviors/transferList.d.ts +51 -0
  338. package/dist/types/components/appBar.d.ts +5 -6
  339. package/dist/types/components/autocomplete.d.ts +92 -17
  340. package/dist/types/components/backToTop.d.ts +36 -0
  341. package/dist/types/components/barChart.d.ts +3 -6
  342. package/dist/types/components/buttonGroup.d.ts +2 -4
  343. package/dist/types/components/buttons.d.ts +5 -5
  344. package/dist/types/components/cards.d.ts +3 -16
  345. package/dist/types/components/carousel.d.ts +9 -15
  346. package/dist/types/components/cascader.d.ts +130 -0
  347. package/dist/types/components/characterCounter.d.ts +2 -15
  348. package/dist/types/components/chips.d.ts +65 -19
  349. package/dist/types/components/colorPicker.d.ts +42 -0
  350. package/dist/types/components/columnChart.d.ts +23 -10
  351. package/dist/types/components/commandPalette.d.ts +11 -16
  352. package/dist/types/components/confetti.d.ts +2 -4
  353. package/dist/types/components/currencyInput.d.ts +59 -0
  354. package/dist/types/components/datepicker.d.ts +59 -36
  355. package/dist/types/components/expandingCard.d.ts +6 -6
  356. package/dist/types/components/funnelChart.d.ts +38 -0
  357. package/dist/types/components/heatmapChart.d.ts +39 -8
  358. package/dist/types/components/hoverCard.d.ts +58 -0
  359. package/dist/types/components/index.d.ts +17 -1
  360. package/dist/types/components/inputMask.d.ts +30 -0
  361. package/dist/types/components/keypad.d.ts +66 -0
  362. package/dist/types/components/lightbox.d.ts +17 -25
  363. package/dist/types/components/lineChart.d.ts +176 -10
  364. package/dist/types/components/loadingOverlay.d.ts +42 -0
  365. package/dist/types/components/mapView.d.ts +26 -17
  366. package/dist/types/components/menu.d.ts +61 -22
  367. package/dist/types/components/menubar.d.ts +37 -0
  368. package/dist/types/components/messageScroller.d.ts +2 -14
  369. package/dist/types/components/mixedChart.d.ts +15 -6
  370. package/dist/types/components/navigationRail.d.ts +16 -5
  371. package/dist/types/components/particles.d.ts +8 -4
  372. package/dist/types/components/pieChart.d.ts +32 -7
  373. package/dist/types/components/pullToRefresh.d.ts +80 -0
  374. package/dist/types/components/questionnaire.d.ts +58 -16
  375. package/dist/types/components/radarChart.d.ts +10 -6
  376. package/dist/types/components/radialChart.d.ts +58 -8
  377. package/dist/types/components/registry.d.ts +77 -3
  378. package/dist/types/components/richTextEditor.d.ts +6 -14
  379. package/dist/types/components/sankeyChart.d.ts +72 -0
  380. package/dist/types/components/scatterChart.d.ts +102 -0
  381. package/dist/types/components/scrollspy.d.ts +3 -5
  382. package/dist/types/components/select.d.ts +43 -30
  383. package/dist/types/components/showMore.d.ts +51 -0
  384. package/dist/types/components/slider.d.ts +5 -15
  385. package/dist/types/components/snackbar.d.ts +62 -0
  386. package/dist/types/components/swipeActions.d.ts +81 -0
  387. package/dist/types/components/tabs.d.ts +93 -27
  388. package/dist/types/components/timepicker.d.ts +114 -20
  389. package/dist/types/components/tooltip.d.ts +56 -20
  390. package/dist/types/components/treeSelect.d.ts +106 -0
  391. package/dist/types/components/treemapChart.d.ts +56 -0
  392. package/dist/types/core/component.d.ts +43 -25
  393. package/dist/types/core/formControl.d.ts +21 -0
  394. package/dist/types/core/spring.d.ts +20 -0
  395. package/dist/types/core/utils.d.ts +85 -72
  396. package/dist/types/modular.d.ts +33 -1
  397. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -7
  398. package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
  399. package/package.json +10 -8
  400. package/src/sass/README.md +27 -18
  401. package/src/sass/abstracts/_breakpoints.scss +0 -1
  402. package/src/sass/abstracts/_elevation.scss +13 -7
  403. package/src/sass/abstracts/_index.scss +1 -0
  404. package/src/sass/abstracts/_mixins.scss +438 -92
  405. package/src/sass/abstracts/_spring.scss +63 -0
  406. package/src/sass/abstracts/_variables.scss +43 -15
  407. package/src/sass/base/_fonts.scss +61 -48
  408. package/src/sass/base/_global.scss +105 -34
  409. package/src/sass/base/_index.scss +3 -1
  410. package/src/sass/base/_normalize.scss +59 -114
  411. package/src/sass/base/_print.scss +21 -0
  412. package/src/sass/base/_prose.scss +68 -0
  413. package/src/sass/base/_typography.scss +9 -5
  414. package/src/sass/components/_accordion.scss +9 -16
  415. package/src/sass/components/_alert.scss +102 -0
  416. package/src/sass/components/_aura.scss +8 -3
  417. package/src/sass/components/_avatar.scss +3 -3
  418. package/src/sass/components/_back-to-top.scss +38 -0
  419. package/src/sass/components/_badges.scss +7 -13
  420. package/src/sass/components/_bar-chart.scss +41 -19
  421. package/src/sass/components/_bottom-sheet.scss +44 -16
  422. package/src/sass/components/_breadcrumb.scss +8 -1
  423. package/src/sass/components/_button-groups.scss +44 -89
  424. package/src/sass/components/_buttons.scss +156 -63
  425. package/src/sass/components/_calendar.scss +246 -0
  426. package/src/sass/components/_cards.scss +41 -68
  427. package/src/sass/components/_carousel.scss +43 -158
  428. package/src/sass/components/_cascader.scss +142 -0
  429. package/src/sass/components/_chips.scss +36 -52
  430. package/src/sass/components/_column-chart.scss +19 -12
  431. package/src/sass/components/_command-palette.scss +4 -7
  432. package/src/sass/components/_confetti.scss +0 -2
  433. package/src/sass/components/_countdown.scss +1 -1
  434. package/src/sass/components/_data-table.scss +162 -27
  435. package/src/sass/components/_datepicker.scss +57 -62
  436. package/src/sass/components/_description-list.scss +85 -0
  437. package/src/sass/components/_dialog.scss +42 -44
  438. package/src/sass/components/_docked-display.scss +1 -3
  439. package/src/sass/components/_drag-handle.scss +16 -20
  440. package/src/sass/components/_expanding-card.scss +20 -9
  441. package/src/sass/components/_fab-menu.scss +44 -32
  442. package/src/sass/components/_funnel-chart.scss +124 -0
  443. package/src/sass/components/_heatmap-chart.scss +113 -24
  444. package/src/sass/components/_icon-buttons.scss +7 -8
  445. package/src/sass/components/_icons-material-design.scss +2 -2
  446. package/src/sass/components/_image-compare.scss +108 -0
  447. package/src/sass/components/_index.scss +21 -0
  448. package/src/sass/components/_keypad.scss +182 -0
  449. package/src/sass/components/_kpi.scss +6 -11
  450. package/src/sass/components/_lightbox.scss +26 -20
  451. package/src/sass/components/_line-chart.scss +16 -2
  452. package/src/sass/components/_list.scss +59 -14
  453. package/src/sass/components/_loading-indicator.scss +1 -0
  454. package/src/sass/components/_loading-overlay.scss +105 -0
  455. package/src/sass/components/_map.scss +35 -13
  456. package/src/sass/components/_marquee.scss +3 -2
  457. package/src/sass/components/_mega-menu.scss +137 -0
  458. package/src/sass/components/_menu.scss +159 -182
  459. package/src/sass/components/_menubar.scss +59 -0
  460. package/src/sass/components/_message-scroller.scss +2 -2
  461. package/src/sass/components/_message.scss +3 -3
  462. package/src/sass/components/_mixed-chart.scss +37 -9
  463. package/src/sass/components/_modal-display.scss +21 -0
  464. package/src/sass/components/_navbar.scss +43 -65
  465. package/src/sass/components/_navigation-bar.scss +15 -77
  466. package/src/sass/components/_navigation-rail.scss +171 -121
  467. package/src/sass/components/_org-chart.scss +192 -0
  468. package/src/sass/components/_page-footer.scss +16 -13
  469. package/src/sass/components/_pagination.scss +6 -13
  470. package/src/sass/components/_panes.scss +33 -31
  471. package/src/sass/components/_particles.scss +0 -2
  472. package/src/sass/components/_pie-chart.scss +91 -11
  473. package/src/sass/components/_popover.scss +18 -5
  474. package/src/sass/components/_progress.scss +158 -35
  475. package/src/sass/components/_pull-to-refresh.scss +90 -0
  476. package/src/sass/components/_questionnaire.scss +74 -3
  477. package/src/sass/components/_radar-chart.scss +38 -10
  478. package/src/sass/components/_radial-chart.scss +113 -5
  479. package/src/sass/components/_rich-text-editor.scss +2 -2
  480. package/src/sass/components/_sankey-chart.scss +114 -0
  481. package/src/sass/components/_scatter-chart.scss +153 -0
  482. package/src/sass/components/_scrim.scss +0 -2
  483. package/src/sass/components/_scrollspy.scss +0 -2
  484. package/src/sass/components/_search.scss +26 -22
  485. package/src/sass/components/_show-more.scss +8 -0
  486. package/src/sass/components/_side-sheet.scss +23 -40
  487. package/src/sass/components/_skeleton.scss +2 -4
  488. package/src/sass/components/_snackbar.scss +27 -21
  489. package/src/sass/components/_split-button.scss +5 -5
  490. package/src/sass/components/_stat.scss +3 -8
  491. package/src/sass/components/_stepper.scss +1 -5
  492. package/src/sass/components/_swipe-actions.scss +71 -0
  493. package/src/sass/components/_tabs.scss +51 -32
  494. package/src/sass/components/_timeline.scss +12 -12
  495. package/src/sass/components/_timepicker.scss +111 -112
  496. package/src/sass/components/_toolbar.scss +35 -47
  497. package/src/sass/components/_tooltip.scss +21 -12
  498. package/src/sass/components/_tour.scss +89 -0
  499. package/src/sass/components/_transfer-list.scss +73 -0
  500. package/src/sass/components/_transitions.scss +4 -4
  501. package/src/sass/components/_tree.scss +3 -16
  502. package/src/sass/components/_treemap-chart.scss +122 -0
  503. package/src/sass/components/forms/_checkboxes.scss +140 -86
  504. package/src/sass/components/forms/_color-picker.scss +135 -0
  505. package/src/sass/components/forms/_color-swatches.scss +85 -0
  506. package/src/sass/components/forms/_drop-zone.scss +15 -9
  507. package/src/sass/components/forms/_fieldset.scss +10 -10
  508. package/src/sass/components/forms/_file-input.scss +6 -9
  509. package/src/sass/components/forms/_index.scss +3 -1
  510. package/src/sass/components/forms/_input-fields.scss +254 -90
  511. package/src/sass/components/forms/_radio-buttons.scss +40 -127
  512. package/src/sass/components/forms/_rating.scss +2 -32
  513. package/src/sass/components/forms/_select.scss +199 -23
  514. package/src/sass/components/forms/_slider.scss +140 -330
  515. package/src/sass/components/forms/_switches.scss +53 -164
  516. package/src/sass/custom.scss +10 -1
  517. package/src/sass/expressive.scss +3 -63
  518. package/src/sass/tokens/_contrast.scss +94 -0
  519. package/src/sass/tokens/_elevation.scss +16 -0
  520. package/src/sass/tokens/_index.scss +5 -0
  521. package/src/sass/tokens/_motion.scss +109 -0
  522. package/src/sass/tokens/_reference.scss +72 -141
  523. package/src/sass/tokens/_shape.scss +38 -0
  524. package/src/sass/tokens/_stacking.scss +27 -0
  525. package/src/sass/tokens/_state.scss +2 -4
  526. package/src/sass/tokens/_theme.scss +11 -2
  527. package/src/sass/tokens/_vibrant.scss +2 -5
  528. package/src/sass/utilities/_colors.scss +6 -1
  529. package/src/sass/utilities/_defer-render.scss +17 -0
  530. package/src/sass/utilities/_helpers.scss +183 -26
  531. package/src/sass/utilities/_index.scss +2 -1
  532. package/src/sass/utilities/_scroll-area.scss +0 -2
  533. package/src/sass/utilities/_spacing.scss +52 -34
  534. package/src/sass/utilities/_typescale.scss +8 -1
  535. package/src/sass/utilities/_visibility.scss +47 -76
  536. package/src/sass/utilities/_z-depth.scss +7 -4
  537. package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +0 -7
  538. package/dist/js/chunks/chunk-3GVFZ4XO.mjs.map +0 -7
  539. package/dist/js/chunks/chunk-4HZMB7LI.mjs.map +0 -7
  540. package/dist/js/chunks/chunk-4KMNFIFZ.mjs +0 -270
  541. package/dist/js/chunks/chunk-4KMNFIFZ.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-4TKTLGEM.mjs.map +0 -7
  543. package/dist/js/chunks/chunk-5BKHWHYY.mjs +0 -292
  544. package/dist/js/chunks/chunk-5BKHWHYY.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-5HQSGDZ5.mjs.map +0 -7
  546. package/dist/js/chunks/chunk-6N2XAEFK.mjs +0 -125
  547. package/dist/js/chunks/chunk-6N2XAEFK.mjs.map +0 -7
  548. package/dist/js/chunks/chunk-A7ALMYUR.mjs.map +0 -7
  549. package/dist/js/chunks/chunk-BG6ZRB5H.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-CUQPB25U.mjs +0 -55
  551. package/dist/js/chunks/chunk-CUQPB25U.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-DAIU5SLG.mjs.map +0 -7
  553. package/dist/js/chunks/chunk-FS7XY3HT.mjs.map +0 -7
  554. package/dist/js/chunks/chunk-GIW4K4SE.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-GUB3TNO2.mjs.map +0 -7
  556. package/dist/js/chunks/chunk-GVGT6MIU.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-GZKEFWPM.mjs +0 -181
  558. package/dist/js/chunks/chunk-GZKEFWPM.mjs.map +0 -7
  559. package/dist/js/chunks/chunk-HKT2S7VM.mjs +0 -48
  560. package/dist/js/chunks/chunk-HKT2S7VM.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-ILP3PDTL.mjs +0 -187
  562. package/dist/js/chunks/chunk-ILP3PDTL.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-JIDMQGK6.mjs.map +0 -7
  564. package/dist/js/chunks/chunk-KBNN3QDH.mjs +0 -7
  565. package/dist/js/chunks/chunk-KBNN3QDH.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-KHV6DZXX.mjs.map +0 -7
  567. package/dist/js/chunks/chunk-KY6U46SM.mjs +0 -345
  568. package/dist/js/chunks/chunk-KY6U46SM.mjs.map +0 -7
  569. package/dist/js/chunks/chunk-LRZMJZ3T.mjs +0 -291
  570. package/dist/js/chunks/chunk-LRZMJZ3T.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-LTWPGFBR.mjs +0 -59
  572. package/dist/js/chunks/chunk-LTWPGFBR.mjs.map +0 -7
  573. package/dist/js/chunks/chunk-MNPROCZF.mjs +0 -328
  574. package/dist/js/chunks/chunk-MNPROCZF.mjs.map +0 -7
  575. package/dist/js/chunks/chunk-MZ6Z24BX.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-NS2UMNZV.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-O5XPWXIQ.mjs +0 -406
  578. package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-PM655FXL.mjs.map +0 -7
  580. package/dist/js/chunks/chunk-QDAL4IYN.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-QERLECVU.mjs +0 -572
  582. package/dist/js/chunks/chunk-QERLECVU.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-QJABDLSD.mjs +0 -112
  584. package/dist/js/chunks/chunk-QJABDLSD.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-RHRQKTTX.mjs +0 -139
  586. package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +0 -7
  587. package/dist/js/chunks/chunk-S3XDFGSZ.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-SPETGK25.mjs +0 -59
  589. package/dist/js/chunks/chunk-SPETGK25.mjs.map +0 -7
  590. package/dist/js/chunks/chunk-TBM3FT7G.mjs.map +0 -7
  591. package/dist/js/chunks/chunk-UEXCIMJZ.mjs.map +0 -7
  592. package/dist/js/chunks/chunk-UEZUJQ66.mjs.map +0 -7
  593. package/dist/js/chunks/chunk-VGZSAFTX.mjs +0 -173
  594. package/dist/js/chunks/chunk-VGZSAFTX.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-X7OCHZVF.mjs +0 -76
  596. package/dist/js/chunks/chunk-X7OCHZVF.mjs.map +0 -7
  597. package/dist/js/chunks/chunk-YDCS5S3J.mjs.map +0 -7
  598. package/dist/js/chunks/chunk-YMSXJON6.mjs +0 -79
  599. package/dist/js/chunks/chunk-YMSXJON6.mjs.map +0 -7
  600. package/dist/js/chunks/chunk-Z2NRKI7R.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-ZAS25YFD.mjs.map +0 -7
  602. package/dist/js/chunks/chunk-ZKZKNSLC.mjs +0 -1
  603. /package/dist/js/chunks/{chunk-ZKZKNSLC.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
@@ -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
@@ -28,23 +30,37 @@
28
30
 
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
 
33
+ // Item states, interpolated after `li`. An item is any <li> that is not a
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';
41
+ $_selected: ':is(.selected, [aria-selected="true"], [aria-checked="true"])';
42
+ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
43
+
31
44
  [popover] {
32
45
  outline: none;
33
46
  padding: 0;
34
47
  border: none;
35
48
  }
36
49
 
37
- @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 {
38
54
  --md-comp-menu-container-color: var(--md-sys-color-surface-container-low);
39
- --md-comp-menu-container-shape: 16px;
40
- --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);
41
57
  --md-comp-menu-container-inactive-shape: var(--md-comp-menu-group-shape);
42
58
  --md-comp-menu-group-padding: 2px;
43
59
  --md-comp-menu-gap: 2px;
44
60
  --md-comp-menu-item-container-height: 44px;
45
- --md-comp-menu-item-container-shape: 4px;
46
- --md-comp-menu-item-edge-shape: 12px;
47
- --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);
48
64
  --md-comp-menu-item-leading-space: 16px;
49
65
  --md-comp-menu-item-trailing-space: 16px;
50
66
  --md-comp-menu-item-between-space: 12px;
@@ -67,19 +83,6 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
67
83
  --md-comp-menu-item-icon-size: 20px;
68
84
  --md-comp-menu-supporting-text-color: var(--md-sys-color-on-surface-variant);
69
85
 
70
- box-sizing: border-box;
71
- min-width: 112px;
72
- max-width: 280px;
73
- margin: 0;
74
- padding: var(--md-comp-menu-group-padding);
75
- list-style: none;
76
- background-color: var(--md-comp-menu-container-color);
77
- border-radius: var(--md-comp-menu-container-shape);
78
- color: var(--md-comp-menu-item-label-text-color);
79
- @include z-depth("2");
80
- transition: border-radius 200ms ease;
81
- @include glass(var(--md-comp-menu-container-color));
82
-
83
86
  // The [vibrant] arms are not a second mapping - they are the statement that
84
87
  // a menu on a vibrant surface IS a vibrant menu. Without them the foundation
85
88
  // paints the container tertiary-container while the selected item keeps the
@@ -112,14 +115,35 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
112
115
  --md-sys-color-on-tertiary
113
116
  );
114
117
  }
118
+ }
115
119
 
116
- > li {
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
+ }
139
+
140
+ #{$_rows} {
117
141
  box-sizing: border-box;
118
142
  margin: 0;
119
143
  padding: 0;
120
144
  width: 100%;
121
145
  cursor: pointer;
122
- text-align: left;
146
+ text-align: start;
123
147
  border-radius: var(--md-comp-menu-item-container-shape);
124
148
 
125
149
  // The bare-span arm is the non-interactive item. It has to exclude icons,
@@ -188,7 +212,8 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
188
212
  // butted against the label instead of flush right.
189
213
  //
190
214
  // Leading stays the default; a trailing icon names its side, the same way
191
- // a field icon must (see rule 3 in CLAUDE.md).
215
+ // a field icon must (see rule 3 under "HTML semantics" in
216
+ // docs/development-notes.md).
192
217
  > :is(a, button) > #{$icon}:is(.suffix, :last-child:not(:only-child)) {
193
218
  margin-inline-start: auto;
194
219
  color: var(--md-comp-menu-item-trailing-icon-color);
@@ -209,111 +234,94 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
209
234
  }
210
235
  }
211
236
 
212
- > li:not(.divider, .optgroup, .gap, .label) {
213
- min-height: var(--md-comp-menu-item-container-height);
237
+ #{$_rows} {
238
+ &#{$_item} {
239
+ min-height: var(--md-comp-menu-item-container-height);
240
+ }
214
241
  }
215
242
 
216
- > li:not(.divider, .optgroup, .gap, .label):first-child {
243
+ > li#{$_item}:first-child {
217
244
  border-radius: var(--md-comp-menu-item-edge-shape)
218
245
  var(--md-comp-menu-item-edge-shape)
219
246
  var(--md-comp-menu-item-container-shape)
220
247
  var(--md-comp-menu-item-container-shape);
221
248
  }
222
249
 
223
- > li:not(.divider, .optgroup, .gap, .label):last-child {
250
+ > li#{$_item}:last-child {
224
251
  border-radius: var(--md-comp-menu-item-container-shape)
225
252
  var(--md-comp-menu-item-container-shape)
226
253
  var(--md-comp-menu-item-edge-shape) var(--md-comp-menu-item-edge-shape);
227
254
  }
228
255
 
229
- // Hover / press sit on extra-small corners and do not span the container.
230
- > li:not(
231
- .disabled,
232
- [aria-disabled="true"],
233
- .divider,
234
- .optgroup,
235
- .gap,
236
- .label
237
- ):hover,
238
- > li.active:not(.selected, [aria-selected="true"], [aria-checked="true"]) {
239
- background-color: color-mix(
240
- in oklab,
241
- var(--md-comp-menu-item-label-text-color) 8%,
242
- transparent
243
- );
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);
244
262
  }
245
263
 
246
- > li:not(
247
- .disabled,
248
- [aria-disabled="true"],
249
- .divider,
250
- .optgroup,
251
- .gap,
252
- .label
253
- ):active {
254
- background-color: color-mix(
255
- in oklab,
256
- var(--md-comp-menu-item-label-text-color) 10%,
257
- transparent
258
- );
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);
259
269
  }
260
270
 
261
- // :not(.divider) only buys specificity: menu-item.selected.shape is 12dp
262
- // unconditionally, so it has to outrank the first/last-child edge rule that
263
- // would otherwise leave a selected end item with 4dp inner corners.
264
- > li:is(.selected, [aria-selected="true"], [aria-checked="true"]):not(
265
- .divider
266
- ) {
267
- border-radius: var(--md-comp-menu-item-selected-container-shape);
268
- background-color: var(--md-comp-menu-item-selected-container-color);
269
- color: var(--md-comp-menu-item-selected-label-text-color);
270
-
271
- > :is(a, button, #{$icon-label}) {
272
- 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");
273
276
  }
274
277
 
275
- > :is(a, button, #{$icon-label}) > #{$icon},
276
- > #{$icon} {
277
- 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");
278
280
  }
279
281
 
280
- > :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);
281
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
+ }
282
303
  }
283
- }
284
304
 
285
- > li:is(.selected, [aria-selected="true"], [aria-checked="true"]):hover {
286
- background-color: color-mix(
287
- in oklab,
288
- var(--md-comp-menu-item-selected-label-text-color) 8%,
289
- var(--md-comp-menu-item-selected-container-color)
290
- );
291
- }
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
+ }
292
308
 
293
- > li:is(.selected, [aria-selected="true"], [aria-checked="true"]):is(
294
- :focus,
295
- :focus-visible,
296
- :active
297
- ) {
298
- background-color: color-mix(
299
- in oklab,
300
- var(--md-comp-menu-item-selected-label-text-color) 10%,
301
- var(--md-comp-menu-item-selected-container-color)
302
- );
303
- }
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
+ }
304
312
 
305
- > li:focus-visible {
306
- outline: 3px solid var(--md-sys-color-secondary);
307
- outline-offset: -3px;
308
- }
313
+ &:focus-visible {
314
+ outline: 3px solid var(--md-sys-color-secondary);
315
+ outline-offset: -3px;
316
+ }
309
317
 
310
- > li:is(.disabled, [aria-disabled="true"]) {
311
- pointer-events: none;
312
- opacity: 0.38;
318
+ &:is(.disabled, [aria-disabled="true"]) {
319
+ pointer-events: none;
320
+ opacity: 0.38;
321
+ }
313
322
  }
314
323
 
315
324
  // Inset divider — selection and rules do not span the container.
316
- > hr,
317
325
  > li.divider {
318
326
  display: block;
319
327
  width: calc(100% - 8px);
@@ -365,21 +373,21 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
365
373
  // blur the menu itself. Grouped menus stay solid.
366
374
  backdrop-filter: none;
367
375
 
368
- > li:not(.divider, .optgroup, .gap, .label) {
376
+ > li#{$_segment} {
369
377
  padding-inline: var(--md-comp-menu-group-padding);
370
378
  background-color: var(--md-comp-menu-container-color);
371
379
  border-radius: 0;
372
380
  }
373
381
 
374
- > li:not(.divider, .optgroup, .gap, .label):first-child,
375
- > li.gap + li:not(.divider, .optgroup, .gap, .label) {
382
+ > li#{$_segment}:first-child,
383
+ > li.gap + li#{$_segment} {
376
384
  padding-block-start: var(--md-comp-menu-group-padding);
377
385
  border-start-start-radius: var(--md-comp-menu-group-shape);
378
386
  border-start-end-radius: var(--md-comp-menu-group-shape);
379
387
  }
380
388
 
381
- > li:not(.divider, .optgroup, .gap, .label):has(+ li.gap),
382
- > li:not(.divider, .optgroup, .gap, .label):last-child {
389
+ > li#{$_segment}:has(+ li.gap),
390
+ > li#{$_segment}:last-child {
383
391
  padding-block-end: var(--md-comp-menu-group-padding);
384
392
  border-end-start-radius: var(--md-comp-menu-group-shape);
385
393
  border-end-end-radius: var(--md-comp-menu-group-shape);
@@ -390,14 +398,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
390
398
  }
391
399
 
392
400
  // State layers belong to the inset item while the group surface remains.
393
- > li:not(
394
- .disabled,
395
- [aria-disabled="true"],
396
- .divider,
397
- .optgroup,
398
- .gap,
399
- .label
400
- ):hover,
401
+ > li#{$_enabled}:hover,
401
402
  > li.active,
402
403
  > li.selected,
403
404
  > li[aria-selected="true"],
@@ -405,67 +406,33 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
405
406
  background-color: var(--md-comp-menu-container-color);
406
407
  }
407
408
 
408
- > li:not(
409
- .disabled,
410
- [aria-disabled="true"],
411
- .divider,
412
- .optgroup,
413
- .gap,
414
- .label
415
- ):hover
409
+ > li#{$_enabled}:hover
416
410
  > :is(a, button, #{$icon-label}),
417
- > li.active:not(.selected, [aria-selected="true"], [aria-checked="true"])
411
+ > li.active#{$_unselected}
418
412
  > :is(a, button, #{$icon-label}) {
419
413
  border-radius: var(--md-comp-menu-item-container-shape);
420
- background-color: color-mix(
421
- in oklab,
422
- var(--md-comp-menu-item-label-text-color) 8%,
423
- transparent
424
- );
414
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "hover");
425
415
  }
426
416
 
427
- > li:not(
428
- .disabled,
429
- [aria-disabled="true"],
430
- .divider,
431
- .optgroup,
432
- .gap,
433
- .label
434
- ):active
417
+ > li#{$_enabled}:active
435
418
  > :is(a, button, #{$icon-label}) {
436
- background-color: color-mix(
437
- in oklab,
438
- var(--md-comp-menu-item-label-text-color) 10%,
439
- transparent
440
- );
419
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "pressed");
441
420
  }
442
421
 
443
- > li:is(.selected, [aria-selected="true"], [aria-checked="true"])
422
+ > li#{$_selected}
444
423
  > :is(a, button, #{$icon-label}) {
445
424
  border-radius: var(--md-comp-menu-item-selected-container-shape);
446
425
  background-color: var(--md-comp-menu-item-selected-container-color);
447
426
  }
448
427
 
449
- > li:is(.selected, [aria-selected="true"], [aria-checked="true"]):hover
428
+ > li#{$_selected}:hover
450
429
  > :is(a, button, #{$icon-label}) {
451
- background-color: color-mix(
452
- in oklab,
453
- var(--md-comp-menu-item-selected-label-text-color) 8%,
454
- var(--md-comp-menu-item-selected-container-color)
455
- );
430
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "hover", var(--md-comp-menu-item-selected-container-color));
456
431
  }
457
432
 
458
- > li:is(.selected, [aria-selected="true"], [aria-checked="true"]):is(
459
- :focus,
460
- :focus-visible,
461
- :active
462
- )
433
+ > li#{$_selected}:is(:focus, :focus-visible, :active)
463
434
  > :is(a, button, #{$icon-label}) {
464
- background-color: color-mix(
465
- in oklab,
466
- var(--md-comp-menu-item-selected-label-text-color) 10%,
467
- var(--md-comp-menu-item-selected-container-color)
468
- );
435
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "pressed", var(--md-comp-menu-item-selected-container-color));
469
436
  }
470
437
  }
471
438
 
@@ -481,6 +448,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
481
448
  margin-inline-start: auto;
482
449
  background-color: var(--md-comp-menu-item-trailing-icon-color);
483
450
  mask: $_menu-chevron center / 20px no-repeat;
451
+ @include forced-colors-fill;
484
452
  }
485
453
  }
486
454
 
@@ -489,14 +457,21 @@ menu[id] {
489
457
 
490
458
  display: none;
491
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;
492
463
  left: 0;
493
464
  top: 0;
494
- z-index: 9999;
495
465
  overflow-y: auto;
496
466
  opacity: 0;
497
467
  user-select: none;
498
468
  transform-origin: 0 0;
499
469
 
470
+ // Menu opens the surface as a manual popover, in the top layer.
471
+ &:popover-open {
472
+ display: block;
473
+ }
474
+
500
475
  // Nested flyouts sit outside the list box; do not clip them.
501
476
  &:has(> li > menu) {
502
477
  overflow: visible;
@@ -531,7 +506,13 @@ menu[id] li > menu {
531
506
  opacity 180ms ease,
532
507
  transform 180ms ease,
533
508
  visibility 180ms ease,
534
- 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
+ }
535
516
  }
536
517
 
537
518
  @media (hover: hover) and (pointer: fine) {
@@ -540,7 +521,7 @@ menu[id] li > menu {
540
521
  opacity: 1;
541
522
  pointer-events: auto;
542
523
  transform: none;
543
- --md-comp-menu-container-shape: 16px;
524
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
544
525
  }
545
526
  }
546
527
 
@@ -549,13 +530,22 @@ menu[id] li.open > menu {
549
530
  opacity: 1;
550
531
  pointer-events: auto;
551
532
  transform: none;
552
- --md-comp-menu-container-shape: 16px;
533
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
553
534
  }
554
535
 
555
536
  menu[id] li.submenu-start > menu {
556
537
  inset-inline-start: auto;
557
538
  inset-inline-end: 100%;
558
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
+ }
559
549
  }
560
550
 
561
551
  menu[id] li.submenu-start:is(:hover, :focus-within, .open) > menu {
@@ -568,18 +558,9 @@ menu[id] li.submenu-start:is(:hover, :focus-within, .open) > menu {
568
558
  // item gets focus here - inherits :focus-visible from the element that had it,
569
559
  // so opening the menu by keyboard still lights the item and opening it by
570
560
  // pointer still does not.
571
- menu[id] > li:focus-visible {
572
- background-color: color-mix(
573
- in oklab,
574
- var(--md-comp-menu-item-label-text-color) 10%,
575
- transparent
576
- );
577
- }
578
-
579
- menu[id]
580
- > li:focus-visible:not(.selected, [aria-selected="true"], [aria-checked="true"]) {
581
- outline: 3px solid var(--md-sys-color-secondary);
582
- outline-offset: -3px;
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");
583
564
  }
584
565
 
585
566
  menu[id].grouped > li:focus-visible {
@@ -587,14 +568,10 @@ menu[id].grouped > li:focus-visible {
587
568
  }
588
569
 
589
570
  menu[id].grouped
590
- > li:focus-visible:not(.selected, [aria-selected="true"], [aria-checked="true"])
571
+ > li:focus-visible#{$_unselected}
591
572
  > :is(a, button, span:not(.material-symbols, .badge, .supporting-text)) {
592
573
  border-radius: var(--md-comp-menu-item-container-shape);
593
- background-color: color-mix(
594
- in oklab,
595
- var(--md-comp-menu-item-label-text-color) 10%,
596
- transparent
597
- );
574
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "focus");
598
575
  }
599
576
 
600
577
  @media (prefers-reduced-motion: reduce) {
@@ -618,8 +595,8 @@ menu[id].grouped
618
595
  // The trigger stays in its pressed state for as long as its menu is open.
619
596
  &[aria-expanded="true"] {
620
597
  background-image: linear-gradient(
621
- color-mix(in oklab, currentcolor 10%, transparent),
622
- color-mix(in oklab, currentcolor 10%, transparent)
598
+ state-layer(currentcolor, "pressed"),
599
+ state-layer(currentcolor, "pressed")
623
600
  );
624
601
  }
625
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