maverick-wave 5.29.0 → 5.31.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/README.md +2 -2
- package/maverick-wave.min.css +2 -2
- package/package.json +8 -2
- package/src/scss/components/_avatars.scss +35 -3
- package/src/scss/components/_dropdown.scss +24 -1
- package/src/scss/components/_lang-switch.scss +4 -8
- package/src/scss/components/_modals.scss +33 -5
- package/.claude/settings.local.json +0 -43
- package/.claude/skills/mw-maverick-wave/SKILL.md +0 -532
- package/.claude/skills/mw-maverick-wave/examples/angular-form.md +0 -279
- package/.claude/skills/mw-maverick-wave/examples/angular-list-page.md +0 -309
- package/.claude/skills/mw-maverick-wave/examples/angular-services.md +0 -538
- package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +0 -530
- package/.claude/skills/mw-maverick-wave/references/components.md +0 -2169
- package/.claude/skills/mw-maverick-wave/references/forms.md +0 -358
- package/.claude/skills/mw-maverick-wave/references/javascript.md +0 -164
- package/.claude/skills/mw-maverick-wave/references/layout.md +0 -764
- package/.claude/skills/mw-maverick-wave/references/theming.md +0 -528
- package/.github/workflows/ci.yml +0 -41
- package/.idea/codeStyles/Project.xml +0 -59
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/maverick-wave.iml +0 -12
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -6
- package/.idea/vcs.xml +0 -6
- package/.prettierignore +0 -8
- package/.prettierrc.json +0 -7
- package/CHANGELOG.md +0 -950
- package/CLAUDE.md +0 -60
- package/gulpfile.js +0 -167
- package/index.html +0 -1730
- package/release.sh +0 -31
- package/scripts/verify.js +0 -252
- package/src/assets/favicon/apple-touch-icon.png +0 -0
- package/src/assets/favicon/favicon-96x96.png +0 -0
- package/src/assets/favicon/favicon.svg +0 -1
- package/src/assets/favicon/site.webmanifest +0 -37
- package/src/assets/favicon/web-app-manifest-192x192.png +0 -0
- package/src/assets/favicon/web-app-manifest-512x512.png +0 -0
- package/src/assets/favicon.ico +0 -0
- package/src/assets/header-logo.svg +0 -24
- package/src/assets/images/gallery-city.svg +0 -49
- package/src/assets/images/gallery-desert.svg +0 -25
- package/src/assets/images/gallery-forest.svg +0 -46
- package/src/assets/images/gallery-lake.svg +0 -26
- package/src/assets/images/gallery-mountain.svg +0 -19
- package/src/assets/images/gallery-ocean.svg +0 -26
- package/src/assets/images/gallery-oldtown.svg +0 -41
- package/src/assets/images/gallery-snow.svg +0 -39
- package/src/assets/images/photo-balloon.svg +0 -35
- package/src/assets/images/photo-forest-path.svg +0 -31
- package/src/assets/images/photo-lighthouse.svg +0 -42
- package/src/assets/images/photo-palm.svg +0 -27
- package/src/assets/images/photo-peak.svg +0 -27
- package/src/assets/images/photo-tower.svg +0 -34
- package/src/assets/images/photo-waterfall.svg +0 -32
- package/src/assets/images/slider-field.svg +0 -124
- package/src/assets/images/slider-forest.svg +0 -33
- package/src/assets/images/slider-lake.svg +0 -35
- package/src/assets/images/slider-mountains.svg +0 -29
- package/src/assets/images/slider-trees.svg +0 -41
- package/src/assets/images/story-aurora.svg +0 -36
- package/src/assets/images/story-beach.svg +0 -34
- package/src/assets/images/story-stars.svg +0 -35
- package/src/assets/images/tile-analytics.svg +0 -22
- package/src/assets/images/tile-cloud.svg +0 -19
- package/src/assets/images/tile-ecommerce.svg +0 -14
- package/src/assets/images/tile-enterprise.svg +0 -22
- package/src/assets/images/tile-marketing.svg +0 -16
- package/src/assets/media/demo-chime.wav +0 -0
- package/src/assets/media/story-sunrise.jpg +0 -0
- package/src/assets/media/story-sunrise.mp4 +0 -0
- package/src/partials/accordions-container.html +0 -179
- package/src/partials/alerts-container.html +0 -151
- package/src/partials/announcement-container.html +0 -67
- package/src/partials/avatars-container.html +0 -229
- package/src/partials/badges-container.html +0 -114
- package/src/partials/blog-posts-container.html +0 -158
- package/src/partials/breadcrumbs-container.html +0 -126
- package/src/partials/button-bar-container.html +0 -175
- package/src/partials/buttons-container.html +0 -272
- package/src/partials/calendar-container.html +0 -203
- package/src/partials/cards-container.html +0 -727
- package/src/partials/code-container.html +0 -194
- package/src/partials/colors-container.html +0 -263
- package/src/partials/coming-soon-container.html +0 -10
- package/src/partials/contact-container.html +0 -85
- package/src/partials/content-slider-container.html +0 -36
- package/src/partials/divider-container.html +0 -70
- package/src/partials/documentation-container.html +0 -204
- package/src/partials/dropdown-container.html +0 -119
- package/src/partials/empty-state-container.html +0 -79
- package/src/partials/feed-container.html +0 -506
- package/src/partials/footer-container.html +0 -113
- package/src/partials/form-container.html +0 -262
- package/src/partials/form-elements-container.html +0 -616
- package/src/partials/form-field-container.html +0 -166
- package/src/partials/gallery-container.html +0 -62
- package/src/partials/get-started-container.html +0 -423
- package/src/partials/grid-container.html +0 -191
- package/src/partials/header-container.html +0 -69
- package/src/partials/header-utilities-container.html +0 -331
- package/src/partials/highlights-container.html +0 -71
- package/src/partials/history-container.html +0 -67
- package/src/partials/home-container.html +0 -31
- package/src/partials/html-lists-container.html +0 -63
- package/src/partials/info-container.html +0 -104
- package/src/partials/input-group-container.html +0 -299
- package/src/partials/item-lists-container.html +0 -368
- package/src/partials/kanban-container.html +0 -459
- package/src/partials/kbd-container.html +0 -63
- package/src/partials/leader-row-container.html +0 -139
- package/src/partials/login-container.html +0 -65
- package/src/partials/lunch-menu-container.html +0 -341
- package/src/partials/media-container.html +0 -27
- package/src/partials/meta-info-container.html +0 -21
- package/src/partials/modals-container.html +0 -199
- package/src/partials/mosaic-container.html +0 -173
- package/src/partials/page-header-container.html +0 -78
- package/src/partials/pagination-container.html +0 -64
- package/src/partials/palette-container.html +0 -480
- package/src/partials/panels-container.html +0 -126
- package/src/partials/parallax-container.html +0 -147
- package/src/partials/portrait-gallery-container.html +0 -175
- package/src/partials/preview-container.html +0 -136
- package/src/partials/pricing-container.html +0 -523
- package/src/partials/progress-container.html +0 -230
- package/src/partials/prose-container.html +0 -43
- package/src/partials/ratings-container.html +0 -104
- package/src/partials/section-head-container.html +0 -77
- package/src/partials/segmented-container.html +0 -66
- package/src/partials/skeleton-container.html +0 -87
- package/src/partials/spinners-container.html +0 -96
- package/src/partials/stepper-container.html +0 -111
- package/src/partials/stories-container.html +0 -182
- package/src/partials/tables-container.html +0 -309
- package/src/partials/tabs-container.html +0 -290
- package/src/partials/tags-container.html +0 -242
- package/src/partials/techstack-bucket-container.html +0 -187
- package/src/partials/testimonials-container.html +0 -88
- package/src/partials/tiles-container.html +0 -247
- package/src/partials/timelines-container.html +0 -196
- package/src/partials/typography-container.html +0 -74
- package/src/partials/utilities-container.html +0 -553
package/package.json
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "maverick-wave",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.31.0",
|
|
4
4
|
"config": {
|
|
5
|
-
"version_short": "5.
|
|
5
|
+
"version_short": "5.31"
|
|
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",
|
|
9
9
|
"style": "src/scss/main.scss",
|
|
10
|
+
"files": [
|
|
11
|
+
"maverick-wave.min.css",
|
|
12
|
+
"maverick-wave.min.js",
|
|
13
|
+
"src/scss",
|
|
14
|
+
"src/js"
|
|
15
|
+
],
|
|
10
16
|
"scripts": {
|
|
11
17
|
"clean": "gulp clean",
|
|
12
18
|
"format": "prettier --check \"**/*.{scss,js,json,html,md}\"",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
|
|
59
59
|
@include hover-move {
|
|
60
60
|
img {
|
|
61
|
-
transform: scale(1.
|
|
61
|
+
transform: scale(1.06);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
// Transition only here, so the sweep resets instantly instead of travelling back
|
|
@@ -218,14 +218,46 @@
|
|
|
218
218
|
aspect-ratio: 9 / 16;
|
|
219
219
|
}
|
|
220
220
|
|
|
221
|
+
// Width-driven, so max-width can shrink it to a narrow column at 3:2
|
|
222
|
+
&-lg.mw-avatar-landscape,
|
|
223
|
+
&-xl.mw-avatar-landscape {
|
|
224
|
+
height: auto;
|
|
225
|
+
max-width: 100%;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
// Over the round step - a photo shows more of the person than a face
|
|
229
|
+
&-lg.mw-avatar-landscape {
|
|
230
|
+
width: 228px;
|
|
231
|
+
|
|
232
|
+
@include media-up('sm') {
|
|
233
|
+
width: 273px;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
&-xl.mw-avatar-landscape {
|
|
238
|
+
width: 285px;
|
|
239
|
+
|
|
240
|
+
@include media-up('sm') {
|
|
241
|
+
width: 399px;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
&-xl.mw-avatar-portrait {
|
|
246
|
+
width: 172px;
|
|
247
|
+
|
|
248
|
+
@include media-up('sm') {
|
|
249
|
+
width: 242px;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
221
253
|
// 9:16 this small reads as a sliver - wider at the same height instead
|
|
222
254
|
&-lg.mw-avatar-portrait {
|
|
223
255
|
width: auto;
|
|
224
|
-
height: calc(
|
|
256
|
+
height: calc(138px * 16 / 9);
|
|
225
257
|
aspect-ratio: 2 / 3;
|
|
226
258
|
|
|
227
259
|
@include media-up('sm') {
|
|
228
|
-
height: calc(
|
|
260
|
+
height: calc(166px * 16 / 9);
|
|
229
261
|
}
|
|
230
262
|
}
|
|
231
263
|
}
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
top: calc(100% + #{spacing('2')});
|
|
44
44
|
left: 0;
|
|
45
45
|
z-index: z-index('menu');
|
|
46
|
-
min-width: 200px;
|
|
46
|
+
min-width: var(--mw-dropdown-min-width, 200px);
|
|
47
47
|
// Never wider than the screen it opens on, whatever the longest item says
|
|
48
48
|
max-width: min(320px, calc(100vw - 2 * var(--mw-container-gutter)));
|
|
49
49
|
padding: spacing('2');
|
|
@@ -252,6 +252,21 @@
|
|
|
252
252
|
.mw-dropdown-up .mw-dropdown-menu {
|
|
253
253
|
position-area: block-start span-inline-end;
|
|
254
254
|
}
|
|
255
|
+
|
|
256
|
+
// In the bar a menu hangs off the bar's lower edge, not the trigger's - the
|
|
257
|
+
// trigger sits mid-bar, and a menu a few pixels under it starts inside it.
|
|
258
|
+
// Only a sideways flip is left, a menu above the bar would be off screen.
|
|
259
|
+
.mw-header-actions .mw-dropdown-menu {
|
|
260
|
+
position-area: none;
|
|
261
|
+
position-try-fallbacks: flip-inline;
|
|
262
|
+
top: var(--mw-header-height);
|
|
263
|
+
left: anchor(left);
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
.mw-header-actions .mw-dropdown-end .mw-dropdown-menu {
|
|
267
|
+
left: auto;
|
|
268
|
+
right: anchor(right);
|
|
269
|
+
}
|
|
255
270
|
}
|
|
256
271
|
|
|
257
272
|
// A menu opened by a thumb needs rows a thumb can hit, and the room to show
|
|
@@ -260,6 +275,14 @@
|
|
|
260
275
|
@include touch-context('sm') {
|
|
261
276
|
.mw-dropdown-menu {
|
|
262
277
|
min-width: max(100%, 240px);
|
|
278
|
+
|
|
279
|
+
// A fixed menu's 100% is its containing block - the viewport, or a whole
|
|
280
|
+
// bar with a backdrop filter - which slid a header menu under the logo.
|
|
281
|
+
// The plain 240px is for a Safari that anchors but cannot measure yet.
|
|
282
|
+
@supports (anchor-scope: all) and (position-area: block-end) {
|
|
283
|
+
min-width: 240px;
|
|
284
|
+
min-width: max(anchor-size(width), 240px);
|
|
285
|
+
}
|
|
263
286
|
}
|
|
264
287
|
|
|
265
288
|
.mw-dropdown-item {
|
|
@@ -47,14 +47,10 @@
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
// A language list is short and its labels are one word - the 200px default
|
|
50
|
-
// menu leaves half of it empty.
|
|
51
|
-
//
|
|
52
|
-
.mw-lang-switch
|
|
53
|
-
min-width: 170px;
|
|
54
|
-
|
|
55
|
-
@include touch-context('sm') {
|
|
56
|
-
min-width: max(100%, 240px);
|
|
57
|
-
}
|
|
50
|
+
// menu leaves half of it empty. Through the dropdown's property, so under a
|
|
51
|
+
// thumb the dropdown's own widening still wins.
|
|
52
|
+
.mw-lang-switch {
|
|
53
|
+
--mw-dropdown-min-width: 170px;
|
|
58
54
|
}
|
|
59
55
|
|
|
60
56
|
.mw-lang-switch-name {
|
|
@@ -42,9 +42,10 @@
|
|
|
42
42
|
background: var(--mw-card-background);
|
|
43
43
|
@include surface(0);
|
|
44
44
|
box-shadow: var(--mw-elevation-5);
|
|
45
|
+
--mw-modal-max-height: 85dvh;
|
|
45
46
|
max-width: 520px;
|
|
46
47
|
width: 100%;
|
|
47
|
-
max-height:
|
|
48
|
+
max-height: var(--mw-modal-max-height);
|
|
48
49
|
display: flex;
|
|
49
50
|
flex-direction: column;
|
|
50
51
|
z-index: z-index('modal');
|
|
@@ -61,15 +62,15 @@
|
|
|
61
62
|
// two read as the same modal rendered twice.
|
|
62
63
|
&.mw-modal-sm {
|
|
63
64
|
max-width: 370px;
|
|
64
|
-
max-height: 80dvh;
|
|
65
|
+
--mw-modal-max-height: 80dvh;
|
|
65
66
|
}
|
|
66
67
|
&.mw-modal-lg {
|
|
67
68
|
max-width: 720px;
|
|
68
|
-
max-height: 90dvh;
|
|
69
|
+
--mw-modal-max-height: 90dvh;
|
|
69
70
|
}
|
|
70
71
|
&.mw-modal-xl {
|
|
71
72
|
max-width: 960px;
|
|
72
|
-
max-height: 92dvh;
|
|
73
|
+
--mw-modal-max-height: 92dvh;
|
|
73
74
|
}
|
|
74
75
|
}
|
|
75
76
|
|
|
@@ -85,7 +86,7 @@
|
|
|
85
86
|
.mw-modal.mw-modal-lg,
|
|
86
87
|
.mw-modal.mw-modal-xl {
|
|
87
88
|
max-width: 100%;
|
|
88
|
-
max-height: 92dvh;
|
|
89
|
+
--mw-modal-max-height: 92dvh;
|
|
89
90
|
border-radius: radius('xl') radius('xl') radius('none') radius('none');
|
|
90
91
|
padding-bottom: env(safe-area-inset-bottom, 0px);
|
|
91
92
|
// Straight up from the bottom edge - a sheet does not scale in
|
|
@@ -173,6 +174,13 @@
|
|
|
173
174
|
display var(--mw-duration-base) allow-discrete;
|
|
174
175
|
|
|
175
176
|
&[open] {
|
|
177
|
+
// A block, not the flex column of the div version and not a grid: iOS
|
|
178
|
+
// WebKit takes the intrinsic height of a scrolling flex or grid item in a
|
|
179
|
+
// top-layer dialog as zero. A dialog shorter than its cap then shows its
|
|
180
|
+
// header and footer and nothing between - a grid only hides it until the
|
|
181
|
+
// content outgrows the cap. Desktop browsers and Playwright's WebKit do not
|
|
182
|
+
// show it, so only a real iPhone can confirm a change here.
|
|
183
|
+
display: block;
|
|
176
184
|
opacity: 1;
|
|
177
185
|
transform: scale(1) translateY(0);
|
|
178
186
|
|
|
@@ -184,6 +192,19 @@
|
|
|
184
192
|
}
|
|
185
193
|
}
|
|
186
194
|
|
|
195
|
+
// With no row to scroll in, the body gets a cap of its own: the dialog's,
|
|
196
|
+
// less the room its header and footer take (61px each on a phone sheet)
|
|
197
|
+
.mw-modal-body {
|
|
198
|
+
max-height: calc(var(--mw-modal-max-height) - 8rem);
|
|
199
|
+
// Without it an absolute child - screen reader text, a tooltip - anchors to
|
|
200
|
+
// the dialog, escapes the body's scroll and makes the whole dialog scroll
|
|
201
|
+
position: relative;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
&:not(:has(> .mw-modal-footer)) .mw-modal-body {
|
|
205
|
+
max-height: calc(var(--mw-modal-max-height) - 4rem);
|
|
206
|
+
}
|
|
207
|
+
|
|
187
208
|
&::backdrop {
|
|
188
209
|
background: var(--mw-overlay-background);
|
|
189
210
|
backdrop-filter: blur(3px);
|
|
@@ -230,6 +251,13 @@
|
|
|
230
251
|
}
|
|
231
252
|
}
|
|
232
253
|
|
|
254
|
+
// Neither shape locks the page scroll behind it - the <dialog> only makes the
|
|
255
|
+
// page inert, which still lets a finger or a wheel move it
|
|
256
|
+
:root:has(dialog.mw-modal[open], .mw-modal-overlay.mw-modal-open) {
|
|
257
|
+
overflow: hidden;
|
|
258
|
+
scrollbar-gutter: stable; // Or the page shifts by the hidden scrollbar
|
|
259
|
+
}
|
|
260
|
+
|
|
233
261
|
// Modal sections
|
|
234
262
|
.mw-modal-header {
|
|
235
263
|
padding: spacing('3') spacing('5');
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(grep -rn '$_mw\\\\|$_size\\\\|$_border' src/scss '--include=*.scss')",
|
|
5
|
-
"Bash(npm run:*)",
|
|
6
|
-
"Bash(node:*)",
|
|
7
|
-
"Bash(git ls-tree:*)",
|
|
8
|
-
"Bash(git ls-remote:*)",
|
|
9
|
-
"Bash(npm outdated:*)",
|
|
10
|
-
"Bash(npm update:*)",
|
|
11
|
-
"Bash(npm audit:*)",
|
|
12
|
-
"Bash(npx prettier *)"
|
|
13
|
-
]
|
|
14
|
-
},
|
|
15
|
-
"hooks": {
|
|
16
|
-
"PostToolUse": [
|
|
17
|
-
{
|
|
18
|
-
"matcher": "Edit|Write",
|
|
19
|
-
"hooks": [
|
|
20
|
-
{
|
|
21
|
-
"type": "command",
|
|
22
|
-
"command": "[ ! -f '/Users/m1well/.claude/skills/impeccable/scripts/impeccable' ] || '/Users/m1well/.claude/skills/impeccable/scripts/impeccable' hook",
|
|
23
|
-
"timeout": 5,
|
|
24
|
-
"statusMessage": "Checking UI changes"
|
|
25
|
-
}
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
],
|
|
29
|
-
"Stop": [
|
|
30
|
-
{
|
|
31
|
-
"hooks": [
|
|
32
|
-
{
|
|
33
|
-
"type": "command",
|
|
34
|
-
"command": "[ ! -f '/Users/m1well/.claude/skills/impeccable/scripts/impeccable' ] || '/Users/m1well/.claude/skills/impeccable/scripts/impeccable' hook",
|
|
35
|
-
"timeout": 30,
|
|
36
|
-
"statusMessage": "Design deep pass"
|
|
37
|
-
}
|
|
38
|
-
]
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
},
|
|
42
|
-
"description": "Impeccable design detector: immediate-tier checks after Edit/Write on UI files, full-rule deep pass on Stop."
|
|
43
|
-
}
|