@expressivecss/expressive 0.3.0 → 0.5.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 +96 -0
- package/README.md +4 -9
- package/dist/css/expressive.css +3183 -2150
- 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/expressive.cjs +1254 -1567
- package/dist/js/expressive.cjs.map +4 -4
- package/dist/js/expressive.js +1254 -1567
- package/dist/js/expressive.js.map +4 -4
- package/dist/js/expressive.min.js +12 -22
- package/dist/js/expressive.min.js.map +4 -4
- package/dist/js/expressive.mjs +1254 -1568
- package/dist/js/expressive.mjs.map +4 -4
- package/dist/types/behaviors/bottomSheets.d.ts +18 -0
- package/dist/types/behaviors/sideSheets.d.ts +18 -0
- package/dist/types/components/autocomplete.d.ts +13 -20
- package/dist/types/components/buttons.d.ts +2 -2
- package/dist/types/components/cards.d.ts +3 -6
- package/dist/types/components/carousel.d.ts +3 -3
- package/dist/types/components/characterCounter.d.ts +3 -5
- package/dist/types/components/chips.d.ts +2 -2
- package/dist/types/components/datepicker.d.ts +2 -8
- package/dist/types/components/index.d.ts +3 -6
- package/dist/types/components/lightbox.d.ts +2 -2
- package/dist/types/components/{dropdown.d.ts → menu.d.ts} +48 -38
- package/dist/types/components/navigationRail.d.ts +53 -0
- package/dist/types/components/parallax.d.ts +2 -8
- package/dist/types/components/range.d.ts +5 -2
- package/dist/types/components/registry.d.ts +7 -19
- package/dist/types/components/scrollspy.d.ts +26 -50
- package/dist/types/components/select.d.ts +28 -14
- package/dist/types/components/sidenav.d.ts +40 -55
- package/dist/types/components/slider.d.ts +2 -2
- package/dist/types/components/{toasts.d.ts → snackbar.d.ts} +28 -25
- package/dist/types/components/tabs.d.ts +2 -2
- package/dist/types/components/timepicker.d.ts +2 -4
- package/dist/types/components/tooltip.d.ts +2 -2
- package/dist/types/core/component.d.ts +4 -4
- package/dist/types/index.d.ts +3 -1
- package/package.json +4 -3
- package/src/sass/README.md +13 -15
- package/src/sass/abstracts/_breakpoints.scss +14 -19
- package/src/sass/abstracts/_mixins.scss +3 -3
- package/src/sass/abstracts/_variables.scss +27 -23
- package/src/sass/base/_global.scss +1 -1
- package/src/sass/base/_grid.scss +64 -133
- package/src/sass/base/_index.scss +1 -1
- package/src/sass/components/_badges.scss +76 -61
- package/src/sass/components/_bottom-sheet.scss +137 -0
- package/src/sass/components/_buttons.scss +22 -54
- package/src/sass/components/_cards.scss +54 -127
- package/src/sass/components/_carousel.scss +4 -6
- package/src/sass/components/_chips.scss +6 -5
- package/src/sass/components/_datepicker.scss +1 -15
- package/src/sass/components/_dialog.scss +268 -0
- package/src/sass/components/_index.scss +9 -7
- package/src/sass/components/_list.scss +253 -0
- package/src/sass/components/_menu.scss +341 -0
- package/src/sass/components/_navbar.scss +68 -117
- package/src/sass/components/_navigation-bar.scss +165 -0
- package/src/sass/components/_navigation-rail.scss +308 -0
- package/src/sass/components/_page-footer.scss +138 -15
- package/src/sass/components/_parallax.scss +7 -28
- package/src/sass/components/_preloader.scss +145 -300
- package/src/sass/components/_scrollspy.scss +18 -0
- package/src/sass/components/_side-sheet.scss +193 -0
- package/src/sass/components/_sidenav.scss +281 -146
- package/src/sass/components/{_toast.scss → _snackbar.scss} +43 -43
- package/src/sass/components/_table_of_contents.scss +30 -14
- package/src/sass/components/_tabs.scss +43 -50
- package/src/sass/components/_toolbar.scss +93 -27
- package/src/sass/components/_tooltip.scss +5 -10
- package/src/sass/components/_transitions.scss +0 -5
- package/src/sass/components/forms/_fieldset.scss +1 -1
- package/src/sass/components/forms/_index.scss +0 -5
- package/src/sass/components/forms/_input-fields.scss +52 -55
- package/src/sass/components/forms/_range.scss +423 -98
- package/src/sass/components/forms/_select.scss +177 -60
- package/src/sass/components/forms/_switches.scss +21 -8
- package/src/sass/tokens/_reference.scss +37 -13
- package/src/sass/tokens/_theme.scss +5 -13
- package/src/sass/utilities/_colors.scss +16 -74
- package/src/sass/utilities/_helpers.scss +1 -3
- package/src/sass/utilities/_typescale.scss +0 -5
- package/src/sass/utilities/_visibility.scss +10 -2
- package/dist/types/components/collapsible.d.ts +0 -96
- package/dist/types/components/modal.d.ts +0 -45
- package/dist/types/components/pushpin.d.ts +0 -51
- package/dist/types/components/tapTarget.d.ts +0 -57
- package/src/sass/components/_collapsible.scss +0 -181
- package/src/sass/components/_collection.scss +0 -198
- package/src/sass/components/_dropdown.scss +0 -129
- package/src/sass/components/_modal.scss +0 -208
- package/src/sass/components/_pushpin.scss +0 -11
- package/src/sass/components/_tapTarget.scss +0 -191
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
// Common buttons and FABs.
|
|
4
4
|
//
|
|
5
|
-
// Anatomy is the HTML. A <button> (or <a class="button">
|
|
6
|
-
// common button. Put an <i> first or last for a leading/trailing icon
|
|
7
|
-
//
|
|
8
|
-
//
|
|
5
|
+
// Anatomy is the HTML. A <button> (or <a class="button">) is a filled
|
|
6
|
+
// common button. Put an <i> first or last for a leading/trailing icon.
|
|
7
|
+
// Icon-only is a 40dp icon button. Helpers switch the M3 variant
|
|
8
|
+
// (tonal, outlined, elevated, text) or the size.
|
|
9
9
|
//
|
|
10
10
|
// Tokens follow https://m3.material.io/components/buttons/specs
|
|
11
11
|
// height 40 / 32 small / 56 large, label-large, 20dp stadium
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
// Widget chrome that happens to be a <button> — not a common button.
|
|
29
29
|
$_not-btn: ".datepicker-day-button, .month-prev, .month-next, .indicator-item-btn";
|
|
30
30
|
|
|
31
|
-
$_btn: "button:not(#{$_not-btn}), a.button
|
|
31
|
+
$_btn: "button:not(#{$_not-btn}), a.button";
|
|
32
32
|
|
|
33
33
|
:where(#{$_btn}) {
|
|
34
34
|
@include btn;
|
|
@@ -69,7 +69,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
// Default variant is filled. :where() keeps specificity at zero so .tonal etc. win.
|
|
72
|
-
:where(#{$_btn}):not(.tonal, .outlined, .
|
|
72
|
+
:where(#{$_btn}):not(.tonal, .outlined, .elevated, .text) {
|
|
73
73
|
@include btn-filled;
|
|
74
74
|
}
|
|
75
75
|
|
|
@@ -77,8 +77,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
77
77
|
@include btn-tonal;
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
-
:where(#{$_btn}).outlined
|
|
81
|
-
:where(#{$_btn}).border {
|
|
80
|
+
:where(#{$_btn}).outlined {
|
|
82
81
|
@include btn-outlined;
|
|
83
82
|
}
|
|
84
83
|
|
|
@@ -86,20 +85,12 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
86
85
|
@include btn-elevated;
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
:where(#{$_btn}).text
|
|
90
|
-
:where(#{$_btn}).transparent,
|
|
91
|
-
.btn-flat {
|
|
88
|
+
:where(#{$_btn}).text {
|
|
92
89
|
@include btn-flat;
|
|
93
90
|
}
|
|
94
91
|
|
|
95
|
-
// icon-right is a compat alias: new markup puts the icon last in the DOM.
|
|
96
|
-
:where(#{$_btn}).icon-right {
|
|
97
|
-
flex-direction: row-reverse;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
92
|
// Sizes. small = 32dp, large/extra = 56dp (M3 extra-large / FAB height).
|
|
101
|
-
:where(#{$_btn}).small
|
|
102
|
-
.btn-small {
|
|
93
|
+
:where(#{$_btn}).small {
|
|
103
94
|
--md-comp-filled-button-container-height: 32px;
|
|
104
95
|
--md-comp-filled-button-container-shape: 16px;
|
|
105
96
|
--md-comp-filled-button-leading-space: 16px;
|
|
@@ -111,8 +102,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
111
102
|
}
|
|
112
103
|
|
|
113
104
|
:where(#{$_btn}).large,
|
|
114
|
-
:where(#{$_btn}).extra
|
|
115
|
-
.btn-large {
|
|
105
|
+
:where(#{$_btn}).extra {
|
|
116
106
|
--md-comp-filled-button-container-height: 56px;
|
|
117
107
|
--md-comp-filled-button-container-shape: 28px;
|
|
118
108
|
--md-comp-filled-button-leading-space: 24px;
|
|
@@ -126,11 +116,6 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
126
116
|
border-radius: 9999px;
|
|
127
117
|
}
|
|
128
118
|
|
|
129
|
-
.btn-block {
|
|
130
|
-
display: flex;
|
|
131
|
-
width: 100%;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
119
|
// Extended FAB: 56dp, large corners, primary-container, icon + label.
|
|
135
120
|
:where(#{$_btn}).extend {
|
|
136
121
|
height: 56px;
|
|
@@ -168,13 +153,10 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
168
153
|
}
|
|
169
154
|
}
|
|
170
155
|
|
|
171
|
-
// FAB.
|
|
172
|
-
//
|
|
173
|
-
// is the 40dp small FAB.
|
|
174
|
-
.btn-floating,
|
|
156
|
+
// FAB. Icon-only .extra / .large is the 56dp regular FAB. Add .small for
|
|
157
|
+
// the 40dp small FAB. The speed-dial host is .fixed-action-btn.
|
|
175
158
|
:where(#{$_btn}).extra.circle,
|
|
176
|
-
:where(#{$_btn}).large.circle
|
|
177
|
-
:where(#{$_btn}).btn-large.circle {
|
|
159
|
+
:where(#{$_btn}).large.circle {
|
|
178
160
|
display: inline-flex;
|
|
179
161
|
align-items: center;
|
|
180
162
|
justify-content: center;
|
|
@@ -191,7 +173,6 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
191
173
|
vertical-align: middle;
|
|
192
174
|
@include z-depth("3");
|
|
193
175
|
@include focus-visible;
|
|
194
|
-
transition: background-color .2s ease-out, box-shadow .2s ease-out;
|
|
195
176
|
|
|
196
177
|
> i {
|
|
197
178
|
font-size: 24px;
|
|
@@ -219,8 +200,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
219
200
|
);
|
|
220
201
|
}
|
|
221
202
|
|
|
222
|
-
&.small
|
|
223
|
-
&.btn-small {
|
|
203
|
+
&.small {
|
|
224
204
|
width: 40px;
|
|
225
205
|
height: 40px;
|
|
226
206
|
border-radius: 12px;
|
|
@@ -242,23 +222,9 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
242
222
|
}
|
|
243
223
|
}
|
|
244
224
|
|
|
245
|
-
// Small FAB alias: .btn-floating alone is 40dp (historical size + M3 small).
|
|
246
|
-
.btn-floating:not(.large, .btn-large, .extra, .small, .btn-small) {
|
|
247
|
-
width: 40px;
|
|
248
|
-
height: 40px;
|
|
249
|
-
border-radius: 12px;
|
|
250
|
-
|
|
251
|
-
&.halfway-fab {
|
|
252
|
-
bottom: -20px;
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
|
|
256
225
|
:where(#{$_btn}):disabled,
|
|
257
226
|
:where(#{$_btn})[disabled],
|
|
258
|
-
:where(#{$_btn}).disabled
|
|
259
|
-
.btn-floating:disabled,
|
|
260
|
-
.btn-floating[disabled],
|
|
261
|
-
.btn-floating.disabled {
|
|
227
|
+
:where(#{$_btn}).disabled {
|
|
262
228
|
@include btn-disabled;
|
|
263
229
|
}
|
|
264
230
|
|
|
@@ -334,12 +300,14 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
334
300
|
li:nth-last-child(7) { --i: 6; }
|
|
335
301
|
li:nth-last-child(8) { --i: 7; }
|
|
336
302
|
|
|
337
|
-
:is(a, button) {
|
|
303
|
+
> li > :is(a, button) {
|
|
338
304
|
opacity: 0;
|
|
339
305
|
transform: var(--md-comp-fab-hidden-transform);
|
|
340
306
|
transition:
|
|
341
307
|
opacity var(--md-comp-fab-duration) var(--md-comp-fab-easing),
|
|
342
|
-
transform var(--md-comp-fab-duration) var(--md-comp-fab-easing)
|
|
308
|
+
transform var(--md-comp-fab-duration) var(--md-comp-fab-easing),
|
|
309
|
+
background-color .2s ease-out,
|
|
310
|
+
box-shadow .2s ease-out;
|
|
343
311
|
// Close: farthest first, so they funnel into the disc.
|
|
344
312
|
transition-delay: calc(
|
|
345
313
|
var(--md-comp-fab-stagger) * (var(--n) - 1 - var(--i, 0))
|
|
@@ -351,7 +319,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
351
319
|
visibility: visible;
|
|
352
320
|
transition-delay: 0s;
|
|
353
321
|
|
|
354
|
-
:is(a, button) {
|
|
322
|
+
> li > :is(a, button) {
|
|
355
323
|
opacity: 1;
|
|
356
324
|
transform: none;
|
|
357
325
|
transition-delay: calc(var(--md-comp-fab-stagger) * var(--i, 0));
|
|
@@ -429,7 +397,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
429
397
|
padding: 0;
|
|
430
398
|
height: 56px;
|
|
431
399
|
|
|
432
|
-
:is(ul, menu) :is(a, button) {
|
|
400
|
+
:is(ul, menu) > li > :is(a, button) {
|
|
433
401
|
opacity: 1;
|
|
434
402
|
transform: none;
|
|
435
403
|
transition: opacity var(--md-comp-fab-duration);
|
|
@@ -490,7 +458,7 @@ $_btn: "button:not(#{$_not-btn}), a.button, .btn, .btn-flat, .btn-large, .btn-sm
|
|
|
490
458
|
visibility: visible;
|
|
491
459
|
transition-delay: 0s;
|
|
492
460
|
|
|
493
|
-
:is(a, button) {
|
|
461
|
+
> li > :is(a, button) {
|
|
494
462
|
opacity: 1;
|
|
495
463
|
transform: none;
|
|
496
464
|
transition-delay: calc(var(--md-comp-fab-stagger) * var(--i, 0));
|
|
@@ -3,23 +3,24 @@
|
|
|
3
3
|
// Cards.
|
|
4
4
|
//
|
|
5
5
|
// Anatomy is the HTML. An <article> is an elevated card. A heading is the
|
|
6
|
-
// headline, a <p> is supporting text, a direct <nav> is the
|
|
6
|
+
// headline, a <p> is supporting text, a direct <nav> (not .tabs) is the
|
|
7
|
+
// action row,
|
|
7
8
|
// <img> / <figure> is media. Helpers switch the M3 variant (filled, outlined)
|
|
8
|
-
// or the layout (horizontal).
|
|
9
|
+
// or the layout (horizontal).
|
|
9
10
|
//
|
|
10
11
|
// Tokens follow https://m3.material.io/components/cards/specs
|
|
11
|
-
// container surface, 12dp corners
|
|
12
|
+
// container surface-container-low, 12dp corners
|
|
12
13
|
// elevated level 1, hover level 2
|
|
13
|
-
// filled surface-
|
|
14
|
+
// filled surface-container-highest, level 0
|
|
14
15
|
// outlined surface + 1dp outline, level 0
|
|
15
16
|
// headline title-medium / on-surface
|
|
16
17
|
// body body-medium / on-surface-variant
|
|
17
18
|
// padding 16dp
|
|
18
19
|
|
|
19
|
-
$_card: "article
|
|
20
|
+
$_card: "article";
|
|
20
21
|
|
|
21
22
|
:where(#{$_card}) {
|
|
22
|
-
--md-comp-elevated-card-container-color: var(--md-sys-color-surface);
|
|
23
|
+
--md-comp-elevated-card-container-color: var(--md-sys-color-surface-container-low);
|
|
23
24
|
--md-comp-elevated-card-container-shape: 12px;
|
|
24
25
|
|
|
25
26
|
position: relative;
|
|
@@ -42,7 +43,7 @@ $_card: "article, .card, .card-panel";
|
|
|
42
43
|
|
|
43
44
|
:where(#{$_card}).filled {
|
|
44
45
|
@include z-depth("0");
|
|
45
|
-
background-color: var(--md-sys-color-surface-
|
|
46
|
+
background-color: var(--md-sys-color-surface-container-highest);
|
|
46
47
|
}
|
|
47
48
|
|
|
48
49
|
:where(#{$_card}).outlined,
|
|
@@ -88,7 +89,8 @@ article > header {
|
|
|
88
89
|
color: inherit;
|
|
89
90
|
}
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
// Action row. nav.tabs is a tab bar, not actions — leave it to _tabs.scss.
|
|
93
|
+
article > nav:not(.tabs) {
|
|
92
94
|
display: flex;
|
|
93
95
|
flex-wrap: wrap;
|
|
94
96
|
align-items: center;
|
|
@@ -132,8 +134,7 @@ article > figure > figcaption {
|
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
// Horizontal: media on the start, body stacked beside it.
|
|
135
|
-
article.horizontal
|
|
136
|
-
.card.horizontal {
|
|
137
|
+
article.horizontal {
|
|
137
138
|
display: flex;
|
|
138
139
|
flex-direction: row;
|
|
139
140
|
align-items: stretch;
|
|
@@ -141,8 +142,7 @@ article.horizontal,
|
|
|
141
142
|
|
|
142
143
|
> img,
|
|
143
144
|
> picture,
|
|
144
|
-
> figure
|
|
145
|
-
> .card-image {
|
|
145
|
+
> figure {
|
|
146
146
|
flex: 0 0 40%;
|
|
147
147
|
max-width: 40%;
|
|
148
148
|
width: 40%;
|
|
@@ -151,8 +151,7 @@ article.horizontal,
|
|
|
151
151
|
|
|
152
152
|
> img,
|
|
153
153
|
> picture img,
|
|
154
|
-
> figure img
|
|
155
|
-
> .card-image img {
|
|
154
|
+
> figure img {
|
|
156
155
|
height: 100%;
|
|
157
156
|
object-fit: cover;
|
|
158
157
|
}
|
|
@@ -165,55 +164,56 @@ article.horizontal,
|
|
|
165
164
|
}
|
|
166
165
|
}
|
|
167
166
|
|
|
168
|
-
// Fixed heights
|
|
169
|
-
article.small
|
|
170
|
-
article.medium
|
|
171
|
-
article.large
|
|
167
|
+
// Fixed heights for uniform grids.
|
|
168
|
+
article.small { height: 300px; }
|
|
169
|
+
article.medium { height: 400px; }
|
|
170
|
+
article.large { height: 500px; }
|
|
172
171
|
|
|
173
|
-
article.small, article.medium, article.large
|
|
174
|
-
.card.small, .card.medium, .card.large {
|
|
172
|
+
article.small, article.medium, article.large {
|
|
175
173
|
display: flex;
|
|
176
174
|
flex-direction: column;
|
|
177
175
|
|
|
178
|
-
> img, > picture, > figure
|
|
176
|
+
> img, > picture, > figure {
|
|
179
177
|
flex: 0 1 60%;
|
|
180
178
|
min-height: 0;
|
|
181
179
|
overflow: hidden;
|
|
182
180
|
}
|
|
183
181
|
|
|
184
|
-
> img, > figure img
|
|
182
|
+
> img, > figure img {
|
|
185
183
|
height: 100%;
|
|
186
184
|
}
|
|
187
185
|
|
|
188
|
-
> p
|
|
186
|
+
> p {
|
|
189
187
|
flex: 1 1 auto;
|
|
190
188
|
min-height: 0;
|
|
191
189
|
overflow: hidden;
|
|
192
190
|
}
|
|
193
191
|
|
|
194
|
-
> nav
|
|
192
|
+
> nav:not(.tabs) {
|
|
195
193
|
margin-top: auto;
|
|
196
194
|
}
|
|
197
195
|
}
|
|
198
196
|
|
|
199
197
|
article.horizontal.small,
|
|
200
198
|
article.horizontal.medium,
|
|
201
|
-
article.horizontal.large
|
|
202
|
-
.card.horizontal.small,
|
|
203
|
-
.card.horizontal.medium,
|
|
204
|
-
.card.horizontal.large {
|
|
199
|
+
article.horizontal.large {
|
|
205
200
|
flex-direction: row;
|
|
206
201
|
|
|
207
|
-
> img, > picture, > figure
|
|
202
|
+
> img, > picture, > figure {
|
|
208
203
|
flex: 0 0 40%;
|
|
209
204
|
max-height: none;
|
|
210
205
|
}
|
|
211
206
|
}
|
|
212
207
|
|
|
213
|
-
// Reveal overlay. aside is the
|
|
214
|
-
|
|
215
|
-
.
|
|
216
|
-
|
|
208
|
+
// Reveal overlay. aside is the panel. Parked under the card (translateY 100%)
|
|
209
|
+
// and clipped by overflow:hidden. Open is aria-expanded="true" → slide up
|
|
210
|
+
// to cover. Do not use inset:0 as the closed geometry and then
|
|
211
|
+
// translateY(-100%): that slides the panel *off* the card, and isOpen stays
|
|
212
|
+
// true so a second click is a no-op.
|
|
213
|
+
article > aside {
|
|
214
|
+
--md-comp-card-reveal-duration: 300ms;
|
|
215
|
+
--md-comp-card-reveal-easing: ease;
|
|
216
|
+
|
|
217
217
|
position: absolute;
|
|
218
218
|
inset: 0;
|
|
219
219
|
z-index: 3;
|
|
@@ -222,107 +222,34 @@ article > aside,
|
|
|
222
222
|
overflow-y: auto;
|
|
223
223
|
background-color: var(--md-sys-color-surface);
|
|
224
224
|
color: var(--md-sys-color-on-surface);
|
|
225
|
+
transform: translateY(100%);
|
|
226
|
+
visibility: hidden;
|
|
227
|
+
pointer-events: none;
|
|
228
|
+
transition:
|
|
229
|
+
transform var(--md-comp-card-reveal-duration) var(--md-comp-card-reveal-easing),
|
|
230
|
+
visibility 0s var(--md-comp-card-reveal-duration);
|
|
225
231
|
}
|
|
226
232
|
|
|
227
|
-
article
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
article.sticky > aside,
|
|
235
|
-
.card.sticky-action > .card-reveal {
|
|
236
|
-
bottom: auto;
|
|
237
|
-
height: calc(100% - 52px);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Simple padded surface. Same tokens as a card with no slots.
|
|
241
|
-
.card-panel {
|
|
242
|
-
padding: 16px;
|
|
243
|
-
margin: $element-top-margin 0 $element-bottom-margin 0;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
// --- Legacy slots (.card-*) so existing markup keeps working --------------
|
|
247
|
-
|
|
248
|
-
.card-title {
|
|
249
|
-
font-family: var(--md-sys-typescale-title-medium-font-family-name);
|
|
250
|
-
font-size: var(--md-sys-typescale-title-medium-font-size);
|
|
251
|
-
font-weight: var(--md-sys-typescale-title-medium-font-weight);
|
|
252
|
-
line-height: var(--md-sys-typescale-title-medium-line-height);
|
|
253
|
-
letter-spacing: var(--md-sys-typescale-title-medium-letter-spacing);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.card .card-image {
|
|
257
|
-
position: relative;
|
|
258
|
-
|
|
259
|
-
img {
|
|
260
|
-
display: block;
|
|
261
|
-
width: 100%;
|
|
262
|
-
object-fit: cover;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
.card-title {
|
|
266
|
-
position: absolute;
|
|
267
|
-
bottom: 0;
|
|
268
|
-
left: 0;
|
|
269
|
-
max-width: 100%;
|
|
270
|
-
padding: 16px;
|
|
271
|
-
color: var(--md-sys-color-on-surface);
|
|
272
|
-
background: color-mix(in oklab, var(--md-sys-color-surface) 72%, transparent);
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.activator {
|
|
276
|
-
position: absolute;
|
|
277
|
-
inset: 0;
|
|
278
|
-
cursor: pointer;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
img.activator {
|
|
282
|
-
position: relative;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
.card .card-content {
|
|
287
|
-
padding: 16px;
|
|
288
|
-
border-radius: 0;
|
|
289
|
-
|
|
290
|
-
p { margin: 0; }
|
|
291
|
-
|
|
292
|
-
.card-title {
|
|
293
|
-
display: block;
|
|
294
|
-
margin-bottom: 8px;
|
|
295
|
-
|
|
296
|
-
&.activator { cursor: pointer; }
|
|
297
|
-
}
|
|
233
|
+
article > aside[aria-expanded="true"] {
|
|
234
|
+
transform: translateY(0);
|
|
235
|
+
visibility: visible;
|
|
236
|
+
pointer-events: auto;
|
|
237
|
+
transition: transform var(--md-comp-card-reveal-duration) var(--md-comp-card-reveal-easing);
|
|
298
238
|
}
|
|
299
239
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
align-items: center;
|
|
304
|
-
gap: 8px;
|
|
305
|
-
padding: 4px 8px 8px;
|
|
306
|
-
|
|
307
|
-
a:not(.button):not(.btn):not(.btn-floating) {
|
|
308
|
-
@include btn-flat;
|
|
309
|
-
height: auto;
|
|
310
|
-
padding: 8px 12px;
|
|
311
|
-
min-height: 40px;
|
|
240
|
+
@media (prefers-reduced-motion: reduce) {
|
|
241
|
+
article > aside {
|
|
242
|
+
transition: none;
|
|
312
243
|
}
|
|
313
244
|
}
|
|
314
245
|
|
|
315
|
-
.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
min-width: 0;
|
|
320
|
-
|
|
321
|
-
.card-content { flex-grow: 1; }
|
|
246
|
+
article.sticky > nav {
|
|
247
|
+
position: relative;
|
|
248
|
+
z-index: 4;
|
|
249
|
+
background-color: inherit;
|
|
322
250
|
}
|
|
323
251
|
|
|
324
|
-
.
|
|
325
|
-
|
|
252
|
+
article.sticky > aside {
|
|
253
|
+
bottom: auto;
|
|
254
|
+
height: calc(100% - 52px);
|
|
326
255
|
}
|
|
327
|
-
|
|
328
|
-
.no-padding { padding: 0 !important; }
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
// Carousel. Two layouts, one class:
|
|
4
4
|
// .carousel 3D coverflow (JS)
|
|
5
|
-
// .carousel.flat linear snap track (CSS).
|
|
5
|
+
// .carousel.flat linear snap track (CSS).
|
|
6
6
|
//
|
|
7
7
|
// Anatomy: direct children move. .carousel-item is optional. Indicators and
|
|
8
8
|
// .carousel-fixed-item are chrome, not slides.
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
// Coverflow. JS writes transform / opacity / visibility on each item.
|
|
72
|
-
.carousel:not(.flat)
|
|
72
|
+
.carousel:not(.flat) {
|
|
73
73
|
perspective: 500px;
|
|
74
74
|
transform-style: preserve-3d;
|
|
75
75
|
transform-origin: 0% 50%;
|
|
@@ -90,8 +90,7 @@
|
|
|
90
90
|
// Linear track. The outer box clips and holds chrome (dots, fixed item).
|
|
91
91
|
// Slides live in .carousel-track so they can scroll without taking the
|
|
92
92
|
// controls with them — abspos children of an overflow:auto box scroll too.
|
|
93
|
-
.carousel.flat
|
|
94
|
-
.carousel.carousel-slider {
|
|
93
|
+
.carousel.flat {
|
|
95
94
|
overflow: hidden;
|
|
96
95
|
perspective: none;
|
|
97
96
|
transform: none;
|
|
@@ -149,8 +148,7 @@
|
|
|
149
148
|
}
|
|
150
149
|
|
|
151
150
|
@media (prefers-reduced-motion: reduce) {
|
|
152
|
-
.carousel.flat > .carousel-track
|
|
153
|
-
.carousel.carousel-slider > .carousel-track {
|
|
151
|
+
.carousel.flat > .carousel-track {
|
|
154
152
|
scroll-behavior: auto;
|
|
155
153
|
}
|
|
156
154
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
--padding: 8px;
|
|
7
7
|
|
|
8
8
|
color: var(--md-sys-color-on-surface-variant);
|
|
9
|
-
background-color:
|
|
9
|
+
background-color: var(--md-sys-color-surface-container-low);
|
|
10
10
|
display: inline-flex;
|
|
11
11
|
white-space: nowrap;
|
|
12
12
|
gap: 8px;
|
|
@@ -21,10 +21,11 @@
|
|
|
21
21
|
user-select: none;
|
|
22
22
|
vertical-align: top;
|
|
23
23
|
|
|
24
|
-
&:focus
|
|
24
|
+
&:focus,
|
|
25
|
+
&.active {
|
|
25
26
|
outline: none;
|
|
26
|
-
background-color: var(--md-sys-color-
|
|
27
|
-
color:
|
|
27
|
+
background-color: var(--md-sys-color-secondary-container);
|
|
28
|
+
color: var(--md-sys-color-on-secondary-container);
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
.chip .close:hover {
|
|
63
|
-
background-color:
|
|
64
|
+
background-color: color-mix(in oklab, var(--md-sys-color-on-surface-variant) 8%, transparent);
|
|
64
65
|
}
|
|
65
66
|
|
|
66
67
|
//--------------------------
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
@use "../abstracts" as *;
|
|
2
2
|
|
|
3
|
-
/* Modal */
|
|
4
|
-
// @removed since v2.2.1
|
|
5
|
-
/*.datepicker-modal {
|
|
6
|
-
max-width: 325px;
|
|
7
|
-
// @removed since v2.2.1-dev regarding Material M3 standards
|
|
8
|
-
min-width: 300px;
|
|
9
|
-
max-height: none;
|
|
10
|
-
}*/
|
|
11
|
-
|
|
12
3
|
.datepicker-container {
|
|
13
4
|
display: flex;
|
|
14
5
|
flex-direction: column;
|
|
@@ -27,7 +18,7 @@
|
|
|
27
18
|
display: flex;
|
|
28
19
|
}
|
|
29
20
|
|
|
30
|
-
.select
|
|
21
|
+
.field:has(> .hide-select) {
|
|
31
22
|
input {
|
|
32
23
|
height: 49px;
|
|
33
24
|
margin: 4px 0 0 0;
|
|
@@ -50,11 +41,6 @@
|
|
|
50
41
|
}
|
|
51
42
|
}
|
|
52
43
|
|
|
53
|
-
.select-dropdown {
|
|
54
|
-
padding: 0;
|
|
55
|
-
vertical-align: middle;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
44
|
.select-year input,
|
|
59
45
|
.select-month input {
|
|
60
46
|
background-color: transparent;
|