maverick-wave 5.7.0 → 5.8.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/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "maverick-wave",
3
- "version": "5.7.0",
3
+ "version": "5.8.0",
4
4
  "config": {
5
- "version_short": "5.7"
5
+ "version_short": "5.8"
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",
package/scripts/verify.js CHANGED
@@ -6,7 +6,7 @@
6
6
  * 1. every var(--mw-*) has a definition
7
7
  * 2. every --mw-* definition is used somewhere
8
8
  * 3. every mw-* class in the markup exists in the built CSS
9
- * 4. the committed root release files exist and are not empty
9
+ * 4. the committed root release files match a fresh build
10
10
  * 5. the CDN version pinned in the docs matches package.json
11
11
  * 6. no `animation:` shorthand in a file that uses a scroll timeline
12
12
  *
@@ -135,6 +135,16 @@ for (const f of ['maverick-wave.min.css', 'maverick-wave.min.js']) {
135
135
  errors.push(
136
136
  `release file missing or empty: ${f} - run \`npm run prepack\` and commit it`
137
137
  );
138
+ continue;
139
+ }
140
+ // `gulp release` runs the same sass/postcss/terser pipeline as the dist tasks
141
+ // and only writes elsewhere, so dist/ is what the committed file has to equal.
142
+ // Existing-and-not-empty was not enough: 5.7.0 shipped a root bundle four
143
+ // commits behind src/, and every CDN consumer got that one.
144
+ if (read(p) !== read(path.join(ROOT, 'dist', f))) {
145
+ errors.push(
146
+ `release file stale: ${f} differs from the fresh build in dist/ - run \`npm run prepack\` and commit it`
147
+ );
138
148
  }
139
149
  }
140
150
 
@@ -41,14 +41,16 @@
41
41
  </div>
42
42
  </button>
43
43
 
44
- <!-- Login Button -->
44
+ <!-- Palette Switcher, showcase only - the panel lives in palette-container -->
45
45
  <button
46
46
  type="button"
47
- class="mw-login-btn"
48
- id="login-button"
49
- aria-label="Log in"
47
+ class="palette-toggle"
48
+ id="palette-toggle"
49
+ aria-expanded="false"
50
+ aria-controls="palette-panel"
51
+ aria-label="Try another palette"
50
52
  >
51
- <i class="fas fa-lock"></i>
53
+ <i class="fas fa-palette"></i>
52
54
  </button>
53
55
 
54
56
  <!-- Burger Menu Button -->
@@ -1,14 +1,3 @@
1
- <button
2
- type="button"
3
- class="palette-fab"
4
- id="palette-fab"
5
- aria-expanded="false"
6
- aria-controls="palette-panel"
7
- aria-label="Try another palette"
8
- >
9
- <i class="fas fa-palette"></i>
10
- </button>
11
-
12
1
  <div class="palette-panel" id="palette-panel" hidden>
13
2
  <h3 class="palette-heading">Palette</h3>
14
3
  <p class="palette-hint">
@@ -25,7 +14,7 @@
25
14
  data-dark="#171f30"
26
15
  data-light="#e7e7f0"
27
16
  >
28
- Maverick
17
+ MaverickWave
29
18
  </button>
30
19
  <button
31
20
  type="button"
@@ -127,6 +116,46 @@
127
116
  >
128
117
  Wine
129
118
  </button>
119
+ <button
120
+ type="button"
121
+ class="palette-item"
122
+ data-primary="#cc8a04"
123
+ data-secondary="#2b5f9e"
124
+ data-dark="#231c0f"
125
+ data-light="#f3ecdc"
126
+ >
127
+ Amber
128
+ </button>
129
+ <button
130
+ type="button"
131
+ class="palette-item"
132
+ data-primary="#6da31c"
133
+ data-secondary="#a3319b"
134
+ data-dark="#171e10"
135
+ data-light="#ecf1e1"
136
+ >
137
+ Lime
138
+ </button>
139
+ <button
140
+ type="button"
141
+ class="palette-item"
142
+ data-primary="#5e2c6e"
143
+ data-secondary="#c9853a"
144
+ data-dark="#1c1221"
145
+ data-light="#ece5f0"
146
+ >
147
+ Aubergine
148
+ </button>
149
+ <button
150
+ type="button"
151
+ class="palette-item"
152
+ data-primary="#b0543a"
153
+ data-secondary="#3d7160"
154
+ data-dark="#231613"
155
+ data-light="#f3e8e4"
156
+ >
157
+ Clay
158
+ </button>
130
159
  </div>
131
160
 
132
161
  <div class="palette-custom">
@@ -181,23 +210,32 @@
181
210
 
182
211
  <label class="variant-row">
183
212
  <span class="variant-label">
184
- Pill buttons
213
+ Button shape
185
214
  <small
186
- >Buttons rounded all the way. Form fields keep their own shape.</small
215
+ >From cut corners to fully rounded. Form fields keep their own
216
+ shape.</small
187
217
  >
188
218
  </span>
189
- <input type="checkbox" data-variant-class="mw-btn-pill" />
219
+ <select data-variant-classes>
220
+ <option value="mw-btn-square">Square</option>
221
+ <option value="" selected>Default</option>
222
+ <option value="mw-btn-pill">Pill</option>
223
+ </select>
190
224
  </label>
191
225
 
192
226
  <label class="variant-row">
193
227
  <span class="variant-label">
194
- Glass buttons
228
+ Button style
195
229
  <small
196
- >Filled buttons become tinted glass - the colour drops to a
197
- translucent wash with a lit top edge.</small
230
+ >How a filled button is painted. Outline, ghost and link buttons keep
231
+ their own treatment.</small
198
232
  >
199
233
  </span>
200
- <input type="checkbox" data-variant-class="mw-btn-glass" />
234
+ <select data-variant-classes>
235
+ <option value="" selected>Default</option>
236
+ <option value="mw-btn-glass">Glass</option>
237
+ <option value="mw-btn-tactile">Tactile</option>
238
+ </select>
201
239
  </label>
202
240
 
203
241
  <label class="variant-row">
@@ -246,6 +284,17 @@
246
284
  <input type="checkbox" data-variant-class="mw-shadows-flat" />
247
285
  </label>
248
286
 
287
+ <label class="variant-row">
288
+ <span class="variant-label">
289
+ Flush surfaces
290
+ <small
291
+ >Cards, panels and the footer drop their own tone and sit on the page
292
+ colour, separated by their border alone.</small
293
+ >
294
+ </span>
295
+ <input type="checkbox" data-variant-class="mw-surfaces-flush" />
296
+ </label>
297
+
249
298
  <label class="variant-row">
250
299
  <span class="variant-label">
251
300
  Static on hover
@@ -302,6 +351,21 @@
302
351
  />
303
352
  </label>
304
353
 
354
+ <label class="variant-row">
355
+ <span class="variant-label">
356
+ Text size
357
+ <small
358
+ >The base the whole scale is built on - type, padding and control
359
+ heights move together.</small
360
+ >
361
+ </span>
362
+ <select data-variant-prop="--mw-root-font-size">
363
+ <option value="93.75%">Compact</option>
364
+ <option value="" selected>Default</option>
365
+ <option value="106.25%">Large</option>
366
+ </select>
367
+ </label>
368
+
305
369
  <label class="variant-row">
306
370
  <span class="variant-label">
307
371
  Section spacing
@@ -325,7 +389,13 @@
325
389
  >
326
390
  </span>
327
391
  <select data-variant-prop="--mw-container-width">
328
- <option value="" selected>1200</option>
392
+ <option value="min(800px, calc(100% - 2 * var(--mw-container-gutter)))">
393
+ 800
394
+ </option>
395
+ <option value="min(960px, calc(100% - 2 * var(--mw-container-gutter)))">
396
+ 960
397
+ </option>
398
+ <option value="" selected>1200 (default)</option>
329
399
  <option
330
400
  value="min(1440px, calc(100% - 2 * var(--mw-container-gutter)))"
331
401
  >
@@ -426,7 +426,7 @@
426
426
 
427
427
  <h3 class="mw-mb-4 mw-mt-6">Site-wide Variants</h3>
428
428
  <p class="mw-text-muted mw-text-measure">
429
- Nine classes on <code>&lt;html&gt;</code> retune the whole look without
429
+ Twelve classes on <code>&lt;html&gt;</code> retune the whole look without
430
430
  touching markup. They stack, and the palette button in the corner switches all
431
431
  of them live - the box at the bottom of that panel prints the setup a project
432
432
  would carry, and reads it back: paste one in to see someone else's.
@@ -444,6 +444,10 @@
444
444
  <code>mw-shadows-flat</code> - elevation 1-3 to <code>none</code>, dropdown
445
445
  and modal keep theirs
446
446
  </li>
447
+ <li>
448
+ <code>mw-surfaces-flush</code> - cards, panels and footer on the page
449
+ colour, held by their border
450
+ </li>
447
451
  <li>
448
452
  <code>mw-hover-static</code> - no hover travels; colour and border still
449
453
  respond
@@ -461,13 +465,22 @@
461
465
  <code>mw-btn-pill</code> - fully rounded buttons, form fields keep their
462
466
  radius
463
467
  </li>
468
+ <li>
469
+ <code>mw-btn-square</code> - the other end of that axis: buttons cut to a
470
+ hard corner while the page keeps its radius
471
+ </li>
472
+ <li>
473
+ <code>mw-btn-tactile</code> - filled buttons stand on a darker edge and sink
474
+ onto it when pressed
475
+ </li>
464
476
  <li>
465
477
  <code>mw-btn-glass</code> - filled buttons become tinted glass with a lit
466
478
  top edge
467
479
  </li>
468
480
  </ul>
469
481
  <p class="mw-text-muted mw-text-measure">
470
- Four properties do the rest: <code>--mw-radius-scale</code> multiplies every
471
- radius, plus <code>--mw-font-family-heading</code>,
472
- <code>--mw-container-width</code> and <code>--mw-section-padding-block</code>.
482
+ Five properties do the rest: <code>--mw-radius-scale</code> multiplies every
483
+ radius and <code>--mw-root-font-size</code> the whole rem scale, plus
484
+ <code>--mw-font-family-heading</code>, <code>--mw-container-width</code> and
485
+ <code>--mw-section-padding-block</code>.
473
486
  </p>
@@ -54,6 +54,10 @@
54
54
  // Same list, for a state that should feel instant rather than animated
55
55
  --mw-transition-fast: #{transition-list('--mw-duration-fast')};
56
56
 
57
+ // The whole scale is rem, so this one percentage moves type, spacing and
58
+ // control heights together. Breakpoints are px and stay where they are.
59
+ --mw-root-font-size: 100%;
60
+
57
61
  // Custom properties, so an application can tighten its forms without recompiling
58
62
  --mw-control-height-sm: #{$control-height-sm};
59
63
  --mw-control-height: #{$control-height};
@@ -10,6 +10,8 @@
10
10
  }
11
11
 
12
12
  html {
13
+ // Percent and not px, or a reader who raised their browser font loses it
14
+ font-size: var(--mw-root-font-size);
13
15
  scroll-behavior: smooth;
14
16
  min-width: 320px;
15
17
  scroll-padding-top: var(--mw-header-height);
@@ -42,6 +42,19 @@
42
42
  --mw-elevation-3: none;
43
43
  }
44
44
 
45
+ // Cards, panels and the footer give up their own tone and sit flush on the
46
+ // page, told apart by their line alone. That line then has to carry them:
47
+ // --mw-border is a neighbouring shade of the surface and reads as nothing once
48
+ // the surface *is* the page, so it is redrawn from the ink instead.
49
+ //
50
+ // Theme-bound tokens, so both selectors - see the note above.
51
+ :root.mw-surfaces-flush,
52
+ :root.mw-surfaces-flush .mw-theme-light {
53
+ --mw-card-background: var(--mw-page-background);
54
+ --mw-footer-background: var(--mw-page-background);
55
+ --mw-border: color-mix(in srgb, var(--mw-text-color) 20%, transparent);
56
+ }
57
+
45
58
  // The diagonal hatch behind an alternating section, dropped. Written on the
46
59
  // section and not as a token on :root: --mw-page-background is a theme alias
47
60
  // that only becomes the light one further down the tree, so a copy taken up
@@ -57,6 +70,35 @@
57
70
  border-radius: 999px;
58
71
  }
59
72
 
73
+ // The other end of the same axis. Not --mw-radius-scale, which squares off the
74
+ // whole page - a page can want its cards round and its buttons cut.
75
+ :root.mw-btn-square .mw-btn {
76
+ border-radius: 0;
77
+ }
78
+
79
+ // A raised edge under the fill that the button sinks onto when pressed. The
80
+ // four solid variants only: outline, ghost and link have no fill to darken.
81
+ //
82
+ // Mixed toward black rather than taken from --mw-*-color-hover, which moves
83
+ // toward the light in one theme and away from it in the other - an edge has to
84
+ // be darker than its face in both.
85
+ :root.mw-btn-tactile {
86
+ @each $name in ('primary', 'secondary', 'danger', 'success') {
87
+ .mw-btn-#{$name} {
88
+ box-shadow: 0
89
+ 3px
90
+ 0
91
+ color-mix(in srgb, var(--mw-#{$name}-color) 72%, #000);
92
+
93
+ // Travels the full height of the edge, where the base button moves 1px
94
+ &:active:not(:disabled) {
95
+ transform: translateY(3px);
96
+ box-shadow: none;
97
+ }
98
+ }
99
+ }
100
+ }
101
+
60
102
  // Tinted glass: a translucent wash with a vertical ramp and a specular line
61
103
  // along the top edge, which is what gives the button its thickness.
62
104
  //