@ebay/skin 17.2.0-next.0 → 17.3.0-next.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 (69) hide show
  1. package/.changeset/clever-trees-trade.md +5 -0
  2. package/.changeset/fresh-suits-fold.md +5 -0
  3. package/.changeset/grumpy-emus-jump.md +5 -0
  4. package/.changeset/loud-zebras-fail.md +5 -0
  5. package/.changeset/pre.json +9 -9
  6. package/.changeset/strange-forks-flow.md +5 -0
  7. package/.changeset/strong-schools-tap.md +5 -0
  8. package/.changeset/strong-toys-behave.md +5 -0
  9. package/.changeset/tough-cougars-poke.md +5 -0
  10. package/.github/workflows/jekyll-gh-pages.yml +3 -4
  11. package/CHANGELOG.md +40 -0
  12. package/_cdn/skin/v17.3.0-next.0/skin-default.min.css +69 -0
  13. package/_cdn/skin/v17.3.0-next.0/skin-full.min.css +151 -0
  14. package/_cdn/skin/v17.3.0-next.0/skin-headless.min.css +6 -0
  15. package/dist/button/button.css +6 -6
  16. package/dist/combobox/combobox.css +5 -2
  17. package/dist/date-textbox/date-textbox.css +3 -2
  18. package/dist/education-notice/education-notice.css +61 -0
  19. package/dist/filter-menu-button/filter-menu-button.css +3 -2
  20. package/dist/infotip/infotip.css +3 -2
  21. package/dist/listbox/listbox.css +4 -1
  22. package/dist/listbox-button/listbox-button.css +10 -7
  23. package/dist/menu/menu.css +4 -1
  24. package/dist/menu-button/menu-button.css +7 -2
  25. package/dist/progress-bar-expressive/progress-bar-expressive.css +277 -0
  26. package/dist/toggle-button-group/toggle-button-group.css +1 -1
  27. package/dist/tooltip/tooltip.css +3 -2
  28. package/dist/tourtip/tourtip.css +3 -2
  29. package/education-notice.browser.json +1 -0
  30. package/education-notice.css +1 -0
  31. package/education-notice.js +1 -0
  32. package/education-notice.mjs +1 -0
  33. package/index.browser.json +2 -0
  34. package/index.css +2 -0
  35. package/index.js +2 -0
  36. package/index.mjs +2 -0
  37. package/package.json +31 -32
  38. package/progress-bar-expressive.browser.json +1 -0
  39. package/progress-bar-expressive.css +1 -0
  40. package/progress-bar-expressive.js +1 -0
  41. package/progress-bar-expressive.mjs +1 -0
  42. package/src/less/bundles/skin-headless.less +2 -0
  43. package/src/less/button/button.less +3 -0
  44. package/src/less/carousel/stories/carousel.stories.js +44 -44
  45. package/src/less/date-textbox/date-textbox.less +1 -1
  46. package/src/less/education-notice/education-notice.less +74 -0
  47. package/src/less/education-notice/stories/base.stories.js +152 -0
  48. package/src/less/filter-menu-button/filter-menu-button.less +1 -1
  49. package/src/less/listbox-button/listbox-button.less +3 -2
  50. package/src/less/mixins/private/bubble-mixins.less +7 -3
  51. package/src/less/mixins/private/dropdown-mixins.less +1 -1
  52. package/src/less/mixins/private/selection-list-mixins.less +2 -0
  53. package/src/less/pagination/stories/overflow.stories.js +12 -12
  54. package/src/less/progress-bar-expressive/progress-bar-expressive.less +456 -0
  55. package/src/less/progress-bar-expressive/stories/progress-bar-expressive.stories.js +117 -0
  56. package/src/less/section-notice/section-notice.less +1 -0
  57. package/src/less/toggle-button-group/stories/gallery-layout.stories.js +91 -0
  58. package/src/less/toggle-button-group/toggle-button-group.less +1 -1
  59. package/.changeset/chilled-dots-whisper.md +0 -5
  60. package/.changeset/five-bats-appear.md +0 -5
  61. package/.changeset/gentle-moles-collect.md +0 -5
  62. package/.changeset/healthy-kings-hang.md +0 -5
  63. package/.changeset/pretty-rabbits-smash.md +0 -5
  64. package/.changeset/slow-maps-guess.md +0 -5
  65. package/.changeset/stale-lamps-retire.md +0 -5
  66. package/.changeset/unlucky-files-tickle.md +0 -5
  67. package/_cdn/skin/v17.2.0-next.0/skin-default.min.css +0 -69
  68. package/_cdn/skin/v17.2.0-next.0/skin-full.min.css +0 -151
  69. package/_cdn/skin/v17.2.0-next.0/skin-headless.min.css +0 -6
@@ -42,7 +42,8 @@ button.expand-btn[aria-expanded="true"] ~ div.listbox-button__listbox,
42
42
  .border-color-token(listbox-button-invalid-border-color, color-stroke-attention);
43
43
  }
44
44
 
45
- .listbox-button:not(.listbox-button--error) button.btn--form {
45
+ .listbox-button:not(.listbox-button--error)
46
+ button:not([disabled], [aria-disabled="true"]).btn--form {
46
47
  .border-color-token(listbox-button-border-color, color-stroke-default);
47
48
 
48
49
  &:hover,
@@ -78,7 +79,7 @@ button.expand-btn[aria-expanded="true"] ~ div.listbox-button__listbox,
78
79
  .listbox-button.listbox-button--form button[disabled],
79
80
  .listbox-button.listbox-button--form button[aria-disabled="true"] {
80
81
  .border-color-token(listbox-button-disabled-border-color, color-background-disabled);
81
- .color-token(listbox-button-disabled-foreground-color, color-foreground-primary);
82
+ .color-token(listbox-button-disabled-foreground-color, color-foreground-disabled);
82
83
  }
83
84
 
84
85
  .listbox-button.listbox-button--form button:focus {
@@ -1,15 +1,19 @@
1
1
  // this mixin is used by infotip, tooltip, tourtip, date-textbox
2
2
 
3
3
  :root {
4
- --bubble-filter: drop-shadow(0 2px 7px rgba(0, 0, 0, 0.15))
5
- drop-shadow(0 5px 17px rgba(0, 0, 0, 0.2));
4
+ // Do NOT use filter: drop-shadow() as Safari cannot do
5
+ // drop-shadows outside an element with overflow.
6
+ // Since box-shadow more widely supports various use cases,
7
+ // it's a more robust solution.
8
+ --bubble-shadow: 0 2px 7px rgba(0, 0, 0, 0.15),
9
+ 0 5px 17px rgba(0, 0, 0, 0.2);
6
10
  }
7
11
 
8
12
  .bubble(@border-radius-value: border-radius-50) {
9
13
  .border-radius-token(bubble-border-radius, @border-radius-value);
10
14
 
15
+ box-shadow: var(--bubble-shadow);
11
16
  display: none;
12
- filter: var(--bubble-filter);
13
17
  font-size: 14px;
14
18
  left: 0;
15
19
  max-width: 344px;
@@ -3,9 +3,9 @@
3
3
  .dropdown-base(@component) {
4
4
  .background-color-token(~"@{component}-background-color", color-background-elevated);
5
5
  .border-radius-token(~"@{component}-border-radius", border-radius-50);
6
+ box-shadow: var(--bubble-shadow);
6
7
  box-sizing: border-box;
7
8
  display: none;
8
- filter: var(--bubble-filter);
9
9
  left: 0;
10
10
  max-height: 400px;
11
11
  min-width: 100%;
@@ -1,5 +1,7 @@
1
1
  .selection-list-item-base() {
2
2
  background-color: transparent;
3
+ border-style: solid;
4
+ border-width: 1px;
3
5
  box-sizing: border-box;
4
6
  display: inline-grid;
5
7
  font-family: inherit;
@@ -16,8 +16,8 @@ export const start = () => `
16
16
  </li>
17
17
  <li>
18
18
  <span class="pagination__item">
19
- <svg class="icon icon--overflow" width="8" height="8" role="separator">
20
- <use href="#icon-overflow"></use>
19
+ <svg class="icon icon--overflow-horizontal-24" width="8" height="8" role="separator">
20
+ <use href="#icon-overflow-horizontal-24"></use>
21
21
  </svg>
22
22
  </span>
23
23
  </li>
@@ -61,8 +61,8 @@ export const middle = () => `
61
61
  </li>
62
62
  <li>
63
63
  <span class="pagination__item">
64
- <svg class="icon icon--overflow" width="8" height="8" role="separator">
65
- <use href="#icon-overflow"></use>
64
+ <svg class="icon icon--overflow-horizontal-24" width="8" height="8" role="separator">
65
+ <use href="#icon-overflow-horizontal-24"></use>
66
66
  </svg>
67
67
  </span>
68
68
  </li>
@@ -77,8 +77,8 @@ export const middle = () => `
77
77
  </li>
78
78
  <li>
79
79
  <span class="pagination__item">
80
- <svg class="icon icon--overflow" width="8" height="8" role="separator">
81
- <use href="#icon-overflow"></use>
80
+ <svg class="icon icon--overflow-horizontal-24" width="8" height="8" role="separator">
81
+ <use href="#icon-overflow-horizontal-24"></use>
82
82
  </svg>
83
83
  </span>
84
84
  </li>
@@ -122,8 +122,8 @@ export const end = () => `
122
122
  </li>
123
123
  <li>
124
124
  <span class="pagination__item">
125
- <svg class="icon icon--overflow" width="8" height="8" role="separator">
126
- <use href="#icon-overflow"></use>
125
+ <svg class="icon icon--overflow-horizontal-24" width="8" height="8" role="separator">
126
+ <use href="#icon-overflow-horizontal-24"></use>
127
127
  </svg>
128
128
  </span>
129
129
  </li>
@@ -169,8 +169,8 @@ export const endMenuCollapsed = () => `
169
169
  <span class="pagination__item">
170
170
  <span class="fake-menu-button">
171
171
  <button class="icon-btn icon-btn--transparent fake-menu-button__button" type="button" aria-label="Menu">
172
- <svg class="icon icon--overflow" width="8" height="8" aria-hidden="true">
173
- <use href="#icon-overflow"></use>
172
+ <svg class="icon icon--overflow-horizontal-24" width="8" height="8" role="separator">
173
+ <use href="#icon-overflow-horizontal-24"></use>
174
174
  </svg>
175
175
  </button>
176
176
  <ul class="fake-menu-button__menu">
@@ -240,8 +240,8 @@ export const endMenuExpanded = () => `
240
240
  <span class="pagination__item">
241
241
  <span class="fake-menu-button">
242
242
  <button class="icon-btn icon-btn--transparent fake-menu-button__button" type="button" aria-expanded="true" aria-label="Menu">
243
- <svg class="icon icon--overflow" width="8" height="8" aria-hidden="true">
244
- <use href="#icon-overflow"></use>
243
+ <svg class="icon icon--overflow-horizontal-24" width="8" height="8" role="separator">
244
+ <use href="#icon-overflow-horizontal-24"></use>
245
245
  </svg>
246
246
  </button>
247
247
  <ul class="fake-menu-button__menu">
@@ -0,0 +1,456 @@
1
+ @import "../variables/variables.less";
2
+
3
+ :root {
4
+ --progress-bar-expressive-color-1: #e53238;
5
+ --progress-bar-expressive-color-2: #0064d2;
6
+ --progress-bar-expressive-color-3: #f5af02;
7
+ --progress-bar-expressive-color-4: #86b817;
8
+ --progress-bar-expressive-line-border-radius: 2px;
9
+ --progress-bar-expressive-line-count: 12;
10
+ --progress-bar-expressive-line-gap: var(--spacing-50);
11
+ --progress-bar-expressive-line-height: 6px;
12
+ --progress-bar-expressive-line-scale-duration: 3s;
13
+ --progress-bar-expressive-line-scroll-duration: 20s;
14
+ /* Each line has a final width of 10% - 40% of the lines container.
15
+ In each set of four lines, the widths add up to 100%.
16
+ These widths are defined in CSS variables so they can more
17
+ easily be randomized in Javascript, if desired. */
18
+ --progress-bar-expressive-line-width-a1: 25%;
19
+ --progress-bar-expressive-line-width-a2: 15%;
20
+ --progress-bar-expressive-line-width-a3: 40%;
21
+ --progress-bar-expressive-line-width-a4: 20%;
22
+ --progress-bar-expressive-line-width-b1: 17%;
23
+ --progress-bar-expressive-line-width-b2: 21%;
24
+ --progress-bar-expressive-line-width-b3: 30%;
25
+ --progress-bar-expressive-line-width-b4: 32%;
26
+ --progress-bar-expressive-line-width-c1: 39%;
27
+ --progress-bar-expressive-line-width-c2: 29%;
28
+ --progress-bar-expressive-line-width-c3: 20%;
29
+ --progress-bar-expressive-line-width-c4: 12%;
30
+ --progress-bar-expressive-message-animatein-duration: 833ms;
31
+ --progress-bar-expressive-message-animateout-duration: 400ms;
32
+
33
+ @media (prefers-color-scheme: dark) {
34
+ --progress-bar-expressive-color-1: #f0343b;
35
+ --progress-bar-expressive-color-2: #0078fc;
36
+ --progress-bar-expressive-color-3: #e8a502;
37
+ --progress-bar-expressive-color-4: #86b817;
38
+ }
39
+ }
40
+
41
+ .progress-bar-expressive {
42
+ align-items: stretch;
43
+ display: grid;
44
+ grid-template-columns: 1fr;
45
+ justify-content: end;
46
+ margin: 0 auto;
47
+ max-width: 375px;
48
+ row-gap: var(--spacing-300);
49
+ width: 100%;
50
+ }
51
+
52
+ .progress-bar-expressive--loaded {
53
+ display: none;
54
+ }
55
+
56
+ .progress-bar-expressive__messages {
57
+ color: var(--color-foreground-primary);
58
+ font-size: var(--font-size-large-1);
59
+ font-weight: var(--font-weight-regular);
60
+ line-height: calc(var(--spacing-50) + var(--spacing-300)); // 26px
61
+ margin: 0 var(--spacing-200);
62
+ min-height: 3rem;
63
+ position: relative;
64
+ text-align: center;
65
+ }
66
+
67
+ .progress-bar-expressive__messages--medium {
68
+ font-size: var(--font-size-medium);
69
+ font-weight: var(--font-weight-bold);
70
+ line-height: var(--spacing-300);
71
+ }
72
+
73
+ .progress-bar-expressive__message {
74
+ bottom: 0;
75
+ left: 0;
76
+ position: absolute;
77
+ right: 0;
78
+ }
79
+
80
+ // current message
81
+ .progress-bar-expressive__message[role="status"] {
82
+ opacity: 1;
83
+ }
84
+
85
+ // next message
86
+ .progress-bar-expressive__message[aria-hidden="true"] {
87
+ opacity: 0;
88
+ }
89
+
90
+ .progress-bar-expressive__message--in {
91
+ animation: progress-bar-expressive-message-animatein
92
+ var(--progress-bar-expressive-message-animatein-duration)
93
+ cubic-bezier(0.3, 0, 0, 1) both;
94
+ }
95
+
96
+ .progress-bar-expressive__message--out {
97
+ animation: progress-bar-expressive-message-animateout
98
+ var(--progress-bar-expressive-message-animateout-duration)
99
+ cubic-bezier(0.3, 0, 0, 1) both;
100
+ }
101
+
102
+ .progress-bar-expressive__progress[role="progressbar"] {
103
+ border-radius: var(--progress-bar-expressive-line-border-radius);
104
+
105
+ margin: 0 var(--spacing-200);
106
+ overflow: hidden;
107
+ }
108
+
109
+ .progress-bar-expressive__lines {
110
+ display: flex;
111
+ overflow: visible;
112
+ // Account for gaps between lines
113
+ width: calc(100% - (3 * var(--progress-bar-expressive-line-gap)));
114
+ }
115
+
116
+ .progress-bar-expressive__line {
117
+ /* Default animation behavior: Lines scroll and resize.
118
+ Animate line's width from 0% to its pre-defined width.
119
+ Simultaneously cycle the line's order in its flex container
120
+ to push its siblings forward and achieve an infinite loop.
121
+
122
+ Note that Safari < 14 does not support flex order animations.
123
+ In these browsers, the lines do not appear to infinitely
124
+ scroll. Instead, they scale up, reset their size, and repeat. */
125
+ animation:
126
+ progress-bar-expressive-line-reorder
127
+ var(--progress-bar-expressive-line-scale-duration)
128
+ steps(var(--progress-bar-expressive-line-count)) infinite,
129
+ progress-bar-expressive-line-scale-width
130
+ var(--progress-bar-expressive-line-scale-duration) infinite;
131
+ border-radius: var(--progress-bar-expressive-line-border-radius);
132
+ display: inline-block;
133
+ flex-shrink: 0;
134
+ height: var(--progress-bar-expressive-line-height);
135
+ line-height: 0;
136
+ order: 1;
137
+ }
138
+
139
+ // Set line colors
140
+ .progress-bar-expressive__line:nth-child(4n + 1) {
141
+ background-color: var(--progress-bar-expressive-color-4);
142
+ }
143
+ .progress-bar-expressive__line:nth-child(4n + 2) {
144
+ background-color: var(--progress-bar-expressive-color-3);
145
+ }
146
+ .progress-bar-expressive__line:nth-child(4n + 3) {
147
+ background-color: var(--progress-bar-expressive-color-2);
148
+ }
149
+ .progress-bar-expressive__line:nth-child(4n + 4) {
150
+ background-color: var(--progress-bar-expressive-color-1);
151
+ }
152
+
153
+ // Set line widths and animation delays
154
+ .progress-bar-expressive__line:nth-child(1) {
155
+ animation-delay: calc(
156
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
157
+ var(--progress-bar-expressive-line-scale-duration) /
158
+ var(--progress-bar-expressive-line-count))
159
+ );
160
+ width: var(--progress-bar-expressive-line-width-a1);
161
+ }
162
+ .progress-bar-expressive__line:nth-child(2) {
163
+ animation-delay: calc(
164
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
165
+ (
166
+ (
167
+ var(
168
+ --progress-bar-expressive-line-scale-duration
169
+ ) /
170
+ var(--progress-bar-expressive-line-count)
171
+ ) * 2
172
+ ))
173
+ );
174
+ width: var(--progress-bar-expressive-line-width-a2);
175
+ }
176
+ .progress-bar-expressive__line:nth-child(3) {
177
+ animation-delay: calc(
178
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
179
+ (
180
+ (
181
+ var(
182
+ --progress-bar-expressive-line-scale-duration
183
+ ) /
184
+ var(--progress-bar-expressive-line-count)
185
+ ) * 3
186
+ ))
187
+ );
188
+ width: var(--progress-bar-expressive-line-width-a3);
189
+ }
190
+ .progress-bar-expressive__line:nth-child(4) {
191
+ animation-delay: calc(
192
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
193
+ (
194
+ (
195
+ var(
196
+ --progress-bar-expressive-line-scale-duration
197
+ ) /
198
+ var(--progress-bar-expressive-line-count)
199
+ ) * 4
200
+ ))
201
+ );
202
+ width: var(--progress-bar-expressive-line-width-a4);
203
+ }
204
+ .progress-bar-expressive__line:nth-child(5) {
205
+ animation-delay: calc(
206
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
207
+ (
208
+ (
209
+ var(
210
+ --progress-bar-expressive-line-scale-duration
211
+ ) /
212
+ var(--progress-bar-expressive-line-count)
213
+ ) * 5
214
+ ))
215
+ );
216
+ width: var(--progress-bar-expressive-line-width-b1);
217
+ }
218
+ .progress-bar-expressive__line:nth-child(6) {
219
+ animation-delay: calc(
220
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
221
+ (
222
+ (
223
+ var(
224
+ --progress-bar-expressive-line-scale-duration
225
+ ) /
226
+ var(--progress-bar-expressive-line-count)
227
+ ) * 6
228
+ ))
229
+ );
230
+ width: var(--progress-bar-expressive-line-width-b2);
231
+ }
232
+ .progress-bar-expressive__line:nth-child(7) {
233
+ animation-delay: calc(
234
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
235
+ (
236
+ (
237
+ var(
238
+ --progress-bar-expressive-line-scale-duration
239
+ ) /
240
+ var(--progress-bar-expressive-line-count)
241
+ ) * 7
242
+ ))
243
+ );
244
+ width: var(--progress-bar-expressive-line-width-b3);
245
+ }
246
+ .progress-bar-expressive__line:nth-child(8) {
247
+ animation-delay: calc(
248
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
249
+ (
250
+ (
251
+ var(
252
+ --progress-bar-expressive-line-scale-duration
253
+ ) /
254
+ var(--progress-bar-expressive-line-count)
255
+ ) * 8
256
+ ))
257
+ );
258
+ width: var(--progress-bar-expressive-line-width-b4);
259
+ }
260
+ .progress-bar-expressive__line:nth-child(9) {
261
+ animation-delay: calc(
262
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
263
+ (
264
+ (
265
+ var(
266
+ --progress-bar-expressive-line-scale-duration
267
+ ) /
268
+ var(--progress-bar-expressive-line-count)
269
+ ) * 9
270
+ ))
271
+ );
272
+ width: var(--progress-bar-expressive-line-width-c1);
273
+ }
274
+ .progress-bar-expressive__line:nth-child(10) {
275
+ animation-delay: calc(
276
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
277
+ (
278
+ (
279
+ var(
280
+ --progress-bar-expressive-line-scale-duration
281
+ ) /
282
+ var(--progress-bar-expressive-line-count)
283
+ ) * 10
284
+ ))
285
+ );
286
+ width: var(--progress-bar-expressive-line-width-c2);
287
+ }
288
+ .progress-bar-expressive__line:nth-child(11) {
289
+ animation-delay: calc(
290
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
291
+ (
292
+ (
293
+ var(
294
+ --progress-bar-expressive-line-scale-duration
295
+ ) /
296
+ var(--progress-bar-expressive-line-count)
297
+ ) * 11
298
+ ))
299
+ );
300
+ width: var(--progress-bar-expressive-line-width-c3);
301
+ }
302
+ .progress-bar-expressive__line:nth-child(12) {
303
+ animation-delay: calc(
304
+ -1 * (var(--progress-bar-expressive-line-scale-duration) -
305
+ (
306
+ (
307
+ var(
308
+ --progress-bar-expressive-line-scale-duration
309
+ ) /
310
+ var(--progress-bar-expressive-line-count)
311
+ ) * 12
312
+ ))
313
+ );
314
+ width: var(--progress-bar-expressive-line-width-c4);
315
+ }
316
+
317
+ /* With reduced motion, there are no animated transitions
318
+ between messages and the lines scroll but do not resize. */
319
+ @media (prefers-reduced-motion) {
320
+ // Remove default message animation
321
+ .progress-bar-expressive__message--in,
322
+ .progress-bar-expressive__message--out {
323
+ animation: none;
324
+ }
325
+
326
+ .progress-bar-expressive__message[aria-hidden="true"] {
327
+ display: none;
328
+ }
329
+
330
+ // Fade in first message
331
+ .progress-bar-expressive__messages:not(
332
+ .progress-bar-expressive__messages--medium
333
+ )
334
+ .progress-bar-expressive__message--initial[role="status"] {
335
+ animation: progress-bar-expressive-message-fadein
336
+ var(--progress-bar-expressive-message-animatein-duration)
337
+ cubic-bezier(0.3, 0, 0, 1) both;
338
+ }
339
+
340
+ // Scroll the entire line container
341
+ .progress-bar-expressive__lines {
342
+ animation: progress-bar-expressive-reduced-motion-line-scroll
343
+ var(--progress-bar-expressive-line-scroll-duration) linear infinite;
344
+ overflow: visible;
345
+ }
346
+
347
+ // Remove default line animation
348
+ .progress-bar-expressive__line {
349
+ animation: none;
350
+ animation-delay: none;
351
+ margin-right: var(--progress-bar-expressive-line-gap);
352
+ }
353
+
354
+ // Reset line colors
355
+ .progress-bar-expressive__line:nth-child(4n + 1) {
356
+ background-color: var(--progress-bar-expressive-color-1);
357
+ }
358
+ .progress-bar-expressive__line:nth-child(4n + 2) {
359
+ background-color: var(--progress-bar-expressive-color-2);
360
+ }
361
+ .progress-bar-expressive__line:nth-child(4n + 3) {
362
+ background-color: var(--progress-bar-expressive-color-3);
363
+ }
364
+ .progress-bar-expressive__line:nth-child(4n + 4) {
365
+ background-color: var(--progress-bar-expressive-color-4);
366
+ }
367
+
368
+ // To achieve a seamless loop, the last set of line widths
369
+ // need to match the first set of line widths
370
+ .progress-bar-expressive__line:nth-child(9) {
371
+ width: var(--progress-bar-expressive-line-width-a1);
372
+ }
373
+
374
+ .progress-bar-expressive__line:nth-child(10) {
375
+ width: var(--progress-bar-expressive-line-width-a2);
376
+ }
377
+
378
+ .progress-bar-expressive__line:nth-child(11) {
379
+ width: var(--progress-bar-expressive-line-width-a3);
380
+ }
381
+
382
+ .progress-bar-expressive__line:nth-child(12) {
383
+ width: var(--progress-bar-expressive-line-width-a4);
384
+ }
385
+ }
386
+
387
+ @keyframes progress-bar-expressive-message-animateout {
388
+ 0% {
389
+ opacity: 1;
390
+ transform: translateY(0);
391
+ }
392
+
393
+ 100% {
394
+ opacity: 0;
395
+ transform: translateY(calc(var(--font-size-24) * -1));
396
+ }
397
+ }
398
+
399
+ @keyframes progress-bar-expressive-message-animatein {
400
+ 0% {
401
+ opacity: 0;
402
+ transform: translateY(var(--font-size-24));
403
+ }
404
+
405
+ 100% {
406
+ opacity: 1;
407
+ transform: translateY(0);
408
+ }
409
+ }
410
+
411
+ @keyframes progress-bar-expressive-message-fadein {
412
+ 0% {
413
+ opacity: 0;
414
+ }
415
+
416
+ 100% {
417
+ opacity: 1;
418
+ }
419
+ }
420
+
421
+ @keyframes progress-bar-expressive-line-reorder {
422
+ 0% {
423
+ order: 0;
424
+ }
425
+ 100% {
426
+ order: var(--progress-bar-expressive-line-count);
427
+ }
428
+ }
429
+
430
+ @keyframes progress-bar-expressive-line-scale-width {
431
+ 0% {
432
+ margin-right: 0;
433
+ width: 0;
434
+ }
435
+
436
+ 12.5% {
437
+ margin-right: var(--progress-bar-expressive-line-gap);
438
+ }
439
+
440
+ 50%,
441
+ 100% {
442
+ margin-right: var(--progress-bar-expressive-line-gap);
443
+ }
444
+ }
445
+
446
+ @keyframes progress-bar-expressive-reduced-motion-line-scroll {
447
+ 0% {
448
+ transform: translateX(
449
+ calc(-200% - 8 * var(--progress-bar-expressive-line-gap))
450
+ );
451
+ }
452
+
453
+ 100% {
454
+ transform: translateX(0);
455
+ }
456
+ }