@expressivecss/expressive 0.15.0 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1502 -1
- package/README.md +9 -8
- package/dist/css/expressive.css +19247 -11923
- package/dist/css/expressive.css.map +1 -1
- package/dist/css/expressive.min.css +1 -1
- package/dist/css/expressive.min.css.map +1 -1
- package/dist/fonts/LICENSE-noto-sans-arabic +93 -0
- package/dist/fonts/LICENSE-noto-sans-hebrew +93 -0
- package/dist/fonts/LICENSE-noto-sans-thai +93 -0
- package/dist/fonts/material-symbols-outlined.woff2 +0 -0
- package/dist/fonts/material-symbols-rounded.woff2 +0 -0
- package/dist/fonts/material-symbols-sharp.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-400.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-500.woff2 +0 -0
- package/dist/fonts/noto-sans-arabic-arabic-700.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-400.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-500.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-700.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-cyrillic-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-400.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-500.woff2 +0 -0
- package/dist/fonts/noto-sans-devanagari-700.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-400.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-500.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-700.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-greek-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-400.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-500.woff2 +0 -0
- package/dist/fonts/noto-sans-hebrew-hebrew-700.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-700.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-400.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-500.woff2 +0 -0
- package/dist/fonts/noto-sans-latin-ext-700.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-400.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-500.woff2 +0 -0
- package/dist/fonts/noto-sans-thai-thai-700.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-400.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-500.woff2 +0 -0
- package/dist/fonts/noto-sans-vietnamese-700.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-400.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-500.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-700.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-cyrillic-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-greek-400.woff2 +0 -0
- package/dist/fonts/roboto-greek-500.woff2 +0 -0
- package/dist/fonts/roboto-greek-700.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-greek-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-latin-700.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-400.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-500.woff2 +0 -0
- package/dist/fonts/roboto-latin-ext-700.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-400.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-500.woff2 +0 -0
- package/dist/fonts/roboto-vietnamese-700.woff2 +0 -0
- package/dist/js/chunks/chunk-2CS6TITK.mjs +219 -0
- package/dist/js/chunks/chunk-2CS6TITK.mjs.map +7 -0
- package/dist/js/chunks/chunk-2RLBDFH4.mjs +108 -0
- package/dist/js/chunks/chunk-2RLBDFH4.mjs.map +7 -0
- package/dist/js/chunks/chunk-3L3QIYLC.mjs +85 -0
- package/dist/js/chunks/chunk-3L3QIYLC.mjs.map +7 -0
- package/dist/js/chunks/chunk-4EWGD4V2.mjs +75 -0
- package/dist/js/chunks/chunk-4EWGD4V2.mjs.map +7 -0
- package/dist/js/chunks/chunk-4IKVPCSU.mjs +7 -0
- package/dist/js/chunks/chunk-4IKVPCSU.mjs.map +7 -0
- package/dist/js/chunks/chunk-4PIXLDNJ.mjs +127 -0
- package/dist/js/chunks/chunk-4PIXLDNJ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KVJAVDBC.mjs → chunk-4QUCNFSD.mjs} +64 -113
- package/dist/js/chunks/chunk-4QUCNFSD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UETTGDLI.mjs → chunk-4TRZ2AER.mjs} +35 -41
- package/dist/js/chunks/chunk-4TRZ2AER.mjs.map +7 -0
- package/dist/js/chunks/{chunk-C6CHEWYP.mjs → chunk-5KIHWJI2.mjs} +40 -26
- package/dist/js/chunks/chunk-5KIHWJI2.mjs.map +7 -0
- package/dist/js/chunks/{chunk-L27Q6ZMI.mjs → chunk-67ZPPKXS.mjs} +20 -33
- package/dist/js/chunks/chunk-67ZPPKXS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XAEAEHIX.mjs → chunk-6FSEUFVW.mjs} +39 -26
- package/dist/js/chunks/chunk-6FSEUFVW.mjs.map +7 -0
- package/dist/js/chunks/chunk-752ADW4M.mjs +225 -0
- package/dist/js/chunks/chunk-752ADW4M.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CK2XCICY.mjs → chunk-75E5EDJF.mjs} +3 -11
- package/dist/js/chunks/chunk-75E5EDJF.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KHXZ2A4K.mjs → chunk-7NLUI3RR.mjs} +139 -66
- package/dist/js/chunks/chunk-7NLUI3RR.mjs.map +7 -0
- package/dist/js/chunks/chunk-7W7TV6NY.mjs +108 -0
- package/dist/js/chunks/chunk-7W7TV6NY.mjs.map +7 -0
- package/dist/js/chunks/chunk-7YQBHTK3.mjs +225 -0
- package/dist/js/chunks/chunk-7YQBHTK3.mjs.map +7 -0
- package/dist/js/chunks/chunk-7YZ5CN3V.mjs +33 -0
- package/dist/js/chunks/chunk-7YZ5CN3V.mjs.map +7 -0
- package/dist/js/chunks/chunk-AI73GJKG.mjs +28 -0
- package/dist/js/chunks/chunk-AI73GJKG.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LQWUDNHZ.mjs → chunk-ANKFWNWT.mjs} +21 -45
- package/dist/js/chunks/chunk-ANKFWNWT.mjs.map +7 -0
- package/dist/js/chunks/{chunk-5CEAOLUA.mjs → chunk-B7DQFHA5.mjs} +30 -47
- package/dist/js/chunks/chunk-B7DQFHA5.mjs.map +7 -0
- package/dist/js/chunks/chunk-BIGU5RCJ.mjs +153 -0
- package/dist/js/chunks/chunk-BIGU5RCJ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VGNYF6FB.mjs → chunk-BPF3I2MN.mjs} +109 -24
- package/dist/js/chunks/chunk-BPF3I2MN.mjs.map +7 -0
- package/dist/js/chunks/chunk-CMGXGYUC.mjs +74 -0
- package/dist/js/chunks/chunk-CMGXGYUC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-NUHMOAOY.mjs → chunk-CSYWKEK3.mjs} +310 -196
- package/dist/js/chunks/chunk-CSYWKEK3.mjs.map +7 -0
- package/dist/js/chunks/chunk-CZSQHXEV.mjs +227 -0
- package/dist/js/chunks/chunk-CZSQHXEV.mjs.map +7 -0
- package/dist/js/chunks/chunk-DZYVU75J.mjs +121 -0
- package/dist/js/chunks/chunk-DZYVU75J.mjs.map +7 -0
- package/dist/js/chunks/{chunk-74MXKKLN.mjs → chunk-EC26RU2D.mjs} +11 -29
- package/dist/js/chunks/chunk-EC26RU2D.mjs.map +7 -0
- package/dist/js/chunks/{chunk-WDK4T63U.mjs → chunk-EVCVFEV3.mjs} +235 -146
- package/dist/js/chunks/chunk-EVCVFEV3.mjs.map +7 -0
- package/dist/js/chunks/chunk-FCNF4GRJ.mjs +445 -0
- package/dist/js/chunks/chunk-FCNF4GRJ.mjs.map +7 -0
- package/dist/js/chunks/chunk-GCWWEZKO.mjs +342 -0
- package/dist/js/chunks/chunk-GCWWEZKO.mjs.map +7 -0
- package/dist/js/chunks/chunk-GNRSYMVH.mjs +1 -0
- package/dist/js/chunks/chunk-GVZQH2H5.mjs +54 -0
- package/dist/js/chunks/chunk-GVZQH2H5.mjs.map +7 -0
- package/dist/js/chunks/chunk-GWZ76SR4.mjs +435 -0
- package/dist/js/chunks/chunk-GWZ76SR4.mjs.map +7 -0
- package/dist/js/chunks/{chunk-PDG64UHF.mjs → chunk-ILDRRG7T.mjs} +21 -23
- package/dist/js/chunks/chunk-ILDRRG7T.mjs.map +7 -0
- package/dist/js/chunks/chunk-INLZWHLY.mjs +80 -0
- package/dist/js/chunks/chunk-INLZWHLY.mjs.map +7 -0
- package/dist/js/chunks/chunk-JUKBBN6P.mjs +175 -0
- package/dist/js/chunks/chunk-JUKBBN6P.mjs.map +7 -0
- package/dist/js/chunks/chunk-KYIEG4U3.mjs +730 -0
- package/dist/js/chunks/chunk-KYIEG4U3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-BGZLF6JZ.mjs → chunk-KZPSAXIU.mjs} +142 -32
- package/dist/js/chunks/chunk-KZPSAXIU.mjs.map +7 -0
- package/dist/js/chunks/chunk-LDXCC2L3.mjs +438 -0
- package/dist/js/chunks/chunk-LDXCC2L3.mjs.map +7 -0
- package/dist/js/chunks/chunk-NAC72P7R.mjs +137 -0
- package/dist/js/chunks/chunk-NAC72P7R.mjs.map +7 -0
- package/dist/js/chunks/chunk-NBJAUGPP.mjs +244 -0
- package/dist/js/chunks/chunk-NBJAUGPP.mjs.map +7 -0
- package/dist/js/chunks/chunk-NNHVANQA.mjs +113 -0
- package/dist/js/chunks/chunk-NNHVANQA.mjs.map +7 -0
- package/dist/js/chunks/chunk-NVQ5EHCU.mjs +376 -0
- package/dist/js/chunks/chunk-NVQ5EHCU.mjs.map +7 -0
- package/dist/js/chunks/{chunk-DXGRXYYL.mjs → chunk-OP43LLIC.mjs} +28 -45
- package/dist/js/chunks/chunk-OP43LLIC.mjs.map +7 -0
- package/dist/js/chunks/chunk-OUCHKSAW.mjs +63 -0
- package/dist/js/chunks/chunk-OUCHKSAW.mjs.map +7 -0
- package/dist/js/chunks/{chunk-TSZYSW7F.mjs → chunk-OYNUDOHR.mjs} +19 -47
- package/dist/js/chunks/chunk-OYNUDOHR.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UAZSDUVP.mjs → chunk-P6DRQ6KS.mjs} +36 -30
- package/dist/js/chunks/chunk-P6DRQ6KS.mjs.map +7 -0
- package/dist/js/chunks/chunk-PA7NU5AK.mjs +99 -0
- package/dist/js/chunks/chunk-PA7NU5AK.mjs.map +7 -0
- package/dist/js/chunks/chunk-QACZ6TUP.mjs +224 -0
- package/dist/js/chunks/chunk-QACZ6TUP.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GJL6GCIU.mjs → chunk-QXKWVHBD.mjs} +265 -161
- package/dist/js/chunks/chunk-QXKWVHBD.mjs.map +7 -0
- package/dist/js/chunks/{chunk-X4ISMKE2.mjs → chunk-ROH2HDB4.mjs} +7 -6
- package/dist/js/chunks/chunk-ROH2HDB4.mjs.map +7 -0
- package/dist/js/chunks/chunk-S23RJ3XY.mjs +86 -0
- package/dist/js/chunks/chunk-S23RJ3XY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SMY7GJSS.mjs → chunk-SPPHF7YZ.mjs} +36 -29
- package/dist/js/chunks/chunk-SPPHF7YZ.mjs.map +7 -0
- package/dist/js/chunks/chunk-T3BNSRP3.mjs +152 -0
- package/dist/js/chunks/chunk-T3BNSRP3.mjs.map +7 -0
- package/dist/js/chunks/chunk-TFABTUAZ.mjs +108 -0
- package/dist/js/chunks/chunk-TFABTUAZ.mjs.map +7 -0
- package/dist/js/chunks/chunk-U4B3VHFS.mjs +507 -0
- package/dist/js/chunks/chunk-U4B3VHFS.mjs.map +7 -0
- package/dist/js/chunks/chunk-UGJHCHXG.mjs +341 -0
- package/dist/js/chunks/chunk-UGJHCHXG.mjs.map +7 -0
- package/dist/js/chunks/chunk-VFV75DHF.mjs +70 -0
- package/dist/js/chunks/chunk-VFV75DHF.mjs.map +7 -0
- package/dist/js/chunks/{chunk-ZX6M7SWO.mjs → chunk-VGY4M57S.mjs} +266 -120
- package/dist/js/chunks/chunk-VGY4M57S.mjs.map +7 -0
- package/dist/js/chunks/chunk-VH4BMAZS.mjs +167 -0
- package/dist/js/chunks/chunk-VH4BMAZS.mjs.map +7 -0
- package/dist/js/chunks/chunk-VJVQIXHC.mjs +123 -0
- package/dist/js/chunks/chunk-VJVQIXHC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SFI2U4YW.mjs → chunk-VMY55K2X.mjs} +76 -109
- package/dist/js/chunks/chunk-VMY55K2X.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KUFHW3DS.mjs → chunk-VR3L2WN5.mjs} +11 -17
- package/dist/js/chunks/chunk-VR3L2WN5.mjs.map +7 -0
- package/dist/js/chunks/chunk-W6FAL3TI.mjs +38 -0
- package/dist/js/chunks/chunk-W6FAL3TI.mjs.map +7 -0
- package/dist/js/chunks/chunk-WU7XJ4RR.mjs +450 -0
- package/dist/js/chunks/chunk-WU7XJ4RR.mjs.map +7 -0
- package/dist/js/chunks/chunk-X7SDA2J5.mjs +116 -0
- package/dist/js/chunks/chunk-X7SDA2J5.mjs.map +7 -0
- package/dist/js/chunks/chunk-Y6H2X7ZC.mjs +209 -0
- package/dist/js/chunks/chunk-Y6H2X7ZC.mjs.map +7 -0
- package/dist/js/chunks/chunk-Y6TLRA3U.mjs +129 -0
- package/dist/js/chunks/chunk-Y6TLRA3U.mjs.map +7 -0
- package/dist/js/chunks/chunk-Z4GICXR2.mjs +190 -0
- package/dist/js/chunks/chunk-Z4GICXR2.mjs.map +7 -0
- package/dist/js/chunks/chunk-Z4OARDZ7.mjs +442 -0
- package/dist/js/chunks/chunk-Z4OARDZ7.mjs.map +7 -0
- package/dist/js/chunks/{chunk-FM5CZOUB.mjs → chunk-ZJNLAGY5.mjs} +19 -30
- package/dist/js/chunks/chunk-ZJNLAGY5.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZKWUWBUB.mjs +81 -0
- package/dist/js/chunks/chunk-ZKWUWBUB.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZM3XBHWV.mjs +746 -0
- package/dist/js/chunks/chunk-ZM3XBHWV.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZO6ZLHFF.mjs +48 -0
- package/dist/js/chunks/chunk-ZO6ZLHFF.mjs.map +7 -0
- package/dist/js/chunks/chunk-ZVLOUDIJ.mjs +251 -0
- package/dist/js/chunks/chunk-ZVLOUDIJ.mjs.map +7 -0
- package/dist/js/expressive.cjs +10613 -4327
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +10613 -4327
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +23 -22
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +182 -71
- package/dist/js/expressive.mjs.map +2 -2
- package/dist/js/internal/behaviors/bottomSheets.mjs +4 -3
- package/dist/js/internal/behaviors/copy.mjs +9 -0
- package/dist/js/internal/behaviors/copy.mjs.map +7 -0
- package/dist/js/internal/behaviors/dataTables.mjs +10 -0
- package/dist/js/internal/behaviors/dataTables.mjs.map +7 -0
- package/dist/js/internal/behaviors/dialogs.mjs +2 -2
- package/dist/js/internal/behaviors/forms.mjs +2 -2
- package/dist/js/internal/behaviors/imageCompare.mjs +8 -0
- package/dist/js/internal/behaviors/imageCompare.mjs.map +7 -0
- package/dist/js/internal/behaviors/lists.mjs +8 -0
- package/dist/js/internal/behaviors/lists.mjs.map +7 -0
- package/dist/js/internal/behaviors/paneResize.mjs +8 -0
- package/dist/js/internal/behaviors/paneResize.mjs.map +7 -0
- package/dist/js/internal/behaviors/sheetDrag.mjs +7 -2
- package/dist/js/internal/behaviors/sideSheets.mjs +4 -3
- package/dist/js/internal/behaviors/sortable.mjs +8 -0
- package/dist/js/internal/behaviors/sortable.mjs.map +7 -0
- package/dist/js/internal/behaviors/theme.mjs +8 -0
- package/dist/js/internal/behaviors/theme.mjs.map +7 -0
- package/dist/js/internal/behaviors/tour.mjs +8 -0
- package/dist/js/internal/behaviors/tour.mjs.map +7 -0
- package/dist/js/internal/behaviors/transferList.mjs +8 -0
- package/dist/js/internal/behaviors/transferList.mjs.map +7 -0
- package/dist/js/internal/components/appBar.mjs +3 -2
- package/dist/js/internal/components/autocomplete.mjs +4 -4
- package/dist/js/internal/components/backToTop.mjs +9 -0
- package/dist/js/internal/components/backToTop.mjs.map +7 -0
- package/dist/js/internal/components/barChart.mjs +5 -4
- package/dist/js/internal/components/buttonGroup.mjs +3 -2
- package/dist/js/internal/components/buttons.mjs +3 -3
- package/dist/js/internal/components/cards.mjs +3 -3
- package/dist/js/internal/components/carousel.mjs +3 -3
- package/dist/js/internal/components/cascader.mjs +10 -0
- package/dist/js/internal/components/cascader.mjs.map +7 -0
- package/dist/js/internal/components/characterCounter.mjs +3 -2
- package/dist/js/internal/components/chips.mjs +6 -5
- package/dist/js/internal/components/colorPicker.mjs +9 -0
- package/dist/js/internal/components/colorPicker.mjs.map +7 -0
- package/dist/js/internal/components/columnChart.mjs +4 -3
- package/dist/js/internal/components/commandPalette.mjs +3 -3
- package/dist/js/internal/components/confetti.mjs +3 -2
- package/dist/js/internal/components/currencyInput.mjs +9 -0
- package/dist/js/internal/components/currencyInput.mjs.map +7 -0
- package/dist/js/internal/components/datepicker.mjs +11 -8
- package/dist/js/internal/components/expandingCard.mjs +3 -3
- package/dist/js/internal/components/funnelChart.mjs +10 -0
- package/dist/js/internal/components/funnelChart.mjs.map +7 -0
- package/dist/js/internal/components/heatmapChart.mjs +4 -3
- package/dist/js/internal/components/hoverCard.mjs +9 -0
- package/dist/js/internal/components/hoverCard.mjs.map +7 -0
- package/dist/js/internal/components/index.mjs +131 -66
- package/dist/js/internal/components/inputMask.mjs +9 -0
- package/dist/js/internal/components/inputMask.mjs.map +7 -0
- package/dist/js/internal/components/keypad.mjs +3 -3
- package/dist/js/internal/components/lightbox.mjs +3 -3
- package/dist/js/internal/components/lineChart.mjs +25 -4
- package/dist/js/internal/components/loadingOverlay.mjs +9 -0
- package/dist/js/internal/components/loadingOverlay.mjs.map +7 -0
- package/dist/js/internal/components/mapView.mjs +3 -3
- package/dist/js/internal/components/menu.mjs +3 -3
- package/dist/js/internal/components/menubar.mjs +10 -0
- package/dist/js/internal/components/menubar.mjs.map +7 -0
- package/dist/js/internal/components/messageScroller.mjs +3 -3
- package/dist/js/internal/components/mixedChart.mjs +5 -4
- package/dist/js/internal/components/navigationRail.mjs +3 -2
- package/dist/js/internal/components/particles.mjs +3 -2
- package/dist/js/internal/components/pieChart.mjs +4 -3
- package/dist/js/internal/components/pullToRefresh.mjs +9 -0
- package/dist/js/internal/components/pullToRefresh.mjs.map +7 -0
- package/dist/js/internal/components/questionnaire.mjs +3 -3
- package/dist/js/internal/components/radarChart.mjs +4 -3
- package/dist/js/internal/components/radialChart.mjs +4 -3
- package/dist/js/internal/components/registry.mjs +59 -41
- package/dist/js/internal/components/richTextEditor.mjs +3 -3
- package/dist/js/internal/components/sankeyChart.mjs +10 -0
- package/dist/js/internal/components/sankeyChart.mjs.map +7 -0
- package/dist/js/internal/components/scatterChart.mjs +10 -0
- package/dist/js/internal/components/scatterChart.mjs.map +7 -0
- package/dist/js/internal/components/scrollspy.mjs +3 -2
- package/dist/js/internal/components/select.mjs +4 -4
- package/dist/js/internal/components/showMore.mjs +9 -0
- package/dist/js/internal/components/showMore.mjs.map +7 -0
- package/dist/js/internal/components/slider.mjs +3 -3
- package/dist/js/internal/components/snackbar.mjs +2 -2
- package/dist/js/internal/components/swipeActions.mjs +9 -0
- package/dist/js/internal/components/swipeActions.mjs.map +7 -0
- package/dist/js/internal/components/tabs.mjs +3 -4
- package/dist/js/internal/components/timepicker.mjs +5 -4
- package/dist/js/internal/components/tooltip.mjs +3 -3
- package/dist/js/internal/components/treeSelect.mjs +13 -0
- package/dist/js/internal/components/treeSelect.mjs.map +7 -0
- package/dist/js/internal/components/treemapChart.mjs +10 -0
- package/dist/js/internal/components/treemapChart.mjs.map +7 -0
- package/dist/js/internal/core/component.mjs +2 -1
- package/dist/js/internal/core/formControl.mjs +12 -0
- package/dist/js/internal/core/formControl.mjs.map +7 -0
- package/dist/js/internal/core/spring.mjs +11 -0
- package/dist/js/internal/core/spring.mjs.map +7 -0
- package/dist/js/internal/core/utils.mjs +11 -3
- package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs +13 -0
- package/dist/js/internal/plugins/modalDisplayPlugin.mjs.map +7 -0
- package/dist/js/modular.mjs +173 -71
- package/dist/types/behaviors/bottomSheets.d.ts +19 -3
- package/dist/types/behaviors/copy.d.ts +18 -0
- package/dist/types/behaviors/dataTables.d.ts +129 -0
- package/dist/types/behaviors/dialogs.d.ts +27 -1
- package/dist/types/behaviors/forms.d.ts +68 -2
- package/dist/types/behaviors/imageCompare.d.ts +12 -0
- package/dist/types/behaviors/lists.d.ts +12 -0
- package/dist/types/behaviors/paneResize.d.ts +29 -0
- package/dist/types/behaviors/sheetDrag.d.ts +18 -0
- package/dist/types/behaviors/sideSheets.d.ts +1 -1
- package/dist/types/behaviors/sortable.d.ts +28 -0
- package/dist/types/behaviors/theme.d.ts +22 -0
- package/dist/types/behaviors/tour.d.ts +36 -0
- package/dist/types/behaviors/transferList.d.ts +51 -0
- package/dist/types/components/appBar.d.ts +5 -6
- package/dist/types/components/autocomplete.d.ts +91 -17
- package/dist/types/components/backToTop.d.ts +36 -0
- package/dist/types/components/barChart.d.ts +3 -6
- package/dist/types/components/buttonGroup.d.ts +2 -4
- package/dist/types/components/buttons.d.ts +5 -5
- package/dist/types/components/cards.d.ts +3 -16
- package/dist/types/components/carousel.d.ts +9 -15
- package/dist/types/components/cascader.d.ts +130 -0
- package/dist/types/components/characterCounter.d.ts +2 -15
- package/dist/types/components/chips.d.ts +65 -19
- package/dist/types/components/colorPicker.d.ts +42 -0
- package/dist/types/components/columnChart.d.ts +23 -10
- package/dist/types/components/commandPalette.d.ts +11 -16
- package/dist/types/components/confetti.d.ts +2 -4
- package/dist/types/components/currencyInput.d.ts +59 -0
- package/dist/types/components/datepicker.d.ts +56 -32
- package/dist/types/components/expandingCard.d.ts +4 -6
- package/dist/types/components/funnelChart.d.ts +38 -0
- package/dist/types/components/heatmapChart.d.ts +39 -8
- package/dist/types/components/hoverCard.d.ts +58 -0
- package/dist/types/components/index.d.ts +16 -1
- package/dist/types/components/inputMask.d.ts +30 -0
- package/dist/types/components/keypad.d.ts +38 -6
- package/dist/types/components/lightbox.d.ts +14 -20
- package/dist/types/components/lineChart.d.ts +172 -10
- package/dist/types/components/loadingOverlay.d.ts +42 -0
- package/dist/types/components/mapView.d.ts +26 -17
- package/dist/types/components/menu.d.ts +60 -22
- package/dist/types/components/menubar.d.ts +37 -0
- package/dist/types/components/messageScroller.d.ts +2 -14
- package/dist/types/components/mixedChart.d.ts +15 -6
- package/dist/types/components/navigationRail.d.ts +16 -5
- package/dist/types/components/particles.d.ts +8 -4
- package/dist/types/components/pieChart.d.ts +32 -7
- package/dist/types/components/pullToRefresh.d.ts +80 -0
- package/dist/types/components/questionnaire.d.ts +58 -16
- package/dist/types/components/radarChart.d.ts +10 -6
- package/dist/types/components/radialChart.d.ts +58 -7
- package/dist/types/components/registry.d.ts +73 -3
- package/dist/types/components/richTextEditor.d.ts +6 -14
- package/dist/types/components/sankeyChart.d.ts +72 -0
- package/dist/types/components/scatterChart.d.ts +102 -0
- package/dist/types/components/scrollspy.d.ts +3 -5
- package/dist/types/components/select.d.ts +43 -30
- package/dist/types/components/showMore.d.ts +51 -0
- package/dist/types/components/slider.d.ts +3 -15
- package/dist/types/components/snackbar.d.ts +61 -0
- package/dist/types/components/swipeActions.d.ts +81 -0
- package/dist/types/components/tabs.d.ts +89 -27
- package/dist/types/components/timepicker.d.ts +113 -21
- package/dist/types/components/tooltip.d.ts +56 -20
- package/dist/types/components/treeSelect.d.ts +106 -0
- package/dist/types/components/treemapChart.d.ts +56 -0
- package/dist/types/core/component.d.ts +43 -25
- package/dist/types/core/formControl.d.ts +21 -0
- package/dist/types/core/spring.d.ts +20 -0
- package/dist/types/core/utils.d.ts +85 -72
- package/dist/types/modular.d.ts +33 -1
- package/dist/types/plugins/dockedDisplayPlugin.d.ts +10 -8
- package/dist/types/plugins/modalDisplayPlugin.d.ts +32 -0
- package/package.json +10 -8
- package/src/sass/README.md +27 -18
- package/src/sass/abstracts/_elevation.scss +13 -7
- package/src/sass/abstracts/_index.scss +1 -0
- package/src/sass/abstracts/_mixins.scss +422 -36
- package/src/sass/abstracts/_spring.scss +63 -0
- package/src/sass/abstracts/_variables.scss +39 -21
- package/src/sass/base/_fonts.scss +61 -48
- package/src/sass/base/_global.scss +104 -24
- package/src/sass/base/_index.scss +2 -0
- package/src/sass/base/_normalize.scss +59 -114
- package/src/sass/base/_print.scss +21 -0
- package/src/sass/base/_prose.scss +68 -0
- package/src/sass/base/_typography.scss +9 -5
- package/src/sass/components/_accordion.scss +9 -16
- package/src/sass/components/_alert.scss +102 -0
- package/src/sass/components/_aura.scss +8 -3
- package/src/sass/components/_avatar.scss +3 -3
- package/src/sass/components/_back-to-top.scss +38 -0
- package/src/sass/components/_badges.scss +6 -5
- package/src/sass/components/_bar-chart.scss +41 -19
- package/src/sass/components/_bottom-sheet.scss +44 -16
- package/src/sass/components/_breadcrumb.scss +8 -1
- package/src/sass/components/_button-groups.scss +15 -25
- package/src/sass/components/_buttons.scss +156 -63
- package/src/sass/components/_calendar.scss +246 -0
- package/src/sass/components/_cards.scss +36 -44
- package/src/sass/components/_carousel.scss +27 -103
- package/src/sass/components/_cascader.scss +142 -0
- package/src/sass/components/_chips.scss +36 -46
- package/src/sass/components/_column-chart.scss +19 -12
- package/src/sass/components/_command-palette.scss +4 -7
- package/src/sass/components/_confetti.scss +0 -2
- package/src/sass/components/_countdown.scss +1 -1
- package/src/sass/components/_data-table.scss +162 -25
- package/src/sass/components/_datepicker.scss +54 -40
- package/src/sass/components/_description-list.scss +85 -0
- package/src/sass/components/_dialog.scss +42 -41
- package/src/sass/components/_docked-display.scss +1 -3
- package/src/sass/components/_drag-handle.scss +16 -20
- package/src/sass/components/_expanding-card.scss +20 -9
- package/src/sass/components/_fab-menu.scss +44 -32
- package/src/sass/components/_funnel-chart.scss +124 -0
- package/src/sass/components/_heatmap-chart.scss +111 -22
- package/src/sass/components/_icon-buttons.scss +7 -7
- package/src/sass/components/_icons-material-design.scss +2 -2
- package/src/sass/components/_image-compare.scss +108 -0
- package/src/sass/components/_index.scss +20 -0
- package/src/sass/components/_keypad.scss +39 -19
- package/src/sass/components/_kpi.scss +6 -11
- package/src/sass/components/_lightbox.scss +24 -13
- package/src/sass/components/_line-chart.scss +16 -2
- package/src/sass/components/_list.scss +59 -14
- package/src/sass/components/_loading-indicator.scss +1 -0
- package/src/sass/components/_loading-overlay.scss +105 -0
- package/src/sass/components/_map.scss +33 -11
- package/src/sass/components/_marquee.scss +3 -2
- package/src/sass/components/_mega-menu.scss +137 -0
- package/src/sass/components/_menu.scss +143 -123
- package/src/sass/components/_menubar.scss +59 -0
- package/src/sass/components/_message-scroller.scss +2 -2
- package/src/sass/components/_message.scss +3 -3
- package/src/sass/components/_mixed-chart.scss +37 -9
- package/src/sass/components/_modal-display.scss +21 -0
- package/src/sass/components/_navbar.scss +34 -20
- package/src/sass/components/_navigation-bar.scss +15 -77
- package/src/sass/components/_navigation-rail.scss +151 -92
- package/src/sass/components/_org-chart.scss +192 -0
- package/src/sass/components/_page-footer.scss +1 -1
- package/src/sass/components/_pagination.scss +6 -13
- package/src/sass/components/_panes.scss +32 -26
- package/src/sass/components/_particles.scss +0 -2
- package/src/sass/components/_pie-chart.scss +91 -11
- package/src/sass/components/_popover.scss +18 -5
- package/src/sass/components/_progress.scss +152 -31
- package/src/sass/components/_pull-to-refresh.scss +90 -0
- package/src/sass/components/_questionnaire.scss +74 -3
- package/src/sass/components/_radar-chart.scss +38 -10
- package/src/sass/components/_radial-chart.scss +113 -5
- package/src/sass/components/_rich-text-editor.scss +2 -2
- package/src/sass/components/_sankey-chart.scss +114 -0
- package/src/sass/components/_scatter-chart.scss +153 -0
- package/src/sass/components/_scrim.scss +0 -2
- package/src/sass/components/_scrollspy.scss +0 -2
- package/src/sass/components/_search.scss +26 -22
- package/src/sass/components/_show-more.scss +8 -0
- package/src/sass/components/_side-sheet.scss +23 -37
- package/src/sass/components/_skeleton.scss +2 -4
- package/src/sass/components/_snackbar.scss +27 -21
- package/src/sass/components/_split-button.scss +5 -5
- package/src/sass/components/_stat.scss +3 -8
- package/src/sass/components/_stepper.scss +1 -1
- package/src/sass/components/_swipe-actions.scss +71 -0
- package/src/sass/components/_tabs.scss +51 -32
- package/src/sass/components/_timeline.scss +12 -12
- package/src/sass/components/_timepicker.scss +109 -78
- package/src/sass/components/_toolbar.scss +35 -43
- package/src/sass/components/_tooltip.scss +21 -12
- package/src/sass/components/_tour.scss +89 -0
- package/src/sass/components/_transfer-list.scss +73 -0
- package/src/sass/components/_transitions.scss +4 -4
- package/src/sass/components/_tree.scss +3 -16
- package/src/sass/components/_treemap-chart.scss +122 -0
- package/src/sass/components/forms/_checkboxes.scss +106 -24
- package/src/sass/components/forms/_color-picker.scss +135 -0
- package/src/sass/components/forms/_color-swatches.scss +85 -0
- package/src/sass/components/forms/_drop-zone.scss +15 -9
- package/src/sass/components/forms/_fieldset.scss +7 -7
- package/src/sass/components/forms/_file-input.scss +6 -8
- package/src/sass/components/forms/_index.scss +3 -1
- package/src/sass/components/forms/_input-fields.scss +254 -90
- package/src/sass/components/forms/_radio-buttons.scss +33 -94
- package/src/sass/components/forms/_rating.scss +2 -32
- package/src/sass/components/forms/_select.scss +199 -20
- package/src/sass/components/forms/_slider.scss +91 -94
- package/src/sass/components/forms/_switches.scss +53 -164
- package/src/sass/custom.scss +10 -1
- package/src/sass/expressive.scss +3 -63
- package/src/sass/tokens/_contrast.scss +94 -0
- package/src/sass/tokens/_elevation.scss +16 -0
- package/src/sass/tokens/_index.scss +5 -0
- package/src/sass/tokens/_motion.scss +109 -0
- package/src/sass/tokens/_reference.scss +72 -141
- package/src/sass/tokens/_shape.scss +38 -0
- package/src/sass/tokens/_stacking.scss +27 -0
- package/src/sass/tokens/_state.scss +0 -2
- package/src/sass/tokens/_theme.scss +10 -1
- package/src/sass/tokens/_vibrant.scss +2 -5
- package/src/sass/utilities/_defer-render.scss +17 -0
- package/src/sass/utilities/_helpers.scss +183 -26
- package/src/sass/utilities/_index.scss +1 -0
- package/src/sass/utilities/_scroll-area.scss +0 -2
- package/src/sass/utilities/_spacing.scss +52 -34
- package/src/sass/utilities/_typescale.scss +8 -1
- package/src/sass/utilities/_visibility.scss +47 -76
- package/src/sass/utilities/_z-depth.scss +7 -4
- package/dist/js/chunks/chunk-33QVDDGR.mjs +0 -270
- package/dist/js/chunks/chunk-33QVDDGR.mjs.map +0 -7
- package/dist/js/chunks/chunk-45FER6RI.mjs +0 -59
- package/dist/js/chunks/chunk-45FER6RI.mjs.map +0 -7
- package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +0 -7
- package/dist/js/chunks/chunk-6VATUZC6.mjs +0 -295
- package/dist/js/chunks/chunk-6VATUZC6.mjs.map +0 -7
- package/dist/js/chunks/chunk-74MXKKLN.mjs.map +0 -7
- package/dist/js/chunks/chunk-AIURVCG6.mjs +0 -55
- package/dist/js/chunks/chunk-AIURVCG6.mjs.map +0 -7
- package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +0 -7
- package/dist/js/chunks/chunk-CK2XCICY.mjs.map +0 -7
- package/dist/js/chunks/chunk-CXXM2L4F.mjs +0 -344
- package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +0 -7
- package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +0 -7
- package/dist/js/chunks/chunk-FM5CZOUB.mjs.map +0 -7
- package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +0 -7
- package/dist/js/chunks/chunk-K3HZMFMD.mjs +0 -135
- package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +0 -7
- package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +0 -7
- package/dist/js/chunks/chunk-KQACNQ22.mjs +0 -7
- package/dist/js/chunks/chunk-KQACNQ22.mjs.map +0 -7
- package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +0 -7
- package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +0 -7
- package/dist/js/chunks/chunk-L27Q6ZMI.mjs.map +0 -7
- package/dist/js/chunks/chunk-LQWUDNHZ.mjs.map +0 -7
- package/dist/js/chunks/chunk-M372EDXD.mjs +0 -322
- package/dist/js/chunks/chunk-M372EDXD.mjs.map +0 -7
- package/dist/js/chunks/chunk-M3MURWMB.mjs +0 -82
- package/dist/js/chunks/chunk-M3MURWMB.mjs.map +0 -7
- package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +0 -7
- package/dist/js/chunks/chunk-OWG3LMUL.mjs +0 -169
- package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +0 -7
- package/dist/js/chunks/chunk-PD6HYHAE.mjs +0 -48
- package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +0 -7
- package/dist/js/chunks/chunk-PDG64UHF.mjs.map +0 -7
- package/dist/js/chunks/chunk-PO3AXVR3.mjs +0 -546
- package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +0 -7
- package/dist/js/chunks/chunk-QYGK36OG.mjs +0 -181
- package/dist/js/chunks/chunk-QYGK36OG.mjs.map +0 -7
- package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +0 -7
- package/dist/js/chunks/chunk-SMY7GJSS.mjs.map +0 -7
- package/dist/js/chunks/chunk-TCCA2HDG.mjs +0 -414
- package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +0 -7
- package/dist/js/chunks/chunk-TSZYSW7F.mjs.map +0 -7
- package/dist/js/chunks/chunk-UAZSDUVP.mjs.map +0 -7
- package/dist/js/chunks/chunk-UBRZZWRA.mjs +0 -127
- package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +0 -7
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs +0 -287
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +0 -7
- package/dist/js/chunks/chunk-UETTGDLI.mjs.map +0 -7
- package/dist/js/chunks/chunk-UNCRDLP6.mjs +0 -136
- package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +0 -7
- package/dist/js/chunks/chunk-VGPGBNGL.mjs +0 -68
- package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +0 -7
- package/dist/js/chunks/chunk-VKAUVTQY.mjs +0 -1
- package/dist/js/chunks/chunk-VM4FTS7L.mjs +0 -48
- package/dist/js/chunks/chunk-VM4FTS7L.mjs.map +0 -7
- package/dist/js/chunks/chunk-WDK4T63U.mjs.map +0 -7
- package/dist/js/chunks/chunk-WOCCTVUF.mjs +0 -185
- package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +0 -7
- package/dist/js/chunks/chunk-WQYN5L4E.mjs +0 -107
- package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +0 -7
- package/dist/js/chunks/chunk-X4ISMKE2.mjs.map +0 -7
- package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +0 -7
- package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-VKAUVTQY.mjs.map → chunk-GNRSYMVH.mjs.map} +0 -0
|
@@ -6,6 +6,16 @@
|
|
|
6
6
|
|
|
7
7
|
$_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
8
8
|
|
|
9
|
+
/// A dp size as rem, for a box that holds text or an icon.
|
|
10
|
+
///
|
|
11
|
+
/// Type is set in rem, so raising the browser's default font size or zooming
|
|
12
|
+
/// text only grows the text. A px box around it stays put, and the text spills
|
|
13
|
+
/// out of it or is cut. A rem box grows with its text, and it renders exactly
|
|
14
|
+
/// as before at the default 16px. Borders, gaps and insets stay px.
|
|
15
|
+
@function rem($px) {
|
|
16
|
+
@return math.div($px, 16px) * 1rem;
|
|
17
|
+
}
|
|
18
|
+
|
|
9
19
|
/// A state layer opacity, as the percentage `color-mix()` wants.
|
|
10
20
|
///
|
|
11
21
|
/// The tokens hold numbers (0.08), because an overlay uses one as `opacity`
|
|
@@ -23,12 +33,17 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
23
33
|
@return calc(var(--md-sys-state-#{$state}-state-layer-opacity) * 100%);
|
|
24
34
|
}
|
|
25
35
|
|
|
36
|
+
/// `$color` at the `$state` layer's opacity, mixed over `$base`.
|
|
37
|
+
@function state-layer($color, $state, $base: transparent) {
|
|
38
|
+
@return color-mix(in oklab, $color state-opacity($state), $base);
|
|
39
|
+
}
|
|
40
|
+
|
|
26
41
|
|
|
27
42
|
// Common-button geometry. M3 Expressive's default size is small: 40dp,
|
|
28
43
|
// label-large, corner.full, 16dp inset, 8dp icon gap. The size axis moves
|
|
29
44
|
// those tokens; the style mixins only change color and elevation.
|
|
30
45
|
@mixin btn(
|
|
31
|
-
$height: var(--md-comp-filled-button-container-height, 40px),
|
|
46
|
+
$height: var(--md-comp-filled-button-container-height, #{rem(40px)}),
|
|
32
47
|
$border-radius: var(--md-comp-filled-button-container-shape, 9999px),
|
|
33
48
|
$padding-left: var(--md-comp-filled-button-leading-space, 16px),
|
|
34
49
|
$padding-right: var(--md-comp-filled-button-trailing-space, 16px),
|
|
@@ -56,21 +71,23 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
56
71
|
user-select: none;
|
|
57
72
|
appearance: none;
|
|
58
73
|
-webkit-tap-highlight-color: transparent;
|
|
59
|
-
transition: background-color
|
|
74
|
+
transition: background-color var(--md-sys-motion-duration-short4) ease-out, box-shadow var(--md-sys-motion-duration-short4) ease-out;
|
|
60
75
|
}
|
|
61
76
|
|
|
62
77
|
// State layers mix the on-color into the container in oklab; the opacities come
|
|
63
78
|
// from md.sys.state via `state-opacity()`. Filled and tonal have no elevation.
|
|
64
79
|
|
|
65
|
-
// Shared by
|
|
66
|
-
@mixin _btn-states($on, $base) {
|
|
80
|
+
// Shared by every style. Elevated also moves z-depth on hover and press.
|
|
81
|
+
@mixin _btn-states($on, $base, $hover-depth: null, $press-depth: null) {
|
|
67
82
|
&:hover {
|
|
68
|
-
|
|
83
|
+
@if $hover-depth { @include z-depth($hover-depth); }
|
|
84
|
+
background-color: state-layer($on, "hover", $base);
|
|
69
85
|
}
|
|
70
86
|
|
|
71
87
|
&:active,
|
|
72
88
|
&:focus {
|
|
73
|
-
|
|
89
|
+
@if $press-depth { @include z-depth($press-depth); }
|
|
90
|
+
background-color: state-layer($on, "focus", $base);
|
|
74
91
|
}
|
|
75
92
|
|
|
76
93
|
@include focus-visible();
|
|
@@ -95,18 +112,7 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
95
112
|
background-color: var(--md-sys-color-surface-container-low);
|
|
96
113
|
@include z-depth("1");
|
|
97
114
|
|
|
98
|
-
|
|
99
|
-
@include z-depth("2");
|
|
100
|
-
background-color: color-mix(in oklab, var(--md-sys-color-primary) state-opacity("hover"), var(--md-sys-color-surface-container-low));
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
&:active,
|
|
104
|
-
&:focus {
|
|
105
|
-
@include z-depth("1");
|
|
106
|
-
background-color: color-mix(in oklab, var(--md-sys-color-primary) state-opacity("focus"), var(--md-sys-color-surface-container-low));
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
@include focus-visible();
|
|
115
|
+
@include _btn-states(var(--md-sys-color-primary), var(--md-sys-color-surface-container-low), "2", "1");
|
|
110
116
|
}
|
|
111
117
|
|
|
112
118
|
@mixin btn-outlined {
|
|
@@ -148,9 +154,6 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
148
154
|
// `$important` is for the `.visually-hidden` utility, which has to beat a
|
|
149
155
|
// consumer's own `position` or `padding` the way `.hide` beats their
|
|
150
156
|
// `display`. Component rules leave it off.
|
|
151
|
-
//
|
|
152
|
-
// _navigation-rail.scss carries its own copy, which predates the mixin and
|
|
153
|
-
// omits the margin and white-space; fold it in when it is next touched.
|
|
154
157
|
@mixin visually-hidden($important: false) {
|
|
155
158
|
$flag: null;
|
|
156
159
|
@if $important { $flag: !important; }
|
|
@@ -181,28 +184,238 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
181
184
|
}
|
|
182
185
|
}
|
|
183
186
|
|
|
187
|
+
// The 18dp up arrow on a pseudo-element: Stat and KPI change lines, data
|
|
188
|
+
// table sort buttons. Rotate it 180deg for down.
|
|
189
|
+
@mixin trend-arrow {
|
|
190
|
+
content: "";
|
|
191
|
+
flex: none;
|
|
192
|
+
width: 18px;
|
|
193
|
+
height: 18px;
|
|
194
|
+
background-color: currentColor;
|
|
195
|
+
mask: $trend-arrow center / 18px no-repeat;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
// A 48dp icon action in a dialog, pane or side sheet header bar.
|
|
199
|
+
@mixin header-icon-action {
|
|
200
|
+
flex: 0 0 48px;
|
|
201
|
+
box-sizing: border-box;
|
|
202
|
+
width: 48px;
|
|
203
|
+
height: 48px;
|
|
204
|
+
min-width: 48px;
|
|
205
|
+
padding: 0;
|
|
206
|
+
border: none;
|
|
207
|
+
border-radius: 50%;
|
|
208
|
+
background-color: transparent;
|
|
209
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
210
|
+
box-shadow: none;
|
|
211
|
+
|
|
212
|
+
> #{$icon} {
|
|
213
|
+
font-size: rem(24px);
|
|
214
|
+
width: rem(24px);
|
|
215
|
+
height: rem(24px);
|
|
216
|
+
line-height: rem(24px);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
&:hover {
|
|
220
|
+
background-color: state-layer(var(--md-sys-color-on-surface), "hover");
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
@include focus-visible;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Forced colors repaint every background as Canvas and drop box-shadow, so a
|
|
227
|
+
// state shown only by a fill or a ring disappears. forced-colors-selected marks
|
|
228
|
+
// a selected item with a Highlight outline. forced-colors-fill keeps a drawn
|
|
229
|
+
// shape (an indicator bar, a dot, a glyph drawn as a mask) by opting it out
|
|
230
|
+
// and painting it with a system color.
|
|
231
|
+
@mixin forced-colors-selected {
|
|
232
|
+
@media (forced-colors: active) {
|
|
233
|
+
outline: 2px solid Highlight;
|
|
234
|
+
outline-offset: -2px;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
// A tree branch's chevron, drawn as the row's ::before: it points to the end
|
|
239
|
+
// edge while closed. The row turns it with `transform: none` once the branch
|
|
240
|
+
// opens, and with rotate(90deg) under :dir(rtl). .tree and the tree select
|
|
241
|
+
// share it.
|
|
242
|
+
$_tree-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 15.4 6 9.4 7.4 8l4.6 4.6L16.6 8 18 9.4z'/%3E%3C/svg%3E");
|
|
243
|
+
|
|
244
|
+
@mixin tree-chevron {
|
|
245
|
+
content: "";
|
|
246
|
+
flex: none;
|
|
247
|
+
width: 20px;
|
|
248
|
+
height: 20px;
|
|
249
|
+
background-color: currentColor;
|
|
250
|
+
mask: $_tree-chevron center / 20px no-repeat;
|
|
251
|
+
transform: rotate(-90deg);
|
|
252
|
+
transition: transform var(--md-sys-motion-duration-short3) ease-out;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
@mixin forced-colors-fill($color: CanvasText) {
|
|
256
|
+
@media (forced-colors: active) {
|
|
257
|
+
forced-color-adjust: none;
|
|
258
|
+
background-color: $color;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// A fieldset of round, labeled choices (color swatches, rating): no fieldset
|
|
263
|
+
// chrome, a body-medium legend, and labels whose 4px of padding makes the
|
|
264
|
+
// 48px target. $control is the input the label's focus and disabled states
|
|
265
|
+
// follow.
|
|
266
|
+
@mixin choice-fieldset($radius, $control) {
|
|
267
|
+
display: flex;
|
|
268
|
+
flex-wrap: wrap;
|
|
269
|
+
align-items: center;
|
|
270
|
+
margin: 0;
|
|
271
|
+
padding: 0;
|
|
272
|
+
border: 0;
|
|
273
|
+
|
|
274
|
+
> legend {
|
|
275
|
+
margin-block-end: 4px;
|
|
276
|
+
padding: 0;
|
|
277
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
278
|
+
@include typescale("body-medium");
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
> label {
|
|
282
|
+
display: inline-flex;
|
|
283
|
+
gap: 0;
|
|
284
|
+
min-height: 0;
|
|
285
|
+
padding: 4px;
|
|
286
|
+
border-radius: $radius;
|
|
287
|
+
cursor: pointer;
|
|
288
|
+
|
|
289
|
+
&:has(> #{$control}:focus-visible) {
|
|
290
|
+
@include focus-ring;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
&:has(> #{$control}:disabled) {
|
|
294
|
+
opacity: 0.38;
|
|
295
|
+
cursor: default;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
// A navigation bar or rail destination stacked over its label: the indicator
|
|
301
|
+
// behind the icon, its hover layer, the active state, and a sibling badge on
|
|
302
|
+
// the upper trailing corner of the 24dp glyph. $prefix names the component
|
|
303
|
+
// tokens (nav-bar, nav-rail); $inset is the destination's top padding. Rules
|
|
304
|
+
// passed as content land between the active state and the badge.
|
|
305
|
+
@mixin nav-destination($prefix, $inset, $transition) {
|
|
306
|
+
> #{$icon} {
|
|
307
|
+
display: flex;
|
|
308
|
+
flex-shrink: 0;
|
|
309
|
+
align-items: center;
|
|
310
|
+
justify-content: center;
|
|
311
|
+
box-sizing: border-box;
|
|
312
|
+
width: var(--md-comp-#{$prefix}-indicator-width);
|
|
313
|
+
height: var(--md-comp-#{$prefix}-indicator-height);
|
|
314
|
+
border-radius: var(--md-comp-#{$prefix}-indicator-shape);
|
|
315
|
+
font-size: var(--md-comp-#{$prefix}-icon-size);
|
|
316
|
+
color: inherit;
|
|
317
|
+
transition: $transition;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
&:hover:not(.active, [aria-current]) > #{$icon} {
|
|
321
|
+
background-color: state-layer(var(--md-sys-color-on-surface), "hover");
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
&.active,
|
|
325
|
+
&[aria-current] {
|
|
326
|
+
color: var(--md-sys-color-on-surface);
|
|
327
|
+
|
|
328
|
+
> #{$icon} {
|
|
329
|
+
background-color: var(--md-comp-#{$prefix}-active-indicator-color);
|
|
330
|
+
color: var(--md-comp-#{$prefix}-active-color);
|
|
331
|
+
--md-icon-fill: 1;
|
|
332
|
+
@include forced-colors-selected;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
@content;
|
|
337
|
+
|
|
338
|
+
> .badge {
|
|
339
|
+
position: absolute;
|
|
340
|
+
z-index: 1;
|
|
341
|
+
top: calc(#{$inset} + (var(--md-comp-#{$prefix}-indicator-height) - 24px) / 2);
|
|
342
|
+
inset-inline-start: calc(50% + 12px);
|
|
343
|
+
transform: translate(-50%, -50%);
|
|
344
|
+
|
|
345
|
+
&:dir(rtl) {
|
|
346
|
+
transform: translate(50%, -50%);
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
// The same destination laid out as a row (bar .horizontal, rail .expanded):
|
|
352
|
+
// the indicator moves from the icon to the whole destination.
|
|
353
|
+
@mixin nav-destination-row($prefix) {
|
|
354
|
+
> #{$icon} {
|
|
355
|
+
width: var(--md-comp-#{$prefix}-icon-size);
|
|
356
|
+
height: var(--md-comp-#{$prefix}-icon-size);
|
|
357
|
+
border-radius: 0;
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
&:hover:not(.active, [aria-current]) {
|
|
361
|
+
background-color: state-layer(var(--md-sys-color-on-surface), "hover");
|
|
362
|
+
|
|
363
|
+
> #{$icon} {
|
|
364
|
+
background-color: transparent;
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
&.active,
|
|
369
|
+
&[aria-current] {
|
|
370
|
+
background-color: var(--md-comp-#{$prefix}-active-indicator-color);
|
|
371
|
+
color: var(--md-comp-#{$prefix}-active-color);
|
|
372
|
+
@include forced-colors-selected;
|
|
373
|
+
|
|
374
|
+
> #{$icon} {
|
|
375
|
+
background-color: transparent;
|
|
376
|
+
color: inherit;
|
|
377
|
+
outline: none;
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
184
382
|
// M3 type role. Every property must name a token tokens/_reference.scss
|
|
185
383
|
// actually defines — a missing var() drops the whole declaration.
|
|
186
|
-
|
|
384
|
+
// $emphasized takes the role's M3 Expressive emphasized weight.
|
|
385
|
+
@mixin typescale($role, $emphasized: false) {
|
|
187
386
|
font-family: var(--md-sys-typescale-#{$role}-font-family-name);
|
|
188
387
|
font-size: var(--md-sys-typescale-#{$role}-font-size);
|
|
189
|
-
|
|
388
|
+
@if $emphasized {
|
|
389
|
+
font-weight: var(--md-sys-typescale-emphasized-#{$role}-font-weight);
|
|
390
|
+
} @else {
|
|
391
|
+
font-weight: var(--md-sys-typescale-#{$role}-font-weight);
|
|
392
|
+
}
|
|
190
393
|
line-height: var(--md-sys-typescale-#{$role}-line-height);
|
|
191
394
|
letter-spacing: var(--md-sys-typescale-#{$role}-letter-spacing);
|
|
192
395
|
}
|
|
193
396
|
|
|
397
|
+
// The <label> row of a radio, checkbox or switch: 48dp touch target, 12dp
|
|
398
|
+
// between control and text, body-large on-surface.
|
|
399
|
+
@mixin selection-control-label($display: flex) {
|
|
400
|
+
display: $display;
|
|
401
|
+
align-items: center;
|
|
402
|
+
gap: 12px;
|
|
403
|
+
min-height: 48px;
|
|
404
|
+
margin: 0;
|
|
405
|
+
cursor: pointer;
|
|
406
|
+
user-select: none;
|
|
407
|
+
color: var(--md-sys-color-on-surface);
|
|
408
|
+
@include typescale("body-large");
|
|
409
|
+
}
|
|
410
|
+
|
|
194
411
|
/// The state layer some controls draw as a ring rather than an overlay.
|
|
195
412
|
///
|
|
196
413
|
/// Checkboxes and radio buttons have no room for an overlay pseudo-element, so
|
|
197
414
|
/// they grow a `box-shadow` from the control's edge out to the state layer
|
|
198
415
|
/// size.
|
|
199
416
|
@mixin state-layer-ring($outer, $inner, $color, $state) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
in oklab,
|
|
203
|
-
#{$color} state-opacity($state),
|
|
204
|
-
transparent
|
|
205
|
-
);
|
|
417
|
+
// Interpolated so a quoted color, such as "var(--c)", is written unquoted.
|
|
418
|
+
box-shadow: 0 0 0 calc((#{$outer} - #{$inner}) / 2) state-layer(#{$color}, $state);
|
|
206
419
|
}
|
|
207
420
|
|
|
208
421
|
/// The button size tokens for one rung of `$button-sizes`.
|
|
@@ -213,20 +426,22 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
213
426
|
@mixin button-size($name) {
|
|
214
427
|
$s: map.get($button-sizes, $name);
|
|
215
428
|
|
|
216
|
-
--md-comp-filled-button-container-height: #{map.get($s, height)};
|
|
217
|
-
--md-comp-filled-button-icon-size: #{map.get($s, icon)};
|
|
429
|
+
--md-comp-filled-button-container-height: #{rem(map.get($s, height))};
|
|
430
|
+
--md-comp-filled-button-icon-size: #{rem(map.get($s, icon))};
|
|
218
431
|
--md-comp-filled-button-leading-space: #{map.get($s, space)};
|
|
219
432
|
--md-comp-filled-button-trailing-space: #{map.get($s, space)};
|
|
220
433
|
--md-comp-filled-button-icon-label-space: #{map.get($s, gap)};
|
|
221
434
|
--md-comp-filled-button-outline-width: #{map.get($s, outline)};
|
|
435
|
+
--md-comp-filled-button-container-shape-square: #{map.get($s, square)};
|
|
436
|
+
--md-comp-filled-button-pressed-container-shape: #{map.get($s, pressed)};
|
|
222
437
|
}
|
|
223
438
|
|
|
224
439
|
/// The icon-button tokens for one rung of `$icon-button-sizes`.
|
|
225
440
|
@mixin icon-button-size($name) {
|
|
226
441
|
$s: map.get($icon-button-sizes, $name);
|
|
227
442
|
|
|
228
|
-
--md-comp-icon-button-container-height: #{map.get($s, height)};
|
|
229
|
-
--md-comp-icon-button-icon-size: #{map.get($s, icon)};
|
|
443
|
+
--md-comp-icon-button-container-height: #{rem(map.get($s, height))};
|
|
444
|
+
--md-comp-icon-button-icon-size: #{rem(map.get($s, icon))};
|
|
230
445
|
--md-comp-icon-button-leading-space: #{map.get($s, space)};
|
|
231
446
|
--md-comp-icon-button-trailing-space: #{map.get($s, space)};
|
|
232
447
|
--md-comp-icon-button-narrow-space: #{map.get($s, narrow)};
|
|
@@ -306,14 +521,70 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
306
521
|
}
|
|
307
522
|
}
|
|
308
523
|
|
|
524
|
+
// The .toggle legend button is the same in every chart, so chart() writes
|
|
525
|
+
// it once, with the first chart in the build.
|
|
526
|
+
$_chart-toggle-written: false;
|
|
527
|
+
|
|
528
|
+
// With .toggle, a button shows or hides each series. It covers its legend
|
|
529
|
+
// item, swatch included, and a hidden series is struck through with a
|
|
530
|
+
// hollow swatch, so the state does not rest on color. The class keeps it
|
|
531
|
+
// out of the button styles, in _buttons.scss.
|
|
532
|
+
@mixin _chart-toggle {
|
|
533
|
+
.chart-toggle {
|
|
534
|
+
min-height: rem(48px);
|
|
535
|
+
padding: 0;
|
|
536
|
+
border: 0;
|
|
537
|
+
background: none;
|
|
538
|
+
color: inherit;
|
|
539
|
+
font: inherit;
|
|
540
|
+
cursor: pointer;
|
|
541
|
+
|
|
542
|
+
&::after {
|
|
543
|
+
content: "";
|
|
544
|
+
position: absolute;
|
|
545
|
+
inset: 0;
|
|
546
|
+
border-radius: 4px;
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
&:focus-visible {
|
|
550
|
+
outline: none;
|
|
551
|
+
|
|
552
|
+
&::after {
|
|
553
|
+
@include focus-ring();
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
&:hover {
|
|
558
|
+
color: var(--md-sys-color-on-surface);
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
&[aria-pressed="false"] {
|
|
562
|
+
text-decoration: line-through;
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
&[aria-disabled="true"] {
|
|
566
|
+
cursor: default;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
li:has(> .chart-toggle[aria-pressed="false"])::before {
|
|
571
|
+
mask: radial-gradient(closest-side, transparent 50%, #000 calc(50% + 0.5px));
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
|
|
309
575
|
// The parts LineChart draws for every chart type, prefixed with the
|
|
310
576
|
// component's name: .#{$name}-plot, -cursor, -tooltip, -labels and -legend.
|
|
311
577
|
// Defines the --md-comp-#{$name}-height, -grid-color and -color-1..4 tokens,
|
|
312
578
|
// and --#{$name}-color on each [data-series]. Include it at the root of the
|
|
313
579
|
// component's partial; the component adds its own marks and cursor look.
|
|
314
580
|
@mixin chart($name) {
|
|
581
|
+
@if not $_chart-toggle-written {
|
|
582
|
+
$_chart-toggle-written: true !global;
|
|
583
|
+
@include _chart-toggle;
|
|
584
|
+
}
|
|
585
|
+
|
|
315
586
|
.#{$name} {
|
|
316
|
-
--md-comp-#{$name}-height: 240px;
|
|
587
|
+
--md-comp-#{$name}-height: #{rem(240px)};
|
|
317
588
|
--md-comp-#{$name}-grid-color: var(--md-sys-color-outline-variant);
|
|
318
589
|
--md-comp-#{$name}-color-1: var(--md-sys-color-primary);
|
|
319
590
|
--md-comp-#{$name}-color-2: var(--md-sys-color-tertiary);
|
|
@@ -378,10 +649,10 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
378
649
|
display: grid;
|
|
379
650
|
grid-template-columns: auto auto;
|
|
380
651
|
gap: 4px 16px;
|
|
381
|
-
min-width: 120px;
|
|
652
|
+
min-width: rem(120px);
|
|
382
653
|
margin: 0;
|
|
383
654
|
padding: 12px 16px;
|
|
384
|
-
border-radius:
|
|
655
|
+
border-radius: var(--md-sys-shape-corner-medium);
|
|
385
656
|
background-color: var(--md-comp-#{$name}-tooltip-color);
|
|
386
657
|
color: var(--md-sys-color-on-surface-variant);
|
|
387
658
|
@include typescale("body-small");
|
|
@@ -439,6 +710,28 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
439
710
|
text-overflow: ellipsis;
|
|
440
711
|
white-space: nowrap;
|
|
441
712
|
}
|
|
713
|
+
|
|
714
|
+
// When each label is wider than its column, LineChart keeps every nth
|
|
715
|
+
// one. A kept label spreads over the hidden ones beside it, still
|
|
716
|
+
// centred on its own column; the flex box centres what overflows. The
|
|
717
|
+
// end labels line up with the chart's edges, so none overflows them.
|
|
718
|
+
&[data-thinned] > li:not([data-skip]) {
|
|
719
|
+
display: flex;
|
|
720
|
+
justify-content: center;
|
|
721
|
+
overflow: visible;
|
|
722
|
+
|
|
723
|
+
&:first-child {
|
|
724
|
+
justify-content: start;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
&:last-child {
|
|
728
|
+
justify-content: end;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
> li[data-skip] {
|
|
733
|
+
visibility: hidden;
|
|
734
|
+
}
|
|
442
735
|
}
|
|
443
736
|
|
|
444
737
|
.#{$name}-legend {
|
|
@@ -447,6 +740,7 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
447
740
|
gap: 4px 16px;
|
|
448
741
|
|
|
449
742
|
> li {
|
|
743
|
+
position: relative;
|
|
450
744
|
display: flex;
|
|
451
745
|
align-items: center;
|
|
452
746
|
gap: 8px;
|
|
@@ -497,3 +791,95 @@ $_state-layers: ("hover", "focus", "pressed", "dragged");
|
|
|
497
791
|
}
|
|
498
792
|
}
|
|
499
793
|
}
|
|
794
|
+
|
|
795
|
+
// The columns' or bars' growth, inside their container: from the zero
|
|
796
|
+
// line, or after update() from where each span was, which ColumnChart
|
|
797
|
+
// writes as --from-top and --from-bottom. !important lets these starting
|
|
798
|
+
// values beat the inline --top and --bottom.
|
|
799
|
+
@mixin chart-column-motion {
|
|
800
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
801
|
+
> div > span {
|
|
802
|
+
transition: clip-path var(--md-sys-motion-duration-medium4) var(--md-sys-motion-easing-standard);
|
|
803
|
+
|
|
804
|
+
@starting-style {
|
|
805
|
+
--top: var(--from-top, var(--zero, 100%)) !important;
|
|
806
|
+
--bottom: var(--from-bottom, calc(100% - var(--zero, 100%))) !important;
|
|
807
|
+
}
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
|
|
812
|
+
// The value labels LineChart draws for .axis: an .#{$name}-axis list in the
|
|
813
|
+
// plot, behind the marks, with each label's distance down the plot in --at.
|
|
814
|
+
// A label sits beside the plot with a grid line across it at its value; a
|
|
815
|
+
// mixed chart's end scale gets a second list, .end, on the far side, whose
|
|
816
|
+
// labels share those lines. With $beside the plot and row labels make room
|
|
817
|
+
// at the inline start (and end, for .end) for
|
|
818
|
+
// --md-comp-#{$name}-axis-width, 48px. Without it the component places the
|
|
819
|
+
// labels itself.
|
|
820
|
+
@mixin chart-axis($name, $beside: true) {
|
|
821
|
+
.#{$name}.axis {
|
|
822
|
+
--md-comp-#{$name}-axis-width: #{rem(48px)};
|
|
823
|
+
|
|
824
|
+
> .#{$name}-plot {
|
|
825
|
+
background: none;
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
@if $beside {
|
|
830
|
+
// Room for the top label's upper half.
|
|
831
|
+
.#{$name}.axis > .#{$name}-plot {
|
|
832
|
+
margin-block-start: 8px;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
.#{$name}.axis > :is(.#{$name}-plot, .#{$name}-labels) {
|
|
836
|
+
margin-inline-start: var(--md-comp-#{$name}-axis-width);
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
.#{$name}.axis:has(.#{$name}-axis.end) > :is(.#{$name}-plot, .#{$name}-labels) {
|
|
840
|
+
margin-inline-end: var(--md-comp-#{$name}-axis-width);
|
|
841
|
+
}
|
|
842
|
+
}
|
|
843
|
+
|
|
844
|
+
.#{$name}-axis {
|
|
845
|
+
position: absolute;
|
|
846
|
+
inset: 0;
|
|
847
|
+
margin: 0;
|
|
848
|
+
padding: 0;
|
|
849
|
+
list-style: none;
|
|
850
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
851
|
+
@include typescale("body-small");
|
|
852
|
+
font-variant-numeric: tabular-nums;
|
|
853
|
+
pointer-events: none;
|
|
854
|
+
|
|
855
|
+
> li {
|
|
856
|
+
position: absolute;
|
|
857
|
+
inset-inline: 0;
|
|
858
|
+
top: var(--at, 0%);
|
|
859
|
+
border-block-start: 1px solid var(--md-comp-#{$name}-grid-color);
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
> li > span {
|
|
863
|
+
position: absolute;
|
|
864
|
+
inset-inline-end: 100%;
|
|
865
|
+
box-sizing: border-box;
|
|
866
|
+
width: var(--md-comp-#{$name}-axis-width);
|
|
867
|
+
padding-inline-end: 8px;
|
|
868
|
+
overflow: hidden;
|
|
869
|
+
text-align: end;
|
|
870
|
+
text-overflow: ellipsis;
|
|
871
|
+
white-space: nowrap;
|
|
872
|
+
translate: 0 -50%;
|
|
873
|
+
}
|
|
874
|
+
|
|
875
|
+
&.end > li {
|
|
876
|
+
border: 0;
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
&.end > li > span {
|
|
880
|
+
inset-inline: 100% auto;
|
|
881
|
+
padding-inline: 8px 0;
|
|
882
|
+
text-align: start;
|
|
883
|
+
}
|
|
884
|
+
}
|
|
885
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
@use "sass:list";
|
|
2
|
+
@use "sass:math";
|
|
3
|
+
@use "sass:string";
|
|
4
|
+
|
|
5
|
+
// Springs, solved at compile time. M3 Expressive describes motion as springs
|
|
6
|
+
// (a damping ratio and a stiffness, mass 1) rather than as curves and
|
|
7
|
+
// durations. CSS has no spring timing function, so spring() samples the
|
|
8
|
+
// spring's position from rest to the target into a `linear()` easing, and
|
|
9
|
+
// spring-duration() returns how long it takes to settle. Use them together:
|
|
10
|
+
//
|
|
11
|
+
// transition: translate spring-duration(0.8, 380) spring(0.8, 380);
|
|
12
|
+
//
|
|
13
|
+
// tokens/_motion.scss emits M3's six standard and expressive springs as
|
|
14
|
+
// --md-sys-motion-spring-* tokens from these.
|
|
15
|
+
|
|
16
|
+
// Settled once within this fraction of the distance, about a pixel on a
|
|
17
|
+
// 200px move.
|
|
18
|
+
$_settle: 0.005;
|
|
19
|
+
$_samples: 24;
|
|
20
|
+
|
|
21
|
+
// Position at $t seconds, from 0 to 1, for a spring released at rest.
|
|
22
|
+
@function _position($t, $damping, $stiffness) {
|
|
23
|
+
$w: math.sqrt($stiffness);
|
|
24
|
+
@if $damping < 1 {
|
|
25
|
+
$wd: $w * math.sqrt(1 - $damping * $damping);
|
|
26
|
+
$decay: math.pow(math.$e, -$damping * $w * $t);
|
|
27
|
+
@return 1 - $decay * (math.cos($wd * $t) + math.div($damping * $w, $wd) * math.sin($wd * $t));
|
|
28
|
+
}
|
|
29
|
+
// Critically damped (M3's effects springs). Overdamped springs are not used.
|
|
30
|
+
@return 1 - math.pow(math.$e, -$w * $t) * (1 + $w * $t);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Seconds until the spring stays within $_settle of the target. An
|
|
34
|
+
// underdamped spring settles when its envelope does; a critically damped one
|
|
35
|
+
// is stepped forward a millisecond at a time.
|
|
36
|
+
@function _settle-time($damping, $stiffness) {
|
|
37
|
+
$w: math.sqrt($stiffness);
|
|
38
|
+
@if $damping < 1 {
|
|
39
|
+
@return math.div(math.log(math.div(1, $_settle * math.sqrt(1 - $damping * $damping))), $damping * $w);
|
|
40
|
+
}
|
|
41
|
+
$t: 0;
|
|
42
|
+
@while 1 - _position($t, $damping, $stiffness) > $_settle {
|
|
43
|
+
$t: $t + 0.001;
|
|
44
|
+
}
|
|
45
|
+
@return $t;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/// How long the spring takes to settle, in milliseconds.
|
|
49
|
+
@function spring-duration($damping, $stiffness) {
|
|
50
|
+
@return math.round(_settle-time($damping, $stiffness) * 1000) * 1ms;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/// The spring as a `linear()` easing over spring-duration().
|
|
54
|
+
@function spring($damping, $stiffness) {
|
|
55
|
+
$end: _settle-time($damping, $stiffness);
|
|
56
|
+
$points: (0,);
|
|
57
|
+
@for $i from 1 to $_samples {
|
|
58
|
+
$x: _position($end * math.div($i, $_samples), $damping, $stiffness);
|
|
59
|
+
$points: list.append($points, string.unquote("#{math.div(math.round($x * 10000), 10000)} #{math.div(math.round(math.div($i, $_samples) * 1000), 10)}%"), comma);
|
|
60
|
+
}
|
|
61
|
+
$points: list.append($points, 1, comma);
|
|
62
|
+
@return string.unquote("linear(#{$points})");
|
|
63
|
+
}
|