maverick-wave 5.25.0 → 5.27.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/skills/mw-maverick-wave/SKILL.md +9 -1
- package/.claude/skills/mw-maverick-wave/references/components.md +13 -6
- package/.claude/skills/mw-maverick-wave/references/layout.md +18 -12
- package/.claude/skills/mw-maverick-wave/references/theming.md +15 -10
- package/CHANGELOG.md +12 -0
- package/README.md +2 -2
- package/maverick-wave.min.css +8 -6
- package/package.json +2 -2
- package/scripts/verify.js +10 -1
- package/src/partials/accordions-container.html +1 -1
- package/src/partials/alerts-container.html +1 -1
- package/src/partials/announcement-container.html +1 -1
- package/src/partials/avatars-container.html +1 -1
- package/src/partials/badges-container.html +1 -1
- package/src/partials/blog-posts-container.html +2 -2
- package/src/partials/breadcrumbs-container.html +1 -1
- package/src/partials/button-bar-container.html +1 -1
- package/src/partials/buttons-container.html +1 -1
- package/src/partials/calendar-container.html +1 -1
- package/src/partials/cards-container.html +1 -1
- package/src/partials/code-container.html +1 -1
- package/src/partials/colors-container.html +3 -3
- package/src/partials/coming-soon-container.html +1 -1
- package/src/partials/contact-container.html +1 -1
- package/src/partials/divider-container.html +1 -1
- package/src/partials/dropdown-container.html +1 -1
- package/src/partials/empty-state-container.html +1 -1
- package/src/partials/form-container.html +1 -1
- package/src/partials/form-elements-container.html +1 -1
- package/src/partials/form-field-container.html +1 -1
- package/src/partials/gallery-container.html +1 -1
- package/src/partials/grid-container.html +1 -1
- package/src/partials/header-utilities-container.html +2 -2
- package/src/partials/html-lists-container.html +1 -1
- package/src/partials/info-container.html +1 -1
- package/src/partials/input-group-container.html +1 -1
- package/src/partials/item-lists-container.html +1 -1
- package/src/partials/kanban-container.html +2 -2
- package/src/partials/kbd-container.html +1 -1
- package/src/partials/leader-row-container.html +2 -2
- package/src/partials/login-container.html +2 -2
- package/src/partials/lunch-menu-container.html +2 -2
- package/src/partials/media-container.html +1 -1
- package/src/partials/meta-info-container.html +1 -1
- package/src/partials/modals-container.html +1 -1
- package/src/partials/page-header-container.html +1 -1
- package/src/partials/pagination-container.html +2 -2
- package/src/partials/palette-container.html +2 -2
- package/src/partials/panels-container.html +2 -2
- package/src/partials/parallax-container.html +1 -1
- package/src/partials/pricing-container.html +2 -2
- package/src/partials/progress-container.html +1 -1
- package/src/partials/prose-container.html +1 -1
- package/src/partials/ratings-container.html +1 -1
- package/src/partials/section-head-container.html +6 -3
- package/src/partials/segmented-container.html +1 -1
- package/src/partials/skeleton-container.html +1 -1
- package/src/partials/spinners-container.html +1 -1
- package/src/partials/stepper-container.html +1 -1
- package/src/partials/tables-container.html +1 -1
- package/src/partials/tabs-container.html +1 -1
- package/src/partials/tags-container.html +1 -1
- package/src/partials/testimonials-container.html +1 -1
- package/src/partials/tiles-container.html +39 -39
- package/src/partials/typography-container.html +1 -1
- package/src/partials/utilities-container.html +1 -1
- package/src/scss/base/_base.scss +37 -11
- package/src/scss/base/_reset.scss +7 -1
- package/src/scss/components/_announcement.scss +1 -3
- package/src/scss/components/_blog-post.scss +5 -4
- package/src/scss/components/_cards.scss +2 -2
- package/src/scss/components/_contact.scss +5 -3
- package/src/scss/components/_localhost-indicator.scss +2 -2
- package/src/scss/components/_panels.scss +18 -52
- package/src/scss/components/_tabs.scss +2 -2
- package/src/scss/components/_tiles.scss +43 -49
- package/src/scss/layout/_grid.scss +22 -0
- package/src/scss/layout/_header.scss +0 -11
- package/src/scss/layout/_home.scss +2 -2
- package/src/scss/layout/_section.scss +45 -13
- package/src/scss/utilities/_touch-targets.scss +4 -0
|
@@ -116,6 +116,9 @@ system monospace stack behind it. Load a font yourself and either set the three
|
|
|
116
116
|
|
|
117
117
|
- Classes: `mw-` prefix, kebab-case: `.mw-button-bar`, `.mw-item-list-compact`
|
|
118
118
|
- Tokens: `--mw-` prefix: `--mw-primary-color`, `--mw-border-accent`
|
|
119
|
+
- Keyframes: `mw-` prefix too (`mw-toast-in`, `mw-home-fade`). `@keyframes` is
|
|
120
|
+
global, so an unprefixed name in your app and one in the framework are the
|
|
121
|
+
same animation - the loser disappears without an error
|
|
119
122
|
- Variants are suffixes on the base class: `mw-btn` + `mw-btn-primary`,
|
|
120
123
|
`mw-alert` + `mw-alert-danger`
|
|
121
124
|
- Colour variant names are the same everywhere: `primary`, `secondary`,
|
|
@@ -379,7 +382,8 @@ feature frame) ·
|
|
|
379
382
|
11. **Touch targets grow on their own.** On `pointer: coarse` or below 768px,
|
|
380
383
|
`mw-btn` gets a 2.75rem minimum height, `mw-btn-sm`, `mw-input-sm`,
|
|
381
384
|
`mw-select-sm` and `mw-textarea-sm` 2.5rem, a tab 2.75rem, a calendar day
|
|
382
|
-
44px, and list rows / menu items / pager pages /
|
|
385
|
+
44px, `mw-section-btn` 2.75rem, and list rows / menu items / pager pages /
|
|
386
|
+
accordion headers 2.75rem.
|
|
383
387
|
`mw-btn-mini` keeps its 18px circle - it sits in tag rows and table cells
|
|
384
388
|
where a bigger one would shift the layout - and grows its _hit area_ to 28px
|
|
385
389
|
via a pseudo-element, and `mw-kanban-action` does the same - its 32px box
|
|
@@ -475,6 +479,10 @@ feature frame) ·
|
|
|
475
479
|
with it, so `<button type="button" class="mw-tabs-nav-item" data-tab="...">`
|
|
476
480
|
is the whole markup. The burger is the worst of the five to get wrong:
|
|
477
481
|
below the collapse breakpoint it is the only route to the navigation.
|
|
482
|
+
`mw-tile` is the same rule from the other side: the class paints a surface
|
|
483
|
+
on anything, but the hand cursor, the focus ring and the tap handling only
|
|
484
|
+
come with `<a class="mw-tile">` or `<button class="mw-tile">`. On a `<div>`
|
|
485
|
+
you get the look and nothing a keyboard can reach.
|
|
478
486
|
If you build your own clickable thing: the element decides whether anyone
|
|
479
487
|
without a mouse can use it, the class only decides how it looks.
|
|
480
488
|
28. **A link in running text is `mw-link`, not `mw-btn mw-btn-link`.** Since
|
|
@@ -492,29 +492,36 @@ A bordered box with a header rule - the "titled section" of an application.
|
|
|
492
492
|
```
|
|
493
493
|
|
|
494
494
|
- Header colour: `mw-panel-primary`, `mw-panel-secondary`; without them the
|
|
495
|
-
header is neutral.
|
|
495
|
+
header is neutral. Title and action sit at opposite ends and wrap to two rows
|
|
496
|
+
when the panel gets too narrow for both.
|
|
496
497
|
- Height: `mw-panel-scrollable` (500px), `mw-panel-max-height-sm` (300px),
|
|
497
498
|
`-md` (500px), `-lg` (700px) - the body scrolls, header and footer stay.
|
|
498
|
-
-
|
|
499
|
+
- Panels in a grid row end up equally tall on their own - a grid item stretches.
|
|
500
|
+
A height variant opts out with `align-self: start`.
|
|
499
501
|
|
|
500
502
|
## Tiles
|
|
501
503
|
|
|
502
|
-
Compact
|
|
504
|
+
Compact info blocks. The look is on the class, the click is on the element: put
|
|
505
|
+
`mw-tile` on an `<a>` or a `<button>` and it gets the hand cursor, the focus ring
|
|
506
|
+
and the tap handling. On a `<div>` it stays a plain surface - no cursor, no ring,
|
|
507
|
+
because there would be nothing to reach by keyboard.
|
|
503
508
|
|
|
504
509
|
```html
|
|
505
510
|
<div class="mw-tiles mw-tiles-2col">
|
|
506
|
-
<
|
|
511
|
+
<a href="/billing" class="mw-tile">
|
|
507
512
|
<div class="mw-tile-img"><img src="icon.png" alt="" /></div>
|
|
508
513
|
<h3 class="mw-tile-header">Billing</h3>
|
|
509
514
|
<div class="mw-tile-body">
|
|
510
515
|
<p>Invoices and payments</p>
|
|
511
516
|
</div>
|
|
512
517
|
<div class="mw-tile-footer">Updated 2026-01-02</div>
|
|
513
|
-
</
|
|
518
|
+
</a>
|
|
514
519
|
</div>
|
|
515
520
|
```
|
|
516
521
|
|
|
517
|
-
Container: `mw-tiles` (3
|
|
522
|
+
Container: `mw-tiles` (1 / 2 at `sm` / 3 at `md`), `mw-tiles-2col` (1 / 2 at
|
|
523
|
+
`sm`), `mw-tiles-4col` (1 / 2 at `sm` / 4 at `lg`) - the same ramps `mw-grid-3`,
|
|
524
|
+
`-2` and `-4` use, and the full container width like any other grid.
|
|
518
525
|
Tile sizes: `mw-tile-sm`, `mw-tile-lg`.
|
|
519
526
|
|
|
520
527
|
## Accordion
|
|
@@ -237,16 +237,16 @@ pointing at the trigger in every combination.
|
|
|
237
237
|
|
|
238
238
|
## Sections
|
|
239
239
|
|
|
240
|
-
| Class | Use
|
|
241
|
-
| ----------------------------------- |
|
|
242
|
-
| `mw-section` | Vertical rhythm for a page band - `--mw-section-padding-block`, 3.3rem (2.5rem below `md`, 1.75rem below `sm`)
|
|
243
|
-
| `mw-section-alternate` | Diagonal pattern background; combine with `mw-section`
|
|
244
|
-
| `mw-section-head` | The opening of a section: hairline rule, a mark on its left end, title and lead - all on one left edge. Variants `-secondary`, `-success`, `-warning`, `-danger`, `-info` recolour the mark
|
|
245
|
-
| `mw-section-head-title` | The heading inside it, `2xl` growing to `4xl` up to 992px, tight tracking
|
|
246
|
-
| `mw-section-head-intro` | The lead under it - muted, 65 characters, and from `md` up at most four fifths of the container
|
|
247
|
-
| `mw-section-head-numbered` | Adds the running number at the right end of the rule; the browser counts, restarting per `mw-main`
|
|
248
|
-
| `mw-section-subtitle` | Left-aligned heading with a thin secondary underline, `xl` growing to `2xl` up to 576px - the level inside a section
|
|
249
|
-
| `mw-section-nav` + `mw-section-btn` | Sticky single-row strip of outline-style jump links; parks under the header and scrolls sideways when it overflows
|
|
240
|
+
| Class | Use |
|
|
241
|
+
| ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
242
|
+
| `mw-section` | Vertical rhythm for a page band - `--mw-section-padding-block`, 3.3rem (2.5rem below `md`, 1.75rem below `sm`). Point it at `--mw-section-padding-compact` or `--mw-section-padding-airy`, which step down the same way, or at `--mw-section-padding-fluid`, which ramps with the screen instead |
|
|
243
|
+
| `mw-section-alternate` | Diagonal pattern background; combine with `mw-section` |
|
|
244
|
+
| `mw-section-head` | The opening of a section: hairline rule, a mark on its left end, title and lead - all on one left edge. Variants `-secondary`, `-success`, `-warning`, `-danger`, `-info` recolour the mark |
|
|
245
|
+
| `mw-section-head-title` | The heading inside it, `2xl` growing to `4xl` up to 992px, tight tracking |
|
|
246
|
+
| `mw-section-head-intro` | The lead under it - muted, 65 characters, and from `md` up at most four fifths of the container |
|
|
247
|
+
| `mw-section-head-numbered` | Adds the running number at the right end of the rule; the browser counts, restarting per `mw-main` |
|
|
248
|
+
| `mw-section-subtitle` | Left-aligned heading with a thin secondary underline, `xl` growing to `2xl` up to 576px - the level inside a section. A paragraph right under it is treated as its lead and gets the gap to the content from the framework - no margin utility needed |
|
|
249
|
+
| `mw-section-nav` + `mw-section-btn` | Sticky single-row strip of outline-style jump links; parks under the header and scrolls sideways when it overflows |
|
|
250
250
|
|
|
251
251
|
```html
|
|
252
252
|
<section class="mw-section mw-section-alternate">
|
|
@@ -282,9 +282,15 @@ Its tokens: `--mw-section-head-gap` (space to the content below),
|
|
|
282
282
|
`--mw-section-head-pad` (rule to title), `--mw-section-head-mark-width` (80px)
|
|
283
283
|
and `--mw-section-head-mark-color`.
|
|
284
284
|
|
|
285
|
+
The first two are multiples of `--mw-section-head-step`, which is derived from
|
|
286
|
+
`--mw-section-padding-block` - so a section spacing preset moves the heads with
|
|
287
|
+
it, and the fluid preset carries them along without a ramp of its own. A head
|
|
288
|
+
with no `mw-section-head-intro` takes a smaller gap: the gap sized to follow a
|
|
289
|
+
paragraph reads as a hole under a rule and one line of type.
|
|
290
|
+
|
|
285
291
|
The strip sticks at `--mw-header-height` and is `--mw-section-nav-height` tall
|
|
286
|
-
(3.
|
|
287
|
-
|
|
292
|
+
(3.75rem). A page carrying one adds that height to `scroll-padding-top` on its
|
|
293
|
+
own, so anchors and tab stops both clear it - nothing to add per target.
|
|
288
294
|
|
|
289
295
|
## Page header
|
|
290
296
|
|
|
@@ -83,7 +83,10 @@ Safari 16.4+, Firefox 128+. The same range is declared as `browserslist` in
|
|
|
83
83
|
| `--mw-container-gutter`, `--mw-container-width` | Page gutter of `mw-container` (fluid `clamp(1rem, 4.2vw + 0.5rem, 4rem)`, never below the safe-area inset) and the width derived from it (`min(1200px, 100% - 2 * gutter)`) |
|
|
84
84
|
| `--mw-section-padding-block` | Top/bottom rhythm of `mw-section` (3.3rem, stepping down to 2.5rem below `md` and 1.75rem below `sm`) |
|
|
85
85
|
| `--mw-section-padding-fluid` | The fluid alternative to the value above - 1.75rem on a phone up to 5.5rem at `xl`. Not applied by itself: set `--mw-section-padding-block: var(--mw-section-padding-fluid)` |
|
|
86
|
-
| `--mw-section-
|
|
86
|
+
| `--mw-section-padding-compact`, `--mw-section-padding-airy` | The two presets, as tokens so the phone steps reach them - point `--mw-section-padding-block` at one |
|
|
87
|
+
| `--mw-section-head-step` | One step of the head rhythm, derived from `--mw-section-padding-block`. Every measure in a head and around a subtitle is a multiple of it, so a spacing preset moves them all |
|
|
88
|
+
| `--mw-section-nav-height` | Height the sticky `mw-section-nav` reserves (3.75rem). A page carrying a strip adds it to `scroll-padding-top` itself, through the offset token below |
|
|
89
|
+
| `--mw-announcement-offset`, `--mw-section-nav-offset` | What each layer of sticky chrome below the header adds to `scroll-padding-top`. `0px` until the component switches it on, so a page with both a ribbon and a strip reserves for both. For a sticky bar of your own, override `scroll-padding-top` on `html` - the calc names these two |
|
|
87
90
|
| `--mw-root-font-size` | Percentage the whole rem scale is built on (`100%`). Type, spacing and control heights move with it; px breakpoints do not |
|
|
88
91
|
| `--mw-calendar-dot` | Colour of a single calendar dot - set it per dot or per cell; the `mw-calendar-dot-*` classes are presets for it |
|
|
89
92
|
| `--mw-scroll-hint-cover` | Colour the scroll hint on a tab bar fades into. Preset to the page, re-pointed to the card background inside `mw-card`, `mw-panel`, `mw-modal`, `mw-tile`, `mw-calendar` |
|
|
@@ -233,15 +236,17 @@ URL carries the choice - a link is how a look gets agreed on before it is built.
|
|
|
233
236
|
| `mw-density-compact` | Card and panel padding and the three control heights drop one step down the spacing scale. Type is untouched - `--mw-root-font-size` is the switch that scales everything together |
|
|
234
237
|
| `mw-density-roomy` | The same one step up |
|
|
235
238
|
|
|
236
|
-
| Property
|
|
237
|
-
|
|
|
238
|
-
| `--mw-radius-scale`
|
|
239
|
-
| `--mw-root-font-size`
|
|
240
|
-
| `--mw-font-family-heading`
|
|
241
|
-
| `--mw-container-width`
|
|
242
|
-
| `--mw-section-padding-block`
|
|
243
|
-
| `--mw-section-padding-fluid`
|
|
244
|
-
| `--mw-
|
|
239
|
+
| Property | Effect |
|
|
240
|
+
| ----------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
241
|
+
| `--mw-radius-scale` | Multiplies the whole radius scale - `0` squares everything off |
|
|
242
|
+
| `--mw-root-font-size` | Percentage on `html`. The scale is rem, so type, padding and control heights move together; breakpoints are px and stay put |
|
|
243
|
+
| `--mw-font-family-heading` | Headline typeface; body copy is untouched |
|
|
244
|
+
| `--mw-container-width` | Where the content stops growing |
|
|
245
|
+
| `--mw-section-padding-block` | Air above and below each section |
|
|
246
|
+
| `--mw-section-padding-fluid` | The same, but growing with the screen - point the line above at it |
|
|
247
|
+
| `--mw-section-padding-compact`, `--mw-section-padding-airy` | A tighter and an airier fixed rhythm - point the line above at one |
|
|
248
|
+
| `--mw-section-head-step` | Scales every gap in a section head and around a subtitle at once |
|
|
249
|
+
| `--mw-motion-scale` | Multiplies all six duration tokens - `0.6` brisk, `1.6` relaxed. `prefers-reduced-motion` still overrides it |
|
|
245
250
|
|
|
246
251
|
**Writing your own.** A variant that retunes a _theme-bound_ token - anything in
|
|
247
252
|
the dark/light maps - cannot be written on `:root` alone: `mw-theme-light`
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,18 @@ Patch releases are only for test purposes - here I only document major and minor
|
|
|
6
6
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
7
7
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
8
8
|
|
|
9
|
+
## [5.27.0] - 2026-09-21
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- Spacing and small refactorings in css code
|
|
14
|
+
|
|
15
|
+
## [5.26.0] - 2026-09-20
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- Spacing
|
|
20
|
+
|
|
9
21
|
## [5.25.0] - 2026-09-20
|
|
10
22
|
|
|
11
23
|
### Added
|
package/README.md
CHANGED
|
@@ -45,12 +45,12 @@ The result is a framework that balances utility with simplicity, offering develo
|
|
|
45
45
|
<title>My MaverickWave Project</title>
|
|
46
46
|
<link
|
|
47
47
|
rel="stylesheet"
|
|
48
|
-
href="https://cdn.jsdelivr.net/npm/maverick-wave@5.
|
|
48
|
+
href="https://cdn.jsdelivr.net/npm/maverick-wave@5.27.0/maverick-wave.min.css"
|
|
49
49
|
/>
|
|
50
50
|
</head>
|
|
51
51
|
<body>
|
|
52
52
|
<!-- Your content here -->
|
|
53
|
-
<script src="https://cdn.jsdelivr.net/npm/maverick-wave@5.
|
|
53
|
+
<script src="https://cdn.jsdelivr.net/npm/maverick-wave@5.27.0/maverick-wave.min.js"></script>
|
|
54
54
|
</body>
|
|
55
55
|
</html>
|
|
56
56
|
```
|