@tui/design-system 1.7.0 → 1.8.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 (36) hide show
  1. package/CHANGELOG.md +68 -1
  2. package/dist/themes/crystalski/index.css +27 -0
  3. package/dist/themes/crystalski/index.css.map +1 -1
  4. package/dist/themes/firstchoice/index.css +27 -0
  5. package/dist/themes/firstchoice/index.css.map +1 -1
  6. package/dist/themes/tui/index.css +27 -0
  7. package/dist/themes/tui/index.css.map +1 -1
  8. package/package.json +10 -9
  9. package/scss/lib/accordion/_mixins.scss +12 -3
  10. package/scss/lib/cards/carousel/_index.scss +3 -0
  11. package/scss/lib/cards/carousel/_mixins.scss +164 -0
  12. package/scss/lib/cards/carousel/_variables.scss +13 -0
  13. package/scss/lib/highlight-panel/_index.scss +2 -0
  14. package/scss/lib/highlight-panel/_mixins.scss +244 -0
  15. package/scss/lib/highlight-panel/_variables.scss +21 -0
  16. package/scss/lib/list/_mixins.scss +51 -0
  17. package/scss/lib/list/_variables.scss +1 -0
  18. package/scss/lib/patterns/review-card/_index.scss +3 -0
  19. package/scss/lib/patterns/review-card/_mixins.scss +283 -0
  20. package/scss/lib/patterns/review-card/_variables.scss +3 -0
  21. package/scss/lib/ratings-reviews/range-icons/_mixins.scss +16 -2
  22. package/scss/lib/ratings-reviews/range-icons/_variables.scss +2 -0
  23. package/scss/mixins.scss +3 -0
  24. package/scss/themes/crystalski/_overrides.scss +17 -0
  25. package/scss/themes/crystalski/index.scss +6 -0
  26. package/scss/themes/crystalski/theme.json +7 -0
  27. package/scss/themes/firstchoice/_overrides.scss +19 -0
  28. package/scss/themes/firstchoice/index.scss +6 -0
  29. package/scss/themes/firstchoice/theme.json +13 -0
  30. package/scss/themes/tui/_overrides.scss +19 -0
  31. package/scss/themes/tui/index.scss +6 -0
  32. package/scss/themes/tui/theme.json +8 -0
  33. package/scss/variables/_primitives.scss +3 -0
  34. package/scss/variables/base-theme.json +170 -1
  35. package/scss/variables.scss +5 -0
  36. package/types/components.ts +7 -2
package/scss/mixins.scss CHANGED
@@ -6,6 +6,7 @@
6
6
  @forward 'lib/button/mixins';
7
7
  @forward 'lib/cards/card/mixins';
8
8
  @forward 'lib/cards/article/mixins';
9
+ @forward 'lib/cards/carousel/mixins';
9
10
  @forward 'lib/cards/icon/mixins';
10
11
  @forward 'lib/cards/search/mixins';
11
12
  @forward 'lib/cards/selectable/mixins';
@@ -25,6 +26,7 @@
25
26
  @forward 'lib/forms/input-text/mixins';
26
27
  @forward 'lib/grid/mixins';
27
28
  @forward 'lib/hero/mixins';
29
+ @forward 'lib/highlight-panel/mixins';
28
30
  @forward 'lib/icon/mixins';
29
31
  @forward 'lib/icon-button/mixins';
30
32
  @forward 'lib/image/mixins';
@@ -55,3 +57,4 @@
55
57
  @forward 'lib/travel-aware-banner/mixins';
56
58
  @forward 'lib/typography/mixins';
57
59
  @forward 'lib/utility/mixins';
60
+ @forward 'lib/patterns/review-card/mixins';
@@ -109,6 +109,15 @@ $uilib-crystalski-card-article-variables: map.merge(
109
109
  )
110
110
  );
111
111
 
112
+ // Card - carousel
113
+ $uilib-crystalski-carousel-variables: map.merge(
114
+ $uilib-carousel-variables,
115
+ (
116
+ prev-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/chevron-left.svg'),
117
+ next-icon: url('#{$uilib-assets-base-url}v3/icons/crystalski/standard/chevron-right.svg'),
118
+ )
119
+ );
120
+
112
121
  // Card - icon
113
122
  $uilib-crystalski-card-icon-variables: map.merge(
114
123
  $uilib-card-icon-variables,
@@ -223,6 +232,14 @@ $uilib-crystalski-input-text-variables: map.merge(
223
232
  )
224
233
  );
225
234
 
235
+ // Highlight panel
236
+ $uilib-crystalski-highlight-panel-variables: map.merge(
237
+ $uilib-highlight-panel-variables,
238
+ (
239
+ header-font-color-brand: var(--uilib-color-text-body),
240
+ )
241
+ );
242
+
226
243
  // Icon button
227
244
  $uilib-crystalski-icon-button-variables: map.merge(
228
245
  $uilib-icon-button-variables,
@@ -77,6 +77,9 @@
77
77
  // Card - article
78
78
  @include util.uilib-build-css-vars('card-article', $uilib-crystalski-card-article-variables);
79
79
 
80
+ // Card - carousel
81
+ @include util.uilib-build-css-vars('carousel', $uilib-crystalski-carousel-variables);
82
+
80
83
  // Card - icon
81
84
  @include util.uilib-build-css-vars('card-icon', $uilib-crystalski-card-icon-variables);
82
85
 
@@ -131,6 +134,9 @@
131
134
  // Hero
132
135
  @include util.uilib-build-css-vars('hero', $uilib-hero-variables);
133
136
 
137
+ // Highlight panel
138
+ @include util.uilib-build-css-vars('highlight-panel', $uilib-crystalski-highlight-panel-variables);
139
+
134
140
  // Icon button
135
141
  @include util.uilib-build-css-vars('icon-button', $uilib-crystalski-icon-button-variables);
136
142
 
@@ -203,6 +203,13 @@
203
203
  }
204
204
  }
205
205
  },
206
+ "highlight-panel": {
207
+ "tokens": {
208
+ "highlight-panel-header-font-color-brand": {
209
+ "primitive": "uilib-color-text-body"
210
+ }
211
+ }
212
+ },
206
213
  "input-checkbox": {
207
214
  "tokens": {
208
215
  "input-checkbox-text-color-strong": {
@@ -176,6 +176,15 @@ $uilib-firstchoice-card-article-variables: map.merge(
176
176
  )
177
177
  );
178
178
 
179
+ // Card - carousel
180
+ $uilib-firstchoice-carousel-variables: map.merge(
181
+ $uilib-carousel-variables,
182
+ (
183
+ prev-icon: url('#{$uilib-assets-base-url}v3/icons/firstchoice/standard/chevron-left.svg'),
184
+ next-icon: url('#{$uilib-assets-base-url}v3/icons/firstchoice/standard/chevron-right.svg'),
185
+ )
186
+ );
187
+
179
188
  // Card - icon
180
189
  $uilib-firstchoice-card-icon-variables: map.merge(
181
190
  $uilib-card-icon-variables,
@@ -293,6 +302,16 @@ $uilib-firstchoice-input-text-variables: map.merge(
293
302
  )
294
303
  );
295
304
 
305
+ // Highlight panel
306
+ $uilib-firstchoice-highlight-panel-variables: map.merge(
307
+ $uilib-highlight-panel-variables,
308
+ (
309
+ radius: var(--uilib-border-radius-200),
310
+ header-font-color-brand: var(--uilib-color-text-strong),
311
+ header-icon-color-brand: var(--uilib-color-text-strong),
312
+ )
313
+ );
314
+
296
315
  // Icon button
297
316
  $uilib-firstchoice-icon-button-variables: map.merge(
298
317
  $uilib-icon-button-variables,
@@ -77,6 +77,9 @@
77
77
  // Card - article
78
78
  @include util.uilib-build-css-vars('card-article', $uilib-firstchoice-card-article-variables);
79
79
 
80
+ // Card - carousel
81
+ @include util.uilib-build-css-vars('carousel', $uilib-firstchoice-carousel-variables);
82
+
80
83
  // Card - icon
81
84
  @include util.uilib-build-css-vars('card-icon', $uilib-firstchoice-card-icon-variables);
82
85
 
@@ -131,6 +134,9 @@
131
134
  // Hero
132
135
  @include util.uilib-build-css-vars('hero', $uilib-hero-variables);
133
136
 
137
+ // Highlight panel
138
+ @include util.uilib-build-css-vars('highlight-panel', $uilib-firstchoice-highlight-panel-variables);
139
+
134
140
  // Icon button
135
141
  @include util.uilib-build-css-vars('icon-button', $uilib-firstchoice-icon-button-variables);
136
142
 
@@ -265,6 +265,19 @@
265
265
  }
266
266
  }
267
267
  },
268
+ "highlight-panel": {
269
+ "tokens": {
270
+ "highlight-panel-radius": {
271
+ "primitive": "uilib-border-radius-200"
272
+ },
273
+ "highlight-panel-header-font-color-brand": {
274
+ "primitive": "uilib-color-text-strong"
275
+ },
276
+ "highlight-panel-header-icon-color-brand": {
277
+ "primitive": "uilib-color-text-strong"
278
+ }
279
+ }
280
+ },
268
281
  "icon-button": {
269
282
  "tokens": {
270
283
  "icon-button-radius": {
@@ -22,6 +22,25 @@ $uilib-tui-card-search-variables: map.merge(
22
22
  )
23
23
  );
24
24
 
25
+ // Highlight panel
26
+ $uilib-tui-highlight-panel-variables: map.merge(
27
+ $uilib-highlight-panel-variables,
28
+ (
29
+ header-bg-overlay-brand: radial-gradient(
30
+ circle farthest-corner at 99.91% 0%,
31
+ rgb(255 255 255 / 0%) 0%,
32
+ rgb(255 255 255 / 20%) 20%,
33
+ rgb(255 255 255 / 0%) 20%,
34
+ rgb(255 255 255 / 20%) 40%,
35
+ rgb(255 255 255 / 0%) 40%,
36
+ rgb(255 255 255 / 20%) 60%,
37
+ rgb(255 255 255 / 0%) 60%,
38
+ rgb(255 255 255 / 20%) 80%,
39
+ rgb(255 255 255 / 0%) 80%
40
+ ),
41
+ )
42
+ );
43
+
25
44
  // Ratings and Reviews - Numerical
26
45
  $uilib-tui-ratings-numerical-variables: map.merge(
27
46
  $uilib-ratings-numerical-variables,
@@ -77,6 +77,9 @@
77
77
  // Card - article
78
78
  @include util.uilib-build-css-vars('card-article', $uilib-card-article-variables);
79
79
 
80
+ // Card - carousel
81
+ @include util.uilib-build-css-vars('carousel', $uilib-carousel-variables);
82
+
80
83
  // Card - icon
81
84
  @include util.uilib-build-css-vars('card-icon', $uilib-card-icon-variables);
82
85
 
@@ -191,6 +194,9 @@
191
194
  // Social proofing
192
195
  @include util.uilib-build-css-vars('social-proofing', $uilib-social-proofing-variables);
193
196
 
197
+ // Highlight panel
198
+ @include util.uilib-build-css-vars('highlight-panel', $uilib-tui-highlight-panel-variables);
199
+
194
200
  // Tabs - in-page
195
201
  @include util.uilib-build-css-vars('tabs-in-page', $uilib-tabs-in-page-variables);
196
202
 
@@ -154,5 +154,13 @@
154
154
  "primitive": "uilib-color-brand-musement"
155
155
  }
156
156
  }
157
+ },
158
+ "highlight-panel": {
159
+ "tokens": {
160
+ "highlight-panel-header-bg-overlay-brand": {
161
+ "primitive": "radial-gradient",
162
+ "longValue": true
163
+ }
164
+ }
157
165
  }
158
166
  }
@@ -80,6 +80,9 @@ $uilib-primitives: (
80
80
  color-brand-tripadvisor-green-60: #00b747,
81
81
  color-brand-tripadvisor-pine-green: #002b11,
82
82
  color-brand-paypal-blue: #253b80,
83
+ color-brand-holidaycheck-blue: #0e55cd,
84
+ color-brand-holidaycheck-yellow: #ffca3a,
85
+ color-brand-holidaycheck-lightblue: #c7d5ed,
83
86
 
84
87
  // 11px
85
88
  font-size-40: 0.6875rem,
@@ -1163,6 +1163,58 @@
1163
1163
  }
1164
1164
  }
1165
1165
  },
1166
+ "carousel": {
1167
+ "tokens": {
1168
+ "carousel-gap": {
1169
+ "displayType": "size",
1170
+ "primitive": "uilib-spacing-400",
1171
+ "title": "Item gap",
1172
+ "description": "Gap between carousel items and slides"
1173
+ },
1174
+ "carousel-viewport-padding": {
1175
+ "displayType": "size",
1176
+ "primitive": "uilib-spacing-200",
1177
+ "title": "Viewport padding",
1178
+ "description": "Applied as block padding on the viewport (preserves item shadow overflow) and inline padding on slides and footer (aligns content with the viewport edge)"
1179
+ },
1180
+ "carousel-prev-icon": {
1181
+ "displayType": "icon",
1182
+ "title": "Previous control icon",
1183
+ "description": "Previous control icon",
1184
+ "longValue": true
1185
+ },
1186
+ "carousel-next-icon": {
1187
+ "displayType": "icon",
1188
+ "title": "Next control icon",
1189
+ "description": "Next control icon",
1190
+ "longValue": true
1191
+ },
1192
+ "carousel-counter-color": {
1193
+ "displayType": "color",
1194
+ "primitive": "uilib-color-text-body",
1195
+ "title": "Counter colour",
1196
+ "description": "Text colour of the counter indicator"
1197
+ },
1198
+ "carousel-counter-font": {
1199
+ "displayType": "font",
1200
+ "primitive": "uilib-typography-body-medium",
1201
+ "title": "Counter font",
1202
+ "description": "Typography of the counter indicator"
1203
+ },
1204
+ "carousel-motion-duration": {
1205
+ "displayType": "other",
1206
+ "primitive": "300ms",
1207
+ "title": "Motion duration",
1208
+ "description": "Slide transition duration (CSS time value, e.g. 300ms)"
1209
+ },
1210
+ "carousel-motion-easing": {
1211
+ "displayType": "other",
1212
+ "primitive": "ease-out",
1213
+ "title": "Motion easing",
1214
+ "description": "Slide transition easing function (CSS easing keyword or cubic-bezier)"
1215
+ }
1216
+ }
1217
+ },
1166
1218
  "flight-details": {
1167
1219
  "tokens": {
1168
1220
  "flight-details-icon": {
@@ -1281,6 +1333,106 @@
1281
1333
  }
1282
1334
  }
1283
1335
  },
1336
+ "highlight-panel": {
1337
+ "tokens": {
1338
+ "highlight-panel-radius": {
1339
+ "displayType": "radius",
1340
+ "primitive": "uilib-border-radius-400",
1341
+ "title": "Panel radius",
1342
+ "description": "Border radius for the panel container"
1343
+ },
1344
+ "highlight-panel-border-color": {
1345
+ "displayType": "color",
1346
+ "primitive": "uilib-color-border-card",
1347
+ "title": "Border colour",
1348
+ "description": "Border colour for the panel"
1349
+ },
1350
+ "highlight-panel-bg-color": {
1351
+ "displayType": "color",
1352
+ "primitive": "uilib-color-canvas-default",
1353
+ "title": "Background colour",
1354
+ "description": "Background colour for the panel content"
1355
+ },
1356
+ "highlight-panel-header-font": {
1357
+ "displayType": "font",
1358
+ "primitive": "uilib-typography-component-heading-medium",
1359
+ "title": "Header font",
1360
+ "description": "Font for the header title"
1361
+ },
1362
+ "highlight-panel-header-font-brand": {
1363
+ "displayType": "font",
1364
+ "primitive": "uilib-typography-component-heading-large-strong",
1365
+ "title": "Header font (brand)",
1366
+ "description": "Font for the header title in brand variant"
1367
+ },
1368
+ "highlight-panel-header-font-color": {
1369
+ "displayType": "color",
1370
+ "primitive": "uilib-color-text-strong",
1371
+ "title": "Header font colour",
1372
+ "description": "Font colour for the header title in default variant"
1373
+ },
1374
+ "highlight-panel-header-font-color-strong": {
1375
+ "displayType": "color",
1376
+ "primitive": "uilib-color-text-inverse",
1377
+ "title": "Header font colour (strong)",
1378
+ "description": "Font colour for the header title in strong variant"
1379
+ },
1380
+ "highlight-panel-header-font-color-brand": {
1381
+ "displayType": "color",
1382
+ "primitive": "uilib-color-text-strong",
1383
+ "title": "Header font colour (brand)",
1384
+ "description": "Font colour for the header title in brand variant"
1385
+ },
1386
+ "highlight-panel-header-icon-color": {
1387
+ "displayType": "color",
1388
+ "primitive": "uilib-color-core-interaction",
1389
+ "title": "Header icon colour",
1390
+ "description": "Icon colour for the header toggle in default variant"
1391
+ },
1392
+ "highlight-panel-header-icon-color-strong": {
1393
+ "displayType": "color",
1394
+ "primitive": "uilib-color-text-inverse",
1395
+ "title": "Header icon colour (strong)",
1396
+ "description": "Icon colour for the header toggle in strong variant"
1397
+ },
1398
+ "highlight-panel-header-icon-color-brand": {
1399
+ "displayType": "color",
1400
+ "primitive": "uilib-color-core-interaction",
1401
+ "title": "Header icon colour (brand)",
1402
+ "description": "Icon colour for the header toggle in brand variant"
1403
+ },
1404
+ "highlight-panel-header-bg-color": {
1405
+ "displayType": "color",
1406
+ "primitive": "uilib-color-core-surface",
1407
+ "title": "Header background",
1408
+ "description": "Background colour for the default variant header"
1409
+ },
1410
+ "highlight-panel-header-bg-color-strong": {
1411
+ "displayType": "color",
1412
+ "primitive": "uilib-color-core-brand-strong",
1413
+ "title": "Header background (strong)",
1414
+ "description": "Background colour for the strong variant header"
1415
+ },
1416
+ "highlight-panel-header-bg-color-brand": {
1417
+ "displayType": "color",
1418
+ "primitive": "uilib-color-core-brand",
1419
+ "title": "Header background (brand)",
1420
+ "description": "Background colour for the brand variant header"
1421
+ },
1422
+ "highlight-panel-header-bg-overlay-brand": {
1423
+ "displayType": "color",
1424
+ "primitive": "none",
1425
+ "title": "Header background overlay (brand)",
1426
+ "description": "Background overlay for the brand variant header"
1427
+ },
1428
+ "highlight-panel-toggle-icon": {
1429
+ "displayType": "icon",
1430
+ "title": "Toggle icon",
1431
+ "description": "Chevron icon used for the collapsible open/close indicator",
1432
+ "longValue": true
1433
+ }
1434
+ }
1435
+ },
1284
1436
  "icon-button": {
1285
1437
  "displayType": "color",
1286
1438
  "tokens": {
@@ -1900,7 +2052,8 @@
1900
2052
  "list-bullet-icon": {
1901
2053
  "title": "List bullet icon",
1902
2054
  "description": "List bullet icon",
1903
- "displayType": "icon"
2055
+ "displayType": "icon",
2056
+ "longValue": true
1904
2057
  },
1905
2058
  "list-image-radius": {
1906
2059
  "primitive": "uilib-border-radius-100",
@@ -1919,6 +2072,12 @@
1919
2072
  "title": "List multiline title font",
1920
2073
  "description": "List multiline title font",
1921
2074
  "displayType": "font"
2075
+ },
2076
+ "list-highlight-color": {
2077
+ "primitive": "uilib-color-text-promotion",
2078
+ "title": "List highlight text color",
2079
+ "description": "List highlight text color",
2080
+ "displayType": "color"
1922
2081
  }
1923
2082
  }
1924
2083
  },
@@ -2355,6 +2514,16 @@
2355
2514
  "description": "TripAdvisor logo as leading image on ratings (inverse)",
2356
2515
  "longValue": true,
2357
2516
  "displayType": "image"
2517
+ },
2518
+ "ratings-range-icons-holidaycheck-rating-icon": {
2519
+ "title": "HolidayCheck unchecked rating icon",
2520
+ "description": "HolidayCheck unchecked rating single tile background-image",
2521
+ "longValue": true
2522
+ },
2523
+ "ratings-range-icons-holidaycheck-rating-checked-icon": {
2524
+ "title": "HolidayCheck checked rating icon",
2525
+ "description": "HolidayCheck checked rating single tile background-image",
2526
+ "longValue": true
2358
2527
  }
2359
2528
  }
2360
2529
  },
@@ -24,6 +24,7 @@
24
24
  @forward 'lib/button/variables';
25
25
  @forward 'lib/cards/card/variables';
26
26
  @forward 'lib/cards/article/variables';
27
+ @forward 'lib/cards/carousel/variables';
27
28
  @forward 'lib/cards/icon/variables';
28
29
  @forward 'lib/cards/search/variables';
29
30
  @forward 'lib/cards/selectable/variables';
@@ -44,6 +45,7 @@
44
45
  @forward 'lib/forms/input-text/variables';
45
46
  @forward 'lib/grid/variables';
46
47
  @forward 'lib/hero/variables';
48
+ @forward 'lib/highlight-panel/variables';
47
49
  @forward 'lib/icon/variables';
48
50
  @forward 'lib/icon-button/variables';
49
51
  @forward 'lib/image/variables';
@@ -70,3 +72,6 @@
70
72
  @forward 'lib/tooltip/variables';
71
73
  @forward 'lib/travel-aware-banner/variables';
72
74
  @forward 'lib/typography/variables';
75
+
76
+ // pattern variables
77
+ @forward 'lib/patterns/review-card/variables';
@@ -384,7 +384,7 @@ export interface LinkProps {
384
384
  }
385
385
 
386
386
  // ─── List ──────────────────────────────────────────────
387
- export type ListVariant = 'bulleted' | 'numbered' | 'icon' | 'image';
387
+ export type ListVariant = 'bulleted' | 'numbered' | 'icon' | 'image' | 'plain';
388
388
  export type ListTextVariant = 'default' | 'strong' | 'label';
389
389
  export type ListIconSize = 'small' | 'medium' | 'large';
390
390
  export type ListLayout = 'default' | 'columns' | 'horizontal';
@@ -396,6 +396,9 @@ export interface ListProps {
396
396
  layout?: ListLayout;
397
397
  /** @deprecated Use `layout: 'columns'` instead. */
398
398
  columns?: boolean;
399
+ hint?: boolean;
400
+ highlight?: boolean;
401
+ multiline?: boolean;
399
402
  inverse?: boolean;
400
403
  altShape?: boolean;
401
404
  start?: number;
@@ -573,6 +576,8 @@ export interface RangeIconsProps {
573
576
  scoreSun?: number;
574
577
  scoreStar?: number;
575
578
  scoreTripadvisor?: number;
579
+ scoreHolidaycheck?: number;
580
+ extraDescription?: string;
576
581
  hasLink?: boolean;
577
582
  hasPlus?: boolean;
578
583
  hasTooltip?: boolean;
@@ -601,7 +606,7 @@ export interface RangeIconsGroupProps {
601
606
  }
602
607
 
603
608
  // ─── Ratings: shared ───────────────────────────────────
604
- export type RangeIconsVariant = 'sun' | 'star' | 'tripadvisor' | 'tui-t' | 'customer';
609
+ export type RangeIconsVariant = 'sun' | 'star' | 'tripadvisor' | 'tui-t' | 'customer' | 'holidaycheck';
605
610
  export type RangeIconsSize = 'medium' | 'large';
606
611
 
607
612
  export interface SchemaProps {