@tui/design-system 1.10.0 → 1.11.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.
@@ -0,0 +1,351 @@
1
+ // Product card / _mixins
2
+ @use 'variables' as *;
3
+ @use '../../utility/mixins' as *;
4
+ @use '../card/mixins' as *;
5
+ @use '../../icon/mixins' as *;
6
+ @use '../../icon-button/mixins' as *;
7
+ @use '../../image/mixins' as *;
8
+ @use '../../info-tag/mixins' as *;
9
+ @use '../../media-button/mixins' as *;
10
+ @use '../../promo-tag/mixins' as *;
11
+
12
+ $uilib-card-product-included: false !default;
13
+
14
+ // Builds product card
15
+ @mixin uilib-card-product() {
16
+ @if not $uilib-card-product-included {
17
+ $uilib-card-product-included: true !global;
18
+
19
+ @include uilib-card;
20
+ @include uilib-icon;
21
+ @include uilib-icon-button;
22
+ @include uilib-image;
23
+ @include uilib-info-tag;
24
+ @include uilib-info-tag-list;
25
+ @include uilib-media-button;
26
+ @include uilib-promo-tag;
27
+ @include uilib-promo-tag-list;
28
+ @include uilib-card-product-master;
29
+ }
30
+ }
31
+
32
+ @mixin uilib-card-product-master() {
33
+ .uilib-card-product {
34
+ // container for query
35
+ container-name: uilib-card-product;
36
+ container-type: inline-size;
37
+
38
+ position: relative;
39
+
40
+ border-radius: var(--uilib-card-radius);
41
+
42
+ background: var(--uilib-color-canvas-default);
43
+
44
+ box-shadow: var(--uilib-card-default-elevation);
45
+
46
+ &__image-content {
47
+ grid-area: uilib-card-product-image;
48
+
49
+ position: relative;
50
+
51
+ display: grid;
52
+ grid-template:
53
+ 'uilib-card-product-tags' auto
54
+ 'uilib-card-product-media' min-content;
55
+ gap: var(--uilib-spacing-200);
56
+
57
+ width: 100%;
58
+ padding: var(--uilib-spacing-200) var(--uilib-spacing-200) calc(var(--uilib-spacing-200) + var(--uilib-card-product-radius-spacing));
59
+
60
+ aspect-ratio: var(--uilib-aspect-ratio-16x9-wide);
61
+
62
+ .uilib-card-product__product-label,
63
+ .uilib-card-product__brand {
64
+ grid-area: uilib-card-product-tags;
65
+
66
+ position: relative;
67
+ z-index: 1;
68
+
69
+ place-self: start start;
70
+ }
71
+
72
+ .uilib-card-product__brand {
73
+ width: 4rem; /* 64 / 16 */
74
+ height: calc(4rem + var(--uilib-spacing-100)); /* 64 / 16 */
75
+ margin-top: calc(var(--uilib-spacing-300) * -1);
76
+ margin-left: calc(var(--uilib-card-product-radius-spacing) - var(--uilib-spacing-200));
77
+ padding-top: var(--uilib-spacing-100);
78
+
79
+ border-radius: 0 0 var(--uilib-border-radius-100) var(--uilib-border-radius-100);
80
+
81
+ background: var(--uilib-card-product-flagship-color);
82
+
83
+ overflow: hidden;
84
+ }
85
+
86
+ .uilib-card-product__image {
87
+ position: absolute;
88
+ inset: 0 auto 0 50%;
89
+
90
+ min-width: 100%;
91
+
92
+ border-radius: var(--uilib-card-radius) var(--uilib-card-radius) 0 0;
93
+
94
+ transform: translateX(-50%);
95
+
96
+ overflow: hidden;
97
+ }
98
+ }
99
+
100
+ &__media-buttons {
101
+ grid-area: uilib-card-product-media;
102
+
103
+ display: flex;
104
+ flex-flow: row wrap;
105
+ gap: var(--uilib-spacing-200);
106
+ justify-content: flex-end;
107
+
108
+ li {
109
+ flex-grow: 1;
110
+ }
111
+ }
112
+
113
+ li.uilib-card-product__quick-view {
114
+ flex-grow: 0;
115
+ }
116
+
117
+ &__content-container {
118
+ grid-area: uilib-card-product-content;
119
+
120
+ position: relative;
121
+ z-index: 1;
122
+
123
+ margin-top: calc(var(--uilib-card-product-radius-spacing) * -1);
124
+
125
+ border-radius: var(--uilib-card-radius);
126
+
127
+ background: var(--uilib-card-default-bg-color);
128
+
129
+ box-shadow: var(--uilib-card-default-elevation);
130
+ }
131
+
132
+ &__main-content {
133
+ grid-area: uilib-card-product-content;
134
+
135
+ border-radius: var(--uilib-card-radius);
136
+
137
+ background: var(--uilib-card-default-bg-color);
138
+ }
139
+
140
+ &__supplementary-container {
141
+ grid-area: uilib-card-product-supplementary;
142
+
143
+ position: relative;
144
+ z-index: 1;
145
+
146
+ margin-top: calc(var(--uilib-spacing-200) * -1);
147
+ padding: var(--uilib-spacing-200);
148
+
149
+ border-radius: 0 0 var(--uilib-card-radius) var(--uilib-card-radius);
150
+
151
+ background: var(--uilib-card-contrast-bg-color);
152
+ }
153
+
154
+ /* stylelint-disable-next-line order/order */
155
+ @container uilib-card-product (min-width: 35rem) {
156
+ &__inner {
157
+ display: grid;
158
+ grid-template:
159
+ 'uilib-card-product-image uilib-card-product-content' 1fr
160
+ 'uilib-card-product-supplementary uilib-card-product-content' minmax(0, min-content) / 45% 55%;
161
+ align-content: start;
162
+ align-items: stretch;
163
+ }
164
+
165
+ &__image-content {
166
+ min-height: auto;
167
+ padding: var(--uilib-spacing-200) calc(var(--uilib-spacing-200) + var(--uilib-card-product-radius-spacing)) var(--uilib-spacing-200)
168
+ var(--uilib-spacing-200);
169
+
170
+ transform: none;
171
+
172
+ .uilib-card-product__image {
173
+ min-height: 100%;
174
+
175
+ border-radius: var(--uilib-card-radius) 0 0 var(--uilib-card-radius);
176
+ }
177
+
178
+ &:has(~ .uilib-card-product__content-container .uilib-card-product__supplementary-container) .uilib-card-product__image {
179
+ border-bottom-left-radius: 0;
180
+ }
181
+ }
182
+
183
+ &__content-container {
184
+ display: contents;
185
+ }
186
+
187
+ &__main-content {
188
+ position: relative;
189
+ z-index: 1;
190
+
191
+ display: flex;
192
+ flex-flow: column;
193
+
194
+ margin-top: 0;
195
+ margin-left: calc(var(--uilib-card-product-radius-spacing) * -1);
196
+
197
+ box-shadow: var(--uilib-card-default-elevation);
198
+ }
199
+
200
+ &__supplementary-container {
201
+ position: static;
202
+ z-index: 0;
203
+
204
+ align-self: start;
205
+
206
+ margin-top: 0;
207
+ padding-right: calc(var(--uilib-spacing-200) + var(--uilib-card-product-radius-spacing));
208
+
209
+ border-radius: 0;
210
+ border-bottom-left-radius: var(--uilib-card-radius);
211
+ }
212
+ }
213
+
214
+ &__visually-hidden {
215
+ @include uilib-visually-hidden;
216
+ }
217
+
218
+ &-flagship-wrapper {
219
+ container-name: uilib-card-product-wrapper;
220
+ container-type: inline-size;
221
+
222
+ margin: var(--uilib-spacing-400) 0;
223
+ padding-top: var(--uilib-spacing-300);
224
+
225
+ border-radius: var(--uilib-card-radius);
226
+
227
+ background: var(--uilib-card-product-flagship-color);
228
+
229
+ box-shadow: var(--uilib-card-default-elevation);
230
+
231
+ .uilib-card-product {
232
+ margin: 0;
233
+
234
+ box-shadow: none;
235
+ }
236
+ }
237
+
238
+ &-highlights {
239
+ position: relative;
240
+
241
+ display: block;
242
+
243
+ padding: var(--uilib-spacing-200) var(--uilib-spacing-400);
244
+
245
+ color: var(--uilib-card-product-flagship-text-color);
246
+
247
+ &:defined {
248
+ padding-right: calc(var(--uilib-spacing-600) + 2.75rem); /* 8+4+44 / 16 */
249
+ }
250
+
251
+ &__list {
252
+ display: flex;
253
+ flex-flow: column;
254
+ gap: var(--uilib-spacing-200) var(--uilib-spacing-600);
255
+ }
256
+
257
+ &-item {
258
+ display: grid;
259
+ grid-template:
260
+ 'icon title' 1fr
261
+ 'icon description' auto
262
+ / var(--uilib-icon-size-large) 1fr;
263
+ gap: 0 var(--uilib-spacing-200);
264
+ align-items: baseline;
265
+
266
+ &__icon {
267
+ grid-area: icon;
268
+ }
269
+
270
+ &__title {
271
+ grid-area: title;
272
+
273
+ align-self: center;
274
+
275
+ font: var(--uilib-typography-component-heading-small-strong);
276
+ }
277
+
278
+ &__description {
279
+ grid-area: description;
280
+
281
+ block-size: auto;
282
+
283
+ font: var(--uilib-typography-body-medium);
284
+
285
+ visibility: visible;
286
+
287
+ overflow: hidden;
288
+
289
+ @media (prefers-reduced-motion: no-preference) {
290
+ transition:
291
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
292
+ visibility 0s;
293
+ }
294
+
295
+ &[aria-hidden='true'] {
296
+ block-size: 0;
297
+
298
+ visibility: hidden;
299
+
300
+ @media (prefers-reduced-motion: no-preference) {
301
+ transition:
302
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-in),
303
+ visibility 0s var(--uilib-motion-duration-medium);
304
+ }
305
+ }
306
+ }
307
+ }
308
+
309
+ &__button.uilib-icon-button {
310
+ position: absolute;
311
+ bottom: var(--uilib-spacing-200);
312
+ right: var(--uilib-spacing-200);
313
+
314
+ &:hover:not(:disabled, .uilib-icon-button--disabled) {
315
+ background: none;
316
+ }
317
+
318
+ &:focus-visible {
319
+ position: absolute;
320
+ }
321
+
322
+ &[aria-expanded='true'] .uilib-card-product-highlights__button-icon {
323
+ transform: rotate(180deg);
324
+ }
325
+ }
326
+
327
+ &__button-icon {
328
+ color: var(--uilib-card-product-flagship-text-color);
329
+ -webkit-mask-image: var(--uilib-card-product-highlights-icon);
330
+ mask-image: var(--uilib-card-product-highlights-icon);
331
+
332
+ @media (prefers-reduced-motion: no-preference) {
333
+ transition: transform var(--uilib-motion-duration-fast) var(--uilib-motion-timing-out);
334
+ }
335
+ }
336
+
337
+ /* stylelint-disable-next-line order/order */
338
+ @container uilib-card-product-wrapper (min-width: 35rem) {
339
+ &__list {
340
+ flex-flow: row nowrap;
341
+
342
+ padding-right: var(--uilib-spacing-400);
343
+ }
344
+
345
+ &__button.uilib-icon-button {
346
+ display: none;
347
+ }
348
+ }
349
+ }
350
+ }
351
+ }
@@ -0,0 +1,9 @@
1
+ @use '../../../variables/env-variables' as *;
2
+
3
+ // Product card specific variables to allow theming
4
+ $uilib-card-product-variables: (
5
+ radius-spacing: var(--uilib-card-radius),
6
+ flagship-color: var(--uilib-color-core-brand-strong),
7
+ flagship-text-color: var(--uilib-color-text-inverse),
8
+ highlights-icon: url('#{$uilib-assets-base-url}v3/icons/tui/standard/chevron-down.svg'),
9
+ ) !default;
@@ -354,6 +354,7 @@ $uilib-card-search-included: false !default;
354
354
  container-name: uilib-card-search-wrapper;
355
355
  container-type: inline-size;
356
356
 
357
+ margin: var(--uilib-spacing-400) 0;
357
358
  padding-top: var(--uilib-spacing-300);
358
359
 
359
360
  border-radius: var(--uilib-card-radius);
@@ -363,6 +364,8 @@ $uilib-card-search-included: false !default;
363
364
  box-shadow: var(--uilib-card-default-elevation);
364
365
 
365
366
  .uilib-card-search {
367
+ margin: 0;
368
+
366
369
  box-shadow: none;
367
370
  }
368
371
  }
@@ -414,16 +417,26 @@ $uilib-card-search-included: false !default;
414
417
 
415
418
  font: var(--uilib-typography-body-medium);
416
419
 
420
+ visibility: visible;
421
+
417
422
  overflow: hidden;
418
423
 
419
424
  @media (prefers-reduced-motion: no-preference) {
420
425
  transition:
421
- block-size var(--uilib-motion-duration-fast) var(--uilib-motion-timing-out),
422
- content-visibility var(--uilib-motion-duration-fast) allow-discrete;
426
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
427
+ visibility 0s;
423
428
  }
424
429
 
425
430
  &[aria-hidden='true'] {
426
431
  block-size: 0;
432
+
433
+ visibility: hidden;
434
+
435
+ @media (prefers-reduced-motion: no-preference) {
436
+ transition:
437
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-in),
438
+ visibility 0s var(--uilib-motion-duration-medium);
439
+ }
427
440
  }
428
441
  }
429
442
  }
@@ -30,7 +30,8 @@ $uilib-input-checkbox-included: false !default;
30
30
  gap: var(--uilib-spacing-300);
31
31
  align-items: flex-start;
32
32
 
33
- width: min(max-content, 100%);
33
+ width: max-content;
34
+ max-width: 100%;
34
35
  padding: var(--uilib-spacing-300);
35
36
 
36
37
  border-radius: var(--uilib-border-radius-100);
@@ -30,7 +30,8 @@ $uilib-input-radio-included: false !default;
30
30
  gap: var(--uilib-spacing-300);
31
31
  align-items: flex-start;
32
32
 
33
- width: min(max-content, 100%);
33
+ width: max-content;
34
+ max-width: 100%;
34
35
  padding: var(--uilib-spacing-300);
35
36
 
36
37
  border-radius: var(--uilib-border-radius-100);
@@ -112,17 +112,31 @@ $uilib-highlight-panel-included: false !default;
112
112
  &__collapsible::details-content {
113
113
  block-size: 0;
114
114
 
115
+ visibility: hidden;
116
+
115
117
  overflow: hidden;
116
118
 
119
+ content-visibility: visible;
120
+
117
121
  @media (prefers-reduced-motion: no-preference) {
118
122
  transition:
119
- block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
120
- content-visibility var(--uilib-motion-duration-medium) allow-discrete;
123
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-in),
124
+ visibility 0s var(--uilib-motion-duration-medium);
121
125
  }
122
126
  }
123
127
 
124
128
  &__collapsible[open]::details-content {
125
129
  block-size: auto;
130
+
131
+ visibility: visible;
132
+
133
+ content-visibility: visible;
134
+
135
+ @media (prefers-reduced-motion: no-preference) {
136
+ transition:
137
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
138
+ visibility 0s;
139
+ }
126
140
  }
127
141
 
128
142
  &__header-text {
@@ -40,25 +40,36 @@ $uilib-show-more-less-included: false !default;
40
40
 
41
41
  &[is-hydrated] .uilib-show-more-less__content {
42
42
  block-size: 0;
43
- content-visibility: hidden;
44
-
45
43
  margin-top: 0;
46
44
 
45
+ visibility: hidden;
46
+
47
47
  overflow: hidden;
48
48
 
49
+ content-visibility: visible;
50
+
49
51
  @media (prefers-reduced-motion: no-preference) {
50
52
  transition:
51
53
  block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
52
- content-visibility var(--uilib-motion-duration-medium) allow-discrete,
54
+ visibility 0s var(--uilib-motion-duration-medium),
53
55
  margin-top var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out);
54
56
  }
55
57
  }
56
58
 
57
59
  &[is-open] .uilib-show-more-less__content {
58
60
  block-size: auto;
61
+ margin-top: var(--uilib-spacing-400);
62
+
63
+ visibility: visible;
64
+
59
65
  content-visibility: visible;
60
66
 
61
- margin-top: var(--uilib-spacing-400);
67
+ @media (prefers-reduced-motion: no-preference) {
68
+ transition:
69
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
70
+ visibility 0s,
71
+ margin-top var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out);
72
+ }
62
73
  }
63
74
  }
64
75
 
@@ -37,15 +37,16 @@ $uilib-skeleton-included: false !default;
37
37
 
38
38
  background: linear-gradient(
39
39
  90deg,
40
- var(--uilib-skeleton-color) 0%,
41
- var(--uilib-skeleton-shimmer-color) 4%,
42
- var(--uilib-skeleton-color) 8%,
43
- var(--uilib-skeleton-color) 32%,
44
- var(--uilib-skeleton-shimmer-color) 36%,
45
- var(--uilib-skeleton-color) 40%,
46
- var(--uilib-skeleton-color) 62%,
47
- var(--uilib-skeleton-shimmer-color) 66%,
48
- var(--uilib-skeleton-color) 70%
40
+ var(--uilib-skeleton-shimmer-color) 0%,
41
+ var(--uilib-skeleton-shimmer-color) 1%,
42
+ var(--uilib-skeleton-color) 5%,
43
+ var(--uilib-skeleton-color) 45%,
44
+ var(--uilib-skeleton-shimmer-color) 49%,
45
+ var(--uilib-skeleton-shimmer-color) 51%,
46
+ var(--uilib-skeleton-color) 55%,
47
+ var(--uilib-skeleton-color) 95%,
48
+ var(--uilib-skeleton-shimmer-color) 99%,
49
+ var(--uilib-skeleton-shimmer-color) 100%
49
50
  );
50
51
  background-position-x: calc(var(--uilib-skeleton-position) * 100%);
51
52
  background-size: 200% 100%;
@@ -73,12 +74,15 @@ $uilib-skeleton-included: false !default;
73
74
  }
74
75
 
75
76
  &--circle {
77
+ flex-grow: 0;
76
78
  flex-shrink: 0;
77
79
 
78
- width: var(--uilib-spacing-500);
80
+ width: auto;
79
81
  height: var(--uilib-spacing-500);
80
82
 
81
- border-radius: 50%;
83
+ aspect-ratio: var(--uilib-aspect-ratio-1x1-square);
84
+
85
+ border-radius: var(--uilib-border-radius-circle);
82
86
  }
83
87
 
84
88
  &--card {
@@ -89,6 +93,23 @@ $uilib-skeleton-included: false !default;
89
93
  }
90
94
  }
91
95
 
96
+ &--product-card {
97
+ display: grid;
98
+
99
+ &::before {
100
+ content: '';
101
+
102
+ display: block;
103
+
104
+ aspect-ratio: var(--uilib-aspect-ratio-16x9-wide);
105
+ }
106
+
107
+ /* stylelint-disable-next-line order/order */
108
+ @container (min-width: 35rem) {
109
+ grid-template-columns: 45% 55%;
110
+ }
111
+ }
112
+
92
113
  &--container {
93
114
  padding: var(--uilib-spacing-400);
94
115
  }
@@ -116,7 +137,7 @@ $uilib-skeleton-included: false !default;
116
137
  }
117
138
 
118
139
  @media (prefers-reduced-motion: no-preference) {
119
- animation: shimmer 4s linear infinite;
140
+ animation: shimmer 3.5s linear infinite;
120
141
  }
121
142
 
122
143
  // Width utilities
@@ -0,0 +1,2 @@
1
+ @use 'mixins' as *;
2
+ @include uilib-timeline;
@@ -0,0 +1,87 @@
1
+ @use '../icon/mixins' as *;
2
+
3
+ $uilib-timeline-included: false !default;
4
+
5
+ @mixin uilib-timeline() {
6
+ @if not $uilib-timeline-included {
7
+ $uilib-timeline-included: true !global;
8
+
9
+ @include uilib-icon;
10
+ @include uilib-timeline-master;
11
+ }
12
+ }
13
+
14
+ @mixin uilib-timeline-master() {
15
+ .uilib-timeline {
16
+ display: flex;
17
+ flex-direction: column;
18
+
19
+ margin: 0;
20
+ padding: 0;
21
+
22
+ list-style: none;
23
+
24
+ &--gap {
25
+ gap: var(--uilib-spacing-400);
26
+
27
+ .uilib-timeline__marker::after {
28
+ bottom: calc(var(--uilib-spacing-700) * -1);
29
+ }
30
+ }
31
+
32
+ &--gap &__item--gap:not(:last-child) {
33
+ margin-bottom: 0;
34
+ }
35
+
36
+ &__item {
37
+ display: grid;
38
+ grid-template-columns: var(--uilib-spacing-500) 1fr;
39
+ gap: var(--uilib-spacing-200);
40
+
41
+ &--gap:not(:last-child) {
42
+ margin-bottom: var(--uilib-spacing-400);
43
+
44
+ .uilib-timeline__marker::after {
45
+ bottom: calc(var(--uilib-spacing-700) * -1);
46
+ }
47
+ }
48
+
49
+ &:not(:last-child) .uilib-timeline__marker::after {
50
+ content: '';
51
+ }
52
+ }
53
+
54
+ &__marker {
55
+ position: relative;
56
+
57
+ display: flex;
58
+ justify-content: center;
59
+ align-items: flex-start;
60
+
61
+ &::after {
62
+ position: absolute;
63
+ top: calc(var(--uilib-spacing-400) + var(--uilib-icon-size-small));
64
+ left: 50%;
65
+ bottom: calc(var(--uilib-spacing-300) * -1);
66
+ content: none;
67
+
68
+ border-left: var(--uilib-stroke-size-050) var(--uilib-stroke-style-dashed) var(--uilib-color-border-dashed);
69
+
70
+ transform: translateX(-50%);
71
+ }
72
+ }
73
+
74
+ &__icon {
75
+ margin-top: calc(var(--uilib-spacing-300) + var(--uilib-spacing-050)); /* 12 + 2 */
76
+
77
+ background: var(--uilib-color-status-info-icon);
78
+ }
79
+
80
+ &__content {
81
+ align-content: flex-end;
82
+
83
+ min-width: 0;
84
+ min-height: calc(var(--uilib-spacing-400) + var(--uilib-icon-size-small));
85
+ }
86
+ }
87
+ }
package/scss/mixins.scss CHANGED
@@ -4,11 +4,14 @@
4
4
  @forward 'lib/breadcrumb/mixins';
5
5
  @forward 'lib/alert/mixins';
6
6
  @forward 'lib/button/mixins';
7
- @forward 'lib/cards/card/mixins';
8
7
  @forward 'lib/cards/article/mixins';
8
+ @forward 'lib/cards/card/mixins';
9
9
  @forward 'lib/cards/carousel/mixins';
10
10
  @forward 'lib/cards/icon/mixins';
11
+ @forward 'lib/cards/promotion/mixins';
11
12
  @forward 'lib/cards/search/mixins';
13
+ @forward 'lib/cards/product/mixins';
14
+ @forward 'lib/cards/promotion/mixins';
12
15
  @forward 'lib/cards/selectable/mixins';
13
16
  @forward 'lib/divider/mixins';
14
17
  @forward 'lib/flight-details/mixins';
@@ -38,7 +41,6 @@
38
41
  @forward 'lib/pagination/mixins';
39
42
  @forward 'lib/price/mixins';
40
43
  @forward 'lib/price-box/mixins';
41
- @forward 'lib/cards/promotion/mixins';
42
44
  @forward 'lib/promo-tag/mixins';
43
45
  @forward 'lib/ratings-reviews/customer-review/mixins';
44
46
  @forward 'lib/ratings-reviews/numerical/mixins';
@@ -53,6 +55,7 @@
53
55
  @forward 'lib/social-proofing/mixins';
54
56
  @forward 'lib/tabs/in-page/mixins';
55
57
  @forward 'lib/tabs/anchor/mixins';
58
+ @forward 'lib/timeline/mixins';
56
59
  @forward 'lib/tooltip/mixins';
57
60
  @forward 'lib/travel-aware-banner/mixins';
58
61
  @forward 'lib/typography/mixins';