@porsche-design-system/components-react 4.0.0-alpha.0 → 4.0.0-beta.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 (122) hide show
  1. package/CHANGELOG.md +187 -1
  2. package/bin/patchRemixRunProcessBrowserGlobalIdentifier.js +0 -0
  3. package/cjs/lib/components/canvas.wrapper.cjs +3 -3
  4. package/{styles → emotion}/cjs/index.cjs +3 -3
  5. package/emotion/esm/index.d.ts +1 -0
  6. package/emotion/esm/index.mjs +1 -0
  7. package/{styles → emotion}/package.json +0 -5
  8. package/esm/lib/components/canvas.wrapper.d.ts +9 -1
  9. package/esm/lib/components/canvas.wrapper.mjs +3 -3
  10. package/esm/lib/components/display.wrapper.d.ts +2 -2
  11. package/esm/lib/components/divider.wrapper.d.ts +2 -2
  12. package/esm/lib/components/heading.wrapper.d.ts +2 -2
  13. package/esm/lib/components/icon.wrapper.d.ts +2 -2
  14. package/esm/lib/components/radio-group-option.wrapper.d.ts +2 -0
  15. package/esm/lib/components/text.wrapper.d.ts +2 -2
  16. package/esm/lib/components/textarea.wrapper.d.ts +2 -2
  17. package/esm/lib/types.d.ts +8 -1
  18. package/global-styles/cn/font-face.css +1 -1
  19. package/global-styles/cn/index.css +264 -115
  20. package/global-styles/color-scheme.css +135 -0
  21. package/global-styles/font-face.css +1 -1
  22. package/global-styles/index.css +264 -115
  23. package/global-styles/variables.css +158 -144
  24. package/package.json +16 -14
  25. package/scss/_index.scss +1 -0
  26. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +671 -600
  27. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +37 -29
  28. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/canvas.wrapper.cjs +4 -4
  29. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/radio-group-option.wrapper.cjs +3 -2
  30. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.cjs +5 -4
  31. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs +2 -13
  32. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.cjs +5 -3
  33. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +1 -0
  34. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.cjs +1 -0
  35. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.cjs +1 -0
  36. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.cjs +1 -0
  37. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +1 -0
  38. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.cjs +1 -0
  39. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +1 -0
  40. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.cjs +1 -0
  41. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +1 -0
  42. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +1 -0
  43. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.cjs +1 -0
  44. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/label.cjs +4 -2
  45. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.cjs +5 -4
  46. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +3 -2
  47. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +3 -2
  48. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.cjs +11 -3
  49. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.cjs +3 -4
  50. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +4 -2
  51. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +2 -1
  52. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.cjs +1 -1
  53. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +1 -0
  54. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +671 -601
  55. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +37 -29
  56. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/canvas.wrapper.mjs +4 -4
  57. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/radio-group-option.wrapper.mjs +3 -2
  58. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +5 -4
  59. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +2 -13
  60. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +5 -3
  61. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +1 -0
  62. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +1 -0
  63. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.mjs +1 -0
  64. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +1 -0
  65. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +1 -0
  66. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +1 -0
  67. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +1 -0
  68. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +1 -0
  69. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +1 -0
  70. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +1 -0
  71. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.mjs +1 -0
  72. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/label.mjs +4 -2
  73. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.mjs +5 -4
  74. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +3 -2
  75. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +5 -4
  76. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.mjs +12 -4
  77. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs +4 -5
  78. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +4 -2
  79. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +2 -1
  80. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.mjs +1 -1
  81. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +1 -0
  82. package/ssr/esm/lib/components/canvas.wrapper.d.ts +9 -1
  83. package/ssr/esm/lib/components/display.wrapper.d.ts +2 -2
  84. package/ssr/esm/lib/components/divider.wrapper.d.ts +2 -2
  85. package/ssr/esm/lib/components/heading.wrapper.d.ts +2 -2
  86. package/ssr/esm/lib/components/icon.wrapper.d.ts +2 -2
  87. package/ssr/esm/lib/components/radio-group-option.wrapper.d.ts +2 -0
  88. package/ssr/esm/lib/components/text.wrapper.d.ts +2 -2
  89. package/ssr/esm/lib/components/textarea.wrapper.d.ts +2 -2
  90. package/ssr/esm/lib/dsr-components/canvas.d.ts +0 -3
  91. package/ssr/esm/lib/dsr-components/checkbox.d.ts +4 -2
  92. package/ssr/esm/lib/dsr-components/input-date.d.ts +1 -0
  93. package/ssr/esm/lib/dsr-components/input-email.d.ts +1 -0
  94. package/ssr/esm/lib/dsr-components/input-month.d.ts +1 -0
  95. package/ssr/esm/lib/dsr-components/input-number.d.ts +1 -0
  96. package/ssr/esm/lib/dsr-components/input-password.d.ts +1 -0
  97. package/ssr/esm/lib/dsr-components/input-search.d.ts +1 -0
  98. package/ssr/esm/lib/dsr-components/input-tel.d.ts +1 -0
  99. package/ssr/esm/lib/dsr-components/input-text.d.ts +1 -0
  100. package/ssr/esm/lib/dsr-components/input-time.d.ts +1 -0
  101. package/ssr/esm/lib/dsr-components/input-url.d.ts +1 -0
  102. package/ssr/esm/lib/dsr-components/input-week.d.ts +1 -0
  103. package/ssr/esm/lib/dsr-components/label.d.ts +1 -0
  104. package/ssr/esm/lib/dsr-components/multi-select.d.ts +2 -1
  105. package/ssr/esm/lib/dsr-components/pin-code.d.ts +2 -1
  106. package/ssr/esm/lib/dsr-components/radio-group-option.d.ts +4 -0
  107. package/ssr/esm/lib/dsr-components/radio-group.d.ts +2 -1
  108. package/ssr/esm/lib/dsr-components/segmented-control.d.ts +2 -1
  109. package/ssr/esm/lib/dsr-components/select.d.ts +2 -1
  110. package/ssr/esm/lib/dsr-components/textarea.d.ts +1 -0
  111. package/ssr/esm/lib/types.d.ts +8 -1
  112. package/tailwindcss/index.css +223 -135
  113. package/{styles/vanilla-extract → vanilla-extract}/cjs/index.cjs +1 -1
  114. package/vanilla-extract/esm/index.d.ts +1 -0
  115. package/vanilla-extract/esm/index.mjs +1 -0
  116. package/vanilla-extract/package.json +13 -0
  117. package/ssr/esm/lib/dsr-components/legacy-label.d.ts +0 -14
  118. package/styles/_index.scss +0 -1
  119. package/styles/esm/index.d.ts +0 -1
  120. package/styles/esm/index.mjs +0 -1
  121. package/styles/vanilla-extract/esm/index.d.ts +0 -1
  122. package/styles/vanilla-extract/esm/index.mjs +0 -1
package/CHANGELOG.md CHANGED
@@ -14,6 +14,142 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [4.0.0-beta.0] - 2026-02-12
18
+
19
+ ### Added
20
+
21
+ - `Checkbox` (🧪Experimental): Supports now being wrapped inside a native `label` element to provide more flexibility in
22
+ positioning a custom label ([#4124](https://github.com/porsche-design-system/porsche-design-system/pull/4124))
23
+ - `Canvas`: prop `background` to set the background color to `canvas | surface`
24
+ - `Carousel`:
25
+ - `width` prop now supports `wide` and `full` values
26
+ ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
27
+ - `--p-carousel-px` CSS custom property introduced to control horizontal padding (when used, the `width` prop has no
28
+ effect anymore) ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
29
+ - `--p-carousel-ps`, `--p-carousel-pe` CSS custom property introduced to control the logical inline start/end padding
30
+ ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
31
+ - `Angular`: Bumped peer dependency to support Angular new major version 21
32
+ ([#4178](https://github.com/porsche-design-system/porsche-design-system/pull/4178))
33
+ - `AG Grid`:
34
+ - Bumped peer dependency to support AG Grid new major version 35
35
+ ([#4143](https://github.com/porsche-design-system/porsche-design-system/issues/4143))
36
+ - Refreshed visuals to reflect new color tokens
37
+ - `Tailwind CSS`:
38
+ - `--transition-duration-sm`, `--transition-duration-md`, `--transition-duration-lg`, `--transition-duration-xl`,
39
+ `--shadow-sm`, `--shadow-md`, `--shadow-lg`, `--radius-xs`, `--radius-xl`, `--radius-2xl`, `--radius-3xl`,
40
+ `--radius-4xl`, `--radius-full`, `--border-width-1`, `--border-width-2`, `--color-frosted-strong`
41
+ - `SCSS`:
42
+ - Common hint: Previous variables are still available as alias and mapped to the new ones for backward compatibility.
43
+ - Breakpoint: `$breakpoint-xs`, `$breakpoint-sm`, `$breakpoint-md`, `$breakpoint-lg`, `$breakpoint-xl` and
44
+ `$breakpoint-2xl`
45
+ - Blur: `$blur-frosted`
46
+ - Border: `$radius-xs`, `$radius-sm`, `$radius-md`, `$radius-lg`, `$radius-xl`, `$radius-2xl`, `$radius-3xl`,
47
+ `$radius-4xl` and `$radius-full`
48
+ - Color Scheme: `@mixin color-scheme()`
49
+ - Color: `$color-focus`,`$color-canvas`, `$color-surface`, `$color-frosted`, `$color-frosted-soft`,
50
+ `$color-frosted-strong`, `$color-backdrop`, `$color-contrast-lower`, `$color-contrast-low`,
51
+ `$color-contrast-medium`, `$color-contrast-high`, `$color-contrast-higher`, `$color-primary`, `$color-success`,
52
+ `$color-success-low`, `$color-success-medium`, `$color-success-frosted`, `$color-success-frosted-soft`,
53
+ `$color-warning`, `$color-warning-low`, `$color-warning-medium`, `$color-warning-frosted`,
54
+ `$color-warning-frosted-soft`,`$color-error`, `$color-error-low`, `$color-error-medium`,
55
+ `$color-error-frosted`,`$color-error-frosted-soft`, `$color-info`, `$color-info-low`, `$color-info-medium`,
56
+ `$color-info-frosted`, `$color-info-frosted-soft`
57
+ - Focus: `@mixin focus-visible()`
58
+ - Gradient: `$gradient-stops-fade-dark`
59
+ - Skeleton: `@mixin skeleton()`
60
+ - Media Query: `@mixin media-query-min()`, `@mixin media-query-max()` and `@mixin media-query-min-max()`
61
+ - Motion: `$duration-sm`, `$duration-md`, `$duration-lg`, `$duration-xl`, `$ease-in-out`, `$ease-in` and `$ease-out`
62
+ - Shadow: `$shadow-sm`, `$shadow-md` and `$shadow-lg`
63
+ - Spacing: `$spacing-fluid-xs`, `$spacing-fluid-sm`, `$spacing-fluid-md`, `$spacing-fluid-lg`, `$spacing-fluid-xl`,
64
+ `$spacing-fluid-2xl`, `$spacing-static-xs`, `$spacing-static-sm`, `$spacing-static-md`, `$spacing-static-lg`,
65
+ `$spacing-static-xl` and `$spacing-static-2xl`
66
+ - Typography: `@mixin prose-display-lg()`, `@mixin prose-display-md()`, `@mixin prose-display-sm()`,
67
+ `@mixin prose-heading-2xl()`, `@mixin prose-heading-xl()`, `@mixin prose-heading-lg()`, `@mixin prose-heading-md()`,
68
+ `@mixin prose-heading-sm()`, `@mixin prose-text-xl()`, `@mixin prose-text-lg()`, `@mixin prose-text-md()`,
69
+ `@mixin prose-text-sm()`, `@mixin prose-text-xs()` `@mixin prose-text-2xs()`, `$font-porsche-next`,
70
+ `$leading-normal`, `$typescale-2xs`, `$typescale-xs`, `$typescale-sm`, `$typescale-md`, `$typescale-lg`,
71
+ `$typescale-xl`, `$typescale-2xl`, `$font-weight-normal`, `$font-weight-semibold` and `$font-weight-bold`
72
+ - Emotion, Vanilla-Extract:
73
+ - Blur: `blurFrosted`
74
+ - Border: `radiusXs`, `radiusSm`, `radiusMd`, `radiusLg`, `radiusXl`, `radius2xl`, `radius3xl`, `radius4xl` and
75
+ `radiusFull`
76
+ - Color: `colorCanvas`, `colorSurface`, `colorFrosted`, `colorFrostedSoft`, `colorFrostedStrong`,
77
+ `colorBackdrop`,`colorPrimary`, `colorContrastHigher`, `colorContrastHigh`, `colorContrastMedium`,
78
+ `colorContrastLow`, `colorContrastLower`, `colorInfo`, `colorInfoMedium`, `colorInfoLow`, `colorInfoFrosted`,
79
+ `colorInfoFrostedSoft`, `colorSuccess`, `colorSuccessMedium`, `colorSuccessLow`, `colorSuccessFrosted`,
80
+ `colorSuccessFrostedSoft`, `colorWarning`, `colorWarningMedium`, `colorWarningLow`, `colorWarningFrosted`,
81
+ `colorWarningFrostedSoft`, `colorError`, `colorErrorMedium`, `colorErrorLow`, `colorErrorFrosted`,
82
+ `colorErrorFrostedSoft`, `colorFocus`,
83
+ - Color Scheme: `colorSchemeStyles()`
84
+ - Focus: `getFocusVisibleStyle()`
85
+ - Gradient: `gradientStopsFadeDark`,
86
+ - Motion: `durationSm`, `durationMd`, `durationLg`, `durationXl`, `easeInOut`, `easeIn` and `easeOut`
87
+ - Shadow: `shadowSm`, `shadowMd` and `shadowLg`
88
+ - Spacing: `spacingFluidXs`, `spacingFluidSm`, `spacingFluidMd`, `spacingFluidLg`, `spacingFluidXl`,
89
+ `spacingFluid2xl`, `spacingStaticXs`, `spacingStaticSm`, `spacingStaticMd`, `spacingStaticLg`, `spacingStaticXl` and
90
+ `spacingStatic2xl`
91
+ - Typography: `proseDisplayLg()`, `proseDisplayMd()`, `proseDisplaySm()`, `proseHeading2Xl()`, `proseHeadingXl()`,
92
+ `proseHeadingLg()`, `proseHeadingMd()`, `proseHeadingSm()`, `proseTextXl()`, `proseTextLg()`, `proseTextMd()`,
93
+ `proseTextSm()`, `proseTextXs()`, `proseText2Xs()`, `fontPorscheNext`, `leadingNormal`, `typescale2Xs`,
94
+ `typescaleXs`, `typescaleSm`, `typescaleMd`, `typescaleLg`, `typescaleXl`, `typescale2xl`, `fontWeightNormal` and
95
+ `fontWeightSemibold`
96
+
97
+ ### Changed
98
+
99
+ - Remove theme prop since it's handled by CSS variables which can be controlled by `.scheme-light`, `.scheme-dark` or
100
+ `.scheme-light-dark` CSS class, e.g. `<p-button>Some label</p-button>` inside `<div class="scheme-dark">…</div>` will
101
+ render the dark theme.
102
+ - `Link Tile`, `Button Tile`: uses `color-scheme: dark` by default
103
+ - `Tailwind CSS`:
104
+ - Reset `--text-*`, `--breakpoint-*`, `--radius-*` and `--shadow-*`
105
+ - Rename theme CSS classes `.light` to `.scheme-light`, `.dark` to `.scheme-dark` and `.auto` to `.scheme-light-dark`
106
+ - `Canvas`: visual appearance on mobile view
107
+ - `Styles`: Import paths for npm package:
108
+
109
+ ```diff
110
+ - import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles';
111
+ + import { … } from '@porsche-design-system/components-{js|angular|react|vue}/emotion';
112
+ ```
113
+
114
+ ```diff
115
+ - import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles/vanilla-extract';
116
+ + import { … } from '@porsche-design-system/components-{js|angular|react|vue}/vanilla-extract';
117
+ ```
118
+
119
+ ```diff
120
+ - @use '@porsche-design-system/components-{js|angular|react|vue}/styles' as *;
121
+ + @use '@porsche-design-system/components-{js|angular|react|vue}/scss' as *;
122
+ ```
123
+
124
+ ### Fixed
125
+
126
+ - `Vanilla Extract`: grid style media query not working
127
+ - `Radio Group Option`: missing `delegatesFocus`
128
+ ([#4135](https://github.com/porsche-design-system/porsche-design-system/pull/4135))
129
+
130
+ ### Removed
131
+
132
+ - Styles (SCSS, Emotion, Vanilla-Extract): `getHoverStyle`/`pds-hover`
133
+
134
+ - Tailwind CSS: `--color-disabled`
135
+
136
+ - Emotion: `opts` parameter in `getSkeletonStyle()` including `theme` (New skeleton style works with `light-dark()` CSS
137
+ color function)
138
+
139
+ ```diff
140
+ - getSkeletonStyle({ theme: 'light|dark' })
141
+ + getSkeletonStyle()
142
+ ```
143
+
144
+ - Vanilla Extract: `opts` parameter in `getSkeletonStyle()` including `theme` (New skeleton style works with
145
+ `light-dark()` CSS color function)
146
+
147
+ ```diff
148
+ const skeletonAnimation = keyframes(skeletonKeyframes);
149
+ - const Skeleton = style(getSkeletonStyle(skeletonAnimation, { theme: 'light|dark' }));
150
+ + const Skeleton = style(getSkeletonStyle(skeletonAnimation));
151
+ ```
152
+
17
153
  ## [4.0.0-alpha.0] - 2025-12-12
18
154
 
19
155
  See the full [migration guide](/news/migration-guide/porsche-design-system/) for a detailed explanation of all changes
@@ -28,7 +164,6 @@ and migration steps.
28
164
  `@porsche-design-system/components-{js|angular|react|vue}/legacy-radius.css`
29
165
 
30
166
  - `Divider`: value `contrast-lower` for prop `color`
31
-
32
167
  - `Multi Select, Select`:
33
168
  - `selected` slot for custom selection rendering and enabling complex options
34
169
  - `options-status` slot for loading, error and no results states when using custom filtering
@@ -116,6 +251,10 @@ and migration steps.
116
251
  - Reset all default Tailwind color tokens
117
252
  - Remove -light and -dark color tokens, instead control theming via `.light`, `.dark` or `.auto` CSS class only
118
253
 
254
+ - Styles (SCSS, Emotion, Vanilla-Extract)
255
+ - heading styles use a regular instead of semi-bold font-weight
256
+ - border-radius large was changed from `12px` to `8px`, since more radius styles are now available
257
+
119
258
  ### Removed
120
259
 
121
260
  - `Partials`:
@@ -263,6 +402,53 @@ and migration steps.
263
402
  ([#4118](https://github.com/porsche-design-system/porsche-design-system/pull/4118))
264
403
  ([#4121](https://github.com/porsche-design-system/porsche-design-system/pull/4121))
265
404
 
405
+ ## [3.32.0] - 2026-02-04
406
+
407
+ ## [3.32.0-rc.2] - 2026-02-03
408
+
409
+ ### Added
410
+
411
+ - `Checkbox`, `Input-*`, `Multi-Select`, `Pin Code`, `Radio Button Group`, `Segmented-Control`, `Select`, `Textarea`:
412
+ New slot `label-after` to add custom content (e.g. `Popover`) after the `label` element
413
+ ([#4181](https://github.com/porsche-design-system/porsche-design-system/pull/4181))
414
+ - `Angular`: Bumped peer dependency to support Angular new major version 21
415
+ ([#4178](https://github.com/porsche-design-system/porsche-design-system/pull/4178))
416
+ - `Carousel`:
417
+ - `width` prop now supports `wide` and `full` values
418
+ ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
419
+ - `--p-carousel-px` CSS custom property introduced to control horizontal padding (when used, the `width` prop has no
420
+ effect anymore) ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180))
421
+
422
+ ## [3.32.0-rc.1] - 2026-01-12
423
+
424
+ ### Added
425
+
426
+ - `AG Grid`: Bumped peer dependency to support AG Grid new major version 35
427
+ ([#4143](https://github.com/porsche-design-system/porsche-design-system/issues/4143))
428
+
429
+ ### Fixed
430
+
431
+ - `Radio Group Option`: missing `delegatesFocus`
432
+ ([#4135](https://github.com/porsche-design-system/porsche-design-system/pull/4135))
433
+
434
+ ## [3.32.0-rc.0] - 2025-12-16
435
+
436
+ ### Added
437
+
438
+ - `Textarea`: add CSS Variables for `fieldSizing`, `minWidth`, `maxWidth`, `minHeight`, `maxHeight` to control the
439
+ intrinsic sizing behavior ([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
440
+ - `Canvas`: prop `background` to set the background color to `canvas | surface`
441
+
442
+ ### Fixed
443
+
444
+ - `Multi Select`: trim whitespace of selected options text
445
+ ([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
446
+
447
+ ### Changed
448
+
449
+ - `Link Tile`, `Button Tile`: appearance in compact mode
450
+ - `Canvas`: appearance on mobile view
451
+
266
452
  ## [3.31.0] - 2025-11-13
267
453
 
268
454
  ## [3.31.0-rc.0] - 2025-11-11
@@ -6,15 +6,15 @@ var react = require('react');
6
6
  var hooks = require('../../hooks.cjs');
7
7
  var utils = require('../../utils.cjs');
8
8
 
9
- const PCanvas = /*#__PURE__*/ react.forwardRef(({ onSidebarEndDismiss, onSidebarStartUpdate, sidebarEndOpen = false, sidebarStartOpen = false, className, ...rest }, ref) => {
9
+ const PCanvas = /*#__PURE__*/ react.forwardRef(({ background = 'canvas', onSidebarEndDismiss, onSidebarStartUpdate, sidebarEndOpen = false, sidebarStartOpen = false, className, ...rest }, ref) => {
10
10
  const elementRef = react.useRef(undefined);
11
11
  hooks.useEventCallback(elementRef, 'sidebarEndDismiss', onSidebarEndDismiss);
12
12
  hooks.useEventCallback(elementRef, 'sidebarStartUpdate', onSidebarStartUpdate);
13
13
  const WebComponentTag = hooks.usePrefix('p-canvas');
14
- const propsToSync = [sidebarEndOpen, sidebarStartOpen];
14
+ const propsToSync = [background, sidebarEndOpen, sidebarStartOpen];
15
15
  hooks.useBrowserLayoutEffect(() => {
16
16
  const { current } = elementRef;
17
- ['sidebarEndOpen', 'sidebarStartOpen'].forEach((propName, i) => (current[propName] = propsToSync[i]));
17
+ ['background', 'sidebarEndOpen', 'sidebarStartOpen'].forEach((propName, i) => (current[propName] = propsToSync[i]));
18
18
  }, propsToSync);
19
19
  const props = {
20
20
  ...rest,
@@ -1,12 +1,12 @@
1
1
  'use strict';
2
2
 
3
- var styles = require('@porsche-design-system/components-js/styles');
3
+ var emotion = require('@porsche-design-system/components-js/emotion');
4
4
 
5
5
 
6
6
 
7
- Object.keys(styles).forEach(function (k) {
7
+ Object.keys(emotion).forEach(function (k) {
8
8
  if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
9
9
  enumerable: true,
10
- get: function () { return styles[k]; }
10
+ get: function () { return emotion[k]; }
11
11
  });
12
12
  });
@@ -0,0 +1 @@
1
+ export * from '@porsche-design-system/components-js/emotion';
@@ -0,0 +1 @@
1
+ export * from '@porsche-design-system/components-js/emotion';
@@ -8,11 +8,6 @@
8
8
  "types": "./esm/index.d.ts",
9
9
  "import": "./esm/index.mjs",
10
10
  "default": "./cjs/index.cjs"
11
- },
12
- "./vanilla-extract": {
13
- "types": "./vanilla-extract/esm/index.d.ts",
14
- "import": "./vanilla-extract/esm/index.mjs",
15
- "default": "./vanilla-extract/cjs/index.cjs"
16
11
  }
17
12
  }
18
13
  }
@@ -1,6 +1,10 @@
1
1
  import type { BaseProps } from '../../BaseProps';
2
- import type { CanvasSidebarStartUpdateEventDetail } from '../types';
2
+ import type { CanvasBackground, CanvasSidebarStartUpdateEventDetail } from '../types';
3
3
  export type PCanvasProps = BaseProps & {
4
+ /**
5
+ * Defines the background color of the main section and auto adjust it for the sidebar
6
+ */
7
+ background?: CanvasBackground;
4
8
  /**
5
9
  * Emitted when the sidebar end requests to be dismissed.
6
10
  */
@@ -19,6 +23,10 @@ export type PCanvasProps = BaseProps & {
19
23
  sidebarStartOpen?: boolean;
20
24
  };
21
25
  export declare const PCanvas: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
26
+ /**
27
+ * Defines the background color of the main section and auto adjust it for the sidebar
28
+ */
29
+ background?: CanvasBackground;
22
30
  /**
23
31
  * Emitted when the sidebar end requests to be dismissed.
24
32
  */
@@ -4,15 +4,15 @@ import { forwardRef, useRef } from 'react';
4
4
  import { useEventCallback, usePrefix, useBrowserLayoutEffect, useMergedClass } from '../../hooks.mjs';
5
5
  import { syncRef } from '../../utils.mjs';
6
6
 
7
- const PCanvas = /*#__PURE__*/ forwardRef(({ onSidebarEndDismiss, onSidebarStartUpdate, sidebarEndOpen = false, sidebarStartOpen = false, className, ...rest }, ref) => {
7
+ const PCanvas = /*#__PURE__*/ forwardRef(({ background = 'canvas', onSidebarEndDismiss, onSidebarStartUpdate, sidebarEndOpen = false, sidebarStartOpen = false, className, ...rest }, ref) => {
8
8
  const elementRef = useRef(undefined);
9
9
  useEventCallback(elementRef, 'sidebarEndDismiss', onSidebarEndDismiss);
10
10
  useEventCallback(elementRef, 'sidebarStartUpdate', onSidebarStartUpdate);
11
11
  const WebComponentTag = usePrefix('p-canvas');
12
- const propsToSync = [sidebarEndOpen, sidebarStartOpen];
12
+ const propsToSync = [background, sidebarEndOpen, sidebarStartOpen];
13
13
  useBrowserLayoutEffect(() => {
14
14
  const { current } = elementRef;
15
- ['sidebarEndOpen', 'sidebarStartOpen'].forEach((propName, i) => (current[propName] = propsToSync[i]));
15
+ ['background', 'sidebarEndOpen', 'sidebarStartOpen'].forEach((propName, i) => (current[propName] = propsToSync[i]));
16
16
  }, propsToSync);
17
17
  const props = {
18
18
  ...rest,
@@ -6,7 +6,7 @@ export type PDisplayProps = BaseProps & {
6
6
  */
7
7
  align?: DisplayAlign;
8
8
  /**
9
- * Basic text color variations depending on theme property.
9
+ * Basic text color variations.
10
10
  */
11
11
  color?: DisplayColor;
12
12
  /**
@@ -28,7 +28,7 @@ export declare const PDisplay: import("react").ForwardRefExoticComponent<Omit<im
28
28
  */
29
29
  align?: DisplayAlign;
30
30
  /**
31
- * Basic text color variations depending on theme property.
31
+ * Basic text color variations.
32
32
  */
33
33
  color?: DisplayColor;
34
34
  /**
@@ -2,7 +2,7 @@ import type { BaseProps } from '../../BaseProps';
2
2
  import type { DividerColor, BreakpointCustomizable, DividerDirection } from '../types';
3
3
  export type PDividerProps = BaseProps & {
4
4
  /**
5
- * Defines color depending on theme.
5
+ * Defines color.
6
6
  */
7
7
  color?: DividerColor;
8
8
  /**
@@ -12,7 +12,7 @@ export type PDividerProps = BaseProps & {
12
12
  };
13
13
  export declare const PDivider: import("react").ForwardRefExoticComponent<Omit<import("react").DOMAttributes<{}>, "onChange" | "onInput" | "onToggle"> & Pick<import("react").HTMLAttributes<{}>, "suppressHydrationWarning" | "autoFocus" | "className" | "dir" | "hidden" | "id" | "inert" | "lang" | "slot" | "style" | "tabIndex" | "title" | "translate" | "role"> & {
14
14
  /**
15
- * Defines color depending on theme.
15
+ * Defines color.
16
16
  */
17
17
  color?: DividerColor;
18
18
  /**
@@ -6,7 +6,7 @@ export type PHeadingProps = BaseProps & {
6
6
  */
7
7
  align?: HeadingAlign;
8
8
  /**
9
- * Basic text color variations depending on theme property.
9
+ * Basic text color variations.
10
10
  */
11
11
  color?: HeadingColor;
12
12
  /**
@@ -28,7 +28,7 @@ export declare const PHeading: import("react").ForwardRefExoticComponent<Omit<im
28
28
  */
29
29
  align?: HeadingAlign;
30
30
  /**
31
- * Basic text color variations depending on theme property.
31
+ * Basic text color variations.
32
32
  */
33
33
  color?: HeadingColor;
34
34
  /**
@@ -6,7 +6,7 @@ export type PIconProps = BaseProps & {
6
6
  */
7
7
  aria?: SelectedAriaAttributes<IconAriaAttribute>;
8
8
  /**
9
- * Basic color variations depending on theme property.
9
+ * Basic color variations.
10
10
  */
11
11
  color?: IconColor;
12
12
  /**
@@ -28,7 +28,7 @@ export declare const PIcon: import("react").ForwardRefExoticComponent<Omit<impor
28
28
  */
29
29
  aria?: SelectedAriaAttributes<IconAriaAttribute>;
30
30
  /**
31
- * Basic color variations depending on theme property.
31
+ * Basic color variations.
32
32
  */
33
33
  color?: IconColor;
34
34
  /**
@@ -34,4 +34,6 @@ export declare const PRadioGroupOption: import("react").ForwardRefExoticComponen
34
34
  * The value for the input.
35
35
  */
36
36
  value?: string;
37
+ } & {
38
+ children?: import("react").ReactNode | undefined;
37
39
  } & import("react").RefAttributes<HTMLElement>>;
@@ -6,7 +6,7 @@ export type PTextProps = BaseProps & {
6
6
  */
7
7
  align?: TextAlign;
8
8
  /**
9
- * Basic text color variations depending on theme property.
9
+ * Basic text color variations.
10
10
  */
11
11
  color?: TextColor;
12
12
  /**
@@ -32,7 +32,7 @@ export declare const PText: import("react").ForwardRefExoticComponent<Omit<impor
32
32
  */
33
33
  align?: TextAlign;
34
34
  /**
35
- * Basic text color variations depending on theme property.
35
+ * Basic text color variations.
36
36
  */
37
37
  color?: TextColor;
38
38
  /**
@@ -78,7 +78,7 @@ export type PTextareaProps = BaseProps & {
78
78
  */
79
79
  resize?: TextareaResize;
80
80
  /**
81
- * The number of rows of the textarea.
81
+ * The number of rows. Has no effect when field-sizing CSS Variable '--p-textarea-field-sizing' is set to 'content'.
82
82
  */
83
83
  rows?: number;
84
84
  /**
@@ -176,7 +176,7 @@ export declare const PTextarea: import("react").ForwardRefExoticComponent<Omit<i
176
176
  */
177
177
  resize?: TextareaResize;
178
178
  /**
179
- * The number of rows of the textarea.
179
+ * The number of rows. Has no effect when field-sizing CSS Variable '--p-textarea-field-sizing' is set to 'content'.
180
180
  */
181
181
  rows?: number;
182
182
  /**
@@ -847,9 +847,16 @@ export type ButtonTileAlign = TileAlign;
847
847
  export type CanvasSidebarStartUpdateEventDetail = {
848
848
  open: boolean;
849
849
  };
850
+ declare const CANVAS_BACKGROUNDS: readonly [
851
+ "canvas",
852
+ "surface"
853
+ ];
854
+ export type CanvasBackground = (typeof CANVAS_BACKGROUNDS)[number];
850
855
  declare const CAROUSEL_WIDTHS: readonly [
851
856
  "basic",
852
- "extended"
857
+ "extended",
858
+ "wide",
859
+ "full"
853
860
  ];
854
861
  export type CarouselWidth = (typeof CAROUSEL_WIDTHS)[number];
855
862
  declare const CAROUSEL_SLIDES_PER_PAGE: (string | number)[];
@@ -1 +1 @@
1
- @font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-arabic-bold.1796b39.woff2') format('woff2');unicode-range:U+0600-0671,U+06A1,U+06A4,U+06BA,U+06CC,U+06D5,U+06F8,U+06F9;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-arabic-regular.413b375.woff2') format('woff2');unicode-range:U+0600-0671,U+06A1,U+06A4,U+06BA,U+06CC,U+06D5,U+06F8,U+06F9;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-cyril-bold.4cb90bb.woff2') format('woff2');unicode-range:U+0400-04FF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-cyril-regular.b845952.woff2') format('woff2');unicode-range:U+0400-04FF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-cyril-semi-bold.378f7d5.woff2') format('woff2');unicode-range:U+0400-04FF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-greek-bold.d2546b1.woff2') format('woff2');unicode-range:U+0370-03FF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-greek-regular.0b3d9b3.woff2') format('woff2');unicode-range:U+0370-03FF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-greek-semi-bold.f3a9ae0.woff2') format('woff2');unicode-range:U+0370-03FF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-latin-bold.0fbdc6d.woff2') format('woff2');unicode-range:U+0020-007F,U+0080-00FF,U+0100-017F,U+0180-024F,U+0250-02AF,U+02B0-02FF,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2150-218F,U+2190-21FF,U+2200-22FF,U+25A0-25FF,U+2600-26FF,U+FB00-FB4F,U+FE70-FEFF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-latin-regular.b8f1c20.woff2') format('woff2');unicode-range:U+0020-007F,U+0080-00FF,U+0100-017F,U+0180-024F,U+0250-02AF,U+02B0-02FF,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2150-218F,U+2190-21FF,U+2200-22FF,U+25A0-25FF,U+2600-26FF,U+FB00-FB4F,U+FE70-FEFF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-latin-semi-bold.b5f6fca.woff2') format('woff2');unicode-range:U+0020-007F,U+0080-00FF,U+0100-017F,U+0180-024F,U+0250-02AF,U+02B0-02FF,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2150-218F,U+2190-21FF,U+2200-22FF,U+25A0-25FF,U+2600-26FF,U+FB00-FB4F,U+FE70-FEFF;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-pashto-bold.f30f194.woff2') format('woff2');unicode-range:U+067C,U+067E,U+0681,U+0682,U+0685,U+0686,U+0689,U+067C,U+0693,U+0696,U+0698,U+069A,U+06A9,U+06AB,U+06AF,U+06BC,U+06CD,U+06D0;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-pashto-regular.3989814.woff2') format('woff2');unicode-range:U+067C,U+067E,U+0681,U+0682,U+0685,U+0686,U+0689,U+067C,U+0693,U+0696,U+0698,U+069A,U+06A9,U+06AB,U+06AF,U+06BC,U+06CD,U+06D0;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-thai-bold.b9e9f23.woff2') format('woff2');unicode-range:U+0E00-0E7F;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-thai-regular.ac04c30.woff2') format('woff2');unicode-range:U+0E00-0E7F;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-thai-semi-bold.8d53572.woff2') format('woff2');unicode-range:U+0E00-0E7F;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-urdu-bold.49a86a4.woff2') format('woff2');unicode-range:U+0679,U+0688,U+0691,U+06BE,U+06C0-06C3,U+06D2-06D5,U+06F0-06F9;font-display:swap}@font-face{font-family:Porsche Next;font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-urdu-regular.ad23819.woff2') format('woff2');unicode-range:U+0679,U+0688,U+0691,U+06BE,U+06C0-06C3,U+06D2-06D5,U+06F0-06F9;font-display:swap}
1
+ @font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-arabic-bold.1796b39.woff2') format('woff2');unicode-range:U+0600-0671,U+06A1,U+06A4,U+06BA,U+06CC,U+06D5,U+06F8,U+06F9;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-arabic-regular.413b375.woff2') format('woff2');unicode-range:U+0600-0671,U+06A1,U+06A4,U+06BA,U+06CC,U+06D5,U+06F8,U+06F9;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-cyril-bold.4cb90bb.woff2') format('woff2');unicode-range:U+0400-04FF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-cyril-regular.b845952.woff2') format('woff2');unicode-range:U+0400-04FF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-cyril-semi-bold.378f7d5.woff2') format('woff2');unicode-range:U+0400-04FF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-greek-bold.d2546b1.woff2') format('woff2');unicode-range:U+0370-03FF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-greek-regular.0b3d9b3.woff2') format('woff2');unicode-range:U+0370-03FF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-greek-semi-bold.f3a9ae0.woff2') format('woff2');unicode-range:U+0370-03FF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-latin-bold.0fbdc6d.woff2') format('woff2');unicode-range:U+0020-007F,U+0080-00FF,U+0100-017F,U+0180-024F,U+0250-02AF,U+02B0-02FF,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2150-218F,U+2190-21FF,U+2200-22FF,U+25A0-25FF,U+2600-26FF,U+FB00-FB4F,U+FE70-FEFF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-latin-regular.b8f1c20.woff2') format('woff2');unicode-range:U+0020-007F,U+0080-00FF,U+0100-017F,U+0180-024F,U+0250-02AF,U+02B0-02FF,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2150-218F,U+2190-21FF,U+2200-22FF,U+25A0-25FF,U+2600-26FF,U+FB00-FB4F,U+FE70-FEFF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-latin-semi-bold.b5f6fca.woff2') format('woff2');unicode-range:U+0020-007F,U+0080-00FF,U+0100-017F,U+0180-024F,U+0250-02AF,U+02B0-02FF,U+0300-036F,U+1E00-1EFF,U+2000-206F,U+2070-209F,U+20A0-20CF,U+2100-214F,U+2150-218F,U+2190-21FF,U+2200-22FF,U+25A0-25FF,U+2600-26FF,U+FB00-FB4F,U+FE70-FEFF;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-pashto-bold.f30f194.woff2') format('woff2');unicode-range:U+067C,U+067E,U+0681,U+0682,U+0685,U+0686,U+0689,U+067C,U+0693,U+0696,U+0698,U+069A,U+06A9,U+06AB,U+06AF,U+06BC,U+06CD,U+06D0;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-pashto-regular.3989814.woff2') format('woff2');unicode-range:U+067C,U+067E,U+0681,U+0682,U+0685,U+0686,U+0689,U+067C,U+0693,U+0696,U+0698,U+069A,U+06A9,U+06AB,U+06AF,U+06BC,U+06CD,U+06D0;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-thai-bold.b9e9f23.woff2') format('woff2');unicode-range:U+0E00-0E7F;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-thai-regular.ac04c30.woff2') format('woff2');unicode-range:U+0E00-0E7F;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:600;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-thai-semi-bold.8d53572.woff2') format('woff2');unicode-range:U+0E00-0E7F;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:700;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-urdu-bold.49a86a4.woff2') format('woff2');unicode-range:U+0679,U+0688,U+0691,U+06BE,U+06C0-06C3,U+06D2-06D5,U+06F0-06F9;font-display:swap}@font-face{font-family:"Porsche Next";font-style:normal;font-weight:400;src:url('https://cdn.ui.porsche.cn/porsche-design-system/fonts/porsche-next-urdu-regular.ad23819.woff2') format('woff2');unicode-range:U+0679,U+0688,U+0691,U+06BE,U+06C0-06C3,U+06D2-06D5,U+06F0-06F9;font-display:swap}