@expressivecss/expressive 0.13.1 → 0.15.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 +196 -1
- package/README.md +2 -1
- package/dist/css/expressive.css +432 -311
- 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/js/chunks/{chunk-DTKR54I6.mjs → chunk-33QVDDGR.mjs} +3 -3
- package/dist/js/chunks/{chunk-SPETGK25.mjs → chunk-45FER6RI.mjs} +5 -5
- package/dist/js/chunks/chunk-45FER6RI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-WJXDBPXQ.mjs → chunk-5CEAOLUA.mjs} +17 -20
- package/dist/js/chunks/chunk-5CEAOLUA.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CKQP6P76.mjs → chunk-6VATUZC6.mjs} +12 -7
- package/dist/js/chunks/chunk-6VATUZC6.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QDAL4IYN.mjs → chunk-74MXKKLN.mjs} +2 -2
- package/dist/js/chunks/{chunk-QDAL4IYN.mjs.map → chunk-74MXKKLN.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-DLWYKFEI.mjs → chunk-AIURVCG6.mjs} +3 -3
- package/dist/js/chunks/{chunk-NNYP33NB.mjs → chunk-BGZLF6JZ.mjs} +19 -18
- package/dist/js/chunks/chunk-BGZLF6JZ.mjs.map +7 -0
- package/dist/js/chunks/chunk-C6CHEWYP.mjs +154 -0
- package/dist/js/chunks/chunk-C6CHEWYP.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GVGT6MIU.mjs → chunk-CK2XCICY.mjs} +2 -2
- package/dist/js/chunks/{chunk-XGHORT7J.mjs → chunk-CXXM2L4F.mjs} +8 -9
- package/dist/js/chunks/chunk-CXXM2L4F.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QVVEWBOF.mjs → chunk-DXGRXYYL.mjs} +25 -37
- package/dist/js/chunks/chunk-DXGRXYYL.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QV2JAWIZ.mjs → chunk-FM5CZOUB.mjs} +5 -8
- package/dist/js/chunks/{chunk-QV2JAWIZ.mjs.map → chunk-FM5CZOUB.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-PLYXLSH3.mjs → chunk-GJL6GCIU.mjs} +46 -58
- package/dist/js/chunks/chunk-GJL6GCIU.mjs.map +7 -0
- package/dist/js/chunks/chunk-K3HZMFMD.mjs +135 -0
- package/dist/js/chunks/chunk-K3HZMFMD.mjs.map +7 -0
- package/dist/js/chunks/chunk-KHXZ2A4K.mjs +395 -0
- package/dist/js/chunks/chunk-KHXZ2A4K.mjs.map +7 -0
- package/dist/js/chunks/chunk-KQACNQ22.mjs +7 -0
- package/dist/js/chunks/{chunk-4PWAPV6F.mjs.map → chunk-KQACNQ22.mjs.map} +1 -1
- package/dist/js/chunks/chunk-KUFHW3DS.mjs +214 -0
- package/dist/js/chunks/chunk-KUFHW3DS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LWBQIX5J.mjs → chunk-KVJAVDBC.mjs} +46 -57
- package/dist/js/chunks/chunk-KVJAVDBC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-YDCS5S3J.mjs → chunk-L27Q6ZMI.mjs} +2 -2
- package/dist/js/chunks/{chunk-CCWDV5CR.mjs → chunk-LQWUDNHZ.mjs} +3 -3
- package/dist/js/chunks/{chunk-6OMRGML6.mjs → chunk-M372EDXD.mjs} +7 -13
- package/dist/js/chunks/{chunk-6OMRGML6.mjs.map → chunk-M372EDXD.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-EC63CHXU.mjs → chunk-M3MURWMB.mjs} +20 -16
- package/dist/js/chunks/chunk-M3MURWMB.mjs.map +7 -0
- package/dist/js/chunks/{chunk-U2OTHOTI.mjs → chunk-NUHMOAOY.mjs} +19 -33
- package/dist/js/chunks/chunk-NUHMOAOY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-P3G3QHII.mjs → chunk-OWG3LMUL.mjs} +17 -14
- package/dist/js/chunks/chunk-OWG3LMUL.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LTWPGFBR.mjs → chunk-PD6HYHAE.mjs} +4 -15
- package/dist/js/chunks/chunk-PD6HYHAE.mjs.map +7 -0
- package/dist/js/chunks/{chunk-PIJ2TAR3.mjs → chunk-PDG64UHF.mjs} +3 -3
- package/dist/js/chunks/{chunk-IFXVDDDH.mjs → chunk-PO3AXVR3.mjs} +38 -64
- package/dist/js/chunks/chunk-PO3AXVR3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QKWPQK5N.mjs → chunk-QYGK36OG.mjs} +16 -14
- package/dist/js/chunks/chunk-QYGK36OG.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UNEMYWEW.mjs → chunk-SFI2U4YW.mjs} +28 -44
- package/dist/js/chunks/chunk-SFI2U4YW.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VTLBW7QS.mjs → chunk-SMY7GJSS.mjs} +3 -3
- package/dist/js/chunks/{chunk-O5XPWXIQ.mjs → chunk-TCCA2HDG.mjs} +39 -31
- package/dist/js/chunks/chunk-TCCA2HDG.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UBLRRJ7N.mjs → chunk-TSZYSW7F.mjs} +4 -4
- package/dist/js/chunks/{chunk-UBLRRJ7N.mjs.map → chunk-TSZYSW7F.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-UEZUJQ66.mjs → chunk-UAZSDUVP.mjs} +3 -4
- package/dist/js/chunks/{chunk-UEZUJQ66.mjs.map → chunk-UAZSDUVP.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-6N2XAEFK.mjs → chunk-UBRZZWRA.mjs} +10 -8
- package/dist/js/chunks/chunk-UBRZZWRA.mjs.map +7 -0
- package/dist/js/chunks/{chunk-3VOK6J7U.mjs → chunk-UCOE7ZDL.mjs} +47 -45
- package/dist/js/chunks/chunk-UCOE7ZDL.mjs.map +7 -0
- package/dist/js/chunks/{chunk-K4CJCRGE.mjs → chunk-UETTGDLI.mjs} +3 -3
- package/dist/js/chunks/{chunk-RHRQKTTX.mjs → chunk-UNCRDLP6.mjs} +6 -9
- package/dist/js/chunks/chunk-UNCRDLP6.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LNCCYGPC.mjs → chunk-VGNYF6FB.mjs} +8 -10
- package/dist/js/chunks/chunk-VGNYF6FB.mjs.map +7 -0
- package/dist/js/chunks/{chunk-UAEAQBRC.mjs → chunk-VGPGBNGL.mjs} +4 -12
- package/dist/js/chunks/chunk-VGPGBNGL.mjs.map +7 -0
- package/dist/js/chunks/chunk-VKAUVTQY.mjs +1 -0
- package/dist/js/chunks/{chunk-HKT2S7VM.mjs → chunk-VM4FTS7L.mjs} +3 -3
- package/dist/js/chunks/{chunk-55IA2XUC.mjs → chunk-WDK4T63U.mjs} +8 -11
- package/dist/js/chunks/chunk-WDK4T63U.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XH6BEEMY.mjs → chunk-WOCCTVUF.mjs} +51 -39
- package/dist/js/chunks/chunk-WOCCTVUF.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GZWPXXY6.mjs → chunk-WQYN5L4E.mjs} +14 -16
- package/dist/js/chunks/chunk-WQYN5L4E.mjs.map +7 -0
- package/dist/js/chunks/{chunk-6WLSDZ4O.mjs → chunk-X4ISMKE2.mjs} +2 -2
- package/dist/js/chunks/{chunk-3DHK5CZU.mjs → chunk-XAEAEHIX.mjs} +6 -8
- package/dist/js/chunks/chunk-XAEAEHIX.mjs.map +7 -0
- package/dist/js/chunks/{chunk-3CLXLPYS.mjs → chunk-ZX6M7SWO.mjs} +43 -29
- package/dist/js/chunks/chunk-ZX6M7SWO.mjs.map +7 -0
- package/dist/js/expressive.cjs +1337 -572
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +1337 -572
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +10 -13
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +71 -55
- package/dist/js/expressive.mjs.map +1 -1
- package/dist/js/internal/behaviors/bottomSheets.mjs +3 -3
- package/dist/js/internal/behaviors/dialogs.mjs +2 -2
- package/dist/js/internal/behaviors/forms.mjs +2 -2
- package/dist/js/internal/behaviors/sheetDrag.mjs +2 -2
- package/dist/js/internal/behaviors/sideSheets.mjs +3 -3
- package/dist/js/internal/components/appBar.mjs +2 -2
- package/dist/js/internal/components/autocomplete.mjs +4 -4
- package/dist/js/internal/components/barChart.mjs +4 -4
- package/dist/js/internal/components/buttonGroup.mjs +2 -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/characterCounter.mjs +2 -2
- package/dist/js/internal/components/chips.mjs +5 -5
- package/dist/js/internal/components/columnChart.mjs +3 -3
- package/dist/js/internal/components/commandPalette.mjs +3 -3
- package/dist/js/internal/components/confetti.mjs +8 -0
- package/dist/js/internal/components/confetti.mjs.map +7 -0
- package/dist/js/internal/components/datepicker.mjs +6 -6
- package/dist/js/internal/components/expandingCard.mjs +3 -3
- package/dist/js/internal/components/heatmapChart.mjs +3 -3
- package/dist/js/internal/components/index.mjs +64 -48
- package/dist/js/internal/components/keypad.mjs +9 -0
- package/dist/js/internal/components/keypad.mjs.map +7 -0
- package/dist/js/internal/components/lightbox.mjs +3 -3
- package/dist/js/internal/components/lineChart.mjs +6 -2
- package/dist/js/internal/components/mapView.mjs +9 -0
- package/dist/js/internal/components/mapView.mjs.map +7 -0
- package/dist/js/internal/components/menu.mjs +3 -3
- package/dist/js/internal/components/messageScroller.mjs +3 -3
- package/dist/js/internal/components/mixedChart.mjs +4 -4
- package/dist/js/internal/components/navigationRail.mjs +2 -2
- package/dist/js/internal/components/particles.mjs +8 -0
- package/dist/js/internal/components/particles.mjs.map +7 -0
- package/dist/js/internal/components/pieChart.mjs +3 -3
- package/dist/js/internal/components/questionnaire.mjs +3 -3
- package/dist/js/internal/components/radarChart.mjs +3 -3
- package/dist/js/internal/components/radialChart.mjs +3 -3
- package/dist/js/internal/components/registry.mjs +41 -37
- package/dist/js/internal/components/richTextEditor.mjs +3 -3
- package/dist/js/internal/components/scrollspy.mjs +2 -2
- package/dist/js/internal/components/select.mjs +4 -4
- package/dist/js/internal/components/slider.mjs +3 -3
- package/dist/js/internal/components/snackbar.mjs +2 -2
- package/dist/js/internal/components/tabs.mjs +4 -4
- package/dist/js/internal/components/timepicker.mjs +4 -4
- package/dist/js/internal/components/tooltip.mjs +3 -3
- package/dist/js/internal/core/component.mjs +1 -1
- package/dist/js/internal/core/utils.mjs +1 -1
- package/dist/js/internal/plugins/dockedDisplayPlugin.mjs +2 -2
- package/dist/js/modular.mjs +71 -55
- package/dist/types/behaviors/forms.d.ts +5 -0
- package/dist/types/components/autocomplete.d.ts +1 -0
- package/dist/types/components/carousel.d.ts +2 -0
- package/dist/types/components/confetti.d.ts +103 -0
- package/dist/types/components/datepicker.d.ts +5 -4
- package/dist/types/components/expandingCard.d.ts +2 -0
- package/dist/types/components/index.d.ts +4 -0
- package/dist/types/components/keypad.d.ts +34 -0
- package/dist/types/components/lightbox.d.ts +3 -5
- package/dist/types/components/lineChart.d.ts +4 -0
- package/dist/types/components/mapView.d.ts +151 -0
- package/dist/types/components/menu.d.ts +1 -0
- package/dist/types/components/particles.d.ts +72 -0
- package/dist/types/components/pieChart.d.ts +3 -0
- package/dist/types/components/radialChart.d.ts +0 -1
- package/dist/types/components/registry.d.ts +12 -0
- package/dist/types/components/slider.d.ts +3 -1
- package/dist/types/components/snackbar.d.ts +3 -0
- package/dist/types/components/tabs.d.ts +5 -1
- package/dist/types/components/timepicker.d.ts +2 -0
- package/dist/types/modular.d.ts +1 -1
- package/dist/types/plugins/dockedDisplayPlugin.d.ts +4 -3
- package/package.json +2 -1
- package/src/sass/abstracts/_breakpoints.scss +0 -1
- package/src/sass/abstracts/_elevation.scss +1 -1
- package/src/sass/abstracts/_mixins.scss +20 -60
- package/src/sass/abstracts/_variables.scss +10 -0
- package/src/sass/base/_global.scss +3 -12
- package/src/sass/base/_index.scss +1 -1
- package/src/sass/components/_badges.scss +1 -8
- package/src/sass/components/_bar-chart.scss +1 -1
- package/src/sass/components/_button-groups.scss +31 -66
- package/src/sass/components/_buttons.scss +1 -1
- package/src/sass/components/_cards.scss +6 -25
- package/src/sass/components/_carousel.scss +16 -55
- package/src/sass/components/_chips.scss +0 -6
- package/src/sass/components/_column-chart.scss +1 -1
- package/src/sass/components/_confetti.scss +14 -0
- package/src/sass/components/_data-table.scss +1 -3
- package/src/sass/components/_datepicker.scss +3 -22
- package/src/sass/components/_dialog.scss +1 -4
- package/src/sass/components/_heatmap-chart.scss +2 -2
- package/src/sass/components/_icon-buttons.scss +0 -1
- package/src/sass/components/_index.scss +4 -0
- package/src/sass/components/_keypad.scss +162 -0
- package/src/sass/components/_lightbox.scss +3 -8
- package/src/sass/components/_map.scss +188 -0
- package/src/sass/components/_menu.scss +31 -74
- package/src/sass/components/_mixed-chart.scss +1 -1
- package/src/sass/components/_navbar.scss +9 -45
- package/src/sass/components/_navigation-rail.scss +23 -32
- package/src/sass/components/_page-footer.scss +15 -12
- package/src/sass/components/_panes.scss +2 -6
- package/src/sass/components/_particles.scss +14 -0
- package/src/sass/components/_progress.scss +6 -4
- package/src/sass/components/_side-sheet.scss +1 -4
- package/src/sass/components/_stepper.scss +0 -4
- package/src/sass/components/_table_of_contents.scss +3 -1
- package/src/sass/components/_timepicker.scss +4 -36
- package/src/sass/components/_toolbar.scss +0 -4
- package/src/sass/components/forms/_checkboxes.scss +44 -67
- package/src/sass/components/forms/_fieldset.scss +3 -3
- package/src/sass/components/forms/_file-input.scss +0 -1
- package/src/sass/components/forms/_radio-buttons.scss +10 -36
- package/src/sass/components/forms/_select.scss +0 -3
- package/src/sass/components/forms/_slider.scss +72 -259
- package/src/sass/tokens/_state.scss +2 -2
- package/src/sass/tokens/_theme.scss +1 -1
- package/src/sass/utilities/_colors.scss +6 -1
- package/src/sass/utilities/_index.scss +1 -1
- package/dist/js/chunks/chunk-3CLXLPYS.mjs.map +0 -7
- package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +0 -7
- package/dist/js/chunks/chunk-3VOK6J7U.mjs.map +0 -7
- package/dist/js/chunks/chunk-4PWAPV6F.mjs +0 -7
- package/dist/js/chunks/chunk-55IA2XUC.mjs.map +0 -7
- package/dist/js/chunks/chunk-6N2XAEFK.mjs.map +0 -7
- package/dist/js/chunks/chunk-CKQP6P76.mjs.map +0 -7
- package/dist/js/chunks/chunk-EC63CHXU.mjs.map +0 -7
- package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +0 -7
- package/dist/js/chunks/chunk-IFXVDDDH.mjs.map +0 -7
- package/dist/js/chunks/chunk-LNCCYGPC.mjs.map +0 -7
- package/dist/js/chunks/chunk-LTWPGFBR.mjs.map +0 -7
- package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +0 -7
- package/dist/js/chunks/chunk-NNYP33NB.mjs.map +0 -7
- package/dist/js/chunks/chunk-NQLC3YMW.mjs +0 -1
- package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +0 -7
- package/dist/js/chunks/chunk-P3G3QHII.mjs.map +0 -7
- package/dist/js/chunks/chunk-PLYXLSH3.mjs.map +0 -7
- package/dist/js/chunks/chunk-QKWPQK5N.mjs.map +0 -7
- package/dist/js/chunks/chunk-QVVEWBOF.mjs.map +0 -7
- package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +0 -7
- package/dist/js/chunks/chunk-SPETGK25.mjs.map +0 -7
- package/dist/js/chunks/chunk-U2OTHOTI.mjs.map +0 -7
- package/dist/js/chunks/chunk-UAEAQBRC.mjs.map +0 -7
- package/dist/js/chunks/chunk-UNEMYWEW.mjs.map +0 -7
- package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +0 -7
- package/dist/js/chunks/chunk-XGHORT7J.mjs.map +0 -7
- package/dist/js/chunks/chunk-XH6BEEMY.mjs.map +0 -7
- /package/dist/js/chunks/{chunk-DTKR54I6.mjs.map → chunk-33QVDDGR.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-DLWYKFEI.mjs.map → chunk-AIURVCG6.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-GVGT6MIU.mjs.map → chunk-CK2XCICY.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-YDCS5S3J.mjs.map → chunk-L27Q6ZMI.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-CCWDV5CR.mjs.map → chunk-LQWUDNHZ.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-PIJ2TAR3.mjs.map → chunk-PDG64UHF.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-VTLBW7QS.mjs.map → chunk-SMY7GJSS.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-K4CJCRGE.mjs.map → chunk-UETTGDLI.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-NQLC3YMW.mjs.map → chunk-VKAUVTQY.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-HKT2S7VM.mjs.map → chunk-VM4FTS7L.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-6WLSDZ4O.mjs.map → chunk-X4ISMKE2.mjs.map} +0 -0
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
@use "../abstracts" as *;
|
|
2
|
+
|
|
3
|
+
// Keypad and keyboard: on-screen keys that type into a text field.
|
|
4
|
+
//
|
|
5
|
+
// Anatomy is the HTML. Every key is a <button type="button">. A key with a
|
|
6
|
+
// `value` types that value; a key with `data-key` is a function key
|
|
7
|
+
// (Backspace, Enter, Shift). `.keypad` is a three-column grid of round keys,
|
|
8
|
+
// the dial pad and PIN pad. `.keyboard` is a column of rows (any <div>), each
|
|
9
|
+
// row a flex line of keys. A key carrying a button style class (.filled,
|
|
10
|
+
// .tonal, .outlined, .elevated, .text) keeps that style, so a call or submit
|
|
11
|
+
// key is written the same way as any other button.
|
|
12
|
+
//
|
|
13
|
+
// Keys press the same way button-group items do: the corner squares off on a
|
|
14
|
+
// spring and springs back on release.
|
|
15
|
+
//
|
|
16
|
+
// Keyboard width comes from a column count rather than per-key classes. A
|
|
17
|
+
// character key is one column wide and may shrink; a function key is one and
|
|
18
|
+
// a half; the space bar takes what is left. Ten columns gives QWERTY's
|
|
19
|
+
// half-key indent on the nine-key row with no extra markup.
|
|
20
|
+
|
|
21
|
+
$_key: "button:not(.filled, .tonal, .outlined, .elevated, .text, :disabled)";
|
|
22
|
+
|
|
23
|
+
:is(.keypad, .keyboard) {
|
|
24
|
+
--md-comp-keypad-key-color: var(--md-sys-color-surface-container-highest);
|
|
25
|
+
--md-comp-keypad-key-label-color: var(--md-sys-color-on-surface);
|
|
26
|
+
--md-comp-keypad-function-key-color: var(--md-sys-color-secondary-container);
|
|
27
|
+
--md-comp-keypad-function-key-label-color: var(--md-sys-color-on-secondary-container);
|
|
28
|
+
--md-comp-keypad-key-pressed-shape: 12px;
|
|
29
|
+
// Material's fast-spatial spring, the curve button groups press with.
|
|
30
|
+
--md-comp-keypad-motion: #{$motion-fast-spatial};
|
|
31
|
+
|
|
32
|
+
touch-action: manipulation;
|
|
33
|
+
|
|
34
|
+
button {
|
|
35
|
+
--_color: var(--md-comp-keypad-key-color);
|
|
36
|
+
--_label: var(--md-comp-keypad-key-label-color);
|
|
37
|
+
min-width: 0;
|
|
38
|
+
padding: 0;
|
|
39
|
+
transition:
|
|
40
|
+
border-radius 200ms var(--md-comp-keypad-motion),
|
|
41
|
+
background-color 200ms ease-out;
|
|
42
|
+
|
|
43
|
+
&[data-key] {
|
|
44
|
+
--_color: var(--md-comp-keypad-function-key-color);
|
|
45
|
+
--_label: var(--md-comp-keypad-function-key-label-color);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// The state layer's opacity. Only the rule below reads it, so a key
|
|
49
|
+
// that keeps a button style ignores it.
|
|
50
|
+
@each $state, $selector in ("hover": "&:hover", "focus": "&:focus", "pressed": "&:active") {
|
|
51
|
+
#{$selector} {
|
|
52
|
+
--_state: #{state-opacity($state)};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
&:active:not(:disabled) {
|
|
57
|
+
border-radius: var(--md-comp-keypad-key-pressed-shape);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// The shape stops moving; the color still fades, which is not motion.
|
|
61
|
+
@media (prefers-reduced-motion: reduce) {
|
|
62
|
+
transition-property: background-color;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
#{$_key} {
|
|
67
|
+
color: var(--_label);
|
|
68
|
+
background-color: color-mix(in oklab, var(--_label) var(--_state, 0%), var(--_color));
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// A latched Shift reads as selected: primary, like a selected toggle.
|
|
72
|
+
[data-key="Shift"][aria-pressed="true"] {
|
|
73
|
+
--_color: var(--md-sys-color-primary);
|
|
74
|
+
--_label: var(--md-sys-color-on-primary);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
// Dial pad and PIN pad: three columns of round keys. A digit key may carry
|
|
79
|
+
// its letters in a <small> under the digit. An empty cell is an empty <span>.
|
|
80
|
+
// Keys fill their cell, so `.wide` spans two and becomes a pill: a call key
|
|
81
|
+
// beside Backspace leaves no hole in the last row.
|
|
82
|
+
.keypad {
|
|
83
|
+
--md-comp-keypad-key-size: 72px;
|
|
84
|
+
--md-comp-keypad-gap: 12px;
|
|
85
|
+
|
|
86
|
+
display: inline-grid;
|
|
87
|
+
grid-template-columns: repeat(3, var(--md-comp-keypad-key-size));
|
|
88
|
+
gap: var(--md-comp-keypad-gap);
|
|
89
|
+
|
|
90
|
+
button {
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
gap: 0;
|
|
93
|
+
width: 100%;
|
|
94
|
+
height: var(--md-comp-keypad-key-size);
|
|
95
|
+
border-radius: calc(var(--md-comp-keypad-key-size) / 2);
|
|
96
|
+
@include typescale("headline-medium");
|
|
97
|
+
|
|
98
|
+
&.wide {
|
|
99
|
+
grid-column: span 2;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
> small {
|
|
103
|
+
@include typescale("label-small");
|
|
104
|
+
color: inherit;
|
|
105
|
+
opacity: .78;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// On-screen keyboard. The container is a docked surface; each row is a line
|
|
111
|
+
// of keys sized from the column count. An optional `.numbers` row of digits
|
|
112
|
+
// sits above the letters with shorter keys, as on a phone; `hidden` drops it.
|
|
113
|
+
// Rows skip `display: flex` while hidden, which would otherwise outrank the
|
|
114
|
+
// browser's `[hidden]` rule.
|
|
115
|
+
.keyboard {
|
|
116
|
+
--md-comp-keyboard-columns: 10;
|
|
117
|
+
--md-comp-keyboard-gap: 6px;
|
|
118
|
+
--md-comp-keyboard-key-height: 48px;
|
|
119
|
+
--md-comp-keyboard-number-key-height: 40px;
|
|
120
|
+
--md-comp-keyboard-key-shape: 12px;
|
|
121
|
+
--md-comp-keypad-key-pressed-shape: 6px;
|
|
122
|
+
--md-comp-keyboard-container-color: var(--md-sys-color-surface-container);
|
|
123
|
+
--md-comp-keyboard-container-shape: 16px;
|
|
124
|
+
|
|
125
|
+
display: flex;
|
|
126
|
+
flex-direction: column;
|
|
127
|
+
gap: 8px;
|
|
128
|
+
padding: 8px;
|
|
129
|
+
border-radius: var(--md-comp-keyboard-container-shape);
|
|
130
|
+
background-color: var(--md-comp-keyboard-container-color);
|
|
131
|
+
|
|
132
|
+
> :not([hidden]) {
|
|
133
|
+
--_unit: calc((100% - (var(--md-comp-keyboard-columns) - 1) * var(--md-comp-keyboard-gap)) / var(--md-comp-keyboard-columns));
|
|
134
|
+
display: flex;
|
|
135
|
+
justify-content: center;
|
|
136
|
+
gap: var(--md-comp-keyboard-gap);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
button {
|
|
140
|
+
flex: 0 1 var(--_unit);
|
|
141
|
+
height: var(--md-comp-keyboard-key-height);
|
|
142
|
+
border-radius: var(--md-comp-keyboard-key-shape);
|
|
143
|
+
@include typescale("title-medium");
|
|
144
|
+
|
|
145
|
+
&[data-key] {
|
|
146
|
+
flex-basis: calc(1.5 * var(--_unit) + .5 * var(--md-comp-keyboard-gap));
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
&[value=" "] {
|
|
150
|
+
flex-grow: 1;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
> .numbers button {
|
|
155
|
+
height: var(--md-comp-keyboard-number-key-height);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Shift shows capitals on the character keys while it is latched.
|
|
159
|
+
&:has([data-key="Shift"][aria-pressed="true"]) button[value] {
|
|
160
|
+
text-transform: uppercase;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
@@ -11,10 +11,8 @@
|
|
|
11
11
|
border-radius: 12px;
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
&:hover {
|
|
15
|
-
|
|
16
|
-
opacity: .8;
|
|
17
|
-
}
|
|
14
|
+
&:hover:not(.active) {
|
|
15
|
+
opacity: .8;
|
|
18
16
|
}
|
|
19
17
|
&.active {
|
|
20
18
|
cursor: zoom-out;
|
|
@@ -23,10 +21,7 @@
|
|
|
23
21
|
|
|
24
22
|
#lightbox-overlay {
|
|
25
23
|
position:fixed;
|
|
26
|
-
|
|
27
|
-
right: 0;
|
|
28
|
-
bottom: 0;
|
|
29
|
-
left: 0;
|
|
24
|
+
inset: 0;
|
|
30
25
|
background-color: var(--md-sys-color-background);
|
|
31
26
|
z-index: 1000;
|
|
32
27
|
will-change: opacity;
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
@use "sass:map";
|
|
2
|
+
@use "../abstracts" as *;
|
|
3
|
+
|
|
4
|
+
// Map. A MapLibre map in a .map frame. The page loads maplibre-gl.css; these
|
|
5
|
+
// rules restyle what MapLibre draws and add the ExpressiveCSS parts:
|
|
6
|
+
//
|
|
7
|
+
// .map-marker a point at data-lng-lat. With no content of its own it is
|
|
8
|
+
// a primary dot; anything else inside replaces the dot.
|
|
9
|
+
// A .map-marker-label shows below it (.top: above), and a
|
|
10
|
+
// child .tooltip works as on any button.
|
|
11
|
+
// .map-popup moved into a MapLibre popup, drawn as a surface card.
|
|
12
|
+
// .map-controls a corner stack of .icon-button controls, top right
|
|
13
|
+
// unless .top-left, .bottom-left or .bottom-right. A
|
|
14
|
+
// .map-control-group joins buttons on one surface.
|
|
15
|
+
//
|
|
16
|
+
// Until the script starts the map, markers, popups and controls are hidden.
|
|
17
|
+
// MapLibre moves markers and popups out of the frame, so the hiding rules
|
|
18
|
+
// stop matching them once the map runs.
|
|
19
|
+
//
|
|
20
|
+
// Tokens:
|
|
21
|
+
// --md-comp-map-height 400px
|
|
22
|
+
// --md-comp-map-shape 16px
|
|
23
|
+
// --md-comp-map-marker-color primary
|
|
24
|
+
// --md-comp-map-marker-ring-color surface
|
|
25
|
+
// --md-comp-map-route-color primary
|
|
26
|
+
// --md-comp-map-arc-color tertiary
|
|
27
|
+
// --md-comp-map-cluster-color primary
|
|
28
|
+
// --md-comp-map-cluster-label-color on-primary
|
|
29
|
+
// --md-comp-map-popup-max-width 280px
|
|
30
|
+
// --md-comp-map-control-offset 12px
|
|
31
|
+
//
|
|
32
|
+
// The script sets --md-comp-map-bearing, so a [data-action="compass"] icon
|
|
33
|
+
// points north.
|
|
34
|
+
|
|
35
|
+
.map {
|
|
36
|
+
--md-comp-map-height: 400px;
|
|
37
|
+
--md-comp-map-shape: 16px;
|
|
38
|
+
--md-comp-map-marker-color: var(--md-sys-color-primary);
|
|
39
|
+
--md-comp-map-marker-ring-color: var(--md-sys-color-surface);
|
|
40
|
+
--md-comp-map-route-color: var(--md-sys-color-primary);
|
|
41
|
+
--md-comp-map-arc-color: var(--md-sys-color-tertiary);
|
|
42
|
+
--md-comp-map-cluster-color: var(--md-sys-color-primary);
|
|
43
|
+
--md-comp-map-cluster-label-color: var(--md-sys-color-on-primary);
|
|
44
|
+
--md-comp-map-popup-max-width: 280px;
|
|
45
|
+
--md-comp-map-control-offset: 12px;
|
|
46
|
+
|
|
47
|
+
position: relative;
|
|
48
|
+
overflow: hidden;
|
|
49
|
+
block-size: var(--md-comp-map-height);
|
|
50
|
+
border-radius: var(--md-comp-map-shape);
|
|
51
|
+
background-color: var(--md-sys-color-surface-container);
|
|
52
|
+
|
|
53
|
+
&:fullscreen {
|
|
54
|
+
border-radius: 0;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
> :is(.map-marker, .map-popup),
|
|
58
|
+
&:not(.maplibregl-map) > .map-controls {
|
|
59
|
+
display: none;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// Absolute, as MapLibre places it; a child .tooltip would otherwise make
|
|
64
|
+
// the marker relative.
|
|
65
|
+
.map .map-marker {
|
|
66
|
+
position: absolute;
|
|
67
|
+
display: grid;
|
|
68
|
+
place-items: center;
|
|
69
|
+
padding: 0;
|
|
70
|
+
border: none;
|
|
71
|
+
background: none;
|
|
72
|
+
color: inherit;
|
|
73
|
+
cursor: pointer;
|
|
74
|
+
@include focus-visible;
|
|
75
|
+
|
|
76
|
+
&:not(:has(> :not(.tooltip, .map-marker-label))) {
|
|
77
|
+
inline-size: 16px;
|
|
78
|
+
block-size: 16px;
|
|
79
|
+
border: 2px solid var(--md-comp-map-marker-ring-color);
|
|
80
|
+
border-radius: 50%;
|
|
81
|
+
background-color: var(--md-comp-map-marker-color);
|
|
82
|
+
@include z-depth(1);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&.location {
|
|
86
|
+
--md-comp-map-marker-color: var(--md-sys-color-tertiary);
|
|
87
|
+
|
|
88
|
+
box-shadow: 0 0 0 8px color-mix(in oklab, var(--md-comp-map-marker-color) 24%, transparent);
|
|
89
|
+
cursor: default;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
.map-marker-label {
|
|
94
|
+
position: absolute;
|
|
95
|
+
inset-block-start: calc(100% + 4px);
|
|
96
|
+
padding: 2px 8px;
|
|
97
|
+
border-radius: 8px;
|
|
98
|
+
background-color: var(--md-sys-color-surface-container-highest);
|
|
99
|
+
color: var(--md-sys-color-on-surface);
|
|
100
|
+
@include typescale("label-medium");
|
|
101
|
+
white-space: nowrap;
|
|
102
|
+
pointer-events: none;
|
|
103
|
+
|
|
104
|
+
&.top {
|
|
105
|
+
inset-block: auto calc(100% + 4px);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// MapLibre's popup, as an M3 surface card. The tip is dropped; the offset
|
|
110
|
+
// keeps the card clear of its marker.
|
|
111
|
+
//
|
|
112
|
+
// maplibre-gl.css is unlayered, so it beats this layer wherever both set a
|
|
113
|
+
// property. Those declarations are !important; an important declaration in
|
|
114
|
+
// a layer outranks a normal unlayered one.
|
|
115
|
+
.map {
|
|
116
|
+
.maplibregl-popup-content {
|
|
117
|
+
max-inline-size: var(--md-comp-map-popup-max-width);
|
|
118
|
+
padding: 12px 16px !important;
|
|
119
|
+
border-radius: 12px !important;
|
|
120
|
+
background: var(--md-sys-color-surface-container-low) !important;
|
|
121
|
+
color: var(--md-sys-color-on-surface);
|
|
122
|
+
@include typescale("body-medium");
|
|
123
|
+
box-shadow: map.get($elevations, "2") !important;
|
|
124
|
+
|
|
125
|
+
&:has(> .maplibregl-popup-close-button) {
|
|
126
|
+
padding-inline-end: 44px;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
:is(h1, h2, h3, h4, h5, h6) {
|
|
130
|
+
margin: 0 0 4px;
|
|
131
|
+
@include typescale("title-small");
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
p {
|
|
135
|
+
margin: 0;
|
|
136
|
+
font: inherit;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.maplibregl-popup-tip {
|
|
141
|
+
display: none;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.maplibregl-popup-close-button {
|
|
145
|
+
inset: 4px 4px auto auto !important;
|
|
146
|
+
inline-size: 32px;
|
|
147
|
+
block-size: 32px;
|
|
148
|
+
border-radius: 50% !important;
|
|
149
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
150
|
+
font-size: 20px;
|
|
151
|
+
line-height: 1;
|
|
152
|
+
|
|
153
|
+
&:hover {
|
|
154
|
+
background-color: color-mix(in oklab, currentColor 8%, transparent) !important;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
@include focus-visible;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
.map-controls {
|
|
162
|
+
position: absolute;
|
|
163
|
+
inset: var(--md-comp-map-control-offset) var(--md-comp-map-control-offset) auto auto;
|
|
164
|
+
z-index: 2;
|
|
165
|
+
display: flex;
|
|
166
|
+
flex-direction: column;
|
|
167
|
+
gap: 8px;
|
|
168
|
+
|
|
169
|
+
&.top-left { inset: var(--md-comp-map-control-offset) auto auto var(--md-comp-map-control-offset); }
|
|
170
|
+
&.bottom-left { inset: auto auto var(--md-comp-map-control-offset) var(--md-comp-map-control-offset); }
|
|
171
|
+
&.bottom-right { inset: auto var(--md-comp-map-control-offset) var(--md-comp-map-control-offset) auto; }
|
|
172
|
+
|
|
173
|
+
> .icon-button,
|
|
174
|
+
> .map-control-group {
|
|
175
|
+
border-radius: 9999px;
|
|
176
|
+
background-color: var(--md-sys-color-surface-container-low);
|
|
177
|
+
@include z-depth(2);
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
[data-action="compass"] > .material-symbols {
|
|
181
|
+
rotate: var(--md-comp-map-bearing, 0deg);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
.map-control-group {
|
|
186
|
+
display: flex;
|
|
187
|
+
flex-direction: column;
|
|
188
|
+
}
|
|
@@ -28,6 +28,13 @@
|
|
|
28
28
|
|
|
29
29
|
$_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M10 6l6 6-6 6'/%3E%3C/svg%3E");
|
|
30
30
|
|
|
31
|
+
// Item states, interpolated after `li`. An item is any <li> that is not a
|
|
32
|
+
// divider, optgroup, gap or label; an enabled item is also not disabled.
|
|
33
|
+
$_item: ":not(.divider, .optgroup, .gap, .label)";
|
|
34
|
+
$_enabled: ':not(.disabled, [aria-disabled="true"], .divider, .optgroup, .gap, .label)';
|
|
35
|
+
$_selected: ':is(.selected, [aria-selected="true"], [aria-checked="true"])';
|
|
36
|
+
$_unselected: ':not(.selected, [aria-selected="true"], [aria-checked="true"])';
|
|
37
|
+
|
|
31
38
|
[popover] {
|
|
32
39
|
outline: none;
|
|
33
40
|
padding: 0;
|
|
@@ -188,7 +195,8 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
188
195
|
// butted against the label instead of flush right.
|
|
189
196
|
//
|
|
190
197
|
// Leading stays the default; a trailing icon names its side, the same way
|
|
191
|
-
// a field icon must (see rule 3 in
|
|
198
|
+
// a field icon must (see rule 3 under "HTML semantics" in
|
|
199
|
+
// docs/development-notes.md).
|
|
192
200
|
> :is(a, button) > #{$icon}:is(.suffix, :last-child:not(:only-child)) {
|
|
193
201
|
margin-inline-start: auto;
|
|
194
202
|
color: var(--md-comp-menu-item-trailing-icon-color);
|
|
@@ -209,33 +217,26 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
209
217
|
}
|
|
210
218
|
}
|
|
211
219
|
|
|
212
|
-
> li
|
|
220
|
+
> li#{$_item} {
|
|
213
221
|
min-height: var(--md-comp-menu-item-container-height);
|
|
214
222
|
}
|
|
215
223
|
|
|
216
|
-
> li:
|
|
224
|
+
> li#{$_item}:first-child {
|
|
217
225
|
border-radius: var(--md-comp-menu-item-edge-shape)
|
|
218
226
|
var(--md-comp-menu-item-edge-shape)
|
|
219
227
|
var(--md-comp-menu-item-container-shape)
|
|
220
228
|
var(--md-comp-menu-item-container-shape);
|
|
221
229
|
}
|
|
222
230
|
|
|
223
|
-
> li:
|
|
231
|
+
> li#{$_item}:last-child {
|
|
224
232
|
border-radius: var(--md-comp-menu-item-container-shape)
|
|
225
233
|
var(--md-comp-menu-item-container-shape)
|
|
226
234
|
var(--md-comp-menu-item-edge-shape) var(--md-comp-menu-item-edge-shape);
|
|
227
235
|
}
|
|
228
236
|
|
|
229
237
|
// Hover / press sit on extra-small corners and do not span the container.
|
|
230
|
-
> li:
|
|
231
|
-
|
|
232
|
-
[aria-disabled="true"],
|
|
233
|
-
.divider,
|
|
234
|
-
.optgroup,
|
|
235
|
-
.gap,
|
|
236
|
-
.label
|
|
237
|
-
):hover,
|
|
238
|
-
> li.active:not(.selected, [aria-selected="true"], [aria-checked="true"]) {
|
|
238
|
+
> li#{$_enabled}:hover,
|
|
239
|
+
> li.active#{$_unselected} {
|
|
239
240
|
background-color: color-mix(
|
|
240
241
|
in oklab,
|
|
241
242
|
var(--md-comp-menu-item-label-text-color) 8%,
|
|
@@ -243,14 +244,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
243
244
|
);
|
|
244
245
|
}
|
|
245
246
|
|
|
246
|
-
> li:
|
|
247
|
-
.disabled,
|
|
248
|
-
[aria-disabled="true"],
|
|
249
|
-
.divider,
|
|
250
|
-
.optgroup,
|
|
251
|
-
.gap,
|
|
252
|
-
.label
|
|
253
|
-
):active {
|
|
247
|
+
> li#{$_enabled}:active {
|
|
254
248
|
background-color: color-mix(
|
|
255
249
|
in oklab,
|
|
256
250
|
var(--md-comp-menu-item-label-text-color) 10%,
|
|
@@ -261,9 +255,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
261
255
|
// :not(.divider) only buys specificity: menu-item.selected.shape is 12dp
|
|
262
256
|
// unconditionally, so it has to outrank the first/last-child edge rule that
|
|
263
257
|
// would otherwise leave a selected end item with 4dp inner corners.
|
|
264
|
-
> li:
|
|
265
|
-
.divider
|
|
266
|
-
) {
|
|
258
|
+
> li#{$_selected}:not(.divider) {
|
|
267
259
|
border-radius: var(--md-comp-menu-item-selected-container-shape);
|
|
268
260
|
background-color: var(--md-comp-menu-item-selected-container-color);
|
|
269
261
|
color: var(--md-comp-menu-item-selected-label-text-color);
|
|
@@ -282,7 +274,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
282
274
|
}
|
|
283
275
|
}
|
|
284
276
|
|
|
285
|
-
> li:
|
|
277
|
+
> li#{$_selected}:hover {
|
|
286
278
|
background-color: color-mix(
|
|
287
279
|
in oklab,
|
|
288
280
|
var(--md-comp-menu-item-selected-label-text-color) 8%,
|
|
@@ -290,11 +282,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
290
282
|
);
|
|
291
283
|
}
|
|
292
284
|
|
|
293
|
-
> li:is(
|
|
294
|
-
:focus,
|
|
295
|
-
:focus-visible,
|
|
296
|
-
:active
|
|
297
|
-
) {
|
|
285
|
+
> li#{$_selected}:is(:focus, :focus-visible, :active) {
|
|
298
286
|
background-color: color-mix(
|
|
299
287
|
in oklab,
|
|
300
288
|
var(--md-comp-menu-item-selected-label-text-color) 10%,
|
|
@@ -365,21 +353,21 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
365
353
|
// blur the menu itself. Grouped menus stay solid.
|
|
366
354
|
backdrop-filter: none;
|
|
367
355
|
|
|
368
|
-
> li
|
|
356
|
+
> li#{$_item} {
|
|
369
357
|
padding-inline: var(--md-comp-menu-group-padding);
|
|
370
358
|
background-color: var(--md-comp-menu-container-color);
|
|
371
359
|
border-radius: 0;
|
|
372
360
|
}
|
|
373
361
|
|
|
374
|
-
> li:
|
|
375
|
-
> li.gap + li
|
|
362
|
+
> li#{$_item}:first-child,
|
|
363
|
+
> li.gap + li#{$_item} {
|
|
376
364
|
padding-block-start: var(--md-comp-menu-group-padding);
|
|
377
365
|
border-start-start-radius: var(--md-comp-menu-group-shape);
|
|
378
366
|
border-start-end-radius: var(--md-comp-menu-group-shape);
|
|
379
367
|
}
|
|
380
368
|
|
|
381
|
-
> li:
|
|
382
|
-
> li:
|
|
369
|
+
> li#{$_item}:has(+ li.gap),
|
|
370
|
+
> li#{$_item}:last-child {
|
|
383
371
|
padding-block-end: var(--md-comp-menu-group-padding);
|
|
384
372
|
border-end-start-radius: var(--md-comp-menu-group-shape);
|
|
385
373
|
border-end-end-radius: var(--md-comp-menu-group-shape);
|
|
@@ -390,14 +378,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
390
378
|
}
|
|
391
379
|
|
|
392
380
|
// State layers belong to the inset item while the group surface remains.
|
|
393
|
-
> li:
|
|
394
|
-
.disabled,
|
|
395
|
-
[aria-disabled="true"],
|
|
396
|
-
.divider,
|
|
397
|
-
.optgroup,
|
|
398
|
-
.gap,
|
|
399
|
-
.label
|
|
400
|
-
):hover,
|
|
381
|
+
> li#{$_enabled}:hover,
|
|
401
382
|
> li.active,
|
|
402
383
|
> li.selected,
|
|
403
384
|
> li[aria-selected="true"],
|
|
@@ -405,16 +386,9 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
405
386
|
background-color: var(--md-comp-menu-container-color);
|
|
406
387
|
}
|
|
407
388
|
|
|
408
|
-
> li:
|
|
409
|
-
.disabled,
|
|
410
|
-
[aria-disabled="true"],
|
|
411
|
-
.divider,
|
|
412
|
-
.optgroup,
|
|
413
|
-
.gap,
|
|
414
|
-
.label
|
|
415
|
-
):hover
|
|
389
|
+
> li#{$_enabled}:hover
|
|
416
390
|
> :is(a, button, #{$icon-label}),
|
|
417
|
-
> li.active
|
|
391
|
+
> li.active#{$_unselected}
|
|
418
392
|
> :is(a, button, #{$icon-label}) {
|
|
419
393
|
border-radius: var(--md-comp-menu-item-container-shape);
|
|
420
394
|
background-color: color-mix(
|
|
@@ -424,14 +398,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
424
398
|
);
|
|
425
399
|
}
|
|
426
400
|
|
|
427
|
-
> li:
|
|
428
|
-
.disabled,
|
|
429
|
-
[aria-disabled="true"],
|
|
430
|
-
.divider,
|
|
431
|
-
.optgroup,
|
|
432
|
-
.gap,
|
|
433
|
-
.label
|
|
434
|
-
):active
|
|
401
|
+
> li#{$_enabled}:active
|
|
435
402
|
> :is(a, button, #{$icon-label}) {
|
|
436
403
|
background-color: color-mix(
|
|
437
404
|
in oklab,
|
|
@@ -440,13 +407,13 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
440
407
|
);
|
|
441
408
|
}
|
|
442
409
|
|
|
443
|
-
> li
|
|
410
|
+
> li#{$_selected}
|
|
444
411
|
> :is(a, button, #{$icon-label}) {
|
|
445
412
|
border-radius: var(--md-comp-menu-item-selected-container-shape);
|
|
446
413
|
background-color: var(--md-comp-menu-item-selected-container-color);
|
|
447
414
|
}
|
|
448
415
|
|
|
449
|
-
> li:
|
|
416
|
+
> li#{$_selected}:hover
|
|
450
417
|
> :is(a, button, #{$icon-label}) {
|
|
451
418
|
background-color: color-mix(
|
|
452
419
|
in oklab,
|
|
@@ -455,11 +422,7 @@ $_menu-chevron: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg
|
|
|
455
422
|
);
|
|
456
423
|
}
|
|
457
424
|
|
|
458
|
-
> li:is(
|
|
459
|
-
:focus,
|
|
460
|
-
:focus-visible,
|
|
461
|
-
:active
|
|
462
|
-
)
|
|
425
|
+
> li#{$_selected}:is(:focus, :focus-visible, :active)
|
|
463
426
|
> :is(a, button, #{$icon-label}) {
|
|
464
427
|
background-color: color-mix(
|
|
465
428
|
in oklab,
|
|
@@ -576,18 +539,12 @@ menu[id] > li:focus-visible {
|
|
|
576
539
|
);
|
|
577
540
|
}
|
|
578
541
|
|
|
579
|
-
menu[id]
|
|
580
|
-
> li:focus-visible:not(.selected, [aria-selected="true"], [aria-checked="true"]) {
|
|
581
|
-
outline: 3px solid var(--md-sys-color-secondary);
|
|
582
|
-
outline-offset: -3px;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
542
|
menu[id].grouped > li:focus-visible {
|
|
586
543
|
background-color: var(--md-comp-menu-container-color);
|
|
587
544
|
}
|
|
588
545
|
|
|
589
546
|
menu[id].grouped
|
|
590
|
-
> li:focus-visible
|
|
547
|
+
> li:focus-visible#{$_unselected}
|
|
591
548
|
> :is(a, button, span:not(.material-symbols, .badge, .supporting-text)) {
|
|
592
549
|
border-radius: var(--md-comp-menu-item-container-shape);
|
|
593
550
|
background-color: color-mix(
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
inset: 0;
|
|
126
126
|
z-index: -1;
|
|
127
127
|
border-radius: var(--md-comp-mixed-chart-shape);
|
|
128
|
-
background-color: color-mix(in
|
|
128
|
+
background-color: color-mix(in oklab, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
> span {
|