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,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
  }