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.
- package/.claude/skills/maverick-wave/SKILL.md +62 -30
- package/.claude/skills/maverick-wave/examples/angular-form.md +1 -1
- package/.claude/skills/maverick-wave/examples/angular-services.md +15 -8
- package/.claude/skills/maverick-wave/examples/static-landing-page.md +4 -4
- package/.claude/skills/maverick-wave/references/components.md +416 -27
- package/.claude/skills/maverick-wave/references/forms.md +8 -4
- package/.claude/skills/maverick-wave/references/javascript.md +32 -18
- package/.claude/skills/maverick-wave/references/layout.md +48 -3
- package/.claude/skills/maverick-wave/references/theming.md +34 -24
- package/CHANGELOG.md +56 -0
- package/index.html +25 -0
- package/maverick-wave.min.css +2 -2
- package/maverick-wave.min.js +1 -1
- package/package.json +2 -2
- package/src/js/main.js +314 -20
- package/src/partials/accordions-container.html +2 -2
- package/src/partials/button-bar-container.html +4 -2
- package/src/partials/buttons-container.html +35 -0
- package/src/partials/calendar-container.html +205 -0
- package/src/partials/cards-container.html +43 -0
- package/src/partials/documentation-container.html +3 -0
- package/src/partials/form-container.html +1 -1
- package/src/partials/get-started-container.html +2 -2
- package/src/partials/kanban-container.html +680 -715
- package/src/partials/modals-container.html +5 -5
- package/src/partials/pagination-container.html +50 -13
- package/src/partials/segmented-container.html +66 -0
- package/src/partials/tables-container.html +96 -24
- package/src/partials/tabs-container.html +16 -6
- package/src/partials/tags-container.html +15 -0
- package/src/partials/timelines-container.html +2 -2
- package/src/partials/utilities-container.html +81 -0
- package/src/scss/abstracts/_mixins.scss +34 -0
- package/src/scss/abstracts/_variables.scss +6 -2
- package/src/scss/base/_base.scss +21 -0
- package/src/scss/components/_accordions.scss +2 -0
- package/src/scss/components/_alerts.scss +5 -19
- package/src/scss/components/_button-bar.scss +6 -0
- package/src/scss/components/_buttons.scss +67 -0
- package/src/scss/components/_calendar.scss +290 -0
- package/src/scss/components/_content-slider.scss +1 -0
- package/src/scss/components/_index.scss +2 -0
- package/src/scss/components/_kanban.scss +2 -6
- package/src/scss/components/_modals.scss +15 -4
- package/src/scss/components/_pagination.scss +68 -64
- package/src/scss/components/_segmented.scss +85 -0
- package/src/scss/components/_tables.scss +16 -0
- package/src/scss/components/_tabs.scss +15 -0
- package/src/scss/components/_tags.scss +16 -0
- package/src/scss/components/_theme-toggle.scss +2 -0
- package/src/scss/components/_timelines.scss +3 -0
- package/src/scss/form-elements/_form.scss +13 -7
- package/src/scss/layout/_header.scss +3 -0
- package/src/scss/layout/_main.scss +5 -1
- package/src/scss/layout/_section.scss +1 -1
- package/src/scss/utilities/_accessibility.scss +14 -0
- package/src/scss/utilities/_flex.scss +17 -0
- package/src/scss/utilities/_index.scss +2 -0
- package/src/scss/utilities/_text.scss +17 -5
- package/src/scss/utilities/_touch-targets.scss +54 -0
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
<div class="mw-modal-body">
|
|
69
69
|
<p class="mw-text-muted">
|
|
70
|
-
Max-width <strong>
|
|
70
|
+
Max-width <strong>520px</strong>. The default size — fits most use
|
|
71
71
|
cases.
|
|
72
72
|
</p>
|
|
73
73
|
</div>
|
|
@@ -100,7 +100,7 @@
|
|
|
100
100
|
</div>
|
|
101
101
|
<div class="mw-modal-body">
|
|
102
102
|
<p class="mw-text-muted">
|
|
103
|
-
Max-width <strong>
|
|
103
|
+
Max-width <strong>720px</strong>. More room for richer content or forms.
|
|
104
104
|
</p>
|
|
105
105
|
</div>
|
|
106
106
|
<div class="mw-modal-footer">
|
|
@@ -126,7 +126,7 @@
|
|
|
126
126
|
</div>
|
|
127
127
|
<div class="mw-modal-body">
|
|
128
128
|
<p class="mw-text-muted">
|
|
129
|
-
Max-width <strong>
|
|
129
|
+
Max-width <strong>960px</strong>. Use for detail views, data tables, or
|
|
130
130
|
complex layouts.
|
|
131
131
|
</p>
|
|
132
132
|
</div>
|
|
@@ -237,9 +237,9 @@
|
|
|
237
237
|
<p class="mw-text-center">
|
|
238
238
|
<strong>Are you sure you want to delete this item?</strong>
|
|
239
239
|
</p>
|
|
240
|
-
<p class="mw-text-center mw-text-muted">This action cannot be undone.</p>
|
|
241
240
|
</div>
|
|
242
241
|
<div class="mw-modal-footer">
|
|
242
|
+
<p class="mw-actions-note">This action cannot be undone.</p>
|
|
243
243
|
<button
|
|
244
244
|
onclick="closeModal('modal-confirm')"
|
|
245
245
|
class="mw-btn mw-btn-outline"
|
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
</button>
|
|
249
249
|
<button
|
|
250
250
|
onclick="closeModal('modal-confirm')"
|
|
251
|
-
class="mw-btn mw-btn-
|
|
251
|
+
class="mw-btn mw-btn-danger"
|
|
252
252
|
>
|
|
253
253
|
Delete
|
|
254
254
|
</button>
|
|
@@ -1,27 +1,64 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Simple Pagination</h3>
|
|
2
2
|
<p class="mw-text-muted">
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
The same frame as a calendar - an arrow on each side of the title, content
|
|
4
|
+
below - but the body is yours. Not a page-number list; the paging itself is
|
|
5
|
+
your job, <code>mw-pagination-loading</code> dims the body while the next page
|
|
6
|
+
is on its way.
|
|
5
7
|
</p>
|
|
6
8
|
|
|
7
|
-
<div class="mw-pagination" id="weekPagination">
|
|
9
|
+
<div class="mw-pagination mw-my-6" id="weekPagination">
|
|
8
10
|
<div class="mw-pagination-header">
|
|
9
|
-
<button
|
|
10
|
-
|
|
11
|
+
<button
|
|
12
|
+
type="button"
|
|
13
|
+
class="mw-btn mw-btn-outline mw-btn-sm mw-pagination-nav"
|
|
14
|
+
data-pagination-nav="-1"
|
|
15
|
+
aria-label="Previous week"
|
|
16
|
+
>
|
|
17
|
+
<i class="fas fa-chevron-left"></i>
|
|
11
18
|
</button>
|
|
12
19
|
|
|
13
|
-
<
|
|
20
|
+
<div class="mw-pagination-title" aria-live="polite">Week 10</div>
|
|
14
21
|
|
|
15
|
-
<button
|
|
16
|
-
|
|
22
|
+
<button
|
|
23
|
+
type="button"
|
|
24
|
+
class="mw-btn mw-btn-outline mw-btn-sm mw-pagination-nav"
|
|
25
|
+
data-pagination-nav="1"
|
|
26
|
+
aria-label="Next week"
|
|
27
|
+
>
|
|
28
|
+
<i class="fas fa-chevron-right"></i>
|
|
17
29
|
</button>
|
|
18
30
|
</div>
|
|
19
31
|
|
|
20
|
-
<div class="mw-pagination-content"
|
|
21
|
-
<h4>Week 10 Content</h4>
|
|
22
|
-
<p>
|
|
23
|
-
|
|
24
|
-
|
|
32
|
+
<div class="mw-pagination-content">
|
|
33
|
+
<h4 class="mw-mb-2">Week 10 Content</h4>
|
|
34
|
+
<p class="mw-text-muted">
|
|
35
|
+
Put anything in here - text, a form, a table, a chart. The frame only
|
|
36
|
+
gives it a title and two arrows.
|
|
25
37
|
</p>
|
|
26
38
|
</div>
|
|
27
39
|
</div>
|
|
40
|
+
|
|
41
|
+
<script>
|
|
42
|
+
// Showcase only: the framework ships no pagination JS, this just proves the
|
|
43
|
+
// two arrows are ordinary buttons
|
|
44
|
+
(function () {
|
|
45
|
+
const pager = document.getElementById('weekPagination');
|
|
46
|
+
if (!pager) return;
|
|
47
|
+
|
|
48
|
+
const title = pager.querySelector('.mw-pagination-title');
|
|
49
|
+
const heading = pager.querySelector('.mw-pagination-content h4');
|
|
50
|
+
let week = 10;
|
|
51
|
+
|
|
52
|
+
pager.addEventListener('click', (event) => {
|
|
53
|
+
const nav = event.target.closest('[data-pagination-nav]');
|
|
54
|
+
if (!nav) return;
|
|
55
|
+
|
|
56
|
+
week = Math.min(
|
|
57
|
+
52,
|
|
58
|
+
Math.max(1, week + Number(nav.dataset.paginationNav))
|
|
59
|
+
);
|
|
60
|
+
title.textContent = 'Week ' + week;
|
|
61
|
+
heading.textContent = 'Week ' + week + ' Content';
|
|
62
|
+
});
|
|
63
|
+
})();
|
|
64
|
+
</script>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Segmented Control</h3>
|
|
2
|
+
|
|
3
|
+
<p class="mw-text-muted mw-mb-6">
|
|
4
|
+
Two or three positions of <em>one</em> switch - income or expense, offer or
|
|
5
|
+
quote. Deliberately not a <strong>mw-button-bar</strong>: that one stacks
|
|
6
|
+
below 576px and gives every button 96% width, which is right for a row of
|
|
7
|
+
independent actions and wrong here. Stacked, two positions of a switch look
|
|
8
|
+
like two buttons you could press both of. A segmented control stays horizontal
|
|
9
|
+
at every width and splits the row into equal shares.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<div class="mw-grid-2-lg">
|
|
13
|
+
<div>
|
|
14
|
+
<h3 class="mw-mb-4">Two Positions</h3>
|
|
15
|
+
<div class="mw-card mw-card-simple">
|
|
16
|
+
<label class="mw-field-label mw-d-block mw-mb-2">Booking type</label>
|
|
17
|
+
<div class="mw-segmented mw-mb-6">
|
|
18
|
+
<button type="button" class="mw-segmented-item mw-active">
|
|
19
|
+
<i class="fas fa-arrow-down"></i>
|
|
20
|
+
Income
|
|
21
|
+
</button>
|
|
22
|
+
<button type="button" class="mw-segmented-item">
|
|
23
|
+
<i class="fas fa-arrow-up"></i>
|
|
24
|
+
Expense
|
|
25
|
+
</button>
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<label class="mw-field-label mw-d-block mw-mb-2">Document</label>
|
|
29
|
+
<div class="mw-segmented">
|
|
30
|
+
<button type="button" class="mw-segmented-item">Offer</button>
|
|
31
|
+
<button type="button" class="mw-segmented-item mw-active">Quote</button>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</div>
|
|
35
|
+
|
|
36
|
+
<div>
|
|
37
|
+
<h3 class="mw-mb-4">Three Positions & Variants</h3>
|
|
38
|
+
<div class="mw-card mw-card-simple">
|
|
39
|
+
<label class="mw-field-label mw-d-block mw-mb-2">Period</label>
|
|
40
|
+
<div class="mw-segmented mw-mb-6">
|
|
41
|
+
<button type="button" class="mw-segmented-item">Day</button>
|
|
42
|
+
<button type="button" class="mw-segmented-item mw-active">Week</button>
|
|
43
|
+
<button type="button" class="mw-segmented-item">Month</button>
|
|
44
|
+
</div>
|
|
45
|
+
|
|
46
|
+
<label class="mw-field-label mw-d-block mw-mb-2">
|
|
47
|
+
Secondary tone – <code>mw-segmented-secondary</code>
|
|
48
|
+
</label>
|
|
49
|
+
<div class="mw-segmented mw-segmented-secondary mw-mb-6">
|
|
50
|
+
<button type="button" class="mw-segmented-item mw-active">List</button>
|
|
51
|
+
<button type="button" class="mw-segmented-item">Grid</button>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<label class="mw-field-label mw-d-block mw-mb-2">
|
|
55
|
+
Inline – <code>mw-segmented-auto</code>
|
|
56
|
+
</label>
|
|
57
|
+
<div class="mw-segmented mw-segmented-auto">
|
|
58
|
+
<button type="button" class="mw-segmented-item mw-active">All</button>
|
|
59
|
+
<button type="button" class="mw-segmented-item">Open</button>
|
|
60
|
+
<button type="button" class="mw-segmented-item" disabled>
|
|
61
|
+
Archived
|
|
62
|
+
</button>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</div>
|
|
66
|
+
</div>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
<th>Name</th>
|
|
16
16
|
<th>Position</th>
|
|
17
17
|
<th>Location</th>
|
|
18
|
-
<th class="mw-text-
|
|
18
|
+
<th class="mw-text-currency">Budget</th>
|
|
19
19
|
</tr>
|
|
20
20
|
</thead>
|
|
21
21
|
<tbody>
|
|
@@ -24,31 +24,33 @@
|
|
|
24
24
|
<td>John Doe</td>
|
|
25
25
|
<td>Developer</td>
|
|
26
26
|
<td>New York</td>
|
|
27
|
-
<td class="mw-text-
|
|
27
|
+
<td class="mw-text-currency">1,204.50</td>
|
|
28
28
|
</tr>
|
|
29
29
|
<tr>
|
|
30
30
|
<td>2</td>
|
|
31
31
|
<td>Jane Smith</td>
|
|
32
32
|
<td>Designer</td>
|
|
33
33
|
<td>London</td>
|
|
34
|
-
<td class="mw-text-
|
|
34
|
+
<td class="mw-text-currency">87.00</td>
|
|
35
35
|
</tr>
|
|
36
36
|
<tr>
|
|
37
37
|
<td>3</td>
|
|
38
38
|
<td>Bob Johnson</td>
|
|
39
39
|
<td>Manager</td>
|
|
40
40
|
<td>Berlin</td>
|
|
41
|
-
<td class="mw-text-
|
|
41
|
+
<td class="mw-text-currency">15,930.25</td>
|
|
42
42
|
</tr>
|
|
43
43
|
</tbody>
|
|
44
44
|
</table>
|
|
45
45
|
<p class="mw-text-muted mw-mt-3">
|
|
46
46
|
The <strong>Budget</strong> column uses
|
|
47
|
-
<strong>mw-text-
|
|
48
|
-
lining digits. The alignment comes from the
|
|
49
|
-
same for <code>1,204.50</code> and
|
|
50
|
-
of decimal places has to be
|
|
51
|
-
|
|
47
|
+
<strong>mw-text-currency</strong> – right-aligned with tabular,
|
|
48
|
+
lining digits and no wrapping mid-number. The alignment comes from the
|
|
49
|
+
right edge, so it works the same for <code>1,204.50</code> and
|
|
50
|
+
<code>1.204,50</code>; only the number of decimal places has to be
|
|
51
|
+
consistent per column. If you only want the fixed-width digits without the
|
|
52
|
+
alignment, use <strong>mw-text-numeric</strong>. For the input side there
|
|
53
|
+
is <strong>mw-input-numeric</strong>.
|
|
52
54
|
</p>
|
|
53
55
|
</div>
|
|
54
56
|
|
|
@@ -111,7 +113,7 @@
|
|
|
111
113
|
<th>#</th>
|
|
112
114
|
<th>Name</th>
|
|
113
115
|
<th>Position</th>
|
|
114
|
-
<th class="mw-text-
|
|
116
|
+
<th class="mw-text-currency">Budget</th>
|
|
115
117
|
</tr>
|
|
116
118
|
</thead>
|
|
117
119
|
<tbody>
|
|
@@ -119,91 +121,161 @@
|
|
|
119
121
|
<td>1</td>
|
|
120
122
|
<td>John Doe</td>
|
|
121
123
|
<td>Developer</td>
|
|
122
|
-
<td class="mw-text-
|
|
124
|
+
<td class="mw-text-currency">12,400</td>
|
|
123
125
|
</tr>
|
|
124
126
|
<tr>
|
|
125
127
|
<td>2</td>
|
|
126
128
|
<td>Jane Smith</td>
|
|
127
129
|
<td>Designer</td>
|
|
128
|
-
<td class="mw-text-
|
|
130
|
+
<td class="mw-text-currency">9,800</td>
|
|
129
131
|
</tr>
|
|
130
132
|
<tr>
|
|
131
133
|
<td>3</td>
|
|
132
134
|
<td>Bob Johnson</td>
|
|
133
135
|
<td>Manager</td>
|
|
134
|
-
<td class="mw-text-
|
|
136
|
+
<td class="mw-text-currency">21,050</td>
|
|
135
137
|
</tr>
|
|
136
138
|
<tr>
|
|
137
139
|
<td>4</td>
|
|
138
140
|
<td>Alice Brown</td>
|
|
139
141
|
<td>Developer</td>
|
|
140
|
-
<td class="mw-text-
|
|
142
|
+
<td class="mw-text-currency">11,300</td>
|
|
141
143
|
</tr>
|
|
142
144
|
<tr>
|
|
143
145
|
<td>5</td>
|
|
144
146
|
<td>Charlie Davis</td>
|
|
145
147
|
<td>Analyst</td>
|
|
146
|
-
<td class="mw-text-
|
|
148
|
+
<td class="mw-text-currency">7,600</td>
|
|
147
149
|
</tr>
|
|
148
150
|
<tr>
|
|
149
151
|
<td>6</td>
|
|
150
152
|
<td>Emma Wilson</td>
|
|
151
153
|
<td>Designer</td>
|
|
152
|
-
<td class="mw-text-
|
|
154
|
+
<td class="mw-text-currency">10,150</td>
|
|
153
155
|
</tr>
|
|
154
156
|
<tr>
|
|
155
157
|
<td>7</td>
|
|
156
158
|
<td>Frank Miller</td>
|
|
157
159
|
<td>Developer</td>
|
|
158
|
-
<td class="mw-text-
|
|
160
|
+
<td class="mw-text-currency">13,900</td>
|
|
159
161
|
</tr>
|
|
160
162
|
<tr>
|
|
161
163
|
<td>8</td>
|
|
162
164
|
<td>Grace Lee</td>
|
|
163
165
|
<td>Manager</td>
|
|
164
|
-
<td class="mw-text-
|
|
166
|
+
<td class="mw-text-currency">19,700</td>
|
|
165
167
|
</tr>
|
|
166
168
|
<tr>
|
|
167
169
|
<td>9</td>
|
|
168
170
|
<td>Henry Clark</td>
|
|
169
171
|
<td>Analyst</td>
|
|
170
|
-
<td class="mw-text-
|
|
172
|
+
<td class="mw-text-currency">8,250</td>
|
|
171
173
|
</tr>
|
|
172
174
|
<tr>
|
|
173
175
|
<td>10</td>
|
|
174
176
|
<td>Ivy Turner</td>
|
|
175
177
|
<td>Developer</td>
|
|
176
|
-
<td class="mw-text-
|
|
178
|
+
<td class="mw-text-currency">14,600</td>
|
|
177
179
|
</tr>
|
|
178
180
|
<tr>
|
|
179
181
|
<td>11</td>
|
|
180
182
|
<td>Jack Morris</td>
|
|
181
183
|
<td>Designer</td>
|
|
182
|
-
<td class="mw-text-
|
|
184
|
+
<td class="mw-text-currency">9,400</td>
|
|
183
185
|
</tr>
|
|
184
186
|
<tr>
|
|
185
187
|
<td>12</td>
|
|
186
188
|
<td>Karen Hall</td>
|
|
187
189
|
<td>Manager</td>
|
|
188
|
-
<td class="mw-text-
|
|
190
|
+
<td class="mw-text-currency">22,800</td>
|
|
189
191
|
</tr>
|
|
190
192
|
<tr>
|
|
191
193
|
<td>13</td>
|
|
192
194
|
<td>Liam Scott</td>
|
|
193
195
|
<td>Developer</td>
|
|
194
|
-
<td class="mw-text-
|
|
196
|
+
<td class="mw-text-currency">12,950</td>
|
|
195
197
|
</tr>
|
|
196
198
|
<tr>
|
|
197
199
|
<td>14</td>
|
|
198
200
|
<td>Mia Adams</td>
|
|
199
201
|
<td>Analyst</td>
|
|
200
|
-
<td class="mw-text-
|
|
202
|
+
<td class="mw-text-currency">7,900</td>
|
|
201
203
|
</tr>
|
|
202
204
|
</tbody>
|
|
203
205
|
</table>
|
|
204
206
|
</div>
|
|
205
207
|
</div>
|
|
206
208
|
|
|
209
|
+
<div class="mw-card mw-card-simple mw-mb-6">
|
|
210
|
+
<h4 class="mw-mb-2">Scroll Hint</h4>
|
|
211
|
+
<p class="mw-text-muted mw-mb-4">
|
|
212
|
+
<strong>mw-table-responsive-hint</strong> fades the right edge, so it is
|
|
213
|
+
visible that more columns are hiding behind it. The wrapper below is
|
|
214
|
+
capped at 520px to force the overflow; normally the viewport does that.
|
|
215
|
+
</p>
|
|
216
|
+
|
|
217
|
+
<div
|
|
218
|
+
class="mw-table-responsive mw-table-responsive-hint"
|
|
219
|
+
style="max-width: 520px"
|
|
220
|
+
>
|
|
221
|
+
<table class="mw-table mw-table-compact">
|
|
222
|
+
<thead>
|
|
223
|
+
<tr>
|
|
224
|
+
<th>Invoice</th>
|
|
225
|
+
<th>Customer</th>
|
|
226
|
+
<th>Issued</th>
|
|
227
|
+
<th>Due</th>
|
|
228
|
+
<th>Status</th>
|
|
229
|
+
<th class="mw-text-currency">Net</th>
|
|
230
|
+
<th class="mw-text-currency">VAT</th>
|
|
231
|
+
<th class="mw-text-currency">Total</th>
|
|
232
|
+
</tr>
|
|
233
|
+
</thead>
|
|
234
|
+
<tbody>
|
|
235
|
+
<tr>
|
|
236
|
+
<td>2026-0042</td>
|
|
237
|
+
<td>Fischer GmbH</td>
|
|
238
|
+
<td>19.08.2026</td>
|
|
239
|
+
<td>19.09.2026</td>
|
|
240
|
+
<td><span class="mw-tag mw-tag-warning">Open</span></td>
|
|
241
|
+
<td class="mw-text-currency">1,012.18</td>
|
|
242
|
+
<td class="mw-text-currency">192.32</td>
|
|
243
|
+
<td class="mw-text-currency">1,204.50</td>
|
|
244
|
+
</tr>
|
|
245
|
+
<tr>
|
|
246
|
+
<td>2026-0041</td>
|
|
247
|
+
<td>Wagner AG</td>
|
|
248
|
+
<td>12.08.2026</td>
|
|
249
|
+
<td>12.09.2026</td>
|
|
250
|
+
<td><span class="mw-tag mw-tag-success">Paid</span></td>
|
|
251
|
+
<td class="mw-text-currency">73.11</td>
|
|
252
|
+
<td class="mw-text-currency">13.89</td>
|
|
253
|
+
<td class="mw-text-currency">87.00</td>
|
|
254
|
+
</tr>
|
|
255
|
+
<tr>
|
|
256
|
+
<td>2026-0040</td>
|
|
257
|
+
<td>Schmidt & Partner</td>
|
|
258
|
+
<td>02.08.2026</td>
|
|
259
|
+
<td>02.09.2026</td>
|
|
260
|
+
<td><span class="mw-tag mw-tag-neutral">XRechnung</span></td>
|
|
261
|
+
<td class="mw-text-currency">13,386.76</td>
|
|
262
|
+
<td class="mw-text-currency">2,543.49</td>
|
|
263
|
+
<td class="mw-text-currency">15,930.25</td>
|
|
264
|
+
</tr>
|
|
265
|
+
</tbody>
|
|
266
|
+
</table>
|
|
267
|
+
</div>
|
|
268
|
+
|
|
269
|
+
<p class="mw-text-muted mw-mt-3">
|
|
270
|
+
Opt-in, unlike the automatic hint on a tab bar, and by a different
|
|
271
|
+
mechanism: a table paints its own opaque surface, so the gradient trick
|
|
272
|
+
used there would sit behind the rows and never show. A mask sits in front
|
|
273
|
+
and does show - but a mask has no <code>local</code> attachment, so it
|
|
274
|
+
cannot fade away once the last column is reached. Put the class on the
|
|
275
|
+
tables you know overflow, leave it off the ones that fit.
|
|
276
|
+
</p>
|
|
277
|
+
</div>
|
|
278
|
+
|
|
207
279
|
<div class="mw-card mw-card-simple">
|
|
208
280
|
<h4 class="mw-mb-2">Responsive Table</h4>
|
|
209
281
|
<p class="mw-text-muted">
|
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Tabs</h3>
|
|
2
|
+
<p class="mw-text-muted mw-mb-6">
|
|
3
|
+
A tab bar scrolls sideways when it runs out of room, and now it says so: a
|
|
4
|
+
shadow appears on whichever side still has tabs behind it, and disappears once
|
|
5
|
+
that end is reached. Four gradients, no scroll listener. The fade colour comes
|
|
6
|
+
from <code>--mw-scroll-hint-cover</code> and follows the surface - inside a
|
|
7
|
+
card it fades into the card, on the page into the page. Seven tabs on a phone
|
|
8
|
+
used to mean the seventh was simply never found.
|
|
9
|
+
</p>
|
|
2
10
|
|
|
3
11
|
<h3 class="mw-mb-4">Default Tabs</h3>
|
|
4
12
|
<div class="mw-tabs mw-mb-6">
|
|
5
13
|
<div class="mw-tabs-nav">
|
|
6
|
-
<div class="mw-tabs-nav-item active" data-tab="tab1">Features</div>
|
|
14
|
+
<div class="mw-tabs-nav-item mw-active" data-tab="tab1">Features</div>
|
|
7
15
|
<div class="mw-tabs-nav-item" data-tab="tab2">Specifications</div>
|
|
8
16
|
<div class="mw-tabs-nav-item" data-tab="tab3">Reviews</div>
|
|
9
17
|
<div class="mw-tabs-nav-item" data-tab="tab4">Support</div>
|
|
10
18
|
</div>
|
|
11
19
|
<div class="mw-tabs-content">
|
|
12
|
-
<div class="mw-tabs-panel active" id="tab1">
|
|
20
|
+
<div class="mw-tabs-panel mw-active" id="tab1">
|
|
13
21
|
<div class="mw-card mw-card-simple">
|
|
14
22
|
<h4>Key Features</h4>
|
|
15
23
|
<p>
|
|
@@ -81,13 +89,15 @@
|
|
|
81
89
|
<h3 class="mw-mb-4">Vertical Tabs</h3>
|
|
82
90
|
<div class="mw-tabs mw-tabs-vertical mw-mb-6">
|
|
83
91
|
<div class="mw-tabs-nav">
|
|
84
|
-
<div class="mw-tabs-nav-item active" data-tab="vtab1">
|
|
92
|
+
<div class="mw-tabs-nav-item mw-active" data-tab="vtab1">
|
|
93
|
+
Getting Started
|
|
94
|
+
</div>
|
|
85
95
|
<div class="mw-tabs-nav-item" data-tab="vtab2">Configuration</div>
|
|
86
96
|
<div class="mw-tabs-nav-item" data-tab="vtab3">Customization</div>
|
|
87
97
|
<div class="mw-tabs-nav-item" data-tab="vtab4">Best Practices</div>
|
|
88
98
|
</div>
|
|
89
99
|
<div class="mw-tabs-content">
|
|
90
|
-
<div class="mw-tabs-panel active" id="vtab1">
|
|
100
|
+
<div class="mw-tabs-panel mw-active" id="vtab1">
|
|
91
101
|
<div class="mw-card mw-card-simple">
|
|
92
102
|
<h4>Getting Started Guide</h4>
|
|
93
103
|
<p>Begin by creating a new project folder:</p>
|
|
@@ -221,13 +231,13 @@ href="path/maverick-wave.min.css"></code></pre>
|
|
|
221
231
|
<h3 class="mw-mb-4">Pills Style Tabs</h3>
|
|
222
232
|
<div class="mw-tabs mw-tabs-pills">
|
|
223
233
|
<div class="mw-tabs-nav">
|
|
224
|
-
<div class="mw-tabs-nav-item active" data-tab="ptab1">Dashboard</div>
|
|
234
|
+
<div class="mw-tabs-nav-item mw-active" data-tab="ptab1">Dashboard</div>
|
|
225
235
|
<div class="mw-tabs-nav-item" data-tab="ptab2">Profile</div>
|
|
226
236
|
<div class="mw-tabs-nav-item" data-tab="ptab3">Messages</div>
|
|
227
237
|
<div class="mw-tabs-nav-item" data-tab="ptab4">Settings</div>
|
|
228
238
|
</div>
|
|
229
239
|
<div class="mw-tabs-content">
|
|
230
|
-
<div class="mw-tabs-panel active" id="ptab1">
|
|
240
|
+
<div class="mw-tabs-panel mw-active" id="ptab1">
|
|
231
241
|
<div class="mw-card mw-card-simple">
|
|
232
242
|
<h4>Dashboard Overview</h4>
|
|
233
243
|
<p>
|
|
@@ -210,6 +210,21 @@
|
|
|
210
210
|
<span class="mw-tag mw-tag-warning">Open</span>
|
|
211
211
|
<span class="mw-tag mw-tag-danger">Cancelled</span>
|
|
212
212
|
<span class="mw-tag mw-tag-muted">Draft</span>
|
|
213
|
+
<span class="mw-tag mw-tag-neutral">XRechnung</span>
|
|
214
|
+
</div>
|
|
215
|
+
|
|
216
|
+
<h5 class="mw-text-medium mw-mb-2">Neutral vs. Muted</h5>
|
|
217
|
+
<p class="mw-text-muted mw-text-sm mw-mb-3">
|
|
218
|
+
<strong>mw-tag-neutral</strong> is a plain identifier - a customer
|
|
219
|
+
number, a document type. <strong>mw-tag-muted</strong> means the label
|
|
220
|
+
steps back. On an invoice the difference carries real meaning:
|
|
221
|
+
“XRechnung” is a property, “no e-invoice” is a
|
|
222
|
+
shortcoming.
|
|
223
|
+
</p>
|
|
224
|
+
<div class="mw-d-flex mw-flex-wrap mw-gap-2 mw-mb-4">
|
|
225
|
+
<span class="mw-tag mw-tag-neutral">Customer 4711</span>
|
|
226
|
+
<span class="mw-tag mw-tag-neutral">XRechnung</span>
|
|
227
|
+
<span class="mw-tag mw-tag-muted">No e-invoice</span>
|
|
213
228
|
</div>
|
|
214
229
|
|
|
215
230
|
<h5 class="mw-text-medium mw-mb-2">Large</h5>
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
You can use every card within the timeline content wrapper.
|
|
6
6
|
</p>
|
|
7
7
|
<div class="mw-timeline-big mw-my-6">
|
|
8
|
-
<div class="mw-timeline-big-step active">
|
|
8
|
+
<div class="mw-timeline-big-step mw-active">
|
|
9
9
|
<div class="mw-timeline-big-date-container">
|
|
10
10
|
<div class="mw-timeline-big-date-main">01/2023 – Present</div>
|
|
11
11
|
</div>
|
|
@@ -135,7 +135,7 @@
|
|
|
135
135
|
</p>
|
|
136
136
|
|
|
137
137
|
<div class="mw-timeline-simple mw-my-5">
|
|
138
|
-
<div class="mw-timeline-simple-step active">
|
|
138
|
+
<div class="mw-timeline-simple-step mw-active">
|
|
139
139
|
<div class="mw-timeline-simple-date">2023-11-10</div>
|
|
140
140
|
<div class="mw-timeline-simple-content">
|
|
141
141
|
<div class="mw-card mw-card-simple">
|
|
@@ -116,6 +116,87 @@
|
|
|
116
116
|
</div>
|
|
117
117
|
</div>
|
|
118
118
|
|
|
119
|
+
<h3 class="mw-mb-4 mw-mt-6">Split Rows</h3>
|
|
120
|
+
<p class="mw-text-muted">
|
|
121
|
+
The most common row in any interface: what it is on the left, the value or the
|
|
122
|
+
action on the right. <code>mw-row-split</code> wraps, so on a narrow screen
|
|
123
|
+
the right half drops below instead of squashing the left one.
|
|
124
|
+
<code>mw-row-split-center</code> switches from baseline to center alignment,
|
|
125
|
+
for a row that mixes text with a button or an icon.
|
|
126
|
+
</p>
|
|
127
|
+
<div class="mw-grid-2-lg">
|
|
128
|
+
<div class="mw-card mw-card-simple">
|
|
129
|
+
<div class="mw-row-split mw-mb-4">
|
|
130
|
+
<strong>Invoice 2026-0042</strong>
|
|
131
|
+
<span class="mw-text-currency">1,204.50</span>
|
|
132
|
+
</div>
|
|
133
|
+
<div class="mw-row-split mw-mb-4">
|
|
134
|
+
<span class="mw-text-muted">Due date</span>
|
|
135
|
+
<span>19.09.2026</span>
|
|
136
|
+
</div>
|
|
137
|
+
<div class="mw-row-split">
|
|
138
|
+
<span class="mw-text-muted">Status</span>
|
|
139
|
+
<span class="mw-tag mw-tag-neutral">XRechnung</span>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
|
|
143
|
+
<div class="mw-card mw-card-simple">
|
|
144
|
+
<div class="mw-row-split mw-row-split-center mw-mb-4">
|
|
145
|
+
<h4>Team members</h4>
|
|
146
|
+
<button type="button" class="mw-btn mw-btn-sm mw-btn-primary">
|
|
147
|
+
<i class="fas fa-plus"></i>
|
|
148
|
+
Add
|
|
149
|
+
</button>
|
|
150
|
+
</div>
|
|
151
|
+
<div class="mw-row-split mw-row-split-center">
|
|
152
|
+
<span><i class="fas fa-user mw-mr-2"></i>Alex Fischer</span>
|
|
153
|
+
<button
|
|
154
|
+
type="button"
|
|
155
|
+
class="mw-btn-mini mw-btn-mini-danger"
|
|
156
|
+
aria-label="Remove Alex Fischer"
|
|
157
|
+
>
|
|
158
|
+
<i class="fas fa-times"></i>
|
|
159
|
+
</button>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
</div>
|
|
163
|
+
|
|
164
|
+
<h3 class="mw-mb-4 mw-mt-6">Numbers</h3>
|
|
165
|
+
<p class="mw-text-muted">
|
|
166
|
+
<code>mw-text-numeric</code> gives fixed-width digits and nothing else - for a
|
|
167
|
+
clock, a counter or an ID that must not jitter while it changes.
|
|
168
|
+
<code>mw-text-currency</code> adds right alignment and prevents wrapping
|
|
169
|
+
mid-number, which is what a money column in a table wants.
|
|
170
|
+
</p>
|
|
171
|
+
<div class="mw-card mw-card-simple">
|
|
172
|
+
<div class="mw-row-split mw-mb-4">
|
|
173
|
+
<span>Elapsed <code>mw-text-numeric</code></span>
|
|
174
|
+
<span class="mw-text-numeric">00:11:38</span>
|
|
175
|
+
</div>
|
|
176
|
+
<div class="mw-row-split">
|
|
177
|
+
<span>Total <code>mw-text-currency</code></span>
|
|
178
|
+
<span class="mw-text-currency">15,930.25</span>
|
|
179
|
+
</div>
|
|
180
|
+
</div>
|
|
181
|
+
|
|
182
|
+
<h3 class="mw-mb-4 mw-mt-6">Screen Reader Only</h3>
|
|
183
|
+
<p class="mw-text-muted">
|
|
184
|
+
<code>mw-sr-only</code> hides text visually but keeps it in the accessibility
|
|
185
|
+
tree - the label an icon-only button still owes its user.
|
|
186
|
+
<code>display: none</code> would not do: it drops the element out of that tree
|
|
187
|
+
as well. The two buttons below look identical; only one of them says what it
|
|
188
|
+
does.
|
|
189
|
+
</p>
|
|
190
|
+
<div class="mw-card mw-card-simple">
|
|
191
|
+
<div class="mw-d-flex mw-items-center mw-gap-4">
|
|
192
|
+
<button type="button" class="mw-btn mw-btn-outline mw-btn-sm">
|
|
193
|
+
<i class="fas fa-trash"></i>
|
|
194
|
+
<span class="mw-sr-only">Delete invoice 2026-0042</span>
|
|
195
|
+
</button>
|
|
196
|
+
<code><span class="mw-sr-only">Delete invoice</span></code>
|
|
197
|
+
</div>
|
|
198
|
+
</div>
|
|
199
|
+
|
|
119
200
|
<h3 class="mw-mb-4 mw-mt-6">Tooltips</h3>
|
|
120
201
|
<p class="mw-text-muted">
|
|
121
202
|
Put <code>data-tooltip="..."</code> on any element - pure CSS, no script
|
|
@@ -43,3 +43,37 @@
|
|
|
43
43
|
@content;
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
|
+
|
|
47
|
+
// Scroll hint for a horizontally scrollable strip - a tab bar, a wide table.
|
|
48
|
+
//
|
|
49
|
+
// Four gradient layers in two pairs. The cover pair is attached to the content
|
|
50
|
+
// (`local`) and therefore scrolls out of the way once that edge is reached;
|
|
51
|
+
// the shadow pair stays on the frame (`scroll`). Net effect: a shadow shows
|
|
52
|
+
// only on the side that still has something hidden behind it. No JavaScript,
|
|
53
|
+
// no scroll listener.
|
|
54
|
+
//
|
|
55
|
+
// The cover has to match whatever the strip sits on, which is why it reads a
|
|
56
|
+
// token: preset to the page, re-pointed inside cards, panels and modals.
|
|
57
|
+
@mixin scroll-hint {
|
|
58
|
+
background-image:
|
|
59
|
+
linear-gradient(
|
|
60
|
+
to right,
|
|
61
|
+
var(--mw-scroll-hint-cover, var(--mw-page-background)) 20%,
|
|
62
|
+
transparent
|
|
63
|
+
),
|
|
64
|
+
linear-gradient(
|
|
65
|
+
to left,
|
|
66
|
+
var(--mw-scroll-hint-cover, var(--mw-page-background)) 20%,
|
|
67
|
+
transparent
|
|
68
|
+
),
|
|
69
|
+
linear-gradient(to right, var(--mw-shadow), transparent),
|
|
70
|
+
linear-gradient(to left, var(--mw-shadow), transparent);
|
|
71
|
+
background-position: left, right, left, right;
|
|
72
|
+
background-repeat: no-repeat;
|
|
73
|
+
background-size:
|
|
74
|
+
2.5rem 100%,
|
|
75
|
+
2.5rem 100%,
|
|
76
|
+
0.9rem 100%,
|
|
77
|
+
0.9rem 100%;
|
|
78
|
+
background-attachment: local, local, scroll, scroll;
|
|
79
|
+
}
|