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.
Files changed (117) hide show
  1. package/.claude/skills/maverick-wave/SKILL.md +112 -12
  2. package/.claude/skills/maverick-wave/references/components.md +152 -4
  3. package/.claude/skills/maverick-wave/references/forms.md +26 -0
  4. package/.claude/skills/maverick-wave/references/javascript.md +34 -27
  5. package/.claude/skills/maverick-wave/references/layout.md +38 -3
  6. package/.claude/skills/maverick-wave/references/theming.md +33 -7
  7. package/CHANGELOG.md +6 -0
  8. package/README.md +79 -4
  9. package/index.html +16 -0
  10. package/maverick-wave.min.css +3 -3
  11. package/maverick-wave.min.js +1 -1
  12. package/package.json +2 -2
  13. package/src/js/main.js +71 -1
  14. package/src/partials/accordions-container.html +5 -0
  15. package/src/partials/alerts-container.html +5 -0
  16. package/src/partials/avatars-container.html +5 -0
  17. package/src/partials/badges-container.html +114 -0
  18. package/src/partials/blog-posts-container.html +5 -0
  19. package/src/partials/breadcrumbs-container.html +1 -1
  20. package/src/partials/button-bar-container.html +5 -0
  21. package/src/partials/buttons-container.html +84 -0
  22. package/src/partials/calendar-container.html +1 -1
  23. package/src/partials/cards-container.html +5 -0
  24. package/src/partials/code-container.html +6 -0
  25. package/src/partials/colors-container.html +1 -1
  26. package/src/partials/coming-soon-container.html +4 -0
  27. package/src/partials/divider-container.html +4 -0
  28. package/src/partials/dropdown-container.html +119 -0
  29. package/src/partials/empty-state-container.html +5 -0
  30. package/src/partials/form-container.html +5 -0
  31. package/src/partials/form-elements-container.html +5 -0
  32. package/src/partials/form-field-container.html +5 -0
  33. package/src/partials/gallery-container.html +5 -0
  34. package/src/partials/get-started-container.html +16 -4
  35. package/src/partials/header-container.html +6 -2
  36. package/src/partials/header-utilities-container.html +8 -2
  37. package/src/partials/html-lists-container.html +5 -0
  38. package/src/partials/info-container.html +4 -0
  39. package/src/partials/input-group-container.html +5 -0
  40. package/src/partials/item-lists-container.html +5 -0
  41. package/src/partials/kanban-container.html +1 -1
  42. package/src/partials/kbd-container.html +63 -0
  43. package/src/partials/meta-info-container.html +5 -0
  44. package/src/partials/pagination-container.html +1 -1
  45. package/src/partials/panels-container.html +4 -0
  46. package/src/partials/progress-container.html +4 -0
  47. package/src/partials/ratings-container.html +1 -1
  48. package/src/partials/skeleton-container.html +5 -0
  49. package/src/partials/spinners-container.html +5 -1
  50. package/src/partials/stepper-container.html +4 -0
  51. package/src/partials/tables-container.html +7 -0
  52. package/src/partials/tabs-container.html +35 -13
  53. package/src/partials/tags-container.html +5 -0
  54. package/src/partials/tiles-container.html +1 -1
  55. package/src/partials/typography-container.html +5 -0
  56. package/src/partials/utilities-container.html +153 -0
  57. package/src/scss/abstracts/_mixins.scss +176 -0
  58. package/src/scss/abstracts/_variables.scss +193 -5
  59. package/src/scss/base/_base.scss +103 -2
  60. package/src/scss/base/_reset.scss +43 -1
  61. package/src/scss/base/_typography.scss +47 -0
  62. package/src/scss/components/_accordions.scss +11 -1
  63. package/src/scss/components/_alerts.scss +3 -3
  64. package/src/scss/components/_avatars.scss +27 -6
  65. package/src/scss/components/_badge.scss +157 -0
  66. package/src/scss/components/_blog-post.scss +10 -7
  67. package/src/scss/components/_breadcrumbs.scss +11 -2
  68. package/src/scss/components/_button-bar.scss +9 -2
  69. package/src/scss/components/_buttons.scss +133 -17
  70. package/src/scss/components/_calendar.scss +13 -2
  71. package/src/scss/components/_cards.scss +12 -5
  72. package/src/scss/components/_code.scss +15 -0
  73. package/src/scss/components/_coming-soon.scss +5 -2
  74. package/src/scss/components/_content-slider.scss +1 -1
  75. package/src/scss/components/_dropdown.scss +219 -0
  76. package/src/scss/components/_gallery.scss +17 -8
  77. package/src/scss/components/_index.scss +3 -0
  78. package/src/scss/components/_info.scss +14 -8
  79. package/src/scss/components/_kanban.scss +40 -6
  80. package/src/scss/components/_kbd.scss +43 -0
  81. package/src/scss/components/_lists.scss +26 -23
  82. package/src/scss/components/_modals.scss +71 -6
  83. package/src/scss/components/_pagination.scss +4 -3
  84. package/src/scss/components/_panels.scss +13 -14
  85. package/src/scss/components/_progress.scss +1 -1
  86. package/src/scss/components/_segmented.scss +8 -4
  87. package/src/scss/components/_stepper.scss +3 -3
  88. package/src/scss/components/_tables.scss +5 -8
  89. package/src/scss/components/_tabs.scss +22 -3
  90. package/src/scss/components/_tags.scss +1 -2
  91. package/src/scss/components/_techstack-bucket.scss +8 -5
  92. package/src/scss/components/_theme-toggle.scss +16 -8
  93. package/src/scss/components/_tiles.scss +14 -4
  94. package/src/scss/components/_timelines.scss +9 -6
  95. package/src/scss/components/_toasts.scss +1 -1
  96. package/src/scss/form-elements/_checkbox.scss +2 -1
  97. package/src/scss/form-elements/_form.scss +2 -2
  98. package/src/scss/form-elements/_input-group.scss +30 -1
  99. package/src/scss/form-elements/_input.scss +10 -10
  100. package/src/scss/form-elements/_login.scss +1 -1
  101. package/src/scss/form-elements/_radio.scss +4 -3
  102. package/src/scss/form-elements/_select.scss +9 -10
  103. package/src/scss/form-elements/_slider.scss +11 -11
  104. package/src/scss/form-elements/_textarea.scss +5 -8
  105. package/src/scss/form-elements/_toggle.scss +6 -5
  106. package/src/scss/layout/_footer.scss +14 -7
  107. package/src/scss/layout/_header.scss +18 -17
  108. package/src/scss/layout/_home.scss +1 -1
  109. package/src/scss/layout/_main.scss +6 -6
  110. package/src/scss/layout/_section.scss +7 -4
  111. package/src/scss/utilities/_accessibility.scss +38 -0
  112. package/src/scss/utilities/_aspect.scss +27 -0
  113. package/src/scss/utilities/_display.scss +52 -0
  114. package/src/scss/utilities/_elevation.scss +16 -0
  115. package/src/scss/utilities/_index.scss +2 -0
  116. package/src/scss/utilities/_text.scss +63 -0
  117. 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>&lt;details&gt;</code> and <code>&lt;summary&gt;</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
- <div class="mw-tabs-nav-item mw-active" data-tab="html-css">HTML/CSS</div>
27
- <div class="mw-tabs-nav-item" data-tab="scss">SCSS Projects</div>
28
- <div class="mw-tabs-nav-item" data-tab="angular">Angular</div>
29
- <div class="mw-tabs-nav-item" data-tab="react">React</div>
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
- <div class="mw-theme-toggle mw-ml-5">
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
- </div>
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 here - because the real color switcher is on top
7
- whtihin the header
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>&lt;kbd&gt;</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>&#8984;</kbd>+<kbd>&#8679;</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,5 +1,5 @@
1
1
  <h3 class="mw-section-subtitle">Ratings</h3>
2
- <p class="mw-text-muted">
2
+ <p class="mw-text-muted mw-text-measure mw-mb-6">
3
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>
@@ -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">Loding Spinners</h3>
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
- <div class="mw-tabs-nav-item mw-active" data-tab="tab1">Features</div>
15
- <div class="mw-tabs-nav-item" data-tab="tab2">Specifications</div>
16
- <div class="mw-tabs-nav-item" data-tab="tab3">Reviews</div>
17
- <div class="mw-tabs-nav-item" data-tab="tab4">Support</div>
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
- <div class="mw-tabs-nav-item mw-active" data-tab="vtab1">
100
+ <button type="button" class="mw-tabs-nav-item mw-active" data-tab="vtab1">
93
101
  Getting Started
94
- </div>
95
- <div class="mw-tabs-nav-item" data-tab="vtab2">Configuration</div>
96
- <div class="mw-tabs-nav-item" data-tab="vtab3">Customization</div>
97
- <div class="mw-tabs-nav-item" data-tab="vtab4">Best Practices</div>
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"&gt;</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
- <div class="mw-tabs-nav-item mw-active" data-tab="ptab1">Dashboard</div>
236
- <div class="mw-tabs-nav-item" data-tab="ptab2">Profile</div>
237
- <div class="mw-tabs-nav-item" data-tab="ptab3">Messages</div>
238
- <div class="mw-tabs-nav-item" data-tab="ptab4">Settings</div>
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,5 +1,5 @@
1
1
  <h3 class="mw-section-subtitle">Tiles</h3>
2
- <p class="mw-text-muted">
2
+ <p class="mw-text-muted mw-text-measure mw-mb-6">
3
3
  Here you can create clickable tiles with header, information and a possible
4
4
  image.
5
5
  </p>
@@ -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>