@tui/design-system 1.7.0 → 1.9.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 (45) hide show
  1. package/CHANGELOG.md +99 -1
  2. package/dist/themes/crystalski/index.css +30 -0
  3. package/dist/themes/crystalski/index.css.map +1 -1
  4. package/dist/themes/firstchoice/index.css +30 -0
  5. package/dist/themes/firstchoice/index.css.map +1 -1
  6. package/dist/themes/tui/index.css +30 -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/forms/input-stepper/_mixins.scss +1 -3
  14. package/scss/lib/highlight-panel/_index.scss +2 -0
  15. package/scss/lib/highlight-panel/_mixins.scss +244 -0
  16. package/scss/lib/highlight-panel/_variables.scss +21 -0
  17. package/scss/lib/list/_mixins.scss +51 -0
  18. package/scss/lib/list/_variables.scss +1 -0
  19. package/scss/lib/patterns/edit-search/_index.scss +3 -0
  20. package/scss/lib/patterns/edit-search/_mixins.scss +98 -0
  21. package/scss/lib/patterns/edit-search/_variables.scss +7 -0
  22. package/scss/lib/patterns/review-card/_index.scss +3 -0
  23. package/scss/lib/patterns/review-card/_mixins.scss +283 -0
  24. package/scss/lib/patterns/review-card/_variables.scss +3 -0
  25. package/scss/lib/patterns/review-summary/_index.scss +3 -0
  26. package/scss/lib/patterns/review-summary/_mixins.scss +156 -0
  27. package/scss/lib/patterns/review-summary/_variables.scss +3 -0
  28. package/scss/lib/ratings-reviews/range-bar/_mixins.scss +3 -2
  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/mixins.scss +7 -0
  32. package/scss/themes/crystalski/_overrides.scss +17 -0
  33. package/scss/themes/crystalski/index.scss +10 -0
  34. package/scss/themes/crystalski/theme.json +7 -0
  35. package/scss/themes/firstchoice/_overrides.scss +19 -0
  36. package/scss/themes/firstchoice/index.scss +10 -0
  37. package/scss/themes/firstchoice/theme.json +13 -0
  38. package/scss/themes/tui/_overrides.scss +19 -0
  39. package/scss/themes/tui/index.scss +10 -0
  40. package/scss/themes/tui/theme.json +8 -0
  41. package/scss/variables/_grid.scss +3 -3
  42. package/scss/variables/_primitives.scss +3 -0
  43. package/scss/variables/base-theme.json +191 -1
  44. package/scss/variables.scss +7 -0
  45. package/types/components.ts +40 -2
@@ -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
 
@@ -202,4 +208,8 @@
202
208
 
203
209
  // Travel Aware Banner
204
210
  @include util.uilib-build-css-vars('travel-aware-banner', $uilib-travel-aware-banner-variables);
211
+
212
+ // Patterns
213
+ // Edit search
214
+ @include util.uilib-build-css-vars('edit-search', $uilib-edit-search-variables);
205
215
  }
@@ -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
  }
@@ -1,11 +1,11 @@
1
1
  // grid
2
2
  $uilib-grid-size: 0.25rem !default; // 4px
3
3
  $uilib-grid-columns: 12 !default;
4
- $uilib-grid-gutter-width: $uilib-grid-size * 4; // 16px
5
- $uilib-grid-gutter-height: $uilib-grid-size * 4; // 16px
4
+ $uilib-grid-gutter-width: $uilib-grid-size * 4 !default; // 16px
5
+ $uilib-grid-gutter-height: $uilib-grid-size * 4 !default; // 16px
6
6
 
7
7
  // layout
8
- $uilib-layout-max-width: 80rem; // 1280px
8
+ $uilib-layout-max-width: 80rem !default; // 1280px
9
9
  $uilib-layout-app-height: 100dvh;
10
10
 
11
11
  @mixin uilib-grid-base-vars() {
@@ -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
  },
@@ -2600,5 +2769,26 @@
2600
2769
  "description": "Travel Aware banner border radius"
2601
2770
  }
2602
2771
  }
2772
+ },
2773
+ "edit-search": {
2774
+ "displayType": "color",
2775
+ "tokens": {
2776
+ "edit-search-radius": {
2777
+ "displayType": "radius",
2778
+ "primitive": "uilib-border-radius-400",
2779
+ "title": "Edit search border radius",
2780
+ "description": "Edit search border radius"
2781
+ },
2782
+ "edit-search-bg-color": {
2783
+ "primitive": "--uilib-color-core-surface",
2784
+ "title": "Edit search background colour",
2785
+ "description": "Edit search background colour"
2786
+ },
2787
+ "edit-search-text-color": {
2788
+ "primitive": "--uilib-color-text-strong",
2789
+ "title": "Edit search text colour",
2790
+ "description": "Edit search text colour"
2791
+ }
2792
+ }
2603
2793
  }
2604
2794
  }
@@ -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,8 @@
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/edit-search/variables';
78
+ @forward 'lib/patterns/review-card/variables';
79
+ @forward 'lib/patterns/review-summary/variables';
@@ -384,11 +384,18 @@ 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';
391
391
 
392
+ export interface ListItem {
393
+ label?: string;
394
+ iconSize?: ListIconSize;
395
+ iconAsset?: string;
396
+ imageUrl?: string;
397
+ }
398
+
392
399
  export interface ListProps {
393
400
  variant?: ListVariant;
394
401
  textVariant?: ListTextVariant;
@@ -396,10 +403,14 @@ export interface ListProps {
396
403
  layout?: ListLayout;
397
404
  /** @deprecated Use `layout: 'columns'` instead. */
398
405
  columns?: boolean;
406
+ hint?: boolean;
407
+ highlight?: boolean;
408
+ multiline?: boolean;
399
409
  inverse?: boolean;
400
410
  altShape?: boolean;
401
411
  start?: number;
402
412
  theme?: Theme;
413
+ extraClasses?: string[];
403
414
  }
404
415
 
405
416
  // ─── Loader ────────────────────────────────────────────
@@ -560,6 +571,7 @@ export interface RangeBarProps {
560
571
  /** @deprecated Theme is no longer supported for this component */
561
572
  theme?: Theme;
562
573
  isGroup?: boolean;
574
+ items?: { label: string; score: number; accessibleLabel?: string }[];
563
575
  }
564
576
 
565
577
  // ─── Ratings: Range icons (Sun/Star/TUI/TripAdvisor/TUI-T) ─
@@ -573,6 +585,8 @@ export interface RangeIconsProps {
573
585
  scoreSun?: number;
574
586
  scoreStar?: number;
575
587
  scoreTripadvisor?: number;
588
+ scoreHolidaycheck?: number;
589
+ extraDescription?: string;
576
590
  hasLink?: boolean;
577
591
  hasPlus?: boolean;
578
592
  hasTooltip?: boolean;
@@ -601,7 +615,7 @@ export interface RangeIconsGroupProps {
601
615
  }
602
616
 
603
617
  // ─── Ratings: shared ───────────────────────────────────
604
- export type RangeIconsVariant = 'sun' | 'star' | 'tripadvisor' | 'tui-t' | 'customer';
618
+ export type RangeIconsVariant = 'sun' | 'star' | 'tripadvisor' | 'tui-t' | 'customer' | 'holidaycheck';
605
619
  export type RangeIconsSize = 'medium' | 'large';
606
620
 
607
621
  export interface SchemaProps {
@@ -690,6 +704,7 @@ export interface TooltipProps {
690
704
  label?: string;
691
705
  content?: string;
692
706
  isInverse?: boolean;
707
+ tooltipRoot?: string;
693
708
  theme?: Theme;
694
709
  }
695
710
 
@@ -712,3 +727,26 @@ export interface SocialProofingProps {
712
727
  hasIcon?: boolean;
713
728
  closeLabel?: string;
714
729
  }
730
+
731
+ // ─── PATTERNS ────────────────────────────────────────────
732
+ // ─── Edit search ────────────────────────────────────────────
733
+
734
+ export interface EditSearchProps {
735
+ variant?: 'back' | 'list';
736
+ heading?: string;
737
+ listItems?: ListItem[];
738
+ uniqueId?: string;
739
+ }
740
+
741
+ // ─── Review Card ───────────────────────────────────────────
742
+ export interface ReviewCardProps {
743
+ layout?: 'default' | 'compact' | 'dual';
744
+ switchLayout?: boolean;
745
+ breakpoint?: number;
746
+ brand?: 'tripadvisor' | 'customer' | 'holidaycheck';
747
+ }
748
+
749
+ // ─── Review Summary ────────────────────────────────────────
750
+ export interface ReviewSummaryProps {
751
+ brand?: 'tripadvisor' | 'customer';
752
+ }