@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
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["../../../src/lib/divider/_variables.scss","../../../src/lib/info-tag/_variables.scss","../../../src/themes/tui/index.scss","../../../src/lib/utility/_mixins.scss","../../../src/variables/_grid.scss","../../../src/variables/_icons.scss","../../../src/variables/_typography.scss"],"names":[],"mappings":"AAEA;AAQA;ACNA;ACGA;AAAA;AAAA;AAAA;EAKC;ECLC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ECKD;EACA;EACA;EACA;EAGA;EACA;ECGA;EFfC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EGgHD;EHhHC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA","file":"index.css"}
1
+ {"version":3,"sourceRoot":"","sources":["../../../src/lib/divider/_variables.scss","../../../src/lib/info-tag/_variables.scss","../../../src/themes/tui/index.scss","../../../src/lib/utility/_mixins.scss","../../../src/variables/_grid.scss","../../../src/variables/_icons.scss","../../../src/variables/_typography.scss"],"names":[],"mappings":"AAEA;AAQA;ACNA;ACGA;AAAA;AAAA;AAAA;EAKC;ECLC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;ECKD;EACA;EACA;EACA;EAGA;EACA;ECGA;EFfC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EGgHD;EHhHC;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA;EAAA","file":"index.css"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tui/design-system",
3
- "version": "1.9.0",
3
+ "version": "1.11.0",
4
4
  "description": "TUI Design System",
5
5
  "author": "TUI Group",
6
6
  "//dependencies": {
@@ -20,6 +20,12 @@
20
20
  "build:primitives": "node cli/process-primitives.mjs",
21
21
  "build:js": "node cli/process-webcomponent-ts.mjs",
22
22
  "build:changelog": "node cli/change-log.mjs",
23
+ "build:component-data": "node --experimental-strip-types cli/mcp/generate-component-data.ts",
24
+ "build:component-examples": "node --experimental-strip-types cli/mcp/render-examples.ts",
25
+ "build:docs": "node --experimental-strip-types cli/mcp/generate-docs.ts",
26
+ "build:asset-catalog": "node --experimental-strip-types cli/mcp/generate-asset-catalog.ts",
27
+ "build:templates": "node --experimental-strip-types cli/mcp/build-templates.ts",
28
+ "build:meta": "run-s static:build build:component-data build:templates build:component-examples build:docs build:asset-catalog",
23
29
  "dev": "dotenv -e .env.local npm run storybook:dev",
24
30
  "storybook:dev": "run-s static:build build:primitives build:changelog set-scss-env storybook:serve",
25
31
  "storybook:build": "run-s static:build build:primitives build:js build:changelog set-scss-env _storybook:build_prod",
@@ -40,15 +40,31 @@ $uilib-accordion-group-included: false !default;
40
40
  &::details-content {
41
41
  block-size: 0;
42
42
 
43
+ visibility: hidden;
44
+
43
45
  overflow: hidden;
44
46
 
47
+ content-visibility: visible;
48
+
45
49
  @media (prefers-reduced-motion: no-preference) {
46
- transition: block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out);
50
+ transition:
51
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-in),
52
+ visibility 0s var(--uilib-motion-duration-medium);
47
53
  }
48
54
  }
49
55
 
50
56
  &[open]::details-content {
51
57
  block-size: auto;
58
+
59
+ visibility: visible;
60
+
61
+ content-visibility: visible;
62
+
63
+ @media (prefers-reduced-motion: no-preference) {
64
+ transition:
65
+ block-size var(--uilib-motion-duration-medium) var(--uilib-motion-timing-out),
66
+ visibility 0s;
67
+ }
52
68
  }
53
69
 
54
70
  &[open] > .uilib-accordion-summary::after {
@@ -0,0 +1,3 @@
1
+ // Product card / index
2
+ @use 'mixins' as *;
3
+ @include uilib-card-product;
@@ -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
  }
@@ -145,6 +145,10 @@ $uilib-card-selectable-included: false !default;
145
145
  .uilib-input-radio {
146
146
  margin: 0 calc(var(--uilib-spacing-200) * -1) calc(var(--uilib-spacing-200) * -1);
147
147
  }
148
+
149
+ .uilib-input-radio__label {
150
+ width: unset;
151
+ }
148
152
  }
149
153
 
150
154
  // ===================
@@ -255,30 +259,49 @@ $uilib-card-selectable-included: false !default;
255
259
  position: relative;
256
260
 
257
261
  display: grid;
258
- grid-template:
259
- 'uilib-card-selectable-tags .' auto
260
- 'uilib-card-selectable-media uilib-card-selectable-media' min-content
261
- / 1fr var(--uilib-spacing-1000);
262
+ grid-template: 'uilib-card-selectable-tags .' 1fr / 1fr var(--uilib-spacing-1000);
262
263
  gap: var(--uilib-spacing-200);
263
264
 
264
265
  padding: var(--uilib-spacing-200);
265
266
 
266
267
  aspect-ratio: var(--uilib-aspect-ratio-16x9-wide);
267
- }
268
268
 
269
- &__tag {
270
- grid-area: uilib-card-selectable-tags;
269
+ .uilib-card-selectable__tag.uilib-info-tag {
270
+ grid-area: uilib-card-selectable-tags;
271
271
 
272
- position: relative;
272
+ position: relative;
273
+ z-index: 1;
274
+
275
+ place-self: start start;
276
+
277
+ max-width: 100%;
278
+
279
+ transform: translate(0, calc((var(--uilib-spacing-200) + 50%) * -1));
280
+
281
+ pointer-events: none;
282
+ }
283
+ }
284
+
285
+ & > &__tag.uilib-info-tag {
273
286
  z-index: 1;
274
287
 
275
- place-self: start start;
288
+ align-self: flex-start;
276
289
 
277
- transform: translate(0, calc((var(--uilib-spacing-200) + 50%) * -1));
290
+ max-width: calc(100% - var(--uilib-spacing-1000) - var(--uilib-spacing-200) * 2);
291
+ margin: calc((var(--uilib-spacing-050) + 0.5rem) * -1) var(--uilib-spacing-200) calc((var(--uilib-spacing-050) + 0.5rem) * -1);
292
+
293
+ pointer-events: none;
278
294
  }
279
295
 
280
296
  &__media-button {
281
- grid-area: uilib-card-selectable-media;
297
+ position: absolute;
298
+ left: var(--uilib-spacing-200);
299
+ bottom: var(--uilib-spacing-200);
300
+ z-index: 1;
301
+
302
+ &.uilib-button:focus-visible {
303
+ position: absolute;
304
+ }
282
305
  }
283
306
 
284
307
  &__image.uilib-image {
@@ -30,10 +30,14 @@ $uilib-input-checkbox-included: false !default;
30
30
  gap: var(--uilib-spacing-300);
31
31
  align-items: flex-start;
32
32
 
33
+ width: max-content;
34
+ max-width: 100%;
33
35
  padding: var(--uilib-spacing-300);
34
36
 
35
37
  border-radius: var(--uilib-border-radius-100);
36
38
 
39
+ cursor: pointer;
40
+
37
41
  &::before,
38
42
  &::after {
39
43
  content: '';
@@ -51,7 +55,7 @@ $uilib-input-checkbox-included: false !default;
51
55
 
52
56
  background: var(--uilib-color-core-neutral);
53
57
 
54
- cursor: pointer;
58
+ pointer-events: none;
55
59
 
56
60
  @media (prefers-reduced-motion: no-preference) {
57
61
  transition:
@@ -144,16 +148,12 @@ $uilib-input-checkbox-included: false !default;
144
148
  }
145
149
 
146
150
  &__input:disabled + .uilib-input-checkbox__label {
151
+ cursor: default;
152
+
147
153
  &::before {
148
154
  border-color: var(--uilib-color-other-disabled-soft);
149
155
 
150
156
  background: var(--uilib-color-other-disabled-soft);
151
-
152
- cursor: default;
153
- }
154
-
155
- &::after {
156
- cursor: default;
157
157
  }
158
158
 
159
159
  .uilib-input-checkbox__label-content {
@@ -30,10 +30,14 @@ $uilib-input-radio-included: false !default;
30
30
  gap: var(--uilib-spacing-300);
31
31
  align-items: flex-start;
32
32
 
33
+ width: max-content;
34
+ max-width: 100%;
33
35
  padding: var(--uilib-spacing-300);
34
36
 
35
37
  border-radius: var(--uilib-border-radius-100);
36
38
 
39
+ cursor: pointer;
40
+
37
41
  &::before,
38
42
  &::after {
39
43
  content: '';
@@ -51,7 +55,7 @@ $uilib-input-radio-included: false !default;
51
55
 
52
56
  background: var(--uilib-color-core-neutral);
53
57
 
54
- cursor: pointer;
58
+ pointer-events: none;
55
59
 
56
60
  @media (prefers-reduced-motion: no-preference) {
57
61
  transition:
@@ -119,16 +123,12 @@ $uilib-input-radio-included: false !default;
119
123
  }
120
124
 
121
125
  &__input:disabled + .uilib-input-radio__label {
126
+ cursor: default;
127
+
122
128
  &::before {
123
129
  border-color: var(--uilib-color-other-disabled-soft);
124
130
 
125
131
  background: var(--uilib-color-other-disabled-soft);
126
-
127
- cursor: default;
128
- }
129
-
130
- &::after {
131
- cursor: default;
132
132
  }
133
133
 
134
134
  .uilib-input-radio__label-content {