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,346 +1,348 @@
1
1
  @use '../abstracts' as *;
2
2
 
3
- $_border-width-big: 4px;
4
- $_border-width-simple: 3px;
5
- $_simple-date-width: 110px;
6
-
7
- @keyframes mw-slide-in-left {
8
- from {
9
- opacity: 0;
10
- transform: translateX(-60px);
11
- }
12
- to {
13
- opacity: 1;
14
- transform: translateX(0);
15
- }
16
- }
17
-
18
- @keyframes mw-slide-in-right {
19
- from {
20
- opacity: 0;
21
- transform: translateX(60px);
22
- }
23
- to {
24
- opacity: 1;
25
- transform: translateX(0);
3
+ @layer mw.components {
4
+ $_border-width-big: 4px;
5
+ $_border-width-simple: 3px;
6
+ $_simple-date-width: 110px;
7
+
8
+ @keyframes mw-slide-in-left {
9
+ from {
10
+ opacity: 0;
11
+ transform: translateX(-60px);
12
+ }
13
+ to {
14
+ opacity: 1;
15
+ transform: translateX(0);
16
+ }
26
17
  }
27
- }
28
18
 
29
- @keyframes mw-pulse-ring-big {
30
- 0% {
31
- box-shadow: 0 0 0 0 var(--mw-primary-text-color);
32
- }
33
- 70% {
34
- box-shadow: 0 0 0 13px transparent;
35
- }
36
- 100% {
37
- box-shadow: 0 0 0 0 transparent;
19
+ @keyframes mw-slide-in-right {
20
+ from {
21
+ opacity: 0;
22
+ transform: translateX(60px);
23
+ }
24
+ to {
25
+ opacity: 1;
26
+ transform: translateX(0);
27
+ }
38
28
  }
39
- }
40
29
 
41
- @keyframes mw-pulse-ring-simple {
42
- 0% {
43
- box-shadow: 0 0 0 0 var(--mw-primary-text-color);
44
- }
45
- 70% {
46
- box-shadow: 0 0 0 5px transparent;
47
- }
48
- 100% {
49
- box-shadow: 0 0 0 0 transparent;
50
- }
51
- }
52
-
53
- // Big
54
- .mw-timeline-big {
55
- position: relative;
56
- margin: spacing('1') auto;
57
- padding: spacing('5') 0;
58
- width: min(100%, 900px);
59
-
60
- // Center vertical line
61
- &::before {
62
- content: '';
63
- position: absolute;
64
- left: 50%;
65
- top: 0;
66
- width: $_border-width-big;
67
- height: 100%;
68
- background: var(--mw-primary-text-color);
69
- transform: translateX(-50%);
30
+ @keyframes mw-pulse-ring-big {
31
+ 0% {
32
+ box-shadow: 0 0 0 0 var(--mw-primary-text-color);
33
+ }
34
+ 70% {
35
+ box-shadow: 0 0 0 13px transparent;
36
+ }
37
+ 100% {
38
+ box-shadow: 0 0 0 0 transparent;
39
+ }
70
40
  }
71
41
 
72
- &-step {
73
- display: flex;
74
- flex-direction: column;
75
- align-items: center;
76
- margin: spacing('7') 0;
42
+ @keyframes mw-pulse-ring-simple {
43
+ 0% {
44
+ box-shadow: 0 0 0 0 var(--mw-primary-text-color);
45
+ }
46
+ 70% {
47
+ box-shadow: 0 0 0 5px transparent;
48
+ }
49
+ 100% {
50
+ box-shadow: 0 0 0 0 transparent;
51
+ }
77
52
  }
78
53
 
79
- &-date-container {
54
+ // Big
55
+ .mw-timeline-big {
80
56
  position: relative;
81
- z-index: z-index('card');
82
- border: $_border-width-big solid var(--mw-primary-text-color);
83
- background: var(--mw-card-background);
84
- border-radius: radius('md');
85
- padding: spacing('3') spacing('4');
86
- display: flex;
87
- align-items: center;
88
- justify-content: center;
89
- gap: spacing('2');
90
- cursor: default;
91
- transition: transform var(--mw-duration-fast) var(--mw-ease-out);
92
- margin-bottom: spacing('4');
93
- }
57
+ margin: spacing('1') auto;
58
+ padding: spacing('5') 0;
59
+ width: min(100%, 900px);
94
60
 
95
- &-date-main {
96
- font-size: font-size('sm');
97
- color: var(--mw-text-color);
98
- line-height: 1.2;
99
- }
100
-
101
- &-date-sub {
102
- font-size: font-size('xs');
103
- color: var(--mw-text-muted-color);
104
- margin-left: spacing('2');
105
- }
106
-
107
- &-content {
108
- width: 50%;
109
- display: flex;
110
- flex-direction: column;
111
- opacity: 0;
112
- animation-duration: var(--mw-duration-slower);
113
- animation-fill-mode: forwards;
114
- }
115
-
116
- &-event {
117
- margin-top: spacing('4');
118
- padding: spacing('2') spacing('3');
119
- background: var(--mw-card-background);
120
- box-shadow: var(--mw-elevation-2);
121
- border-radius: radius('sm');
122
- cursor: default;
123
-
124
- &-date {
125
- display: block;
126
- font-size: font-size('sm');
127
- font-weight: font-weight('bold');
128
- color: var(--mw-text-color);
129
- margin-bottom: spacing('1');
130
- text-transform: uppercase;
131
- letter-spacing: 0.5px;
61
+ // Center vertical line
62
+ &::before {
63
+ content: '';
64
+ position: absolute;
65
+ left: 50%;
66
+ top: 0;
67
+ width: $_border-width-big;
68
+ height: 100%;
69
+ background: var(--mw-primary-text-color);
70
+ transform: translateX(-50%);
132
71
  }
133
72
 
134
- &-title {
135
- font-size: font-size('base');
136
- font-weight: font-weight('normal');
137
- line-height: 1.2;
138
- color: var(--mw-text-color);
73
+ &-step {
74
+ display: flex;
75
+ flex-direction: column;
76
+ align-items: center;
77
+ margin: spacing('7') 0;
139
78
  }
140
- }
141
79
 
142
- // Odd steps: content on the left
143
- &-step:nth-child(odd) &-content {
144
- align-self: flex-start;
145
- padding-right: spacing('5');
146
- text-align: right;
147
- align-items: flex-end;
148
- animation-name: mw-slide-in-left;
149
-
150
- .mw-timeline-big-event {
151
- border-right: 2px solid var(--mw-secondary-text-color);
152
- border-top-right-radius: radius('none');
153
- border-bottom-right-radius: radius('none');
154
- text-align: right;
80
+ &-date-container {
81
+ position: relative;
82
+ z-index: z-index('card');
83
+ border: $_border-width-big solid var(--mw-primary-text-color);
84
+ background: var(--mw-card-background);
85
+ border-radius: radius('md');
86
+ padding: spacing('3') spacing('4');
87
+ display: flex;
88
+ align-items: center;
89
+ justify-content: center;
90
+ gap: spacing('2');
91
+ cursor: default;
92
+ transition: transform var(--mw-duration-fast) var(--mw-ease-out);
93
+ margin-bottom: spacing('4');
155
94
  }
156
- }
157
95
 
158
- // Even steps: content on the right
159
- &-step:nth-child(even) &-content {
160
- align-self: flex-end;
161
- padding-left: spacing('5');
162
- text-align: left;
163
- align-items: flex-start;
164
- animation-name: mw-slide-in-right;
165
-
166
- .mw-timeline-big-event {
167
- border-left: 2px solid var(--mw-secondary-text-color);
168
- border-top-left-radius: radius('none');
169
- border-bottom-left-radius: radius('none');
170
- text-align: left;
96
+ &-date-main {
97
+ font-size: font-size('sm');
98
+ color: var(--mw-text-color);
99
+ line-height: 1.2;
171
100
  }
172
- }
173
101
 
174
- // Staggered animation delays
175
- @for $i from 1 through 10 {
176
- &-step:nth-child(#{$i}) &-content {
177
- animation-delay: $i * 0.3s;
102
+ &-date-sub {
103
+ font-size: font-size('xs');
104
+ color: var(--mw-text-muted-color);
105
+ margin-left: spacing('2');
178
106
  }
179
- }
180
107
 
181
- // Active step
182
- &-step.mw-active &-date-container,
183
- &-step.active &-date-container {
184
- background: var(--mw-primary-color);
185
- border-color: var(--mw-primary-text-color);
186
- transform: scale(1.1);
187
- animation: mw-pulse-ring-big 2s infinite;
188
-
189
- .mw-timeline-big-date-main,
190
- .mw-timeline-big-date-sub {
191
- color: var(--mw-primary-accent-text-color);
108
+ &-content {
109
+ width: 50%;
110
+ display: flex;
111
+ flex-direction: column;
112
+ opacity: 0;
113
+ animation-duration: var(--mw-duration-slower);
114
+ animation-fill-mode: forwards;
192
115
  }
193
- }
194
-
195
- @include media-down('sm') {
196
- width: 100%;
197
116
 
198
- // Line moves to the left
199
- &::before {
200
- left: 0;
201
- transform: none;
202
- }
117
+ &-event {
118
+ margin-top: spacing('4');
119
+ padding: spacing('2') spacing('3');
120
+ background: var(--mw-card-background);
121
+ box-shadow: var(--mw-elevation-2);
122
+ border-radius: radius('sm');
123
+ cursor: default;
124
+
125
+ &-date {
126
+ display: block;
127
+ font-size: font-size('sm');
128
+ font-weight: font-weight('bold');
129
+ color: var(--mw-text-color);
130
+ margin-bottom: spacing('1');
131
+ text-transform: uppercase;
132
+ letter-spacing: 0.5px;
133
+ }
203
134
 
204
- &-step {
205
- align-items: flex-start;
206
- padding-left: spacing('5');
207
- margin: spacing('5') 0;
135
+ &-title {
136
+ font-size: font-size('base');
137
+ font-weight: font-weight('normal');
138
+ line-height: 1.2;
139
+ color: var(--mw-text-color);
140
+ }
208
141
  }
209
142
 
210
- &-date-container {
211
- margin-top: spacing('3');
212
- left: -22px;
213
- }
143
+ // Odd steps: content on the left
144
+ &-step:nth-child(odd) &-content {
145
+ align-self: flex-start;
146
+ padding-right: spacing('5');
147
+ text-align: right;
148
+ align-items: flex-end;
149
+ animation-name: mw-slide-in-left;
214
150
 
215
- &-step.mw-active &-date-container,
216
- &-step.active &-date-container {
217
- transform: scale(1.05);
151
+ .mw-timeline-big-event {
152
+ border-right: 2px solid var(--mw-secondary-text-color);
153
+ border-top-right-radius: radius('none');
154
+ border-bottom-right-radius: radius('none');
155
+ text-align: right;
156
+ }
218
157
  }
219
158
 
220
- // Override odd/even: content always full-width below the date
221
- &-step:nth-child(odd) &-content,
159
+ // Even steps: content on the right
222
160
  &-step:nth-child(even) &-content {
223
- align-self: stretch;
224
- width: 100%;
225
- padding-left: 0;
226
- padding-right: 0;
161
+ align-self: flex-end;
162
+ padding-left: spacing('5');
227
163
  text-align: left;
228
164
  align-items: flex-start;
165
+ animation-name: mw-slide-in-right;
229
166
 
230
167
  .mw-timeline-big-event {
231
- border-right: none;
232
168
  border-left: 2px solid var(--mw-secondary-text-color);
233
- border-top-right-radius: radius('sm');
234
- border-bottom-right-radius: radius('sm');
169
+ border-top-left-radius: radius('none');
170
+ border-bottom-left-radius: radius('none');
235
171
  text-align: left;
236
172
  }
237
173
  }
238
174
 
239
- &-date-main {
240
- font-size: font-size('xs');
175
+ // Staggered animation delays
176
+ @for $i from 1 through 10 {
177
+ &-step:nth-child(#{$i}) &-content {
178
+ animation-delay: $i * 0.3s;
179
+ }
241
180
  }
242
181
 
243
- &-event-date {
244
- font-size: font-size('xs');
182
+ // Active step
183
+ &-step.mw-active &-date-container,
184
+ &-step.active &-date-container {
185
+ background: var(--mw-primary-color);
186
+ border-color: var(--mw-primary-text-color);
187
+ transform: scale(1.1);
188
+ animation: mw-pulse-ring-big 2s infinite;
189
+
190
+ .mw-timeline-big-date-main,
191
+ .mw-timeline-big-date-sub {
192
+ color: var(--mw-primary-accent-text-color);
193
+ }
245
194
  }
246
195
 
247
- &-event-title {
248
- font-size: font-size('sm');
249
- line-height: 1.1;
250
- }
251
- }
252
- }
196
+ @include media-down('sm') {
197
+ width: 100%;
253
198
 
254
- // Simple
255
- .mw-timeline-simple {
256
- position: relative;
257
- margin: spacing('1') auto;
258
- padding: spacing('3') 0;
259
- width: min(96%, 930px);
260
-
261
- // Vertical line centered over the date column
262
- &::before {
263
- content: '';
264
- position: absolute;
265
- left: calc(#{$_simple-date-width} / 2);
266
- top: 0;
267
- width: $_border-width-simple;
268
- height: 100%;
269
- background: var(--mw-primary-text-color);
270
- transform: translateX(-50%);
271
- }
199
+ // Line moves to the left
200
+ &::before {
201
+ left: 0;
202
+ transform: none;
203
+ }
272
204
 
273
- &-step {
274
- display: flex;
275
- align-items: flex-start;
276
- gap: spacing('4');
277
- margin: spacing('5') 0;
278
- }
205
+ &-step {
206
+ align-items: flex-start;
207
+ padding-left: spacing('5');
208
+ margin: spacing('5') 0;
209
+ }
279
210
 
280
- &-date {
281
- flex-shrink: 0;
282
- width: $_simple-date-width;
283
- text-align: center;
284
- font-size: font-size('sm');
285
- padding: spacing('2');
286
- border-radius: radius('md');
287
- border: $_border-width-simple solid var(--mw-primary-text-color);
288
- background: var(--mw-card-background);
289
- line-height: 1.1;
290
- position: relative;
291
- z-index: z-index('card');
292
- cursor: default;
293
- transition: transform var(--mw-duration-fast) var(--mw-ease-out);
294
- }
211
+ &-date-container {
212
+ margin-top: spacing('3');
213
+ left: -22px;
214
+ }
295
215
 
296
- &-content {
297
- flex: 1;
298
- display: flex;
299
- flex-direction: column;
300
- gap: spacing('3');
301
- opacity: 0;
302
- }
216
+ &-step.mw-active &-date-container,
217
+ &-step.active &-date-container {
218
+ transform: scale(1.05);
219
+ }
303
220
 
304
- // Staggered animation
305
- @for $i from 1 through 10 {
306
- &-step:nth-child(#{$i}) &-content {
307
- animation: mw-slide-in-right
308
- var(--mw-duration-slow)
309
- var(--mw-ease-out)
310
- forwards;
311
- animation-delay: $i * 0.2s;
312
- }
313
- }
221
+ // Override odd/even: content always full-width below the date
222
+ &-step:nth-child(odd) &-content,
223
+ &-step:nth-child(even) &-content {
224
+ align-self: stretch;
225
+ width: 100%;
226
+ padding-left: 0;
227
+ padding-right: 0;
228
+ text-align: left;
229
+ align-items: flex-start;
230
+
231
+ .mw-timeline-big-event {
232
+ border-right: none;
233
+ border-left: 2px solid var(--mw-secondary-text-color);
234
+ border-top-right-radius: radius('sm');
235
+ border-bottom-right-radius: radius('sm');
236
+ text-align: left;
237
+ }
238
+ }
314
239
 
315
- // Active step
316
- &-step.mw-active &-date,
317
- &-step.active &-date {
318
- background: var(--mw-primary-color);
319
- color: var(--mw-primary-accent-text-color);
320
- transform: scale(1.1);
321
- animation: mw-pulse-ring-simple 2s infinite;
240
+ &-date-main {
241
+ font-size: font-size('xs');
242
+ }
243
+
244
+ &-event-date {
245
+ font-size: font-size('xs');
246
+ }
247
+
248
+ &-event-title {
249
+ font-size: font-size('sm');
250
+ line-height: 1.1;
251
+ }
252
+ }
322
253
  }
323
254
 
324
- @include media-down('sm') {
325
- width: 100%;
255
+ // Simple
256
+ .mw-timeline-simple {
257
+ position: relative;
258
+ margin: spacing('1') auto;
259
+ padding: spacing('3') 0;
260
+ width: min(96%, 930px);
326
261
 
262
+ // Vertical line centered over the date column
327
263
  &::before {
328
- left: 0;
329
- transform: none;
264
+ content: '';
265
+ position: absolute;
266
+ left: calc(#{$_simple-date-width} / 2);
267
+ top: 0;
268
+ width: $_border-width-simple;
269
+ height: 100%;
270
+ background: var(--mw-primary-text-color);
271
+ transform: translateX(-50%);
330
272
  }
331
273
 
332
274
  &-step {
333
- flex-direction: column;
275
+ display: flex;
276
+ align-items: flex-start;
277
+ gap: spacing('4');
278
+ margin: spacing('5') 0;
334
279
  }
335
280
 
336
281
  &-date {
337
- width: auto;
338
- font-size: font-size('xs');
339
- line-height: 1;
282
+ flex-shrink: 0;
283
+ width: $_simple-date-width;
284
+ text-align: center;
285
+ font-size: font-size('sm');
286
+ padding: spacing('2');
287
+ border-radius: radius('md');
288
+ border: $_border-width-simple solid var(--mw-primary-text-color);
289
+ background: var(--mw-card-background);
290
+ line-height: 1.1;
291
+ position: relative;
292
+ z-index: z-index('card');
293
+ cursor: default;
294
+ transition: transform var(--mw-duration-fast) var(--mw-ease-out);
340
295
  }
341
296
 
342
297
  &-content {
343
- padding-left: spacing('3');
298
+ flex: 1;
299
+ display: flex;
300
+ flex-direction: column;
301
+ gap: spacing('3');
302
+ opacity: 0;
303
+ }
304
+
305
+ // Staggered animation
306
+ @for $i from 1 through 10 {
307
+ &-step:nth-child(#{$i}) &-content {
308
+ animation: mw-slide-in-right
309
+ var(--mw-duration-slow)
310
+ var(--mw-ease-out)
311
+ forwards;
312
+ animation-delay: $i * 0.2s;
313
+ }
314
+ }
315
+
316
+ // Active step
317
+ &-step.mw-active &-date,
318
+ &-step.active &-date {
319
+ background: var(--mw-primary-color);
320
+ color: var(--mw-primary-accent-text-color);
321
+ transform: scale(1.1);
322
+ animation: mw-pulse-ring-simple 2s infinite;
323
+ }
324
+
325
+ @include media-down('sm') {
326
+ width: 100%;
327
+
328
+ &::before {
329
+ left: 0;
330
+ transform: none;
331
+ }
332
+
333
+ &-step {
334
+ flex-direction: column;
335
+ }
336
+
337
+ &-date {
338
+ width: auto;
339
+ font-size: font-size('xs');
340
+ line-height: 1;
341
+ }
342
+
343
+ &-content {
344
+ padding-left: spacing('3');
345
+ }
344
346
  }
345
347
  }
346
348
  }