@expressivecss/expressive 0.11.0 → 0.13.1
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 +392 -7
- package/README.md +37 -1
- package/dist/css/expressive.css +5440 -234
- 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/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/js/chunks/{chunk-AYYYWUJ4.mjs → chunk-3CLXLPYS.mjs} +17 -11
- package/dist/js/chunks/chunk-3CLXLPYS.mjs.map +7 -0
- package/dist/js/chunks/chunk-3DHK5CZU.mjs +105 -0
- package/dist/js/chunks/chunk-3DHK5CZU.mjs.map +7 -0
- package/dist/js/chunks/{chunk-IMUPRRI6.mjs → chunk-3VOK6J7U.mjs} +3 -3
- package/dist/js/chunks/chunk-4PWAPV6F.mjs +7 -0
- package/dist/js/chunks/chunk-4PWAPV6F.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XFJ452AZ.mjs → chunk-55IA2XUC.mjs} +5 -6
- package/dist/js/chunks/{chunk-XFJ452AZ.mjs.map → chunk-55IA2XUC.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-XDB3G6RL.mjs → chunk-6N2XAEFK.mjs} +15 -4
- package/dist/js/chunks/{chunk-XDB3G6RL.mjs.map → chunk-6N2XAEFK.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-MISGHDUU.mjs → chunk-6OMRGML6.mjs} +9 -7
- package/dist/js/chunks/{chunk-MISGHDUU.mjs.map → chunk-6OMRGML6.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-A3BJA7V4.mjs → chunk-6WLSDZ4O.mjs} +2 -2
- package/dist/js/chunks/chunk-CCWDV5CR.mjs +292 -0
- package/dist/js/chunks/chunk-CCWDV5CR.mjs.map +7 -0
- package/dist/js/chunks/{chunk-JODJAGFS.mjs → chunk-CKQP6P76.mjs} +31 -8
- package/dist/js/chunks/chunk-CKQP6P76.mjs.map +7 -0
- package/dist/js/chunks/{chunk-KR44BSYQ.mjs → chunk-DLWYKFEI.mjs} +3 -3
- package/dist/js/chunks/chunk-DTKR54I6.mjs +270 -0
- package/dist/js/chunks/chunk-DTKR54I6.mjs.map +7 -0
- package/dist/js/chunks/{chunk-SLFNPY5M.mjs → chunk-EC63CHXU.mjs} +2 -2
- package/dist/js/chunks/chunk-GVGT6MIU.mjs +47 -0
- package/dist/js/chunks/chunk-GVGT6MIU.mjs.map +7 -0
- package/dist/js/chunks/{chunk-LZVBJ33S.mjs → chunk-GZWPXXY6.mjs} +15 -8
- package/dist/js/chunks/chunk-GZWPXXY6.mjs.map +7 -0
- package/dist/js/chunks/chunk-HKT2S7VM.mjs +48 -0
- package/dist/js/chunks/chunk-HKT2S7VM.mjs.map +7 -0
- package/dist/js/chunks/{chunk-D4UZ4HFN.mjs → chunk-IFXVDDDH.mjs} +23 -11
- package/dist/js/chunks/chunk-IFXVDDDH.mjs.map +7 -0
- package/dist/js/chunks/chunk-K4CJCRGE.mjs +262 -0
- package/dist/js/chunks/chunk-K4CJCRGE.mjs.map +7 -0
- package/dist/js/chunks/chunk-LNCCYGPC.mjs +163 -0
- package/dist/js/chunks/chunk-LNCCYGPC.mjs.map +7 -0
- package/dist/js/chunks/{chunk-QSQ24FYT.mjs → chunk-LTWPGFBR.mjs} +2 -2
- package/dist/js/chunks/{chunk-QSQ24FYT.mjs.map → chunk-LTWPGFBR.mjs.map} +2 -2
- package/dist/js/chunks/{chunk-I5KR22BY.mjs → chunk-LWBQIX5J.mjs} +15 -15
- package/dist/js/chunks/chunk-LWBQIX5J.mjs.map +7 -0
- package/dist/js/chunks/{chunk-GY2Z5CJ2.mjs → chunk-NNYP33NB.mjs} +67 -32
- package/dist/js/chunks/chunk-NNYP33NB.mjs.map +7 -0
- package/dist/js/chunks/chunk-NQLC3YMW.mjs +1 -0
- package/dist/js/chunks/chunk-O5XPWXIQ.mjs +406 -0
- package/dist/js/chunks/chunk-O5XPWXIQ.mjs.map +7 -0
- package/dist/js/chunks/chunk-P3G3QHII.mjs +166 -0
- package/dist/js/chunks/chunk-P3G3QHII.mjs.map +7 -0
- package/dist/js/chunks/{chunk-VAS6JQ6P.mjs → chunk-PIJ2TAR3.mjs} +3 -3
- package/dist/js/chunks/{chunk-74N6U5JJ.mjs → chunk-PLYXLSH3.mjs} +38 -37
- package/dist/js/chunks/chunk-PLYXLSH3.mjs.map +7 -0
- package/dist/js/chunks/{chunk-PIIAEYAJ.mjs → chunk-QDAL4IYN.mjs} +2 -2
- package/dist/js/chunks/chunk-QKWPQK5N.mjs +179 -0
- package/dist/js/chunks/chunk-QKWPQK5N.mjs.map +7 -0
- package/dist/js/chunks/{chunk-FRB7TOCS.mjs → chunk-QV2JAWIZ.mjs} +2 -2
- package/dist/js/chunks/{chunk-N3UHGN3N.mjs → chunk-QVVEWBOF.mjs} +3 -3
- package/dist/js/chunks/chunk-RHRQKTTX.mjs +139 -0
- package/dist/js/chunks/chunk-RHRQKTTX.mjs.map +7 -0
- package/dist/js/chunks/chunk-SPETGK25.mjs +59 -0
- package/dist/js/chunks/chunk-SPETGK25.mjs.map +7 -0
- package/dist/js/chunks/{chunk-TK6PX2GC.mjs → chunk-U2OTHOTI.mjs} +131 -19
- package/dist/js/chunks/chunk-U2OTHOTI.mjs.map +7 -0
- package/dist/js/chunks/{chunk-TYM6U5DY.mjs → chunk-UAEAQBRC.mjs} +2 -2
- package/dist/js/chunks/{chunk-7UXHSYIA.mjs → chunk-UBLRRJ7N.mjs} +3 -3
- package/dist/js/chunks/{chunk-EP3CVKB5.mjs → chunk-UEZUJQ66.mjs} +8 -5
- package/dist/js/chunks/chunk-UEZUJQ66.mjs.map +7 -0
- package/dist/js/chunks/{chunk-JNPIWFJT.mjs → chunk-UNEMYWEW.mjs} +3 -3
- package/dist/js/chunks/chunk-VTLBW7QS.mjs +124 -0
- package/dist/js/chunks/chunk-VTLBW7QS.mjs.map +7 -0
- package/dist/js/chunks/{chunk-JKNPQQWY.mjs → chunk-WJXDBPXQ.mjs} +28 -12
- package/dist/js/chunks/chunk-WJXDBPXQ.mjs.map +7 -0
- package/dist/js/chunks/{chunk-CDW6WIRT.mjs → chunk-XGHORT7J.mjs} +18 -11
- package/dist/js/chunks/chunk-XGHORT7J.mjs.map +7 -0
- package/dist/js/chunks/{chunk-7GKXUG4B.mjs → chunk-XH6BEEMY.mjs} +78 -25
- package/dist/js/chunks/chunk-XH6BEEMY.mjs.map +7 -0
- package/dist/js/chunks/{chunk-XO5WX3TK.mjs → chunk-YDCS5S3J.mjs} +2 -2
- package/dist/js/expressive.cjs +2540 -233
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +2540 -233
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +10 -10
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +86 -38
- 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 +10 -0
- package/dist/js/internal/components/barChart.mjs.map +7 -0
- 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 +9 -0
- package/dist/js/internal/components/columnChart.mjs.map +7 -0
- package/dist/js/internal/components/commandPalette.mjs +9 -0
- package/dist/js/internal/components/commandPalette.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 +9 -0
- package/dist/js/internal/components/heatmapChart.mjs.map +7 -0
- package/dist/js/internal/components/index.mjs +79 -31
- package/dist/js/internal/components/lightbox.mjs +3 -3
- package/dist/js/internal/components/lineChart.mjs +12 -0
- package/dist/js/internal/components/lineChart.mjs.map +7 -0
- package/dist/js/internal/components/menu.mjs +3 -3
- package/dist/js/internal/components/messageScroller.mjs +9 -0
- package/dist/js/internal/components/messageScroller.mjs.map +7 -0
- package/dist/js/internal/components/mixedChart.mjs +10 -0
- package/dist/js/internal/components/mixedChart.mjs.map +7 -0
- package/dist/js/internal/components/navigationRail.mjs +2 -2
- package/dist/js/internal/components/pieChart.mjs +9 -0
- package/dist/js/internal/components/pieChart.mjs.map +7 -0
- package/dist/js/internal/components/questionnaire.mjs +9 -0
- package/dist/js/internal/components/questionnaire.mjs.map +7 -0
- package/dist/js/internal/components/radarChart.mjs +9 -0
- package/dist/js/internal/components/radarChart.mjs.map +7 -0
- package/dist/js/internal/components/radialChart.mjs +9 -0
- package/dist/js/internal/components/radialChart.mjs.map +7 -0
- package/dist/js/internal/components/registry.mjs +37 -25
- package/dist/js/internal/components/richTextEditor.mjs +9 -0
- package/dist/js/internal/components/richTextEditor.mjs.map +7 -0
- 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 +86 -38
- package/dist/types/behaviors/forms.d.ts +22 -0
- package/dist/types/components/appBar.d.ts +1 -1
- package/dist/types/components/barChart.d.ts +24 -0
- package/dist/types/components/columnChart.d.ts +21 -0
- package/dist/types/components/commandPalette.d.ts +96 -0
- package/dist/types/components/datepicker.d.ts +5 -2
- package/dist/types/components/heatmapChart.d.ts +49 -0
- package/dist/types/components/index.d.ts +12 -0
- package/dist/types/components/lineChart.d.ts +134 -0
- package/dist/types/components/menu.d.ts +32 -0
- package/dist/types/components/messageScroller.d.ts +111 -0
- package/dist/types/components/mixedChart.d.ts +25 -0
- package/dist/types/components/pieChart.d.ts +40 -0
- package/dist/types/components/questionnaire.d.ts +96 -0
- package/dist/types/components/radarChart.d.ts +39 -0
- package/dist/types/components/radialChart.d.ts +45 -0
- package/dist/types/components/registry.d.ts +44 -0
- package/dist/types/components/richTextEditor.d.ts +71 -0
- package/dist/types/components/slider.d.ts +1 -0
- package/dist/types/components/snackbar.d.ts +6 -0
- package/dist/types/components/timepicker.d.ts +4 -1
- package/dist/types/components/tooltip.d.ts +2 -1
- package/dist/types/modular.d.ts +10 -1
- package/package.json +4 -1
- package/src/sass/README.md +3 -6
- package/src/sass/abstracts/_index.scss +1 -1
- package/src/sass/abstracts/_mixins.scss +226 -0
- package/src/sass/abstracts/_variables.scss +14 -0
- package/src/sass/base/_typography.scss +45 -0
- package/src/sass/components/_accordion.scss +161 -0
- package/src/sass/components/_aura.scss +119 -0
- package/src/sass/components/_avatar.scss +86 -0
- package/src/sass/components/_bar-chart.scss +285 -0
- package/src/sass/components/_bottom-sheet.scss +1 -0
- package/src/sass/components/_button-groups.scss +13 -3
- package/src/sass/components/_cards.scss +16 -13
- package/src/sass/components/_carousel.scss +9 -7
- package/src/sass/components/_column-chart.scss +134 -0
- package/src/sass/components/_command-palette.scss +140 -0
- package/src/sass/components/_countdown.scss +89 -0
- package/src/sass/components/_data-table.scss +188 -0
- package/src/sass/components/_dialog.scss +1 -0
- package/src/sass/components/_empty-state.scss +78 -0
- package/src/sass/components/_expanding-card.scss +3 -0
- package/src/sass/components/_heatmap-chart.scss +156 -0
- package/src/sass/components/_index.scss +27 -0
- package/src/sass/components/_kpi.scss +162 -0
- package/src/sass/components/_line-chart.scss +102 -0
- package/src/sass/components/_marquee.scss +111 -0
- package/src/sass/components/_menu.scss +10 -0
- package/src/sass/components/_message-scroller.scss +66 -0
- package/src/sass/components/_message.scss +202 -0
- package/src/sass/components/_mixed-chart.scss +157 -0
- package/src/sass/components/_navbar.scss +11 -6
- package/src/sass/components/_navigation-bar.scss +1 -0
- package/src/sass/components/_navigation-rail.scss +9 -0
- package/src/sass/components/_page-footer.scss +0 -11
- package/src/sass/components/_pie-chart.scss +203 -0
- package/src/sass/components/_popover.scss +112 -0
- package/src/sass/components/_progress.scss +25 -6
- package/src/sass/components/_questionnaire.scss +144 -0
- package/src/sass/components/_radar-chart.scss +205 -0
- package/src/sass/components/_radial-chart.scss +174 -0
- package/src/sass/components/_rich-text-editor.scss +99 -0
- package/src/sass/components/_search.scss +1 -0
- package/src/sass/components/_side-sheet.scss +1 -0
- package/src/sass/components/_skeleton.scss +81 -0
- package/src/sass/components/_snackbar.scss +2 -1
- package/src/sass/components/_stat.scss +86 -0
- package/src/sass/components/_stepper.scss +190 -0
- package/src/sass/components/_timeline.scss +114 -0
- package/src/sass/components/_timepicker.scss +2 -2
- package/src/sass/components/_toolbar.scss +2 -1
- package/src/sass/components/_tooltip.scss +2 -0
- package/src/sass/components/_tree.scss +139 -0
- package/src/sass/components/forms/_checkboxes.scss +2 -2
- package/src/sass/components/forms/_drop-zone.scss +128 -0
- package/src/sass/components/forms/_index.scss +2 -0
- package/src/sass/components/forms/_input-fields.scss +166 -15
- package/src/sass/components/forms/_radio-buttons.scss +2 -2
- package/src/sass/components/forms/_rating.scss +165 -0
- package/src/sass/components/forms/_slider.scss +51 -29
- package/src/sass/components/forms/_switches.scss +3 -3
- package/src/sass/tokens/_reference.scss +3 -15
- package/src/sass/utilities/_helpers.scss +14 -0
- package/src/sass/utilities/_index.scss +2 -0
- package/src/sass/utilities/_scroll-area.scss +35 -0
- package/src/sass/utilities/_shapes.scss +164 -0
- package/src/sass/utilities/_spacing.scss +29 -23
- package/src/sass/utilities/_visibility.scss +3 -2
- package/dist/js/chunks/chunk-74N6U5JJ.mjs.map +0 -7
- package/dist/js/chunks/chunk-7GKXUG4B.mjs.map +0 -7
- package/dist/js/chunks/chunk-AYYYWUJ4.mjs.map +0 -7
- package/dist/js/chunks/chunk-CDW6WIRT.mjs.map +0 -7
- package/dist/js/chunks/chunk-D4UZ4HFN.mjs.map +0 -7
- package/dist/js/chunks/chunk-EP3CVKB5.mjs.map +0 -7
- package/dist/js/chunks/chunk-GY2Z5CJ2.mjs.map +0 -7
- package/dist/js/chunks/chunk-I5KR22BY.mjs.map +0 -7
- package/dist/js/chunks/chunk-JKNPQQWY.mjs.map +0 -7
- package/dist/js/chunks/chunk-JODJAGFS.mjs.map +0 -7
- package/dist/js/chunks/chunk-JR24UB4X.mjs +0 -100
- package/dist/js/chunks/chunk-JR24UB4X.mjs.map +0 -7
- package/dist/js/chunks/chunk-LZVBJ33S.mjs.map +0 -7
- package/dist/js/chunks/chunk-PMBPAFAS.mjs +0 -7
- package/dist/js/chunks/chunk-PMBPAFAS.mjs.map +0 -7
- package/dist/js/chunks/chunk-TK6PX2GC.mjs.map +0 -7
- package/dist/js/chunks/chunk-WWPAPHMA.mjs +0 -1
- /package/dist/js/chunks/{chunk-IMUPRRI6.mjs.map → chunk-3VOK6J7U.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-A3BJA7V4.mjs.map → chunk-6WLSDZ4O.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-KR44BSYQ.mjs.map → chunk-DLWYKFEI.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-SLFNPY5M.mjs.map → chunk-EC63CHXU.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-WWPAPHMA.mjs.map → chunk-NQLC3YMW.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-VAS6JQ6P.mjs.map → chunk-PIJ2TAR3.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-PIIAEYAJ.mjs.map → chunk-QDAL4IYN.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-FRB7TOCS.mjs.map → chunk-QV2JAWIZ.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-N3UHGN3N.mjs.map → chunk-QVVEWBOF.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-TYM6U5DY.mjs.map → chunk-UAEAQBRC.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-7UXHSYIA.mjs.map → chunk-UBLRRJ7N.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-JNPIWFJT.mjs.map → chunk-UNEMYWEW.mjs.map} +0 -0
- /package/dist/js/chunks/{chunk-XO5WX3TK.mjs.map → chunk-YDCS5S3J.mjs.map} +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
@use "../abstracts" as *;
|
|
2
|
+
|
|
3
|
+
// Mixed chart. The same <figure>, <figcaption> and <table> as a line
|
|
4
|
+
// chart; MixedChart draws each series by its header cell's class: `column`
|
|
5
|
+
// as columns from zero, `area` as a line over a fading fill, and anything
|
|
6
|
+
// else as a line. `dashed` dashes a line. A series with `end` is drawn
|
|
7
|
+
// against a second scale, set by data-end-min and data-end-max on the
|
|
8
|
+
// figure. The plot, tooltip, labels and legend come from chart().
|
|
9
|
+
//
|
|
10
|
+
// Columns are full-height spans clipped to their value, as in the column
|
|
11
|
+
// chart, behind an SVG of the lines and areas, as in the line chart.
|
|
12
|
+
// Points on the cursor mark each line; the cursor bands the whole row.
|
|
13
|
+
//
|
|
14
|
+
// Tokens:
|
|
15
|
+
// --md-comp-mixed-chart-height 240px (sparkline 48px)
|
|
16
|
+
// --md-comp-mixed-chart-column-width 50% of each row's width
|
|
17
|
+
// --md-comp-mixed-chart-shape 4px, the column's end radius
|
|
18
|
+
// --md-comp-mixed-chart-line-width 3px (sparkline 2px)
|
|
19
|
+
// --md-comp-mixed-chart-grid-color outline-variant
|
|
20
|
+
// --md-comp-mixed-chart-color-1..4 primary, tertiary, secondary,
|
|
21
|
+
// on-surface-variant
|
|
22
|
+
|
|
23
|
+
@include chart("mixed-chart");
|
|
24
|
+
|
|
25
|
+
.mixed-chart {
|
|
26
|
+
--md-comp-mixed-chart-column-width: 50%;
|
|
27
|
+
--md-comp-mixed-chart-shape: 4px;
|
|
28
|
+
--md-comp-mixed-chart-line-width: 3px;
|
|
29
|
+
|
|
30
|
+
&.sparkline {
|
|
31
|
+
--md-comp-mixed-chart-line-width: 2px;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.mixed-chart-plot {
|
|
36
|
+
isolation: isolate;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.mixed-chart-marks,
|
|
40
|
+
.mixed-chart-marks > * {
|
|
41
|
+
position: absolute;
|
|
42
|
+
inset: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.mixed-chart-marks > svg {
|
|
46
|
+
width: 100%;
|
|
47
|
+
height: 100%;
|
|
48
|
+
overflow: visible;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.mixed-chart-columns {
|
|
52
|
+
display: grid;
|
|
53
|
+
grid-auto-columns: minmax(0, 1fr);
|
|
54
|
+
grid-auto-flow: column;
|
|
55
|
+
|
|
56
|
+
// A row: its columns side by side.
|
|
57
|
+
> div {
|
|
58
|
+
display: grid;
|
|
59
|
+
grid-auto-columns: minmax(0, 1fr);
|
|
60
|
+
grid-auto-flow: column;
|
|
61
|
+
gap: 2px;
|
|
62
|
+
justify-self: center;
|
|
63
|
+
width: var(--md-comp-mixed-chart-column-width);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
> div > span {
|
|
67
|
+
--mixed-chart-ends: var(--md-comp-mixed-chart-shape) var(--md-comp-mixed-chart-shape) 0 0;
|
|
68
|
+
|
|
69
|
+
background-color: var(--mixed-chart-color);
|
|
70
|
+
clip-path: inset(var(--top, 100%) 0 var(--bottom, 0%) round var(--mixed-chart-ends));
|
|
71
|
+
|
|
72
|
+
// A column below zero has its tip at the bottom.
|
|
73
|
+
&.negative {
|
|
74
|
+
--mixed-chart-ends: 0 0 var(--md-comp-mixed-chart-shape) var(--md-comp-mixed-chart-shape);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
79
|
+
> div > span {
|
|
80
|
+
transition: clip-path 400ms cubic-bezier(0.2, 0, 0, 1);
|
|
81
|
+
|
|
82
|
+
@starting-style {
|
|
83
|
+
clip-path: inset(var(--zero, 100%) 0 calc(100% - var(--zero, 100%)) round var(--mixed-chart-ends));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.mixed-chart-line {
|
|
90
|
+
fill: none;
|
|
91
|
+
stroke: var(--mixed-chart-color);
|
|
92
|
+
stroke-width: var(--md-comp-mixed-chart-line-width);
|
|
93
|
+
stroke-linecap: round;
|
|
94
|
+
stroke-linejoin: round;
|
|
95
|
+
vector-effect: non-scaling-stroke;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.mixed-chart-series.dashed .mixed-chart-line {
|
|
99
|
+
stroke-dasharray: 2 8;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.mixed-chart-series:not(.area) .mixed-chart-area {
|
|
103
|
+
display: none;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.mixed-chart-series stop {
|
|
107
|
+
stop-color: var(--mixed-chart-color);
|
|
108
|
+
stop-opacity: 0;
|
|
109
|
+
|
|
110
|
+
&:first-child {
|
|
111
|
+
stop-opacity: 0.24;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// A band behind the highlighted row, with a point over each line. The
|
|
116
|
+
// cursor makes no stacking context, so the band can go behind the marks
|
|
117
|
+
// and the points in front of them.
|
|
118
|
+
.mixed-chart-cursor {
|
|
119
|
+
width: calc(100% / var(--rows, 1));
|
|
120
|
+
margin-left: calc(-50% / var(--rows, 1));
|
|
121
|
+
|
|
122
|
+
&::before {
|
|
123
|
+
content: "";
|
|
124
|
+
position: absolute;
|
|
125
|
+
inset: 0;
|
|
126
|
+
z-index: -1;
|
|
127
|
+
border-radius: var(--md-comp-mixed-chart-shape);
|
|
128
|
+
background-color: color-mix(in srgb, var(--md-sys-color-on-surface) state-opacity("hover"), transparent);
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
> span {
|
|
132
|
+
position: absolute;
|
|
133
|
+
left: 50%;
|
|
134
|
+
z-index: 1;
|
|
135
|
+
width: 10px;
|
|
136
|
+
height: 10px;
|
|
137
|
+
border: 2px solid var(--md-sys-color-surface);
|
|
138
|
+
border-radius: 50%;
|
|
139
|
+
background-color: var(--mixed-chart-color);
|
|
140
|
+
translate: -50% -50%;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
> .column {
|
|
144
|
+
display: none;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
@media (forced-colors: active) {
|
|
149
|
+
.mixed-chart-columns > div > span,
|
|
150
|
+
.mixed-chart-cursor > span {
|
|
151
|
+
forced-color-adjust: none;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.mixed-chart-cursor::before {
|
|
155
|
+
outline: 1px solid CanvasText;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -53,7 +53,7 @@ $_heading: ":is(h1, h2, h3, h4, h5, h6)";
|
|
|
53
53
|
$_title: ":is(#{$_heading}, hgroup)";
|
|
54
54
|
$_search: ":is(.search-bar, .searchbar)";
|
|
55
55
|
|
|
56
|
-
header:has(>
|
|
56
|
+
header:has(> #{$_bar}) {
|
|
57
57
|
--md-comp-top-app-bar-container-color: var(--md-sys-color-surface);
|
|
58
58
|
--md-comp-top-app-bar-scrolled-container-color: var(--md-sys-color-surface-container);
|
|
59
59
|
--md-comp-top-app-bar-headline-color: var(--md-sys-color-on-surface);
|
|
@@ -494,14 +494,19 @@ header.large.collapsed:has(> #{$_bar}) > #{$_bar} {
|
|
|
494
494
|
// from the body (M3 Expressive). The animation only drives the mix
|
|
495
495
|
// progress; a utility class on the header sets background-color itself
|
|
496
496
|
// and is not overwritten. Without animation-timeline the bar stays at
|
|
497
|
-
// rest (surface), the spec default.
|
|
498
|
-
|
|
497
|
+
// rest (surface), the spec default. The @supports guard is load-bearing: an
|
|
498
|
+
// engine that drops animation-timeline runs a 0s animation instead, and
|
|
499
|
+
// fill-mode both holds the scrolled keyframe from the first frame.
|
|
500
|
+
header:has(> #{$_bar}) {
|
|
499
501
|
position: sticky;
|
|
500
502
|
top: 0;
|
|
501
503
|
z-index: 997;
|
|
502
|
-
|
|
503
|
-
animation-timeline: scroll(
|
|
504
|
-
|
|
504
|
+
|
|
505
|
+
@supports (animation-timeline: scroll()) {
|
|
506
|
+
animation: top-app-bar-scroll linear both;
|
|
507
|
+
animation-timeline: scroll(root);
|
|
508
|
+
animation-range: 0 8px;
|
|
509
|
+
}
|
|
505
510
|
}
|
|
506
511
|
|
|
507
512
|
@keyframes top-app-bar-scroll {
|
|
@@ -47,6 +47,7 @@
|
|
|
47
47
|
padding-bottom: max(6px, env(safe-area-inset-bottom, 0px));
|
|
48
48
|
background-color: var(--md-comp-nav-bar-container-color);
|
|
49
49
|
color: var(--md-sys-color-on-surface);
|
|
50
|
+
@include glass(var(--md-comp-nav-bar-container-color));
|
|
50
51
|
|
|
51
52
|
> :is(a, button) {
|
|
52
53
|
position: relative;
|
|
@@ -57,6 +57,7 @@
|
|
|
57
57
|
transition: width var(--md-comp-nav-rail-duration) ease,
|
|
58
58
|
min-width var(--md-comp-nav-rail-duration) ease,
|
|
59
59
|
padding var(--md-comp-nav-rail-duration) ease;
|
|
60
|
+
@include glass(var(--md-sys-color-surface-container));
|
|
60
61
|
|
|
61
62
|
// Menu toggle.
|
|
62
63
|
> button:not(.button, .icon-button):first-child {
|
|
@@ -282,6 +283,11 @@
|
|
|
282
283
|
z-index: 998;
|
|
283
284
|
@include z-depth("1");
|
|
284
285
|
|
|
286
|
+
// A blurred rail would become the containing block of the fixed scrim
|
|
287
|
+
// below and clip it to the rail, so a modal rail stays solid.
|
|
288
|
+
background-color: var(--md-sys-color-surface-container);
|
|
289
|
+
backdrop-filter: none;
|
|
290
|
+
|
|
285
291
|
&::before {
|
|
286
292
|
content: "";
|
|
287
293
|
position: fixed;
|
|
@@ -298,6 +304,9 @@
|
|
|
298
304
|
z-index: 998;
|
|
299
305
|
@include z-depth("1");
|
|
300
306
|
|
|
307
|
+
background-color: var(--md-sys-color-surface-container);
|
|
308
|
+
backdrop-filter: none;
|
|
309
|
+
|
|
301
310
|
&::before {
|
|
302
311
|
content: "";
|
|
303
312
|
position: fixed;
|
|
@@ -140,14 +140,3 @@ footer:not(:has(> nav:only-child)) > .container > small:last-child {
|
|
|
140
140
|
}
|
|
141
141
|
}
|
|
142
142
|
|
|
143
|
-
// Sticky: pin the footer to the bottom of a short page. Only when the
|
|
144
|
-
// landmark is a direct child of body — not a footer nested in a demo.
|
|
145
|
-
body:has(> footer:not(:has(> nav:only-child))) {
|
|
146
|
-
min-height: 100dvh;
|
|
147
|
-
display: flex;
|
|
148
|
-
flex-direction: column;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
body:has(> footer:not(:has(> nav:only-child))) > main {
|
|
152
|
-
flex: 1 0 auto;
|
|
153
|
-
}
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
@use "../abstracts" as *;
|
|
2
|
+
|
|
3
|
+
// Pie chart. The same <figure>, <figcaption> and <table> as a line chart;
|
|
4
|
+
// PieChart draws the first value column as slices of the whole, clockwise
|
|
5
|
+
// from the top, with a legend of every row, its cell and its share. The
|
|
6
|
+
// plot, tooltip and legend swatches come from chart(); the plot is a square
|
|
7
|
+
// as wide as --md-comp-pie-chart-height.
|
|
8
|
+
//
|
|
9
|
+
// The slices are SVG in a -50 to 50 box with a radius of 46, under a mask
|
|
10
|
+
// whose lines cut the gaps and whose circle, scaled here, cuts the donut's
|
|
11
|
+
// hole. The value labels and the tooltip sit on a slice's middle from the
|
|
12
|
+
// --turn PieChart sets, a fraction of a turn clockwise from the top.
|
|
13
|
+
//
|
|
14
|
+
// Modifiers: .donut cuts a hole and shows a <tfoot> total in it, .values
|
|
15
|
+
// writes each slice's share on it, .sparkline is a small pie with no
|
|
16
|
+
// legend or tooltip.
|
|
17
|
+
//
|
|
18
|
+
// Tokens:
|
|
19
|
+
// --md-comp-pie-chart-height 240px, the pie's diameter (sparkline 48px)
|
|
20
|
+
// --md-comp-pie-chart-hole 0.6, the donut hole's share of the diameter
|
|
21
|
+
// --md-comp-pie-chart-gap 1.5, the gap between slices in hundredths
|
|
22
|
+
// of the plot's width
|
|
23
|
+
// --md-comp-pie-chart-color-1..6 primary, tertiary, secondary,
|
|
24
|
+
// on-surface-variant, primary-container,
|
|
25
|
+
// tertiary-container
|
|
26
|
+
// --md-comp-pie-chart-on-color-1..6 on-primary, on-tertiary, on-secondary,
|
|
27
|
+
// surface, on-primary-container,
|
|
28
|
+
// on-tertiary-container; .values text
|
|
29
|
+
|
|
30
|
+
@include chart("pie-chart");
|
|
31
|
+
|
|
32
|
+
.pie-chart {
|
|
33
|
+
--md-comp-pie-chart-hole: 0.6;
|
|
34
|
+
--md-comp-pie-chart-gap: 1.5;
|
|
35
|
+
--md-comp-pie-chart-color-5: var(--md-sys-color-primary-container);
|
|
36
|
+
--md-comp-pie-chart-color-6: var(--md-sys-color-tertiary-container);
|
|
37
|
+
--md-comp-pie-chart-on-color-1: var(--md-sys-color-on-primary);
|
|
38
|
+
--md-comp-pie-chart-on-color-2: var(--md-sys-color-on-tertiary);
|
|
39
|
+
--md-comp-pie-chart-on-color-3: var(--md-sys-color-on-secondary);
|
|
40
|
+
--md-comp-pie-chart-on-color-4: var(--md-sys-color-surface);
|
|
41
|
+
--md-comp-pie-chart-on-color-5: var(--md-sys-color-on-primary-container);
|
|
42
|
+
--md-comp-pie-chart-on-color-6: var(--md-sys-color-on-tertiary-container);
|
|
43
|
+
// Where labels and the tooltip sit, as a share of the radius.
|
|
44
|
+
--pie-chart-label-at: 0.62;
|
|
45
|
+
|
|
46
|
+
gap: 16px;
|
|
47
|
+
|
|
48
|
+
&.donut {
|
|
49
|
+
// The middle of the ring.
|
|
50
|
+
--pie-chart-label-at: calc((1 + var(--md-comp-pie-chart-hole)) / 2);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
@for $i from 1 through 6 {
|
|
55
|
+
.pie-chart [data-series="#{$i}"] {
|
|
56
|
+
--pie-chart-color: var(--md-comp-pie-chart-color-#{$i});
|
|
57
|
+
--pie-chart-on-color: var(--md-comp-pie-chart-on-color-#{$i});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.pie-chart-plot {
|
|
62
|
+
width: min(100%, var(--md-comp-pie-chart-height));
|
|
63
|
+
height: auto;
|
|
64
|
+
aspect-ratio: 1;
|
|
65
|
+
margin-inline: auto;
|
|
66
|
+
border: 0;
|
|
67
|
+
border-radius: 50%;
|
|
68
|
+
background: none;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.pie-chart-pie {
|
|
72
|
+
position: absolute;
|
|
73
|
+
inset: 0;
|
|
74
|
+
|
|
75
|
+
> svg {
|
|
76
|
+
display: block;
|
|
77
|
+
width: 100%;
|
|
78
|
+
height: 100%;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// The origin of an SVG transform is the box's middle, (0, 0).
|
|
83
|
+
.pie-chart-hole {
|
|
84
|
+
transform: scale(0);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
.pie-chart.donut .pie-chart-hole {
|
|
88
|
+
transform: scale(var(--md-comp-pie-chart-hole));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
.pie-chart-gaps {
|
|
92
|
+
stroke-width: var(--md-comp-pie-chart-gap);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.pie-chart-slice {
|
|
96
|
+
fill: var(--pie-chart-color);
|
|
97
|
+
|
|
98
|
+
// GROWN in pieChart.ts.
|
|
99
|
+
&.active {
|
|
100
|
+
transform: scale(1.06);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
104
|
+
transition: transform 200ms cubic-bezier(0.2, 0, 0, 1), opacity 400ms cubic-bezier(0.2, 0, 0, 1);
|
|
105
|
+
|
|
106
|
+
@starting-style {
|
|
107
|
+
opacity: 0;
|
|
108
|
+
transform: scale(0.8);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
.pie-chart-values > span,
|
|
114
|
+
.pie-chart-tooltip {
|
|
115
|
+
--pie-chart-angle: calc(var(--turn, 0) * 1turn);
|
|
116
|
+
|
|
117
|
+
position: absolute;
|
|
118
|
+
left: calc(50% + sin(var(--pie-chart-angle)) * var(--pie-chart-label-at) * 46%);
|
|
119
|
+
top: calc(50% - cos(var(--pie-chart-angle)) * var(--pie-chart-label-at) * 46%);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
.pie-chart-values > span {
|
|
123
|
+
translate: -50% -50%;
|
|
124
|
+
color: var(--pie-chart-on-color);
|
|
125
|
+
@include typescale("label-medium");
|
|
126
|
+
font-variant-numeric: tabular-nums;
|
|
127
|
+
white-space: nowrap;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.pie-chart-tooltip {
|
|
131
|
+
translate: 12px -50%;
|
|
132
|
+
|
|
133
|
+
&.end {
|
|
134
|
+
translate: calc(-100% - 12px) -50%;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.pie-chart-total {
|
|
139
|
+
position: absolute;
|
|
140
|
+
inset: 0;
|
|
141
|
+
display: none;
|
|
142
|
+
flex-direction: column;
|
|
143
|
+
align-items: center;
|
|
144
|
+
justify-content: center;
|
|
145
|
+
text-align: center;
|
|
146
|
+
|
|
147
|
+
> * {
|
|
148
|
+
max-width: calc(80% * var(--md-comp-pie-chart-hole));
|
|
149
|
+
overflow-wrap: anywhere;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
> strong {
|
|
153
|
+
color: var(--md-sys-color-on-surface);
|
|
154
|
+
@include typescale("headline-small");
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
> span {
|
|
158
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
159
|
+
@include typescale("body-small");
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.pie-chart.donut .pie-chart-total {
|
|
164
|
+
display: flex;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// One row per slice: swatch, name, cell and share in aligned columns.
|
|
168
|
+
.pie-chart-legend {
|
|
169
|
+
display: grid;
|
|
170
|
+
grid-template-columns: auto minmax(0, 1fr) auto auto;
|
|
171
|
+
align-items: center;
|
|
172
|
+
gap: 8px;
|
|
173
|
+
|
|
174
|
+
> li {
|
|
175
|
+
display: contents;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
> li > span:first-child {
|
|
179
|
+
overflow: hidden;
|
|
180
|
+
text-overflow: ellipsis;
|
|
181
|
+
white-space: nowrap;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
> li > span:not(:first-child) {
|
|
185
|
+
text-align: end;
|
|
186
|
+
font-variant-numeric: tabular-nums;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
> li > span:nth-child(2) {
|
|
190
|
+
color: var(--md-sys-color-on-surface);
|
|
191
|
+
font-weight: 500;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
.pie-chart.sparkline .pie-chart-plot {
|
|
196
|
+
margin-inline: 0;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@media (forced-colors: active) {
|
|
200
|
+
.pie-chart-pie {
|
|
201
|
+
forced-color-adjust: none;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
@use "../abstracts" as *;
|
|
2
|
+
|
|
3
|
+
// Popover. A .popover is a native [popover] panel opened by the button that
|
|
4
|
+
// names it with popovertarget (or commandfor). The browser owns opening,
|
|
5
|
+
// light dismiss, Escape, the top layer and the button's expanded state; CSS
|
|
6
|
+
// anchor positioning places the panel against that button, so there is no
|
|
7
|
+
// JavaScript.
|
|
8
|
+
//
|
|
9
|
+
// It looks like an M3 rich tooltip, but it is a disclosure: it opens on
|
|
10
|
+
// press, stays open while the user reads or acts, and can hold links and
|
|
11
|
+
// buttons. A small one behind an info button is a toggletip.
|
|
12
|
+
//
|
|
13
|
+
// Placement (the panel flips to the other side when it would not fit):
|
|
14
|
+
// (default) below, start edges aligned
|
|
15
|
+
// .top above, start edges aligned
|
|
16
|
+
// .start before the button, centered on it
|
|
17
|
+
// .end after the button, centered on it
|
|
18
|
+
//
|
|
19
|
+
// Tokens:
|
|
20
|
+
// --md-comp-popover-container-color surface-container
|
|
21
|
+
// --md-comp-popover-shape 12px
|
|
22
|
+
// --md-comp-popover-padding 12px 16px
|
|
23
|
+
// --md-comp-popover-max-width 320px
|
|
24
|
+
// --md-comp-popover-gap 4px (from the button)
|
|
25
|
+
|
|
26
|
+
.popover {
|
|
27
|
+
--md-comp-popover-container-color: var(--md-sys-color-surface-container);
|
|
28
|
+
--md-comp-popover-shape: 12px;
|
|
29
|
+
--md-comp-popover-padding: 12px 16px;
|
|
30
|
+
--md-comp-popover-max-width: 320px;
|
|
31
|
+
--md-comp-popover-gap: 4px;
|
|
32
|
+
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
width: max-content;
|
|
35
|
+
max-width: min(var(--md-comp-popover-max-width), calc(100vw - 16px));
|
|
36
|
+
inset: auto;
|
|
37
|
+
margin: var(--md-comp-popover-gap) 0;
|
|
38
|
+
padding: var(--md-comp-popover-padding);
|
|
39
|
+
overflow: visible;
|
|
40
|
+
border: 0;
|
|
41
|
+
border-radius: var(--md-comp-popover-shape);
|
|
42
|
+
background-color: var(--md-comp-popover-container-color);
|
|
43
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
44
|
+
@include z-depth("2");
|
|
45
|
+
@include typescale("body-medium");
|
|
46
|
+
|
|
47
|
+
position-area: block-end span-inline-end;
|
|
48
|
+
position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
|
|
49
|
+
|
|
50
|
+
opacity: 0;
|
|
51
|
+
transition:
|
|
52
|
+
opacity 150ms ease-out,
|
|
53
|
+
display 150ms allow-discrete,
|
|
54
|
+
overlay 150ms allow-discrete;
|
|
55
|
+
@include glass(var(--md-comp-popover-container-color));
|
|
56
|
+
|
|
57
|
+
&:popover-open {
|
|
58
|
+
opacity: 1;
|
|
59
|
+
|
|
60
|
+
@starting-style {
|
|
61
|
+
opacity: 0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&.top {
|
|
66
|
+
position-area: block-start span-inline-end;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
&.start,
|
|
70
|
+
&.end {
|
|
71
|
+
margin: 0 var(--md-comp-popover-gap);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
&.start {
|
|
75
|
+
position-area: center inline-start;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
&.end {
|
|
79
|
+
position-area: center inline-end;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
> :is(h1, h2, h3, h4, h5, h6) {
|
|
83
|
+
margin: 0 0 4px;
|
|
84
|
+
color: var(--md-sys-color-on-surface-variant);
|
|
85
|
+
@include typescale("title-small");
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
> p {
|
|
89
|
+
margin: 0;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
> p + p {
|
|
93
|
+
margin-block-start: 8px;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// Text buttons carry their own inset, so the row starts under the text.
|
|
97
|
+
> .popover-actions {
|
|
98
|
+
display: flex;
|
|
99
|
+
flex-wrap: wrap;
|
|
100
|
+
gap: 8px;
|
|
101
|
+
margin: 12px 0 -4px;
|
|
102
|
+
margin-inline-start: -12px;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
@media (prefers-reduced-motion: reduce) {
|
|
106
|
+
transition: none;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
@media (forced-colors: active) {
|
|
110
|
+
border: 1px solid CanvasText;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
// --md-comp-progress-circular-thickness 4px
|
|
19
19
|
|
|
20
20
|
// M3 names this component "Progress indicators", linear and circular. The
|
|
21
|
-
// class is `.progress`; `.preloader` is the
|
|
21
|
+
// class is `.progress`; `.preloader` is the older name for the circular
|
|
22
22
|
// one and stays as an alias, as does `.progress.circular`.
|
|
23
23
|
.progress,
|
|
24
24
|
.preloader {
|
|
@@ -71,12 +71,24 @@ progress.progress {
|
|
|
71
71
|
border-radius: var(--md-comp-progress-shape);
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
74
|
+
// Firefox draws no ::before/::after on <progress> and paints the track as the
|
|
75
|
+
// element's own background, so its indeterminate bar is the native one. It
|
|
76
|
+
// places that bar from the physical left and reads only margin-left, which is
|
|
77
|
+
// margin-inline-end in RTL, so both inline margins move. Keep this out of any
|
|
78
|
+
// -webkit- selector list: Chromium drops a list naming a pseudo-element it
|
|
79
|
+
// does not know.
|
|
75
80
|
&:indeterminate::-moz-progress-bar {
|
|
76
|
-
|
|
81
|
+
width: 40%;
|
|
82
|
+
margin-inline-end: 60%;
|
|
83
|
+
animation: progress-indeterminate-moz 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;
|
|
77
84
|
}
|
|
78
85
|
}
|
|
79
86
|
|
|
87
|
+
@keyframes progress-indeterminate-moz {
|
|
88
|
+
from { margin-inline-start: -40%; margin-inline-end: 100%; }
|
|
89
|
+
to { margin-inline-start: 100%; margin-inline-end: -40%; }
|
|
90
|
+
}
|
|
91
|
+
|
|
80
92
|
.progress > .determinate {
|
|
81
93
|
position: absolute;
|
|
82
94
|
inset-block: 0;
|
|
@@ -107,10 +119,12 @@ progress.progress {
|
|
|
107
119
|
}
|
|
108
120
|
}
|
|
109
121
|
|
|
110
|
-
.progress > .indeterminate
|
|
111
|
-
progress.progress:indeterminate {
|
|
122
|
+
.progress > .indeterminate {
|
|
112
123
|
background-color: transparent;
|
|
124
|
+
}
|
|
113
125
|
|
|
126
|
+
.progress > .indeterminate,
|
|
127
|
+
progress.progress:indeterminate {
|
|
114
128
|
&::before,
|
|
115
129
|
&::after {
|
|
116
130
|
content: "";
|
|
@@ -147,7 +161,7 @@ progress.progress:indeterminate {
|
|
|
147
161
|
// ---------------------------------------------------------------------------
|
|
148
162
|
|
|
149
163
|
// The circular indicator. `.progress.circular` is the M3-aligned name;
|
|
150
|
-
// `.preloader`
|
|
164
|
+
// `.preloader` remains a compatibility alias.
|
|
151
165
|
:is(.preloader, .progress.circular) {
|
|
152
166
|
box-sizing: border-box;
|
|
153
167
|
display: inline-block;
|
|
@@ -218,6 +232,7 @@ progress.progress:indeterminate {
|
|
|
218
232
|
progress.progress:indeterminate::-moz-progress-bar {
|
|
219
233
|
background-color: CanvasText;
|
|
220
234
|
width: 40%;
|
|
235
|
+
animation: none;
|
|
221
236
|
}
|
|
222
237
|
|
|
223
238
|
:is(.preloader, .progress.circular) {
|
|
@@ -254,4 +269,8 @@ progress.progress:indeterminate {
|
|
|
254
269
|
.preloader {
|
|
255
270
|
transform: none;
|
|
256
271
|
}
|
|
272
|
+
|
|
273
|
+
progress.progress:indeterminate::-moz-progress-bar {
|
|
274
|
+
animation: none;
|
|
275
|
+
}
|
|
257
276
|
}
|