maverick-wave 3.6.0 → 3.6.2

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.
@@ -44,14 +44,14 @@ Load the one you need - do not read them all up front.
44
44
  ```html
45
45
  <link
46
46
  rel="stylesheet"
47
- href="https://cdn.jsdelivr.net/npm/maverick-wave@3.4.0/maverick-wave.min.css"
47
+ href="https://cdn.jsdelivr.net/npm/maverick-wave@3.7.0/maverick-wave.min.css"
48
48
  />
49
49
  <link
50
50
  rel="stylesheet"
51
51
  href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css"
52
52
  />
53
53
  ...
54
- <script src="https://cdn.jsdelivr.net/npm/maverick-wave@3.4.0/maverick-wave.min.js"></script>
54
+ <script src="https://cdn.jsdelivr.net/npm/maverick-wave@3.7.0/maverick-wave.min.js"></script>
55
55
  ```
56
56
 
57
57
  Pin the version. The JS file is optional and only for server-rendered/static pages -
@@ -149,8 +149,8 @@ Everything below is documented in `references/components.md` unless marked other
149
149
  **Actions** `mw-btn` (+ `primary`, `secondary`, `danger`, `success`, `outline`,
150
150
  `link`, `link-muted`, `sm`, `lg`) · `mw-btn-mini` · `mw-button-bar`
151
151
 
152
- **Containers** `mw-card` (+ `simple`, `content`, `lg`, `xl`, `stack`, badge,
153
- ribbon) · `mw-panel` · `mw-tile` · `mw-accordion` · `mw-tabs` · `mw-modal` ·
152
+ **Containers** `mw-card` (+ `simple`, `lg`, `xl`, `stack`, badge, ribbon) ·
153
+ `mw-panel` · `mw-tile` · `mw-accordion` · `mw-tabs` · `mw-modal` ·
154
154
  `mw-item-list` family
155
155
 
156
156
  **Data & status** `mw-table` (+ `subtle`, `sticky-head`, `cards`, `compact`,
@@ -197,6 +197,10 @@ ribbon) · `mw-panel` · `mw-tile` · `mw-accordion` · `mw-tabs` · `mw-modal`
197
197
  7. **`--mw-text-muted-color` on a coloured surface is always wrong.** It follows
198
198
  the theme; buttons, table headers and badges do not. Use
199
199
  `--mw-accent-text-color` there, and `opacity` for disabled states.
200
+ `--mw-accent-text-color` is the text on a **brand** surface, so overriding it
201
+ for a light primary makes it dark everywhere it is used. The fixed grey
202
+ surfaces - tooltip, `mw-btn-mini`, `mw-info-mini`, gallery arrows - therefore
203
+ hardcode white and ignore the token.
200
204
  8. **`mw-card` already lifts on hover** and `mw-btn` already has `inline-flex`
201
205
  plus a gap for icons. Neither has a modifier class for it - adding one from
202
206
  memory produces markup that does nothing.
@@ -206,3 +210,12 @@ ribbon) · `mw-panel` · `mw-tile` · `mw-accordion` · `mw-tabs` · `mw-modal`
206
210
  set.
207
211
  10. **Browser floor: `color-mix()`** - Chrome 111+, Safari 16.2+, Firefox 113+.
208
212
  Older browsers get no colours at all, not merely worse ones.
213
+ 11. **A component host between a container and its children breaks the layout,
214
+ silently.** Every `mw-*` flex or grid container styles its _children_ -
215
+ `mw-grid-*`, `mw-tags`, `mw-button-bar`, `mw-form-actions`, `mw-modal-footer`,
216
+ `mw-toast-stack`. In plain HTML the children are right there; in a SPA a
217
+ component host often sits in between and becomes the item instead, so it
218
+ shrinks to content width or swallows a whole grid row. Put `mw-d-contents` on
219
+ that host - it then generates no box and the children take the item role
220
+ back. Angular: `host: { class: 'mw-d-contents' }`. `mw-header` handles this
221
+ case on its own, the others do not.
@@ -15,7 +15,7 @@ wired up by hand.
15
15
 
16
16
  <link
17
17
  rel="stylesheet"
18
- href="https://cdn.jsdelivr.net/npm/maverick-wave@3.4.0/maverick-wave.min.css"
18
+ href="https://cdn.jsdelivr.net/npm/maverick-wave@3.7.0/maverick-wave.min.css"
19
19
  />
20
20
  <link
21
21
  rel="stylesheet"
@@ -169,7 +169,7 @@ wired up by hand.
169
169
  <h2 class="mw-section-title">Pricing</h2>
170
170
 
171
171
  <div class="mw-grid-3">
172
- <div class="mw-card mw-card-content">
172
+ <div class="mw-card">
173
173
  <div class="mw-card-body">
174
174
  <h3 class="mw-card-title">Starter</h3>
175
175
  <hr class="mw-card-title-divider" />
@@ -187,7 +187,7 @@ wired up by hand.
187
187
  </div>
188
188
  </div>
189
189
 
190
- <div class="mw-card mw-card-content">
190
+ <div class="mw-card">
191
191
  <div class="mw-card-badge mw-card-addon-success">Popular</div>
192
192
  <div class="mw-card-body">
193
193
  <h3 class="mw-card-title">Team</h3>
@@ -206,7 +206,7 @@ wired up by hand.
206
206
  </div>
207
207
  </div>
208
208
 
209
- <div class="mw-card mw-card-content">
209
+ <div class="mw-card">
210
210
  <div class="mw-card-ribbon mw-card-addon-primary">Enterprise</div>
211
211
  <div class="mw-card-body">
212
212
  <h3 class="mw-card-title">Custom</h3>
@@ -332,7 +332,7 @@ wired up by hand.
332
332
  <div class="mw-modal-backdrop" onclick="closeModal('demo')"></div>
333
333
  </div>
334
334
 
335
- <script src="https://cdn.jsdelivr.net/npm/maverick-wave@3.4.0/maverick-wave.min.js"></script>
335
+ <script src="https://cdn.jsdelivr.net/npm/maverick-wave@3.7.0/maverick-wave.min.js"></script>
336
336
  <script>
337
337
  // The only thing the shipped script does not cover: opening a modal.
338
338
  // Closing works through .mw-modal-close, the backdrop is wired above.
@@ -61,7 +61,7 @@ Row of equally treated buttons, centered by default.
61
61
  ## Cards
62
62
 
63
63
  ```html
64
- <div class="mw-card mw-card-content">
64
+ <div class="mw-card">
65
65
  <div class="mw-card-img">
66
66
  <img src="cover.jpg" alt="" />
67
67
  </div>
@@ -79,20 +79,26 @@ Row of equally treated buttons, centered by default.
79
79
  ```
80
80
 
81
81
  - `mw-card` is the shell; the hover lift is built in and has no modifier class.
82
+ It is a flex column by default, so `mw-card-footer` sticks to the bottom and
83
+ cards in a grid line up without any extra class.
82
84
  - `mw-card-simple` is the flat variant with even padding for arbitrary content.
83
- Use it when you only need a padded surface.
84
- - `mw-card-content` turns the card into a flex column so `mw-card-footer` sticks
85
- to the bottom - needed whenever cards sit next to each other in a grid.
86
- - Image height: 210px, `mw-card-lg` 340px, `mw-card-xl` 480px.
85
+ Use it when you only need a padded surface - it stays a block container, so
86
+ inline children keep flowing side by side.
87
+ - Image height: 210px, `mw-card-lg` 340px, `mw-card-xl` 480px. Set
88
+ `--mw-card-img-height` on the card for any other height.
87
89
  `mw-card-img-contain` shows the whole image instead of cropping it.
88
- - In `mw-card-footer` the last child is pushed to the right; below `lg` the
89
- footer stacks and children go full width.
90
+ - In `mw-card-footer` the last child is pushed to the right when there is more
91
+ than one; below `lg` the footer stacks and children go full width.
90
92
  - `mw-card-badge` (top right corner) and `mw-card-ribbon` (diagonal banner) are
91
93
  absolutely positioned overlays; colour them with `mw-card-addon-primary`,
92
94
  `-secondary`, `-success`, `-warning`, `-danger`, `-info`.
95
+ - A card does not clip its content, so a tooltip or dropdown inside it can reach
96
+ outside. The exception is `mw-card-ribbon`: that banner has to be cut off at
97
+ the edge, so a card containing one switches to `overflow: hidden` and clips
98
+ everything else too.
93
99
 
94
100
  ```html
95
- <div class="mw-card mw-card-content">
101
+ <div class="mw-card">
96
102
  <div class="mw-card-badge mw-card-addon-success">New</div>
97
103
  ...
98
104
  </div>
@@ -523,7 +529,7 @@ Both are chronicles (CV, changelog), not schedulable time axes.
523
529
  <div class="mw-timeline-big-date-sub">(3 years)</div>
524
530
  </div>
525
531
  <div class="mw-timeline-big-content">
526
- <div class="mw-card mw-card-content">...</div>
532
+ <div class="mw-card">...</div>
527
533
  <div class="mw-timeline-big-event">
528
534
  <span class="mw-timeline-big-event-date">05/2023</span>
529
535
  <span class="mw-timeline-big-event-title">Certification</span>
@@ -143,7 +143,11 @@ as the header's first child under the same condition.
143
143
  ```
144
144
 
145
145
  `data-tooltip="..."` is a global attribute hook, not a class - it works on any
146
- element and shows a tooltip above it on hover.
146
+ element and shows a tooltip above it on hover or keyboard focus. It is pure CSS
147
+ (a pseudo element on the trigger), which also means anything that clips its
148
+ overflow cuts it off: a scroll container, or a card carrying a ribbon - plain
149
+ cards do not clip. Close to the screen edge the bubble can run out of the
150
+ viewport, so keep long tooltips off the outermost elements.
147
151
 
148
152
  ## Sections
149
153
 
@@ -271,12 +275,54 @@ Every one of them has a `-lg` twin with a wider gap (2.5rem instead of 1.35rem):
271
275
  automatically.
272
276
 
273
277
  **Display** - `mw-d-flex`, `mw-d-inline-flex`, `mw-d-block`, `mw-d-inline`,
274
- `mw-d-inline-block`, `mw-d-grid`, `mw-d-none`.
278
+ `mw-d-inline-block`, `mw-d-grid`, `mw-d-none`, `mw-d-contents`.
275
279
 
276
280
  There are no responsive display variants. Show/hide per breakpoint is the
277
281
  application's job (media query in your own stylesheet, or `@if` in the
278
282
  template).
279
283
 
284
+ ### `mw-d-contents` - wrapper components inside a layout container
285
+
286
+ Every flex or grid container here styles its **children**. Plain HTML puts them
287
+ right there, a SPA usually does not:
288
+
289
+ ```html
290
+ <!-- what the CSS expects -->
291
+ <div class="mw-grid-2">
292
+ <div class="mw-card">…</div>
293
+ <div class="mw-card">…</div>
294
+ </div>
295
+
296
+ <!-- what a component tree produces - one item, not two -->
297
+ <div class="mw-grid-2">
298
+ <app-card>…</app-card>
299
+ <app-card>…</app-card>
300
+ </div>
301
+ ```
302
+
303
+ Two cards side by side still work, because each host _is_ one item. It breaks
304
+ when one host wraps several intended items, or when a host sits between the
305
+ container and a single child that brings its own width - the host becomes the
306
+ item and shrinks to content width. Nothing errors, the layout is just wrong.
307
+
308
+ `mw-d-contents` on the host removes its box, so the children become the items:
309
+
310
+ ```typescript
311
+ @Component({
312
+ selector: 'app-header',
313
+ host: { class: 'mw-d-contents' },
314
+
315
+ })
316
+ ```
317
+
318
+ The trade-off: an element with `display: contents` has no box, so background,
319
+ padding, border and transforms on that host stop working. If you need those, keep
320
+ the box and give it `width: 100%` (flex row) or `mw-flex-1` instead.
321
+
322
+ `mw-header` already absorbs a wrapper on its own, no `mw-d-contents` needed
323
+ there. The grid, tag, button-bar, form-action, modal-footer and toast containers
324
+ do not.
325
+
280
326
  **Flex** - `mw-flex-row`, `mw-flex-column`, `mw-flex-wrap`, `mw-flex-nowrap`,
281
327
  `mw-flex-1`, `mw-flex-grow-1`, `mw-flex-shrink-0`,
282
328
  `mw-justify-start|end|center|between|around|evenly`,
@@ -57,6 +57,7 @@ a palette switch meant setting 41 variables.
57
57
  | `--mw-font-family-base`, `-heading`, `-mono` | Font stacks (default: system stacks - no font is bundled) |
58
58
  | `--mw-hero-background` | Hero image (`url(...)`) |
59
59
  | `--mw-transition` | Global transition (`all 0.3s ease`) |
60
+ | `--mw-card-img-height` | Per-card image height (default `210px`; `mw-card-lg`/`-xl` set it to 340px/480px) |
60
61
  | `--mw-table-scroll-height` | Per-table height cap for `mw-table-responsive-scroll` |
61
62
  | `--mw-internal-theme-mode` | Read-only: what `$mw-theme-mode` was compiled to |
62
63
 
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
+ ## [3.7.0] - 2026-08-07
10
+
11
+ ### Changed
12
+
13
+ - Header container layout
14
+
15
+ ### Fixed
16
+
17
+ - Cards no longer create a stacking context
18
+ - Tooltips inside cards are no longer cut off
19
+ - Tooltip arrow visibility
20
+
9
21
  ## [3.6.0] - 2026-08-05
10
22
 
11
23
  ### Fixed