maverick-wave 4.17.0 → 4.19.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 +16 -0
- package/maverick-wave.min.css +2 -2
- package/package.json +2 -2
- package/src/partials/cards-container.html +17 -0
- package/src/partials/info-container.html +13 -0
- package/src/scss/base/_base.scss +2 -0
- package/src/scss/components/_avatars.scss +7 -7
- package/src/scss/components/_cards.scss +16 -0
- package/src/scss/components/_info.scss +36 -0
- package/src/scss/layout/_footer.scss +1 -2
- package/src/scss/layout/_main.scss +45 -0
- package/src/scss/layout/_section.scss +1 -1
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maverick-wave",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.19.0",
|
|
4
4
|
"config": {
|
|
5
|
-
"version_short": "4.
|
|
5
|
+
"version_short": "4.19"
|
|
6
6
|
},
|
|
7
7
|
"description": "A lightweight, modern CSS framework for building responsive websites with elegance and speed.",
|
|
8
8
|
"main": "src/js/main.js",
|
|
@@ -115,6 +115,23 @@
|
|
|
115
115
|
</p>
|
|
116
116
|
</div>
|
|
117
117
|
</div>
|
|
118
|
+
|
|
119
|
+
<div class="mw-card">
|
|
120
|
+
<div class="mw-card-body">
|
|
121
|
+
<h3 class="mw-card-title">
|
|
122
|
+
<span class="mw-card-title-icon mw-card-title-icon-lg">
|
|
123
|
+
<img src="https://m1well.com/images/header_logo.svg" alt="" />
|
|
124
|
+
</span>
|
|
125
|
+
A logo instead of an icon
|
|
126
|
+
</h3>
|
|
127
|
+
<hr class="mw-card-title-divider" />
|
|
128
|
+
<p class="mw-card-text">
|
|
129
|
+
The same slot takes an <code><img></code> - a product logo, a
|
|
130
|
+
portrait. Add <code>mw-card-title-icon-lg</code> there: a wordmark
|
|
131
|
+
inside the default 38px is a smudge.
|
|
132
|
+
</p>
|
|
133
|
+
</div>
|
|
134
|
+
</div>
|
|
118
135
|
</div>
|
|
119
136
|
|
|
120
137
|
<h3 class="mw-mb-4 mw-mt-6">Tech-Stack Cards</h3>
|
|
@@ -26,6 +26,19 @@
|
|
|
26
26
|
</div>
|
|
27
27
|
</div>
|
|
28
28
|
|
|
29
|
+
<h4 class="mw-mb-2 mw-mt-5">Block</h4>
|
|
30
|
+
<div class="mw-card mw-card-simple">
|
|
31
|
+
<div class="mw-info mw-info-primary mw-info-block">
|
|
32
|
+
<strong>The same frame, carrying a paragraph</strong>
|
|
33
|
+
<span
|
|
34
|
+
>The base is built for a short figure and centres it in a narrow column.
|
|
35
|
+
The block variant ranges its text left up to a measure, sets it in body
|
|
36
|
+
weight and leading, and stays put under the pointer - for a note, a
|
|
37
|
+
disclaimer, or a short explanation beside the thing it explains.</span
|
|
38
|
+
>
|
|
39
|
+
</div>
|
|
40
|
+
</div>
|
|
41
|
+
|
|
29
42
|
<h4 class="mw-mb-2 mw-mt-5">Counters</h4>
|
|
30
43
|
<div class="mw-card mw-card-simple">
|
|
31
44
|
<div class="mw-d-flex mw-flex-wrap mw-items-center mw-gap-3">
|
package/src/scss/base/_base.scss
CHANGED
|
@@ -124,6 +124,8 @@ $_active-prefix: 'dark';
|
|
|
124
124
|
calc(100% - 2 * var(--mw-container-gutter))
|
|
125
125
|
);
|
|
126
126
|
--mw-section-padding-block: #{spacing('7')};
|
|
127
|
+
--mw-section-title-gap: #{spacing('7')};
|
|
128
|
+
--mw-scroll-hint-offset: #{spacing('9')};
|
|
127
129
|
|
|
128
130
|
// Active theme - aliases onto the dark or light set above
|
|
129
131
|
@each $name, $value in $_active-theme {
|
|
@@ -57,9 +57,9 @@ $_mw-avatar-colors: (
|
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
&-xl {
|
|
60
|
-
width:
|
|
61
|
-
height:
|
|
62
|
-
border-width:
|
|
60
|
+
width: 210px;
|
|
61
|
+
height: 210px;
|
|
62
|
+
border-width: 6px;
|
|
63
63
|
font-size: font-size('6xl');
|
|
64
64
|
}
|
|
65
65
|
|
|
@@ -125,7 +125,7 @@ $_mw-avatar-colors: (
|
|
|
125
125
|
margin-right: -23px;
|
|
126
126
|
}
|
|
127
127
|
.mw-avatar-xl {
|
|
128
|
-
margin-right: -
|
|
128
|
+
margin-right: -32px;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
.mw-avatar:last-child {
|
|
@@ -152,9 +152,9 @@ $_mw-avatar-colors: (
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
&-xl {
|
|
155
|
-
width:
|
|
156
|
-
height:
|
|
157
|
-
border-width:
|
|
155
|
+
width: 150px;
|
|
156
|
+
height: 150px;
|
|
157
|
+
border-width: 5px;
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -24,6 +24,13 @@ $_mw-card-addon-colors: (
|
|
|
24
24
|
color: var(--mw-card-addon-text-color, var(--mw-primary-accent-text-color));
|
|
25
25
|
box-shadow: var(--mw-elevation-2);
|
|
26
26
|
transition: var(--mw-transition);
|
|
27
|
+
overflow: hidden;
|
|
28
|
+
|
|
29
|
+
img {
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 100%;
|
|
32
|
+
object-fit: cover;
|
|
33
|
+
}
|
|
27
34
|
}
|
|
28
35
|
|
|
29
36
|
// Fading rule used by the title divider and the stack header underline
|
|
@@ -213,9 +220,18 @@ $_mw-card-addon-colors: (
|
|
|
213
220
|
// <span class="mw-card-title-icon"><i class="fas fa-file-invoice"></i></span>
|
|
214
221
|
// Invoices
|
|
215
222
|
// </h3>
|
|
223
|
+
//
|
|
224
|
+
// An <img> works in the same slot - a product logo or a portrait instead of
|
|
225
|
+
// an icon. Reach for the -lg step there: a wordmark inside 38px is a smudge.
|
|
216
226
|
&-title-icon {
|
|
217
227
|
@include _card-icon-circle;
|
|
218
228
|
font-size: font-size('lg');
|
|
229
|
+
|
|
230
|
+
&-lg {
|
|
231
|
+
width: 62px;
|
|
232
|
+
height: 62px;
|
|
233
|
+
font-size: font-size('2xl');
|
|
234
|
+
}
|
|
219
235
|
}
|
|
220
236
|
|
|
221
237
|
&-title-divider {
|
|
@@ -64,6 +64,42 @@ $_mw-info-colors: (
|
|
|
64
64
|
font-weight: font-weight('medium');
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
// Block variant: the same framed surface, carrying a paragraph instead of a
|
|
68
|
+
// value. The base is built for a short figure - it centres its content in a
|
|
69
|
+
// narrow column, sets it in medium weight and lifts on hover, which turns
|
|
70
|
+
// running text into a ragged stack that twitches under the pointer. This
|
|
71
|
+
// reads as a note instead: ranged left up to a measure, body weight, body
|
|
72
|
+
// leading, and it stays put.
|
|
73
|
+
//
|
|
74
|
+
// <div class="mw-info mw-info-primary mw-info-block">
|
|
75
|
+
// <strong>Why greyscale?</strong>
|
|
76
|
+
// <span>Because the frame is not the stage ...</span>
|
|
77
|
+
// </div>
|
|
78
|
+
&-block {
|
|
79
|
+
display: flex;
|
|
80
|
+
align-items: flex-start;
|
|
81
|
+
width: 100%;
|
|
82
|
+
max-width: 68ch;
|
|
83
|
+
margin-inline: auto;
|
|
84
|
+
padding: spacing('6') spacing('7');
|
|
85
|
+
font-weight: font-weight('normal');
|
|
86
|
+
line-height: 1.7;
|
|
87
|
+
text-align: left;
|
|
88
|
+
text-wrap: pretty;
|
|
89
|
+
|
|
90
|
+
&:hover {
|
|
91
|
+
box-shadow: none;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
@include hover {
|
|
95
|
+
transform: none;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
strong {
|
|
99
|
+
margin-bottom: spacing('2');
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
67
103
|
// counter variant: big number + small label
|
|
68
104
|
&-counter {
|
|
69
105
|
min-width: spacing('12');
|
|
@@ -77,6 +77,51 @@
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
80
|
+
// The "scroll down" cue at the bottom of a hero. It belongs to the hero
|
|
81
|
+
// container and not to the flow below it: a hero fills the viewport, so the
|
|
82
|
+
// cue has to sit on its lower edge no matter how tall the content above is.
|
|
83
|
+
// Selector beats the `> *` rule above it, which would otherwise put the
|
|
84
|
+
// element back into flow.
|
|
85
|
+
.mw-container:has(.mw-hero) > .mw-scroll-hint {
|
|
86
|
+
position: absolute;
|
|
87
|
+
bottom: var(--mw-scroll-hint-offset);
|
|
88
|
+
left: 50%;
|
|
89
|
+
transform: translateX(-50%);
|
|
90
|
+
display: flex;
|
|
91
|
+
flex-direction: column;
|
|
92
|
+
align-items: center;
|
|
93
|
+
gap: spacing('2');
|
|
94
|
+
color: color-mix(in srgb, var(--mw-hero-text-color) 45%, transparent);
|
|
95
|
+
font-size: font-size('xs');
|
|
96
|
+
letter-spacing: 0.08em;
|
|
97
|
+
text-transform: uppercase;
|
|
98
|
+
text-decoration: none;
|
|
99
|
+
animation: mw-scroll-hint-float 2.2s var(--mw-ease-in-out) infinite;
|
|
100
|
+
|
|
101
|
+
@include hover {
|
|
102
|
+
color: var(--mw-hero-text-color);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
@keyframes mw-scroll-hint-float {
|
|
107
|
+
0%,
|
|
108
|
+
100% {
|
|
109
|
+
transform: translate(-50%, 0);
|
|
110
|
+
}
|
|
111
|
+
50% {
|
|
112
|
+
transform: translate(-50%, 7px);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Same selector as the rule above on purpose: a media query adds no
|
|
117
|
+
// specificity, so a bare `.mw-scroll-hint` here loses to the `.mw-container`
|
|
118
|
+
// chain and the cue keeps bobbing for everyone who asked it not to.
|
|
119
|
+
@media (prefers-reduced-motion: reduce) {
|
|
120
|
+
.mw-container:has(.mw-hero) > .mw-scroll-hint {
|
|
121
|
+
animation: none;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
80
125
|
.mw-content {
|
|
81
126
|
flex: 1;
|
|
82
127
|
padding-top: spacing('7');
|