maverick-wave 3.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 (141) hide show
  1. package/.claude/commands/mw.md +580 -0
  2. package/.claude/settings.local.json +11 -0
  3. package/.idea/codeStyles/Project.xml +59 -0
  4. package/.idea/codeStyles/codeStyleConfig.xml +5 -0
  5. package/.idea/maverick-wave.iml +12 -0
  6. package/.idea/modules.xml +8 -0
  7. package/.idea/prettier.xml +6 -0
  8. package/.idea/vcs.xml +6 -0
  9. package/.prettierignore +6 -0
  10. package/.prettierrc.json +7 -0
  11. package/CHANGELOG.md +420 -0
  12. package/CLAUDE.md +53 -0
  13. package/LICENSE +21 -0
  14. package/README.md +191 -0
  15. package/gulpfile.js +158 -0
  16. package/index.html +472 -0
  17. package/maverick-wave.min.css +1 -0
  18. package/maverick-wave.min.js +1 -0
  19. package/package.json +52 -0
  20. package/release.sh +17 -0
  21. package/src/assets/favicon/android-chrome-192x192.png +0 -0
  22. package/src/assets/favicon/android-chrome-512x512.png +0 -0
  23. package/src/assets/favicon/apple-touch-icon.png +0 -0
  24. package/src/assets/favicon/favicon-16x16.png +0 -0
  25. package/src/assets/favicon/favicon-32x32.png +0 -0
  26. package/src/assets/favicon/site.webmanifest +1 -0
  27. package/src/assets/favicon.ico +0 -0
  28. package/src/assets/header-logo.svg +24 -0
  29. package/src/js/main.js +587 -0
  30. package/src/partials/accordions-container.html +163 -0
  31. package/src/partials/alerts-container.html +120 -0
  32. package/src/partials/avatars-container.html +84 -0
  33. package/src/partials/blog-posts-container.html +157 -0
  34. package/src/partials/breadcrumbs-container.html +126 -0
  35. package/src/partials/button-bar-container.html +168 -0
  36. package/src/partials/buttons-container.html +133 -0
  37. package/src/partials/cards-container.html +508 -0
  38. package/src/partials/code-container.html +194 -0
  39. package/src/partials/colors-container.html +125 -0
  40. package/src/partials/coming-soon-container.html +6 -0
  41. package/src/partials/content-slider-container.html +47 -0
  42. package/src/partials/divider-container.html +52 -0
  43. package/src/partials/documentation-container.html +161 -0
  44. package/src/partials/empty-state-container.html +74 -0
  45. package/src/partials/footer-container.html +113 -0
  46. package/src/partials/form-container.html +257 -0
  47. package/src/partials/form-elements-container.html +595 -0
  48. package/src/partials/form-field-container.html +141 -0
  49. package/src/partials/gallery-container.html +49 -0
  50. package/src/partials/get-started-container.html +294 -0
  51. package/src/partials/grid-container.html +171 -0
  52. package/src/partials/header-container.html +49 -0
  53. package/src/partials/header-utilities-container.html +80 -0
  54. package/src/partials/home-container.html +48 -0
  55. package/src/partials/html-lists-container.html +58 -0
  56. package/src/partials/info-container.html +87 -0
  57. package/src/partials/input-group-container.html +285 -0
  58. package/src/partials/item-lists-container.html +413 -0
  59. package/src/partials/login-container.html +61 -0
  60. package/src/partials/meta-info-container.html +16 -0
  61. package/src/partials/modals-container.html +136 -0
  62. package/src/partials/pagination-container.html +27 -0
  63. package/src/partials/panels-container.html +196 -0
  64. package/src/partials/progress-container.html +226 -0
  65. package/src/partials/ratings-container.html +104 -0
  66. package/src/partials/skeleton-container.html +82 -0
  67. package/src/partials/spinners-container.html +92 -0
  68. package/src/partials/stepper-container.html +107 -0
  69. package/src/partials/tables-container.html +120 -0
  70. package/src/partials/tabs-container.html +263 -0
  71. package/src/partials/tags-container.html +168 -0
  72. package/src/partials/techstack-bucket-container.html +174 -0
  73. package/src/partials/tiles-container.html +245 -0
  74. package/src/partials/timelines-container.html +196 -0
  75. package/src/partials/typography-container.html +66 -0
  76. package/src/partials/utilities-container.html +85 -0
  77. package/src/scss/abstracts/_functions.scss +37 -0
  78. package/src/scss/abstracts/_index.scss +3 -0
  79. package/src/scss/abstracts/_mixins.scss +45 -0
  80. package/src/scss/abstracts/_variables.scss +222 -0
  81. package/src/scss/base/_base.scss +165 -0
  82. package/src/scss/base/_index.scss +3 -0
  83. package/src/scss/base/_reset.scss +75 -0
  84. package/src/scss/base/_typography.scss +230 -0
  85. package/src/scss/components/_accordions.scss +91 -0
  86. package/src/scss/components/_alerts.scss +105 -0
  87. package/src/scss/components/_avatars.scss +123 -0
  88. package/src/scss/components/_blog-post.scss +268 -0
  89. package/src/scss/components/_breadcrumbs.scss +108 -0
  90. package/src/scss/components/_button-bar.scss +139 -0
  91. package/src/scss/components/_buttons.scss +164 -0
  92. package/src/scss/components/_cards.scss +316 -0
  93. package/src/scss/components/_code.scss +252 -0
  94. package/src/scss/components/_coming-soon.scss +92 -0
  95. package/src/scss/components/_content-slider.scss +119 -0
  96. package/src/scss/components/_divider.scss +70 -0
  97. package/src/scss/components/_empty-state.scss +73 -0
  98. package/src/scss/components/_gallery.scss +158 -0
  99. package/src/scss/components/_index.scss +33 -0
  100. package/src/scss/components/_info.scss +143 -0
  101. package/src/scss/components/_lists.scss +653 -0
  102. package/src/scss/components/_localhost-indicator.scss +29 -0
  103. package/src/scss/components/_meta-info.scss +34 -0
  104. package/src/scss/components/_modals.scss +118 -0
  105. package/src/scss/components/_pagination.scss +99 -0
  106. package/src/scss/components/_panels.scss +112 -0
  107. package/src/scss/components/_progress.scss +107 -0
  108. package/src/scss/components/_ratings.scss +47 -0
  109. package/src/scss/components/_skeleton.scss +90 -0
  110. package/src/scss/components/_spinners.scss +208 -0
  111. package/src/scss/components/_stepper.scss +145 -0
  112. package/src/scss/components/_tables.scss +127 -0
  113. package/src/scss/components/_tabs.scss +146 -0
  114. package/src/scss/components/_tags.scss +93 -0
  115. package/src/scss/components/_techstack-bucket.scss +145 -0
  116. package/src/scss/components/_theme-toggle.scss +50 -0
  117. package/src/scss/components/_tiles.scss +217 -0
  118. package/src/scss/components/_timelines.scss +339 -0
  119. package/src/scss/form-elements/_checkbox.scss +174 -0
  120. package/src/scss/form-elements/_form.scss +122 -0
  121. package/src/scss/form-elements/_index.scss +10 -0
  122. package/src/scss/form-elements/_input-group.scss +103 -0
  123. package/src/scss/form-elements/_input.scss +72 -0
  124. package/src/scss/form-elements/_login.scss +62 -0
  125. package/src/scss/form-elements/_radio.scss +144 -0
  126. package/src/scss/form-elements/_select.scss +56 -0
  127. package/src/scss/form-elements/_slider.scss +174 -0
  128. package/src/scss/form-elements/_textarea.scss +74 -0
  129. package/src/scss/form-elements/_toggle.scss +174 -0
  130. package/src/scss/layout/_footer.scss +214 -0
  131. package/src/scss/layout/_grid.scss +287 -0
  132. package/src/scss/layout/_header.scss +441 -0
  133. package/src/scss/layout/_home.scss +40 -0
  134. package/src/scss/layout/_index.scss +6 -0
  135. package/src/scss/layout/_main.scss +116 -0
  136. package/src/scss/layout/_section.scss +89 -0
  137. package/src/scss/main.scss +5 -0
  138. package/src/scss/utilities/_display.scss +35 -0
  139. package/src/scss/utilities/_flex.scss +66 -0
  140. package/src/scss/utilities/_index.scss +3 -0
  141. package/src/scss/utilities/_spacing.scss +78 -0
@@ -0,0 +1,123 @@
1
+ @use '../abstracts' as *;
2
+
3
+ $_mw-avatar-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-avatar {
13
+ display: inline-flex;
14
+ position: relative;
15
+ border-radius: 50%;
16
+ overflow: hidden;
17
+ border: 3px solid var(--mw-border);
18
+ box-shadow: 0 6px 15px var(--mw-shadow);
19
+ margin: spacing('1');
20
+
21
+ // Standard (md)
22
+ width: 96px;
23
+ height: 96px;
24
+ flex-shrink: 0; // Prevents the avatar from shrinking
25
+ flex-grow: 0; // Prevents the avatar from growing
26
+
27
+ img {
28
+ width: 100%;
29
+ height: 100%;
30
+ object-fit: cover;
31
+ display: block;
32
+ }
33
+
34
+ // Sizes
35
+ &-xs {
36
+ width: 32px;
37
+ height: 32px;
38
+ border-width: 2px;
39
+ }
40
+
41
+ &-sm {
42
+ width: 64px;
43
+ height: 64px;
44
+ border-width: 2px;
45
+ }
46
+
47
+ &-lg {
48
+ width: 144px;
49
+ height: 144px;
50
+ border-width: 5px;
51
+ }
52
+
53
+ &-xl {
54
+ width: 250px;
55
+ height: 250px;
56
+ border-width: 7px;
57
+ }
58
+
59
+ // Square
60
+ &-square {
61
+ border-radius: radius('sm');
62
+ }
63
+
64
+ // Groups
65
+ &-group {
66
+ display: flex;
67
+ flex-wrap: wrap; // Allow items to wrap to next line
68
+ justify-content: flex-start;
69
+ margin: spacing('1');
70
+
71
+ .mw-avatar {
72
+ margin-right: -15px;
73
+ margin-bottom: -15px;
74
+ border: 2px solid var(--mw-secondary-color);
75
+ transition: transform 0.3s ease;
76
+
77
+ &:hover {
78
+ transform: translateY(-5px);
79
+ z-index: z-index('lift');
80
+ }
81
+
82
+ &:last-child {
83
+ margin-right: spacing('0');
84
+ }
85
+ }
86
+
87
+ // Group sizes
88
+ &-sm .mw-avatar {
89
+ margin-right: -10px;
90
+ }
91
+
92
+ &-lg .mw-avatar {
93
+ margin-right: -20px;
94
+ }
95
+
96
+ @include media-down('sm') {
97
+ // For small screens, create a more compact layout
98
+ .mw-avatar {
99
+ margin-right: -10px; // Reduce overlap on small screens
100
+ }
101
+ }
102
+ }
103
+
104
+ @include media-down('sm') {
105
+ &-lg {
106
+ width: 120px;
107
+ height: 120px;
108
+ border-width: 4px;
109
+ }
110
+
111
+ &-xl {
112
+ width: 170px;
113
+ height: 170px;
114
+ border-width: 6px;
115
+ }
116
+ }
117
+ }
118
+
119
+ @each $name, $col in $_mw-avatar-colors {
120
+ .mw-avatar-#{$name} {
121
+ border-color: #{$col};
122
+ }
123
+ }
@@ -0,0 +1,268 @@
1
+ @use '../abstracts' as *;
2
+
3
+ .mw-blog-post {
4
+ margin: spacing('1');
5
+ padding: spacing('3') spacing('5');
6
+ animation: pageReveal 1.6s ease-out forwards;
7
+ border-radius: radius('sm') radius('2xl') radius('sm') radius('2xl');
8
+ box-shadow:
9
+ var(--mw-border) 0 30px 60px -18px inset,
10
+ var(--mw-border) 0 18px 36px -18px inset;
11
+
12
+ @keyframes pageReveal {
13
+ 0% {
14
+ opacity: 0;
15
+ transform: translateY(-30px) rotateX(10deg);
16
+ transform-origin: top;
17
+ }
18
+ 100% {
19
+ opacity: 1;
20
+ transform: translateY(0) rotateX(0);
21
+ transform-origin: top;
22
+ }
23
+ }
24
+
25
+ // Book-like left border
26
+ &::before {
27
+ content: '';
28
+ position: absolute;
29
+ left: 1px;
30
+ top: 1px;
31
+ width: 7px;
32
+ height: 99%;
33
+ background: linear-gradient(
34
+ to bottom,
35
+ var(--mw-primary-color),
36
+ var(--mw-secondary-color)
37
+ );
38
+ border-radius: radius('sm');
39
+ }
40
+
41
+ &-title {
42
+ margin-bottom: spacing('6');
43
+ text-align: start;
44
+ position: relative;
45
+
46
+ &::after {
47
+ content: '';
48
+ position: absolute;
49
+ bottom: spacing('-2');
50
+ left: spacing('0');
51
+ width: 200px;
52
+ height: 5px;
53
+ background: var(--mw-primary-color);
54
+ }
55
+ }
56
+
57
+ &-header {
58
+ margin-bottom: spacing('5');
59
+ position: relative;
60
+
61
+ &-icon {
62
+ width: 60px;
63
+ height: 60px;
64
+ border-radius: radius('full');
65
+ background: var(--mw-primary-color);
66
+ color: var(--mw-primary-text-color);
67
+ display: flex;
68
+ align-items: center;
69
+ justify-content: center;
70
+ margin-bottom: spacing('4');
71
+ font-size: font-size('xl');
72
+ box-shadow: 0 5px 9px var(--mw-shadow);
73
+ animation: iconFlip 2s ease-out forwards;
74
+
75
+ @keyframes iconFlip {
76
+ 0% {
77
+ transform: rotateY(90deg);
78
+ }
79
+ 100% {
80
+ transform: rotateY(0);
81
+ }
82
+ }
83
+ }
84
+ }
85
+
86
+ &-meta {
87
+ display: flex;
88
+ flex-wrap: wrap;
89
+ align-items: center;
90
+ margin-bottom: spacing('6');
91
+ font-size: font-size('sm');
92
+ color: var(--mw-text-muted-color);
93
+ row-gap: spacing('1');
94
+
95
+ @include media-down('sm') {
96
+ flex-direction: column;
97
+ gap: spacing('2');
98
+ margin-top: spacing('5');
99
+ align-items: start;
100
+ }
101
+
102
+ &-item {
103
+ display: inline-flex;
104
+ align-items: center;
105
+ row-gap: spacing('1');
106
+ gap: spacing('2');
107
+ &:not(:first-child) {
108
+ margin-left: spacing('9');
109
+ @include media-down('sm') {
110
+ margin-left: spacing('0');
111
+ }
112
+ }
113
+
114
+ i {
115
+ color: var(--mw-primary-color);
116
+ flex-shrink: 0;
117
+ }
118
+ }
119
+ }
120
+
121
+ &-featured-image {
122
+ width: 100%;
123
+ max-height: 400px;
124
+ object-fit: contain;
125
+ border-radius: radius('sm');
126
+ margin-bottom: spacing('5');
127
+ box-shadow: 0 5px 12px var(--mw-shadow);
128
+ }
129
+
130
+ // Content section
131
+ &-content {
132
+ line-height: 1.6;
133
+
134
+ h2 {
135
+ font-size: font-size('3xl');
136
+ margin: spacing('5') spacing('1') spacing('4') spacing('1');
137
+
138
+ @include media-down('md') {
139
+ font-size: font-size('2xl');
140
+ }
141
+ }
142
+
143
+ h3 {
144
+ font-size: font-size('2xl');
145
+ margin: spacing('4') spacing('1') spacing('3') spacing('1');
146
+
147
+ @include media-down('md') {
148
+ font-size: font-size('xl');
149
+ }
150
+ }
151
+
152
+ h4 {
153
+ font-size: font-size('xl');
154
+ margin: spacing('3') spacing('2') spacing('2') spacing('2');
155
+
156
+ @include media-down('md') {
157
+ font-size: font-size('lg');
158
+ }
159
+ }
160
+
161
+ h5 {
162
+ font-size: font-size('lg');
163
+ margin: spacing('3') spacing('3') spacing('2') spacing('3');
164
+
165
+ @include media-down('md') {
166
+ font-size: font-size('md');
167
+ }
168
+ }
169
+ }
170
+
171
+ &-content-markdown {
172
+ @extend .mw-blog-post-content;
173
+
174
+ a {
175
+ display: inline-block;
176
+ position: relative;
177
+ color: var(--mw-text-muted-color);
178
+ text-decoration: none;
179
+ padding-bottom: 2px;
180
+
181
+ // subtle default underline via box‐shadow
182
+ &::after {
183
+ content: '';
184
+ position: absolute;
185
+ left: 0;
186
+ bottom: 1px;
187
+ width: 100%;
188
+ height: 1px;
189
+ background: currentColor;
190
+ opacity: 0.4;
191
+ transform: scaleX(1);
192
+ transform-origin: left;
193
+ transition:
194
+ transform 0.2s ease,
195
+ opacity 0.2s ease;
196
+ }
197
+
198
+ &:hover {
199
+ color: var(--mw-primary-color);
200
+ &::after {
201
+ opacity: 1;
202
+ height: 2px;
203
+ transform: scaleX(1.1);
204
+ }
205
+ }
206
+ }
207
+
208
+ ul {
209
+ list-style: disc;
210
+ ul {
211
+ list-style: circle;
212
+ margin: spacing('1') spacing('1') spacing('2') spacing('3');
213
+ ul {
214
+ list-style: square;
215
+ margin: spacing('1') spacing('1') spacing('2') spacing('3');
216
+ }
217
+ }
218
+ }
219
+
220
+ ul,
221
+ ol {
222
+ margin: spacing('3') spacing('0') spacing('3') spacing('4');
223
+ }
224
+
225
+ pre {
226
+ border: 1px solid var(--mw-border);
227
+ background: var(--mw-card-background);
228
+ }
229
+
230
+ img {
231
+ max-width: 100%;
232
+ border-radius: radius('md');
233
+ margin: spacing('5') spacing('0');
234
+ }
235
+ }
236
+
237
+ // Footer section
238
+ &-footer {
239
+ margin-top: spacing('6');
240
+ padding-top: spacing('3');
241
+ border-top: 1px solid var(--mw-secondary-color);
242
+ display: flex;
243
+ justify-content: space-between;
244
+ align-items: center;
245
+
246
+ @include media-down('sm') {
247
+ flex-direction: column;
248
+ gap: spacing('2');
249
+ }
250
+
251
+ &-button {
252
+ transition: var(--mw-transition);
253
+ color: var(--mw-primary-color);
254
+
255
+ &:hover {
256
+ transform: translateX(-7px);
257
+ }
258
+
259
+ &.next {
260
+ flex-direction: row-reverse;
261
+
262
+ &:hover {
263
+ transform: translateX(7px);
264
+ }
265
+ }
266
+ }
267
+ }
268
+ }
@@ -0,0 +1,108 @@
1
+ @use '../abstracts' as *;
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 {
11
+ display: flex;
12
+ align-items: center;
13
+ margin: spacing('0');
14
+ padding: spacing('0');
15
+ list-style: none;
16
+ }
17
+
18
+ &-item {
19
+ margin-left: -2px;
20
+
21
+ &:first-child {
22
+ margin-left: 0;
23
+ a {
24
+ border-radius: radius('md') 0 0 radius('md');
25
+ }
26
+ }
27
+
28
+ &:last-child {
29
+ a {
30
+ border-radius: 0 radius('md') radius('md') 0;
31
+ }
32
+ }
33
+
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('7');
44
+ padding: spacing('0') spacing('5');
45
+ border-radius: 0;
46
+ transform: skew(-30deg);
47
+ position: relative;
48
+ transition: var(--mw-transition);
49
+
50
+ &:hover,
51
+ &:focus,
52
+ &.mw-breadcrumbs-active {
53
+ outline: 0;
54
+ color: var(--mw-primary-color);
55
+ border-color: var(--mw-primary-color);
56
+ z-index: z-index('lift');
57
+ }
58
+
59
+ // Counter-skew the content
60
+ & > * {
61
+ transform: skew(30deg);
62
+ }
63
+ }
64
+
65
+ // Current page styling
66
+ &.mw-breadcrumbs-current a,
67
+ &:last-child a {
68
+ color: var(--mw-text-color);
69
+ border-color: var(--mw-primary-color);
70
+ cursor: default;
71
+ pointer-events: none;
72
+ }
73
+ }
74
+
75
+ // Size variants
76
+ &-sm {
77
+ .mw-breadcrumbs-item a {
78
+ font-size: font-size('sm');
79
+ height: spacing('6');
80
+ padding: spacing('0') spacing('4');
81
+ }
82
+ }
83
+
84
+ // Responsive behavior
85
+ @include media-down('md') {
86
+ .mw-breadcrumbs-item a {
87
+ font-size: font-size('xs');
88
+ height: spacing('6');
89
+ padding: spacing('0') spacing('3');
90
+ }
91
+ }
92
+
93
+ @include media-down('lg') {
94
+ // Collapse middle items on small screens
95
+ &.mw-breadcrumbs-collapse {
96
+ .mw-breadcrumbs-item:not(:first-child):not(:last-child):not(
97
+ :nth-last-child(2)
98
+ ) {
99
+ display: none;
100
+ }
101
+
102
+ .mw-breadcrumbs-item:nth-last-child(2) a::before {
103
+ content: '...';
104
+ margin-right: spacing('1');
105
+ }
106
+ }
107
+ }
108
+ }
@@ -0,0 +1,139 @@
1
+ @use '../abstracts' as *;
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-primary-color-hover);
16
+ }
17
+
18
+ @include media-down('sm') {
19
+ flex-direction: column;
20
+ gap: spacing('2');
21
+
22
+ .mw-btn {
23
+ width: 96%;
24
+ min-width: 200px;
25
+ }
26
+ }
27
+ }
28
+
29
+ // Alignment variants
30
+ .mw-button-bar-left {
31
+ justify-content: flex-start;
32
+ }
33
+
34
+ .mw-button-bar-right {
35
+ justify-content: flex-end;
36
+ }
37
+
38
+ .mw-button-bar-between {
39
+ justify-content: space-between;
40
+
41
+ @include media-down('sm') {
42
+ justify-content: center;
43
+ }
44
+ }
45
+
46
+ // Primary button bar (applies primary styling to all buttons)
47
+ .mw-button-bar-primary {
48
+ .mw-btn:not([class*='mw-btn-secondary']):not([class*='mw-btn-outline']):not(
49
+ [class*='mw-btn-link']
50
+ ) {
51
+ background: var(--mw-primary-color);
52
+ color: var(--mw-primary-text-color);
53
+
54
+ &:hover:not(:disabled) {
55
+ background: var(--mw-primary-color-hover);
56
+ }
57
+ }
58
+ }
59
+
60
+ // Secondary button bar (applies secondary styling to all buttons)
61
+ .mw-button-bar-secondary {
62
+ .mw-btn:not([class*='mw-btn-primary']):not([class*='mw-btn-outline']):not(
63
+ [class*='mw-btn-link']
64
+ ) {
65
+ background: var(--mw-secondary-color);
66
+ color: var(--mw-primary-text-color);
67
+
68
+ &:hover:not(:disabled) {
69
+ background: var(--mw-secondary-color-hover);
70
+ }
71
+ }
72
+ }
73
+
74
+ // Outline button bar
75
+ .mw-button-bar-outline {
76
+ .mw-btn:not([class*='mw-btn-primary']):not([class*='mw-btn-secondary']):not(
77
+ [class*='mw-btn-link']
78
+ ) {
79
+ background: transparent;
80
+ border-color: var(--mw-primary-color);
81
+ color: var(--mw-primary-color);
82
+
83
+ &:hover:not(:disabled) {
84
+ background: var(--mw-primary-color);
85
+ color: var(--mw-primary-text-color);
86
+ }
87
+ }
88
+ }
89
+
90
+ // Mixed button bar for navigation (common pattern)
91
+ .mw-button-bar-nav {
92
+ justify-content: space-between;
93
+
94
+ // First and last buttons get outline style
95
+ .mw-btn:first-child:not([class*='mw-btn-']),
96
+ .mw-btn:last-child:not([class*='mw-btn-']) {
97
+ background: transparent;
98
+ border-color: var(--mw-primary-color);
99
+ color: var(--mw-primary-color);
100
+
101
+ &:hover:not(:disabled) {
102
+ background: var(--mw-primary-color);
103
+ color: var(--mw-primary-text-color);
104
+ }
105
+ }
106
+
107
+ // Middle button(s) get primary style
108
+ .mw-btn:not(:first-child):not(:last-child):not([class*='mw-btn-']) {
109
+ background: var(--mw-primary-color);
110
+ color: var(--mw-primary-text-color);
111
+
112
+ &:hover:not(:disabled) {
113
+ background: var(--mw-primary-color-hover);
114
+ }
115
+ }
116
+ }
117
+
118
+ // Compact variant with smaller spacing
119
+ .mw-button-bar-sm {
120
+ gap: spacing('2');
121
+
122
+ @include media-down('sm') {
123
+ gap: spacing('1');
124
+ }
125
+ }
126
+
127
+ // Large variant with bigger spacing and larger buttons
128
+ .mw-button-bar-lg {
129
+ gap: spacing('4');
130
+
131
+ .mw-btn {
132
+ padding: spacing('3') spacing('5');
133
+ font-size: font-size('md');
134
+ }
135
+
136
+ @include media-down('sm') {
137
+ gap: spacing('3');
138
+ }
139
+ }