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,116 +1,117 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- .mw-breadcrumbs {
4
- display: flex;
5
- align-items: center;
6
- justify-content: flex-start;
7
- margin: spacing('1');
8
- padding: spacing('0') spacing('2');
9
-
10
- &-list {
3
+ @layer mw.components {
4
+ .mw-breadcrumbs {
11
5
  display: flex;
12
6
  align-items: center;
13
- margin: spacing('0');
14
- padding: spacing('0');
15
- list-style: none;
16
- }
17
-
18
- &-item {
19
- margin-left: -2px;
7
+ justify-content: flex-start;
8
+ margin: spacing('1');
9
+ padding: spacing('0') spacing('2');
20
10
 
21
- &:first-child {
22
- margin-left: 0;
23
- a {
24
- border-radius: radius('md') 0 0 radius('md');
25
- }
11
+ &-list {
12
+ display: flex;
13
+ align-items: center;
14
+ margin: spacing('0');
15
+ padding: spacing('0');
16
+ list-style: none;
26
17
  }
27
18
 
28
- &:last-child {
29
- a {
30
- border-radius: 0 radius('md') radius('md') 0;
31
- }
32
- }
19
+ &-item {
20
+ margin-left: -2px;
33
21
 
34
- a {
35
- background: var(--mw-card-background);
36
- color: var(--mw-text-muted-color);
37
- display: inline-flex;
38
- justify-content: center;
39
- align-items: center;
40
- text-decoration: none;
41
- font-size: font-size('md');
42
- border: 2px solid var(--mw-border);
43
- height: spacing('8');
44
- padding: spacing('2') spacing('5');
45
- border-radius: 0;
46
- transform: skew(-30deg);
47
- position: relative;
48
- transition: var(--mw-transition);
49
-
50
- @include tappable;
51
-
52
- &:hover,
53
- &.mw-breadcrumbs-active {
54
- color: var(--mw-primary-text-color);
55
- border-color: var(--mw-primary-text-color);
56
- z-index: z-index('lift');
22
+ &:first-child {
23
+ margin-left: 0;
24
+ a {
25
+ border-radius: radius('md') 0 0 radius('md');
26
+ }
57
27
  }
58
28
 
59
- &:active {
60
- color: var(--mw-primary-text-color);
61
- transition-duration: var(--mw-duration-instant);
29
+ &:last-child {
30
+ a {
31
+ border-radius: 0 radius('md') radius('md') 0;
32
+ }
62
33
  }
63
34
 
64
- @include focus-ring-inset(-4px) {
65
- z-index: z-index('lift');
35
+ a {
36
+ background: var(--mw-card-background);
37
+ color: var(--mw-text-muted-color);
38
+ display: inline-flex;
39
+ justify-content: center;
40
+ align-items: center;
41
+ text-decoration: none;
42
+ font-size: font-size('md');
43
+ border: 2px solid var(--mw-border);
44
+ height: spacing('8');
45
+ padding: spacing('2') spacing('5');
46
+ border-radius: 0;
47
+ transform: skew(-30deg);
48
+ position: relative;
49
+ transition: var(--mw-transition);
50
+
51
+ @include tappable;
52
+
53
+ &:hover,
54
+ &.mw-breadcrumbs-active {
55
+ color: var(--mw-primary-text-color);
56
+ border-color: var(--mw-primary-text-color);
57
+ z-index: z-index('lift');
58
+ }
59
+
60
+ &:active {
61
+ color: var(--mw-primary-text-color);
62
+ transition-duration: var(--mw-duration-instant);
63
+ }
64
+
65
+ @include focus-ring-inset(-4px) {
66
+ z-index: z-index('lift');
67
+ }
68
+
69
+ // Counter-skew the content
70
+ & > * {
71
+ transform: skew(30deg);
72
+ }
66
73
  }
67
74
 
68
- // Counter-skew the content
69
- & > * {
70
- transform: skew(30deg);
75
+ // Current page styling
76
+ &.mw-breadcrumbs-current a,
77
+ &:last-child a {
78
+ color: var(--mw-text-color);
79
+ border-color: var(--mw-primary-text-color);
80
+ cursor: default;
81
+ pointer-events: none;
71
82
  }
72
83
  }
73
84
 
74
- // Current page styling
75
- &.mw-breadcrumbs-current a,
76
- &:last-child a {
77
- color: var(--mw-text-color);
78
- border-color: var(--mw-primary-text-color);
79
- cursor: default;
80
- pointer-events: none;
81
- }
82
- }
83
-
84
- // Size variants
85
- &-sm {
86
- .mw-breadcrumbs-item a {
87
- font-size: font-size('sm');
88
- height: spacing('6');
89
- padding: spacing('0') spacing('4');
90
- }
91
- }
92
-
93
- // Responsive behavior
94
- @include media-down('md') {
95
- .mw-breadcrumbs-item a {
96
- font-size: font-size('xs');
97
- height: spacing('6');
98
- padding: spacing('0') spacing('3');
85
+ &-sm {
86
+ .mw-breadcrumbs-item a {
87
+ font-size: font-size('sm');
88
+ height: spacing('6');
89
+ padding: spacing('0') spacing('4');
90
+ }
99
91
  }
100
- }
101
92
 
102
- @include media-down('lg') {
103
- // Collapse middle items on small screens
104
- &.mw-breadcrumbs-collapse {
105
- .mw-breadcrumbs-item:not(:first-child):not(:last-child):not(
106
- :nth-last-child(2)
107
- ) {
108
- display: none;
93
+ // Responsive behavior
94
+ @include media-down('md') {
95
+ .mw-breadcrumbs-item a {
96
+ font-size: font-size('xs');
97
+ height: spacing('6');
98
+ padding: spacing('0') spacing('3');
109
99
  }
100
+ }
110
101
 
111
- .mw-breadcrumbs-item:nth-last-child(2) a::before {
112
- content: '...';
113
- margin-right: spacing('1');
102
+ @include media-down('lg') {
103
+ // Collapse middle items on small screens
104
+ &.mw-breadcrumbs-collapse {
105
+ .mw-breadcrumbs-item:not(:first-child):not(:last-child):not(
106
+ :nth-last-child(2)
107
+ ) {
108
+ display: none;
109
+ }
110
+
111
+ .mw-breadcrumbs-item:nth-last-child(2) a::before {
112
+ content: '...';
113
+ margin-right: spacing('1');
114
+ }
114
115
  }
115
116
  }
116
117
  }
@@ -1,152 +1,144 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- // Base button bar
4
- .mw-button-bar {
5
- display: flex;
6
- gap: spacing('3');
7
- align-items: center;
8
- justify-content: center;
9
- flex-wrap: wrap;
10
- border: 1px solid var(--mw-border);
11
- border-radius: radius('md');
12
- padding: spacing('2');
13
-
14
- &:hover {
15
- border-color: var(--mw-border-accent);
16
- }
3
+ @layer mw.components {
4
+ .mw-button-bar {
5
+ display: flex;
6
+ gap: spacing('3');
7
+ align-items: center;
8
+ justify-content: center;
9
+ flex-wrap: wrap;
10
+ border: 1px solid var(--mw-border);
11
+ border-radius: radius('md');
12
+ padding: spacing('2');
17
13
 
18
- @include media-down('sm') {
19
- flex-direction: column;
20
- gap: spacing('2');
14
+ &:hover {
15
+ border-color: var(--mw-border-accent);
16
+ }
21
17
 
22
- .mw-btn {
23
- width: 100%;
24
- min-width: 0;
18
+ @include media-down('sm') {
19
+ flex-direction: column;
20
+ gap: spacing('2');
21
+
22
+ .mw-btn {
23
+ width: 100%;
24
+ min-width: 0;
25
+ }
25
26
  }
26
27
  }
27
- }
28
-
29
- // Alignment variants
30
- .mw-button-bar-left {
31
- justify-content: flex-start;
32
- }
33
28
 
34
- .mw-button-bar-right {
35
- justify-content: flex-end;
36
- }
29
+ .mw-button-bar-left {
30
+ justify-content: flex-start;
31
+ }
37
32
 
38
- // Explicit counterpart to the three above - it matches the default, but nobody
39
- // should have to look that up to find out
40
- .mw-button-bar-center {
41
- justify-content: center;
42
- }
33
+ .mw-button-bar-right {
34
+ justify-content: flex-end;
35
+ }
43
36
 
44
- .mw-button-bar-between {
45
- justify-content: space-between;
37
+ // Explicit counterpart to the three above - it matches the default, but nobody
38
+ // should have to look that up to find out
39
+ .mw-button-bar-center {
40
+ justify-content: center;
41
+ }
46
42
 
47
- @include media-down('sm') {
43
+ .mw-button-bar-between {
48
44
  justify-content: center;
45
+
46
+ @include media-up('sm') {
47
+ justify-content: space-between;
48
+ }
49
49
  }
50
- }
51
50
 
52
- // Primary button bar (applies primary styling to all buttons)
53
- .mw-button-bar-primary {
54
- .mw-btn:not([class*='mw-btn-secondary']):not([class*='mw-btn-outline']):not(
55
- [class*='mw-btn-link']
56
- ) {
57
- background: var(--mw-primary-color);
58
- color: var(--mw-primary-accent-text-color);
51
+ .mw-button-bar-primary {
52
+ .mw-btn:not([class*='mw-btn-secondary']):not([class*='mw-btn-outline']):not(
53
+ [class*='mw-btn-link']
54
+ ) {
55
+ background: var(--mw-primary-color);
56
+ color: var(--mw-primary-accent-text-color);
59
57
 
60
- @include btn-solid;
58
+ @include btn-solid;
61
59
 
62
- &:hover:not(:disabled) {
63
- background: var(--mw-primary-color-hover);
60
+ &:hover:not(:disabled) {
61
+ background: var(--mw-primary-color-hover);
62
+ }
64
63
  }
65
64
  }
66
- }
67
65
 
68
- // Secondary button bar (applies secondary styling to all buttons)
69
- .mw-button-bar-secondary {
70
- .mw-btn:not([class*='mw-btn-primary']):not([class*='mw-btn-outline']):not(
71
- [class*='mw-btn-link']
72
- ) {
73
- background: var(--mw-secondary-color);
74
- color: var(--mw-secondary-accent-text-color);
66
+ .mw-button-bar-secondary {
67
+ .mw-btn:not([class*='mw-btn-primary']):not([class*='mw-btn-outline']):not(
68
+ [class*='mw-btn-link']
69
+ ) {
70
+ background: var(--mw-secondary-color);
71
+ color: var(--mw-secondary-accent-text-color);
75
72
 
76
- @include btn-solid;
73
+ @include btn-solid;
77
74
 
78
- &:hover:not(:disabled) {
79
- background: var(--mw-secondary-color-hover);
75
+ &:hover:not(:disabled) {
76
+ background: var(--mw-secondary-color-hover);
77
+ }
80
78
  }
81
79
  }
82
- }
83
-
84
- // Outline button bar
85
- .mw-button-bar-outline {
86
- .mw-btn:not([class*='mw-btn-primary']):not([class*='mw-btn-secondary']):not(
87
- [class*='mw-btn-link']
88
- ) {
89
- background: transparent;
90
- border-color: var(--mw-primary-text-color);
91
- color: var(--mw-primary-text-color);
92
80
 
93
- &:hover:not(:disabled) {
94
- background: var(--mw-primary-color);
95
- color: var(--mw-primary-accent-text-color);
81
+ .mw-button-bar-outline {
82
+ .mw-btn:not([class*='mw-btn-primary']):not([class*='mw-btn-secondary']):not(
83
+ [class*='mw-btn-link']
84
+ ) {
85
+ background: transparent;
86
+ border-color: var(--mw-primary-text-color);
87
+ color: var(--mw-primary-text-color);
88
+
89
+ &:hover:not(:disabled) {
90
+ background: var(--mw-primary-color);
91
+ color: var(--mw-primary-accent-text-color);
92
+ }
96
93
  }
97
94
  }
98
- }
99
95
 
100
- // Mixed button bar for navigation (common pattern)
101
- .mw-button-bar-nav {
102
- justify-content: space-between;
96
+ .mw-button-bar-nav {
97
+ justify-content: space-between;
103
98
 
104
- // First and last buttons get outline style
105
- .mw-btn:first-child:not([class*='mw-btn-']),
106
- .mw-btn:last-child:not([class*='mw-btn-']) {
107
- background: transparent;
108
- border-color: var(--mw-primary-text-color);
109
- color: var(--mw-primary-text-color);
99
+ .mw-btn:first-child:not([class*='mw-btn-']),
100
+ .mw-btn:last-child:not([class*='mw-btn-']) {
101
+ background: transparent;
102
+ border-color: var(--mw-primary-text-color);
103
+ color: var(--mw-primary-text-color);
110
104
 
111
- &:hover:not(:disabled) {
112
- background: var(--mw-primary-color);
113
- color: var(--mw-primary-accent-text-color);
105
+ &:hover:not(:disabled) {
106
+ background: var(--mw-primary-color);
107
+ color: var(--mw-primary-accent-text-color);
108
+ }
114
109
  }
115
- }
116
110
 
117
- // Middle button(s) get primary style
118
- .mw-btn:not(:first-child):not(:last-child):not([class*='mw-btn-']) {
119
- background: var(--mw-primary-color);
120
- color: var(--mw-primary-accent-text-color);
111
+ .mw-btn:not(:first-child):not(:last-child):not([class*='mw-btn-']) {
112
+ background: var(--mw-primary-color);
113
+ color: var(--mw-primary-accent-text-color);
121
114
 
122
- @include btn-solid;
115
+ @include btn-solid;
123
116
 
124
- &:hover:not(:disabled) {
125
- background: var(--mw-primary-color-hover);
117
+ &:hover:not(:disabled) {
118
+ background: var(--mw-primary-color-hover);
119
+ }
126
120
  }
127
121
  }
128
- }
129
122
 
130
- // Compact variant with smaller spacing
131
- .mw-button-bar-sm {
132
- gap: spacing('2');
133
-
134
- @include media-down('sm') {
123
+ .mw-button-bar-sm {
135
124
  gap: spacing('1');
136
- }
137
- }
138
125
 
139
- // Large variant with bigger spacing and larger buttons
140
- .mw-button-bar-lg {
141
- gap: spacing('4');
142
-
143
- .mw-btn {
144
- padding: spacing('3') spacing('5');
145
- font-size: font-size('md');
146
- min-height: var(--mw-control-height-lg);
126
+ @include media-up('sm') {
127
+ gap: spacing('2');
128
+ }
147
129
  }
148
130
 
149
- @include media-down('sm') {
131
+ .mw-button-bar-lg {
150
132
  gap: spacing('3');
133
+
134
+ .mw-btn {
135
+ padding: spacing('3') spacing('5');
136
+ font-size: font-size('md');
137
+ min-height: var(--mw-control-height-lg);
138
+ }
139
+
140
+ @include media-up('sm') {
141
+ gap: spacing('4');
142
+ }
151
143
  }
152
144
  }