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
@@ -1,202 +1,186 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- $_mw-info-colors: (
4
- primary: var(--mw-primary-color),
5
- secondary: var(--mw-secondary-color),
6
- info: var(--mw-info-color),
7
- success: var(--mw-success-color),
8
- warning: var(--mw-warning-color),
9
- danger: var(--mw-danger-color),
10
- );
11
-
12
- .mw-info {
13
- display: inline-flex;
14
- flex-direction: column;
15
- align-items: center;
16
- justify-content: center;
17
- padding: spacing('3') spacing('5');
18
- margin: spacing('1');
19
- font-size: font-size('base');
20
- font-weight: font-weight('medium');
21
- color: var(--mw-text-color);
22
- background: var(--mw-card-background);
23
- border: 1px solid var(--mw-border);
24
- border-radius: radius('md');
25
- transition:
26
- transform var(--mw-duration-base) var(--mw-ease-out),
27
- box-shadow var(--mw-duration-base) var(--mw-ease-out);
28
- cursor: default;
29
- text-decoration: none;
30
-
31
- &:hover {
32
- box-shadow: var(--mw-elevation-3);
33
- }
34
-
35
- @include hover {
36
- transform: translateY(-2px);
37
- }
38
-
39
- // Interactive variant
40
- &-clickable {
41
- cursor: pointer;
42
- @include tappable;
43
-
44
- &:active {
45
- transform: scale(0.98);
46
- transition-duration: var(--mw-duration-instant);
47
- }
48
- }
49
-
50
- // Size variants
51
- &-sm {
52
- padding: spacing('1') spacing('3');
53
- font-size: font-size('sm');
54
- font-weight: font-weight('normal');
55
- }
56
- &-lg {
57
- padding: spacing('4') spacing('6');
58
- font-size: font-size('lg');
59
- font-weight: font-weight('medium');
60
- }
61
- &-xl {
62
- padding: spacing('5') spacing('8');
63
- font-size: font-size('xl');
3
+ @layer mw.components {
4
+ .mw-info {
5
+ display: inline-flex;
6
+ flex-direction: column;
7
+ align-items: center;
8
+ justify-content: center;
9
+ padding: spacing('3') spacing('5');
10
+ margin: spacing('1');
11
+ font-size: font-size('base');
64
12
  font-weight: font-weight('medium');
65
- }
66
-
67
- // Block variant: the same framed surface, carrying a paragraph instead of a
68
- // value. The base is built for a short figure - it centres its content in a
69
- // narrow column, sets it in medium weight and lifts on hover, which turns
70
- // running text into a ragged stack that twitches under the pointer. This
71
- // reads as a note instead: ranged left up to a measure, body weight, body
72
- // leading, and it stays put.
73
- //
74
- // <div class="mw-info mw-info-primary mw-info-block">
75
- // <strong>Why greyscale?</strong>
76
- // <span>Because the frame is not the stage ...</span>
77
- // </div>
78
- &-block {
79
- display: flex;
80
- align-items: flex-start;
81
- width: 100%;
82
- max-width: 68ch;
83
- margin-inline: auto;
84
- padding: spacing('6') spacing('7');
85
- font-weight: font-weight('normal');
86
- line-height: 1.7;
87
- text-align: left;
88
- text-wrap: pretty;
13
+ color: var(--mw-text-color);
14
+ background: var(--mw-card-background);
15
+ border: 1px solid var(--mw-border);
16
+ border-radius: radius('md');
17
+ transition:
18
+ transform var(--mw-duration-base) var(--mw-ease-out),
19
+ box-shadow var(--mw-duration-base) var(--mw-ease-out);
20
+ cursor: default;
21
+ text-decoration: none;
89
22
 
90
23
  &:hover {
91
- box-shadow: none;
24
+ box-shadow: var(--mw-elevation-3);
92
25
  }
93
26
 
94
27
  @include hover {
95
- transform: none;
28
+ transform: translateY(-2px);
96
29
  }
97
30
 
98
- strong {
99
- margin-bottom: spacing('2');
100
- }
101
- }
31
+ // Interactive variant
32
+ &-clickable {
33
+ cursor: pointer;
34
+ @include tappable;
102
35
 
103
- // counter variant: big number + small label
104
- &-counter {
105
- min-width: spacing('12');
106
- .mw-info-value {
107
- font-size: font-size('4xl');
108
- font-weight: font-weight('bold');
109
- line-height: 1.4;
36
+ &:active {
37
+ transform: scale(0.98);
38
+ transition-duration: var(--mw-duration-instant);
39
+ }
110
40
  }
111
- .mw-info-label {
41
+
42
+ &-sm {
43
+ padding: spacing('1') spacing('3');
112
44
  font-size: font-size('sm');
45
+ font-weight: font-weight('normal');
46
+ }
47
+ &-lg {
48
+ padding: spacing('4') spacing('6');
49
+ font-size: font-size('lg');
50
+ font-weight: font-weight('medium');
51
+ }
52
+ &-xl {
53
+ padding: spacing('5') spacing('8');
54
+ font-size: font-size('xl');
113
55
  font-weight: font-weight('medium');
114
- opacity: 0.7;
115
- text-align: center;
116
56
  }
117
- }
118
- }
119
57
 
120
- // When the figure is actually interactive it should say so
121
- a.mw-info,
122
- button.mw-info {
123
- cursor: pointer;
58
+ // The same surface carrying a paragraph instead of a figure. The base centres
59
+ // a short value and lifts on hover, which turns running text into a ragged
60
+ // stack that twitches under the pointer - this stays put and reads as a note.
61
+ &-block {
62
+ display: flex;
63
+ align-items: flex-start;
64
+ width: 100%;
65
+ max-width: 68ch;
66
+ margin-inline: auto;
67
+ padding: spacing('6') spacing('7');
68
+ font-weight: font-weight('normal');
69
+ line-height: 1.7;
70
+ text-align: left;
71
+ text-wrap: pretty;
72
+
73
+ &:hover {
74
+ box-shadow: none;
75
+ }
76
+
77
+ @include hover {
78
+ transform: none;
79
+ }
80
+
81
+ strong {
82
+ margin-bottom: spacing('2');
83
+ }
84
+ }
124
85
 
125
- @include focus-ring;
126
- }
86
+ // counter variant: big number + small label
87
+ &-counter {
88
+ min-width: spacing('12');
89
+ .mw-info-value {
90
+ font-size: font-size('4xl');
91
+ font-weight: font-weight('bold');
92
+ line-height: 1.4;
93
+ }
94
+ .mw-info-label {
95
+ font-size: font-size('sm');
96
+ font-weight: font-weight('medium');
97
+ opacity: 0.7;
98
+ text-align: center;
99
+ }
100
+ }
101
+ }
102
+
103
+ // When the figure is actually interactive it should say so
104
+ a.mw-info,
105
+ button.mw-info {
106
+ cursor: pointer;
127
107
 
128
- // Info like mini-buttons
129
- .mw-info-mini {
130
- display: inline-flex;
131
- align-items: center;
132
- justify-content: center;
133
- width: 20px;
134
- height: 20px;
135
- border-radius: radius('full');
136
- background: var(--mw-gray-color);
137
- color: $fixed-surface-text;
138
- border: none;
139
- padding: 0;
140
- line-height: 1;
141
- font-weight: bold;
142
- cursor: default;
143
- box-sizing: border-box;
144
-
145
- i,
146
- fa-icon,
147
- svg,
148
- [class*='fa-'],
149
- [class*='fas-'] {
150
- font-size: 0.7rem;
108
+ @include focus-ring;
151
109
  }
152
110
 
153
- &-sm {
154
- width: 16px;
155
- height: 16px;
111
+ // Info like mini-buttons
112
+ .mw-info-mini {
113
+ display: inline-flex;
114
+ align-items: center;
115
+ justify-content: center;
116
+ width: 20px;
117
+ height: 20px;
118
+ border-radius: radius('full');
119
+ background: var(--mw-gray-color);
120
+ color: $fixed-surface-text;
121
+ border: none;
122
+ padding: 0;
123
+ line-height: 1;
124
+ font-weight: bold;
125
+ cursor: default;
126
+ box-sizing: border-box;
127
+
156
128
  i,
157
129
  fa-icon,
158
130
  svg,
159
131
  [class*='fa-'],
160
132
  [class*='fas-'] {
161
- font-size: 0.55rem;
133
+ font-size: 0.7rem;
162
134
  }
163
- }
164
135
 
165
- &-lg {
166
- width: 24px;
167
- height: 24px;
168
- i,
169
- fa-icon,
170
- svg,
171
- [class*='fa-'],
172
- [class*='fas-'] {
173
- font-size: 0.8rem;
136
+ &-sm {
137
+ width: 16px;
138
+ height: 16px;
139
+ i,
140
+ fa-icon,
141
+ svg,
142
+ [class*='fa-'],
143
+ [class*='fas-'] {
144
+ font-size: 0.55rem;
145
+ }
174
146
  }
175
- }
176
147
 
177
- &-xl {
178
- width: 32px;
179
- height: 32px;
180
- i,
181
- fa-icon,
182
- svg,
183
- [class*='fa-'],
184
- [class*='fas-'] {
185
- font-size: 1rem;
148
+ &-lg {
149
+ width: 24px;
150
+ height: 24px;
151
+ i,
152
+ fa-icon,
153
+ svg,
154
+ [class*='fa-'],
155
+ [class*='fas-'] {
156
+ font-size: 0.8rem;
157
+ }
186
158
  }
187
- }
188
- }
189
159
 
190
- // Generate color modifiers
191
- @each $name, $col in $_mw-info-colors {
192
- .mw-info-#{$name} {
193
- background: var(--mw-#{$name}-info-background);
194
- border-color: var(--mw-#{$name}-text-color);
195
- border-left: 6px solid var(--mw-#{$name}-text-color);
160
+ &-xl {
161
+ width: 32px;
162
+ height: 32px;
163
+ i,
164
+ fa-icon,
165
+ svg,
166
+ [class*='fa-'],
167
+ [class*='fas-'] {
168
+ font-size: 1rem;
169
+ }
170
+ }
196
171
  }
197
172
 
198
- .mw-info-mini-#{$name} {
199
- background: #{$col};
200
- color: var(--mw-#{$name}-accent-text-color);
173
+ // Generate color modifiers
174
+ @each $name, $col in $semantic-colors {
175
+ .mw-info-#{$name} {
176
+ background: var(--mw-#{$name}-info-background);
177
+ border-color: var(--mw-#{$name}-text-color);
178
+ border-left: 6px solid var(--mw-#{$name}-text-color);
179
+ }
180
+
181
+ .mw-info-mini-#{$name} {
182
+ background: #{$col};
183
+ color: var(--mw-#{$name}-accent-text-color);
184
+ }
201
185
  }
202
186
  }