@tui/design-system 1.9.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.
Files changed (40) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/dist/themes/crystalski/index.css +37 -33
  3. package/dist/themes/crystalski/index.css.map +1 -1
  4. package/dist/themes/firstchoice/index.css +36 -33
  5. package/dist/themes/firstchoice/index.css.map +1 -1
  6. package/dist/themes/tui/index.css +45 -41
  7. package/dist/themes/tui/index.css.map +1 -1
  8. package/package.json +7 -1
  9. package/scss/lib/accordion/_mixins.scss +17 -1
  10. package/scss/lib/cards/product/_index.scss +3 -0
  11. package/scss/lib/cards/product/_mixins.scss +351 -0
  12. package/scss/lib/cards/product/_variables.scss +9 -0
  13. package/scss/lib/cards/search/_mixins.scss +15 -2
  14. package/scss/lib/cards/selectable/_mixins.scss +34 -11
  15. package/scss/lib/forms/input-checkbox/_mixins.scss +7 -7
  16. package/scss/lib/forms/input-radio/_mixins.scss +7 -7
  17. package/scss/lib/forms/input-select/_mixins.scss +21 -2
  18. package/scss/lib/grid/_column.scss +21 -0
  19. package/scss/lib/grid/_mixins.scss +89 -0
  20. package/scss/lib/highlight-panel/_mixins.scss +16 -2
  21. package/scss/lib/info-tag/_mixins.scss +2 -0
  22. package/scss/lib/patterns/reasons-to-book/_index.scss +3 -0
  23. package/scss/lib/patterns/reasons-to-book/_mixins.scss +86 -0
  24. package/scss/lib/patterns/reasons-to-book/_variables.scss +3 -0
  25. package/scss/lib/show-more-less/_mixins.scss +15 -4
  26. package/scss/lib/skeleton/_mixins.scss +33 -12
  27. package/scss/lib/timeline/_index.scss +2 -0
  28. package/scss/lib/timeline/_mixins.scss +87 -0
  29. package/scss/mixins.scss +6 -2
  30. package/scss/reset.scss +4 -0
  31. package/scss/themes/crystalski/_overrides.scss +25 -26
  32. package/scss/themes/crystalski/index.scss +13 -10
  33. package/scss/themes/firstchoice/_overrides.scss +33 -28
  34. package/scss/themes/firstchoice/index.scss +9 -6
  35. package/scss/themes/firstchoice/theme.json +7 -0
  36. package/scss/themes/tui/_overrides.scss +8 -3
  37. package/scss/themes/tui/index.scss +12 -9
  38. package/scss/variables/base-theme.json +30 -8
  39. package/scss/variables.scss +5 -2
  40. package/types/components.ts +14 -1
@@ -22,12 +22,10 @@ $uilib-input-select-included: false !default;
22
22
 
23
23
  display: flex;
24
24
  flex-flow: row nowrap;
25
- gap: var(--uilib-spacing-200);
26
25
  align-items: center;
27
26
 
28
27
  width: 100%;
29
28
  height: 2.5rem;
30
- padding: 0 var(--uilib-spacing-200);
31
29
 
32
30
  color: var(--uilib-color-text-body);
33
31
 
@@ -39,6 +37,9 @@ $uilib-input-select-included: false !default;
39
37
  cursor: pointer;
40
38
 
41
39
  &::after {
40
+ position: absolute;
41
+ top: 50%;
42
+ right: var(--uilib-spacing-200);
42
43
  content: '';
43
44
 
44
45
  display: flex;
@@ -54,6 +55,8 @@ $uilib-input-select-included: false !default;
54
55
  -webkit-mask-size: cover;
55
56
  mask-size: cover;
56
57
 
58
+ transform: translateY(-50%);
59
+
57
60
  pointer-events: none;
58
61
  }
59
62
 
@@ -67,6 +70,9 @@ $uilib-input-select-included: false !default;
67
70
 
68
71
  &__select {
69
72
  width: 100%;
73
+ height: calc(2.5rem - var(--uilib-stroke-size-050));
74
+ padding: var(--uilib-spacing-200);
75
+ padding-right: calc(var(--uilib-icon-size-medium) + var(--uilib-spacing-400));
70
76
 
71
77
  color: var(--uilib-color-text-body);
72
78
  font: var(--uilib-typography-body-medium);
@@ -74,6 +80,7 @@ $uilib-input-select-included: false !default;
74
80
  text-overflow: ellipsis;
75
81
 
76
82
  border: 0;
83
+ border-radius: var(--uilib-border-radius-100);
77
84
 
78
85
  background: none;
79
86
 
@@ -91,9 +98,21 @@ $uilib-input-select-included: false !default;
91
98
  }
92
99
 
93
100
  &__icon {
101
+ position: absolute;
102
+ top: 50%;
103
+ left: var(--uilib-spacing-200);
104
+
94
105
  flex-shrink: 0;
95
106
 
96
107
  background-color: var(--uilib-color-status-info-icon);
108
+
109
+ transform: translateY(-50%);
110
+
111
+ pointer-events: none;
112
+ }
113
+
114
+ &:has(&__icon) &__select {
115
+ padding-left: calc(var(--uilib-icon-size-xsmall) + var(--uilib-spacing-400));
97
116
  }
98
117
 
99
118
  &:has(select[disabled]),
@@ -47,6 +47,27 @@
47
47
  #{$uilib-grid-selector-column}--order#{$prefix}-reset {
48
48
  @include uilib-grid-col-order-reset;
49
49
  }
50
+
51
+ // Dividers
52
+ #{$uilib-grid-selector-column}--divider#{$prefix}-left {
53
+ @include uilib-grid-col-divider-left;
54
+ }
55
+
56
+ #{$uilib-grid-selector-column}--divider#{$prefix}-top {
57
+ @include uilib-grid-col-divider-top;
58
+ }
59
+
60
+ #{$uilib-grid-selector-column}--divider#{$prefix}-left-none {
61
+ @include uilib-grid-col-divider-left-none;
62
+ }
63
+
64
+ #{$uilib-grid-selector-column}--divider#{$prefix}-top-none {
65
+ @include uilib-grid-col-divider-top-none;
66
+ }
67
+
68
+ #{$uilib-grid-selector-column}--divider#{$prefix}-none {
69
+ @include uilib-grid-col-divider-none;
70
+ }
50
71
  }
51
72
 
52
73
  @include uilib-generate-grid-for-resolution;
@@ -130,3 +130,92 @@
130
130
  @mixin uilib-grid-col-order-reset {
131
131
  order: 0;
132
132
  }
133
+
134
+ /* --- Grid Column Dividers ------- */
135
+
136
+ /// Adds a vertical divider (left edge) to a grid column using ::after.
137
+ /// Positioned in the centre of the column gap.
138
+ /// Can be combined with uilib-grid-col-divider-top on the same element.
139
+ ///
140
+ /// @example scss - Usage
141
+ /// .my-col { @include uilib-grid-col-divider-left; }
142
+ ///
143
+ /// @example scss - Both dividers on the same column
144
+ /// .my-col {
145
+ /// @include uilib-grid-col-divider-left;
146
+ /// @include uilib-grid-col-divider-top;
147
+ /// }
148
+
149
+ @mixin uilib-grid-col-divider-left {
150
+ position: relative;
151
+
152
+ &::after {
153
+ position: absolute;
154
+ top: 0;
155
+ left: calc(var(--uilib-grid-gutter-width) / -2);
156
+ bottom: 0;
157
+ content: '';
158
+
159
+ border-left: var(--uilib-stroke-size-025) var(--uilib-stroke-style-solid) var(--uilib-color-border-divider);
160
+
161
+ pointer-events: none;
162
+ }
163
+ }
164
+
165
+ /// Adds a horizontal divider (top edge) to a grid column using ::before.
166
+ /// Positioned in the centre of the row gap.
167
+ /// Can be combined with uilib-grid-col-divider-left on the same element.
168
+ ///
169
+ /// @example scss - Usage
170
+ /// .my-col { @include uilib-grid-col-divider-top; }
171
+
172
+ @mixin uilib-grid-col-divider-top {
173
+ position: relative;
174
+
175
+ &::before {
176
+ position: absolute;
177
+ top: calc(var(--uilib-grid-gutter-height) / -2);
178
+ left: 0;
179
+ right: 0;
180
+ content: '';
181
+
182
+ border-top: var(--uilib-stroke-size-025) var(--uilib-stroke-style-solid) var(--uilib-color-border-divider);
183
+
184
+ pointer-events: none;
185
+ }
186
+ }
187
+
188
+ /// Removes the left (vertical) divider from a grid column.
189
+
190
+ @mixin uilib-grid-col-divider-left-none {
191
+ &::after {
192
+ content: none;
193
+ }
194
+ }
195
+
196
+ /// Removes the top (horizontal) divider from a grid column.
197
+
198
+ @mixin uilib-grid-col-divider-top-none {
199
+ &::before {
200
+ content: none;
201
+ }
202
+ }
203
+
204
+ /// Removes both dividers from a grid column.
205
+ ///
206
+ /// @example scss - Remove all dividers at a breakpoint
207
+ /// .my-col {
208
+ /// @include uilib-grid-col-divider-left;
209
+ /// @include uilib-grid-col-divider-top;
210
+ /// @include uilib-breakpoint(md) { @include uilib-grid-col-divider-none; }
211
+ /// }
212
+
213
+ @mixin uilib-grid-col-divider-none {
214
+ &::after {
215
+ content: none;
216
+ }
217
+
218
+ &::before {
219
+ content: none;
220
+ }
221
+ }
@@ -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 {
@@ -47,6 +47,8 @@ $uilib-info-tag-list-included: false !default;
47
47
  }
48
48
 
49
49
  .uilib-info-tag__content {
50
+ min-width: 0;
51
+
50
52
  line-height: 1rem;
51
53
  overflow-wrap: break-word;
52
54
  }
@@ -0,0 +1,3 @@
1
+ // Reasons to book / index
2
+ @use 'mixins' as *;
3
+ @include uilib-reasons-to-book;
@@ -0,0 +1,86 @@
1
+ // Reasons to book / _mixins
2
+ @use 'variables' as *;
3
+ @use '../../link/mixins' as *;
4
+ @use '../../cards/carousel/mixins' as *;
5
+
6
+ $uilib-reasons-to-book-included: false !default;
7
+
8
+ @mixin uilib-reasons-to-book() {
9
+ @if not $uilib-reasons-to-book-included {
10
+ $uilib-reasons-to-book-included: true !global;
11
+
12
+ @include uilib-link;
13
+ @include uilib-carousel;
14
+ @include uilib-reasons-to-book-master;
15
+ }
16
+ }
17
+
18
+ @mixin uilib-reasons-to-book-master() {
19
+ .uilib-reasons-to-book {
20
+ container-name: uilib-reasons-to-book;
21
+ container-type: inline-size;
22
+
23
+ &__heading {
24
+ margin: 0 0 var(--uilib-spacing-400);
25
+
26
+ color: var(--uilib-color-text-strong);
27
+ font: var(--uilib-typography-heading-xxlarge);
28
+ }
29
+
30
+ // Reason cards keep their own natural (content-driven) width and simply overflow/scroll
31
+ // rather than being evenly redivided to fill the viewport — unlike the generic Carousel
32
+ // `item` slide, which defaults to `flex: 0 0 calc(100cqw / visible)`. The trailing divider
33
+ // line is a `::after` pseudo-element on the slide itself (not a separate Divider element),
34
+ // so this internal `gap` (not the track gap, which Embla would mismeasure) provides the
35
+ // space between the reason content and its line — and the line is automatically omitted on
36
+ // the last slide via `:not(:last-child)`, with no JS "is this the last item" check needed.
37
+ .uilib-carousel__slide {
38
+ flex: 0 0 auto;
39
+ gap: var(--uilib-spacing-400);
40
+
41
+ &:not(:last-child)::after {
42
+ content: '';
43
+
44
+ flex: 0 0 auto;
45
+ align-self: stretch;
46
+
47
+ border-inline-end: var(--uilib-stroke-size-025) solid var(--uilib-color-border-divider);
48
+ }
49
+ }
50
+
51
+ &__reason {
52
+ display: flex;
53
+ gap: var(--uilib-spacing-200);
54
+ align-items: center;
55
+ }
56
+
57
+ &__pictogram {
58
+ flex: 0 0 auto;
59
+
60
+ width: 4.5rem; /* 72 / 16 — fixed pictogram size per Figma, no matching icon-size token */
61
+ height: 4.5rem;
62
+ }
63
+
64
+ &__text {
65
+ max-width: 9.875rem; /* 158 / 16 — keeps the ~238px card pitch from Figma; wraps to 2 lines */
66
+ margin: 0;
67
+
68
+ color: var(--uilib-color-text-strong);
69
+ font: var(--uilib-typography-component-heading-small-strong);
70
+ }
71
+
72
+ // Compact reflow: below this container width the reason card centres its text and stacks
73
+ // the pictogram above it. Driven by the pattern's own width, not the viewport, so it works
74
+ // the same whether the carousel is full-bleed or nested in a narrower column.
75
+ // 34.1875rem = 547px — the top of the Compact range in Figma (288–547px); Static/Scrollable
76
+ // (548px+) stay above it.
77
+ /* stylelint-disable-next-line order/order */
78
+ @container uilib-reasons-to-book (max-width: 34.1875rem) {
79
+ .uilib-reasons-to-book__reason {
80
+ flex-direction: column;
81
+
82
+ text-align: center;
83
+ }
84
+ }
85
+ }
86
+ }
@@ -0,0 +1,3 @@
1
+ // Reasons to book / _variables
2
+
3
+ $uilib-reasons-to-book-variables: () !default;
@@ -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';
@@ -60,5 +63,6 @@
60
63
 
61
64
  // Pattern mixins
62
65
  @forward 'lib/patterns/edit-search/mixins';
66
+ @forward 'lib/patterns/reasons-to-book/mixins';
63
67
  @forward 'lib/patterns/review-card/mixins';
64
68
  @forward 'lib/patterns/review-summary/mixins';
package/scss/reset.scss CHANGED
@@ -124,10 +124,14 @@ textarea:-webkit-autofill:focus,
124
124
  select:-webkit-autofill,
125
125
  select:-webkit-autofill:hover,
126
126
  select:-webkit-autofill:focus {
127
+ border-radius: inherit;
128
+
127
129
  background-color: transparent;
128
130
 
129
131
  -webkit-box-shadow: none;
130
132
  -webkit-text-fill-color: var(--uilib-color-text-body);
133
+
134
+ transition: background-color 9999s ease-in-out 0s !important;
131
135
  }
132
136
 
133
137
  /* Remove spinner arrows from number input */
@@ -126,6 +126,23 @@ $uilib-crystalski-card-icon-variables: map.merge(
126
126
  )
127
127
  );
128
128
 
129
+ // Card - product
130
+ $uilib-crystalski-card-product-variables: map.merge(
131
+ $uilib-card-product-variables,
132
+ (
133
+ highlights-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/chevron-down.svg'),
134
+ )
135
+ );
136
+
137
+ // Card - promotion
138
+ $uilib-crystalski-card-promotion-variables: map.merge(
139
+ $uilib-card-promotion-variables,
140
+ (
141
+ cta-copy-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/copy.svg'),
142
+ cta-copied-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/checkmark-circled-filled.svg'),
143
+ )
144
+ );
145
+
129
146
  // Card - selectable
130
147
  $uilib-crystalski-card-selectable-variables: map.merge(
131
148
  $uilib-card-selectable-variables,
@@ -317,15 +334,6 @@ $uilib-crystalski-pagination-variables: map.merge(
317
334
  )
318
335
  );
319
336
 
320
- // Promo banner
321
- $uilib-crystalski-card-promotion-variables: map.merge(
322
- $uilib-card-promotion-variables,
323
- (
324
- cta-copy-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/copy.svg'),
325
- cta-copied-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/checkmark-circled-filled.svg'),
326
- )
327
- );
328
-
329
337
  // Ratings and Reviews - Numerical
330
338
  $uilib-crystalski-ratings-numerical-variables: map.merge(
331
339
  $uilib-ratings-numerical-variables,
@@ -361,6 +369,14 @@ $uilib-crystalski-show-more-less-variables: map.merge(
361
369
  )
362
370
  );
363
371
 
372
+ // Social proofing
373
+ $uilib-crystalski-social-proofing-variables: map.merge(
374
+ $uilib-social-proofing-variables,
375
+ (
376
+ close-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/cross.svg'),
377
+ )
378
+ );
379
+
364
380
  // Tabs - in-page
365
381
  $uilib-crystalski-tabs-in-page-variables: map.merge(
366
382
  $uilib-tabs-in-page-variables,
@@ -378,20 +394,3 @@ $uilib-crystalski-tabs-anchor-variables: map.merge(
378
394
  scroll-right-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/chevron-right.svg'),
379
395
  )
380
396
  );
381
-
382
- // Skeleton
383
- $uilib-crystalski-skeleton-variables: map.merge(
384
- $uilib-skeleton-variables,
385
- (
386
- color: map.get($uilib-color-semantic-crystalski, 'other-skeleton-loading'),
387
- shimmer-color: map.get($uilib-crystalski-primitives, 'color-neutral-20'),
388
- )
389
- );
390
-
391
- // Social proofing
392
- $uilib-crystalski-social-proofing-variables: map.merge(
393
- $uilib-social-proofing-variables,
394
- (
395
- close-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/cross.svg'),
396
- )
397
- );