maverick-wave 3.10.0 → 4.0.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.
Files changed (60) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +62 -30
  2. package/.claude/skills/maverick-wave/examples/angular-form.md +1 -1
  3. package/.claude/skills/maverick-wave/examples/angular-services.md +15 -8
  4. package/.claude/skills/maverick-wave/examples/static-landing-page.md +4 -4
  5. package/.claude/skills/maverick-wave/references/components.md +416 -27
  6. package/.claude/skills/maverick-wave/references/forms.md +8 -4
  7. package/.claude/skills/maverick-wave/references/javascript.md +32 -18
  8. package/.claude/skills/maverick-wave/references/layout.md +48 -3
  9. package/.claude/skills/maverick-wave/references/theming.md +34 -24
  10. package/CHANGELOG.md +56 -0
  11. package/index.html +25 -0
  12. package/maverick-wave.min.css +2 -2
  13. package/maverick-wave.min.js +1 -1
  14. package/package.json +2 -2
  15. package/src/js/main.js +314 -20
  16. package/src/partials/accordions-container.html +2 -2
  17. package/src/partials/button-bar-container.html +4 -2
  18. package/src/partials/buttons-container.html +35 -0
  19. package/src/partials/calendar-container.html +205 -0
  20. package/src/partials/cards-container.html +43 -0
  21. package/src/partials/documentation-container.html +3 -0
  22. package/src/partials/form-container.html +1 -1
  23. package/src/partials/get-started-container.html +2 -2
  24. package/src/partials/kanban-container.html +680 -715
  25. package/src/partials/modals-container.html +5 -5
  26. package/src/partials/pagination-container.html +50 -13
  27. package/src/partials/segmented-container.html +66 -0
  28. package/src/partials/tables-container.html +96 -24
  29. package/src/partials/tabs-container.html +16 -6
  30. package/src/partials/tags-container.html +15 -0
  31. package/src/partials/timelines-container.html +2 -2
  32. package/src/partials/utilities-container.html +81 -0
  33. package/src/scss/abstracts/_mixins.scss +34 -0
  34. package/src/scss/abstracts/_variables.scss +6 -2
  35. package/src/scss/base/_base.scss +21 -0
  36. package/src/scss/components/_accordions.scss +2 -0
  37. package/src/scss/components/_alerts.scss +5 -19
  38. package/src/scss/components/_button-bar.scss +6 -0
  39. package/src/scss/components/_buttons.scss +67 -0
  40. package/src/scss/components/_calendar.scss +290 -0
  41. package/src/scss/components/_content-slider.scss +1 -0
  42. package/src/scss/components/_index.scss +2 -0
  43. package/src/scss/components/_kanban.scss +2 -6
  44. package/src/scss/components/_modals.scss +15 -4
  45. package/src/scss/components/_pagination.scss +68 -64
  46. package/src/scss/components/_segmented.scss +85 -0
  47. package/src/scss/components/_tables.scss +16 -0
  48. package/src/scss/components/_tabs.scss +15 -0
  49. package/src/scss/components/_tags.scss +16 -0
  50. package/src/scss/components/_theme-toggle.scss +2 -0
  51. package/src/scss/components/_timelines.scss +3 -0
  52. package/src/scss/form-elements/_form.scss +13 -7
  53. package/src/scss/layout/_header.scss +3 -0
  54. package/src/scss/layout/_main.scss +5 -1
  55. package/src/scss/layout/_section.scss +1 -1
  56. package/src/scss/utilities/_accessibility.scss +14 -0
  57. package/src/scss/utilities/_flex.scss +17 -0
  58. package/src/scss/utilities/_index.scss +2 -0
  59. package/src/scss/utilities/_text.scss +17 -5
  60. package/src/scss/utilities/_touch-targets.scss +54 -0
@@ -0,0 +1,205 @@
1
+ <h3 class="mw-section-subtitle">Calendar</h3>
2
+ <p class="mw-text-muted">
3
+ Month, compact and week share every class - a week is seven cells instead of
4
+ forty-two, <code>mw-calendar-compact</code> drops the dots and a third of the
5
+ height. The status dots come in as
6
+ <code>data-calendar-markers='{"2026-08-19": ["success", "warning"]}'</code>.
7
+ </p>
8
+ <p class="mw-text-muted">
9
+ What a dot <em>means</em> belongs to the caller: the same calendar reads
10
+ &ldquo;request pending / booked / time offered&rdquo; in a scheduling app and
11
+ something else entirely on a public booking page. So the colour is a property,
12
+ <code>--mw-calendar-dot</code>, settable per dot or inherited from the cell -
13
+ <code>mw-calendar-dot-success</code> and friends are named presets for it, not
14
+ the only way in.
15
+ </p>
16
+ <div class="mw-card mw-card-simple mw-mb-6">
17
+ <div class="mw-row-split mw-row-split-center">
18
+ <span>Any colour, set on the dot itself</span>
19
+ <span class="mw-d-flex mw-items-center mw-gap-3">
20
+ <span class="mw-calendar-dot" style="--mw-calendar-dot: #7a4fd4"></span>
21
+ <span class="mw-calendar-dot" style="--mw-calendar-dot: #d47a4f"></span>
22
+ <span class="mw-calendar-dot mw-calendar-dot-success"></span>
23
+ <code>--mw-calendar-dot</code>
24
+ </span>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="mw-grid-2 calendar-demos mw-my-6">
29
+ <div>
30
+ <h4 class="mw-mb-2">Month</h4>
31
+ <div
32
+ class="mw-calendar calendar-demo"
33
+ id="calendar-month"
34
+ data-calendar="month"
35
+ data-calendar-locale="en-GB"
36
+ >
37
+ <div class="mw-calendar-header">
38
+ <button
39
+ type="button"
40
+ class="mw-btn mw-btn-outline mw-btn-sm mw-calendar-nav"
41
+ data-calendar-nav="-1"
42
+ aria-label="Previous month"
43
+ >
44
+ <i class="fas fa-chevron-left"></i>
45
+ </button>
46
+
47
+ <div class="mw-calendar-title" aria-live="polite"></div>
48
+
49
+ <button
50
+ type="button"
51
+ class="mw-btn mw-btn-outline mw-btn-sm mw-calendar-nav"
52
+ data-calendar-nav="1"
53
+ aria-label="Next month"
54
+ >
55
+ <i class="fas fa-chevron-right"></i>
56
+ </button>
57
+ </div>
58
+
59
+ <div class="mw-calendar-grid"></div>
60
+
61
+ <div class="mw-calendar-legend">
62
+ <span class="mw-calendar-legend-item">
63
+ <span class="mw-calendar-dot mw-calendar-dot-success"></span>
64
+ Slots free
65
+ </span>
66
+ <span class="mw-calendar-legend-item">
67
+ <span class="mw-calendar-dot mw-calendar-dot-warning"></span>
68
+ Almost booked
69
+ </span>
70
+ <span class="mw-calendar-legend-item">
71
+ <span class="mw-calendar-dot mw-calendar-dot-danger"></span>
72
+ Fully booked
73
+ </span>
74
+ <span class="mw-calendar-legend-item">
75
+ <span class="mw-calendar-dot mw-calendar-dot-info"></span>
76
+ Public holiday
77
+ </span>
78
+ </div>
79
+ </div>
80
+ </div>
81
+
82
+ <div>
83
+ <h4 class="mw-mb-2">Compact Month</h4>
84
+ <div
85
+ class="mw-calendar mw-calendar-compact calendar-demo"
86
+ id="calendar-compact"
87
+ data-calendar="month"
88
+ data-calendar-locale="en-GB"
89
+ >
90
+ <div class="mw-calendar-header">
91
+ <button
92
+ type="button"
93
+ class="mw-btn mw-btn-outline mw-btn-sm mw-calendar-nav"
94
+ data-calendar-nav="-1"
95
+ aria-label="Previous month"
96
+ >
97
+ <i class="fas fa-chevron-left"></i>
98
+ </button>
99
+
100
+ <div class="mw-calendar-title" aria-live="polite"></div>
101
+
102
+ <button
103
+ type="button"
104
+ class="mw-btn mw-btn-outline mw-btn-sm mw-calendar-nav"
105
+ data-calendar-nav="1"
106
+ aria-label="Next month"
107
+ >
108
+ <i class="fas fa-chevron-right"></i>
109
+ </button>
110
+ </div>
111
+
112
+ <div class="mw-calendar-grid"></div>
113
+ </div>
114
+ </div>
115
+
116
+ <div>
117
+ <h4 class="mw-mb-2">Week</h4>
118
+ <div
119
+ class="mw-calendar calendar-demo"
120
+ id="calendar-week"
121
+ data-calendar="week"
122
+ data-calendar-locale="en-GB"
123
+ >
124
+ <div class="mw-calendar-header">
125
+ <button
126
+ type="button"
127
+ class="mw-btn mw-btn-outline mw-btn-sm mw-calendar-nav"
128
+ data-calendar-nav="-1"
129
+ aria-label="Previous week"
130
+ >
131
+ <i class="fas fa-chevron-left"></i>
132
+ </button>
133
+
134
+ <div class="mw-calendar-title" aria-live="polite"></div>
135
+
136
+ <button
137
+ type="button"
138
+ class="mw-btn mw-btn-outline mw-btn-sm mw-calendar-nav"
139
+ data-calendar-nav="1"
140
+ aria-label="Next week"
141
+ >
142
+ <i class="fas fa-chevron-right"></i>
143
+ </button>
144
+ </div>
145
+
146
+ <div class="mw-calendar-grid"></div>
147
+
148
+ <div class="mw-calendar-legend">
149
+ <span class="mw-calendar-legend-item">
150
+ <span class="mw-calendar-dot mw-calendar-dot-success"></span>
151
+ Slots free
152
+ </span>
153
+ <span class="mw-calendar-legend-item">
154
+ <span class="mw-calendar-dot mw-calendar-dot-warning"></span>
155
+ Almost booked
156
+ </span>
157
+ <span class="mw-calendar-legend-item">
158
+ <span class="mw-calendar-dot mw-calendar-dot-danger"></span>
159
+ Fully booked
160
+ </span>
161
+ <span class="mw-calendar-legend-item">
162
+ <span class="mw-calendar-dot mw-calendar-dot-info"></span>
163
+ Public holiday
164
+ </span>
165
+ </div>
166
+ </div>
167
+ </div>
168
+ </div>
169
+
170
+ <script>
171
+ // Showcase only: the demo markers hang off today, so the dots stay in view no
172
+ // matter when this page is opened. A real page ships them as a literal.
173
+ (function () {
174
+ const markers = {};
175
+
176
+ const add = (offset, tones) => {
177
+ const date = new Date();
178
+ date.setDate(date.getDate() + offset);
179
+ const key =
180
+ date.getFullYear() +
181
+ '-' +
182
+ String(date.getMonth() + 1).padStart(2, '0') +
183
+ '-' +
184
+ String(date.getDate()).padStart(2, '0');
185
+ markers[key] = tones;
186
+ };
187
+
188
+ add(-6, ['danger']);
189
+ add(-4, ['success']);
190
+ add(-1, ['warning', 'info']);
191
+ add(0, ['success', 'warning']);
192
+ add(1, ['success']);
193
+ add(2, ['info']);
194
+ add(3, ['danger', 'warning', 'success']);
195
+ add(5, ['secondary']);
196
+ add(8, ['success']);
197
+ add(11, ['warning']);
198
+ add(14, ['danger']);
199
+
200
+ const encoded = JSON.stringify(markers);
201
+ document.querySelectorAll('[data-calendar]').forEach((calendar) => {
202
+ calendar.dataset.calendarMarkers = encoded;
203
+ });
204
+ })();
205
+ </script>
@@ -276,6 +276,49 @@
276
276
  </div>
277
277
  </div>
278
278
 
279
+ <h3 class="mw-mb-4 mw-mt-6">Note Above the Actions</h3>
280
+ <p class="mw-text-muted">
281
+ <code>mw-actions-note</code> puts one right-aligned, muted line above a row of
282
+ actions - what the buttons apply to, why one of them is disabled, or that
283
+ something cannot be taken back. It goes straight into the action row and needs
284
+ no wrapper: the line takes the full width and pushes the buttons below it. It
285
+ works the same way in <code>mw-card-footer</code>,
286
+ <code>mw-modal-footer</code>, <code>mw-form-actions</code> and
287
+ <code>mw-panel-footer</code>.
288
+ </p>
289
+ <div class="mw-grid-2-lg">
290
+ <div class="mw-card">
291
+ <div class="mw-card-body">
292
+ <h3 class="mw-card-title">Subscription</h3>
293
+ <hr class="mw-card-title-divider" />
294
+ <p class="mw-card-text">
295
+ The plan stays active until the end of the current billing period.
296
+ </p>
297
+ <div class="mw-card-footer">
298
+ <p class="mw-actions-note">Renews on 19 September 2026.</p>
299
+ <button type="button" class="mw-btn mw-btn-outline">Change plan</button>
300
+ <button type="button" class="mw-btn mw-btn-primary">Keep it</button>
301
+ </div>
302
+ </div>
303
+ </div>
304
+
305
+ <div class="mw-card">
306
+ <div class="mw-card-body">
307
+ <h3 class="mw-card-title">Export</h3>
308
+ <hr class="mw-card-title-divider" />
309
+ <p class="mw-card-text">
310
+ Every invoice of the selected period, as one ZIP archive.
311
+ </p>
312
+ <div class="mw-card-footer">
313
+ <p class="mw-actions-note">128 invoices, roughly 40 MB.</p>
314
+ <button type="button" class="mw-btn mw-btn-primary">
315
+ Start export
316
+ </button>
317
+ </div>
318
+ </div>
319
+ </div>
320
+ </div>
321
+
279
322
  <h3 class="mw-mb-4 mw-mt-6">Card Variations</h3>
280
323
  <div class="mw-grid-3">
281
324
  <div class="mw-card">
@@ -144,6 +144,9 @@
144
144
  <li>
145
145
  <a href="#kanban">Kanban</a>
146
146
  </li>
147
+ <li>
148
+ <a href="#calendar">Calendar</a>
149
+ </li>
147
150
  <li>
148
151
  <a href="#pagination">Pagination</a>
149
152
  </li>
@@ -245,7 +245,7 @@
245
245
  </div>
246
246
 
247
247
  <div class="mw-form-actions">
248
- <p class="mw-form-actions-hint">
248
+ <p class="mw-actions-note">
249
249
  Changes are saved to your account immediately after clicking Save.
250
250
  </p>
251
251
  <button type="reset" class="mw-btn mw-btn-outline">Reset</button>
@@ -23,7 +23,7 @@
23
23
 
24
24
  <div class="mw-tabs mw-mb-6">
25
25
  <div class="mw-tabs-nav">
26
- <div class="mw-tabs-nav-item active" data-tab="html-css">HTML/CSS</div>
26
+ <div class="mw-tabs-nav-item mw-active" data-tab="html-css">HTML/CSS</div>
27
27
  <div class="mw-tabs-nav-item" data-tab="scss">SCSS Projects</div>
28
28
  <div class="mw-tabs-nav-item" data-tab="angular">Angular</div>
29
29
  <div class="mw-tabs-nav-item" data-tab="react">React</div>
@@ -31,7 +31,7 @@
31
31
 
32
32
  <div class="mw-tabs-content">
33
33
  <!-- HTML/CSS Tab -->
34
- <div class="mw-tabs-panel active" id="html-css">
34
+ <div class="mw-tabs-panel mw-active" id="html-css">
35
35
  <div class="mw-card mw-card-simple">
36
36
  <h4>Using Pre-compiled CSS (CDN or Download)</h4>
37
37
  <p>