maverick-wave 4.28.0 → 5.0.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/.claude/settings.local.json +29 -1
- package/.claude/skills/mw-maverick-wave/SKILL.md +39 -24
- package/.claude/skills/mw-maverick-wave/examples/angular-services.md +16 -4
- package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +13 -4
- package/.claude/skills/mw-maverick-wave/references/components.md +42 -5
- package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
- package/.claude/skills/mw-maverick-wave/references/javascript.md +17 -4
- package/.claude/skills/mw-maverick-wave/references/layout.md +53 -19
- package/.claude/skills/mw-maverick-wave/references/theming.md +38 -1
- package/.impeccable/config.local.json +5 -0
- package/.impeccable/hook.cache.json +1 -0
- package/CHANGELOG.md +11 -0
- package/CLAUDE.md +5 -5
- package/README.md +48 -4
- package/index.html +19 -38
- package/maverick-wave.min.css +14 -12
- package/maverick-wave.min.js +1 -1
- package/package.json +2 -2
- package/scripts/verify.js +27 -2
- package/src/js/main.js +223 -83
- package/src/partials/accordions-container.html +6 -10
- package/src/partials/alerts-container.html +6 -6
- package/src/partials/announcement-container.html +5 -5
- package/src/partials/avatars-container.html +85 -17
- package/src/partials/badges-container.html +6 -6
- package/src/partials/blog-posts-container.html +11 -12
- package/src/partials/buttons-container.html +3 -3
- package/src/partials/cards-container.html +26 -9
- package/src/partials/code-container.html +5 -5
- package/src/partials/content-slider-container.html +5 -4
- package/src/partials/divider-container.html +7 -7
- package/src/partials/dropdown-container.html +2 -2
- package/src/partials/empty-state-container.html +5 -5
- package/src/partials/footer-container.html +21 -18
- package/src/partials/form-elements-container.html +14 -14
- package/src/partials/gallery-container.html +16 -8
- package/src/partials/get-started-container.html +4 -8
- package/src/partials/header-container.html +18 -7
- package/src/partials/home-container.html +10 -20
- package/src/partials/input-group-container.html +11 -2
- package/src/partials/kbd-container.html +1 -1
- package/src/partials/login-container.html +5 -1
- package/src/partials/media-container.html +2 -2
- package/src/partials/modals-container.html +22 -32
- package/src/partials/pricing-container.html +9 -9
- package/src/partials/skeleton-container.html +6 -6
- package/src/partials/stepper-container.html +2 -2
- package/src/partials/tables-container.html +12 -12
- package/src/partials/tabs-container.html +17 -27
- package/src/partials/tags-container.html +23 -17
- package/src/partials/techstack-bucket-container.html +13 -0
- package/src/partials/tiles-container.html +26 -9
- package/src/partials/typography-container.html +7 -6
- package/src/partials/utilities-container.html +35 -15
- package/src/scss/_layers.scss +10 -0
- package/src/scss/abstracts/_index.scss +6 -0
- package/src/scss/abstracts/_mixins.scss +61 -153
- package/src/scss/abstracts/_variables.scss +123 -319
- package/src/scss/base/_base.scss +170 -190
- package/src/scss/base/_reset.scss +106 -104
- package/src/scss/base/_typography.scss +153 -151
- package/src/scss/components/_accordions.scss +97 -97
- package/src/scss/components/_alerts.scss +71 -70
- package/src/scss/components/_announcement.scss +71 -70
- package/src/scss/components/_avatars.scss +130 -142
- package/src/scss/components/_badge.scss +131 -132
- package/src/scss/components/_blog-post.scss +223 -220
- package/src/scss/components/_breadcrumbs.scss +93 -92
- package/src/scss/components/_button-bar.scss +102 -110
- package/src/scss/components/_buttons.scss +319 -324
- package/src/scss/components/_calendar.scss +251 -252
- package/src/scss/components/_cards.scss +359 -386
- package/src/scss/components/_code.scss +190 -194
- package/src/scss/components/_coming-soon.scss +77 -75
- package/src/scss/components/_content-slider.scss +90 -89
- package/src/scss/components/_divider.scss +55 -53
- package/src/scss/components/_dropdown.scss +179 -185
- package/src/scss/components/_empty-state.scss +57 -57
- package/src/scss/components/_flag.scss +294 -278
- package/src/scss/components/_gallery.scss +131 -133
- package/src/scss/components/_info.scss +151 -167
- package/src/scss/components/_kanban.scss +332 -341
- package/src/scss/components/_kbd.scss +40 -38
- package/src/scss/components/_lang-switch.scss +89 -97
- package/src/scss/components/_links.scss +21 -28
- package/src/scss/components/_lists.scss +510 -514
- package/src/scss/components/_localhost-indicator.scss +26 -24
- package/src/scss/components/_media.scss +22 -20
- package/src/scss/components/_meta-info.scss +35 -33
- package/src/scss/components/_modals.scss +277 -186
- package/src/scss/components/_pagination.scss +81 -87
- package/src/scss/components/_panels.scss +99 -97
- package/src/scss/components/_pricing.scss +183 -241
- package/src/scss/components/_progress.scss +112 -89
- package/src/scss/components/_prose.scss +35 -33
- package/src/scss/components/_ratings.scss +40 -38
- package/src/scss/components/_segmented.scss +82 -84
- package/src/scss/components/_skeleton.scss +66 -72
- package/src/scss/components/_spinners.scss +155 -159
- package/src/scss/components/_stepper.scss +116 -116
- package/src/scss/components/_tables.scss +155 -148
- package/src/scss/components/_tabs.scss +232 -141
- package/src/scss/components/_tags.scss +109 -107
- package/src/scss/components/_techstack-bucket.scss +123 -122
- package/src/scss/components/_testimonial.scss +72 -70
- package/src/scss/components/_theme-toggle.scss +53 -51
- package/src/scss/components/_tiles.scss +174 -174
- package/src/scss/components/_timelines.scss +282 -280
- package/src/scss/components/_toasts.scss +66 -72
- package/src/scss/form-elements/_checkbox.scss +117 -132
- package/src/scss/form-elements/_form.scss +149 -115
- package/src/scss/form-elements/_input-group.scss +99 -103
- package/src/scss/form-elements/_input.scss +74 -74
- package/src/scss/form-elements/_login.scss +48 -48
- package/src/scss/form-elements/_prefilled.scss +53 -51
- package/src/scss/form-elements/_radio.scss +95 -107
- package/src/scss/form-elements/_select.scss +42 -42
- package/src/scss/form-elements/_slider.scss +117 -132
- package/src/scss/form-elements/_textarea.scss +68 -54
- package/src/scss/form-elements/_toggle.scss +127 -140
- package/src/scss/layout/_footer.scss +172 -171
- package/src/scss/layout/_grid.scss +268 -302
- package/src/scss/layout/_header.scss +426 -427
- package/src/scss/layout/_home.scss +28 -27
- package/src/scss/layout/_main.scss +275 -238
- package/src/scss/layout/_page-header.scss +38 -36
- package/src/scss/layout/_section.scss +150 -124
- package/src/scss/main.scss +1 -1
- package/src/scss/utilities/_accessibility.scss +46 -45
- package/src/scss/utilities/_aspect.scss +22 -20
- package/src/scss/utilities/_corner.scss +23 -5
- package/src/scss/utilities/_display.scss +76 -70
- package/src/scss/utilities/_elevation.scss +13 -11
- package/src/scss/utilities/_flex.scss +83 -85
- package/src/scss/utilities/_reveal.scss +40 -63
- package/src/scss/utilities/_spacing.scss +63 -64
- package/src/scss/utilities/_text.scss +139 -141
- package/src/scss/utilities/_touch-targets.scss +130 -147
|
@@ -1,97 +1,103 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
.mw-d {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
@layer mw.utilities {
|
|
4
|
+
.mw-d {
|
|
5
|
+
&-flex {
|
|
6
|
+
display: flex;
|
|
7
|
+
}
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
&-inline-flex {
|
|
10
|
+
display: inline-flex;
|
|
11
|
+
}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
&-block {
|
|
14
|
+
display: block;
|
|
15
|
+
}
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
&-inline {
|
|
18
|
+
display: inline;
|
|
19
|
+
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
&-inline-block {
|
|
22
|
+
display: inline-block;
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
&-grid {
|
|
26
|
+
display: grid;
|
|
27
|
+
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
&-none {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
// For a wrapper that must not become a flex/grid item itself - the element
|
|
34
|
+
// generates no box, so its children take over the item role
|
|
35
|
+
&-contents {
|
|
36
|
+
display: contents;
|
|
37
|
+
}
|
|
37
38
|
}
|
|
38
|
-
}
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
40
|
+
@each $key, $value in $radius {
|
|
41
|
+
.mw-radius-#{$key} {
|
|
42
|
+
border-radius: $value;
|
|
43
|
+
}
|
|
44
44
|
}
|
|
45
|
-
}
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
46
|
+
$_mw-responsive-displays: (
|
|
47
|
+
none,
|
|
48
|
+
block,
|
|
49
|
+
flex,
|
|
50
|
+
inline-flex,
|
|
51
|
+
grid,
|
|
52
|
+
inline-block
|
|
53
|
+
);
|
|
54
|
+
|
|
55
|
+
@each $bp in ('sm', 'md', 'lg', 'xl') {
|
|
56
|
+
@include media-up($bp) {
|
|
57
|
+
@each $value in $_mw-responsive-displays {
|
|
58
|
+
.mw-d-#{$bp}-#{$value} {
|
|
59
|
+
display: #{$value};
|
|
60
|
+
}
|
|
55
61
|
}
|
|
56
62
|
}
|
|
57
63
|
}
|
|
58
|
-
}
|
|
59
64
|
|
|
60
|
-
// The two everyone actually reaches for, spelled out. `md` is the divide: below
|
|
61
|
-
// it a phone, at it and above a tablet with room for a second column.
|
|
62
|
-
.mw-hide-mobile {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
+
// The two everyone actually reaches for, spelled out. `md` is the divide: below
|
|
66
|
+
// it a phone, at it and above a tablet with room for a second column.
|
|
67
|
+
.mw-hide-mobile {
|
|
68
|
+
@include media-down('md') {
|
|
69
|
+
display: none;
|
|
70
|
+
}
|
|
65
71
|
}
|
|
66
|
-
}
|
|
67
72
|
|
|
68
|
-
.mw-hide-desktop {
|
|
69
|
-
|
|
70
|
-
|
|
73
|
+
.mw-hide-desktop {
|
|
74
|
+
@include media-up('md') {
|
|
75
|
+
display: none;
|
|
76
|
+
}
|
|
71
77
|
}
|
|
72
|
-
}
|
|
73
78
|
|
|
74
|
-
// Overflow, for the wrappers that hold something wider than the phone they are
|
|
75
|
-
// being read on
|
|
76
|
-
.mw-overflow-auto {
|
|
77
|
-
|
|
78
|
-
}
|
|
79
|
+
// Overflow, for the wrappers that hold something wider than the phone they are
|
|
80
|
+
// being read on
|
|
81
|
+
.mw-overflow-auto {
|
|
82
|
+
overflow: auto;
|
|
83
|
+
}
|
|
79
84
|
|
|
80
|
-
.mw-overflow-x-auto {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
}
|
|
85
|
+
.mw-overflow-x-auto {
|
|
86
|
+
overflow-x: auto;
|
|
87
|
+
overscroll-behavior-x: contain;
|
|
88
|
+
}
|
|
84
89
|
|
|
85
|
-
.mw-overflow-hidden {
|
|
86
|
-
|
|
87
|
-
}
|
|
90
|
+
.mw-overflow-hidden {
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
}
|
|
88
93
|
|
|
89
|
-
// Snap a horizontal strip so it comes to rest on an item instead of halfway
|
|
90
|
-
// between two - a row of cards swiped through on a phone
|
|
91
|
-
.mw-snap-x {
|
|
92
|
-
|
|
94
|
+
// Snap a horizontal strip so it comes to rest on an item instead of halfway
|
|
95
|
+
// between two - a row of cards swiped through on a phone
|
|
96
|
+
.mw-snap-x {
|
|
97
|
+
scroll-snap-type: x mandatory;
|
|
93
98
|
|
|
94
|
-
|
|
95
|
-
|
|
99
|
+
> * {
|
|
100
|
+
scroll-snap-align: start;
|
|
101
|
+
}
|
|
96
102
|
}
|
|
97
103
|
}
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
.
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
@layer mw.utilities {
|
|
4
|
+
// The elevation ramp as classes, for a surface a project draws itself. Same
|
|
5
|
+
// five steps every component uses - see the elevation() function.
|
|
6
|
+
//
|
|
7
|
+
// 0 is not "no shadow it forgot to set", it is "explicitly flat": for taking a
|
|
8
|
+
// component off the page it normally floats above.
|
|
9
|
+
.mw-elevation-0 {
|
|
10
|
+
box-shadow: none;
|
|
11
|
+
}
|
|
11
12
|
|
|
12
|
-
@for $level from 1 through 5 {
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
@for $level from 1 through 5 {
|
|
14
|
+
.mw-elevation-#{$level} {
|
|
15
|
+
box-shadow: var(--mw-elevation-#{$level});
|
|
16
|
+
}
|
|
15
17
|
}
|
|
16
18
|
}
|
|
@@ -1,114 +1,112 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
.mw-flex {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
@layer mw.utilities {
|
|
4
|
+
.mw-flex {
|
|
5
|
+
&-row {
|
|
6
|
+
flex-direction: row;
|
|
7
|
+
}
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
&-column {
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
}
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
&-wrap {
|
|
14
|
+
flex-wrap: wrap;
|
|
15
|
+
}
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
&-nowrap {
|
|
18
|
+
flex-wrap: nowrap;
|
|
19
|
+
}
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
&-1 {
|
|
22
|
+
flex: 1;
|
|
23
|
+
}
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
&-grow-1 {
|
|
26
|
+
flex-grow: 1;
|
|
27
|
+
}
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
&-shrink-0 {
|
|
30
|
+
flex-shrink: 0;
|
|
31
|
+
}
|
|
31
32
|
}
|
|
32
|
-
}
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
34
|
+
.mw-justify {
|
|
35
|
+
&-start {
|
|
36
|
+
justify-content: flex-start;
|
|
37
|
+
}
|
|
39
38
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
&-end {
|
|
40
|
+
justify-content: flex-end;
|
|
41
|
+
}
|
|
43
42
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
43
|
+
&-center {
|
|
44
|
+
justify-content: center;
|
|
45
|
+
}
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
47
|
+
&-between {
|
|
48
|
+
justify-content: space-between;
|
|
49
|
+
}
|
|
51
50
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
&-around {
|
|
52
|
+
justify-content: space-around;
|
|
53
|
+
}
|
|
55
54
|
|
|
56
|
-
|
|
57
|
-
|
|
55
|
+
&-evenly {
|
|
56
|
+
justify-content: space-evenly;
|
|
57
|
+
}
|
|
58
58
|
}
|
|
59
|
-
}
|
|
60
59
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
60
|
+
.mw-items {
|
|
61
|
+
&-start {
|
|
62
|
+
align-items: flex-start;
|
|
63
|
+
}
|
|
66
64
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
65
|
+
&-end {
|
|
66
|
+
align-items: flex-end;
|
|
67
|
+
}
|
|
70
68
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
69
|
+
&-center {
|
|
70
|
+
align-items: center;
|
|
71
|
+
}
|
|
74
72
|
|
|
75
|
-
|
|
76
|
-
|
|
73
|
+
&-stretch {
|
|
74
|
+
align-items: stretch;
|
|
75
|
+
}
|
|
77
76
|
}
|
|
78
|
-
}
|
|
79
77
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
78
|
+
.mw-self {
|
|
79
|
+
&-start {
|
|
80
|
+
align-self: flex-start;
|
|
81
|
+
}
|
|
85
82
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
83
|
+
&-end {
|
|
84
|
+
align-self: flex-end;
|
|
85
|
+
}
|
|
89
86
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
87
|
+
&-center {
|
|
88
|
+
align-self: center;
|
|
89
|
+
}
|
|
93
90
|
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
&-stretch {
|
|
92
|
+
align-self: stretch;
|
|
93
|
+
}
|
|
96
94
|
}
|
|
97
|
-
}
|
|
98
95
|
|
|
99
|
-
// The most common row in any app: what it is on the left, the value or the
|
|
100
|
-
// action on the right, and on a narrow screen the right half drops below.
|
|
101
|
-
// The `flex-wrap` is the part everyone forgets.
|
|
102
|
-
.mw-row-split {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
96
|
+
// The most common row in any app: what it is on the left, the value or the
|
|
97
|
+
// action on the right, and on a narrow screen the right half drops below.
|
|
98
|
+
// The `flex-wrap` is the part everyone forgets.
|
|
99
|
+
.mw-row-split {
|
|
100
|
+
display: flex;
|
|
101
|
+
flex-wrap: wrap;
|
|
102
|
+
align-items: baseline;
|
|
103
|
+
justify-content: space-between;
|
|
104
|
+
gap: spacing('2') spacing('5');
|
|
105
|
+
}
|
|
109
106
|
|
|
110
|
-
// Same row for content of unequal height - an icon beside text, a button
|
|
111
|
-
// beside a heading. Baseline alignment would hang those off the text.
|
|
112
|
-
.mw-row-split-center {
|
|
113
|
-
|
|
107
|
+
// Same row for content of unequal height - an icon beside text, a button
|
|
108
|
+
// beside a heading. Baseline alignment would hang those off the text.
|
|
109
|
+
.mw-row-split-center {
|
|
110
|
+
align-items: center;
|
|
111
|
+
}
|
|
114
112
|
}
|
|
@@ -1,73 +1,50 @@
|
|
|
1
1
|
@use '../abstracts' as *;
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
// the browser's
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// as a transformed box it stays a stacking context, so a dropdown opened
|
|
23
|
-
// inside it paints under the next card in the row. Without the forwards fill
|
|
24
|
-
// the animation lets go once the entrance is done.
|
|
25
|
-
//
|
|
26
|
-
// Longhands on purpose, never the animation shorthand: esbuild's CSS minifier
|
|
27
|
-
// (Vite's default, so every SCSS consumer) collapses a shorthand plus
|
|
28
|
-
// animation-timeline into one `animation:` declaration - which cannot carry a
|
|
29
|
-
// timeline, so browsers drop the whole thing and the reveal silently dies.
|
|
30
|
-
// Three longhands next to the timeline give it nothing to merge.
|
|
31
|
-
@supports (animation-timeline: view()) {
|
|
32
|
-
@media (prefers-reduced-motion: no-preference) {
|
|
33
|
-
.mw-reveal,
|
|
34
|
-
.mw-reveal-stagger > * {
|
|
35
|
-
animation-name: mw-reveal;
|
|
36
|
-
animation-timing-function: var(--mw-ease-out);
|
|
37
|
-
animation-fill-mode: backwards;
|
|
38
|
-
animation-timeline: view();
|
|
39
|
-
@include reveal-range(1);
|
|
40
|
-
}
|
|
3
|
+
@layer mw.utilities {
|
|
4
|
+
// Scroll entrance on the browser's own timeline - no observer. The zone is the
|
|
5
|
+
// `reveal-range` mixin. Without scroll timelines the backwards fill would hide
|
|
6
|
+
// the block forever, which is what the @supports guard is for.
|
|
7
|
+
//
|
|
8
|
+
// `backwards`, not `both`: a forwards fill keeps the transform applied, and that
|
|
9
|
+
// beats every author rule - the card loses its hover lift and stays a stacking
|
|
10
|
+
// context. Longhands and never the shorthand, which esbuild collapses into one
|
|
11
|
+
// `animation:` that cannot carry a timeline.
|
|
12
|
+
@supports (animation-timeline: view()) {
|
|
13
|
+
@media (prefers-reduced-motion: no-preference) {
|
|
14
|
+
.mw-reveal,
|
|
15
|
+
.mw-reveal-stagger > * {
|
|
16
|
+
animation-name: mw-reveal;
|
|
17
|
+
animation-timing-function: var(--mw-ease-out);
|
|
18
|
+
animation-fill-mode: backwards;
|
|
19
|
+
animation-timeline: view();
|
|
20
|
+
@include reveal-range(1);
|
|
21
|
+
}
|
|
41
22
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
// every breakpoint (layout/_grid.scss), so the fourth card of a four-column
|
|
52
|
-
// row is a beat behind the third, not level with the first.
|
|
53
|
-
.mw-reveal-stagger > :nth-child(3n + 2) {
|
|
54
|
-
@include reveal-range(2);
|
|
55
|
-
}
|
|
23
|
+
// A row crosses the viewport edge on one scroll step, so mw-reveal on each
|
|
24
|
+
// card rises as one slab. This shifts every second and third child instead -
|
|
25
|
+
// a wave. On the grid and not the cards, because the grid knows the columns.
|
|
26
|
+
//
|
|
27
|
+
// Cycles of three are the fallback for anything that is not one of the fixed
|
|
28
|
+
// grids; mw-grid-2 to -5 restate the cycle to their own count in _grid.scss.
|
|
29
|
+
.mw-reveal-stagger > :nth-child(3n + 2) {
|
|
30
|
+
@include reveal-range(2);
|
|
31
|
+
}
|
|
56
32
|
|
|
57
|
-
|
|
58
|
-
|
|
33
|
+
.mw-reveal-stagger > :nth-child(3n + 3) {
|
|
34
|
+
@include reveal-range(3);
|
|
35
|
+
}
|
|
59
36
|
}
|
|
60
37
|
}
|
|
61
|
-
}
|
|
62
38
|
|
|
63
|
-
@keyframes mw-reveal {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
39
|
+
@keyframes mw-reveal {
|
|
40
|
+
from {
|
|
41
|
+
opacity: 0;
|
|
42
|
+
transform: translateY(40px);
|
|
43
|
+
}
|
|
68
44
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
45
|
+
to {
|
|
46
|
+
opacity: 1;
|
|
47
|
+
transform: translateY(0);
|
|
48
|
+
}
|
|
72
49
|
}
|
|
73
50
|
}
|
|
@@ -1,86 +1,85 @@
|
|
|
1
1
|
@use 'sass:map';
|
|
2
2
|
@use '../abstracts' as *;
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
$
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
)
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@each $key, $value in $_margin-values {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
.mw-mt-#{$key} {
|
|
18
|
-
margin-top: $value;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.mw-mb-#{$key} {
|
|
22
|
-
margin-bottom: $value;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
.mw-ml-#{$key} {
|
|
26
|
-
margin-left: $value;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
.mw-mr-#{$key} {
|
|
30
|
-
margin-right: $value;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.mw-mx-#{$key} {
|
|
34
|
-
margin-left: $value;
|
|
35
|
-
margin-right: $value;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
.mw-my-#{$key} {
|
|
39
|
-
margin-top: $value;
|
|
40
|
-
margin-bottom: $value;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
4
|
+
@layer mw.utilities {
|
|
5
|
+
$_margin-values: map.merge(
|
|
6
|
+
$spacing,
|
|
7
|
+
(
|
|
8
|
+
'auto': auto,
|
|
9
|
+
)
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
@each $key, $value in $_margin-values {
|
|
13
|
+
.mw-m-#{$key} {
|
|
14
|
+
margin: $value;
|
|
15
|
+
}
|
|
43
16
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
@if $value >= 0 {
|
|
47
|
-
.mw-p-#{$key} {
|
|
48
|
-
padding: $value;
|
|
17
|
+
.mw-mt-#{$key} {
|
|
18
|
+
margin-top: $value;
|
|
49
19
|
}
|
|
50
20
|
|
|
51
|
-
.mw-
|
|
52
|
-
|
|
21
|
+
.mw-mb-#{$key} {
|
|
22
|
+
margin-bottom: $value;
|
|
53
23
|
}
|
|
54
24
|
|
|
55
|
-
.mw-
|
|
56
|
-
|
|
25
|
+
.mw-ml-#{$key} {
|
|
26
|
+
margin-left: $value;
|
|
57
27
|
}
|
|
58
28
|
|
|
59
|
-
.mw-
|
|
60
|
-
|
|
29
|
+
.mw-mr-#{$key} {
|
|
30
|
+
margin-right: $value;
|
|
61
31
|
}
|
|
62
32
|
|
|
63
|
-
.mw-
|
|
64
|
-
|
|
33
|
+
.mw-mx-#{$key} {
|
|
34
|
+
margin-left: $value;
|
|
35
|
+
margin-right: $value;
|
|
65
36
|
}
|
|
66
37
|
|
|
67
|
-
.mw-
|
|
68
|
-
|
|
69
|
-
|
|
38
|
+
.mw-my-#{$key} {
|
|
39
|
+
margin-top: $value;
|
|
40
|
+
margin-bottom: $value;
|
|
70
41
|
}
|
|
42
|
+
}
|
|
71
43
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
44
|
+
@each $key, $value in $spacing {
|
|
45
|
+
@if $value >= 0 {
|
|
46
|
+
.mw-p-#{$key} {
|
|
47
|
+
padding: $value;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.mw-pt-#{$key} {
|
|
51
|
+
padding-top: $value;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.mw-pb-#{$key} {
|
|
55
|
+
padding-bottom: $value;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.mw-pl-#{$key} {
|
|
59
|
+
padding-left: $value;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.mw-pr-#{$key} {
|
|
63
|
+
padding-right: $value;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.mw-px-#{$key} {
|
|
67
|
+
padding-left: $value;
|
|
68
|
+
padding-right: $value;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.mw-py-#{$key} {
|
|
72
|
+
padding-top: $value;
|
|
73
|
+
padding-bottom: $value;
|
|
74
|
+
}
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
-
}
|
|
78
77
|
|
|
79
|
-
|
|
80
|
-
@
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
78
|
+
@each $key, $value in $spacing {
|
|
79
|
+
@if $value >= 0 {
|
|
80
|
+
.mw-gap-#{$key} {
|
|
81
|
+
gap: $value;
|
|
82
|
+
}
|
|
84
83
|
}
|
|
85
84
|
}
|
|
86
85
|
}
|