UNPKG

@porsche-design-system/components-react

Version:

Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.

969 lines (780 loc) 232 kB
# Changelog ## Porsche Design System All notable changes to this project will be documented in this file and published as following npm packages: - `@porsche-design-system/components-js` - `@porsche-design-system/components-angular` - `@porsche-design-system/components-react` - `@porsche-design-system/components-vue` The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [Unreleased] ## [4.3.0] - 2026-06-24 ## [4.3.0-rc.0] - 2026-06-24 ### Added - `Tabs`, `Tabs Bar`: `aria` prop to provide additional context for screen readers ([#4538](https://github.com/porsche-design-system/porsche-design-system/pull/4538)) ### Changed - `Angular`: Widen peer dependency to support Angular version 21 + 22 ([#4546](https://github.com/porsche-design-system/porsche-design-system/pull/4546)) ## [4.2.0] - 2026-06-22 ## [4.2.0-rc.5] - 2026-06-12 ### Added - `Angular`: Bumped peer dependency to support Angular new major version 22 ([#4505](https://github.com/porsche-design-system/porsche-design-system/pull/4505)) - `Flyout`: Prop `fullscreen` to stretch the flyout to the full viewport width with squared corners, useful for smaller viewports ([#4498](https://github.com/porsche-design-system/porsche-design-system/pull/4498)) ### Fixed - `Flyout`, `Modal`, `Sheet` ([#4498](https://github.com/porsche-design-system/porsche-design-system/pull/4498)): - Nested dialog elements no longer cause rendering issues in Chromium - Keep the dialog element on the `#top-layer` during the fade-out animation in Safari and Firefox, so closing (especially nested) dialogs no longer drop behind surrounding content - `Banner`: Keep the popover on the `#top-layer` during the fade-out animation in Safari and Firefox, so it no longer drops behind surrounding content while closing ([#4498](https://github.com/porsche-design-system/porsche-design-system/pull/4498)) ## [4.2.0-rc.4] - 2026-06-10 ### Fixed - `Radio Group`: Prevent clicks on `label-after` slot from bubbling to the host element ([#4477](https://github.com/porsche-design-system/porsche-design-system/pull/4477)) - `Flyout`, `Modal`, `Sheet`: Prevent dialog elements from reserving layout space in closed state when placed within a new stacking context ([#4494](https://github.com/porsche-design-system/porsche-design-system/pull/4494)) ## [4.2.0-rc.3] - 2026-06-09 ### Fixed - `Flyout`, `Modal`, `Sheet`: content no longer disappears in Chromium when many elements with a frosted `backdrop-filter` (e.g. `p-tag`) are rendered ([#4490](https://github.com/porsche-design-system/porsche-design-system/pull/4490)) ## [4.2.0-rc.2] - 2026-06-04 ### Added - `Tailwind CSS`: CJK `font-family` `:lang()` selectors are available in the theme by default to auto-detect Simplified Chinese, Traditional Chinese, Japanese, and Korean content ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `SCSS` ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)): - `$font-porsche-next-zh-hans`, `$font-porsche-next-zh-hant`, `$font-porsche-next-ja`, `$font-porsche-next-ko`: CJK `font-family` tokens - `cjk-font-family()`: mixin that emits `:lang()` selectors to auto-detect CJK content - `Emotion`, `Vanilla Extract` ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)): - `fontPorscheNextZhHans`, `fontPorscheNextZhHant`, `fontPorscheNextJa`, `fontPorscheNextKo`: CJK `font-family` tokens - `getCJKFontFamilyStyle()`: returns `:lang()` selectors to auto-detect CJK content - `Accordion`: `indent` prop to indent the slotted content to be vertically aligned with the text of the summary section ([#4478](https://github.com/porsche-design-system/porsche-design-system/pull/4478)) ### Changed - Improved CJK `font-family` support with dedicated, OS-specific stacks per language ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)): - **Simplified Chinese:** PingFang SC (macOS), Microsoft YaHei (Windows), Noto Sans SC (Android, Linux, ChromeOS) - **Traditional Chinese:** PingFang TC (macOS), Microsoft JhengHei (Windows), Noto Sans TC (Android, Linux, ChromeOS) - **Japanese:** Hiragino Sans (macOS), Yu Gothic (Windows), Noto Sans JP (Android, Linux, ChromeOS) - **Korean:** Apple SD Gothic Neo (macOS), Malgun Gothic (Windows), Noto Sans KR (Android, Linux, ChromeOS) - Text-rendering components now switch to language-specific CJK font stacks via `:lang()` selectors when a matching `lang` attribute is set ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `Tailwind CSS` — `.font-porsche-next`, `.prose-heading-*`, `.prose-text-*` now apply `:lang()` selectors to auto-detect CJK content ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `SCSS` — `prose-heading-*()`, `prose-text-*()` now apply `:lang()` selectors to auto-detect CJK content ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `Emotion`, `Vanilla Extract` — `proseHeading*`, `proseText*` now apply `:lang()` selectors to auto-detect CJK content ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `Input Text`: the global `inputmode` attribute is now passed through to the underlying native `input` element ([#4322](https://github.com/porsche-design-system/porsche-design-system/pull/4322)) - `Input Text`, `Input Number`: extended types of `value` prop to allow `string | number | null` ([#4322](https://github.com/porsche-design-system/porsche-design-system/pull/4322)) - `Input Date`, `Input Email`, `Input Password`, `Input Search`, `Input Tel`, `Input Time`, `Input Url`, `Textarea`: extended types of `value` prop to allow `string | null` ([#4322](https://github.com/porsche-design-system/porsche-design-system/pull/4322)) - `Select`, `Select Option`: extended types of `value` prop to allow `string | number | null` ([#4322](https://github.com/porsche-design-system/porsche-design-system/pull/4322)) - `Multi Select`: extended types of `value` prop to allow `string[] | number[] | null` ([#4322](https://github.com/porsche-design-system/porsche-design-system/pull/4322)) - `Multi Select Option`: extended types of `value` prop to allow `string | number` ([#4322](https://github.com/porsche-design-system/porsche-design-system/pull/4322)) - `Tabs`, `Tabs Bar`, `Link Tile`, `Link Tile Product`, `Button Tile`, `Stepper Horizontal`, `Accordion`, `Popover`, `Flyout`, `Modal`, `Sheet`: aligned `border-radius` with the app and car design system for improved visual coherence ([#4447](https://github.com/porsche-design-system/porsche-design-system/pull/4447)) - `Tabs Bar`: refined active tab background color to improve visual coherence with the app and vehicle design system ([#4447](https://github.com/porsche-design-system/porsche-design-system/pull/4447)) - `Tabs`, `Tabs Bar`: height now matches `p-button` and `p-link` when `background="none"` is used, so the visual height stays stable when combined with buttons or links ([#4447](https://github.com/porsche-design-system/porsche-design-system/pull/4447)) ### Fixed - `Tailwind CSS`: Prefixing support ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `Inline Notification`: The action label expands when the heading or content section becomes multiline ([#4418](https://github.com/porsche-design-system/porsche-design-system/pull/4418)) - `Input Date`, `Input Email`, `Input Number`, `Input Password`, `Input Search`, `Input Tel`, `Input Text`, `Input Time`, `Input Url`, `Textarea`: form value, validity and `disabled`/`readOnly` state now stay in sync with the internal native control, so native form submission, reset and validation behave correctly when these props change dynamically ([4446](https://github.com/porsche-design-system/porsche-design-system/pull/4446)) - `Accordion`: not causing scrollbar on outer scroll container (e.g. flyout) when closed with position:absolute slotted content ([#4449](https://github.com/porsche-design-system/porsche-design-system/pull/4449)) - Added `semibold` alias for Arabic Porsche Next, mapped to `bold` as a fallback since the font only provides `regular` and `bold` weights. ([#4354](https://github.com/porsche-design-system/porsche-design-system/pull/4354)) - `Flyout`, `Modal`, `Sheet`: the dismiss button now has a solid background to ensure sufficient contrast and a11y compliance when placed above content such as media elements ([#4447](https://github.com/porsche-design-system/porsche-design-system/pull/4447)) - `Flyout`, `Modal`, `Sheet`: the dialog's rounded corners now clip slotted content (e.g. media elements) so it no longer overflows the dialog's `border-radius` ([#4447](https://github.com/porsche-design-system/porsche-design-system/pull/4447)) ### Removed - Legacy border-radius stylesheet `@porsche-design-system/components-{js|angular|react|vue}/legacy-radius.css`, since visual coherence between web, app and car design system is now achieved ([#4447](https://github.com/porsche-design-system/porsche-design-system/pull/4447)) ## [4.2.0-rc.1] - 2026-05-18 ### Added - `Angular`, `Vue`: expose typings for component props (e.g. `PButtonProps`, `PInputProps`, etc.) for better type safety and developer experience ([#4403](https://github.com/porsche-design-system/porsche-design-system/pull/4403)) ## [4.2.0-rc.0] - 2026-05-12 ### Added - `AG Grid`: - custom compact theme ([#4301](https://github.com/porsche-design-system/porsche-design-system/pull/4301)) - minor style adjustments ([#4301](https://github.com/porsche-design-system/porsche-design-system/pull/4301)) - `Ai Tag`: New component to mark AI-generated/AI-modified content ([#4400](https://github.com/porsche-design-system/porsche-design-system/pull/4400)) ## [4.1.0] - 2026-05-06 ## [4.1.0-rc.0] - 2026-05-05 ### Added - `Input Search`: `aria` prop provides additional context for screen reader ([#4321](https://github.com/porsche-design-system/porsche-design-system/pull/4321)) ### Fixed - `Tabs Bar`: scrolling page down when below the fold ([#4392](https://github.com/porsche-design-system/porsche-design-system/pull/4392)) ## [4.0.0] - 2026-04-29 ## [4.0.0-rc.2] - 2026-04-28 ### Added - `Tag`: Prop `variants` supports new values: `'info-frosted' | 'success-frosted' | 'warning-frosted' | 'error-frosted' |` ([#4320](https://github.com/porsche-design-system/porsche-design-system/pull/4320)) - `Carousel`: `--p-carousel-prev-next-color-scheme` CSS variable in order to change the `color-scheme` of the prev/next buttons individually ([#4308](https://github.com/porsche-design-system/porsche-design-system/pull/4308)) ### Changed - `Tag`: Slightly adjusted padding for better visual appearance ([#4320](https://github.com/porsche-design-system/porsche-design-system/pull/4320)) - `Tokens`, `Tailwind CSS`, `SCSS`, `Emotion`, `Vanilla Extract`: Update notification frosted colors (success, error, warning, info) ([#4317](https://github.com/porsche-design-system/porsche-design-system/pull/4317)) - `Banner`, `Inline Notification`: prop or slot `heading` is recommended but not required anymore ([#4317](https://github.com/porsche-design-system/porsche-design-system/pull/4317)) - `Banner`, `Inline Notification`, `Toast`: visual alignment and color contrast improvements ([#4317](https://github.com/porsche-design-system/porsche-design-system/pull/4317)) ### Fixed - `Multi Select`, `Select`: not correctly updating when options within `p-optgroup` change dynamically ([#4278](https://github.com/porsche-design-system/porsche-design-system/pull/4279)) - `Flyout`, `Modal`, `Sheet`: `overflow: clip` causing issues ([#4296](https://github.com/porsche-design-system/porsche-design-system/pull/4296)) - `Link Pure`: focus border of slotted anchor ([#4285](https://github.com/porsche-design-system/porsche-design-system/pull/4285)) - `Accessibility`: improved internal ARIA attribute handling for various components, e.g. `Banner`, `Inline Notification` and `Input` elements. ([#4274](https://github.com/porsche-design-system/porsche-design-system/pull/4274)) - Prefixing: custom PDS prefixes allow numbers in the prefix name ([#4297](https://github.com/porsche-design-system/porsche-design-system/pull/4297)) - `Tailwind CSS`: Custom tailwind prefixing ([#4294](https://github.com/porsche-design-system/porsche-design-system/pull/4294)) - Form components: rendering issues of slotted label if provided as `display: block` element ([#4298](https://github.com/porsche-design-system/porsche-design-system/pull/4298)) - `Table`: incorrect cell padding when nested inside `Flyout`, `Modal` or `Sheet` ([#4314](https://github.com/porsche-design-system/porsche-design-system/pull/4314)) - `Tabs`, `Tabs Bar`: - keyboard navigation in RTL mode ([#4300](https://github.com/porsche-design-system/porsche-design-system/pull/4300)) - animation flickering ([#4309](https://github.com/porsche-design-system/porsche-design-system/pull/4309)) - hydration error ([#4309](https://github.com/porsche-design-system/porsche-design-system/pull/4309)) - `Select`, `Multi Select`: Optimize screen reader experience ([#4313](https://github.com/porsche-design-system/porsche-design-system/pull/4313)) ### Deprecated - `Banner`: - Slot `description` (use default slot instead) ([#4317](https://github.com/porsche-design-system/porsche-design-system/pull/4317)) ## [4.0.0-rc.1] - 2026-04-07 ### Added - `Banner`: - Prop `position` with values: `BreakpointCustomizable<'top' | 'bottom'>` (default: `{ base: 'bottom', s: 'top' }`) ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - CSS Variable `--p-banner-top`: Defines the distance from the top of the viewport. Only takes effect when the `position` property is set to `top` (at the respective breakpoint). ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - CSS Variable `--p-banner-bottom`: Defines the distance from the bottom of the viewport. Only takes effect when the `position` property is set to `bottom` (at the respective breakpoint). ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - CSS Variable `--p-banner-max-w`: Defines the maximum width of the banner. ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - CSS Variable `--p-banner-inset-x`: Defines the horizontal offset of the banner from the edges of the viewport. ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - `Tailwind CSS`: `--spacing-static-2xs` ([#4262](https://github.com/porsche-design-system/porsche-design-system/pull/4262)) - `SCSS`: `$spacing-static-2xs` ([#4262](https://github.com/porsche-design-system/porsche-design-system/pull/4262)) - `Tokens`, `Emotion`, `Vanilla Extract`: `spacingStatic2xs` ([#4262](https://github.com/porsche-design-system/porsche-design-system/pull/4262)) ### Changed - `Banner`, `Inline Notification`: Improve visual appearance ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - `Banner`: `max-width` is now `100ch` by default to increase readability. Use CSS Variable `--p-banner-max-w` and `--p-banner-inset-x` to set custom `max-width` and horizontal offset. ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - `SCSS`: - All `prose-heading-*` and `prose-text-*` mixins set `color` to the primary token by default, overridable via the CSS cascade ([#4262](https://github.com/porsche-design-system/porsche-design-system/pull/4262)) - `Emotion`, `Vanilla Extract`: - All `proseHeading*` and `proseText*` style objects set `color` to the primary token by default, overridable in your own styles ([#4262](https://github.com/porsche-design-system/porsche-design-system/pull/4262)) ### Fixed - `Accordion`: summary overlapping details when custom padding is applied ([#4263](https://github.com/porsche-design-system/porsche-design-system/pull/4263)) - `Scroller`: mask not rendering on ios when `scrollbar` set to `true` ([#4263](https://github.com/porsche-design-system/porsche-design-system/pull/4263)) - `Modal`, `Sheet`: visual bug in the corner when scrolled ([#4272](https://github.com/porsche-design-system/porsche-design-system/pull/4272)) - `Model Signature`: `--p-model-signature-color` not working with gradients ([#4272](https://github.com/porsche-design-system/porsche-design-system/pull/4272)) - `Tabs Bar`: flickering of active tab in certain cases ([#4263](https://github.com/porsche-design-system/porsche-design-system/pull/4263)) - Global Styles: missing individual export for `color-scheme.css` ([#4260](https://github.com/porsche-design-system/porsche-design-system/pull/4260)) - `Table`: double focus outline of sort buttons ([#4270](https://github.com/porsche-design-system/porsche-design-system/pull/4270)) ### Deprecated - `Banner`: - CSS Variable `--p-banner-position-top` (use `--p-banner-top` instead) ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) - CSS Variable `--p-banner-position-bottom` (use `--p-banner-bottom` instead) ([#4264](https://github.com/porsche-design-system/porsche-design-system/pull/4264)) ## [4.0.0-rc.0] - 2026-03-27 ## [4.0.0-beta.4] - 2026-03-25 ### Added - `Heading`: - Prop `hyphens` with values: `'none' (default) | 'auto' | 'manual' | 'inherit'` - `Text`: - Prop `hyphens` with values: `'none' | 'auto' | 'manual' | 'inherit' (default)` - `Icon`: `play-filled`, `arrow-down-left`, `arrow-down-right`, `arrow-up-left`, `arrow-up-right` ### Changed - `Checkbox`: Improve visual appearance of the checked state - `Radio Group`: Improve visual appearance of the checked state - `Icon`: Improve visual appearance of `fast-backward`, `fast-forward`, `new-chat`, `pause`, `play`, `skip-backward`, `skip-forward` - `Tag`: Improve visual appearance of variant `info`, `success`, `variant` and `error` - `Tokens`: Update value of `typescaleXs` ### Fixed - `Accordion`: missing `delegatesFocus` ([#4238](https://github.com/porsche-design-system/porsche-design-system/pull/4238)) ### Removed - CSS Variable `--p-hyphens` - Hyphenation style in general: CSS `hyphens` and `overflow-wrap` properties are no longer applied globally across components. If you relied on automatic word hyphenation, you can restore the previous behavior by setting these inheritable properties on a common ancestor like `body`: ```css body { hyphens: auto; overflow-wrap: break-word; } ``` Since both properties are inheritable, they will cascade down to all child elements, including content within Shadow DOM components. ## [4.0.0-beta.3] - 2026-03-19 ### Added - Storefront: documentation for integrating Porsche Design System with AI coding assistants like GitHub Copilot and Cursor to generate accessible code that follows WCAG 2.2 AA standards. ([#4147](https://github.com/porsche-design-system/porsche-design-system/pull/4147)) - `Tokens`: `typescale3Xl`, `typescale4Xl`, `typescale5Xl` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Tailwind CSS`: `--text-3xl`, `--text-4xl`, `--text-5xl`, `.prose-heading-3xl`, `.prose-heading-4xl`, `.prose-heading-5xl` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `SCSS`: `$typescale-3xl`, `$typescale-4xl`, `$typescale-5xl`, `@mixin prose-heading-3xl()`, `@mixin prose-heading-4xl()`, `@mixin prose-heading-5xl()` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Emotion`, `Vanilla Extract`: `typescale3Xl`, `typescale4Xl`, `typescale5Xl`, `proseHeading3XlStyle`, `proseHeading4XlStyle`, `proseHeading5XlStyle` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Spinner`, `Flag`, `Icon`: - Prop `size` supports all typographic scale values: `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'` ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234), [#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Spinner`: - Prop `color` with values: `'primary' | 'inherit'` ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - CSS Variable `--p-spinner-size`: Defines the width and height of the spinner. Overrides the `size` property when set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - CSS Variable `--p-spinner-color`: Defines the foreground color. Overrides the `color` property when set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - CSS Variable `--p-spinner-track-color`: Defines the track/background color. Overrides the `color` property when set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - `Flag`: - CSS Variable `--p-flag-size`: Defines the width and height of the flag. Overrides the `size` property when set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - `Icon`: - CSS Variable `--p-icon-size`: Defines the width and height of the icon. Overrides the `size` property when set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - CSS Variable `--p-icon-color`: Defines the icon color. Overrides the `color` property when set. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) - Prop `color` supports new value `'contrast-higher'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Button Pure`, `Link Pure`: - Prop `size` supports new typographic scale values: `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - Prop `color` supports new values `'contrast-higher' | 'contrast-high' | 'contrast-medium'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Text`: - Prop `size` supports new typographic scale values: `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - Prop `weight` supports new value `'bold'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - Prop `color` supports new value `'contrast-higher'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Heading`: - Prop `size` supports new typographic scale values: `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | 'inherit'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - Prop `weight` supports new value `'bold'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - Prop `color` supports new values `'contrast-higher' | 'contrast-high' | 'contrast-medium'` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ### Changed - `Spinner`, `Flag`, `Icon`: - The `size` prop is breakpoint customizable. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234), [#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - When set to `inherit`, the size is derived from a custom font-size defined on a parent element, calculated against the global line-height (based on `ex`-unit) to remain visually consistent with other typographic-scale-based components. ([#4234](https://github.com/porsche-design-system/porsche-design-system/pull/4234)) ```diff - <p-spinner size="inherit" style="width: 100px; height: 100px;"></p-spinner> + <p-spinner style="--p-spinner-size: 100px;"></p-spinner> // 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." <p-spinner size="inherit" style="font-size: 100px;"></p-spinner> ``` ```diff - <p-icon size="inherit" style="width: 100px; height: 100px;"></p-icon> + <p-icon style="--p-icon-size: 100px;"></p-icon> // 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." <p-icon size="inherit" style="font-size: 100px;"></p-icon> ``` ```diff - <p-flag size="inherit" style="width: 100px; height: 100px;"></p-flag> + <p-flag style="--p-flag-size: 100px;"></p-flag> // 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." <p-flag size="inherit" style="font-size: 100px;"></p-flag> ``` - `Pagination`: Modernize visual appearance ([#4241](https://github.com/porsche-design-system/porsche-design-system/pull/4241)) ### Removed - `Emotion, Vanilla Extract` (added in `v4.0.0-beta.0`): `proseDisplayLgStyle`, `proseDisplayMdStyle`, `proseDisplaySmStyle` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `SCSS` (added in `v4.0.0-beta.0`): `@mixin prose-display-lg()`, `@mixin prose-display-md()`, `@mixin prose-display-sm()` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Text`: Value `contrast-low` for `color` prop since it's not a11y compliant. Use `contrast-medium` instead. ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ### Deprecated - `Text`: - Values `'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large'` of prop `size` (use `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-text size="xx-small">…</p-text> + <p-text size="2xs">…</p-text> - <p-text size="x-small">…</p-text> + <p-text size="xs">…</p-text> - <p-text size="small">…</p-text> + <p-text size="sm">…</p-text> - <p-text size="medium">…</p-text> + <p-text size="md">…</p-text> - <p-text size="large">…</p-text> + <p-text size="lg">…</p-text> - <p-text size="x-large">…</p-text> + <p-text size="xl">…</p-text> ``` - Values `'regular' | 'semi-bold'` of prop `weight` (use `'normal' | 'semibold'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-text weight="regular">…</p-text> + <p-text weight="normal">…</p-text> - <p-text weight="semi-bold">…</p-text> + <p-text weight="semibold">…</p-text> ``` - `Heading`: - Values `'small' | 'medium' | 'large' | 'x-large' | 'xx-large'` of prop `size` (use `'sm' | 'md' | 'lg' | 'xl' | '2xl'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-heading size="small">…</p-heading> + <p-heading size="sm">…</p-heading> - <p-heading size="medium">…</p-heading> + <p-heading size="md">…</p-heading> - <p-heading size="large">…</p-heading> + <p-heading size="lg">…</p-heading> - <p-heading size="x-large">…</p-heading> + <p-heading size="xl">…</p-heading> - <p-heading size="xx-large">…</p-heading> + <p-heading size="2xl">…</p-heading> ``` - Values `'regular' | 'semi-bold'` of prop `weight` (use `'normal' | 'semibold'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) - `Icon`: - Values `'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large' | 'xx-large'` of prop `size` (use `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-icon size="xx-small">…</p-icon> + <p-icon size="2xs">…</p-icon> - <p-icon size="x-small">…</p-icon> + <p-icon size="xs">…</p-icon> - <p-icon size="small">…</p-icon> + <p-icon size="sm">…</p-icon> - <p-icon size="medium">…</p-icon> + <p-icon size="md">…</p-icon> - <p-icon size="large">…</p-icon> + <p-icon size="lg">…</p-icon> - <p-icon size="x-large">…</p-icon> + <p-icon size="xl">…</p-icon> - <p-icon size="xx-large">…</p-icon> + <p-icon size="2xl">…</p-icon> ``` - `Spinner`: - Values `'small' | 'medium' | 'large'` of prop `size` (use `'sm' | 'md' | 'lg'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-spinner size="small">…</p-spinner> + <p-spinner size="sm">…</p-spinner> - <p-spinner size="medium">…</p-spinner> + <p-spinner size="md">…</p-spinner> - <p-spinner size="large">…</p-spinner> + <p-spinner size="lg">…</p-spinner> ``` - `Button Pure`, `Link Pure`: - Values `'xx-small' | 'x-small' | 'small' | 'medium' | 'large' | 'x-large'` of prop `size` (use `'2xs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'` instead) ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-button-pure size="xx-small">…</p-button-pure> + <p-button-pure size="2xs">…</p-button-pure> - <p-button-pure size="x-small">…</p-button-pure> + <p-button-pure size="xs">…</p-button-pure> - <p-button-pure size="small">…</p-button-pure> + <p-button-pure size="sm">…</p-button-pure> - <p-button-pure size="medium">…</p-button-pure> + <p-button-pure size="md">…</p-button-pure> - <p-button-pure size="large">…</p-button-pure> + <p-button-pure size="lg">…</p-button-pure> - <p-button-pure size="x-large">…</p-button-pure> + <p-button-pure size="xl">…</p-button-pure> ``` - `Display` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <p-display size="large">…</p-display> + <p-heading size="5xl">…</p-heading> - <p-display size="medium">…</p-display> + <p-heading size="4xl">…</p-heading> - <p-display size="small">…</p-display> + <p-heading size="3xl">…</p-heading> ``` - `Tailwind CSS`: `.prose-display-lg`, `.prose-display-md`, `.prose-display-sm` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - <h1 class="prose-display-lg">…</h1> + <h1 class="prose-heading-5xl">…</h1> - <h1 class="prose-display-md">…</h1> + <h1 class="prose-heading-4xl">…</h1> - <h1 class="prose-display-sm">…</h1> + <h1 class="prose-heading-3xl">…</h1> ``` - `SCSS`: `@mixin pds-display-large`, `@mixin pds-display-medium`, `@mixin pds-display-small` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - @include pds-display-large; + @include prose-heading-5xl; - @include pds-display-medium; + @include prose-heading-4xl; - @include pds-display-small; + @include prose-heading-3xl; ``` - `Emotion, Vanilla Extract`: `displayLargeStyle`, `displayMediumStyle`, `displaySmallStyle` ([#4246](https://github.com/porsche-design-system/porsche-design-system/pull/4246)) ```diff - ...displayLargeStyle, + ...proseHeading5XlStyle, - ...displayMediumStyle, + ...proseHeading4XlStyle, - ...displaySmallStyle, + ...proseHeading3XlStyle, ``` ## [4.0.0-beta.2] - 2026-03-11 ### Added - `Scroller`: - Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - Prop `sticky`: Makes the indicator sticky at the top or bottom while scrolling depending on the scroll direction. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - CSS Variable `--p-scroller-indicator-top`: Defines the distance from the top of the viewport at which the indicator sticks when scrolling down and `sticky` is enabled. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - CSS Variable `--p-scroller-indicator-bottom`: Defines the distance from the bottom of the viewport at which the indicator sticks when scrolling up and `sticky` is enabled. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - CSS Variable `--p-scroller-gap`: Defines the gap between slotted nodes. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Tabs Bar`: - Prop `background`: Defines the background color. Use `frosted` only on images, videos or gradients. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Tabs`: - Prop `background`: Defines the background color. Use `frosted` only on images, videos or gradients. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - Prop `compact`: Displays with reduced spacing and smaller padding for a more condensed layout. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Table`: - Prop `sticky`: Makes the scroll indicator sticky at the top or bottom while scrolling depending on the scroll direction. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - CSS Variable `--p-table-scroll-indicator-top`: Defines the distance from the top of the viewport at which the scroll indicator sticks when scrolling down and `sticky` is enabled. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - CSS Variable `--p-table-scroll-indicator-bottom`: Defines the distance from the bottom of the viewport at which the scroll indicator sticks when scrolling up and `sticky` is enabled. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) ### Changed - `Scroller`: - Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Tabs Bar`: - Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Tabs`: - Modernize visual appearance ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Table`: - Use modernized scroller internally ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Stepper Horizontal`: - Use modernized scroller internally ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) ### Deprecated - `Scroller`: - Prop `alignScrollIndicator`: Will be removed with next major release, has no effect anymore. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - Prop `scrollToPosition`: Will be removed with next major release, use native `scrollIntoView()` on the slotted element itself, e.g. `el.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center', container: 'nearest' })`. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Tabs Bar`: - Prop `weight`: Will be removed with next major release, has no effect anymore. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) - `Tabs`: - Prop `weight`: Will be removed with next major release, has no effect anymore. ([#4228](https://github.com/porsche-design-system/porsche-design-system/pull/4228)) ## [4.0.0-beta.1] - 2026-03-02 ### Added - `SCSS`, `Emotion`, `Vanilla Extract`: bring back PDS v3 import paths for better DX and backward compatibility. - `Accordion`: - Slot `summary` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - Slot `summary-before` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - Slot `summary-after` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - Prop `background` with values `canvas | surface | frosted | none (default)` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - Prop `align-marker` with values `start | end (default)` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - CSS Variable `--p-accordion-px` to control the horizontal padding ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - CSS Variable `--p-accordion-py` to control the vertical padding ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - CSS Variable `--p-accordion-summary-top` to control the optional sticky top position ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) ### Changed - `Accordion`: - Modernize visual appearance ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - Use semantic HTML element `<details>` and `<summary>` internally (instead of divs and buttons) for better accessibility and native behavior ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) - `Input Date`, `Input Email`, `Input Number`, `Input Password`, `Input Search`, `Input Tel`, `Input Text`, `Input Time`, `Input Url`, `Textarea`: `value` sync with the underlying native `<input />` or `<textarea />` element - `Checkbox`, `Input-*`, `Multi-Select`, `Pin Code`, `Radio Button Group`, `Segmented-Control`, `Select`, `Textarea`: Slot `label-after` is not affected by `disbaled` states anymore ([#4181](https://github.com/porsche-design-system/porsche-design-system/pull/4181)) - **Vue:** All component events now emit the full `CustomEvent` instead of just the event detail. The event detail must be accessed via `event.detail`. Props and other component data can be accessed directly via `event.target`. ```diff <script setup lang="ts"> import { type AccordionUpdateEventDetail, PAccordion } from '@porsche-design-system/components-vue'; import { ref } from 'vue'; const isOpen = ref(false); - const onUpdate = (event: AccordionUpdateEventDetail): void => { + const onUpdate = (event: CustomEvent<AccordionUpdateEventDetail>): void => { - isOpen1.value = event.open; + isOpen1.value = event.detail.open; // You can also access the value from the component itself via e.target, e.g. e.target.open }; </script> <template> <PAccordion :open="isOpen" @update="onUpdate"> ... </PAccordion> </template> ``` ### Removed - `Accordion`: - Prop `tag` use `heading-tag` (deprecated with v4 now) instead or make use of `slot="summary"` for more flexibility ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) ```diff - <p-acccordion heading="Some summary" tag="h3"> <p-text>Some details</p-text> </p-accordion> + <p-accordion> + <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading> <p-text>Some details</p-text> </p-accordion> ``` ### Deprecated - `SCSS`: Import path for npm package: ```diff - @use '@porsche-design-system/components-{js|angular|react|vue}/styles' as *; + @use '@porsche-design-system/components-{js|angular|react|vue}/scss' as *; ``` - `Emotion`: Import path for npm package: ```diff - import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles'; + import { … } from '@porsche-design-system/components-{js|angular|react|vue}/emotion'; ``` - `Vanilla Extract`: Import path for npm package: ```diff - import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles/vanilla-extract'; + import { … } from '@porsche-design-system/components-{js|angular|react|vue}/vanilla-extract'; ``` - `Accordion`: - Prop `heading`, `heading-tag` and `size` in favor of `slot="summary"` for more flexibility ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) ```diff - <p-acccordion heading="Some summary" heading-tag="h3" size="small"> <p-text>Some details</p-text> </p-accordion> + <p-accordion> + <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading> <p-text>Some details</p-text> </p-accordion> ``` - Slot `heading` in favor of `slot="summary"` ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) ```diff <p-acccordion> - <span slot="heading">Some summary</span> <p-text>Some details</p-text> </p-accordion> <p-accordion> + <p-heading slot="summary" tag="h3" size="small">Some summary</p-heading> <p-text>Some details</p-text> </p-accordion> ``` - CSS Variable `--p-accordion-position-sticky-top`, use `--p-accordion-summary-top` instead ([#4201](https://github.com/porsche-design-system/porsche-design-system/pull/4201)) ## [4.0.0-beta.0] - 2026-02-12 ### Added - `Checkbox` (🧪Experimental): Supports now being wrapped inside a native `label` element to provide more flexibility in positioning a custom label ([#4124](https://github.com/porsche-design-system/porsche-design-system/pull/4124)) - `Canvas`: prop `background` to set the background color to `canvas | surface` - `Carousel`: - `width` prop now supports `wide` and `full` values ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180)) - `--p-carousel-px` CSS custom property introduced to control horizontal padding (when used, the `width` prop has no effect anymore) ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180)) - `--p-carousel-ps`, `--p-carousel-pe` CSS custom property introduced to control the logical inline start/end padding ([#4180](https://github.com/porsche-design-system/porsche-design-system/pull/4180)) - `Angular`: Bumped peer dependency to support Angular new major version 21 ([#4178](https://github.com/porsche-design-system/porsche-design-system/pull/4178)) - `AG Grid`: - Bumped peer dependency to support AG Grid new major version 35 ([#4143](https://github.com/porsche-design-system/porsche-design-system/issues/4143)) - Refreshed visuals to reflect new color tokens - `Tailwind CSS`: - `--transition-duration-sm`, `--transition-duration-md`, `--transition-duration-lg`, `--transition-duration-xl`, `--shadow-sm`, `--shadow-md`, `--shadow-lg`, `--radius-xs`, `--radius-xl`, `--radius-2xl`, `--radius-3xl`, `--radius-4xl`, `--radius-full`, `--border-width-1`, `--border-width-2`, `--color-frosted-strong` - `SCSS`: - Common hint: Previous variables are still available as alias and mapped to the new ones for backward compatibility. - Breakpoint: `$breakpoint-xs`, `$breakpoint-sm`, `$breakpoint-md`, `$breakpoint-lg`, `$breakpoint-xl` and `$breakpoint-2xl` - Blur: `$blur-frosted` - Border: `$radius-xs`, `$radius-sm`, `$radius-md`, `$radius-lg`, `$radius-xl`, `$radius-2xl`, `$radius-3xl`, `$radius-4xl` and `$radius-full` - Color Scheme: `@mixin color-scheme()` - Color: `$color-focus`,`$color-canvas`, `$color-surface`, `$color-frosted`, `$color-frosted-soft`, `$color-frosted-strong`, `$color-backdrop`, `$color-contrast-lower`, `$color-contrast-low`, `$color-contrast-medium`, `$color-contrast-high`, `$color-contrast-higher`, `$color-primary`, `$color-success`, `$color-success-low`, `$color-success-medium`, `$color-success-frosted`, `$color-success-frosted-soft`, `$color-warning`, `$color-warning-low`, `$color-warning-medium`, `$color-warning-frosted`, `$color-warning-frosted-soft`,`$color-error`, `$color-error-low`, `$color-error-medium`, `$color-error-frosted`,`$color-error-frosted-soft`, `$color-info`, `$color-info-low`, `$color-info-medium`, `$color-info-frosted`, `$color-info-frosted-soft` - Focus: `@mixin focus-visible()` - Gradient: `$gradient-stops-fade-dark` - Skeleton: `@mixin skeleton()` - Media Query: `@mixin media-query-min()`, `@mixin media-query-max()` and `@mixin media-query-min-max()` - Motion: `$duration-sm`, `$duration-md`, `$duration-lg`, `$duration-xl`, `$ease-in-out`, `$ease-in` and `$ease-out` - Shadow: `$shadow-sm`, `$shadow-md` and `$shadow-lg` - Spacing: `$spacing-fluid-xs`, `$spacing-fluid-sm`, `$spacing-fluid-md`, `$spacing-fluid-lg`, `$spacing-fluid-xl`, `$spacing-fluid-2xl`, `$spacing-static-xs`, `$spacing-static-sm`, `$spacing-static-md`, `$spacing-static-lg`, `$spacing-static-xl` and `$spacing-static-2xl` - Typography: `@mixin prose-display-lg()`, `@mixin prose-display-md()`, `@mixin prose-display-sm()`, `@mixin prose-heading-2xl()`, `@mixin prose-heading-xl()`, `@mixin prose-heading-lg()`, `@mixin prose-heading-md()`, `@mixin prose-heading-sm()`, `@mixin prose-text-xl()`, `@mixin prose-text-lg()`, `@mixin prose-text-md()`, `@mixin prose-text-sm()`, `@mixin prose-text-xs()` `@mixin prose-text-2xs()`, `$font-porsche-next`, `$leading-normal`, `$typescale-2xs`, `$typescale-xs`, `$typescale-sm`, `$typescale-md`, `$typescale-lg`, `$typescale-xl`, `$typescale-2xl`, `$font-weight-normal`, `$font-weight-semibold` and `$font-weight-bold` - Emotion, Vanilla-Extract: - Blur: `blurFrosted` - Border: `radiusXs`, `radiusSm`, `radiusMd`, `radiusLg`, `radiusXl`, `radius2xl`, `radius3xl`, `radius4xl` and `radiusFull` - Color: `colorCanvas`, `colorSurface`, `colorFrosted`, `colorFrostedSoft`, `colorFrostedStrong`, `colorBackdrop`,`colorPrimary`, `colorContrastHigher`, `colorContrastHigh`, `colorContrastMedium`, `colorContrastLow`, `colorContrastLower`, `colorInfo`, `colorInfoMedium`, `colorInfoLow`, `colorInfoFrosted`, `colorInfoFrostedSoft`, `colorSuccess`, `colorSuccessMedium`, `colorSuccessLow`, `colorSuccessFrosted`, `colorSuccessFrostedSoft`, `colorWarning`, `colorWarningMedium`, `colorWarningLow`, `colorWarningFrosted`, `colorWarningFrostedSoft`, `colorError`, `colorErrorMedium`, `colorErrorLow`, `colorErrorFrosted`, `colorErrorFrostedSoft`, `colorFocus`, - Color Scheme: `colorSchemeStyles()` - Focus: `getFocusVisibleStyle()` - Gradient: `gradientStopsFadeDark`, - Motion: `durationSm`, `durationMd`, `durationLg`, `durationXl`, `easeInOut`, `easeIn` and `easeOut` - Shadow: `shadowSm`, `shadowMd` and `shadowLg` - Spacing: `spacingFluidXs`, `spacingFluidSm`, `spacingFluidMd`, `spacingFluidLg`, `spacingFluidXl`, `spacingFluid2xl`, `spacingStaticXs`, `spacingStaticSm`, `spacingStaticMd`, `spacingStaticLg`, `spacingStaticXl` and `spacingStatic2xl` - Typography: `proseDisplayLg()`, `proseDisplayMd()`, `proseDisplaySm()`, `proseHeading2Xl()`, `proseHeadingXl()`, `proseHeadingLg()`, `proseHeadingMd()`, `proseHeadingSm()`, `proseTextXl()`, `proseTextLg()`, `proseTextMd()`, `proseTextSm()`, `proseTextXs()`, `proseText2Xs()`, `fontPorscheNext`, `leadingNormal`, `typescale2Xs`, `typescaleXs`, `typescaleSm`, `typescaleMd`, `typescaleLg`, `typescaleXl`, `typescale2xl`, `fontWeightNormal` and `fontWeightSemibold` ### Changed - Remove theme prop since it's handled by CSS variables which can be controlled by `.scheme-light`, `.scheme-dark` or `.scheme-light-dark` CSS class, e.g. `<p-button>Some label</p-button>` inside `<div class="scheme-dark">…</div>` will render the dark theme. - `Link Tile`, `Button Tile`: uses `color-scheme: dark` by default - `Tailwind CSS`: - Reset `--text-*`, `--breakpoint-*`, `--radius-*` and `--shadow-*` - Rename theme CSS classes `.light` to `.scheme-light`, `.dark` to `.scheme-dark` and `.auto` to `.scheme-light-dark` - `Canvas`: visual appearance on mobile view - `Styles`: Import paths for npm package: ```diff - import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles'; + import { … } from '@porsche-design-system/components-{js|angular|react|vue}/emotion'; ``` ```diff - import { … } from '@porsche-design-system/components-{js|angular|react|vue}/styles/vanilla-extract'; + import { … } from '@porsche-design-system/components-{js|angular|react|vue}/vanilla-extract'; ``` ```diff - @use '@porsche-design-system/components-{js|angular|react|vue}/styles' as *; + @use '@porsche-design-system/components-{js|angular|react|vue}/scss' as *; ``` ### Fixed - `Vanilla Extract`: grid style media query not working - `Radio Group Option`: missing `delegatesFocus` ([#4135](https://github.com/porsche-design-system/porsche-design-system/pull/4135)) ### Removed - Styles (SCSS, Emotion, Vanilla-Extract): `getHoverStyle`/`pds-hover` - Tailwind CSS: `--color-disabled` - Emotion: `opts` parameter in `getSkeletonStyle()` including `theme` (New skeleton style works with `light-dark()` CSS color function) ```diff - getSkeletonStyle({ theme: 'light|dark' }) + getSkeletonStyle() ``` - Vanilla Extract: `opts` parameter in `getSkeletonStyle()` including `theme` (New skeleton style works with `light-dark()` CSS color function) ```diff const skeletonAnimation = keyframes(skeletonKeyframes); - const Skeleton = style(getSkeletonStyle(skeletonAnimation, { theme: 'light|dark' })); + const Skeleton = style(getSkeletonStyle(skeletonAnimation)); ``` ## [4.0.0-alpha.0] - 2025-12-12 See the full [migration guide](/news/migration-guide/porsche-design-system/) for a detailed explanation of all changes and migration steps. ### Added - Global Styles: mandatory CSS styles (normalize