@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
@@ -32,7 +32,7 @@
32
32
  }
33
33
  }
34
34
 
35
- /* ===================================================================== Themes */
35
+ // ===================================================================== Themes
36
36
 
37
37
  // Opting out of the OS preference. Every token above re-resolves from these.
38
38
  // `auto` is the explicit follow-OS value — same as omitting the attribute.
@@ -42,3 +42,12 @@
42
42
  :host([theme='dark']) { color-scheme: dark; }
43
43
  :root[theme='auto'],
44
44
  :host([theme='auto']) { color-scheme: light dark; }
45
+
46
+ // More contrast is tokens/_contrast.scss: the contrast attribute and
47
+ // prefers-contrast: more.
48
+
49
+ // Paper is white, and browsers drop backgrounds when printing by default, so
50
+ // a dark scheme prints light text on nothing. Print is always light.
51
+ @media print {
52
+ :root, :root[theme], :host, :host([theme]) { color-scheme: light; }
53
+ }
@@ -34,7 +34,6 @@
34
34
  // outline roles neutral-variant in M3, not an opacity of the text color.
35
35
  // Deriving them from on-*-container turns every checkbox,
36
36
  // radio and switch border inside the subtree translucent.
37
- // surface-tint an accent despite the name - it is the elevation tint.
38
37
  // inverse-*, scrim they exist to contrast with the page, not to follow it.
39
38
  //
40
39
  // The elevation ladder does collapse: every surface-container rung resolves to
@@ -52,11 +51,10 @@
52
51
  // Every surface role, derived rather than restated: a rung added to
53
52
  // $sys-color-roles and forgotten here would keep its neutral value and sit as a
54
53
  // grey patch on an accent one. `on-` and `inverse-surface` are excluded by the
55
- // prefix test; surface-tint by name, per the note above.
54
+ // prefix test.
56
55
  $_vibrant-surfaces: ();
57
56
  @each $role in $sys-color-roles {
58
- @if $role == "background" or
59
- (string.index($role, "surface") == 1 and $role != "surface-tint") {
57
+ @if string.index($role, "surface") == 1 {
60
58
  $_vibrant-surfaces: list.append($_vibrant-surfaces, $role);
61
59
  }
62
60
  }
@@ -72,5 +70,4 @@ $_vibrant-surfaces: ();
72
70
 
73
71
  --md-sys-color-on-surface: var(--md-sys-color-on-tertiary-container);
74
72
  --md-sys-color-on-surface-variant: var(--md-sys-color-on-tertiary-container);
75
- --md-sys-color-on-background: var(--md-sys-color-on-tertiary-container);
76
73
  }
@@ -0,0 +1,17 @@
1
+ @use "../abstracts" as *;
2
+
3
+ // The browser skips layout and paint for each child while it is off screen.
4
+ // A skipped child reserves --defer-render-row-size, or the list item height
5
+ // inside .list, and keeps its last rendered size after it has been on screen.
6
+ // Paint containment clips what a child draws outside its box, so focus rings
7
+ // inside a child are drawn inset, and rows with swipe actions, which wait past
8
+ // the row's end, are left alone. Table rows ignore containment.
9
+ .defer-render > :not(:has(> .swipe-actions)) {
10
+ content-visibility: auto;
11
+ contain-intrinsic-block-size: auto var(--defer-render-row-size, var(--md-comp-list-item-height, #{rem(56px)}));
12
+
13
+ // -3px is the focus-ring mixin's outline width.
14
+ :focus-visible {
15
+ outline-offset: -3px;
16
+ }
17
+ }
@@ -1,3 +1,6 @@
1
+ @use "sass:map";
2
+ @use "../abstracts" as *;
3
+
1
4
  // Small single-purpose classes a page author applies deliberately.
2
5
  //
3
6
  // Anything here must be one job, one class, and independent of any component.
@@ -6,40 +9,139 @@
6
9
 
7
10
  // Positioning
8
11
  .valign-wrapper { display: flex; align-items: center; }
12
+ .relative { position: relative; }
13
+ .sticky-top { position: sticky; top: 0; }
14
+ // Not a bare `.fixed`: the navigation bar, toolbar and table of contents use
15
+ // that as a modifier, and a utility would override them. No z-index either;
16
+ // a fixed element takes a --expressive-z-* value from the page. Static comes
17
+ // last so it beats .relative and .sticky-top on the same element.
18
+ .position-absolute { position: absolute; }
19
+ .position-fixed { position: fixed; }
20
+ .position-static { position: static; }
21
+ .inset-0 { inset: 0; }
22
+ .top-0 { top: 0; }
23
+ .bottom-0 { bottom: 0; }
24
+ .start-0 { inset-inline-start: 0; }
25
+ .end-0 { inset-inline-end: 0; }
26
+
27
+ // Display and flex layout. One declaration each; combine on the container or child,
28
+ // and pair with .gap-* from _spacing.scss for the space between items.
29
+ //
30
+ // Every class in this map also comes with a window-size prefix, emitted at
31
+ // the end of this file: `.expanded:flex-row` applies from Expanded up, the
32
+ // way the grid's `l6` does. `.inline` is the checkbox and radio row, so the
33
+ // display utility for it is missing on purpose.
34
+ //
35
+ // The line clamps set display too, so put them on a child of a flex or grid
36
+ // container, never on the container. Overflow clips at the padding box, so
37
+ // block-end padding on a clamped element shows the top of the next line.
38
+ $_clamp: (overflow: hidden, display: -webkit-box, -webkit-box-orient: vertical);
39
+
40
+ $_layout: (
41
+ "block": (display: block),
42
+ "inline-block": (display: inline-block),
43
+ "flex": (display: flex),
44
+ "inline-flex": (display: inline-flex),
45
+ "grid": (display: grid),
46
+ "flex-row": (flex-direction: row),
47
+ "flex-column": (flex-direction: column),
48
+ "flex-wrap": (flex-wrap: wrap),
49
+ "flex-nowrap": (flex-wrap: nowrap),
50
+ "justify-start": (justify-content: flex-start),
51
+ "justify-center": (justify-content: center),
52
+ "justify-end": (justify-content: flex-end),
53
+ "justify-between": (justify-content: space-between),
54
+ "justify-around": (justify-content: space-around),
55
+ "justify-evenly": (justify-content: space-evenly),
56
+ "align-start": (align-items: flex-start),
57
+ "align-center": (align-items: center),
58
+ "align-end": (align-items: flex-end),
59
+ "align-stretch": (align-items: stretch),
60
+ "align-baseline": (align-items: baseline),
61
+ // Child sizing: shorthands precede shrink-only overrides.
62
+ "flex-1": (flex: 1 1 0),
63
+ "flex-none": (flex: none),
64
+ "flex-initial": (flex: 0 1 auto),
65
+ "shrink-0": (flex-shrink: 0),
66
+ "shrink-1": (flex-shrink: 1),
67
+ // Child self-alignment. .self-auto hands a child back to the parent's
68
+ // align-items, so a prefix can undo a smaller window's alignment.
69
+ "self-auto": (align-self: auto),
70
+ "self-start": (align-self: flex-start),
71
+ "self-center": (align-self: center),
72
+ "self-end": (align-self: flex-end),
73
+ "self-stretch": (align-self: stretch),
74
+ // Child order moves a child on screen only: Tab and reading order still
75
+ // follow the source. .order-none puts it back in its source position.
76
+ "order-first": (order: -1),
77
+ "order-last": (order: 1),
78
+ "order-none": (order: 0),
79
+ "start-align": (text-align: start),
80
+ "center-align": (text-align: center),
81
+ "end-align": (text-align: end),
82
+ "line-clamp-1": map.merge($_clamp, (-webkit-line-clamp: 1, line-clamp: 1)),
83
+ "line-clamp-2": map.merge($_clamp, (-webkit-line-clamp: 2, line-clamp: 2)),
84
+ "line-clamp-3": map.merge($_clamp, (-webkit-line-clamp: 3, line-clamp: 3)),
85
+ "line-clamp-none": (overflow: visible, display: block, -webkit-box-orient: horizontal, -webkit-line-clamp: unset, line-clamp: unset),
86
+ );
87
+
88
+ @mixin _declarations($map) {
89
+ @each $property, $value in $map {
90
+ #{$property}: $value;
91
+ }
92
+ }
93
+
94
+ @each $name, $declarations in $_layout {
95
+ .#{$name} { @include _declarations($declarations); }
96
+ }
9
97
 
10
- // Flex layout. One declaration each; combine on the container, and pair with
11
- // .gap-* from _spacing.scss for the space between items. Row direction and
12
- // start alignment are the flex defaults, so only the overrides get a class.
13
- .flex { display: flex; }
14
- .inline-flex { display: inline-flex; }
15
- .flex-column { flex-direction: column; }
16
- .flex-wrap { flex-wrap: wrap; }
17
- .justify-start { justify-content: flex-start; }
18
- .justify-center { justify-content: center; }
19
- .justify-end { justify-content: flex-end; }
20
- .justify-between { justify-content: space-between; }
21
- .align-start { align-items: flex-start; }
22
- .align-center { align-items: center; }
23
- .align-end { align-items: flex-end; }
24
- .align-stretch { align-items: stretch; }
25
- .flex-1 { flex: 1 1 0; }
26
- .flex-none { flex: none; }
98
+ .inline-grid { display: inline-grid; }
99
+
100
+ // As many columns as fit, each at least --grid-column-min wide (set it here or
101
+ // on an ancestor). Empty tracks stay, so a short last row keeps the column
102
+ // width, and a container narrower than the minimum gets one column. The
103
+ // column count follows the container, so there are no prefixed copies; pair
104
+ // with .gap-*.
105
+ .grid-auto-fill {
106
+ display: grid;
107
+ grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--grid-column-min, #{rem(240px)})), 1fr));
108
+ }
109
+
110
+ .contents { display: contents; }
27
111
 
28
112
  // Allow flex and grid children to shrink around their content.
29
113
  .min-w-0 { min-width: 0; }
30
114
  .min-h-0 { min-height: 0; }
31
115
 
116
+ // Make the element a query container. Horizontal cards and description lists
117
+ // inside it stack when it is narrower than 600px, whatever the window size.
118
+ // Inline-size containment stops the element's width depending on its
119
+ // content, so use it on a wrapper that fills its parent, not on a
120
+ // shrink-to-fit box.
121
+ .query-container { container-type: inline-size; }
122
+
123
+ // Fill the containing block, or never overflow it.
124
+ .w-full { width: 100%; }
125
+ .h-full { height: 100%; }
126
+ .max-w-full { max-width: 100%; }
127
+
128
+ // Fixed proportions. With an explicit width the height follows; on an <img>
129
+ // or <video>, pair with .object-cover or .object-contain.
130
+ .aspect-1x1 { aspect-ratio: 1; }
131
+ .aspect-4x3 { aspect-ratio: 4 / 3; }
132
+ .aspect-16x9 { aspect-ratio: 16 / 9; }
133
+ .object-cover { object-fit: cover; }
134
+ .object-contain { object-fit: contain; }
135
+
32
136
  // Scrolling and clipping without changing the element's display or size.
33
137
  .overflow-x-auto { overflow-x: auto; }
34
138
  .overflow-y-auto { overflow-y: auto; }
35
139
  .overflow-hidden { overflow: hidden; }
36
140
 
37
- // Text alignment
141
+ // Text alignment. start, center and end are in $_layout above; the physical
142
+ // pair stays for text that must not mirror.
38
143
  .left-align { text-align: left; }
39
144
  .right-align { text-align: right }
40
- .center-align { text-align: center; }
41
- .start-align { text-align: start; }
42
- .end-align { text-align: end; }
43
145
 
44
146
  // Dividers
45
147
  .divider {
@@ -48,19 +150,63 @@
48
150
  background-color: var(--md-sys-color-outline-variant);
49
151
  }
50
152
 
153
+ // Borders and corners. `.border` and `.rounded` are card and button variants,
154
+ // so the all-sides border is `.bordered` and the corner classes use the M3
155
+ // corner names. Sides are logical, so start and end mirror in RTL.
156
+ .bordered { border: 1px solid var(--md-sys-color-outline-variant); }
157
+ .border-top { border-top: 1px solid var(--md-sys-color-outline-variant); }
158
+ .border-bottom { border-bottom: 1px solid var(--md-sys-color-outline-variant); }
159
+ .border-start { border-inline-start: 1px solid var(--md-sys-color-outline-variant); }
160
+ .border-end { border-inline-end: 1px solid var(--md-sys-color-outline-variant); }
161
+
162
+ @each $step in ("none", "extra-small", "small", "medium", "large", "extra-large", "full") {
163
+ .corner-#{$step} { border-radius: var(--md-sys-shape-corner-#{$step}); }
164
+ }
165
+
166
+ // Cut corners: the corner's radius becomes a straight bevel of the same
167
+ // size. .corner-cut cuts one element; the container surfaces below follow
168
+ // --md-sys-shape-corner-family, which corners="cut" switches for a subtree.
169
+ // Round indicators (radios, switches, avatars, .circle) stay round, since
170
+ // a cut 50% radius is a diamond. Browsers without `corner-shape` (Firefox
171
+ // 157) keep rounded corners; a clip-path fallback would cut focus rings and
172
+ // shadows too.
173
+ .corner-cut { corner-shape: bevel; }
174
+
175
+ :where(
176
+ article, dialog, menu[id], fieldset, .button:not(.circle), .chip, .alert,
177
+ .snackbar, .tooltip, .popover, .field.outlined > :is(input, textarea)
178
+ ) {
179
+ corner-shape: var(--md-sys-shape-corner-family);
180
+ }
181
+
51
182
  // Shape and text behaviour
52
- .no-select { user-select: none; }
53
183
  // A FAB is `circle extra` / `circle large`, and its container shape is
54
184
  // 16dp rounded corners, not a full round - so the utility skips it. Layer
55
185
  // order puts utilities after components, which is why the exclusion has to
56
186
  // live here: no selector in `components` can outrank this one.
57
187
  .circle:not(.extra, .large) { border-radius: 50%; }
58
- .center-block { display: block; margin-left: auto; margin-right: auto; }
59
188
  .break-words { overflow-wrap: anywhere; }
60
189
  .text-nowrap { white-space: nowrap; }
61
190
  .text-wrap { white-space: normal; }
62
- .truncate { display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
63
- .no-padding { padding: 0 !important; }
191
+ .text-balance { text-wrap-style: balance; }
192
+ .text-pretty { text-wrap-style: pretty; }
193
+ .truncate { display: block; @include ellipsis; }
194
+
195
+ // Pointer input. Clicks pass through a .pointer-events-none overlay to what
196
+ // lies beneath, and a .pointer-events-auto child takes them back. Neither
197
+ // changes focus or keys: use inert or disabled to block all input.
198
+ .pointer-events-none { pointer-events: none; }
199
+ .pointer-events-auto { pointer-events: auto; }
200
+ .cursor-pointer { cursor: pointer; }
201
+ // Opacity. 38 is M3's disabled-content opacity. Dimming hides nothing from
202
+ // pointers, keyboards or screen readers; use .hide or `hidden` for that.
203
+ @each $step, $value in ("0": 0, "25": 0.25, "38": 0.38, "50": 0.5, "75": 0.75, "100": 1) {
204
+ .opacity-#{$step} { opacity: $value; }
205
+ }
206
+
207
+ // Lists without markers or indentation. WebKit drops the list role from a
208
+ // list with `list-style: none`, so the markup adds role="list" back.
209
+ .list-unstyled { list-style: none; padding-inline-start: 0; }
64
210
 
65
211
  // Responsive media
66
212
  img.responsive-img,
@@ -74,14 +220,14 @@ video.responsive-video {
74
220
  // element+class pair would beat `.circle` and square the disc off.
75
221
  img.responsive-img:not(.circle),
76
222
  video.responsive-video {
77
- border-radius: 12px;
223
+ border-radius: var(--md-sys-shape-corner-medium);
78
224
  }
79
225
 
80
226
  .video-container {
81
227
  position: relative;
82
228
  aspect-ratio: 16 / 9; // was padding-bottom: 56.25% + height: 0
83
229
  overflow: hidden;
84
- border-radius: 12px;
230
+ border-radius: var(--md-sys-shape-corner-medium);
85
231
 
86
232
  iframe, object, embed {
87
233
  position: absolute;
@@ -91,3 +237,14 @@ video.responsive-video {
91
237
  border: 0;
92
238
  }
93
239
  }
240
+
241
+ // Window-size prefixes for $_layout, mobile first: each applies from that
242
+ // size class up and wins over the unprefixed class, because it comes later
243
+ // in the same layer.
244
+ @each $size in ("medium", "expanded", "large", "extra-large") {
245
+ @include bp-up($size) {
246
+ @each $name, $declarations in $_layout {
247
+ .#{$size}\:#{$name} { @include _declarations($declarations); }
248
+ }
249
+ }
250
+ }
@@ -8,3 +8,4 @@
8
8
  @forward "helpers"; // alignment, flex, truncate, responsive media
9
9
  @forward "scroll-area"; // native scrolling with themed scrollbars
10
10
  @forward "shapes"; // .shape-pebble, .shape-scallop-6, ... (masks)
11
+ @forward "defer-render"; // skip layout and paint for off-screen rows
@@ -1,5 +1,3 @@
1
- @use "../abstracts" as *;
2
-
3
1
  // Keep scrolling native; use the current theme for scrollbar colors.
4
2
  .scroll-area {
5
3
  overflow: auto;
@@ -1,52 +1,70 @@
1
+ @use "../abstracts" as *;
2
+
1
3
  // Margin, padding and gap scale: .m-3, .pt-2, .px-4, .ms-auto, .gap-2, ...
2
4
  //
3
5
  // Shortcut x value x direction, all !important so a helper wins over the
4
6
  // component it is applied to. Edit the maps here to change the scale.
5
7
 
6
- $spacing-shortcuts: ("margin": "m", "padding": "p") !default;
8
+ $spacing-shortcuts: ("margin": "m", "padding": "p");
7
9
  $spacing-directions: (
8
10
  "top": "t", "right": "r", "bottom": "b", "left": "l",
9
11
  "inline-start": "s", "inline-end": "e"
10
- ) !default;
11
- $spacing-horizontal: "x" !default;
12
- $spacing-vertical: "y" !default;
13
- $spacing-values: ("0": 0, "1": 0.25rem, "2": 0.5rem, "3": 0.75rem, "4": 1rem, "5": 1.5rem, "6": 3rem, "auto": auto) !default;
12
+ );
13
+ $spacing-values: ("0": 0, "1": 0.25rem, "2": 0.5rem, "3": 0.75rem, "4": 1rem, "5": 1.5rem, "6": 3rem, "auto": auto);
14
14
 
15
- @each $property, $shortcut in $spacing-shortcuts{
16
- @each $name, $value in $spacing-values{
17
- // CSS accepts auto margins, but not auto padding.
18
- @if $property != "padding" or $value != auto {
19
- // All direction spacing
20
- .#{$shortcut}-#{$name}{
21
- #{$property}: $value !important;
22
- }
23
- // Physical and logical side spacing
24
- @each $direction, $suffix in $spacing-directions{
25
- .#{$shortcut}#{$suffix}-#{$name}{
26
- #{$property}-#{$direction}: $value !important
15
+ // $prefix is "" for the base classes, or an escaped window size such as
16
+ // medium\: for the prefixed ones at the end of this file.
17
+ @mixin _margin-and-padding($prefix: "") {
18
+ @each $property, $shortcut in $spacing-shortcuts{
19
+ @each $name, $value in $spacing-values{
20
+ // CSS accepts auto margins, but not auto padding.
21
+ @if $property != "padding" or $value != auto {
22
+ // All direction spacing
23
+ .#{$prefix}#{$shortcut}-#{$name}{
24
+ #{$property}: $value !important;
27
25
  }
28
- }
29
- // x spacing
30
- @if $spacing-horizontal != null{
31
- .#{$shortcut}#{$spacing-horizontal}-#{$name}{
32
- #{$property}-left: $value !important;
33
- #{$property}-right: $value !important;
34
- }
35
- }
36
- // y spacing
37
- @if $spacing-vertical != null{
38
- .#{$shortcut}#{$spacing-vertical}-#{$name}{
39
- #{$property}-top: $value !important;
40
- #{$property}-bottom: $value !important;
26
+ // Physical and logical side spacing
27
+ @each $direction, $suffix in $spacing-directions{
28
+ // The prefixed sets skip physical left and right; start and end
29
+ // cover them and mirror in RTL.
30
+ @if $prefix == "" or ($direction != "left" and $direction != "right") {
31
+ .#{$prefix}#{$shortcut}#{$suffix}-#{$name}{
32
+ #{$property}-#{$direction}: $value !important
33
+ }
34
+ }
35
+ }
36
+ .#{$prefix}#{$shortcut}x-#{$name}{
37
+ #{$property}-inline: $value !important;
38
+ }
39
+ .#{$prefix}#{$shortcut}y-#{$name}{
40
+ #{$property}-block: $value !important;
41
41
  }
42
42
  }
43
43
  }
44
44
  }
45
45
  }
46
46
 
47
- // Gap on the same scale for flex and grid containers: .gap-0 ... .gap-6.
48
- @each $name, $value in $spacing-values {
49
- @if $name != "auto" {
50
- .gap-#{$name} { gap: $value !important; }
47
+ @mixin _gaps($prefix: "") {
48
+ // Axis rules follow every shorthand value so they win at the same breakpoint.
49
+ @each $class, $property in ("gap": "gap", "gap-x": "column-gap", "gap-y": "row-gap") {
50
+ @each $name, $value in $spacing-values {
51
+ @if $name != "auto" {
52
+ .#{$prefix}#{$class}-#{$name} { #{$property}: $value !important; }
53
+ }
54
+ }
55
+ }
56
+ }
57
+
58
+ @include _margin-and-padding;
59
+ @include _gaps;
60
+
61
+ // The margin, padding and gap scales with window-size prefixes, like the
62
+ // layout classes in _helpers.scss: .expanded:p-5 and .expanded:gap-5 apply
63
+ // from Expanded up. Later in the sheet than the base classes, and every one
64
+ // is !important, so the prefixed class wins from its size class up.
65
+ @each $size in ("medium", "expanded", "large", "extra-large") {
66
+ @include bp-up($size) {
67
+ @include _margin-and-padding("#{$size}\\:");
68
+ @include _gaps("#{$size}\\:");
51
69
  }
52
70
  }
@@ -20,7 +20,7 @@ $typescale-roles: (
20
20
  "body-large", "body-medium", "body-small",
21
21
  "label-large", "label-medium", "label-small",
22
22
  "title-large", "title-medium", "title-small"
23
- ) !default;
23
+ );
24
24
 
25
25
  @each $role in $typescale-roles {
26
26
  .#{$role} {
@@ -28,6 +28,13 @@ $typescale-roles: (
28
28
  }
29
29
  }
30
30
 
31
+ // The emphasized counterpart of each role: the same type, heavier.
32
+ @each $role in $typescale-roles {
33
+ .#{$role}-emphasized {
34
+ @include typescale($role, $emphasized: true);
35
+ }
36
+ }
37
+
31
38
  // Emphasis and case. One job each, independent of the type role.
32
39
  .italic { font-style: italic; }
33
40
  .bold { font-weight: 500; }
@@ -1,98 +1,67 @@
1
1
  @use "../abstracts" as *;
2
2
 
3
- // Showing and hiding by the exact M3 window size classes.
4
- // The older small/med/xxl names remain aliases for compatibility.
3
+ // Showing and hiding by the exact M3 window size classes. The two
4
+ // `med-and-*` hide classes have no M3-named twin and stay as they are.
5
5
 
6
6
  .hide { display: none !important; }
7
7
 
8
- // Hidden from sight, still announced: a visible label's longer twin, an
9
- // icon-only control's name, a live region's text. Important for the same
10
- // reason `.hide` is.
11
- .visually-hidden,
12
- .visually-hidden-focusable:not(:focus-within) { @include visually-hidden(true); }
13
-
14
- .hide-on-compact-only,
15
- .hide-on-small-only,
16
- .hide-on-small-and-down {
17
- @include bp-down("medium") { display: none !important; }
18
- }
19
-
20
- .hide-on-med-and-down {
21
- @include bp-down("expanded") { display: none !important; }
22
- }
23
-
24
- .hide-on-med-and-up {
25
- @include bp-up("medium") { display: none !important; }
26
- }
27
-
28
- .hide-on-medium-only,
29
- .hide-on-med-only {
30
- @include bp-between("medium", "expanded") {
31
- display: none !important;
32
- }
33
- }
34
-
35
- .hide-on-expanded-only {
36
- @include bp-between("expanded", "large") {
37
- display: none !important;
38
- }
39
- }
40
-
41
- .hide-on-expanded-and-up {
42
- @include bp-up("expanded") { display: none !important; }
43
- }
44
-
45
- .hide-on-large-only {
46
- @include bp-between("large", "extra-large") {
47
- display: none !important;
8
+ // .hide from a window size up, like the other prefixed helpers. Mobile first,
9
+ // so there is no prefixed show: pair it with a hide-on-* class instead.
10
+ @each $size in ("medium", "expanded", "large", "extra-large") {
11
+ .#{$size}\:hide {
12
+ @include bp-up($size) { display: none !important; }
48
13
  }
49
14
  }
50
15
 
51
- .hide-on-extra-large-only,
52
- .hide-on-xxl-only {
53
- @include bp-up("extra-large") { display: none !important; }
54
- }
16
+ // Print. .hide-on-print drops a screen-only control from paper; .print-only
17
+ // is the reverse, for a printed footer or a QR code beside a link.
18
+ .hide-on-print { @include print-hidden; }
55
19
 
56
- .show-on-compact,
57
- .show-on-small {
58
- @include bp-down("medium") { display: block !important; }
20
+ .print-only {
21
+ @media screen { display: none !important; }
59
22
  }
60
23
 
61
- .show-on-medium {
62
- @include bp-between("medium", "expanded") {
63
- display: block !important;
64
- }
65
- }
24
+ // Hidden from sight, still announced: a visible label's longer twin, an
25
+ // icon-only control's name, a live region's text. Important for the same
26
+ // reason `.hide` is.
27
+ .visually-hidden,
28
+ .visually-hidden-focusable:not(:focus-within) { @include visually-hidden(true); }
66
29
 
67
- .show-on-expanded {
68
- @include bp-between("expanded", "large") {
69
- display: block !important;
30
+ // From the $from window size up to, not including, $to. A null end is open.
31
+ @mixin _window($from, $to) {
32
+ @if not $from {
33
+ @include bp-down($to) { @content; }
34
+ } @else if not $to {
35
+ @include bp-up($from) { @content; }
36
+ } @else {
37
+ @include bp-between($from, $to) { @content; }
70
38
  }
71
39
  }
72
40
 
73
- .show-on-expanded-and-up {
74
- @include bp-up("expanded") { display: block !important; }
75
- }
76
-
77
- .show-on-large {
78
- @include bp-between("large", "extra-large") {
79
- display: block !important;
41
+ // Class, first window size, first size past the range, display.
42
+ @each $class, $from, $to, $display in (
43
+ ("hide-on-compact-only", null, "medium", none),
44
+ ("hide-on-med-and-down", null, "expanded", none),
45
+ ("hide-on-med-and-up", "medium", null, none),
46
+ ("hide-on-medium-only", "medium", "expanded", none),
47
+ ("hide-on-expanded-only", "expanded", "large", none),
48
+ ("hide-on-expanded-and-up", "expanded", null, none),
49
+ ("hide-on-large-only", "large", "extra-large", none),
50
+ ("hide-on-extra-large-only", "extra-large", null, none),
51
+ ("show-on-compact", null, "medium", block),
52
+ ("show-on-medium", "medium", "expanded", block),
53
+ ("show-on-expanded", "expanded", "large", block),
54
+ ("show-on-expanded-and-up", "expanded", null, block),
55
+ ("show-on-large", "large", "extra-large", block),
56
+ ("show-on-extra-large", "extra-large", null, block),
57
+ ("show-on-medium-and-up", "medium", null, block),
58
+ ("show-on-medium-and-down", null, "expanded", block),
59
+ ) {
60
+ .#{$class} {
61
+ @include _window($from, $to) { display: $display !important; }
80
62
  }
81
63
  }
82
64
 
83
- .show-on-extra-large,
84
- .show-on-xxl {
85
- @include bp-up("extra-large") { display: block !important; }
86
- }
87
-
88
- .show-on-medium-and-up {
89
- @include bp-up("medium") { display: block !important; }
90
- }
91
-
92
- .show-on-medium-and-down {
93
- @include bp-down("expanded") { display: block !important; }
94
- }
95
-
96
65
  // Center text on Compact windows.
97
66
  .center-on-small-only {
98
67
  @include bp-down("medium") { text-align: center; }
@@ -6,13 +6,16 @@
6
6
 
7
7
  @each $level in map.keys($elevations) {
8
8
  .z-depth-#{$level} {
9
- @include z-depth($level);
9
+ // Level 0 exists to cancel a shadow, so it alone stays unconditional.
10
+ @include z-depth($level, $important: $level == "0");
10
11
  }
11
12
  }
12
13
 
14
+ // A disabled element does not lift. Utilities outrank components, so the
15
+ // disabled card and button rules cannot cancel this shadow themselves.
13
16
  .hoverable {
14
- transition: box-shadow 0.25s;
15
- &:hover {
16
- box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
17
+ transition: box-shadow var(--md-sys-motion-duration-medium1);
18
+ &:hover:not(:where(#{$expressive-disabled}, :has(> .primary-action[aria-disabled="true"]))) {
19
+ @include z-depth("3");
17
20
  }
18
21
  }