@expressivecss/expressive 0.15.0 → 0.17.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 (609) hide show
  1. package/CHANGELOG.md +1807 -1
  2. package/README.md +9 -8
  3. package/dist/css/expressive.css +19176 -11958
  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-26VUH75M.mjs +102 -0
  64. package/dist/js/chunks/chunk-26VUH75M.mjs.map +7 -0
  65. package/dist/js/chunks/chunk-2LFCOGC3.mjs +233 -0
  66. package/dist/js/chunks/chunk-2LFCOGC3.mjs.map +7 -0
  67. package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-36GELQGX.mjs} +29 -46
  68. package/dist/js/chunks/chunk-36GELQGX.mjs.map +7 -0
  69. package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-3FKWIRHW.mjs} +15 -29
  70. package/dist/js/chunks/chunk-3FKWIRHW.mjs.map +7 -0
  71. package/dist/js/chunks/chunk-3KF65KGL.mjs +209 -0
  72. package/dist/js/chunks/chunk-3KF65KGL.mjs.map +7 -0
  73. package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-3KLZRQZI.mjs} +88 -116
  74. package/dist/js/chunks/chunk-3KLZRQZI.mjs.map +7 -0
  75. package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-3XORNED5.mjs} +3 -11
  76. package/dist/js/chunks/chunk-3XORNED5.mjs.map +7 -0
  77. package/dist/js/chunks/chunk-4WBGAQN3.mjs +113 -0
  78. package/dist/js/chunks/chunk-4WBGAQN3.mjs.map +7 -0
  79. package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-5F4URJHL.mjs} +19 -30
  80. package/dist/js/chunks/chunk-5F4URJHL.mjs.map +7 -0
  81. package/dist/js/chunks/chunk-67UNY7RH.mjs +299 -0
  82. package/dist/js/chunks/chunk-67UNY7RH.mjs.map +7 -0
  83. package/dist/js/chunks/chunk-7CXNATJS.mjs +97 -0
  84. package/dist/js/chunks/chunk-7CXNATJS.mjs.map +7 -0
  85. package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-7X44MKEQ.mjs} +43 -48
  86. package/dist/js/chunks/chunk-7X44MKEQ.mjs.map +7 -0
  87. package/dist/js/chunks/chunk-7ZAMOMGY.mjs +440 -0
  88. package/dist/js/chunks/chunk-7ZAMOMGY.mjs.map +7 -0
  89. package/dist/js/chunks/chunk-AEG6LOAJ.mjs +54 -0
  90. package/dist/js/chunks/chunk-AEG6LOAJ.mjs.map +7 -0
  91. package/dist/js/chunks/chunk-AQNFCJJ5.mjs +135 -0
  92. package/dist/js/chunks/chunk-AQNFCJJ5.mjs.map +7 -0
  93. package/dist/js/chunks/chunk-B55LWKBM.mjs +75 -0
  94. package/dist/js/chunks/chunk-B55LWKBM.mjs.map +7 -0
  95. package/dist/js/chunks/chunk-BB5VXYXT.mjs +28 -0
  96. package/dist/js/chunks/chunk-BB5VXYXT.mjs.map +7 -0
  97. package/dist/js/chunks/chunk-BDATLH3H.mjs +108 -0
  98. package/dist/js/chunks/chunk-BDATLH3H.mjs.map +7 -0
  99. package/dist/js/chunks/chunk-CWMQOT4O.mjs +232 -0
  100. package/dist/js/chunks/chunk-CWMQOT4O.mjs.map +7 -0
  101. package/dist/js/chunks/chunk-CY2CTOVM.mjs +81 -0
  102. package/dist/js/chunks/chunk-CY2CTOVM.mjs.map +7 -0
  103. package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-DWA5UYLJ.mjs} +363 -218
  104. package/dist/js/chunks/chunk-DWA5UYLJ.mjs.map +7 -0
  105. package/dist/js/chunks/chunk-EB2V4OKL.mjs +79 -0
  106. package/dist/js/chunks/chunk-EB2V4OKL.mjs.map +7 -0
  107. package/dist/js/chunks/chunk-EWO662ZC.mjs +188 -0
  108. package/dist/js/chunks/chunk-EWO662ZC.mjs.map +7 -0
  109. package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-F7LAKFMX.mjs} +320 -141
  110. package/dist/js/chunks/chunk-F7LAKFMX.mjs.map +7 -0
  111. package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-FNIIH2LU.mjs} +20 -33
  112. package/dist/js/chunks/chunk-FNIIH2LU.mjs.map +7 -0
  113. package/dist/js/chunks/chunk-GE3YMFS6.mjs +15 -0
  114. package/dist/js/chunks/chunk-GE3YMFS6.mjs.map +7 -0
  115. package/dist/js/chunks/chunk-GFWYMWYN.mjs +125 -0
  116. package/dist/js/chunks/chunk-GFWYMWYN.mjs.map +7 -0
  117. package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
  118. package/dist/js/chunks/chunk-H5ISU45X.mjs +87 -0
  119. package/dist/js/chunks/chunk-H5ISU45X.mjs.map +7 -0
  120. package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-H6YIKFAQ.mjs} +311 -186
  121. package/dist/js/chunks/chunk-H6YIKFAQ.mjs.map +7 -0
  122. package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-HEH7E3KO.mjs} +155 -35
  123. package/dist/js/chunks/chunk-HEH7E3KO.mjs.map +7 -0
  124. package/dist/js/chunks/chunk-HQRLBTNM.mjs +152 -0
  125. package/dist/js/chunks/chunk-HQRLBTNM.mjs.map +7 -0
  126. package/dist/js/chunks/chunk-I2F7MLUU.mjs +137 -0
  127. package/dist/js/chunks/chunk-I2F7MLUU.mjs.map +7 -0
  128. package/dist/js/chunks/chunk-IQOTGGHX.mjs +797 -0
  129. package/dist/js/chunks/chunk-IQOTGGHX.mjs.map +7 -0
  130. package/dist/js/chunks/chunk-JH3YWKA6.mjs +225 -0
  131. package/dist/js/chunks/chunk-JH3YWKA6.mjs.map +7 -0
  132. package/dist/js/chunks/chunk-JOLJAYIJ.mjs +7 -0
  133. package/dist/js/chunks/chunk-JOLJAYIJ.mjs.map +7 -0
  134. package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-KOTGMCMI.mjs} +116 -24
  135. package/dist/js/chunks/chunk-KOTGMCMI.mjs.map +7 -0
  136. package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-LC4O5LFS.mjs} +21 -45
  137. package/dist/js/chunks/chunk-LC4O5LFS.mjs.map +7 -0
  138. package/dist/js/chunks/chunk-LEF33SCP.mjs +127 -0
  139. package/dist/js/chunks/chunk-LEF33SCP.mjs.map +7 -0
  140. package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-LFORZRPH.mjs} +21 -23
  141. package/dist/js/chunks/chunk-LFORZRPH.mjs.map +7 -0
  142. package/dist/js/chunks/chunk-LWLNV5EC.mjs +451 -0
  143. package/dist/js/chunks/chunk-LWLNV5EC.mjs.map +7 -0
  144. package/dist/js/chunks/chunk-LXRHUQAX.mjs +491 -0
  145. package/dist/js/chunks/chunk-LXRHUQAX.mjs.map +7 -0
  146. package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-MA2SZZFB.mjs} +82 -111
  147. package/dist/js/chunks/chunk-MA2SZZFB.mjs.map +7 -0
  148. package/dist/js/chunks/chunk-MDBZAMIV.mjs +121 -0
  149. package/dist/js/chunks/chunk-MDBZAMIV.mjs.map +7 -0
  150. package/dist/js/chunks/chunk-NODZ5VAD.mjs +75 -0
  151. package/dist/js/chunks/chunk-NODZ5VAD.mjs.map +7 -0
  152. package/dist/js/chunks/chunk-O2WJB6TH.mjs +365 -0
  153. package/dist/js/chunks/chunk-O2WJB6TH.mjs.map +7 -0
  154. package/dist/js/chunks/chunk-PCABY5BN.mjs +35 -0
  155. package/dist/js/chunks/chunk-PCABY5BN.mjs.map +7 -0
  156. package/dist/js/chunks/chunk-PWKYVMND.mjs +120 -0
  157. package/dist/js/chunks/chunk-PWKYVMND.mjs.map +7 -0
  158. package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-QHZZT7YO.mjs} +66 -38
  159. package/dist/js/chunks/chunk-QHZZT7YO.mjs.map +7 -0
  160. package/dist/js/chunks/chunk-QND56EW2.mjs +439 -0
  161. package/dist/js/chunks/chunk-QND56EW2.mjs.map +7 -0
  162. package/dist/js/chunks/chunk-QNODAANY.mjs +376 -0
  163. package/dist/js/chunks/chunk-QNODAANY.mjs.map +7 -0
  164. package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-QRO5FV3I.mjs} +156 -73
  165. package/dist/js/chunks/chunk-QRO5FV3I.mjs.map +7 -0
  166. package/dist/js/chunks/chunk-R7A7JRC5.mjs +440 -0
  167. package/dist/js/chunks/chunk-R7A7JRC5.mjs.map +7 -0
  168. package/dist/js/chunks/chunk-RKG2CBFE.mjs +74 -0
  169. package/dist/js/chunks/chunk-RKG2CBFE.mjs.map +7 -0
  170. package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-RSNS5OYS.mjs} +38 -25
  171. package/dist/js/chunks/chunk-RSNS5OYS.mjs.map +7 -0
  172. package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-RUDYMEJ3.mjs} +7 -6
  173. package/dist/js/chunks/chunk-RUDYMEJ3.mjs.map +7 -0
  174. package/dist/js/chunks/chunk-STJR62SU.mjs +161 -0
  175. package/dist/js/chunks/chunk-STJR62SU.mjs.map +7 -0
  176. package/dist/js/chunks/chunk-SUSD4UTN.mjs +220 -0
  177. package/dist/js/chunks/chunk-SUSD4UTN.mjs.map +7 -0
  178. package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-SYBOA5HC.mjs} +26 -48
  179. package/dist/js/chunks/chunk-SYBOA5HC.mjs.map +7 -0
  180. package/dist/js/chunks/chunk-T4MOBP3J.mjs +108 -0
  181. package/dist/js/chunks/chunk-T4MOBP3J.mjs.map +7 -0
  182. package/dist/js/chunks/chunk-TM7HPGTV.mjs +342 -0
  183. package/dist/js/chunks/chunk-TM7HPGTV.mjs.map +7 -0
  184. package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-TMQDZSDC.mjs} +71 -35
  185. package/dist/js/chunks/chunk-TMQDZSDC.mjs.map +7 -0
  186. package/dist/js/chunks/chunk-TVSX5YA2.mjs +48 -0
  187. package/dist/js/chunks/chunk-TVSX5YA2.mjs.map +7 -0
  188. package/dist/js/chunks/chunk-UHO5CV6K.mjs +80 -0
  189. package/dist/js/chunks/chunk-UHO5CV6K.mjs.map +7 -0
  190. package/dist/js/chunks/chunk-UKCNELUN.mjs +223 -0
  191. package/dist/js/chunks/chunk-UKCNELUN.mjs.map +7 -0
  192. package/dist/js/chunks/chunk-UKQK5GWR.mjs +167 -0
  193. package/dist/js/chunks/chunk-UKQK5GWR.mjs.map +7 -0
  194. package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-UTSLYQ65.mjs} +21 -48
  195. package/dist/js/chunks/chunk-UTSLYQ65.mjs.map +7 -0
  196. package/dist/js/chunks/chunk-VS5OJBOD.mjs +108 -0
  197. package/dist/js/chunks/chunk-VS5OJBOD.mjs.map +7 -0
  198. package/dist/js/chunks/chunk-VZMROW5A.mjs +759 -0
  199. package/dist/js/chunks/chunk-VZMROW5A.mjs.map +7 -0
  200. package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
  201. package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
  202. package/dist/js/chunks/chunk-XB6Y7P5W.mjs +69 -0
  203. package/dist/js/chunks/chunk-XB6Y7P5W.mjs.map +7 -0
  204. package/dist/js/chunks/chunk-XDAMOMVD.mjs +226 -0
  205. package/dist/js/chunks/chunk-XDAMOMVD.mjs.map +7 -0
  206. package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-XJPMW5SP.mjs} +247 -172
  207. package/dist/js/chunks/chunk-XJPMW5SP.mjs.map +7 -0
  208. package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-YKANQILZ.mjs} +16 -21
  209. package/dist/js/chunks/chunk-YKANQILZ.mjs.map +7 -0
  210. package/dist/js/chunks/chunk-YLZOJLDI.mjs +175 -0
  211. package/dist/js/chunks/chunk-YLZOJLDI.mjs.map +7 -0
  212. package/dist/js/chunks/chunk-ZK7YY322.mjs +514 -0
  213. package/dist/js/chunks/chunk-ZK7YY322.mjs.map +7 -0
  214. package/dist/js/expressive.cjs +10266 -3628
  215. package/dist/js/expressive.cjs.map +4 -4
  216. package/dist/js/expressive.js +10266 -3628
  217. package/dist/js/expressive.js.map +4 -4
  218. package/dist/js/expressive.min.js +23 -22
  219. package/dist/js/expressive.min.js.map +4 -4
  220. package/dist/js/expressive.mjs +181 -69
  221. package/dist/js/expressive.mjs.map +2 -2
  222. package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
  223. package/dist/js/internal/behaviors/copy.mjs +9 -0
  224. package/dist/js/internal/behaviors/copy.mjs.map +7 -0
  225. package/dist/js/internal/behaviors/dataTables.mjs +8 -0
  226. package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
  227. package/dist/js/internal/behaviors/dialogs.mjs +2 -2
  228. package/dist/js/internal/behaviors/forms.mjs +2 -2
  229. package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
  230. package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
  231. package/dist/js/internal/behaviors/lists.mjs +8 -0
  232. package/dist/js/internal/behaviors/lists.mjs.map +7 -0
  233. package/dist/js/internal/behaviors/paneResize.mjs +8 -0
  234. package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
  235. package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
  236. package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
  237. package/dist/js/internal/behaviors/sortable.mjs +8 -0
  238. package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
  239. package/dist/js/internal/behaviors/theme.mjs +8 -0
  240. package/dist/js/internal/behaviors/theme.mjs.map +7 -0
  241. package/dist/js/internal/behaviors/tour.mjs +8 -0
  242. package/dist/js/internal/behaviors/tour.mjs.map +7 -0
  243. package/dist/js/internal/behaviors/transferList.mjs +8 -0
  244. package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
  245. package/dist/js/internal/components/appBar.mjs +3 -2
  246. package/dist/js/internal/components/autocomplete.mjs +5 -4
  247. package/dist/js/internal/components/backToTop.mjs +9 -0
  248. package/dist/js/internal/components/backToTop.mjs.map +7 -0
  249. package/dist/js/internal/components/barChart.mjs +5 -4
  250. package/dist/js/internal/components/buttonGroup.mjs +3 -2
  251. package/dist/js/internal/components/buttons.mjs +3 -3
  252. package/dist/js/internal/components/cards.mjs +3 -3
  253. package/dist/js/internal/components/carousel.mjs +3 -3
  254. package/dist/js/internal/components/cascader.mjs +10 -0
  255. package/dist/js/internal/components/cascader.mjs.map +7 -0
  256. package/dist/js/internal/components/characterCounter.mjs +3 -2
  257. package/dist/js/internal/components/chips.mjs +7 -5
  258. package/dist/js/internal/components/colorPicker.mjs +9 -0
  259. package/dist/js/internal/components/colorPicker.mjs.map +7 -0
  260. package/dist/js/internal/components/columnChart.mjs +4 -3
  261. package/dist/js/internal/components/commandPalette.mjs +3 -3
  262. package/dist/js/internal/components/confetti.mjs +3 -2
  263. package/dist/js/internal/components/currencyInput.mjs +9 -0
  264. package/dist/js/internal/components/currencyInput.mjs.map +7 -0
  265. package/dist/js/internal/components/datepicker.mjs +12 -8
  266. package/dist/js/internal/components/expandingCard.mjs +3 -3
  267. package/dist/js/internal/components/funnelChart.mjs +10 -0
  268. package/dist/js/internal/components/funnelChart.mjs.map +7 -0
  269. package/dist/js/internal/components/heatmapChart.mjs +4 -3
  270. package/dist/js/internal/components/hoverCard.mjs +9 -0
  271. package/dist/js/internal/components/hoverCard.mjs.map +7 -0
  272. package/dist/js/internal/components/index.mjs +131 -65
  273. package/dist/js/internal/components/inputMask.mjs +9 -0
  274. package/dist/js/internal/components/inputMask.mjs.map +7 -0
  275. package/dist/js/internal/components/keypad.mjs +3 -3
  276. package/dist/js/internal/components/lightbox.mjs +3 -3
  277. package/dist/js/internal/components/lineChart.mjs +41 -4
  278. package/dist/js/internal/components/loadingOverlay.mjs +9 -0
  279. package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
  280. package/dist/js/internal/components/mapView.mjs +3 -3
  281. package/dist/js/internal/components/menu.mjs +3 -3
  282. package/dist/js/internal/components/menubar.mjs +10 -0
  283. package/dist/js/internal/components/menubar.mjs.map +7 -0
  284. package/dist/js/internal/components/messageScroller.mjs +3 -3
  285. package/dist/js/internal/components/mixedChart.mjs +5 -4
  286. package/dist/js/internal/components/navigationRail.mjs +3 -2
  287. package/dist/js/internal/components/particles.mjs +3 -2
  288. package/dist/js/internal/components/pieChart.mjs +4 -3
  289. package/dist/js/internal/components/pullToRefresh.mjs +9 -0
  290. package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
  291. package/dist/js/internal/components/questionnaire.mjs +3 -3
  292. package/dist/js/internal/components/radarChart.mjs +4 -3
  293. package/dist/js/internal/components/radialChart.mjs +4 -3
  294. package/dist/js/internal/components/registry.mjs +60 -41
  295. package/dist/js/internal/components/richTextEditor.mjs +3 -3
  296. package/dist/js/internal/components/sankeyChart.mjs +10 -0
  297. package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
  298. package/dist/js/internal/components/scatterChart.mjs +10 -0
  299. package/dist/js/internal/components/scatterChart.mjs.map +7 -0
  300. package/dist/js/internal/components/scrollspy.mjs +3 -2
  301. package/dist/js/internal/components/select.mjs +5 -4
  302. package/dist/js/internal/components/showMore.mjs +9 -0
  303. package/dist/js/internal/components/showMore.mjs.map +7 -0
  304. package/dist/js/internal/components/slider.mjs +3 -3
  305. package/dist/js/internal/components/snackbar.mjs +2 -2
  306. package/dist/js/internal/components/swipeActions.mjs +9 -0
  307. package/dist/js/internal/components/swipeActions.mjs.map +7 -0
  308. package/dist/js/internal/components/tabs.mjs +3 -4
  309. package/dist/js/internal/components/timepicker.mjs +5 -4
  310. package/dist/js/internal/components/tooltip.mjs +3 -3
  311. package/dist/js/internal/components/treeSelect.mjs +14 -0
  312. package/dist/js/internal/components/treeSelect.mjs.map +7 -0
  313. package/dist/js/internal/components/treemapChart.mjs +10 -0
  314. package/dist/js/internal/components/treemapChart.mjs.map +7 -0
  315. package/dist/js/internal/core/component.mjs +6 -3
  316. package/dist/js/internal/core/formControl.mjs +12 -0
  317. package/dist/js/internal/core/formControl.mjs.map +7 -0
  318. package/dist/js/internal/core/imageURL.mjs +7 -0
  319. package/dist/js/internal/core/imageURL.mjs.map +7 -0
  320. package/dist/js/internal/core/spring.mjs +11 -0
  321. package/dist/js/internal/core/spring.mjs.map +7 -0
  322. package/dist/js/internal/core/utils.mjs +21 -3
  323. package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
  324. package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
  325. package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
  326. package/dist/js/modular.mjs +172 -69
  327. package/dist/types/behaviors/bottomSheets.d.ts +23 -5
  328. package/dist/types/behaviors/copy.d.ts +18 -0
  329. package/dist/types/behaviors/dataTables.d.ts +125 -0
  330. package/dist/types/behaviors/dialogs.d.ts +27 -1
  331. package/dist/types/behaviors/forms.d.ts +70 -4
  332. package/dist/types/behaviors/imageCompare.d.ts +13 -0
  333. package/dist/types/behaviors/lists.d.ts +12 -0
  334. package/dist/types/behaviors/paneResize.d.ts +29 -0
  335. package/dist/types/behaviors/sheetDrag.d.ts +18 -0
  336. package/dist/types/behaviors/sideSheets.d.ts +1 -1
  337. package/dist/types/behaviors/sortable.d.ts +28 -0
  338. package/dist/types/behaviors/theme.d.ts +22 -0
  339. package/dist/types/behaviors/tour.d.ts +36 -0
  340. package/dist/types/behaviors/transferList.d.ts +53 -0
  341. package/dist/types/components/appBar.d.ts +5 -6
  342. package/dist/types/components/autocomplete.d.ts +105 -20
  343. package/dist/types/components/backToTop.d.ts +36 -0
  344. package/dist/types/components/barChart.d.ts +3 -6
  345. package/dist/types/components/buttonGroup.d.ts +2 -4
  346. package/dist/types/components/buttons.d.ts +5 -5
  347. package/dist/types/components/cards.d.ts +3 -16
  348. package/dist/types/components/carousel.d.ts +16 -15
  349. package/dist/types/components/cascader.d.ts +130 -0
  350. package/dist/types/components/characterCounter.d.ts +2 -15
  351. package/dist/types/components/chips.d.ts +80 -19
  352. package/dist/types/components/colorPicker.d.ts +56 -0
  353. package/dist/types/components/columnChart.d.ts +23 -10
  354. package/dist/types/components/commandPalette.d.ts +11 -16
  355. package/dist/types/components/confetti.d.ts +2 -4
  356. package/dist/types/components/currencyInput.d.ts +60 -0
  357. package/dist/types/components/datepicker.d.ts +107 -56
  358. package/dist/types/components/expandingCard.d.ts +4 -6
  359. package/dist/types/components/funnelChart.d.ts +35 -0
  360. package/dist/types/components/heatmapChart.d.ts +42 -8
  361. package/dist/types/components/hoverCard.d.ts +59 -0
  362. package/dist/types/components/index.d.ts +16 -1
  363. package/dist/types/components/inputMask.d.ts +28 -0
  364. package/dist/types/components/keypad.d.ts +38 -6
  365. package/dist/types/components/lightbox.d.ts +14 -20
  366. package/dist/types/components/lineChart.d.ts +212 -12
  367. package/dist/types/components/loadingOverlay.d.ts +42 -0
  368. package/dist/types/components/mapView.d.ts +138 -27
  369. package/dist/types/components/menu.d.ts +74 -22
  370. package/dist/types/components/menubar.d.ts +37 -0
  371. package/dist/types/components/messageScroller.d.ts +2 -14
  372. package/dist/types/components/mixedChart.d.ts +15 -6
  373. package/dist/types/components/navigationRail.d.ts +16 -5
  374. package/dist/types/components/particles.d.ts +22 -5
  375. package/dist/types/components/pieChart.d.ts +33 -9
  376. package/dist/types/components/pullToRefresh.d.ts +80 -0
  377. package/dist/types/components/questionnaire.d.ts +58 -16
  378. package/dist/types/components/radarChart.d.ts +10 -6
  379. package/dist/types/components/radialChart.d.ts +58 -7
  380. package/dist/types/components/registry.d.ts +73 -3
  381. package/dist/types/components/richTextEditor.d.ts +45 -22
  382. package/dist/types/components/sankeyChart.d.ts +72 -0
  383. package/dist/types/components/scatterChart.d.ts +102 -0
  384. package/dist/types/components/scrollspy.d.ts +3 -5
  385. package/dist/types/components/select.d.ts +44 -33
  386. package/dist/types/components/showMore.d.ts +53 -0
  387. package/dist/types/components/slider.d.ts +2 -15
  388. package/dist/types/components/snackbar.d.ts +68 -1
  389. package/dist/types/components/swipeActions.d.ts +81 -0
  390. package/dist/types/components/tabs.d.ts +92 -30
  391. package/dist/types/components/timepicker.d.ts +128 -27
  392. package/dist/types/components/tooltip.d.ts +57 -21
  393. package/dist/types/components/treeSelect.d.ts +106 -0
  394. package/dist/types/components/treemapChart.d.ts +56 -0
  395. package/dist/types/core/component.d.ts +49 -25
  396. package/dist/types/core/formControl.d.ts +21 -0
  397. package/dist/types/core/imageURL.d.ts +2 -0
  398. package/dist/types/core/spring.d.ts +20 -0
  399. package/dist/types/core/utils.d.ts +123 -72
  400. package/dist/types/modular.d.ts +33 -1
  401. package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
  402. package/dist/types/plugins/modalDisplayPlugin.d.ts +39 -0
  403. package/package.json +17 -13
  404. package/src/sass/README.md +27 -18
  405. package/src/sass/abstracts/_elevation.scss +13 -7
  406. package/src/sass/abstracts/_index.scss +1 -0
  407. package/src/sass/abstracts/_mixins.scss +864 -78
  408. package/src/sass/abstracts/_spring.scss +63 -0
  409. package/src/sass/abstracts/_variables.scss +64 -21
  410. package/src/sass/base/_fonts.scss +61 -48
  411. package/src/sass/base/_global.scss +104 -24
  412. package/src/sass/base/_index.scss +2 -0
  413. package/src/sass/base/_normalize.scss +59 -114
  414. package/src/sass/base/_print.scss +21 -0
  415. package/src/sass/base/_prose.scss +68 -0
  416. package/src/sass/base/_typography.scss +9 -5
  417. package/src/sass/components/_accordion.scss +10 -19
  418. package/src/sass/components/_alert.scss +102 -0
  419. package/src/sass/components/_aura.scss +9 -3
  420. package/src/sass/components/_avatar.scss +3 -3
  421. package/src/sass/components/_back-to-top.scss +38 -0
  422. package/src/sass/components/_badges.scss +6 -5
  423. package/src/sass/components/_bar-chart.scss +31 -90
  424. package/src/sass/components/_bottom-sheet.scss +51 -16
  425. package/src/sass/components/_breadcrumb.scss +8 -7
  426. package/src/sass/components/_button-groups.scss +30 -63
  427. package/src/sass/components/_buttons.scss +137 -94
  428. package/src/sass/components/_calendar.scss +244 -0
  429. package/src/sass/components/_cards.scss +36 -44
  430. package/src/sass/components/_carousel.scss +37 -113
  431. package/src/sass/components/_cascader.scss +131 -0
  432. package/src/sass/components/_chips.scss +36 -46
  433. package/src/sass/components/_column-chart.scss +15 -26
  434. package/src/sass/components/_command-palette.scss +4 -7
  435. package/src/sass/components/_confetti.scss +1 -4
  436. package/src/sass/components/_countdown.scss +1 -1
  437. package/src/sass/components/_data-table.scss +172 -25
  438. package/src/sass/components/_datepicker.scss +54 -40
  439. package/src/sass/components/_description-list.scss +85 -0
  440. package/src/sass/components/_dialog.scss +48 -55
  441. package/src/sass/components/_docked-display.scss +1 -3
  442. package/src/sass/components/_drag-handle.scss +16 -20
  443. package/src/sass/components/_expanding-card.scss +21 -14
  444. package/src/sass/components/_fab-menu.scss +43 -39
  445. package/src/sass/components/_funnel-chart.scss +63 -0
  446. package/src/sass/components/_heatmap-chart.scss +114 -29
  447. package/src/sass/components/_icon-buttons.scss +8 -11
  448. package/src/sass/components/_icons-material-design.scss +2 -2
  449. package/src/sass/components/_image-compare.scss +108 -0
  450. package/src/sass/components/_index.scss +20 -0
  451. package/src/sass/components/_keypad.scss +39 -19
  452. package/src/sass/components/_kpi.scss +6 -11
  453. package/src/sass/components/_lightbox.scss +24 -13
  454. package/src/sass/components/_line-chart.scss +9 -63
  455. package/src/sass/components/_list.scss +59 -14
  456. package/src/sass/components/_loading-indicator.scss +1 -0
  457. package/src/sass/components/_loading-overlay.scss +105 -0
  458. package/src/sass/components/_map.scss +37 -11
  459. package/src/sass/components/_marquee.scss +4 -3
  460. package/src/sass/components/_mega-menu.scss +128 -0
  461. package/src/sass/components/_menu.scss +146 -127
  462. package/src/sass/components/_menubar.scss +47 -0
  463. package/src/sass/components/_message-scroller.scss +2 -2
  464. package/src/sass/components/_message.scss +3 -3
  465. package/src/sass/components/_mixed-chart.scss +27 -35
  466. package/src/sass/components/_modal-display.scss +21 -0
  467. package/src/sass/components/_navbar.scss +45 -36
  468. package/src/sass/components/_navigation-bar.scss +12 -77
  469. package/src/sass/components/_navigation-rail.scss +161 -92
  470. package/src/sass/components/_org-chart.scss +192 -0
  471. package/src/sass/components/_page-footer.scss +2 -4
  472. package/src/sass/components/_pagination.scss +9 -27
  473. package/src/sass/components/_panes.scss +35 -42
  474. package/src/sass/components/_particles.scss +1 -4
  475. package/src/sass/components/_pie-chart.scss +86 -68
  476. package/src/sass/components/_popover.scss +18 -5
  477. package/src/sass/components/_progress.scss +183 -44
  478. package/src/sass/components/_pull-to-refresh.scss +90 -0
  479. package/src/sass/components/_questionnaire.scss +74 -3
  480. package/src/sass/components/_radar-chart.scss +40 -42
  481. package/src/sass/components/_radial-chart.scss +108 -46
  482. package/src/sass/components/_rich-text-editor.scss +2 -2
  483. package/src/sass/components/_sankey-chart.scss +91 -0
  484. package/src/sass/components/_scatter-chart.scss +144 -0
  485. package/src/sass/components/_scrim.scss +0 -2
  486. package/src/sass/components/_scrollspy.scss +0 -2
  487. package/src/sass/components/_search.scss +27 -26
  488. package/src/sass/components/_show-more.scss +8 -0
  489. package/src/sass/components/_side-sheet.scss +32 -51
  490. package/src/sass/components/_skeleton.scss +26 -19
  491. package/src/sass/components/_snackbar.scss +25 -21
  492. package/src/sass/components/_split-button.scss +5 -5
  493. package/src/sass/components/_stat.scss +3 -8
  494. package/src/sass/components/_stepper.scss +1 -1
  495. package/src/sass/components/_swipe-actions.scss +71 -0
  496. package/src/sass/components/_table_of_contents.scss +1 -3
  497. package/src/sass/components/_tabs.scss +49 -46
  498. package/src/sass/components/_timeline.scss +12 -12
  499. package/src/sass/components/_timepicker.scss +111 -79
  500. package/src/sass/components/_toolbar.scss +36 -47
  501. package/src/sass/components/_tooltip.scss +25 -12
  502. package/src/sass/components/_tour.scss +89 -0
  503. package/src/sass/components/_transfer-list.scss +73 -0
  504. package/src/sass/components/_transitions.scss +4 -4
  505. package/src/sass/components/_tree.scss +7 -32
  506. package/src/sass/components/_treemap-chart.scss +98 -0
  507. package/src/sass/components/forms/_checkboxes.scss +107 -44
  508. package/src/sass/components/forms/_color-picker.scss +135 -0
  509. package/src/sass/components/forms/_color-swatches.scss +85 -0
  510. package/src/sass/components/forms/_drop-zone.scss +16 -13
  511. package/src/sass/components/forms/_fieldset.scss +4 -7
  512. package/src/sass/components/forms/_file-input.scss +12 -8
  513. package/src/sass/components/forms/_index.scss +3 -1
  514. package/src/sass/components/forms/_input-fields.scss +271 -90
  515. package/src/sass/components/forms/_radio-buttons.scss +34 -117
  516. package/src/sass/components/forms/_rating.scss +2 -32
  517. package/src/sass/components/forms/_select.scss +198 -20
  518. package/src/sass/components/forms/_slider.scss +92 -98
  519. package/src/sass/components/forms/_switches.scss +62 -180
  520. package/src/sass/custom.scss +10 -1
  521. package/src/sass/expressive.scss +3 -63
  522. package/src/sass/tokens/_contrast.scss +94 -0
  523. package/src/sass/tokens/_elevation.scss +16 -0
  524. package/src/sass/tokens/_index.scss +5 -0
  525. package/src/sass/tokens/_motion.scss +109 -0
  526. package/src/sass/tokens/_reference.scss +72 -141
  527. package/src/sass/tokens/_shape.scss +38 -0
  528. package/src/sass/tokens/_stacking.scss +27 -0
  529. package/src/sass/tokens/_state.scss +0 -2
  530. package/src/sass/tokens/_theme.scss +10 -1
  531. package/src/sass/tokens/_vibrant.scss +2 -5
  532. package/src/sass/utilities/_defer-render.scss +17 -0
  533. package/src/sass/utilities/_helpers.scss +184 -27
  534. package/src/sass/utilities/_index.scss +1 -0
  535. package/src/sass/utilities/_scroll-area.scss +0 -2
  536. package/src/sass/utilities/_spacing.scss +52 -34
  537. package/src/sass/utilities/_typescale.scss +8 -1
  538. package/src/sass/utilities/_visibility.scss +46 -77
  539. package/src/sass/utilities/_z-depth.scss +7 -4
  540. package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
  541. package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
  542. package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
  543. package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
  544. package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
  545. package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
  546. package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
  547. package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
  548. package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
  549. package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
  550. package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
  551. package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
  552. package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
  553. package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
  554. package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
  555. package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
  556. package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
  557. package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
  558. package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
  559. package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
  560. package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
  561. package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
  562. package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
  563. package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
  564. package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
  565. package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
  566. package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
  567. package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
  568. package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
  569. package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
  570. package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
  571. package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
  572. package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
  573. package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
  574. package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
  575. package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
  576. package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
  577. package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
  578. package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
  579. package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
  580. package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
  581. package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
  582. package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
  583. package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
  584. package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
  585. package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
  586. package/dist/js/chunks/chunk-UAZSDUVP.mjs +0 -90
  587. package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
  588. package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
  589. package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
  590. package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
  591. package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
  592. package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
  593. package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
  594. package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
  595. package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
  596. package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
  597. package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
  598. package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
  599. package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
  600. package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
  601. package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
  602. package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
  603. package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
  604. package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
  605. package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
  606. package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
  607. package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
  608. package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
  609. /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,40 @@ $_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
+ // Forced colors paint the fill as Canvas and drop the shadow, so the
135
+ // surface would blend into the page without an edge.
136
+ @media (forced-colors: active) {
137
+ outline: 1px solid CanvasText;
138
+ outline-offset: -1px;
139
+ }
140
+
141
+ > li > ul[role="group"] {
142
+ @include list-reset;
143
+ }
122
144
 
123
- > li {
145
+ #{$_rows} {
124
146
  box-sizing: border-box;
125
147
  margin: 0;
126
148
  padding: 0;
127
149
  width: 100%;
128
150
  cursor: pointer;
129
- text-align: left;
151
+ text-align: start;
130
152
  border-radius: var(--md-comp-menu-item-container-shape);
131
153
 
132
154
  // The bare-span arm is the non-interactive item. It has to exclude icons,
@@ -180,10 +202,7 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
180
202
  > button > #{$icon},
181
203
  > #{$icon} {
182
204
  flex: 0 0 var(--md-comp-menu-item-icon-size);
183
- font-size: var(--md-comp-menu-item-icon-size);
184
- width: var(--md-comp-menu-item-icon-size);
185
- height: var(--md-comp-menu-item-icon-size);
186
- line-height: var(--md-comp-menu-item-icon-size);
205
+ @include icon-size(var(--md-comp-menu-item-icon-size));
187
206
  color: var(--md-comp-menu-item-leading-icon-color);
188
207
  }
189
208
 
@@ -217,8 +236,10 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
217
236
  }
218
237
  }
219
238
 
220
- > li#{$_item} {
221
- min-height: var(--md-comp-menu-item-container-height);
239
+ #{$_rows} {
240
+ &#{$_item} {
241
+ min-height: var(--md-comp-menu-item-container-height);
242
+ }
222
243
  }
223
244
 
224
245
  > li#{$_item}:first-child {
@@ -234,74 +255,72 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
234
255
  var(--md-comp-menu-item-edge-shape) var(--md-comp-menu-item-edge-shape);
235
256
  }
236
257
 
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
- );
258
+ // A group at either end of the menu rounds its end row the same way.
259
+ > li[role="none"]:first-child
260
+ > ul[role="group"]
261
+ > li#{$_item}#{$_unselected}:first-child {
262
+ border-start-start-radius: var(--md-comp-menu-item-edge-shape);
263
+ border-start-end-radius: var(--md-comp-menu-item-edge-shape);
245
264
  }
246
265
 
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
- );
266
+ > li[role="none"]:last-child
267
+ > ul[role="group"]
268
+ > li#{$_item}#{$_unselected}:last-child {
269
+ border-end-start-radius: var(--md-comp-menu-item-edge-shape);
270
+ border-end-end-radius: var(--md-comp-menu-item-edge-shape);
253
271
  }
254
272
 
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);
273
+ #{$_rows} {
274
+ // Hover / press sit on extra-small corners and do not span the container.
275
+ &#{$_enabled}:hover,
276
+ &.active#{$_unselected} {
277
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "hover");
265
278
  }
266
279
 
267
- > :is(a, button, #{$icon-label}) > #{$icon},
268
- > #{$icon} {
269
- color: var(--md-comp-menu-item-selected-leading-icon-color);
280
+ &#{$_enabled}:active {
281
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "pressed");
270
282
  }
271
283
 
272
- > :is(a, button, #{$icon-label}) :is(.supporting-text, kbd, .shortcut) {
284
+ // :not(.divider) only buys specificity: menu-item.selected.shape is 12dp
285
+ // unconditionally, so it has to outrank the first/last-child edge rule that
286
+ // would otherwise leave a selected end item with 4dp inner corners.
287
+ &#{$_selected}:not(.divider) {
288
+ border-radius: var(--md-comp-menu-item-selected-container-shape);
289
+ background-color: var(--md-comp-menu-item-selected-container-color);
273
290
  color: var(--md-comp-menu-item-selected-label-text-color);
291
+ @include forced-colors-selected;
292
+
293
+ > :is(a, button, #{$icon-label}) {
294
+ color: var(--md-comp-menu-item-selected-label-text-color);
295
+ }
296
+
297
+ > :is(a, button, #{$icon-label}) > #{$icon},
298
+ > #{$icon} {
299
+ color: var(--md-comp-menu-item-selected-leading-icon-color);
300
+ }
301
+
302
+ > :is(a, button, #{$icon-label}) :is(.supporting-text, kbd, .shortcut) {
303
+ color: var(--md-comp-menu-item-selected-label-text-color);
304
+ }
274
305
  }
275
- }
276
306
 
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
- }
307
+ &#{$_selected}:hover {
308
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "hover", var(--md-comp-menu-item-selected-container-color));
309
+ }
284
310
 
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
- }
311
+ &#{$_selected}:is(:focus, :focus-visible, :active) {
312
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "pressed", var(--md-comp-menu-item-selected-container-color));
313
+ }
292
314
 
293
- > li:focus-visible {
294
- outline: 3px solid var(--md-sys-color-secondary);
295
- outline-offset: -3px;
296
- }
315
+ @include focus-visible(-3px);
297
316
 
298
- > li:is(.disabled, [aria-disabled="true"]) {
299
- pointer-events: none;
300
- opacity: 0.38;
317
+ &:is(.disabled, [aria-disabled="true"]) {
318
+ pointer-events: none;
319
+ opacity: 0.38;
320
+ }
301
321
  }
302
322
 
303
323
  // Inset divider — selection and rules do not span the container.
304
- > hr,
305
324
  > li.divider {
306
325
  display: block;
307
326
  width: calc(100% - 8px);
@@ -353,21 +372,21 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
353
372
  // blur the menu itself. Grouped menus stay solid.
354
373
  backdrop-filter: none;
355
374
 
356
- > li#{$_item} {
375
+ > li#{$_segment} {
357
376
  padding-inline: var(--md-comp-menu-group-padding);
358
377
  background-color: var(--md-comp-menu-container-color);
359
378
  border-radius: 0;
360
379
  }
361
380
 
362
- > li#{$_item}:first-child,
363
- > li.gap + li#{$_item} {
381
+ > li#{$_segment}:first-child,
382
+ > li.gap + li#{$_segment} {
364
383
  padding-block-start: var(--md-comp-menu-group-padding);
365
384
  border-start-start-radius: var(--md-comp-menu-group-shape);
366
385
  border-start-end-radius: var(--md-comp-menu-group-shape);
367
386
  }
368
387
 
369
- > li#{$_item}:has(+ li.gap),
370
- > li#{$_item}:last-child {
388
+ > li#{$_segment}:has(+ li.gap),
389
+ > li#{$_segment}:last-child {
371
390
  padding-block-end: var(--md-comp-menu-group-padding);
372
391
  border-end-start-radius: var(--md-comp-menu-group-shape);
373
392
  border-end-end-radius: var(--md-comp-menu-group-shape);
@@ -391,20 +410,12 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
391
410
  > li.active#{$_unselected}
392
411
  > :is(a, button, #{$icon-label}) {
393
412
  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
- );
413
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "hover");
399
414
  }
400
415
 
401
416
  > li#{$_enabled}:active
402
417
  > :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
- );
418
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "pressed");
408
419
  }
409
420
 
410
421
  > li#{$_selected}
@@ -415,20 +426,12 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
415
426
 
416
427
  > li#{$_selected}:hover
417
428
  > :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
- );
429
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "hover", var(--md-comp-menu-item-selected-container-color));
423
430
  }
424
431
 
425
432
  > li#{$_selected}:is(:focus, :focus-visible, :active)
426
433
  > :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
- );
434
+ background-color: state-layer(var(--md-comp-menu-item-selected-label-text-color), "pressed", var(--md-comp-menu-item-selected-container-color));
432
435
  }
433
436
  }
434
437
 
@@ -444,6 +447,7 @@ $_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
444
447
  margin-inline-start: auto;
445
448
  background-color: var(--md-comp-menu-item-trailing-icon-color);
446
449
  mask: $_menu-chevron center / 20px no-repeat;
450
+ @include forced-colors-fill;
447
451
  }
448
452
  }
449
453
 
@@ -452,14 +456,21 @@ menu[id] {
452
456
 
453
457
  display: none;
454
458
  position: absolute;
459
+ // JS positions the menu with physical left/top. Clear the UA [popover]
460
+ // inset: 0 first, or the over-constrained box ignores left in RTL.
461
+ inset: auto;
455
462
  left: 0;
456
463
  top: 0;
457
- z-index: 9999;
458
464
  overflow-y: auto;
459
465
  opacity: 0;
460
466
  user-select: none;
461
467
  transform-origin: 0 0;
462
468
 
469
+ // Menu opens the surface as a manual popover, in the top layer.
470
+ &:popover-open {
471
+ display: block;
472
+ }
473
+
463
474
  // Nested flyouts sit outside the list box; do not clip them.
464
475
  &:has(> li > menu) {
465
476
  overflow: visible;
@@ -494,7 +505,13 @@ menu[id] li > menu {
494
505
  opacity 180ms ease,
495
506
  transform 180ms ease,
496
507
  visibility 180ms ease,
497
- border-radius 200ms ease;
508
+ border-radius var(--md-sys-motion-duration-short4) ease;
509
+
510
+ // The flyout opens toward inline-end, so it slides in from the other side.
511
+ &:dir(rtl) {
512
+ transform: translateX(4px) scale(0.96);
513
+ transform-origin: 100% 0;
514
+ }
498
515
  }
499
516
 
500
517
  @media (hover: hover) and (pointer: fine) {
@@ -503,7 +520,7 @@ menu[id] li > menu {
503
520
  opacity: 1;
504
521
  pointer-events: auto;
505
522
  transform: none;
506
- --md-comp-menu-container-shape: 16px;
523
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
507
524
  }
508
525
  }
509
526
 
@@ -512,13 +529,22 @@ menu[id] li.open > menu {
512
529
  opacity: 1;
513
530
  pointer-events: auto;
514
531
  transform: none;
515
- --md-comp-menu-container-shape: 16px;
532
+ --md-comp-menu-container-shape: var(--md-sys-shape-corner-large);
516
533
  }
517
534
 
518
535
  menu[id] li.submenu-start > menu {
519
536
  inset-inline-start: auto;
520
537
  inset-inline-end: 100%;
521
538
  transform-origin: 100% 0;
539
+
540
+ // Flipped toward inline-start, so it also slides in from the far side:
541
+ // the right in a right-to-left menu.
542
+ transform: translateX(4px) scale(0.96);
543
+
544
+ &:dir(rtl) {
545
+ transform: translateX(-4px) scale(0.96);
546
+ transform-origin: 0 0;
547
+ }
522
548
  }
523
549
 
524
550
  menu[id] li.submenu-start:is(:hover, :focus-within, .open) > menu {
@@ -531,12 +557,9 @@ menu[id] li.submenu-start:is(:hover, :focus-within, .open) > menu {
531
557
  // item gets focus here - inherits :focus-visible from the element that had it,
532
558
  // so opening the menu by keyboard still lights the item and opening it by
533
559
  // 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
- );
560
+ menu[id] > li:focus-visible,
561
+ menu[id] > li > ul[role="group"] > li:focus-visible {
562
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "focus");
540
563
  }
541
564
 
542
565
  menu[id].grouped > li:focus-visible {
@@ -547,11 +570,7 @@ menu[id].grouped
547
570
  > li:focus-visible#{$_unselected}
548
571
  > :is(a, button, span:not(.material-symbols, .badge, .supporting-text)) {
549
572
  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
- );
573
+ background-color: state-layer(var(--md-comp-menu-item-label-text-color), "focus");
555
574
  }
556
575
 
557
576
  @media (prefers-reduced-motion: reduce) {
@@ -575,8 +594,8 @@ menu[id].grouped
575
594
  // The trigger stays in its pressed state for as long as its menu is open.
576
595
  &[aria-expanded="true"] {
577
596
  background-image: linear-gradient(
578
- color-mix(in oklab, currentcolor 10%, transparent),
579
- color-mix(in oklab, currentcolor 10%, transparent)
597
+ state-layer(currentcolor, "pressed"),
598
+ state-layer(currentcolor, "pressed")
580
599
  );
581
600
  }
582
601
  }
@@ -0,0 +1,47 @@
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
+ @include text-action('[aria-expanded="true"]');
42
+ }
43
+
44
+ @media (forced-colors: active) {
45
+ border: 1px solid CanvasText;
46
+ }
47
+ }
@@ -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,19 +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
- @include chart("mixed-chart");
29
+ @include chart("mixed-chart", $lines: true);
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;
28
- --md-comp-mixed-chart-line-width: 3px;
29
-
30
- &.sparkline {
31
- --md-comp-mixed-chart-line-width: 2px;
32
- }
34
+ --md-comp-mixed-chart-shape: var(--md-sys-shape-corner-extra-small);
33
35
  }
34
36
 
35
37
  .mixed-chart-plot {
@@ -73,45 +75,35 @@
73
75
  &.negative {
74
76
  --mixed-chart-ends: 0 0 var(--md-comp-mixed-chart-shape) var(--md-comp-mixed-chart-shape);
75
77
  }
76
- }
77
-
78
- @media (prefers-reduced-motion: no-preference) {
79
- > div > span {
80
- transition: clip-path 400ms cubic-bezier(0.2, 0, 0, 1);
81
78
 
82
- @starting-style {
83
- clip-path: inset(var(--zero, 100%) 0 calc(100% - var(--zero, 100%)) round var(--mixed-chart-ends));
84
- }
79
+ // A range floats, so both its ends are rounded.
80
+ &.floating {
81
+ --mixed-chart-ends: var(--md-comp-mixed-chart-shape);
85
82
  }
86
83
  }
87
- }
88
84
 
89
- .mixed-chart-line {
90
- fill: none;
91
- stroke: var(--mixed-chart-color);
92
- stroke-width: var(--md-comp-mixed-chart-line-width);
93
- stroke-linecap: round;
94
- stroke-linejoin: round;
95
- vector-effect: non-scaling-stroke;
85
+ @include chart-column-motion;
96
86
  }
97
87
 
98
- .mixed-chart-series.dashed .mixed-chart-line {
99
- stroke-dasharray: 2 8;
88
+ // Stacked columns share one column per row, and the end scale's another
89
+ // beside it. Only each stack's top segment is rounded: the last of its
90
+ // scale, with the end scale's columns after the others in the table.
91
+ .mixed-chart.stacked .mixed-chart-columns > div > span {
92
+ grid-area: 1 / 1;
93
+
94
+ &.end {
95
+ grid-column: 2;
96
+ }
97
+
98
+ &:not(:last-child, :has(+ .end)) {
99
+ --mixed-chart-ends: 0;
100
+ }
100
101
  }
101
102
 
102
103
  .mixed-chart-series:not(.area) .mixed-chart-area {
103
104
  display: none;
104
105
  }
105
106
 
106
- .mixed-chart-series stop {
107
- stop-color: var(--mixed-chart-color);
108
- stop-opacity: 0;
109
-
110
- &:first-child {
111
- stop-opacity: 0.24;
112
- }
113
- }
114
-
115
107
  // A band behind the highlighted row, with a point over each line. The
116
108
  // cursor makes no stacking context, so the band can go behind the marks
117
109
  // and the points in front of them.
@@ -125,7 +117,7 @@
125
117
  inset: 0;
126
118
  z-index: -1;
127
119
  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);
120
+ background-color: state-layer(var(--md-sys-color-on-surface), "hover");
129
121
  }
130
122
 
131
123
  > 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
+ }