maverick-wave 4.9.4 → 4.11.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 +112 -12
- package/.claude/skills/maverick-wave/references/components.md +152 -4
- package/.claude/skills/maverick-wave/references/forms.md +26 -0
- package/.claude/skills/maverick-wave/references/javascript.md +34 -27
- package/.claude/skills/maverick-wave/references/layout.md +38 -3
- package/.claude/skills/maverick-wave/references/theming.md +33 -7
- package/CHANGELOG.md +6 -0
- package/README.md +79 -4
- package/index.html +16 -0
- package/maverick-wave.min.css +3 -3
- package/maverick-wave.min.js +1 -1
- package/package.json +2 -2
- package/src/js/main.js +71 -1
- package/src/partials/accordions-container.html +5 -0
- package/src/partials/alerts-container.html +5 -0
- package/src/partials/avatars-container.html +5 -0
- package/src/partials/badges-container.html +114 -0
- package/src/partials/blog-posts-container.html +5 -0
- package/src/partials/breadcrumbs-container.html +1 -1
- package/src/partials/button-bar-container.html +5 -0
- package/src/partials/buttons-container.html +84 -0
- package/src/partials/calendar-container.html +1 -1
- package/src/partials/cards-container.html +5 -0
- package/src/partials/code-container.html +6 -0
- package/src/partials/colors-container.html +1 -1
- package/src/partials/coming-soon-container.html +4 -0
- package/src/partials/divider-container.html +4 -0
- package/src/partials/dropdown-container.html +119 -0
- package/src/partials/empty-state-container.html +5 -0
- package/src/partials/form-container.html +5 -0
- package/src/partials/form-elements-container.html +5 -0
- package/src/partials/form-field-container.html +5 -0
- package/src/partials/gallery-container.html +5 -0
- package/src/partials/get-started-container.html +16 -4
- package/src/partials/header-container.html +6 -2
- package/src/partials/header-utilities-container.html +8 -2
- package/src/partials/html-lists-container.html +5 -0
- package/src/partials/info-container.html +4 -0
- package/src/partials/input-group-container.html +5 -0
- package/src/partials/item-lists-container.html +5 -0
- package/src/partials/kanban-container.html +1 -1
- package/src/partials/kbd-container.html +63 -0
- package/src/partials/meta-info-container.html +5 -0
- package/src/partials/pagination-container.html +1 -1
- package/src/partials/panels-container.html +4 -0
- package/src/partials/progress-container.html +4 -0
- package/src/partials/ratings-container.html +1 -1
- package/src/partials/skeleton-container.html +5 -0
- package/src/partials/spinners-container.html +5 -1
- package/src/partials/stepper-container.html +4 -0
- package/src/partials/tables-container.html +7 -0
- package/src/partials/tabs-container.html +35 -13
- package/src/partials/tags-container.html +5 -0
- package/src/partials/tiles-container.html +1 -1
- package/src/partials/typography-container.html +5 -0
- package/src/partials/utilities-container.html +153 -0
- package/src/scss/abstracts/_mixins.scss +176 -0
- package/src/scss/abstracts/_variables.scss +193 -5
- package/src/scss/base/_base.scss +103 -2
- package/src/scss/base/_reset.scss +43 -1
- package/src/scss/base/_typography.scss +47 -0
- package/src/scss/components/_accordions.scss +11 -1
- package/src/scss/components/_alerts.scss +3 -3
- package/src/scss/components/_avatars.scss +27 -6
- package/src/scss/components/_badge.scss +157 -0
- package/src/scss/components/_blog-post.scss +10 -7
- package/src/scss/components/_breadcrumbs.scss +11 -2
- package/src/scss/components/_button-bar.scss +9 -2
- package/src/scss/components/_buttons.scss +133 -17
- package/src/scss/components/_calendar.scss +13 -2
- package/src/scss/components/_cards.scss +12 -5
- package/src/scss/components/_code.scss +15 -0
- package/src/scss/components/_coming-soon.scss +5 -2
- package/src/scss/components/_content-slider.scss +1 -1
- package/src/scss/components/_dropdown.scss +219 -0
- package/src/scss/components/_gallery.scss +17 -8
- package/src/scss/components/_index.scss +3 -0
- package/src/scss/components/_info.scss +14 -8
- package/src/scss/components/_kanban.scss +40 -6
- package/src/scss/components/_kbd.scss +43 -0
- package/src/scss/components/_lists.scss +26 -23
- package/src/scss/components/_modals.scss +71 -6
- package/src/scss/components/_pagination.scss +4 -3
- package/src/scss/components/_panels.scss +13 -14
- package/src/scss/components/_progress.scss +1 -1
- package/src/scss/components/_segmented.scss +8 -4
- package/src/scss/components/_stepper.scss +3 -3
- package/src/scss/components/_tables.scss +5 -8
- package/src/scss/components/_tabs.scss +22 -3
- package/src/scss/components/_tags.scss +1 -2
- package/src/scss/components/_techstack-bucket.scss +8 -5
- package/src/scss/components/_theme-toggle.scss +16 -8
- package/src/scss/components/_tiles.scss +14 -4
- package/src/scss/components/_timelines.scss +9 -6
- package/src/scss/components/_toasts.scss +1 -1
- package/src/scss/form-elements/_checkbox.scss +2 -1
- package/src/scss/form-elements/_form.scss +2 -2
- package/src/scss/form-elements/_input-group.scss +30 -1
- package/src/scss/form-elements/_input.scss +10 -10
- package/src/scss/form-elements/_login.scss +1 -1
- package/src/scss/form-elements/_radio.scss +4 -3
- package/src/scss/form-elements/_select.scss +9 -10
- package/src/scss/form-elements/_slider.scss +11 -11
- package/src/scss/form-elements/_textarea.scss +5 -8
- package/src/scss/form-elements/_toggle.scss +6 -5
- package/src/scss/layout/_footer.scss +14 -7
- package/src/scss/layout/_header.scss +18 -17
- package/src/scss/layout/_home.scss +1 -1
- package/src/scss/layout/_main.scss +6 -6
- package/src/scss/layout/_section.scss +7 -4
- package/src/scss/utilities/_accessibility.scss +38 -0
- package/src/scss/utilities/_aspect.scss +27 -0
- package/src/scss/utilities/_display.scss +52 -0
- package/src/scss/utilities/_elevation.scss +16 -0
- package/src/scss/utilities/_index.scss +2 -0
- package/src/scss/utilities/_text.scss +63 -0
- package/src/scss/utilities/_touch-targets.scss +63 -0
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Dropdown</h3>
|
|
2
|
+
|
|
3
|
+
<p class="mw-text-muted mw-mb-6 mw-text-measure">
|
|
4
|
+
Built on <code><details></code> and <code><summary></code> rather
|
|
5
|
+
than a <code>div</code> and a click handler. That buys the whole keyboard
|
|
6
|
+
contract for free: the trigger is focusable, Enter and Space toggle it, the
|
|
7
|
+
open state lives in the DOM where a screen reader can see it, and the menu
|
|
8
|
+
still opens with JavaScript switched off. The framework script only adds what
|
|
9
|
+
markup cannot express - closing on <kbd>Esc</kbd> and on a click elsewhere.
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<div class="mw-grid-2 mw-gap-6">
|
|
13
|
+
<div>
|
|
14
|
+
<h3 class="mw-card-title mw-mb-4">Actions menu</h3>
|
|
15
|
+
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
16
|
+
<div>
|
|
17
|
+
<h5 class="mw-text-medium mw-mb-2">Default</h5>
|
|
18
|
+
<details class="mw-dropdown">
|
|
19
|
+
<summary class="mw-btn mw-btn-primary">
|
|
20
|
+
Actions <i class="fas fa-chevron-down mw-dropdown-caret"></i>
|
|
21
|
+
</summary>
|
|
22
|
+
<div class="mw-dropdown-menu">
|
|
23
|
+
<div class="mw-dropdown-label">Manage</div>
|
|
24
|
+
<button class="mw-dropdown-item">
|
|
25
|
+
<i class="fas fa-pen"></i> Edit
|
|
26
|
+
</button>
|
|
27
|
+
<button class="mw-dropdown-item">
|
|
28
|
+
<i class="fas fa-copy"></i> Duplicate
|
|
29
|
+
</button>
|
|
30
|
+
<button class="mw-dropdown-item" disabled>
|
|
31
|
+
<i class="fas fa-arrow-right"></i> Move
|
|
32
|
+
</button>
|
|
33
|
+
<hr class="mw-dropdown-divider" />
|
|
34
|
+
<button class="mw-dropdown-item mw-dropdown-item-danger">
|
|
35
|
+
<i class="fas fa-trash"></i> Delete
|
|
36
|
+
</button>
|
|
37
|
+
</div>
|
|
38
|
+
</details>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<div>
|
|
42
|
+
<h5 class="mw-text-medium mw-mb-2">As a picker</h5>
|
|
43
|
+
<details class="mw-dropdown">
|
|
44
|
+
<summary class="mw-btn mw-btn-outline">
|
|
45
|
+
Sort by: Newest
|
|
46
|
+
<i class="fas fa-chevron-down mw-dropdown-caret"></i>
|
|
47
|
+
</summary>
|
|
48
|
+
<div class="mw-dropdown-menu">
|
|
49
|
+
<button class="mw-dropdown-item mw-active" aria-checked="true">
|
|
50
|
+
Newest first
|
|
51
|
+
</button>
|
|
52
|
+
<button class="mw-dropdown-item">Oldest first</button>
|
|
53
|
+
<button class="mw-dropdown-item">Name A - Z</button>
|
|
54
|
+
<button class="mw-dropdown-item">Name Z - A</button>
|
|
55
|
+
</div>
|
|
56
|
+
</details>
|
|
57
|
+
<p class="mw-text-muted mw-text-sm mw-mt-3 mw-mb-0">
|
|
58
|
+
<code>mw-active</code> marks the current choice, for a menu that picks
|
|
59
|
+
rather than acts.
|
|
60
|
+
</p>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
|
|
65
|
+
<div>
|
|
66
|
+
<h3 class="mw-card-title mw-mb-4">Alignment</h3>
|
|
67
|
+
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
68
|
+
<div class="mw-row-split mw-row-split-center">
|
|
69
|
+
<span class="mw-text-muted mw-text-sm">Start (default)</span>
|
|
70
|
+
<details class="mw-dropdown">
|
|
71
|
+
<summary class="mw-btn mw-btn-sm mw-btn-outline">
|
|
72
|
+
Menu <i class="fas fa-chevron-down mw-dropdown-caret"></i>
|
|
73
|
+
</summary>
|
|
74
|
+
<div class="mw-dropdown-menu">
|
|
75
|
+
<button class="mw-dropdown-item">One</button>
|
|
76
|
+
<button class="mw-dropdown-item">Two</button>
|
|
77
|
+
</div>
|
|
78
|
+
</details>
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<div class="mw-row-split mw-row-split-center">
|
|
82
|
+
<span class="mw-text-muted mw-text-sm"
|
|
83
|
+
><code>mw-dropdown-end</code></span
|
|
84
|
+
>
|
|
85
|
+
<details class="mw-dropdown mw-dropdown-end">
|
|
86
|
+
<summary class="mw-btn mw-btn-sm mw-btn-outline">
|
|
87
|
+
Menu <i class="fas fa-chevron-down mw-dropdown-caret"></i>
|
|
88
|
+
</summary>
|
|
89
|
+
<div class="mw-dropdown-menu">
|
|
90
|
+
<button class="mw-dropdown-item">One</button>
|
|
91
|
+
<button class="mw-dropdown-item">Two</button>
|
|
92
|
+
</div>
|
|
93
|
+
</details>
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<div class="mw-row-split mw-row-split-center">
|
|
97
|
+
<span class="mw-text-muted mw-text-sm"
|
|
98
|
+
><code>mw-dropdown-up</code></span
|
|
99
|
+
>
|
|
100
|
+
<details class="mw-dropdown mw-dropdown-up mw-dropdown-end">
|
|
101
|
+
<summary class="mw-btn mw-btn-sm mw-btn-outline">
|
|
102
|
+
Menu <i class="fas fa-chevron-down mw-dropdown-caret"></i>
|
|
103
|
+
</summary>
|
|
104
|
+
<div class="mw-dropdown-menu">
|
|
105
|
+
<button class="mw-dropdown-item">One</button>
|
|
106
|
+
<button class="mw-dropdown-item">Two</button>
|
|
107
|
+
</div>
|
|
108
|
+
</details>
|
|
109
|
+
</div>
|
|
110
|
+
|
|
111
|
+
<p class="mw-text-muted mw-text-sm mw-mb-0">
|
|
112
|
+
The menu is absolutely positioned, so an ancestor that hides its
|
|
113
|
+
overflow clips it. The framework's own containers lift that clip while a
|
|
114
|
+
menu is open; on your own, one line does the same:
|
|
115
|
+
<code>:has(.mw-dropdown[open]) { overflow: visible }</code>.
|
|
116
|
+
</p>
|
|
117
|
+
</div>
|
|
118
|
+
</div>
|
|
119
|
+
</div>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Empty State</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
What a list shows when it holds nothing. An icon, a line saying what is
|
|
4
|
+
missing and, ideally, the action that fills it. The parts are
|
|
5
|
+
<code>-icon</code>, <code>-title</code> and <code>-desc</code>.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2-lg">
|
|
4
9
|
<div>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Form</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The layout around the fields: a flex column with a single gap, so no field
|
|
4
|
+
needs a margin of its own. <code>mw-form</code> carries no padding, which is
|
|
5
|
+
what lets it sit straight inside a modal body or a panel.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-card mw-card-simple">
|
|
4
9
|
<h3 class="mw-card-title">Example - User Profile Settings</h3>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Form Elements</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Every control the framework styles. They stay light in both themes on purpose,
|
|
4
|
+
and they share one height per size step - a field, a select and the button
|
|
5
|
+
beside them line up by construction.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-1">
|
|
4
9
|
<div class="mw-card mw-card-simple">
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Form Field Pattern</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Label, field, hint and error as one unit, so the spacing between them is not
|
|
4
|
+
re-invented per form. Written with Angular reactive forms in mind; the markup
|
|
5
|
+
is plain HTML.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2 mw-gap-6">
|
|
4
9
|
<!-- LEFT: mw-field wrapper -->
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Image Gallery</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A slider for photos: swipe, arrows, dots and a caption read off the slide
|
|
4
|
+
itself. The dots are real buttons, so the fourth picture is reachable without
|
|
5
|
+
a mouse.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-gallery-container">
|
|
4
9
|
<div class="mw-gallery">
|
|
@@ -23,10 +23,22 @@
|
|
|
23
23
|
|
|
24
24
|
<div class="mw-tabs mw-mb-6">
|
|
25
25
|
<div class="mw-tabs-nav">
|
|
26
|
-
<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
<button
|
|
27
|
+
type="button"
|
|
28
|
+
class="mw-tabs-nav-item mw-active"
|
|
29
|
+
data-tab="html-css"
|
|
30
|
+
>
|
|
31
|
+
HTML/CSS
|
|
32
|
+
</button>
|
|
33
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="scss">
|
|
34
|
+
SCSS Projects
|
|
35
|
+
</button>
|
|
36
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="angular">
|
|
37
|
+
Angular
|
|
38
|
+
</button>
|
|
39
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="react">
|
|
40
|
+
React
|
|
41
|
+
</button>
|
|
30
42
|
</div>
|
|
31
43
|
|
|
32
44
|
<div class="mw-tabs-content">
|
|
@@ -29,13 +29,17 @@
|
|
|
29
29
|
</nav>
|
|
30
30
|
|
|
31
31
|
<!-- Theme Toggle -->
|
|
32
|
-
<
|
|
32
|
+
<button
|
|
33
|
+
type="button"
|
|
34
|
+
class="mw-theme-toggle mw-ml-5"
|
|
35
|
+
aria-label="Toggle light and dark theme"
|
|
36
|
+
>
|
|
33
37
|
<div class="mw-theme-toggle-slider">
|
|
34
38
|
<div class="mw-theme-toggle-icon">
|
|
35
39
|
<i class="fas fa-moon"></i>
|
|
36
40
|
</div>
|
|
37
41
|
</div>
|
|
38
|
-
</
|
|
42
|
+
</button>
|
|
39
43
|
|
|
40
44
|
<!-- Login Button -->
|
|
41
45
|
<button class="mw-login-btn" id="login-button">
|
|
@@ -1,10 +1,16 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Header Utilities</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The two controls that live in the bar itself rather than on the page: the
|
|
4
|
+
theme switch and the login button. Both are real buttons, so they are
|
|
5
|
+
reachable by keyboard - the switch in particular is the first thing someone
|
|
6
|
+
with a light-sensitivity need goes looking for.
|
|
7
|
+
</p>
|
|
2
8
|
|
|
3
9
|
<div class="mw-mt-6">
|
|
4
10
|
<h3 class="mw-mb-2">Color Switcher (on a fake header here)</h3>
|
|
5
11
|
<p class="mw-text-muted">
|
|
6
|
-
This is not clickable
|
|
7
|
-
|
|
12
|
+
This one is not clickable - the real switcher sits in the header at the top
|
|
13
|
+
of the page.
|
|
8
14
|
</p>
|
|
9
15
|
<!-- Fake header -->
|
|
10
16
|
<div class="mw-mb-4" style="position: relative; overflow: hidden">
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">HTML Lists</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The plain <code>ul</code> and <code>ol</code> the framework styles, for prose.
|
|
4
|
+
Anything meant to be used rather than read - selectable rows, menus - belongs
|
|
5
|
+
in the item lists instead.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2-lg">
|
|
4
9
|
<div class="mw-card mw-card-simple">
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Info Badges & Counters</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A small solid marker for a status, a label or a count, down to a mini form
|
|
4
|
+
that fits inside a table cell. A tag names something; this one flags it.
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
7
|
<h4 class="mw-mb-2">Pill Badges</h4>
|
|
4
8
|
<div class="mw-card mw-card-simple">
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Input Group</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A field with something welded to its edge - a unit, an icon, a button. Put the
|
|
4
|
+
size modifier on the group and it reaches the field inside, and the whole
|
|
5
|
+
group takes one focus ring rather than three.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2 mw-gap-6">
|
|
4
9
|
<!-- LEFT: Prefix & Suffix examples -->
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Item Lists</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Rows that are meant to be used, not just read: selectable, clickable, with a
|
|
4
|
+
sliding accent or a checkbox. For a plain bulleted list use the HTML lists
|
|
5
|
+
above.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2-lg">
|
|
4
9
|
<div>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Kanban</h3>
|
|
2
|
-
<p class="mw-text-muted">
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
3
|
A board is a <code>mw-kanban</code> with one <code>mw-kanban-column</code> per
|
|
4
4
|
status, a ticket a plain <code>mw-card</code> with
|
|
5
5
|
<code>mw-kanban-card</code> on top. The priority is the regular
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
<h3 class="mw-section-subtitle">Keyboard Keys</h3>
|
|
2
|
+
|
|
3
|
+
<p class="mw-text-muted mw-mb-6 mw-text-measure">
|
|
4
|
+
Anything that tells someone which key to press should look like the key.
|
|
5
|
+
<code><kbd></code> is styled directly, so a shortcut in prose needs no
|
|
6
|
+
class at all; <code>mw-kbd</code> is there for a <code>span</code> when the
|
|
7
|
+
markup is not yours to change.
|
|
8
|
+
</p>
|
|
9
|
+
|
|
10
|
+
<div class="mw-grid-2 mw-gap-6">
|
|
11
|
+
<div>
|
|
12
|
+
<h3 class="mw-card-title mw-mb-4">In prose</h3>
|
|
13
|
+
<div class="mw-card mw-card-simple mw-grid-1 mw-gap-6">
|
|
14
|
+
<p class="mw-mb-0">
|
|
15
|
+
Press
|
|
16
|
+
<span class="mw-kbd-group"
|
|
17
|
+
><kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>P</kbd></span
|
|
18
|
+
>
|
|
19
|
+
to open the command palette, <kbd>Esc</kbd> to close it and
|
|
20
|
+
<kbd>Enter</kbd> to run the selection.
|
|
21
|
+
</p>
|
|
22
|
+
<p class="mw-mb-0">
|
|
23
|
+
On a Mac that is
|
|
24
|
+
<span class="mw-kbd-group"
|
|
25
|
+
><kbd>⌘</kbd>+<kbd>⇧</kbd>+<kbd>P</kbd></span
|
|
26
|
+
>.
|
|
27
|
+
</p>
|
|
28
|
+
<div>
|
|
29
|
+
<h5 class="mw-text-medium mw-mb-2">Held down</h5>
|
|
30
|
+
<p class="mw-mb-0">
|
|
31
|
+
<kbd class="mw-kbd-pressed">Space</kbd> shown mid-press - the raised
|
|
32
|
+
edge drops and the key sits 1px lower, for a hint that demonstrates
|
|
33
|
+
rather than lists.
|
|
34
|
+
</p>
|
|
35
|
+
</div>
|
|
36
|
+
</div>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div>
|
|
40
|
+
<h3 class="mw-card-title mw-mb-4">As a shortcut list</h3>
|
|
41
|
+
<div class="mw-card mw-card-simple">
|
|
42
|
+
<div class="mw-row-split mw-row-split-center">
|
|
43
|
+
<span>Save</span>
|
|
44
|
+
<span class="mw-kbd-group"><kbd>Ctrl</kbd>+<kbd>S</kbd></span>
|
|
45
|
+
</div>
|
|
46
|
+
<hr class="mw-divider" />
|
|
47
|
+
<div class="mw-row-split mw-row-split-center">
|
|
48
|
+
<span>Find in page</span>
|
|
49
|
+
<span class="mw-kbd-group"><kbd>Ctrl</kbd>+<kbd>F</kbd></span>
|
|
50
|
+
</div>
|
|
51
|
+
<hr class="mw-divider" />
|
|
52
|
+
<div class="mw-row-split mw-row-split-center">
|
|
53
|
+
<span>Close tab</span>
|
|
54
|
+
<span class="mw-kbd-group"><kbd>Ctrl</kbd>+<kbd>W</kbd></span>
|
|
55
|
+
</div>
|
|
56
|
+
<hr class="mw-divider" />
|
|
57
|
+
<div class="mw-row-split mw-row-split-center">
|
|
58
|
+
<span>Help</span>
|
|
59
|
+
<span class="mw-kbd-group"><kbd>?</kbd></span>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Meta Info</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The line of small facts that sits with a heading - author, date, reading time,
|
|
4
|
+
status. One wrapping row, with the separators drawn by CSS rather than typed
|
|
5
|
+
into the markup.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-meta-header">
|
|
4
9
|
<div class="mw-meta-item">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Simple Pagination</h3>
|
|
2
|
-
<p class="mw-text-muted">
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
3
|
The same frame as a calendar - an arrow on each side of the title, content
|
|
4
4
|
below - but the body is yours. Not a page-number list; the paging itself is
|
|
5
5
|
your job, <code>mw-pagination-loading</code> dims the body while the next page
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Panels</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A card whose header and footer are part of the frame rather than the content.
|
|
4
|
+
The body scrolls on its own, which is what the max-height variants are for.
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
7
|
<div class="mw-grid-1 mw-my-6">
|
|
4
8
|
<div class="mw-panel">
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Progress Bars</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A bar with an optional label and scale. The fill runs up from zero when it
|
|
4
|
+
scrolls into view, so the number gets read rather than just seen.
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
7
|
<div class="mw-grid-2">
|
|
4
8
|
<div>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Skeleton Loader</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The shape of the content before the content arrives. Match it to what is
|
|
4
|
+
actually loading - a skeleton in the wrong shape is worse than a spinner,
|
|
5
|
+
because the page then moves twice.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-3 mw-gap-6">
|
|
4
9
|
<!-- COLUMN 1: Text skeleton -->
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
<h3 class="mw-section-subtitle">
|
|
1
|
+
<h3 class="mw-section-subtitle">Loading Spinners</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Three shapes for the same job. Each one needs its shape class:
|
|
4
|
+
<code>mw-spinner-primary</code> on its own renders nothing at all.
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
7
|
<h3 class="mw-mt-4">Basic Spinners</h3>
|
|
4
8
|
<div class="mw-grid-3 mw-mt-4">
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Stepper</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A process with a known number of steps and a current one. Horizontal where
|
|
4
|
+
there is width for it, vertical where the labels need the room.
|
|
5
|
+
</p>
|
|
2
6
|
|
|
3
7
|
<div class="mw-grid-2 mw-gap-6">
|
|
4
8
|
<!-- LEFT: Horizontal steppers -->
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Tables</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
Rows for data that has columns. On a phone a wide table either scrolls inside
|
|
4
|
+
its own frame or turns each row into a card -
|
|
5
|
+
<code>mw-table-responsive</code> for the first,
|
|
6
|
+
<code>mw-table-cards</code> for the second. The compact variant is for the
|
|
7
|
+
tables that hold a screenful at a time.
|
|
8
|
+
</p>
|
|
2
9
|
|
|
3
10
|
<div class="mw-grid-1">
|
|
4
11
|
<div class="mw-card mw-card-simple mw-mb-6">
|
|
@@ -11,10 +11,18 @@
|
|
|
11
11
|
<h3 class="mw-mb-4">Default Tabs</h3>
|
|
12
12
|
<div class="mw-tabs mw-mb-6">
|
|
13
13
|
<div class="mw-tabs-nav">
|
|
14
|
-
<
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<
|
|
14
|
+
<button type="button" class="mw-tabs-nav-item mw-active" data-tab="tab1">
|
|
15
|
+
Features
|
|
16
|
+
</button>
|
|
17
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="tab2">
|
|
18
|
+
Specifications
|
|
19
|
+
</button>
|
|
20
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="tab3">
|
|
21
|
+
Reviews
|
|
22
|
+
</button>
|
|
23
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="tab4">
|
|
24
|
+
Support
|
|
25
|
+
</button>
|
|
18
26
|
</div>
|
|
19
27
|
<div class="mw-tabs-content">
|
|
20
28
|
<div class="mw-tabs-panel mw-active" id="tab1">
|
|
@@ -89,12 +97,18 @@
|
|
|
89
97
|
<h3 class="mw-mb-4">Vertical Tabs</h3>
|
|
90
98
|
<div class="mw-tabs mw-tabs-vertical mw-mb-6">
|
|
91
99
|
<div class="mw-tabs-nav">
|
|
92
|
-
<
|
|
100
|
+
<button type="button" class="mw-tabs-nav-item mw-active" data-tab="vtab1">
|
|
93
101
|
Getting Started
|
|
94
|
-
</
|
|
95
|
-
<
|
|
96
|
-
|
|
97
|
-
|
|
102
|
+
</button>
|
|
103
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="vtab2">
|
|
104
|
+
Configuration
|
|
105
|
+
</button>
|
|
106
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="vtab3">
|
|
107
|
+
Customization
|
|
108
|
+
</button>
|
|
109
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="vtab4">
|
|
110
|
+
Best Practices
|
|
111
|
+
</button>
|
|
98
112
|
</div>
|
|
99
113
|
<div class="mw-tabs-content">
|
|
100
114
|
<div class="mw-tabs-panel mw-active" id="vtab1">
|
|
@@ -232,10 +246,18 @@ href="path/maverick-wave.min.css"></code></pre>
|
|
|
232
246
|
<h3 class="mw-mb-4">Pills Style Tabs</h3>
|
|
233
247
|
<div class="mw-tabs mw-tabs-pills">
|
|
234
248
|
<div class="mw-tabs-nav">
|
|
235
|
-
<
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
<
|
|
249
|
+
<button type="button" class="mw-tabs-nav-item mw-active" data-tab="ptab1">
|
|
250
|
+
Dashboard
|
|
251
|
+
</button>
|
|
252
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="ptab2">
|
|
253
|
+
Profile
|
|
254
|
+
</button>
|
|
255
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="ptab3">
|
|
256
|
+
Messages
|
|
257
|
+
</button>
|
|
258
|
+
<button type="button" class="mw-tabs-nav-item" data-tab="ptab4">
|
|
259
|
+
Settings
|
|
260
|
+
</button>
|
|
239
261
|
</div>
|
|
240
262
|
<div class="mw-tabs-content">
|
|
241
263
|
<div class="mw-tabs-panel mw-active" id="ptab1">
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Tags</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
A label with a soft surface that names something - a topic, a state, a
|
|
4
|
+
category - and sits in a row of its own kind. For a count or a status marker
|
|
5
|
+
reach for a badge instead.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2-lg mw-gap-6">
|
|
4
9
|
<!-- COLUMN 1: Basic & Status -->
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
<h3 class="mw-section-subtitle">Typography</h3>
|
|
2
|
+
<p class="mw-text-muted mw-text-measure mw-mb-6">
|
|
3
|
+
The heading scale, the body text and everything the framework sets on bare
|
|
4
|
+
elements. Headings carry <code>text-wrap: balance</code> and a touch of
|
|
5
|
+
negative tracking, paragraphs <code>text-wrap: pretty</code>.
|
|
6
|
+
</p>
|
|
2
7
|
|
|
3
8
|
<div class="mw-grid-2-lg">
|
|
4
9
|
<div>
|