@porsche-design-system/components-angular 4.0.0-beta.1 → 4.0.0-beta.3

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 (65) hide show
  1. package/CHANGELOG.md +377 -7
  2. package/fesm2022/porsche-design-system-components-angular.mjs +32 -16
  3. package/fesm2022/porsche-design-system-components-angular.mjs.map +1 -1
  4. package/global-styles/cn/index.css +3 -7
  5. package/global-styles/index.css +3 -7
  6. package/global-styles/variables.css +3 -7
  7. package/package.json +6 -2
  8. package/tailwindcss/index.css +19 -4
  9. package/types/porsche-design-system-components-angular.d.ts +383 -168
  10. package/vanilla-extract/cjs/font/deprecated/fontSizeDisplay.cjs +6 -6
  11. package/vanilla-extract/cjs/font/typescale3Xl.cjs +7 -0
  12. package/vanilla-extract/cjs/font/typescale4Xl.cjs +7 -0
  13. package/vanilla-extract/cjs/font/typescale5Xl.cjs +7 -0
  14. package/vanilla-extract/cjs/index.cjs +12 -12
  15. package/vanilla-extract/cjs/tokens/dist/esm/font/size/typescale3Xl.cjs +5 -0
  16. package/vanilla-extract/cjs/tokens/dist/esm/font/size/typescale4Xl.cjs +5 -0
  17. package/vanilla-extract/cjs/tokens/dist/esm/font/size/typescale5Xl.cjs +5 -0
  18. package/vanilla-extract/cjs/typography/deprecated/display/displayLargeStyle.cjs +3 -3
  19. package/vanilla-extract/cjs/typography/deprecated/display/displayMediumStyle.cjs +3 -3
  20. package/vanilla-extract/cjs/typography/deprecated/display/displaySmallStyle.cjs +3 -3
  21. package/vanilla-extract/cjs/typography/proseHeading3XlStyle.cjs +12 -0
  22. package/vanilla-extract/cjs/typography/proseHeading4XlStyle.cjs +12 -0
  23. package/vanilla-extract/cjs/typography/proseHeading5XlStyle.cjs +12 -0
  24. package/vanilla-extract/cjs/typography/proseHeadingSmStyle.cjs +2 -2
  25. package/vanilla-extract/esm/font/deprecated/fontSizeDisplay.mjs +6 -6
  26. package/vanilla-extract/esm/font/index.d.ts +3 -3
  27. package/vanilla-extract/esm/font/typescale3Xl.d.ts +1 -0
  28. package/vanilla-extract/esm/font/typescale3Xl.mjs +5 -0
  29. package/vanilla-extract/esm/font/typescale4Xl.d.ts +1 -0
  30. package/vanilla-extract/esm/font/typescale4Xl.mjs +5 -0
  31. package/vanilla-extract/esm/font/typescale5Xl.d.ts +1 -0
  32. package/vanilla-extract/esm/font/typescale5Xl.mjs +5 -0
  33. package/vanilla-extract/esm/index.mjs +6 -6
  34. package/vanilla-extract/esm/tokens/dist/esm/font/size/typescale3Xl.mjs +3 -0
  35. package/vanilla-extract/esm/tokens/dist/esm/font/size/typescale4Xl.mjs +3 -0
  36. package/vanilla-extract/esm/tokens/dist/esm/font/size/typescale5Xl.mjs +3 -0
  37. package/vanilla-extract/esm/typography/deprecated/display/displayLargeStyle.d.ts +1 -1
  38. package/vanilla-extract/esm/typography/deprecated/display/displayLargeStyle.mjs +3 -3
  39. package/vanilla-extract/esm/typography/deprecated/display/displayMediumStyle.d.ts +1 -1
  40. package/vanilla-extract/esm/typography/deprecated/display/displayMediumStyle.mjs +3 -3
  41. package/vanilla-extract/esm/typography/deprecated/display/displaySmallStyle.d.ts +1 -1
  42. package/vanilla-extract/esm/typography/deprecated/display/displaySmallStyle.mjs +3 -3
  43. package/vanilla-extract/esm/typography/index.d.ts +3 -3
  44. package/vanilla-extract/esm/typography/proseHeading3XlStyle.d.ts +3 -0
  45. package/vanilla-extract/esm/typography/{proseDisplayMdStyle.mjs → proseHeading3XlStyle.mjs} +4 -3
  46. package/vanilla-extract/esm/typography/proseHeading4XlStyle.d.ts +3 -0
  47. package/vanilla-extract/esm/typography/{proseDisplaySmStyle.mjs → proseHeading4XlStyle.mjs} +4 -3
  48. package/vanilla-extract/esm/typography/proseHeading5XlStyle.d.ts +3 -0
  49. package/vanilla-extract/esm/typography/{proseDisplayLgStyle.mjs → proseHeading5XlStyle.mjs} +4 -3
  50. package/vanilla-extract/esm/typography/proseHeadingSmStyle.mjs +2 -2
  51. package/vanilla-extract/cjs/font/fontSizeDisplayLarge.cjs +0 -5
  52. package/vanilla-extract/cjs/font/fontSizeDisplayMedium.cjs +0 -5
  53. package/vanilla-extract/cjs/font/fontSizeDisplaySmall.cjs +0 -5
  54. package/vanilla-extract/cjs/typography/proseDisplayLgStyle.cjs +0 -11
  55. package/vanilla-extract/cjs/typography/proseDisplayMdStyle.cjs +0 -11
  56. package/vanilla-extract/cjs/typography/proseDisplaySmStyle.cjs +0 -11
  57. package/vanilla-extract/esm/font/fontSizeDisplayLarge.d.ts +0 -1
  58. package/vanilla-extract/esm/font/fontSizeDisplayLarge.mjs +0 -3
  59. package/vanilla-extract/esm/font/fontSizeDisplayMedium.d.ts +0 -1
  60. package/vanilla-extract/esm/font/fontSizeDisplayMedium.mjs +0 -3
  61. package/vanilla-extract/esm/font/fontSizeDisplaySmall.d.ts +0 -1
  62. package/vanilla-extract/esm/font/fontSizeDisplaySmall.mjs +0 -3
  63. package/vanilla-extract/esm/typography/proseDisplayLgStyle.d.ts +0 -3
  64. package/vanilla-extract/esm/typography/proseDisplayMdStyle.d.ts +0 -3
  65. package/vanilla-extract/esm/typography/proseDisplaySmStyle.d.ts +0 -3
package/CHANGELOG.md CHANGED
@@ -14,6 +14,367 @@ 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.3] - 2026-03-19
18
+
19
+ ### Added
20
+
21
+ - `Tokens`: `typescale3Xl`, `typescale4Xl`, `typescale5Xl`
22
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
23
+ - `Tailwind CSS`: `--text-3xl`, `--text-4xl`, `--text-5xl`, `.prose-heading-3xl`, `.prose-heading-4xl`,
24
+ `.prose-heading-5xl` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
25
+ - `SCSS`: `$typescale-3xl`, `$typescale-4xl`, `$typescale-5xl`, `@mixin prose-heading-3xl()`,
26
+ `@mixin prose-heading-4xl()`, `@mixin prose-heading-5xl()`
27
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
28
+ - `Emotion`, `Vanilla Extract`: `typescale3Xl`, `typescale4Xl`, `typescale5Xl`, `proseHeading3XlStyle`,
29
+ `proseHeading4XlStyle`, `proseHeading5XlStyle`
30
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
31
+ - `Spinner`, `Flag`, `Icon`:
32
+ - Prop `size` supports all typographic scale values:
33
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'`
34
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234),
35
+ [#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
36
+ - `Spinner`:
37
+ - Prop `color` with values: `'primary' | 'inherit'`
38
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
39
+ - CSS Variable `--p-spinner-size`: Defines the width and height of the spinner. Overrides the `size` property when
40
+ set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
41
+ - CSS Variable `--p-spinner-color`: Defines the foreground color. Overrides the `color` property when set.
42
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
43
+ - CSS Variable `--p-spinner-track-color`: Defines the track/background color. Overrides the `color` property when set.
44
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
45
+ - `Flag`:
46
+ - CSS Variable `--p-flag-size`: Defines the width and height of the flag. Overrides the `size` property when set.
47
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
48
+ - `Icon`:
49
+ - CSS Variable `--p-icon-size`: Defines the width and height of the icon. Overrides the `size` property when set.
50
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
51
+ - CSS Variable `--p-icon-color`: Defines the icon color. Overrides the `color` property when set.
52
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
53
+ - Prop `color` supports new value `'contrast-higher'`
54
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
55
+ - `Button Pure`, `Link Pure`:
56
+ - Prop `size` supports new typographic scale values:
57
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'`
58
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
59
+ - Prop `color` supports new values `'contrast-higher' | 'contrast-high' | 'contrast-medium'`
60
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
61
+ - `Text`:
62
+ - Prop `size` supports new typographic scale values:
63
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'`
64
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
65
+ - Prop `weight` supports new value `'bold'`
66
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
67
+ - Prop `color` supports new value `'contrast-higher'`
68
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
69
+ - `Heading`:
70
+ - Prop `size` supports new typographic scale values:
71
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'`
72
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
73
+ - Prop `weight` supports new value `'bold'`
74
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
75
+ - Prop `color` supports new values `'contrast-higher' | 'contrast-high' | 'contrast-medium'`
76
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
77
+
78
+ ### Changed
79
+
80
+ - `Spinner`, `Flag`, `Icon`:
81
+ - The `size` prop is breakpoint customizable.
82
+ ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234),
83
+ [#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
84
+ - When set to `inherit`, the size is derived from a custom font-size defined on a parent element, calculated against
85
+ the global line-height (based on `ex`-unit) to remain visually consistent with other typographic-scale-based
86
+ components. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234))
87
+
88
+ ```diff
89
+ - <p-spinner size="inherit" style="width: 100px; height: 100px;"></p-spinner>
90
+ + <p-spinner style="--p-spinner-size: 100px;"></p-spinner>
91
+
92
+ // When using size="inherit" with a defined font-size, the spinner size is calculated from the global line-height (ex-unit) based on that font-size."
93
+ <p-spinner size="inherit" style="font-size: 100px;"></p-spinner>
94
+ ```
95
+
96
+ ```diff
97
+ - <p-icon size="inherit" style="width: 100px; height: 100px;"></p-icon>
98
+ + <p-icon style="--p-icon-size: 100px;"></p-icon>
99
+
100
+ // When using size="inherit" with a defined font-size, the icon size is calculated from the global line-height (ex-unit) based on that font-size."
101
+ <p-icon size="inherit" style="font-size: 100px;"></p-icon>
102
+ ```
103
+
104
+ ```diff
105
+ - <p-flag size="inherit" style="width: 100px; height: 100px;"></p-flag>
106
+ + <p-flag style="--p-flag-size: 100px;"></p-flag>
107
+
108
+ // When using size="inherit" with a defined font-size, the flag size is calculated from the global line-height (ex-unit) based on that font-size."
109
+ <p-flag size="inherit" style="font-size: 100px;"></p-flag>
110
+ ```
111
+
112
+ - `Pagination`: Modernize visual appearance
113
+ ([#4241](https://github.com/porsche-design-system/porsche-design-system/pull/4241))
114
+
115
+ ### Removed
116
+
117
+ - `Emotion, Vanilla Extract` (added in `v4.0.0-beta.0`): `proseDisplayLgStyle`, `proseDisplayMdStyle`,
118
+ `proseDisplaySmStyle` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
119
+ - `SCSS` (added in `v4.0.0-beta.0`): `@mixin prose-display-lg()`, `@mixin prose-display-md()`,
120
+ `@mixin prose-display-sm()` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
121
+ - `Text`: Value `contrast-low` for `color` prop since it's not a11y compliant. Use `contrast-medium` instead.
122
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
123
+
124
+ ### Deprecated
125
+
126
+ - `Text`:
127
+ - Values `'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large'` of prop `size` (use
128
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'` instead)
129
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
130
+
131
+ ```diff
132
+ - <p-text size="xx-small">…</p-text>
133
+ + <p-text size="2xs">…</p-text>
134
+
135
+ - <p-text size="x-small">…</p-text>
136
+ + <p-text size="xs">…</p-text>
137
+
138
+ - <p-text size="small">…</p-text>
139
+ + <p-text size="sm">…</p-text>
140
+
141
+ - <p-text size="medium">…</p-text>
142
+ + <p-text size="md">…</p-text>
143
+
144
+ - <p-text size="large">…</p-text>
145
+ + <p-text size="lg">…</p-text>
146
+
147
+ - <p-text size="x-large">…</p-text>
148
+ + <p-text size="xl">…</p-text>
149
+ ```
150
+
151
+ - Values `'regular' | 'semi-bold'` of prop `weight` (use `'normal' | 'semibold'` instead)
152
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
153
+
154
+ ```diff
155
+ - <p-text weight="regular">…</p-text>
156
+ + <p-text weight="normal">…</p-text>
157
+
158
+ - <p-text weight="semi-bold">…</p-text>
159
+ + <p-text weight="semibold">…</p-text>
160
+ ```
161
+
162
+ - `Heading`:
163
+ - Values `'small' | 'medium' | 'large' | 'x-large' | 'xx-large'` of prop `size` (use
164
+ `'sm' | 'md' | 'lg' | 'xl' | '2xl'` instead)
165
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
166
+
167
+ ```diff
168
+ - <p-heading size="small">…</p-heading>
169
+ + <p-heading size="sm">…</p-heading>
170
+
171
+ - <p-heading size="medium">…</p-heading>
172
+ + <p-heading size="md">…</p-heading>
173
+
174
+ - <p-heading size="large">…</p-heading>
175
+ + <p-heading size="lg">…</p-heading>
176
+
177
+ - <p-heading size="x-large">…</p-heading>
178
+ + <p-heading size="xl">…</p-heading>
179
+
180
+ - <p-heading size="xx-large">…</p-heading>
181
+ + <p-heading size="2xl">…</p-heading>
182
+ ```
183
+
184
+ - Values `'regular' | 'semi-bold'` of prop `weight` (use `'normal' | 'semibold'` instead)
185
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
186
+
187
+ - `Icon`:
188
+ - Values `'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'xx-large'` of prop `size` (use
189
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'` instead)
190
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
191
+
192
+ ```diff
193
+ - <p-icon size="xx-small">…</p-icon>
194
+ + <p-icon size="2xs">…</p-icon>
195
+
196
+ - <p-icon size="x-small">…</p-icon>
197
+ + <p-icon size="xs">…</p-icon>
198
+
199
+ - <p-icon size="small">…</p-icon>
200
+ + <p-icon size="sm">…</p-icon>
201
+
202
+ - <p-icon size="medium">…</p-icon>
203
+ + <p-icon size="md">…</p-icon>
204
+
205
+ - <p-icon size="large">…</p-icon>
206
+ + <p-icon size="lg">…</p-icon>
207
+
208
+ - <p-icon size="x-large">…</p-icon>
209
+ + <p-icon size="xl">…</p-icon>
210
+
211
+ - <p-icon size="xx-large">…</p-icon>
212
+ + <p-icon size="2xl">…</p-icon>
213
+ ```
214
+
215
+ - `Spinner`:
216
+ - Values `'small' | 'medium' | 'large'` of prop `size` (use `'sm' | 'md' | 'lg'` instead)
217
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
218
+
219
+ ```diff
220
+ - <p-spinner size="small">…</p-spinner>
221
+ + <p-spinner size="sm">…</p-spinner>
222
+
223
+ - <p-spinner size="medium">…</p-spinner>
224
+ + <p-spinner size="md">…</p-spinner>
225
+
226
+ - <p-spinner size="large">…</p-spinner>
227
+ + <p-spinner size="lg">…</p-spinner>
228
+ ```
229
+
230
+ - `Button Pure`, `Link Pure`:
231
+ - Values `'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large'` of prop `size` (use
232
+ `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'` instead)
233
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
234
+
235
+ ```diff
236
+ - <p-button-pure size="xx-small">…</p-button-pure>
237
+ + <p-button-pure size="2xs">…</p-button-pure>
238
+
239
+ - <p-button-pure size="x-small">…</p-button-pure>
240
+ + <p-button-pure size="xs">…</p-button-pure>
241
+
242
+ - <p-button-pure size="small">…</p-button-pure>
243
+ + <p-button-pure size="sm">…</p-button-pure>
244
+
245
+ - <p-button-pure size="medium">…</p-button-pure>
246
+ + <p-button-pure size="md">…</p-button-pure>
247
+
248
+ - <p-button-pure size="large">…</p-button-pure>
249
+ + <p-button-pure size="lg">…</p-button-pure>
250
+
251
+ - <p-button-pure size="x-large">…</p-button-pure>
252
+ + <p-button-pure size="xl">…</p-button-pure>
253
+ ```
254
+
255
+ - `Display` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
256
+
257
+ ```diff
258
+ - <p-display size="large">…</p-display>
259
+ + <p-heading size="5xl">…</p-heading>
260
+
261
+ - <p-display size="medium">…</p-display>
262
+ + <p-heading size="4xl">…</p-heading>
263
+
264
+ - <p-display size="small">…</p-display>
265
+ + <p-heading size="3xl">…</p-heading>
266
+ ```
267
+
268
+ - `Tailwind CSS`: `.prose-display-lg`, `.prose-display-md`, `.prose-display-sm`
269
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
270
+
271
+ ```diff
272
+ - <h1 class="prose-display-lg">…</h1>
273
+ + <h1 class="prose-heading-5xl">…</h1>
274
+
275
+ - <h1 class="prose-display-md">…</h1>
276
+ + <h1 class="prose-heading-4xl">…</h1>
277
+
278
+ - <h1 class="prose-display-sm">…</h1>
279
+ + <h1 class="prose-heading-3xl">…</h1>
280
+ ```
281
+
282
+ - `SCSS`: `@mixin pds-display-large`, `@mixin pds-display-medium`, `@mixin pds-display-small`
283
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
284
+
285
+ ```diff
286
+ - @include pds-display-large;
287
+ + @include prose-heading-5xl;
288
+
289
+ - @include pds-display-medium;
290
+ + @include prose-heading-4xl;
291
+
292
+ - @include pds-display-small;
293
+ + @include prose-heading-3xl;
294
+ ```
295
+
296
+ - `Emotion, Vanilla Extract`: `displayLargeStyle`, `displayMediumStyle`, `displaySmallStyle`
297
+ ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246))
298
+
299
+ ```diff
300
+ - ...displayLargeStyle,
301
+ + ...proseHeading5XlStyle,
302
+
303
+ - ...displayMediumStyle,
304
+ + ...proseHeading4XlStyle,
305
+
306
+ - ...displaySmallStyle,
307
+ + ...proseHeading3XlStyle,
308
+ ```
309
+
310
+ ## [4.0.0-beta.2] - 2026-03-11
311
+
312
+ ### Added
313
+
314
+ - `Scroller`:
315
+ - Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout.
316
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
317
+ - Prop `sticky`: Makes the indicator sticky at the top or bottom while scrolling depending on the scroll direction.
318
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
319
+ - CSS Variable `--p-scroller-indicator-top`: Defines the distance from the top of the viewport at which the indicator
320
+ sticks when scrolling down and `sticky` is enabled.
321
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
322
+ - CSS Variable `--p-scroller-indicator-bottom`: Defines the distance from the bottom of the viewport at which the
323
+ indicator sticks when scrolling up and `sticky` is enabled.
324
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
325
+ - CSS Variable `--p-scroller-gap`: Defines the gap between slotted nodes.
326
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
327
+ - `Tabs Bar`:
328
+ - Prop `background`: Defines the background color. Use `frosted` only on images, videos or gradients.
329
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
330
+ - Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout.
331
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
332
+ - `Tabs`:
333
+ - Prop `background`: Defines the background color. Use `frosted` only on images, videos or gradients.
334
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
335
+ - Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout.
336
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
337
+ - `Table`:
338
+ - Prop `sticky`: Makes the scroll indicator sticky at the top or bottom while scrolling depending on the scroll
339
+ direction. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
340
+ - CSS Variable `--p-table-scroll-indicator-top`: Defines the distance from the top of the viewport at which the scroll
341
+ indicator sticks when scrolling down and `sticky` is enabled.
342
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
343
+ - CSS Variable `--p-table-scroll-indicator-bottom`: Defines the distance from the bottom of the viewport at which the
344
+ scroll indicator sticks when scrolling up and `sticky` is enabled.
345
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
346
+
347
+ ### Changed
348
+
349
+ - `Scroller`:
350
+ - Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
351
+ - `Tabs Bar`:
352
+ - Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
353
+ - `Tabs`:
354
+ - Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
355
+ - `Table`:
356
+ - Use modernized scroller internally
357
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
358
+ - `Stepper Horizontal`:
359
+ - Use modernized scroller internally
360
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
361
+
362
+ ### Deprecated
363
+
364
+ - `Scroller`:
365
+ - Prop `alignScrollIndicator`: Will be removed with next major release, has no effect anymore.
366
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
367
+ - Prop `scrollToPosition`: Will be removed with next major release, use native `scrollIntoView()` on the slotted
368
+ element itself, e.g.
369
+ `el.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center', container: 'nearest' })`.
370
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
371
+ - `Tabs Bar`:
372
+ - Prop `weight`: Will be removed with next major release, has no effect anymore.
373
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
374
+ - `Tabs`:
375
+ - Prop `weight`: Will be removed with next major release, has no effect anymore.
376
+ ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228))
377
+
17
378
  ## [4.0.0-beta.1] - 2026-03-02
18
379
 
19
380
  ### Added
@@ -457,7 +818,6 @@ and migration steps.
457
818
  - `Scroller`:
458
819
  - prop `gradientColorScheme` (has no effect anyway)
459
820
  - prop `gradientColor` (has no effect anyway)
460
- - prop `scrollIndicatorPosition` (use `alignScrollIndicator` instead)
461
821
  - `Segmented Control`:
462
822
  - prop `backgroundColor` (has no effect anyway)
463
823
  - event `segmentedControlChange` (use `change` instead)
@@ -525,6 +885,21 @@ and migration steps.
525
885
  - `Multi Select`: trim whitespace of selected options text
526
886
  ([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
527
887
 
888
+ ## [3.33.0] - 2026-03-09
889
+
890
+ ## [3.33.0-rc.0] - 2026-03-04
891
+
892
+ ### Added
893
+
894
+ - `Tag`: new `variant` property to define background colors which complies now with PDS `v4`
895
+ ([#4227](https://github.com/porsche-design-system/porsche-design-system/pull/4227))
896
+ - `Checkbox`: add warning for Firefox form restore bug
897
+
898
+ ### Changed
899
+
900
+ - `Tag`: deprecated `color` property, use `variant` property instead to define background colors which complies now with
901
+ PDS `v4` ([#4227](https://github.com/porsche-design-system/porsche-design-system/pull/4227))
902
+
528
903
  ## [3.32.1] - 2026-02-24
529
904
 
530
905
  ## [3.32.1-rc.0] - 2026-02-20
@@ -601,11 +976,6 @@ and migration steps.
601
976
  - `Multi Select`: trim whitespace of selected options text
602
977
  ([#4132](https://github.com/porsche-design-system/porsche-design-system/pull/4132))
603
978
 
604
- ### Changed
605
-
606
- - `Link Tile`, `Button Tile`: appearance in compact mode
607
- - `Canvas`: appearance on mobile view
608
-
609
979
  ## [3.31.0] - 2025-11-13
610
980
 
611
981
  ## [3.31.0-rc.0] - 2025-11-11
@@ -2021,7 +2391,7 @@ and migration steps.
2021
2391
 
2022
2392
  ```diff
2023
2393
  - <p-carousel align-header="left"></p-carousel>
2024
- + <p-carousel align-header="start"></p-carousel>
2394
+ + <p-carousel-pure align-header="start"></p-carousel>
2025
2395
  ```
2026
2396
 
2027
2397
  ### Fixed
@@ -105,6 +105,7 @@ class PButtonPure extends BaseComponent {
105
105
  active;
106
106
  alignLabel;
107
107
  aria;
108
+ color;
108
109
  disabled;
109
110
  form;
110
111
  hideLabel;
@@ -118,14 +119,14 @@ class PButtonPure extends BaseComponent {
118
119
  underline;
119
120
  value;
120
121
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PButtonPure, deps: null, target: i0.ɵɵFactoryTarget.Component });
121
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PButtonPure, isStandalone: false, selector: "p-button-pure,[p-button-pure]", inputs: { active: "active", alignLabel: "alignLabel", aria: "aria", disabled: "disabled", form: "form", hideLabel: "hideLabel", icon: "icon", iconSource: "iconSource", loading: "loading", name: "name", size: "size", stretch: "stretch", type: "type", underline: "underline", value: "value" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
122
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PButtonPure, isStandalone: false, selector: "p-button-pure,[p-button-pure]", inputs: { active: "active", alignLabel: "alignLabel", aria: "aria", color: "color", disabled: "disabled", form: "form", hideLabel: "hideLabel", icon: "icon", iconSource: "iconSource", loading: "loading", name: "name", size: "size", stretch: "stretch", type: "type", underline: "underline", value: "value" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
122
123
  }
123
124
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PButtonPure, decorators: [{
124
125
  type: Component,
125
126
  args: [{
126
127
  selector: 'p-button-pure,[p-button-pure]',
127
128
  template: '<ng-content />',
128
- inputs: ['active', 'alignLabel', 'aria', 'disabled', 'form', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'size', 'stretch', 'type', 'underline', 'value'],
129
+ inputs: ['active', 'alignLabel', 'aria', 'color', 'disabled', 'form', 'hideLabel', 'icon', 'iconSource', 'loading', 'name', 'size', 'stretch', 'type', 'underline', 'value'],
129
130
  standalone: false
130
131
  }]
131
132
  }] });
@@ -297,6 +298,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
297
298
  }]
298
299
  }] });
299
300
 
301
+ /** @deprecated since v4.0.0, will be removed with next major release. Please use `p-heading` instead. */
300
302
  class PDisplay extends BaseComponent {
301
303
  align;
302
304
  color;
@@ -459,15 +461,16 @@ class PHeading extends BaseComponent {
459
461
  ellipsis;
460
462
  size;
461
463
  tag;
464
+ weight;
462
465
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PHeading, deps: null, target: i0.ɵɵFactoryTarget.Component });
463
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PHeading, isStandalone: false, selector: "p-heading,[p-heading]", inputs: { align: "align", color: "color", ellipsis: "ellipsis", size: "size", tag: "tag" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
466
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PHeading, isStandalone: false, selector: "p-heading,[p-heading]", inputs: { align: "align", color: "color", ellipsis: "ellipsis", size: "size", tag: "tag", weight: "weight" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
464
467
  }
465
468
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PHeading, decorators: [{
466
469
  type: Component,
467
470
  args: [{
468
471
  selector: 'p-heading,[p-heading]',
469
472
  template: '<ng-content />',
470
- inputs: ['align', 'color', 'ellipsis', 'size', 'tag'],
473
+ inputs: ['align', 'color', 'ellipsis', 'size', 'tag', 'weight'],
471
474
  standalone: false
472
475
  }]
473
476
  }] });
@@ -1383,6 +1386,7 @@ class PLinkPure extends BaseComponent {
1383
1386
  active;
1384
1387
  alignLabel;
1385
1388
  aria;
1389
+ color;
1386
1390
  download;
1387
1391
  hideLabel;
1388
1392
  href;
@@ -1394,14 +1398,14 @@ class PLinkPure extends BaseComponent {
1394
1398
  target;
1395
1399
  underline;
1396
1400
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PLinkPure, deps: null, target: i0.ɵɵFactoryTarget.Component });
1397
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PLinkPure, isStandalone: false, selector: "p-link-pure,[p-link-pure]", inputs: { active: "active", alignLabel: "alignLabel", aria: "aria", download: "download", hideLabel: "hideLabel", href: "href", icon: "icon", iconSource: "iconSource", rel: "rel", size: "size", stretch: "stretch", target: "target", underline: "underline" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
1401
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PLinkPure, isStandalone: false, selector: "p-link-pure,[p-link-pure]", inputs: { active: "active", alignLabel: "alignLabel", aria: "aria", color: "color", download: "download", hideLabel: "hideLabel", href: "href", icon: "icon", iconSource: "iconSource", rel: "rel", size: "size", stretch: "stretch", target: "target", underline: "underline" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
1398
1402
  }
1399
1403
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PLinkPure, decorators: [{
1400
1404
  type: Component,
1401
1405
  args: [{
1402
1406
  selector: 'p-link-pure,[p-link-pure]',
1403
1407
  template: '<ng-content />',
1404
- inputs: ['active', 'alignLabel', 'aria', 'download', 'hideLabel', 'href', 'icon', 'iconSource', 'rel', 'size', 'stretch', 'target', 'underline'],
1408
+ inputs: ['active', 'alignLabel', 'aria', 'color', 'download', 'hideLabel', 'href', 'icon', 'iconSource', 'rel', 'size', 'stretch', 'target', 'underline'],
1405
1409
  standalone: false
1406
1410
  }]
1407
1411
  }] });
@@ -1804,19 +1808,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
1804
1808
  }] });
1805
1809
 
1806
1810
  class PScroller extends BaseComponent {
1811
+ /** @deprecated */
1807
1812
  alignScrollIndicator;
1808
1813
  aria;
1814
+ compact;
1815
+ /** @deprecated */
1809
1816
  scrollToPosition;
1810
1817
  scrollbar;
1818
+ sticky;
1811
1819
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PScroller, deps: null, target: i0.ɵɵFactoryTarget.Component });
1812
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PScroller, isStandalone: false, selector: "p-scroller,[p-scroller]", inputs: { alignScrollIndicator: "alignScrollIndicator", aria: "aria", scrollToPosition: "scrollToPosition", scrollbar: "scrollbar" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
1820
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PScroller, isStandalone: false, selector: "p-scroller,[p-scroller]", inputs: { alignScrollIndicator: "alignScrollIndicator", aria: "aria", compact: "compact", scrollToPosition: "scrollToPosition", scrollbar: "scrollbar", sticky: "sticky" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
1813
1821
  }
1814
1822
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PScroller, decorators: [{
1815
1823
  type: Component,
1816
1824
  args: [{
1817
1825
  selector: 'p-scroller,[p-scroller]',
1818
1826
  template: '<ng-content />',
1819
- inputs: ['alignScrollIndicator', 'aria', 'scrollToPosition', 'scrollbar'],
1827
+ inputs: ['alignScrollIndicator', 'aria', 'compact', 'scrollToPosition', 'scrollbar', 'sticky'],
1820
1828
  standalone: false
1821
1829
  }]
1822
1830
  }] });
@@ -2022,16 +2030,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
2022
2030
 
2023
2031
  class PSpinner extends BaseComponent {
2024
2032
  aria;
2033
+ color;
2025
2034
  size;
2026
2035
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PSpinner, deps: null, target: i0.ɵɵFactoryTarget.Component });
2027
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PSpinner, isStandalone: false, selector: "p-spinner,[p-spinner]", inputs: { aria: "aria", size: "size" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2036
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PSpinner, isStandalone: false, selector: "p-spinner,[p-spinner]", inputs: { aria: "aria", color: "color", size: "size" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2028
2037
  }
2029
2038
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PSpinner, decorators: [{
2030
2039
  type: Component,
2031
2040
  args: [{
2032
2041
  selector: 'p-spinner,[p-spinner]',
2033
2042
  template: '<ng-content />',
2034
- inputs: ['aria', 'size'],
2043
+ inputs: ['aria', 'color', 'size'],
2035
2044
  standalone: false
2036
2045
  }]
2037
2046
  }] });
@@ -2096,16 +2105,17 @@ class PTable extends BaseComponent {
2096
2105
  caption;
2097
2106
  compact;
2098
2107
  layout;
2108
+ sticky;
2099
2109
  update = new EventEmitter();
2100
2110
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PTable, deps: null, target: i0.ɵɵFactoryTarget.Component });
2101
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PTable, isStandalone: false, selector: "p-table,[p-table]", inputs: { caption: "caption", compact: "compact", layout: "layout" }, outputs: { update: "update" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2111
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PTable, isStandalone: false, selector: "p-table,[p-table]", inputs: { caption: "caption", compact: "compact", layout: "layout", sticky: "sticky" }, outputs: { update: "update" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2102
2112
  }
2103
2113
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PTable, decorators: [{
2104
2114
  type: Component,
2105
2115
  args: [{
2106
2116
  selector: 'p-table,[p-table]',
2107
2117
  template: '<ng-content />',
2108
- inputs: ['caption', 'compact', 'layout'],
2118
+ inputs: ['caption', 'compact', 'layout', 'sticky'],
2109
2119
  outputs: ['update'],
2110
2120
  standalone: false
2111
2121
  }]
@@ -2197,18 +2207,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
2197
2207
 
2198
2208
  class PTabs extends BaseComponent {
2199
2209
  activeTabIndex;
2210
+ background;
2211
+ compact;
2200
2212
  size;
2213
+ /** @deprecated */
2201
2214
  weight;
2202
2215
  update = new EventEmitter();
2203
2216
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PTabs, deps: null, target: i0.ɵɵFactoryTarget.Component });
2204
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PTabs, isStandalone: false, selector: "p-tabs,[p-tabs]", inputs: { activeTabIndex: "activeTabIndex", size: "size", weight: "weight" }, outputs: { update: "update" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2217
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PTabs, isStandalone: false, selector: "p-tabs,[p-tabs]", inputs: { activeTabIndex: "activeTabIndex", background: "background", compact: "compact", size: "size", weight: "weight" }, outputs: { update: "update" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2205
2218
  }
2206
2219
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PTabs, decorators: [{
2207
2220
  type: Component,
2208
2221
  args: [{
2209
2222
  selector: 'p-tabs,[p-tabs]',
2210
2223
  template: '<ng-content />',
2211
- inputs: ['activeTabIndex', 'size', 'weight'],
2224
+ inputs: ['activeTabIndex', 'background', 'compact', 'size', 'weight'],
2212
2225
  outputs: ['update'],
2213
2226
  standalone: false
2214
2227
  }]
@@ -2216,18 +2229,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImpor
2216
2229
 
2217
2230
  class PTabsBar extends BaseComponent {
2218
2231
  activeTabIndex;
2232
+ background;
2233
+ compact;
2219
2234
  size;
2235
+ /** @deprecated */
2220
2236
  weight;
2221
2237
  update = new EventEmitter();
2222
2238
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PTabsBar, deps: null, target: i0.ɵɵFactoryTarget.Component });
2223
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PTabsBar, isStandalone: false, selector: "p-tabs-bar,[p-tabs-bar]", inputs: { activeTabIndex: "activeTabIndex", size: "size", weight: "weight" }, outputs: { update: "update" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2239
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: PTabsBar, isStandalone: false, selector: "p-tabs-bar,[p-tabs-bar]", inputs: { activeTabIndex: "activeTabIndex", background: "background", compact: "compact", size: "size", weight: "weight" }, outputs: { update: "update" }, usesInheritance: true, ngImport: i0, template: '<ng-content />', isInline: true });
2224
2240
  }
2225
2241
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: PTabsBar, decorators: [{
2226
2242
  type: Component,
2227
2243
  args: [{
2228
2244
  selector: 'p-tabs-bar,[p-tabs-bar]',
2229
2245
  template: '<ng-content />',
2230
- inputs: ['activeTabIndex', 'size', 'weight'],
2246
+ inputs: ['activeTabIndex', 'background', 'compact', 'size', 'weight'],
2231
2247
  outputs: ['update'],
2232
2248
  standalone: false
2233
2249
  }]