maverick-wave 4.27.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/.claude/settings.local.json +29 -1
  2. package/.claude/skills/mw-maverick-wave/SKILL.md +42 -25
  3. package/.claude/skills/mw-maverick-wave/examples/angular-services.md +16 -4
  4. package/.claude/skills/mw-maverick-wave/examples/static-landing-page.md +13 -4
  5. package/.claude/skills/mw-maverick-wave/references/components.md +90 -5
  6. package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
  7. package/.claude/skills/mw-maverick-wave/references/javascript.md +18 -4
  8. package/.claude/skills/mw-maverick-wave/references/layout.md +53 -19
  9. package/.claude/skills/mw-maverick-wave/references/theming.md +38 -1
  10. package/.impeccable/config.local.json +5 -0
  11. package/.impeccable/hook.cache.json +1 -0
  12. package/CHANGELOG.md +17 -0
  13. package/CLAUDE.md +5 -5
  14. package/README.md +48 -4
  15. package/index.html +19 -38
  16. package/maverick-wave.min.css +14 -12
  17. package/maverick-wave.min.js +1 -1
  18. package/package.json +2 -2
  19. package/scripts/verify.js +27 -2
  20. package/src/js/main.js +266 -75
  21. package/src/partials/accordions-container.html +6 -10
  22. package/src/partials/alerts-container.html +6 -6
  23. package/src/partials/announcement-container.html +5 -5
  24. package/src/partials/avatars-container.html +85 -17
  25. package/src/partials/badges-container.html +6 -6
  26. package/src/partials/blog-posts-container.html +11 -12
  27. package/src/partials/buttons-container.html +3 -3
  28. package/src/partials/cards-container.html +26 -9
  29. package/src/partials/code-container.html +5 -5
  30. package/src/partials/content-slider-container.html +5 -4
  31. package/src/partials/divider-container.html +7 -7
  32. package/src/partials/dropdown-container.html +2 -2
  33. package/src/partials/empty-state-container.html +5 -5
  34. package/src/partials/footer-container.html +21 -18
  35. package/src/partials/form-elements-container.html +14 -14
  36. package/src/partials/gallery-container.html +16 -8
  37. package/src/partials/get-started-container.html +4 -8
  38. package/src/partials/header-container.html +18 -7
  39. package/src/partials/header-utilities-container.html +192 -5
  40. package/src/partials/home-container.html +10 -20
  41. package/src/partials/input-group-container.html +11 -2
  42. package/src/partials/kbd-container.html +1 -1
  43. package/src/partials/login-container.html +5 -1
  44. package/src/partials/media-container.html +2 -2
  45. package/src/partials/modals-container.html +22 -32
  46. package/src/partials/pricing-container.html +9 -9
  47. package/src/partials/skeleton-container.html +6 -6
  48. package/src/partials/stepper-container.html +2 -2
  49. package/src/partials/tables-container.html +12 -12
  50. package/src/partials/tabs-container.html +17 -27
  51. package/src/partials/tags-container.html +23 -17
  52. package/src/partials/techstack-bucket-container.html +13 -0
  53. package/src/partials/tiles-container.html +26 -9
  54. package/src/partials/typography-container.html +7 -6
  55. package/src/partials/utilities-container.html +35 -15
  56. package/src/scss/_layers.scss +10 -0
  57. package/src/scss/abstracts/_index.scss +6 -0
  58. package/src/scss/abstracts/_mixins.scss +61 -153
  59. package/src/scss/abstracts/_variables.scss +123 -319
  60. package/src/scss/base/_base.scss +170 -190
  61. package/src/scss/base/_reset.scss +106 -104
  62. package/src/scss/base/_typography.scss +153 -151
  63. package/src/scss/components/_accordions.scss +97 -97
  64. package/src/scss/components/_alerts.scss +71 -70
  65. package/src/scss/components/_announcement.scss +71 -70
  66. package/src/scss/components/_avatars.scss +130 -142
  67. package/src/scss/components/_badge.scss +131 -132
  68. package/src/scss/components/_blog-post.scss +223 -220
  69. package/src/scss/components/_breadcrumbs.scss +93 -92
  70. package/src/scss/components/_button-bar.scss +102 -110
  71. package/src/scss/components/_buttons.scss +319 -324
  72. package/src/scss/components/_calendar.scss +251 -252
  73. package/src/scss/components/_cards.scss +359 -386
  74. package/src/scss/components/_code.scss +190 -194
  75. package/src/scss/components/_coming-soon.scss +77 -75
  76. package/src/scss/components/_content-slider.scss +90 -89
  77. package/src/scss/components/_divider.scss +55 -53
  78. package/src/scss/components/_dropdown.scss +179 -185
  79. package/src/scss/components/_empty-state.scss +57 -57
  80. package/src/scss/components/_flag.scss +325 -0
  81. package/src/scss/components/_gallery.scss +131 -133
  82. package/src/scss/components/_index.scss +2 -0
  83. package/src/scss/components/_info.scss +151 -167
  84. package/src/scss/components/_kanban.scss +332 -341
  85. package/src/scss/components/_kbd.scss +40 -38
  86. package/src/scss/components/_lang-switch.scss +108 -0
  87. package/src/scss/components/_links.scss +21 -28
  88. package/src/scss/components/_lists.scss +510 -514
  89. package/src/scss/components/_localhost-indicator.scss +26 -24
  90. package/src/scss/components/_media.scss +22 -20
  91. package/src/scss/components/_meta-info.scss +35 -33
  92. package/src/scss/components/_modals.scss +277 -186
  93. package/src/scss/components/_pagination.scss +81 -87
  94. package/src/scss/components/_panels.scss +99 -97
  95. package/src/scss/components/_pricing.scss +183 -241
  96. package/src/scss/components/_progress.scss +112 -89
  97. package/src/scss/components/_prose.scss +35 -33
  98. package/src/scss/components/_ratings.scss +40 -38
  99. package/src/scss/components/_segmented.scss +82 -84
  100. package/src/scss/components/_skeleton.scss +66 -72
  101. package/src/scss/components/_spinners.scss +155 -159
  102. package/src/scss/components/_stepper.scss +116 -116
  103. package/src/scss/components/_tables.scss +155 -148
  104. package/src/scss/components/_tabs.scss +232 -141
  105. package/src/scss/components/_tags.scss +109 -107
  106. package/src/scss/components/_techstack-bucket.scss +123 -122
  107. package/src/scss/components/_testimonial.scss +72 -70
  108. package/src/scss/components/_theme-toggle.scss +53 -51
  109. package/src/scss/components/_tiles.scss +174 -174
  110. package/src/scss/components/_timelines.scss +282 -280
  111. package/src/scss/components/_toasts.scss +66 -72
  112. package/src/scss/form-elements/_checkbox.scss +117 -132
  113. package/src/scss/form-elements/_form.scss +149 -115
  114. package/src/scss/form-elements/_input-group.scss +99 -103
  115. package/src/scss/form-elements/_input.scss +74 -74
  116. package/src/scss/form-elements/_login.scss +48 -48
  117. package/src/scss/form-elements/_prefilled.scss +53 -51
  118. package/src/scss/form-elements/_radio.scss +95 -107
  119. package/src/scss/form-elements/_select.scss +42 -42
  120. package/src/scss/form-elements/_slider.scss +117 -132
  121. package/src/scss/form-elements/_textarea.scss +68 -54
  122. package/src/scss/form-elements/_toggle.scss +127 -140
  123. package/src/scss/layout/_footer.scss +172 -171
  124. package/src/scss/layout/_grid.scss +268 -302
  125. package/src/scss/layout/_header.scss +426 -427
  126. package/src/scss/layout/_home.scss +28 -27
  127. package/src/scss/layout/_main.scss +275 -238
  128. package/src/scss/layout/_page-header.scss +38 -36
  129. package/src/scss/layout/_section.scss +150 -124
  130. package/src/scss/main.scss +1 -1
  131. package/src/scss/utilities/_accessibility.scss +46 -45
  132. package/src/scss/utilities/_aspect.scss +22 -20
  133. package/src/scss/utilities/_corner.scss +23 -5
  134. package/src/scss/utilities/_display.scss +76 -70
  135. package/src/scss/utilities/_elevation.scss +13 -11
  136. package/src/scss/utilities/_flex.scss +83 -85
  137. package/src/scss/utilities/_reveal.scss +40 -63
  138. package/src/scss/utilities/_spacing.scss +63 -64
  139. package/src/scss/utilities/_text.scss +139 -141
  140. package/src/scss/utilities/_touch-targets.scss +130 -147
@@ -11,7 +11,7 @@
11
11
  <h3 class="mw-card-title mw-mb-4">Status & Types</h3>
12
12
  <div class="mw-card mw-card-simple">
13
13
  <!-- Basic -->
14
- <h5 class="mw-text-medium mw-mb-2">Default</h5>
14
+ <h4 class="mw-text-medium mw-mb-2">Default</h4>
15
15
  <div class="mw-tags mw-mb-4">
16
16
  <span class="mw-tags-item">Frontend</span>
17
17
  <span class="mw-tags-item">Backend</span>
@@ -19,7 +19,7 @@
19
19
  </div>
20
20
 
21
21
  <!-- Primary (Main Tech) -->
22
- <h5 class="mw-text-medium mw-mb-2">Primary</h5>
22
+ <h4 class="mw-text-medium mw-mb-2">Primary</h4>
23
23
  <div class="mw-tags mw-tags-primary mw-mb-4">
24
24
  <span class="mw-tags-item">Angular</span>
25
25
  <span class="mw-tags-item">Spring Boot</span>
@@ -27,7 +27,7 @@
27
27
  </div>
28
28
 
29
29
  <!-- Success (Status) -->
30
- <h5 class="mw-text-medium mw-mb-2">Success</h5>
30
+ <h4 class="mw-text-medium mw-mb-2">Success</h4>
31
31
  <div class="mw-tags mw-tags-success mw-mb-4">
32
32
  <span class="mw-tags-item">
33
33
  <i class="fas fa-check mw-tags-icon"></i>Completed
@@ -37,7 +37,7 @@
37
37
  </div>
38
38
 
39
39
  <!-- Info (Metadata) -->
40
- <h5 class="mw-text-medium mw-mb-2">Info</h5>
40
+ <h4 class="mw-text-medium mw-mb-2">Info</h4>
41
41
  <div class="mw-tags mw-tags-info mw-mb-4">
42
42
  <span class="mw-tags-item">v2.4.0</span>
43
43
  <span class="mw-tags-item">
@@ -47,7 +47,7 @@
47
47
  </div>
48
48
 
49
49
  <!-- Secondary (Tools) -->
50
- <h5 class="mw-text-medium mw-mb-2">Secondary</h5>
50
+ <h4 class="mw-text-medium mw-mb-2">Secondary</h4>
51
51
  <div class="mw-tags mw-tags-secondary mw-mb-4">
52
52
  <span class="mw-tags-item">Docker</span>
53
53
  <span class="mw-tags-item">Kubernetes</span>
@@ -55,7 +55,7 @@
55
55
  </div>
56
56
 
57
57
  <!-- Warning (Pending) -->
58
- <h5 class="mw-text-medium mw-mb-2">Warning</h5>
58
+ <h4 class="mw-text-medium mw-mb-2">Warning</h4>
59
59
  <div class="mw-tags mw-tags-warning mw-mb-4">
60
60
  <span class="mw-tags-item">
61
61
  <i class="fas fa-clock mw-tags-icon"></i>Pending
@@ -64,7 +64,7 @@
64
64
  </div>
65
65
 
66
66
  <!-- Danger (Failed) -->
67
- <h5 class="mw-text-medium mw-mb-2">Danger</h5>
67
+ <h4 class="mw-text-medium mw-mb-2">Danger</h4>
68
68
  <div class="mw-tags mw-tags-danger mw-mb-4">
69
69
  <span class="mw-tags-item">
70
70
  <i class="fas fa-xmark mw-tags-icon"></i>Failed
@@ -73,7 +73,7 @@
73
73
  </div>
74
74
 
75
75
  <!-- Muted (Neutral) -->
76
- <h5 class="mw-text-medium mw-mb-2">Muted</h5>
76
+ <h4 class="mw-text-medium mw-mb-2">Muted</h4>
77
77
  <div class="mw-tags mw-tags-muted">
78
78
  <span class="mw-tags-item">Draft</span>
79
79
  <span class="mw-tags-item">Archived</span>
@@ -86,7 +86,7 @@
86
86
  <h3 class="mw-card-title mw-mb-4">Sizes & Formatting</h3>
87
87
  <div class="mw-card mw-card-simple">
88
88
  <!-- Default -->
89
- <h5 class="mw-text-medium mw-mb-2">Default Size</h5>
89
+ <h4 class="mw-text-medium mw-mb-2">Default Size</h4>
90
90
  <div class="mw-tags mw-mb-4">
91
91
  <span class="mw-tags-item">Typescript</span>
92
92
  <span class="mw-tags-item">
@@ -97,6 +97,7 @@
97
97
  <button
98
98
  type="button"
99
99
  class="mw-btn-mini mw-btn-mini-danger mw-tags-remove"
100
+ aria-label="Remove filter: active"
100
101
  onclick="this.closest('.mw-tags-item').remove()"
101
102
  >
102
103
  <i class="fas fa-times"></i>
@@ -105,14 +106,14 @@
105
106
  </div>
106
107
 
107
108
  <!-- Large (Categories) -->
108
- <h5 class="mw-text-medium mw-mb-2">Large (Categories)</h5>
109
+ <h4 class="mw-text-medium mw-mb-2">Large (Categories)</h4>
109
110
  <div class="mw-tags mw-tags-lg mw-mb-4">
110
111
  <span class="mw-tags-item">Web Development</span>
111
112
  <span class="mw-tags-item">Design System</span>
112
113
  </div>
113
114
 
114
115
  <!-- With Details -->
115
- <h5 class="mw-text-medium mw-mb-2">With Details</h5>
116
+ <h4 class="mw-text-medium mw-mb-2">With Details</h4>
116
117
  <div class="mw-tags">
117
118
  <span class="mw-tags-item">
118
119
  <i class="fab fa-npm mw-tags-icon"></i>
@@ -132,13 +133,14 @@
132
133
  <div>
133
134
  <h3 class="mw-card-title mw-mb-4">Interactive Tags</h3>
134
135
  <div class="mw-card mw-card-simple">
135
- <h5 class="mw-text-medium mw-mb-2">Removable Input (Primary)</h5>
136
+ <h4 class="mw-text-medium mw-mb-2">Removable Input (Primary)</h4>
136
137
  <div class="mw-tags mw-tags-primary mw-mb-4">
137
138
  <span class="mw-tags-item mw-tags-removable">
138
139
  React
139
140
  <button
140
141
  type="button"
141
142
  class="mw-btn-mini mw-btn-mini-danger mw-tags-remove"
143
+ aria-label="Remove React"
142
144
  onclick="this.closest('.mw-tags-item').remove()"
143
145
  >
144
146
  <i class="fas fa-times"></i>
@@ -149,6 +151,7 @@
149
151
  <button
150
152
  type="button"
151
153
  class="mw-btn-mini mw-btn-mini-danger mw-tags-remove"
154
+ aria-label="Remove Vue.js"
152
155
  onclick="this.closest('.mw-tags-item').remove()"
153
156
  >
154
157
  <i class="fas fa-times"></i>
@@ -156,13 +159,14 @@
156
159
  </span>
157
160
  </div>
158
161
 
159
- <h5 class="mw-text-medium mw-mb-2">Removable Status (Success)</h5>
162
+ <h4 class="mw-text-medium mw-mb-2">Removable Status (Success)</h4>
160
163
  <div class="mw-tags mw-tags-success mw-mb-4">
161
164
  <span class="mw-tags-item mw-tags-removable">
162
165
  <i class="fas fa-user-check mw-tags-icon"></i>Online
163
166
  <button
164
167
  type="button"
165
168
  class="mw-btn-mini mw-btn-mini-danger mw-tags-remove"
169
+ aria-label="Remove Online"
166
170
  onclick="this.closest('.mw-tags-item').remove()"
167
171
  >
168
172
  <i class="fas fa-times"></i>
@@ -173,6 +177,7 @@
173
177
  <button
174
178
  type="button"
175
179
  class="mw-btn-mini mw-btn-mini-danger mw-tags-remove"
180
+ aria-label="Remove Available"
176
181
  onclick="this.closest('.mw-tags-item').remove()"
177
182
  >
178
183
  <i class="fas fa-times"></i>
@@ -180,13 +185,14 @@
180
185
  </span>
181
186
  </div>
182
187
 
183
- <h5 class="mw-text-medium mw-mb-2">Large Removable</h5>
188
+ <h4 class="mw-text-medium mw-mb-2">Large Removable</h4>
184
189
  <div class="mw-tags mw-tags-lg mw-tags-info">
185
190
  <span class="mw-tags-item mw-tags-removable">
186
191
  Filter: Architecture
187
192
  <button
188
193
  type="button"
189
194
  class="mw-btn-mini mw-btn-mini-danger mw-tags-remove"
195
+ aria-label="Remove Filter: Architecture"
190
196
  onclick="this.closest('.mw-tags-item').remove()"
191
197
  >
192
198
  <i class="fas fa-times"></i>
@@ -206,7 +212,7 @@
206
212
  <strong>mw-tags</strong> container is needed.
207
213
  </p>
208
214
 
209
- <h5 class="mw-text-medium mw-mb-2">Variants</h5>
215
+ <h4 class="mw-text-medium mw-mb-2">Variants</h4>
210
216
  <div class="mw-d-flex mw-flex-wrap mw-gap-2 mw-mb-4">
211
217
  <span class="mw-tag mw-tag-primary">Primary</span>
212
218
  <span class="mw-tag mw-tag-secondary">Secondary</span>
@@ -218,7 +224,7 @@
218
224
  <span class="mw-tag mw-tag-neutral">XRechnung</span>
219
225
  </div>
220
226
 
221
- <h5 class="mw-text-medium mw-mb-2">Neutral vs. Muted</h5>
227
+ <h4 class="mw-text-medium mw-mb-2">Neutral vs. Muted</h4>
222
228
  <p class="mw-text-muted mw-text-sm mw-mb-3">
223
229
  <strong>mw-tag-neutral</strong> is a plain identifier - a customer
224
230
  number, a document type. <strong>mw-tag-muted</strong> means the label
@@ -232,7 +238,7 @@
232
238
  <span class="mw-tag mw-tag-muted">No e-invoice</span>
233
239
  </div>
234
240
 
235
- <h5 class="mw-text-medium mw-mb-2">Large</h5>
241
+ <h4 class="mw-text-medium mw-mb-2">Large</h4>
236
242
  <div class="mw-d-flex mw-flex-wrap mw-gap-2">
237
243
  <span class="mw-tag mw-tag-success mw-tag-lg">Paid</span>
238
244
  <span class="mw-tag mw-tag-muted mw-tag-lg">Draft</span>
@@ -14,6 +14,7 @@
14
14
  src="https://upload.wikimedia.org/wikipedia/commons/6/67/Angular_gradient_logo.png"
15
15
  alt="Angular"
16
16
  class="mw-techstack-logo"
17
+ loading="lazy"
17
18
  />
18
19
  <div class="mw-techstack-info">
19
20
  <span class="mw-techstack-name">Angular</span>
@@ -25,6 +26,7 @@
25
26
  src="https://upload.wikimedia.org/wikipedia/commons/9/96/Sass_Logo_Color.svg"
26
27
  alt="Sass"
27
28
  class="mw-techstack-logo"
29
+ loading="lazy"
28
30
  />
29
31
  <div class="mw-techstack-info">
30
32
  <span class="mw-techstack-name">SCSS</span>
@@ -40,6 +42,7 @@
40
42
  src="https://upload.wikimedia.org/wikipedia/commons/4/4c/Typescript_logo_2020.svg"
41
43
  alt="TypeScript"
42
44
  class="mw-techstack-logo"
45
+ loading="lazy"
43
46
  />
44
47
  <div class="mw-techstack-info">
45
48
  <span class="mw-techstack-name">TypeScript</span>
@@ -61,6 +64,7 @@
61
64
  src="https://www.vectorlogo.zone/logos/git-scm/git-scm-icon.svg"
62
65
  class="mw-techstack-logo"
63
66
  alt="Git"
67
+ loading="lazy"
64
68
  />
65
69
  </a>
66
70
  <a
@@ -72,6 +76,7 @@
72
76
  src="https://upload.wikimedia.org/wikipedia/commons/9/9a/Visual_Studio_Code_1.35_icon.svg"
73
77
  class="mw-techstack-logo"
74
78
  alt="VS Code"
79
+ loading="lazy"
75
80
  />
76
81
  </a>
77
82
  <a
@@ -83,6 +88,7 @@
83
88
  src="https://www.vectorlogo.zone/logos/docker/docker-icon.svg"
84
89
  class="mw-techstack-logo"
85
90
  alt="Docker"
91
+ loading="lazy"
86
92
  />
87
93
  </a>
88
94
  <a
@@ -94,6 +100,7 @@
94
100
  src="https://www.vectorlogo.zone/logos/figma/figma-icon.svg"
95
101
  class="mw-techstack-logo"
96
102
  alt="Figma"
103
+ loading="lazy"
97
104
  />
98
105
  </a>
99
106
  <a
@@ -105,6 +112,7 @@
105
112
  src="https://upload.wikimedia.org/wikipedia/commons/d/db/Npm-logo.svg"
106
113
  class="mw-techstack-logo"
107
114
  alt="NPM"
115
+ loading="lazy"
108
116
  />
109
117
  </a>
110
118
  </div>
@@ -118,6 +126,7 @@
118
126
  src="https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg"
119
127
  class="mw-techstack-logo"
120
128
  alt="React"
129
+ loading="lazy"
121
130
  />
122
131
  <div class="mw-techstack-info">
123
132
  <span class="mw-techstack-name">React</span>
@@ -128,6 +137,7 @@
128
137
  src="https://upload.wikimedia.org/wikipedia/commons/9/95/Vue.js_Logo_2.svg"
129
138
  class="mw-techstack-logo"
130
139
  alt="Vue"
140
+ loading="lazy"
131
141
  />
132
142
  <div class="mw-techstack-info">
133
143
  <span class="mw-techstack-name">Vue.js</span>
@@ -138,6 +148,7 @@
138
148
  src="https://upload.wikimedia.org/wikipedia/commons/d/d5/Tailwind_CSS_Logo.svg"
139
149
  class="mw-techstack-logo"
140
150
  alt="Tailwind"
151
+ loading="lazy"
141
152
  />
142
153
  <div class="mw-techstack-info">
143
154
  <span class="mw-techstack-name">Tailwind</span>
@@ -154,6 +165,7 @@
154
165
  src="https://upload.wikimedia.org/wikipedia/commons/d/d5/Rust_programming_language_black_logo.svg"
155
166
  class="mw-techstack-logo"
156
167
  alt="Rust"
168
+ loading="lazy"
157
169
  />
158
170
  <div class="mw-techstack-info">
159
171
  <span class="mw-techstack-name">Rust</span>
@@ -164,6 +176,7 @@
164
176
  src="https://upload.wikimedia.org/wikipedia/commons/c/c3/Python-logo-notext.svg"
165
177
  class="mw-techstack-logo"
166
178
  alt="Python"
179
+ loading="lazy"
167
180
  />
168
181
  <div class="mw-techstack-info">
169
182
  <span class="mw-techstack-name">Python</span>
@@ -69,7 +69,11 @@
69
69
  <div class="mw-tiles mw-tiles-2col">
70
70
  <div class="mw-tile">
71
71
  <div class="mw-tile-img">
72
- <img src="images/tile-ecommerce.svg" alt="E-commerce platform" />
72
+ <img
73
+ src="images/tile-ecommerce.svg"
74
+ alt="E-commerce platform"
75
+ loading="lazy"
76
+ />
73
77
  </div>
74
78
  <h3 class="mw-tile-header">E-commerce Platform</h3>
75
79
  <div class="mw-tile-body">
@@ -81,7 +85,11 @@
81
85
 
82
86
  <div class="mw-tile">
83
87
  <div class="mw-tile-img">
84
- <img src="images/tile-marketing.svg" alt="Marketing automation" />
88
+ <img
89
+ src="images/tile-marketing.svg"
90
+ alt="Marketing automation"
91
+ loading="lazy"
92
+ />
85
93
  </div>
86
94
  <h3 class="mw-tile-header">Marketing Automation</h3>
87
95
  <div class="mw-tile-body">
@@ -175,7 +183,11 @@
175
183
  <div class="mw-tiles">
176
184
  <div class="mw-tile mw-tile-lg">
177
185
  <div class="mw-tile-img">
178
- <img src="images/tile-cloud.svg" alt="Cloud infrastructure" />
186
+ <img
187
+ src="images/tile-cloud.svg"
188
+ alt="Cloud infrastructure"
189
+ loading="lazy"
190
+ />
179
191
  </div>
180
192
  <h2 class="mw-tile-header">Cloud Infrastructure</h2>
181
193
  <div class="mw-tile-body">
@@ -192,7 +204,11 @@
192
204
 
193
205
  <div class="mw-tile mw-tile-lg">
194
206
  <div class="mw-tile-img">
195
- <img src="images/tile-analytics.svg" alt="Business intelligence" />
207
+ <img
208
+ src="images/tile-analytics.svg"
209
+ alt="Business intelligence"
210
+ loading="lazy"
211
+ />
196
212
  </div>
197
213
  <h2 class="mw-tile-header">Business Intelligence Suite</h2>
198
214
  <div class="mw-tile-body">
@@ -210,14 +226,15 @@
210
226
 
211
227
  <div class="mw-tile mw-tile-lg">
212
228
  <div class="mw-tile-img">
213
- <img src="images/tile-enterprise.svg" alt="Enterprise solutions" />
229
+ <img
230
+ src="images/tile-enterprise.svg"
231
+ alt="Enterprise solutions"
232
+ loading="lazy"
233
+ />
214
234
  </div>
215
235
  <h2 class="mw-tile-header">Enterprise Solutions</h2>
216
236
  <div class="mw-tile-body">
217
- <p>
218
- Comprehensive business management platform with CRM, ERP, and
219
- workflow automation
220
- </p>
237
+ <p>One platform for CRM, ERP and workflow automation</p>
221
238
  <p>
222
239
  Custom integrations and dedicated support for enterprise-level
223
240
  requirements
@@ -7,13 +7,14 @@
7
7
 
8
8
  <div class="mw-grid-2-lg">
9
9
  <div>
10
+ <!-- A type specimen, not an outline - the scale stays, the heading semantics go -->
10
11
  <div>
11
- <h1>Heading 1</h1>
12
- <h2>Heading 2</h2>
13
- <h3>Heading 3</h3>
14
- <h4>Heading 4</h4>
15
- <h5>Heading 5</h5>
16
- <h6>Heading 6</h6>
12
+ <h1 role="presentation">Heading 1</h1>
13
+ <h2 role="presentation">Heading 2</h2>
14
+ <h3 role="presentation">Heading 3</h3>
15
+ <h4 role="presentation">Heading 4</h4>
16
+ <h5 role="presentation">Heading 5</h5>
17
+ <h6 role="presentation">Heading 6</h6>
17
18
  </div>
18
19
  <blockquote>
19
20
  In the complex world of code, simplicity is the ultimate sophistication.
@@ -267,39 +267,39 @@
267
267
  </p>
268
268
  <div class="mw-grid-2 mw-gap-6">
269
269
  <div class="mw-card mw-card-simple">
270
- <h5 class="mw-text-medium mw-mb-2"><code>mw-text-truncate</code></h5>
270
+ <h4 class="mw-text-medium mw-mb-2"><code>mw-text-truncate</code></h4>
271
271
  <p class="mw-text-truncate">
272
272
  One line only: this sentence is far longer than the box it has been given
273
273
  and ends in an ellipsis rather than wrapping.
274
274
  </p>
275
- <h5 class="mw-text-medium mw-mb-2 mw-mt-5">
275
+ <h4 class="mw-text-medium mw-mb-2 mw-mt-5">
276
276
  <code>mw-text-clamp-2</code>
277
- </h5>
277
+ </h4>
278
278
  <p class="mw-text-clamp-2">
279
279
  Two lines and then an ellipsis. This paragraph runs on for long enough
280
280
  that the third line is cut off, which is what a card preview or a list
281
281
  subtitle wants when the copy is not yours to control.
282
282
  </p>
283
- <h5 class="mw-text-medium mw-mb-2 mw-mt-5">
283
+ <h4 class="mw-text-medium mw-mb-2 mw-mt-5">
284
284
  <code>mw-text-break</code>
285
- </h5>
285
+ </h4>
286
286
  <p class="mw-text-break">
287
287
  https://example.com/a/very/long/url/that/has/no/spaces/in/it/at/all/and/would/otherwise/push/the/page/sideways
288
288
  </p>
289
289
  </div>
290
290
  <div class="mw-card mw-card-simple">
291
- <h5 class="mw-text-medium mw-mb-2">
291
+ <h4 class="mw-text-medium mw-mb-2">
292
292
  <code>mw-text-balance</code> and <code>mw-text-pretty</code>
293
- </h5>
293
+ </h4>
294
294
  <p class="mw-text-muted mw-text-sm">
295
295
  Headings get <code>balance</code> by default - it evens the lines out so
296
296
  no headline leaves one word alone on the last one. Paragraphs get
297
297
  <code>pretty</code>, which only prevents the orphan. Both are on already;
298
298
  the classes are for anything the framework does not style itself.
299
299
  </p>
300
- <h5 class="mw-text-medium mw-mb-2 mw-mt-5">
300
+ <h4 class="mw-text-medium mw-mb-2 mw-mt-5">
301
301
  <code>mw-text-eyebrow</code>
302
- </h5>
302
+ </h4>
303
303
  <p class="mw-text-eyebrow mw-mb-1">Release notes</p>
304
304
  <h4 class="mw-mb-0">The kicker above a heading</h4>
305
305
  <h5 class="mw-text-medium mw-mb-2 mw-mt-5">
@@ -323,29 +323,29 @@
323
323
  </p>
324
324
  <div class="mw-grid-3 mw-gap-6">
325
325
  <div class="mw-card mw-card-simple mw-elevation-1">
326
- <h5 class="mw-text-medium mw-mb-1">1 &middot; resting</h5>
326
+ <h4 class="mw-text-medium mw-mb-1">1 &middot; resting</h4>
327
327
  <p class="mw-text-muted mw-text-sm mw-mb-0">
328
328
  Inputs, tags, small controls.
329
329
  </p>
330
330
  </div>
331
331
  <div class="mw-card mw-card-simple mw-elevation-2">
332
- <h5 class="mw-text-medium mw-mb-1">2 &middot; raised</h5>
332
+ <h4 class="mw-text-medium mw-mb-1">2 &middot; raised</h4>
333
333
  <p class="mw-text-muted mw-text-sm mw-mb-0">Cards and panels at rest.</p>
334
334
  </div>
335
335
  <div class="mw-card mw-card-simple mw-elevation-3">
336
- <h5 class="mw-text-medium mw-mb-1">3 &middot; floating</h5>
336
+ <h4 class="mw-text-medium mw-mb-1">3 &middot; floating</h4>
337
337
  <p class="mw-text-muted mw-text-sm mw-mb-0">A card under the pointer.</p>
338
338
  </div>
339
339
  <div class="mw-card mw-card-simple mw-elevation-4">
340
- <h5 class="mw-text-medium mw-mb-1">4 &middot; overlay</h5>
340
+ <h4 class="mw-text-medium mw-mb-1">4 &middot; overlay</h4>
341
341
  <p class="mw-text-muted mw-text-sm mw-mb-0">Dropdowns, popovers, drawer.</p>
342
342
  </div>
343
343
  <div class="mw-card mw-card-simple mw-elevation-5">
344
- <h5 class="mw-text-medium mw-mb-1">5 &middot; modal</h5>
344
+ <h4 class="mw-text-medium mw-mb-1">5 &middot; modal</h4>
345
345
  <p class="mw-text-muted mw-text-sm mw-mb-0">The dialog over everything.</p>
346
346
  </div>
347
347
  <div class="mw-card mw-card-simple mw-elevation-0">
348
- <h5 class="mw-text-medium mw-mb-1">0 &middot; flat</h5>
348
+ <h4 class="mw-text-medium mw-mb-1">0 &middot; flat</h4>
349
349
  <p class="mw-text-muted mw-text-sm mw-mb-0">Explicitly on the page.</p>
350
350
  </div>
351
351
  </div>
@@ -403,3 +403,23 @@
403
403
  <code>photo</code>
404
404
  </div>
405
405
  </div>
406
+
407
+ <h3 class="mw-mb-4 mw-mt-6">Squircle Corners</h3>
408
+ <p class="mw-text-muted mw-text-measure">
409
+ <code>mw-squircle</code> draws the framework silhouette with a superellipse
410
+ instead of a circular arc - same four radii, fuller curve. Opt-in, because
411
+ <code>corner-shape</code> only lands in Chromium so far; everywhere else the
412
+ card below is simply the normal one.
413
+ </p>
414
+ <div class="mw-grid-2 mw-gap-6">
415
+ <div class="mw-card mw-card-simple">
416
+ <strong>Default</strong>
417
+ <p class="mw-text-muted mw-text-sm mw-mb-0">Circular corner radii.</p>
418
+ </div>
419
+ <div class="mw-card mw-card-simple mw-squircle">
420
+ <strong>mw-squircle</strong>
421
+ <p class="mw-text-muted mw-text-sm mw-mb-0">
422
+ Superellipse, corner accent follows.
423
+ </p>
424
+ </div>
425
+ </div>
@@ -0,0 +1,10 @@
1
+ // Declared here and before any rule: a layer's position is fixed by where its
2
+ // name first appears. What it buys a consumer is that any rule outside a layer
3
+ // beats every rule inside one, however specific.
4
+ //
5
+ // The order reads inside out - the smaller thing first, then whatever places it.
6
+ // Two steps are worth stating: forms before components, because a list restyles
7
+ // the checkbox inside it; components before layout, because the two meet on one
8
+ // element (`class="mw-card mw-grid-2"`) and there the layout class has to win, or
9
+ // `.mw-card` hands `display: block` back to a grid.
10
+ @layer mw.reset, mw.base, mw.forms, mw.components, mw.layout, mw.utilities;
@@ -1,3 +1,9 @@
1
+ // Here and not only in main.scss: every partial loads `abstracts`, so this is the
2
+ // one point every entry reaches. Importing components one by one otherwise
3
+ // leaves the layer order to the import order, which puts `layout` ahead of
4
+ // `components` and hands `display: block` back to a card that is also a grid.
5
+ @use '../layers';
6
+
1
7
  // 'variables' first: it is the only configurable module, and both 'functions'
2
8
  // and 'mixins' load it themselves. Forwarding it later would mean it is
3
9
  // already loaded by the time a `with (...)` configuration reaches it.