maverick-wave 4.28.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 (138) hide show
  1. package/.claude/settings.local.json +29 -1
  2. package/.claude/skills/mw-maverick-wave/SKILL.md +39 -24
  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 +42 -5
  6. package/.claude/skills/mw-maverick-wave/references/forms.md +14 -2
  7. package/.claude/skills/mw-maverick-wave/references/javascript.md +17 -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 +11 -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 +223 -83
  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/home-container.html +10 -20
  40. package/src/partials/input-group-container.html +11 -2
  41. package/src/partials/kbd-container.html +1 -1
  42. package/src/partials/login-container.html +5 -1
  43. package/src/partials/media-container.html +2 -2
  44. package/src/partials/modals-container.html +22 -32
  45. package/src/partials/pricing-container.html +9 -9
  46. package/src/partials/skeleton-container.html +6 -6
  47. package/src/partials/stepper-container.html +2 -2
  48. package/src/partials/tables-container.html +12 -12
  49. package/src/partials/tabs-container.html +17 -27
  50. package/src/partials/tags-container.html +23 -17
  51. package/src/partials/techstack-bucket-container.html +13 -0
  52. package/src/partials/tiles-container.html +26 -9
  53. package/src/partials/typography-container.html +7 -6
  54. package/src/partials/utilities-container.html +35 -15
  55. package/src/scss/_layers.scss +10 -0
  56. package/src/scss/abstracts/_index.scss +6 -0
  57. package/src/scss/abstracts/_mixins.scss +61 -153
  58. package/src/scss/abstracts/_variables.scss +123 -319
  59. package/src/scss/base/_base.scss +170 -190
  60. package/src/scss/base/_reset.scss +106 -104
  61. package/src/scss/base/_typography.scss +153 -151
  62. package/src/scss/components/_accordions.scss +97 -97
  63. package/src/scss/components/_alerts.scss +71 -70
  64. package/src/scss/components/_announcement.scss +71 -70
  65. package/src/scss/components/_avatars.scss +130 -142
  66. package/src/scss/components/_badge.scss +131 -132
  67. package/src/scss/components/_blog-post.scss +223 -220
  68. package/src/scss/components/_breadcrumbs.scss +93 -92
  69. package/src/scss/components/_button-bar.scss +102 -110
  70. package/src/scss/components/_buttons.scss +319 -324
  71. package/src/scss/components/_calendar.scss +251 -252
  72. package/src/scss/components/_cards.scss +359 -386
  73. package/src/scss/components/_code.scss +190 -194
  74. package/src/scss/components/_coming-soon.scss +77 -75
  75. package/src/scss/components/_content-slider.scss +90 -89
  76. package/src/scss/components/_divider.scss +55 -53
  77. package/src/scss/components/_dropdown.scss +179 -185
  78. package/src/scss/components/_empty-state.scss +57 -57
  79. package/src/scss/components/_flag.scss +294 -278
  80. package/src/scss/components/_gallery.scss +131 -133
  81. package/src/scss/components/_info.scss +151 -167
  82. package/src/scss/components/_kanban.scss +332 -341
  83. package/src/scss/components/_kbd.scss +40 -38
  84. package/src/scss/components/_lang-switch.scss +89 -97
  85. package/src/scss/components/_links.scss +21 -28
  86. package/src/scss/components/_lists.scss +510 -514
  87. package/src/scss/components/_localhost-indicator.scss +26 -24
  88. package/src/scss/components/_media.scss +22 -20
  89. package/src/scss/components/_meta-info.scss +35 -33
  90. package/src/scss/components/_modals.scss +277 -186
  91. package/src/scss/components/_pagination.scss +81 -87
  92. package/src/scss/components/_panels.scss +99 -97
  93. package/src/scss/components/_pricing.scss +183 -241
  94. package/src/scss/components/_progress.scss +112 -89
  95. package/src/scss/components/_prose.scss +35 -33
  96. package/src/scss/components/_ratings.scss +40 -38
  97. package/src/scss/components/_segmented.scss +82 -84
  98. package/src/scss/components/_skeleton.scss +66 -72
  99. package/src/scss/components/_spinners.scss +155 -159
  100. package/src/scss/components/_stepper.scss +116 -116
  101. package/src/scss/components/_tables.scss +155 -148
  102. package/src/scss/components/_tabs.scss +232 -141
  103. package/src/scss/components/_tags.scss +109 -107
  104. package/src/scss/components/_techstack-bucket.scss +123 -122
  105. package/src/scss/components/_testimonial.scss +72 -70
  106. package/src/scss/components/_theme-toggle.scss +53 -51
  107. package/src/scss/components/_tiles.scss +174 -174
  108. package/src/scss/components/_timelines.scss +282 -280
  109. package/src/scss/components/_toasts.scss +66 -72
  110. package/src/scss/form-elements/_checkbox.scss +117 -132
  111. package/src/scss/form-elements/_form.scss +149 -115
  112. package/src/scss/form-elements/_input-group.scss +99 -103
  113. package/src/scss/form-elements/_input.scss +74 -74
  114. package/src/scss/form-elements/_login.scss +48 -48
  115. package/src/scss/form-elements/_prefilled.scss +53 -51
  116. package/src/scss/form-elements/_radio.scss +95 -107
  117. package/src/scss/form-elements/_select.scss +42 -42
  118. package/src/scss/form-elements/_slider.scss +117 -132
  119. package/src/scss/form-elements/_textarea.scss +68 -54
  120. package/src/scss/form-elements/_toggle.scss +127 -140
  121. package/src/scss/layout/_footer.scss +172 -171
  122. package/src/scss/layout/_grid.scss +268 -302
  123. package/src/scss/layout/_header.scss +426 -427
  124. package/src/scss/layout/_home.scss +28 -27
  125. package/src/scss/layout/_main.scss +275 -238
  126. package/src/scss/layout/_page-header.scss +38 -36
  127. package/src/scss/layout/_section.scss +150 -124
  128. package/src/scss/main.scss +1 -1
  129. package/src/scss/utilities/_accessibility.scss +46 -45
  130. package/src/scss/utilities/_aspect.scss +22 -20
  131. package/src/scss/utilities/_corner.scss +23 -5
  132. package/src/scss/utilities/_display.scss +76 -70
  133. package/src/scss/utilities/_elevation.scss +13 -11
  134. package/src/scss/utilities/_flex.scss +83 -85
  135. package/src/scss/utilities/_reveal.scss +40 -63
  136. package/src/scss/utilities/_spacing.scss +63 -64
  137. package/src/scss/utilities/_text.scss +139 -141
  138. package/src/scss/utilities/_touch-targets.scss +130 -147
@@ -1,90 +1,84 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- @keyframes mw-skeleton-shimmer {
4
- 0% {
5
- background-position: -200% 0;
3
+ @layer mw.components {
4
+ @keyframes mw-skeleton-shimmer {
5
+ 0% {
6
+ background-position: -200% 0;
7
+ }
8
+ 100% {
9
+ background-position: 200% 0;
10
+ }
6
11
  }
7
- 100% {
8
- background-position: 200% 0;
9
- }
10
- }
11
-
12
- // Base skeleton element
13
- .mw-skeleton {
14
- background: linear-gradient(
15
- 90deg,
16
- var(--mw-card-background) 25%,
17
- var(--mw-gray-background) 50%,
18
- var(--mw-card-background) 75%
19
- );
20
- background-size: 200% 100%;
21
- animation: mw-skeleton-shimmer 1.5s infinite linear;
22
- border-radius: radius('sm');
23
- display: block;
24
- }
25
-
26
- // Text line
27
- .mw-skeleton-text {
28
- height: 1rem;
29
- width: 100%;
30
- margin-bottom: spacing('2');
31
12
 
32
- &:last-child {
33
- width: 65%;
13
+ .mw-skeleton {
14
+ background: linear-gradient(
15
+ 90deg,
16
+ var(--mw-card-background) 25%,
17
+ var(--mw-gray-background) 50%,
18
+ var(--mw-card-background) 75%
19
+ );
20
+ background-size: 200% 100%;
21
+ animation: mw-skeleton-shimmer 1.5s infinite linear;
22
+ border-radius: radius('sm');
23
+ display: block;
34
24
  }
35
- }
36
25
 
37
- // Heading
38
- .mw-skeleton-title {
39
- height: 1.4rem;
40
- width: 45%;
41
- margin-bottom: spacing('3');
42
- }
26
+ .mw-skeleton-text {
27
+ height: 1rem;
28
+ width: 100%;
29
+ margin-bottom: spacing('2');
43
30
 
44
- // Circle (avatar placeholder)
45
- .mw-skeleton-circle {
46
- border-radius: radius('full');
47
- width: 24px;
48
- height: 24px;
49
- flex-shrink: 0;
50
- }
31
+ &:last-child {
32
+ width: 65%;
33
+ }
34
+ }
51
35
 
52
- // Rectangle (image/banner placeholder)
53
- .mw-skeleton-rect {
54
- width: 100%;
55
- height: 180px;
56
- }
36
+ .mw-skeleton-title {
37
+ height: 1.4rem;
38
+ width: 45%;
39
+ margin-bottom: spacing('3');
40
+ }
57
41
 
58
- // Size variants for rect
59
- .mw-skeleton-rect-sm {
60
- height: 100px;
61
- }
42
+ .mw-skeleton-circle {
43
+ border-radius: radius('full');
44
+ width: 24px;
45
+ height: 24px;
46
+ flex-shrink: 0;
47
+ }
62
48
 
63
- .mw-skeleton-rect-lg {
64
- height: 260px;
65
- }
49
+ .mw-skeleton-rect {
50
+ width: 100%;
51
+ height: 180px;
52
+ }
66
53
 
67
- // Card wrapper with built-in padding and border
68
- .mw-skeleton-card {
69
- display: flex;
70
- flex-direction: column;
71
- gap: spacing('3');
72
- padding: spacing('4');
73
- background: var(--mw-card-background);
74
- border: 1px solid var(--mw-border);
75
- border-radius: radius('md');
76
- }
54
+ .mw-skeleton-rect-sm {
55
+ height: 100px;
56
+ }
77
57
 
78
- // Row layout helper (avatar + text lines side by side)
79
- .mw-skeleton-row {
80
- display: flex;
81
- align-items: flex-start;
82
- gap: spacing('3');
58
+ .mw-skeleton-rect-lg {
59
+ height: 260px;
60
+ }
83
61
 
84
- .mw-skeleton-body {
85
- flex: 1;
62
+ .mw-skeleton-card {
86
63
  display: flex;
87
64
  flex-direction: column;
88
65
  gap: spacing('3');
66
+ padding: spacing('4');
67
+ background: var(--mw-card-background);
68
+ border: 1px solid var(--mw-border);
69
+ border-radius: radius('md');
70
+ }
71
+
72
+ .mw-skeleton-row {
73
+ display: flex;
74
+ align-items: flex-start;
75
+ gap: spacing('3');
76
+
77
+ .mw-skeleton-body {
78
+ flex: 1;
79
+ display: flex;
80
+ flex-direction: column;
81
+ gap: spacing('3');
82
+ }
89
83
  }
90
84
  }
@@ -1,208 +1,204 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- $_size-default: 4.5rem;
4
- $_size-sm: 2.5rem;
5
- $_size-lg: 7.5rem;
6
-
7
- .mw-spinner {
8
- display: inline-block;
9
- position: relative;
10
-
11
- // Default spinner (circle border)
12
- &-border {
13
- width: $_size-default;
14
- height: $_size-default;
15
- border: 0.5rem solid var(--mw-border);
16
- border-radius: radius('full');
17
- border-top-color: var(--mw-primary-text-color);
18
- animation: mw-spin 1.2s linear infinite;
19
-
20
- // Size variants
21
- &.mw-spinner-sm {
22
- width: $_size-sm;
23
- height: $_size-sm;
24
- border-width: 0.3rem;
25
- animation: mw-spin 1.4s linear infinite;
26
- }
3
+ @layer mw.components {
4
+ $_size-default: 4.5rem;
5
+ $_size-sm: 2.5rem;
6
+ $_size-lg: 7.5rem;
27
7
 
28
- &.mw-spinner-lg {
29
- width: $_size-lg;
30
- height: $_size-lg;
31
- border-width: 0.7rem;
32
- animation: mw-spin 1s linear infinite;
33
- }
8
+ .mw-spinner {
9
+ display: inline-block;
10
+ position: relative;
34
11
 
35
- // Color variants
36
- &.mw-spinner-primary {
12
+ // Default spinner (circle border)
13
+ &-border {
14
+ width: $_size-default;
15
+ height: $_size-default;
16
+ border: 0.5rem solid var(--mw-border);
17
+ border-radius: radius('full');
37
18
  border-top-color: var(--mw-primary-text-color);
38
- }
39
-
40
- &.mw-spinner-secondary {
41
- border-top-color: var(--mw-secondary-text-color);
42
- }
43
- }
19
+ animation: mw-spin 1.2s linear infinite;
44
20
 
45
- // Dots spinner
46
- &-dots {
47
- width: $_size-default;
48
- height: 1rem;
49
- text-align: center;
21
+ &.mw-spinner-sm {
22
+ width: $_size-sm;
23
+ height: $_size-sm;
24
+ border-width: 0.3rem;
25
+ animation: mw-spin 1.4s linear infinite;
26
+ }
50
27
 
51
- > div {
52
- width: 1rem;
53
- height: 1rem;
54
- background: var(--mw-primary-color);
55
- border-radius: radius('full');
56
- display: inline-block;
57
- margin: spacing('0') spacing('2');
58
- animation: mw-bounce 1.4s infinite ease-in-out both;
28
+ &.mw-spinner-lg {
29
+ width: $_size-lg;
30
+ height: $_size-lg;
31
+ border-width: 0.7rem;
32
+ animation: mw-spin 1s linear infinite;
33
+ }
59
34
 
60
- &:nth-child(1) {
61
- animation-delay: -0.32s;
35
+ &.mw-spinner-primary {
36
+ border-top-color: var(--mw-primary-text-color);
62
37
  }
63
38
 
64
- &:nth-child(2) {
65
- animation-delay: -0.16s;
39
+ &.mw-spinner-secondary {
40
+ border-top-color: var(--mw-secondary-text-color);
66
41
  }
67
42
  }
68
43
 
69
- // Size variants
70
- &.mw-spinner-sm {
71
- width: $_size-sm;
72
- height: 0.75rem;
44
+ // Dots spinner
45
+ &-dots {
46
+ width: $_size-default;
47
+ height: 1rem;
48
+ text-align: center;
73
49
 
74
50
  > div {
75
- width: 0.75rem;
76
- height: 0.75rem;
77
- margin: spacing('0') spacing('1');
51
+ width: 1rem;
52
+ height: 1rem;
53
+ background: var(--mw-primary-color);
54
+ border-radius: radius('full');
55
+ display: inline-block;
56
+ margin: spacing('0') spacing('2');
57
+ animation: mw-bounce 1.4s infinite ease-in-out both;
58
+
59
+ &:nth-child(1) {
60
+ animation-delay: -0.32s;
61
+ }
62
+
63
+ &:nth-child(2) {
64
+ animation-delay: -0.16s;
65
+ }
78
66
  }
79
- }
80
67
 
81
- &.mw-spinner-lg {
82
- width: $_size-lg;
83
- height: 1.5rem;
68
+ &.mw-spinner-sm {
69
+ width: $_size-sm;
70
+ height: 0.75rem;
71
+
72
+ > div {
73
+ width: 0.75rem;
74
+ height: 0.75rem;
75
+ margin: spacing('0') spacing('1');
76
+ }
77
+ }
84
78
 
85
- > div {
86
- width: 1.5rem;
79
+ &.mw-spinner-lg {
80
+ width: $_size-lg;
87
81
  height: 1.5rem;
88
- margin: spacing('0') spacing('3');
82
+
83
+ > div {
84
+ width: 1.5rem;
85
+ height: 1.5rem;
86
+ margin: spacing('0') spacing('3');
87
+ }
89
88
  }
90
- }
91
89
 
92
- // Color variants
93
- &.mw-spinner-primary > div {
94
- background: var(--mw-primary-color);
95
- }
90
+ &.mw-spinner-primary > div {
91
+ background: var(--mw-primary-color);
92
+ }
96
93
 
97
- &.mw-spinner-secondary > div {
98
- background: var(--mw-secondary-color);
94
+ &.mw-spinner-secondary > div {
95
+ background: var(--mw-secondary-color);
96
+ }
99
97
  }
100
- }
101
-
102
- // Dual ring spinner
103
- &-dual-ring {
104
- width: $_size-default;
105
- height: $_size-default;
106
98
 
107
- &:after {
108
- content: ' ';
109
- display: block;
99
+ // Dual ring spinner
100
+ &-dual-ring {
110
101
  width: $_size-default;
111
102
  height: $_size-default;
112
- border-radius: radius('full');
113
- border: 0.5rem solid var(--mw-primary-text-color);
114
- border-color: var(--mw-primary-text-color) transparent
115
- var(--mw-primary-text-color) transparent;
116
- animation: mw-spin 1.5s linear infinite;
117
- }
118
-
119
- // Size variants
120
- &.mw-spinner-sm {
121
- width: $_size-sm;
122
- height: $_size-sm;
123
103
 
124
104
  &:after {
105
+ content: ' ';
106
+ display: block;
107
+ width: $_size-default;
108
+ height: $_size-default;
109
+ border-radius: radius('full');
110
+ border: 0.5rem solid var(--mw-primary-text-color);
111
+ border-color: var(--mw-primary-text-color) transparent
112
+ var(--mw-primary-text-color) transparent;
113
+ animation: mw-spin 1.5s linear infinite;
114
+ }
115
+
116
+ &.mw-spinner-sm {
125
117
  width: $_size-sm;
126
118
  height: $_size-sm;
127
- border-width: 0.3rem;
128
- }
129
- }
130
119
 
131
- &.mw-spinner-lg {
132
- width: $_size-lg;
133
- height: $_size-lg;
120
+ &:after {
121
+ width: $_size-sm;
122
+ height: $_size-sm;
123
+ border-width: 0.3rem;
124
+ }
125
+ }
134
126
 
135
- &:after {
127
+ &.mw-spinner-lg {
136
128
  width: $_size-lg;
137
129
  height: $_size-lg;
138
- border-width: 0.7rem;
130
+
131
+ &:after {
132
+ width: $_size-lg;
133
+ height: $_size-lg;
134
+ border-width: 0.7rem;
135
+ }
139
136
  }
140
- }
141
137
 
142
- // Color variants
143
- &.mw-spinner-primary:after {
144
- border-color: var(--mw-primary-text-color) transparent
145
- var(--mw-primary-text-color) transparent;
146
- }
138
+ &.mw-spinner-primary:after {
139
+ border-color: var(--mw-primary-text-color) transparent
140
+ var(--mw-primary-text-color) transparent;
141
+ }
147
142
 
148
- &.mw-spinner-secondary:after {
149
- border-color: var(--mw-secondary-text-color) transparent
150
- var(--mw-secondary-text-color) transparent;
143
+ &.mw-spinner-secondary:after {
144
+ border-color: var(--mw-secondary-text-color) transparent
145
+ var(--mw-secondary-text-color) transparent;
146
+ }
151
147
  }
152
148
  }
153
- }
154
149
 
155
- // Spinner container for centering
156
- .mw-spinner-container {
157
- display: flex;
158
- justify-content: center;
159
- align-items: center;
160
- width: 100%;
161
- height: 80%; // a little further up than the center
162
-
163
- &-overlay {
164
- @extend .mw-spinner-container;
165
- position: absolute;
166
- top: spacing('0');
167
- left: spacing('0');
168
- right: spacing('0');
169
- bottom: spacing('0');
170
- background: var(--mw-overlay-background);
171
- backdrop-filter: blur(2px);
150
+ // Spinner container for centering
151
+ .mw-spinner-container {
172
152
  display: flex;
173
- height: 100%;
174
- z-index: z-index('spinner');
153
+ justify-content: center;
154
+ align-items: center;
155
+ width: 100%;
156
+ height: 80%; // a little further up than the center
157
+
158
+ &-overlay {
159
+ @extend .mw-spinner-container;
160
+ position: absolute;
161
+ top: spacing('0');
162
+ left: spacing('0');
163
+ right: spacing('0');
164
+ bottom: spacing('0');
165
+ background: var(--mw-overlay-background);
166
+ backdrop-filter: blur(2px);
167
+ display: flex;
168
+ height: 100%;
169
+ z-index: z-index('spinner');
170
+ }
175
171
  }
176
- }
177
172
 
178
- // Animations
179
- @keyframes mw-spin {
180
- 0% {
181
- transform: rotate(0deg);
182
- }
183
- 100% {
184
- transform: rotate(360deg);
173
+ // Animations
174
+ @keyframes mw-spin {
175
+ 0% {
176
+ transform: rotate(0deg);
177
+ }
178
+ 100% {
179
+ transform: rotate(360deg);
180
+ }
185
181
  }
186
- }
187
182
 
188
- @keyframes mw-bounce {
189
- 0%,
190
- 80%,
191
- 100% {
192
- transform: scale(0);
193
- }
194
- 40% {
195
- transform: scale(1);
183
+ @keyframes mw-bounce {
184
+ 0%,
185
+ 80%,
186
+ 100% {
187
+ transform: scale(0);
188
+ }
189
+ 40% {
190
+ transform: scale(1);
191
+ }
196
192
  }
197
- }
198
193
 
199
- @keyframes mw-pulse {
200
- 0% {
201
- transform: scale(0);
202
- opacity: 1;
203
- }
204
- 100% {
205
- transform: scale(1);
206
- opacity: 0;
194
+ @keyframes mw-pulse {
195
+ 0% {
196
+ transform: scale(0);
197
+ opacity: 1;
198
+ }
199
+ 100% {
200
+ transform: scale(1);
201
+ opacity: 0;
202
+ }
207
203
  }
208
204
  }