@tui/design-system 1.6.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 (49) hide show
  1. package/CHANGELOG.md +186 -1
  2. package/dist/themes/crystalski/index.css +38 -1
  3. package/dist/themes/crystalski/index.css.map +1 -1
  4. package/dist/themes/firstchoice/index.css +38 -1
  5. package/dist/themes/firstchoice/index.css.map +1 -1
  6. package/dist/themes/tui/index.css +40 -3
  7. package/dist/themes/tui/index.css.map +1 -1
  8. package/package.json +11 -10
  9. package/scss/lib/accordion/_mixins.scss +13 -6
  10. package/scss/lib/active-tag/_mixins.scss +16 -4
  11. package/scss/lib/cards/carousel/_index.scss +3 -0
  12. package/scss/lib/cards/carousel/_mixins.scss +164 -0
  13. package/scss/lib/cards/carousel/_variables.scss +13 -0
  14. package/scss/lib/cards/promotion/_index.scss +3 -0
  15. package/scss/lib/cards/promotion/_mixins.scss +275 -0
  16. package/scss/lib/cards/promotion/_variables.scss +14 -0
  17. package/scss/lib/cards/selectable/_mixins.scss +1 -1
  18. package/scss/lib/flyout-dropdown/_variables.scss +0 -1
  19. package/scss/lib/forms/input-switch/_mixins.scss +12 -6
  20. package/scss/lib/highlight-panel/_index.scss +2 -0
  21. package/scss/lib/highlight-panel/_mixins.scss +244 -0
  22. package/scss/lib/highlight-panel/_variables.scss +21 -0
  23. package/scss/lib/list/_mixins.scss +140 -70
  24. package/scss/lib/list/_variables.scss +2 -0
  25. package/scss/lib/modal/_variables.scss +1 -4
  26. package/scss/lib/patterns/review-card/_index.scss +3 -0
  27. package/scss/lib/patterns/review-card/_mixins.scss +283 -0
  28. package/scss/lib/patterns/review-card/_variables.scss +3 -0
  29. package/scss/lib/ratings-reviews/range-icons/_mixins.scss +16 -2
  30. package/scss/lib/ratings-reviews/range-icons/_variables.scss +2 -0
  31. package/scss/lib/skeleton/_variables.scss +2 -6
  32. package/scss/lib/tabs/_mixins.scss +117 -60
  33. package/scss/lib/tabs/anchor/_mixins.scss +36 -0
  34. package/scss/lib/tabs/in-page/_mixins.scss +82 -29
  35. package/scss/lib/tooltip/_mixins.scss +2 -0
  36. package/scss/mixins.scss +4 -0
  37. package/scss/themes/crystalski/_overrides.scss +27 -0
  38. package/scss/themes/crystalski/index.scss +9 -0
  39. package/scss/themes/crystalski/theme.json +14 -0
  40. package/scss/themes/firstchoice/_overrides.scss +29 -0
  41. package/scss/themes/firstchoice/index.scss +9 -0
  42. package/scss/themes/firstchoice/theme.json +20 -0
  43. package/scss/themes/tui/_overrides.scss +19 -0
  44. package/scss/themes/tui/index.scss +9 -0
  45. package/scss/themes/tui/theme.json +8 -0
  46. package/scss/variables/_primitives.scss +3 -0
  47. package/scss/variables/base-theme.json +234 -1
  48. package/scss/variables.scss +6 -0
  49. package/types/components.ts +39 -2
@@ -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",
@@ -1913,6 +2066,18 @@
1913
2066
  "title": "List image radius (alt)",
1914
2067
  "description": "List image radius (alt)",
1915
2068
  "displayType": "radius"
2069
+ },
2070
+ "list-multiline-title-font": {
2071
+ "primitive": "uilib-typography-label-medium",
2072
+ "title": "List multiline title font",
2073
+ "description": "List multiline title font",
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"
1916
2081
  }
1917
2082
  }
1918
2083
  },
@@ -2093,6 +2258,64 @@
2093
2258
  }
2094
2259
  }
2095
2260
  },
2261
+ "card-promotion": {
2262
+ "tokens": {
2263
+ "card-promotion-elevation": {
2264
+ "primitive": "uilib-elevation-100",
2265
+ "title": "Container elevation",
2266
+ "description": "Box shadow of the banner container",
2267
+ "displayType": "shadow"
2268
+ },
2269
+ "card-promotion-radius": {
2270
+ "primitive": "uilib-border-radius-400",
2271
+ "title": "Container radius",
2272
+ "description": "Border radius of the banner container",
2273
+ "displayType": "radius"
2274
+ },
2275
+ "card-promotion-bg-color": {
2276
+ "primitive": "uilib-color-core-neutral",
2277
+ "title": "Container background color",
2278
+ "description": "Background color of the banner container",
2279
+ "displayType": "color"
2280
+ },
2281
+ "card-promotion-headline-color": {
2282
+ "primitive": "uilib-color-text-strong",
2283
+ "title": "Headline color",
2284
+ "description": "Text color of the headline",
2285
+ "displayType": "color"
2286
+ },
2287
+ "card-promotion-subcopy-color": {
2288
+ "primitive": "uilib-color-text-body",
2289
+ "title": "Sub-copy color",
2290
+ "description": "Text color of the sub-copy",
2291
+ "displayType": "color"
2292
+ },
2293
+ "card-promotion-subcopy-link-color": {
2294
+ "primitive": "uilib-color-text-link",
2295
+ "title": "Sub-copy link color",
2296
+ "description": "Text color of inline links in the sub-copy",
2297
+ "displayType": "color"
2298
+ },
2299
+ "card-promotion-code-color": {
2300
+ "primitive": "uilib-color-text-strong",
2301
+ "title": "Promo code color",
2302
+ "description": "Text color of the promo code",
2303
+ "displayType": "color"
2304
+ },
2305
+ "card-promotion-cta-copy-icon": {
2306
+ "displayType": "icon",
2307
+ "title": "CTA copy icon",
2308
+ "description": "Icon used in the Copy code button",
2309
+ "longValue": true
2310
+ },
2311
+ "card-promotion-cta-copied-icon": {
2312
+ "displayType": "icon",
2313
+ "title": "CTA copied icon",
2314
+ "description": "Icon used in the Copied button after a successful copy",
2315
+ "longValue": true
2316
+ }
2317
+ }
2318
+ },
2096
2319
  "promo-tag": {
2097
2320
  "tokens": {
2098
2321
  "promo-tag-radius": {
@@ -2291,6 +2514,16 @@
2291
2514
  "description": "TripAdvisor logo as leading image on ratings (inverse)",
2292
2515
  "longValue": true,
2293
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
2294
2527
  }
2295
2528
  }
2296
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';
@@ -55,6 +57,7 @@
55
57
  @forward 'lib/modal/variables';
56
58
  @forward 'lib/pagination/variables';
57
59
  @forward 'lib/price/variables';
60
+ @forward 'lib/cards/promotion/variables';
58
61
  @forward 'lib/promo-tag/variables';
59
62
  @forward 'lib/ratings-reviews/numerical/variables';
60
63
  @forward 'lib/ratings-reviews/percentage/variables';
@@ -69,3 +72,6 @@
69
72
  @forward 'lib/tooltip/variables';
70
73
  @forward 'lib/travel-aware-banner/variables';
71
74
  @forward 'lib/typography/variables';
75
+
76
+ // pattern variables
77
+ @forward 'lib/patterns/review-card/variables';
@@ -66,6 +66,9 @@ export interface AnchorTab {
66
66
 
67
67
  export interface AnchorTabsProps {
68
68
  icon?: string;
69
+ tabsLabelledby?: string;
70
+ tabsLabel?: string;
71
+ /** @deprecated Use `tabsLabelledby` instead */
69
72
  ariaLabelledby?: string;
70
73
  tabs?: AnchorTab[];
71
74
  sticky?: boolean;
@@ -146,6 +149,9 @@ export interface DatepickerProps {
146
149
  maxDate?: string;
147
150
  previousLabel?: string;
148
151
  nextLabel?: string;
152
+ announceStart?: string;
153
+ announceRange?: string;
154
+ instructions?: string;
149
155
  locale?: string;
150
156
  }
151
157
 
@@ -247,6 +253,9 @@ export interface InPageTabsProps {
247
253
  variant?: 'left-aligned' | 'full-width';
248
254
  icon?: string;
249
255
  active?: string;
256
+ tabsLabelledby?: string;
257
+ tabsLabel?: string;
258
+ /** @deprecated Use `tabsLabelledby` instead */
250
259
  ariaLabelledby?: string;
251
260
  tabs?: InPageTab[];
252
261
  }
@@ -375,15 +384,21 @@ export interface LinkProps {
375
384
  }
376
385
 
377
386
  // ─── List ──────────────────────────────────────────────
378
- export type ListVariant = 'bulleted' | 'numbered' | 'icon' | 'image';
387
+ export type ListVariant = 'bulleted' | 'numbered' | 'icon' | 'image' | 'plain';
379
388
  export type ListTextVariant = 'default' | 'strong' | 'label';
380
389
  export type ListIconSize = 'small' | 'medium' | 'large';
390
+ export type ListLayout = 'default' | 'columns' | 'horizontal';
381
391
 
382
392
  export interface ListProps {
383
393
  variant?: ListVariant;
384
394
  textVariant?: ListTextVariant;
385
395
  iconSize?: ListIconSize;
396
+ layout?: ListLayout;
397
+ /** @deprecated Use `layout: 'columns'` instead. */
386
398
  columns?: boolean;
399
+ hint?: boolean;
400
+ highlight?: boolean;
401
+ multiline?: boolean;
387
402
  inverse?: boolean;
388
403
  altShape?: boolean;
389
404
  start?: number;
@@ -458,6 +473,26 @@ export interface PriceBoxProps {
458
473
  footerHtml?: string;
459
474
  }
460
475
 
476
+ // ─── Card Promotion ───────────────────────────────────────
477
+ export interface CardPromotionProps {
478
+ type?: 'default' | 'promo-code';
479
+ condensed?: boolean;
480
+ headingLevel?: HeadingLevel;
481
+ headline?: string;
482
+ scarcityLabel?: string;
483
+ conditions?: string;
484
+ linkLabel?: string;
485
+ icon?: string;
486
+ code?: string;
487
+ copied?: boolean;
488
+ copyLabel?: string;
489
+ copiedLabel?: string;
490
+ expired?: boolean;
491
+ expiredLabel?: string;
492
+ announcementLabel?: string;
493
+ theme?: Theme;
494
+ }
495
+
461
496
  // ─── Promo Tag ──────────────────────────────────────────
462
497
  export const PromoTagSizes = ['xsmall', 'small', 'medium', 'large', 'xlarge', 'xxlarge'] as const;
463
498
  export type PromoTagSize = (typeof PromoTagSizes)[number];
@@ -541,6 +576,8 @@ export interface RangeIconsProps {
541
576
  scoreSun?: number;
542
577
  scoreStar?: number;
543
578
  scoreTripadvisor?: number;
579
+ scoreHolidaycheck?: number;
580
+ extraDescription?: string;
544
581
  hasLink?: boolean;
545
582
  hasPlus?: boolean;
546
583
  hasTooltip?: boolean;
@@ -569,7 +606,7 @@ export interface RangeIconsGroupProps {
569
606
  }
570
607
 
571
608
  // ─── Ratings: shared ───────────────────────────────────
572
- export type RangeIconsVariant = 'sun' | 'star' | 'tripadvisor' | 'tui-t' | 'customer';
609
+ export type RangeIconsVariant = 'sun' | 'star' | 'tripadvisor' | 'tui-t' | 'customer' | 'holidaycheck';
573
610
  export type RangeIconsSize = 'medium' | 'large';
574
611
 
575
612
  export interface SchemaProps {