maverick-wave 4.3.0 → 4.4.1
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 +5 -3
- package/.claude/skills/maverick-wave/examples/angular-form.md +4 -0
- package/.claude/skills/maverick-wave/examples/static-landing-page.md +1 -1
- package/.claude/skills/maverick-wave/references/forms.md +27 -0
- package/.claude/skills/maverick-wave/references/theming.md +91 -67
- package/CHANGELOG.md +16 -0
- package/CLAUDE.md +10 -10
- package/README.md +109 -31
- package/maverick-wave.min.css +2 -2
- package/package.json +2 -2
- package/scripts/verify.js +13 -7
- package/src/assets/header-logo.svg +4 -4
- package/src/js/main.js +3 -3
- package/src/partials/accordions-container.html +9 -9
- package/src/partials/blog-posts-container.html +1 -1
- package/src/partials/buttons-container.html +1 -1
- package/src/partials/colors-container.html +75 -3
- package/src/partials/footer-container.html +3 -3
- package/src/partials/form-elements-container.html +98 -0
- package/src/partials/form-field-container.html +20 -4
- package/src/partials/get-started-container.html +36 -33
- package/src/partials/header-utilities-container.html +1 -1
- package/src/partials/modals-container.html +1 -1
- package/src/partials/ratings-container.html +1 -1
- package/src/partials/segmented-container.html +2 -2
- package/src/partials/tables-container.html +4 -4
- package/src/partials/tabs-container.html +7 -6
- package/src/partials/tags-container.html +1 -1
- package/src/partials/timelines-container.html +5 -5
- package/src/partials/utilities-container.html +1 -1
- package/src/scss/abstracts/_variables.scss +158 -46
- package/src/scss/base/_base.scss +1 -1
- package/src/scss/base/_typography.scss +2 -2
- package/src/scss/components/_alerts.scss +2 -2
- package/src/scss/components/_avatars.scss +2 -2
- package/src/scss/components/_blog-post.scss +5 -5
- package/src/scss/components/_breadcrumbs.scss +3 -3
- package/src/scss/components/_button-bar.scss +4 -4
- package/src/scss/components/_buttons.scss +6 -6
- package/src/scss/components/_calendar.scss +10 -10
- package/src/scss/components/_cards.scss +2 -2
- package/src/scss/components/_divider.scss +3 -3
- package/src/scss/components/_empty-state.scss +4 -4
- package/src/scss/components/_gallery.scss +1 -1
- package/src/scss/components/_info.scss +3 -3
- package/src/scss/components/_kanban.scss +12 -12
- package/src/scss/components/_lists.scss +12 -12
- package/src/scss/components/_localhost-indicator.scss +2 -2
- package/src/scss/components/_meta-info.scss +1 -1
- package/src/scss/components/_ratings.scss +1 -1
- package/src/scss/components/_segmented.scss +3 -3
- package/src/scss/components/_spinners.scss +10 -10
- package/src/scss/components/_stepper.scss +4 -4
- package/src/scss/components/_tabs.scss +5 -5
- package/src/scss/components/_techstack-bucket.scss +2 -2
- package/src/scss/components/_timelines.scss +10 -10
- package/src/scss/form-elements/_checkbox.scss +1 -1
- package/src/scss/form-elements/_form.scss +4 -4
- package/src/scss/form-elements/_index.scss +1 -0
- package/src/scss/form-elements/_input-group.scss +1 -1
- package/src/scss/form-elements/_input.scss +3 -3
- package/src/scss/form-elements/_login.scss +2 -2
- package/src/scss/form-elements/_prefilled.scss +65 -0
- package/src/scss/form-elements/_select.scss +2 -2
- package/src/scss/form-elements/_slider.scss +1 -1
- package/src/scss/form-elements/_textarea.scss +2 -2
- package/src/scss/layout/_footer.scss +3 -3
- package/src/scss/layout/_header.scss +5 -5
- package/src/scss/layout/_section.scss +5 -5
- package/src/scss/utilities/_flex.scss +1 -1
- package/src/scss/utilities/_text.scss +6 -6
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
<!-- the hex code string is getting updated via javascript! -->
|
|
4
4
|
|
|
5
5
|
<p class="mw-text-muted mw-mb-6">
|
|
6
|
-
These
|
|
7
|
-
tones, translucent backgrounds, borders, muted text
|
|
8
|
-
|
|
6
|
+
These thirteen are the only colors you ever set. Everything else - hover
|
|
7
|
+
tones, translucent backgrounds, borders, muted text, the card and footer
|
|
8
|
+
surfaces, the ink variant the dark theme needs - is derived from them at
|
|
9
|
+
runtime with
|
|
10
|
+
<code>color-mix()</code> and relative color syntax, so overriding a root token
|
|
9
11
|
cascades to all of its variants.
|
|
10
12
|
</p>
|
|
11
13
|
|
|
@@ -135,4 +137,74 @@
|
|
|
135
137
|
<p class="mw-text-muted">#000000</p>
|
|
136
138
|
</div>
|
|
137
139
|
</div>
|
|
140
|
+
|
|
141
|
+
<div class="mw-card mw-card-simple color-card">
|
|
142
|
+
<div class="mw-text-center">
|
|
143
|
+
<div
|
|
144
|
+
class="color-swatch"
|
|
145
|
+
style="background: var(--mw-form-elements-background)"
|
|
146
|
+
></div>
|
|
147
|
+
<p>Form Elements</p>
|
|
148
|
+
<p class="mw-text-muted">#000000</p>
|
|
149
|
+
</div>
|
|
150
|
+
</div>
|
|
138
151
|
</div>
|
|
152
|
+
|
|
153
|
+
<h3 class="mw-section-subtitle">Fill or Ink</h3>
|
|
154
|
+
|
|
155
|
+
<p class="mw-text-muted mw-mb-6">
|
|
156
|
+
Every brand and status colour comes in two tokens.
|
|
157
|
+
<code>--mw-primary-color</code> is the exact colour, for anything it
|
|
158
|
+
<strong>fills</strong> - buttons, badges, bars - with
|
|
159
|
+
<code>--mw-accent-text-color</code> on top.
|
|
160
|
+
<code>--mw-primary-text-color</code> is the same colour as ink
|
|
161
|
+
<strong>on</strong> a theme surface: text, icons, focus rings, accent borders.
|
|
162
|
+
A colour picked to carry a label is by definition too dark or too light to be
|
|
163
|
+
read on the page it sits on. The ink token clamps OKLch lightness - at least
|
|
164
|
+
0.68 on the dark page, at most 0.55 on the light one - and keeps hue and
|
|
165
|
+
chroma, so it works for any palette: a dark colour gets lifted, a very light
|
|
166
|
+
one deepened, and a colour already in range passes through untouched. Toggle
|
|
167
|
+
the theme and watch the second row.
|
|
168
|
+
</p>
|
|
169
|
+
|
|
170
|
+
<div class="mw-grid-auto-sm mw-mb-6">
|
|
171
|
+
<div class="mw-card mw-card-simple">
|
|
172
|
+
<p class="mw-mb-3"><strong>Fill</strong> - <code>--mw-*-color</code></p>
|
|
173
|
+
<div class="mw-tags">
|
|
174
|
+
<span class="mw-tag mw-tag-primary">Primary</span>
|
|
175
|
+
<span class="mw-tag mw-tag-secondary">Secondary</span>
|
|
176
|
+
</div>
|
|
177
|
+
<p class="mw-mt-4">
|
|
178
|
+
<button class="mw-btn mw-btn-primary">Primary</button>
|
|
179
|
+
<button class="mw-btn mw-btn-secondary">Secondary</button>
|
|
180
|
+
</p>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
<div class="mw-card mw-card-simple">
|
|
184
|
+
<p class="mw-mb-3"><strong>Ink</strong> - <code>--mw-*-text-color</code></p>
|
|
185
|
+
<p class="mw-text-primary">Primary text, links and icons</p>
|
|
186
|
+
<p class="mw-text-secondary">Secondary accent</p>
|
|
187
|
+
<p class="mw-text-success">Success</p>
|
|
188
|
+
<p class="mw-text-warning">Warning</p>
|
|
189
|
+
<p class="mw-text-danger">Danger</p>
|
|
190
|
+
<p class="mw-text-info">Info</p>
|
|
191
|
+
</div>
|
|
192
|
+
</div>
|
|
193
|
+
|
|
194
|
+
<p class="mw-text-muted">
|
|
195
|
+
Tinted surfaces follow one rule as well:
|
|
196
|
+
<code>--mw-*-background</code> is 20% of the colour,
|
|
197
|
+
<code>--mw-*-background-hover</code> 45%. Both stay close enough to the
|
|
198
|
+
surface underneath that <code>--mw-text-color</code> keeps working on top -
|
|
199
|
+
which is what makes an alert, badge or tag readable in either theme.
|
|
200
|
+
</p>
|
|
201
|
+
|
|
202
|
+
<p class="mw-text-muted">
|
|
203
|
+
The surfaces work the same way. Card, footer and border scale the page
|
|
204
|
+
background's OKLch lightness and chroma by one factor and keep the hue, so a
|
|
205
|
+
tinted page hands its tint down instead of graying out. A card always steps
|
|
206
|
+
<strong>away from the text colour</strong> - darker than the page in the dark
|
|
207
|
+
theme, lighter in the light one - so content sits on the cleaner surface. That
|
|
208
|
+
is also why the dark page background is not near-black: the surfaces below it
|
|
209
|
+
need somewhere to go.
|
|
210
|
+
</p>
|
|
@@ -91,9 +91,9 @@
|
|
|
91
91
|
MaverickWave is a lightweight, modern CSS framework for building responsive
|
|
92
92
|
websites with elegance and speed. It embodies the spirit of innovation and
|
|
93
93
|
fluidity, just like a maverick wave that charts its own course across the
|
|
94
|
-
ocean. The framework was named to reflect its bold approach to web
|
|
95
|
-
|
|
96
|
-
|
|
94
|
+
ocean. The framework was named to reflect its bold approach to web design -
|
|
95
|
+
breaking free from conventional constraints while maintaining a natural flow
|
|
96
|
+
that adapts seamlessly to any environment. Like the powerful yet graceful
|
|
97
97
|
movement of waves, MaverickWave combines strength and flexibility, empowering
|
|
98
98
|
developers to create distinctive digital experiences that stand out in the
|
|
99
99
|
vast sea of the web.
|
|
@@ -433,6 +433,104 @@
|
|
|
433
433
|
</div>
|
|
434
434
|
</div>
|
|
435
435
|
|
|
436
|
+
<div class="mw-card mw-card-simple">
|
|
437
|
+
<h3 class="mw-card-title">Prefilled Values</h3>
|
|
438
|
+
<p class="mw-text-muted mw-text-sm mw-mt-3">
|
|
439
|
+
Add <code>mw-prefilled</code> to any control whose value was not typed in
|
|
440
|
+
this session - loaded from an existing record, restored from a draft,
|
|
441
|
+
filled with a default. The corner triangle scales with the control size
|
|
442
|
+
and stays visible on readonly and disabled controls. It is decoration
|
|
443
|
+
only, so repeat the information in a <code>mw-field-hint</code> for screen
|
|
444
|
+
readers.
|
|
445
|
+
</p>
|
|
446
|
+
<div class="mw-grid-4 mw-mt-4">
|
|
447
|
+
<!-- Small -->
|
|
448
|
+
<label for="prefilled-input-sm">
|
|
449
|
+
<span>Small</span>
|
|
450
|
+
<input
|
|
451
|
+
id="prefilled-input-sm"
|
|
452
|
+
type="text"
|
|
453
|
+
class="mw-input mw-input-sm mw-prefilled"
|
|
454
|
+
value="Max Mustermann"
|
|
455
|
+
/>
|
|
456
|
+
</label>
|
|
457
|
+
<!-- Default -->
|
|
458
|
+
<label for="prefilled-input">
|
|
459
|
+
<span>Default</span>
|
|
460
|
+
<input
|
|
461
|
+
id="prefilled-input"
|
|
462
|
+
type="text"
|
|
463
|
+
class="mw-input mw-prefilled"
|
|
464
|
+
value="Max Mustermann"
|
|
465
|
+
/>
|
|
466
|
+
</label>
|
|
467
|
+
<!-- Large -->
|
|
468
|
+
<label for="prefilled-input-lg">
|
|
469
|
+
<span>Large</span>
|
|
470
|
+
<input
|
|
471
|
+
id="prefilled-input-lg"
|
|
472
|
+
type="text"
|
|
473
|
+
class="mw-input mw-input-lg mw-prefilled"
|
|
474
|
+
value="Max Mustermann"
|
|
475
|
+
/>
|
|
476
|
+
</label>
|
|
477
|
+
<!-- Readonly -->
|
|
478
|
+
<label for="prefilled-input-readonly">
|
|
479
|
+
<span>Readonly</span>
|
|
480
|
+
<input
|
|
481
|
+
id="prefilled-input-readonly"
|
|
482
|
+
type="text"
|
|
483
|
+
class="mw-input mw-prefilled"
|
|
484
|
+
readonly
|
|
485
|
+
value="USR-00042"
|
|
486
|
+
/>
|
|
487
|
+
</label>
|
|
488
|
+
</div>
|
|
489
|
+
<div class="mw-grid-4 mw-mt-4">
|
|
490
|
+
<!-- Select small -->
|
|
491
|
+
<label for="prefilled-select-sm">
|
|
492
|
+
<span>Select small</span>
|
|
493
|
+
<select
|
|
494
|
+
id="prefilled-select-sm"
|
|
495
|
+
class="mw-select mw-select-sm mw-prefilled"
|
|
496
|
+
>
|
|
497
|
+
<option selected>Germany</option>
|
|
498
|
+
<option>Austria</option>
|
|
499
|
+
</select>
|
|
500
|
+
</label>
|
|
501
|
+
<!-- Select default -->
|
|
502
|
+
<label for="prefilled-select">
|
|
503
|
+
<span>Select default</span>
|
|
504
|
+
<select id="prefilled-select" class="mw-select mw-prefilled">
|
|
505
|
+
<option selected>Germany</option>
|
|
506
|
+
<option>Austria</option>
|
|
507
|
+
</select>
|
|
508
|
+
</label>
|
|
509
|
+
<!-- Select large -->
|
|
510
|
+
<label for="prefilled-select-lg">
|
|
511
|
+
<span>Select large</span>
|
|
512
|
+
<select
|
|
513
|
+
id="prefilled-select-lg"
|
|
514
|
+
class="mw-select mw-select-lg mw-prefilled"
|
|
515
|
+
>
|
|
516
|
+
<option selected>Germany</option>
|
|
517
|
+
<option>Austria</option>
|
|
518
|
+
</select>
|
|
519
|
+
</label>
|
|
520
|
+
<!-- Textarea -->
|
|
521
|
+
<label for="prefilled-textarea">
|
|
522
|
+
<span>Textarea</span>
|
|
523
|
+
<textarea
|
|
524
|
+
id="prefilled-textarea"
|
|
525
|
+
class="mw-textarea mw-prefilled"
|
|
526
|
+
rows="3"
|
|
527
|
+
>
|
|
528
|
+
Imported from the previous application.</textarea
|
|
529
|
+
>
|
|
530
|
+
</label>
|
|
531
|
+
</div>
|
|
532
|
+
</div>
|
|
533
|
+
|
|
436
534
|
<div class="mw-card mw-card-simple">
|
|
437
535
|
<h3 class="mw-card-title">Toggle Switch</h3>
|
|
438
536
|
<div class="mw-grid-4-lg mw-mt-4">
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<div class="mw-card mw-card-simple">
|
|
8
8
|
<p class="mw-text-muted mw-text-sm mw-mb-4">
|
|
9
9
|
The <code>mw-field</code> wrapper groups label, input, hint, and error
|
|
10
|
-
message as a single unit
|
|
10
|
+
message as a single unit - the recommended pattern for Angular reactive
|
|
11
11
|
forms.
|
|
12
12
|
</p>
|
|
13
13
|
|
|
@@ -80,9 +80,9 @@
|
|
|
80
80
|
The error look is not automatic: bind
|
|
81
81
|
<code>mw-field-has-error</code> to the control state (in Angular
|
|
82
82
|
<code>[class.mw-field-has-error]="c.invalid && c.touched"</code
|
|
83
|
-
>). A control without a field wrapper
|
|
83
|
+
>). A control without a field wrapper - also a
|
|
84
84
|
<code>mw-checkbox-group</code>, <code>mw-radio-group</code> or
|
|
85
|
-
<code>mw-slider-container</code>
|
|
85
|
+
<code>mw-slider-container</code> - takes
|
|
86
86
|
<code>mw-form-element-error</code> instead.
|
|
87
87
|
</p>
|
|
88
88
|
|
|
@@ -133,13 +133,29 @@
|
|
|
133
133
|
</div>
|
|
134
134
|
|
|
135
135
|
<!-- Disabled -->
|
|
136
|
-
<div class="mw-field">
|
|
136
|
+
<div class="mw-field mw-mb-4">
|
|
137
137
|
<label class="mw-field-label" for="ff-plan">Plan (disabled)</label>
|
|
138
138
|
<select id="ff-plan" class="mw-select" disabled>
|
|
139
139
|
<option>Enterprise</option>
|
|
140
140
|
</select>
|
|
141
141
|
<span class="mw-field-hint">Contact support to change your plan.</span>
|
|
142
142
|
</div>
|
|
143
|
+
|
|
144
|
+
<!-- Prefilled -->
|
|
145
|
+
<div class="mw-field">
|
|
146
|
+
<label class="mw-field-label" for="ff-company">Company</label>
|
|
147
|
+
<input
|
|
148
|
+
id="ff-company"
|
|
149
|
+
type="text"
|
|
150
|
+
class="mw-input mw-prefilled"
|
|
151
|
+
value="ACME GmbH"
|
|
152
|
+
aria-describedby="ff-company-hint"
|
|
153
|
+
/>
|
|
154
|
+
<span class="mw-field-hint" id="ff-company-hint"
|
|
155
|
+
>Prefilled from your account - marked with
|
|
156
|
+
<code>mw-prefilled</code>.</span
|
|
157
|
+
>
|
|
158
|
+
</div>
|
|
143
159
|
</div>
|
|
144
160
|
</div>
|
|
145
161
|
</div>
|
|
@@ -69,16 +69,18 @@
|
|
|
69
69
|
<pre class="mw-code-block"><code>/* your-custom-styles.css */
|
|
70
70
|
:root {
|
|
71
71
|
/* Brand colors */
|
|
72
|
-
--mw-primary-color: #
|
|
73
|
-
--mw-secondary-color: #
|
|
72
|
+
--mw-primary-color: #0f766e;
|
|
73
|
+
--mw-secondary-color: #b45309;
|
|
74
74
|
|
|
75
|
-
/*
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
/* Text on every solid colored surface. The one token that cannot be
|
|
76
|
+
derived: a light brand color needs a dark label, a dark one a light
|
|
77
|
+
label - set it opposite your primary. */
|
|
78
|
+
--mw-accent-text-color: #f2fafa;
|
|
78
79
|
|
|
79
|
-
/*
|
|
80
|
-
|
|
81
|
-
--mw-
|
|
80
|
+
/* Page backgrounds. Card, footer and border are derived from them, so
|
|
81
|
+
these two are usually all you set. */
|
|
82
|
+
--mw-dark-page-background: #172127;
|
|
83
|
+
--mw-light-page-background: #f2f6f7;
|
|
82
84
|
|
|
83
85
|
/* Font */
|
|
84
86
|
--mw-font-family-base: 'Your Custom Font', sans-serif;
|
|
@@ -98,7 +100,7 @@
|
|
|
98
100
|
<p>
|
|
99
101
|
MaverickWave uses <code>@use</code> / <code>@forward</code> (modern
|
|
100
102
|
Sass module syntax). Pass your overrides through
|
|
101
|
-
<code>@use ... with (...)</code>
|
|
103
|
+
<code>@use ... with (...)</code> - a plain assignment before the
|
|
102
104
|
<code>@use</code> has no effect, because the root colors are declared
|
|
103
105
|
with <code>!default</code>.
|
|
104
106
|
</p>
|
|
@@ -107,11 +109,11 @@
|
|
|
107
109
|
<p>Set <code>$mw-theme-mode</code> to control theme behavior:</p>
|
|
108
110
|
<ul>
|
|
109
111
|
<li>
|
|
110
|
-
<code>'switchable'</code> (default)
|
|
112
|
+
<code>'switchable'</code> (default) - dark base, toggleable to light
|
|
111
113
|
via <code>.mw-theme-light</code> on <code><body></code>
|
|
112
114
|
</li>
|
|
113
|
-
<li><code>'dark'</code>
|
|
114
|
-
<li><code>'light'</code>
|
|
115
|
+
<li><code>'dark'</code> - compile dark theme only</li>
|
|
116
|
+
<li><code>'light'</code> - compile light theme only</li>
|
|
115
117
|
</ul>
|
|
116
118
|
<p class="mw-text-warning">
|
|
117
119
|
<i class="fas fa-exclamation-triangle mw-mr-1"></i>
|
|
@@ -119,20 +121,21 @@
|
|
|
119
121
|
dark appearance regardless of theme mode.
|
|
120
122
|
</p>
|
|
121
123
|
|
|
122
|
-
<h5 class="mw-mt-4">Example
|
|
124
|
+
<h5 class="mw-mt-4">Example - your main SCSS file</h5>
|
|
123
125
|
<pre class="mw-code-block"><code>// styles.scss
|
|
124
126
|
|
|
125
127
|
@use 'path/to/maverick-wave/src/scss/main' with (
|
|
126
128
|
// Theme mode (optional, default is 'switchable')
|
|
127
129
|
$mw-theme-mode: 'switchable',
|
|
128
130
|
|
|
129
|
-
// Root colors
|
|
130
|
-
$primary-color: #
|
|
131
|
-
$secondary-color: #
|
|
132
|
-
$
|
|
133
|
-
$
|
|
134
|
-
$
|
|
135
|
-
$
|
|
131
|
+
// Root colors - everything else is derived from them at runtime
|
|
132
|
+
$primary-color: #0f766e,
|
|
133
|
+
$secondary-color: #b45309,
|
|
134
|
+
$accent-text-color: #f2fafa,
|
|
135
|
+
$dark-background: #172127,
|
|
136
|
+
$light-background: #f2f6f7,
|
|
137
|
+
$dark-text-color: #e8eef0,
|
|
138
|
+
$light-text-color: #172127
|
|
136
139
|
);
|
|
137
140
|
|
|
138
141
|
// Your additional styles
|
|
@@ -152,12 +155,12 @@ body {
|
|
|
152
155
|
</p>
|
|
153
156
|
<pre
|
|
154
157
|
class="mw-code-block"
|
|
155
|
-
><code>// styles.scss
|
|
158
|
+
><code>// styles.scss - the configuration has to come first
|
|
156
159
|
@use 'maverick-wave/src/scss/abstracts/variables' with (
|
|
157
160
|
$primary-color: #0f766e
|
|
158
161
|
);
|
|
159
162
|
|
|
160
|
-
@use 'maverick-wave/src/scss/base'; // required
|
|
163
|
+
@use 'maverick-wave/src/scss/base'; // required - carries the :root tokens
|
|
161
164
|
@use 'maverick-wave/src/scss/layout/grid';
|
|
162
165
|
@use 'maverick-wave/src/scss/layout/page-header';
|
|
163
166
|
@use 'maverick-wave/src/scss/components/buttons';
|
|
@@ -169,7 +172,7 @@ body {
|
|
|
169
172
|
@use 'maverick-wave/src/scss/utilities';</code></pre>
|
|
170
173
|
<p class="mw-text-warning">
|
|
171
174
|
<i class="fas fa-exclamation-triangle mw-mr-1"></i>
|
|
172
|
-
Without <code>base</code> every component renders without colors
|
|
175
|
+
Without <code>base</code> every component renders without colors - it
|
|
173
176
|
carries the <code>:root</code> custom properties. A subset like the
|
|
174
177
|
one above compiles to roughly 98 kB raw / 15 kB gzipped, against 147
|
|
175
178
|
kB / 22.5 kB for the full build.
|
|
@@ -195,9 +198,9 @@ body {
|
|
|
195
198
|
<i class="fas fa-exclamation-triangle mw-mr-1"></i>
|
|
196
199
|
<strong>No <code>"scripts"</code> entry for the JS file.</strong>
|
|
197
200
|
<code>maverick-wave.min.js</code> wires everything up once on
|
|
198
|
-
<code>DOMContentLoaded</code> and writes straight into the DOM
|
|
199
|
-
|
|
200
|
-
|
|
201
|
+
<code>DOMContentLoaded</code> and writes straight into the DOM - in a
|
|
202
|
+
SPA everything rendered afterwards stays uninitialized, and the class
|
|
203
|
+
toggles happen behind change detection. Rebuild the behaviors in
|
|
201
204
|
components; the state classes (<code>active</code>, <code>open</code>,
|
|
202
205
|
<code>mw-modal-open</code>, <code>mw-selected</code>) are the whole
|
|
203
206
|
contract.
|
|
@@ -235,8 +238,8 @@ constructor() {
|
|
|
235
238
|
<h5 class="mw-mt-4">Reactive Forms</h5>
|
|
236
239
|
<p>
|
|
237
240
|
The <code>mw-field</code> wrapper groups label, control, hint and
|
|
238
|
-
error. Bind the error state yourself
|
|
239
|
-
|
|
241
|
+
error. Bind the error state yourself - the framework does not style
|
|
242
|
+
Angular's <code>ng-invalid</code> / <code>ng-touched</code>
|
|
240
243
|
classes:
|
|
241
244
|
</p>
|
|
242
245
|
<pre
|
|
@@ -263,10 +266,10 @@ constructor() {
|
|
|
263
266
|
import './assets/maverick-wave.min.css';</code></pre>
|
|
264
267
|
<p class="mw-text-warning">
|
|
265
268
|
<i class="fas fa-exclamation-triangle mw-mr-1"></i>
|
|
266
|
-
Do not import <code>maverick-wave.min.js</code> in a SPA
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
269
|
+
Do not import <code>maverick-wave.min.js</code> in a SPA - it binds
|
|
270
|
+
once on <code>DOMContentLoaded</code> and never sees anything rendered
|
|
271
|
+
later. Accordion, tabs, modal and theme toggle are class toggles; bind
|
|
272
|
+
them with <code>className</code> from state.
|
|
270
273
|
</p>
|
|
271
274
|
<p>Example usage in a React component:</p>
|
|
272
275
|
<pre class="mw-code-block"><code>function App() {
|
|
@@ -321,7 +324,7 @@ import './assets/maverick-wave.min.css';</code></pre>
|
|
|
321
324
|
</p>
|
|
322
325
|
<pre
|
|
323
326
|
class="mw-code-block"
|
|
324
|
-
><code>/* your-custom-styles.css
|
|
327
|
+
><code>/* your-custom-styles.css - load AFTER maverick-wave.min.css */
|
|
325
328
|
:root {
|
|
326
329
|
--mw-font-family-base: 'Your Custom Font', system-ui, sans-serif;
|
|
327
330
|
--mw-font-family-heading: 'Your Custom Font', system-ui, sans-serif;
|
|
@@ -85,7 +85,7 @@
|
|
|
85
85
|
Shows who is signed in: an avatar with initials plus the name. Below
|
|
86
86
|
<code>md</code> the name steps aside and only the round avatar remains, so
|
|
87
87
|
it keeps the same height as the login and burger buttons. Works outside a
|
|
88
|
-
header too
|
|
88
|
+
header too - in a panel header or a toolbar.
|
|
89
89
|
</p>
|
|
90
90
|
<!-- Fake header -->
|
|
91
91
|
<div class="mw-mb-4" style="position: relative; overflow: hidden">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Ratings</h3>
|
|
2
2
|
<p class="mw-text-muted">
|
|
3
|
-
Change the <code>data-rating</code> attribute (0
|
|
3
|
+
Change the <code>data-rating</code> attribute (0-5) to see how many thumbs-up
|
|
4
4
|
light up. You can also determine the icon flexibly.
|
|
5
5
|
</p>
|
|
6
6
|
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
</div>
|
|
45
45
|
|
|
46
46
|
<label class="mw-field-label mw-d-block mw-mb-2">
|
|
47
|
-
Secondary tone
|
|
47
|
+
Secondary tone - <code>mw-segmented-secondary</code>
|
|
48
48
|
</label>
|
|
49
49
|
<div class="mw-segmented mw-segmented-secondary mw-mb-6">
|
|
50
50
|
<button type="button" class="mw-segmented-item mw-active">List</button>
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
</div>
|
|
53
53
|
|
|
54
54
|
<label class="mw-field-label mw-d-block mw-mb-2">
|
|
55
|
-
Inline
|
|
55
|
+
Inline - <code>mw-segmented-auto</code>
|
|
56
56
|
</label>
|
|
57
57
|
<div class="mw-segmented mw-segmented-auto">
|
|
58
58
|
<button type="button" class="mw-segmented-item mw-active">All</button>
|
|
@@ -44,9 +44,9 @@
|
|
|
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-currency</strong>
|
|
48
|
-
|
|
49
|
-
|
|
47
|
+
<strong>mw-text-currency</strong> - right-aligned with tabular, lining
|
|
48
|
+
digits and no wrapping mid-number. The alignment comes from the right
|
|
49
|
+
edge, so it works the same for <code>1,204.50</code> and
|
|
50
50
|
<code>1.204,50</code>; only the number of decimal places has to be
|
|
51
51
|
consistent per column. If you only want the fixed-width digits without the
|
|
52
52
|
alignment, use <strong>mw-text-numeric</strong>. For the input side there
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
<code>mw-table-responsive-scroll</code> provides. Scroll inside the table
|
|
103
103
|
to see it. Its height comes from
|
|
104
104
|
<code>--mw-table-scroll-height</code> (400px, 260px below <code>sm</code>)
|
|
105
|
-
|
|
105
|
+
- override it per table with
|
|
106
106
|
<code>style="--mw-table-scroll-height: 250px"</code>.
|
|
107
107
|
</p>
|
|
108
108
|
|
|
@@ -168,8 +168,8 @@ href="path/maverick-wave.min.css"></code></pre>
|
|
|
168
168
|
</p>
|
|
169
169
|
<pre class="mw-code-block"><code>/* your-custom-styles.css */
|
|
170
170
|
:root {
|
|
171
|
-
--mw-primary-color: #
|
|
172
|
-
--mw-dark-page-background: #
|
|
171
|
+
--mw-primary-color: #0f766e;
|
|
172
|
+
--mw-dark-page-background: #172127;
|
|
173
173
|
--mw-font-family-base: 'Your Custom Font', sans-serif;
|
|
174
174
|
/* ... other overrides ... */
|
|
175
175
|
}</code></pre>
|
|
@@ -181,14 +181,15 @@ href="path/maverick-wave.min.css"></code></pre>
|
|
|
181
181
|
</p>
|
|
182
182
|
<pre class="mw-code-block"><code>// your-styles.scss
|
|
183
183
|
@use 'path/to/maverick-wave/src/scss/main' with (
|
|
184
|
-
$primary-color: #
|
|
185
|
-
$secondary-color: #
|
|
184
|
+
$primary-color: #0f766e,
|
|
185
|
+
$secondary-color: #b45309
|
|
186
186
|
// ... other root colors ...
|
|
187
187
|
);</code></pre>
|
|
188
188
|
<p>
|
|
189
189
|
Both methods end up at the same place: the derived tones (hover
|
|
190
|
-
colors, translucent backgrounds, borders
|
|
191
|
-
with <code>color-mix()</code
|
|
190
|
+
colors, translucent backgrounds, borders, the ink variant the dark
|
|
191
|
+
theme needs) are calculated at runtime with <code>color-mix()</code>
|
|
192
|
+
and relative color syntax, so a single root color is enough.
|
|
192
193
|
</p>
|
|
193
194
|
|
|
194
195
|
<h5 class="mw-mt-4 mw-mb-2">Adding Custom Fonts</h5>
|
|
@@ -196,7 +196,7 @@
|
|
|
196
196
|
<h3 class="mw-card-title mw-mb-4">Single Tag</h3>
|
|
197
197
|
<div class="mw-card mw-card-simple">
|
|
198
198
|
<p class="mw-text-muted mw-mb-4">
|
|
199
|
-
For a single status chip
|
|
199
|
+
For a single status chip - e.g. in a table cell - use
|
|
200
200
|
<strong>mw-tag</strong>. It carries the colour itself, so no
|
|
201
201
|
<strong>mw-tags</strong> container is needed.
|
|
202
202
|
</p>
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
<div class="mw-timeline-big mw-my-6">
|
|
8
8
|
<div class="mw-timeline-big-step mw-active">
|
|
9
9
|
<div class="mw-timeline-big-date-container">
|
|
10
|
-
<div class="mw-timeline-big-date-main">01/2023
|
|
10
|
+
<div class="mw-timeline-big-date-main">01/2023 - Present</div>
|
|
11
11
|
</div>
|
|
12
12
|
<div class="mw-timeline-big-content">
|
|
13
13
|
<div class="mw-card">
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<div class="mw-timeline-big-event">
|
|
30
30
|
<span class="mw-timeline-big-event-date">05/2023</span>
|
|
31
31
|
<span class="mw-timeline-big-event-title">
|
|
32
|
-
AWS Certified Solutions Architect
|
|
32
|
+
AWS Certified Solutions Architect - Professional
|
|
33
33
|
</span>
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
<div class="mw-timeline-big-step">
|
|
39
39
|
<div class="mw-timeline-big-date-container">
|
|
40
|
-
<div class="mw-timeline-big-date-main">08/2021
|
|
40
|
+
<div class="mw-timeline-big-date-main">08/2021 - 12/2022</div>
|
|
41
41
|
<div class="mw-timeline-big-date-sub">(1 year 4 months)</div>
|
|
42
42
|
</div>
|
|
43
43
|
<div class="mw-timeline-big-content">
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
|
|
75
75
|
<div class="mw-timeline-big-step">
|
|
76
76
|
<div class="mw-timeline-big-date-container">
|
|
77
|
-
<div class="mw-timeline-big-date-main">06/2020
|
|
77
|
+
<div class="mw-timeline-big-date-main">06/2020 - 07/2021</div>
|
|
78
78
|
<div class="mw-timeline-big-date-sub">(1 year 1 month)</div>
|
|
79
79
|
</div>
|
|
80
80
|
<div class="mw-timeline-big-content">
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
|
|
106
106
|
<div class="mw-timeline-big-step">
|
|
107
107
|
<div class="mw-timeline-big-date-container">
|
|
108
|
-
<div class="mw-timeline-big-date-main">02/2018
|
|
108
|
+
<div class="mw-timeline-big-date-main">02/2018 - 05/2020</div>
|
|
109
109
|
<div class="mw-timeline-big-date-sub">(2 year 3 months)</div>
|
|
110
110
|
</div>
|
|
111
111
|
<div class="mw-timeline-big-content">
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
<h4 class="mw-mt-6 mw-mb-2">Auto Margins</h4>
|
|
16
16
|
<p class="mw-text-muted mw-text-sm mw-mb-3">
|
|
17
|
-
Every margin utility also takes <code>auto</code>
|
|
17
|
+
Every margin utility also takes <code>auto</code> -
|
|
18
18
|
<code>mw-mx-auto</code> centers a block, <code>mw-ml-auto</code> pushes a
|
|
19
19
|
flex item to the far side.
|
|
20
20
|
</p>
|