@porsche-design-system/components-react 4.6.0 → 4.7.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.
- package/CHANGELOG.md +32 -0
- package/esm/lib/components/button.wrapper.d.ts +2 -2
- package/esm/lib/types.d.ts +12 -7
- package/package.json +2 -2
- package/skills/pds-knowledge-react/SKILL.md +3 -3
- package/skills/pds-knowledge-react/references/components/p-button/examples/AiDropShadow.tsx +30 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/AiGradientGlow.tsx +90 -0
- package/skills/pds-knowledge-react/references/components/p-button/p-button.md +64 -2
- package/skills/pds-knowledge-react/references/components/p-button-pure/p-button-pure.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-button-tile/p-button-tile.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Overview.tsx +2 -0
- package/skills/pds-knowledge-react/references/components/p-icon/p-icon.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-inline-notification/p-inline-notification.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-link/p-link.md +12 -1
- package/skills/pds-knowledge-react/references/components/p-link-pure/p-link-pure.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md +1 -1
- package/skills/pds-knowledge-react/references/components/p-tag/p-tag.md +1 -1
- package/skills/pds-knowledge-react/references/icons.md +1 -1
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +97 -42
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +2 -3
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/ai-tag.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.cjs +9 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +5 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-item.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-product.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/model-signature.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/spinner.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal-item.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-body.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-cell.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-cell.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-row.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-row.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-item.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag-dismissible.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list-item.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/toast.cjs +1 -1
- package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/wordmark.cjs +1 -1
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +97 -42
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +2 -3
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/ai-tag.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +9 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +5 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-item.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-product.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/model-signature.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/spinner.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal-item.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-body.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-cell.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-cell.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-row.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-row.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-item.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag-dismissible.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list-item.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/toast.mjs +1 -1
- package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/wordmark.mjs +1 -1
- package/ssr/esm/lib/components/button.wrapper.d.ts +2 -2
- package/ssr/esm/lib/dsr-components/button.d.ts +8 -0
- package/ssr/esm/lib/types.d.ts +12 -7
package/CHANGELOG.md
CHANGED
|
@@ -14,6 +14,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
|
|
|
14
14
|
|
|
15
15
|
## [Unreleased]
|
|
16
16
|
|
|
17
|
+
## [4.7.0-beta.0] - 2026-08-27
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **Shadow DOM**: shadow roots are now attached with `clonable: true`, so `cloneNode(true)` on a component returns a
|
|
22
|
+
clone that carries its Shadow DOM content instead of an empty shadow root.
|
|
23
|
+
([#4692](https://github.com/porsche-design-system/porsche-design-system/pull/4692))
|
|
24
|
+
- `Button`: `destructive` variant for actions with irreversible consequences, e.g. deleting data
|
|
25
|
+
([#4693](https://github.com/porsche-design-system/porsche-design-system/pull/4693))
|
|
26
|
+
- `Button`, `Link`: `--p-button-bg`, `--p-button-fg`, `--p-link-bg` and `--p-link-fg` CSS variables to override the
|
|
27
|
+
background and foreground color in every state, including hover. You are responsible for ensuring sufficient contrast
|
|
28
|
+
and brand compliance. ([#4693](https://github.com/porsche-design-system/porsche-design-system/pull/4693))
|
|
29
|
+
- `Button`, `Link`: `--p-button-px`, `--p-button-py`, `--p-button-gap`, `--p-button-radius`, `--p-link-px`,
|
|
30
|
+
`--p-link-py`, `--p-link-gap` and `--p-link-radius` CSS variables to override horizontal padding, vertical padding,
|
|
31
|
+
the gap between label and icon as well as the border radius. You are responsible for ensuring a minimum target size of
|
|
32
|
+
24px by 24px and brand compliance. ([#4693](https://github.com/porsche-design-system/porsche-design-system/pull/4693))
|
|
33
|
+
- `Icon`: `ai-chat` icon ([#4693](https://github.com/porsche-design-system/porsche-design-system/pull/4693))
|
|
34
|
+
- `Button`: (🧪Experimental) CSS custom state `loading` which can be targeted with the `:state()` pseudo-class, e.g.
|
|
35
|
+
`p-button:state(loading) { --p-button-bg: deeppink; }`. Browsers without support for `CustomStateSet` simply ignore
|
|
36
|
+
these rules. Be aware that custom states can't be expressed during server side rendering, they are only applied once
|
|
37
|
+
the component is hydrated on the client.
|
|
38
|
+
([#4693](https://github.com/porsche-design-system/porsche-design-system/pull/4693))
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- `Carousel`: slides were dropped or left over when the amount of slides changed without also changing the amount of
|
|
43
|
+
pages, for example going from 1 to 2 slides at `slides-per-page="3"`. An added slide was never rendered and a removed
|
|
44
|
+
slide left an empty slot and a surplus pagination bullet behind.
|
|
45
|
+
([#4686](https://github.com/porsche-design-system/porsche-design-system/pull/4686))
|
|
46
|
+
- `Carousel`: changing `slides-per-page` at runtime had no effect. Slide widths and the pagination kept the value the
|
|
47
|
+
carousel was initialised with. ([#4686](https://github.com/porsche-design-system/porsche-design-system/pull/4686))
|
|
48
|
+
|
|
17
49
|
## [4.6.0] - 2026-08-20
|
|
18
50
|
|
|
19
51
|
## [4.6.0-rc.3] - 2026-08-19
|
|
@@ -52,7 +52,7 @@ export type PButtonProps = BaseProps & {
|
|
|
52
52
|
*/
|
|
53
53
|
value?: string;
|
|
54
54
|
/**
|
|
55
|
-
* Sets the visual style variant of the button (`primary` or `
|
|
55
|
+
* Sets the visual style variant of the button (`primary`, `secondary` or `destructive`). Use `destructive` for actions with irreversible consequences, e.g. deleting data.
|
|
56
56
|
* @default 'primary'
|
|
57
57
|
*/
|
|
58
58
|
variant?: ButtonVariant;
|
|
@@ -109,7 +109,7 @@ export declare const PButton: import("react").ForwardRefExoticComponent<Omit<imp
|
|
|
109
109
|
*/
|
|
110
110
|
value?: string;
|
|
111
111
|
/**
|
|
112
|
-
* Sets the visual style variant of the button (`primary` or `
|
|
112
|
+
* Sets the visual style variant of the button (`primary`, `secondary` or `destructive`). Use `destructive` for actions with irreversible consequences, e.g. deleting data.
|
|
113
113
|
* @default 'primary'
|
|
114
114
|
*/
|
|
115
115
|
variant?: ButtonVariant;
|
package/esm/lib/types.d.ts
CHANGED
|
@@ -253,6 +253,7 @@ declare const ICON_NAMES: readonly [
|
|
|
253
253
|
"adjust",
|
|
254
254
|
"aggregation",
|
|
255
255
|
"ai-3d-object",
|
|
256
|
+
"ai-chat",
|
|
256
257
|
"ai-code",
|
|
257
258
|
"ai-edit",
|
|
258
259
|
"ai-image",
|
|
@@ -768,14 +769,7 @@ declare const BUTTON_TYPES: readonly [
|
|
|
768
769
|
"reset"
|
|
769
770
|
];
|
|
770
771
|
export type ButtonType = (typeof BUTTON_TYPES)[number];
|
|
771
|
-
declare const LINK_BUTTON_VARIANTS: readonly [
|
|
772
|
-
"primary",
|
|
773
|
-
"secondary"
|
|
774
|
-
];
|
|
775
|
-
export type LinkButtonVariant = (typeof LINK_BUTTON_VARIANTS)[number];
|
|
776
772
|
export type LinkButtonIconName = IconName | "none";
|
|
777
|
-
export type ButtonVariant = LinkButtonVariant;
|
|
778
|
-
export type LinkVariant = LinkButtonVariant;
|
|
779
773
|
export type PorscheDesignSystem = {
|
|
780
774
|
[key: `${number}.${number}.${number}${`-rc.${number}` | ""}`]: {
|
|
781
775
|
prefixes: string[];
|
|
@@ -1000,6 +994,12 @@ declare const BANNER_HEADING_TAGS: readonly [
|
|
|
1000
994
|
];
|
|
1001
995
|
export type BannerHeadingTag = (typeof BANNER_HEADING_TAGS)[number];
|
|
1002
996
|
export type ButtonIcon = LinkButtonIconName;
|
|
997
|
+
declare const BUTTON_VARIANTS: readonly [
|
|
998
|
+
"primary",
|
|
999
|
+
"secondary",
|
|
1000
|
+
"destructive"
|
|
1001
|
+
];
|
|
1002
|
+
export type ButtonVariant = (typeof BUTTON_VARIANTS)[number];
|
|
1003
1003
|
export type ButtonPureType = ButtonType;
|
|
1004
1004
|
export type ButtonPureIcon = LinkButtonIconName;
|
|
1005
1005
|
export type ButtonPureAriaAttribute = ButtonAriaAttribute;
|
|
@@ -1363,6 +1363,11 @@ export type InputWeekChangeEventDetail = Event;
|
|
|
1363
1363
|
export type InputWeekBlurEventDetail = Event;
|
|
1364
1364
|
export type InputWeekInputEventDetail = InputEvent;
|
|
1365
1365
|
export type LinkIcon = LinkButtonIconName;
|
|
1366
|
+
declare const LINK_VARIANTS: readonly [
|
|
1367
|
+
"primary",
|
|
1368
|
+
"secondary"
|
|
1369
|
+
];
|
|
1370
|
+
export type LinkVariant = (typeof LINK_VARIANTS)[number];
|
|
1366
1371
|
export type LinkPureIcon = LinkButtonIconName;
|
|
1367
1372
|
export type LinkPureAriaAttribute = LinkAriaAttribute;
|
|
1368
1373
|
export type LinkPureAlignLabel = AlignLabel;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@porsche-design-system/components-react",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.7.0-beta.0",
|
|
4
4
|
"description": "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.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"porsche",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"url": "https://github.com/porsche-design-system/porsche-design-system"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@porsche-design-system/components-js": "4.
|
|
24
|
+
"@porsche-design-system/components-js": "4.7.0-beta.0"
|
|
25
25
|
},
|
|
26
26
|
"peerDependencies": {
|
|
27
27
|
"ag-grid-community": ">= 36.0.0 <37.0.0",
|
|
@@ -15,11 +15,11 @@ Prefer Porsche Design System components and tokens for new UI, even when the use
|
|
|
15
15
|
|
|
16
16
|
This skill currently covers components, global stylesheets and theming, tokens, and styling integrations. It does not yet include complete getting-started, setup, and installation guidance; the v3-to-v4 migration guide; the changelog; partials; patterns and templates; the AG Grid theme; or the Storefront’s Must Know and Help sections.
|
|
17
17
|
|
|
18
|
-
Before using documentation outside this skill or the installed package, match it to the installed PDS version. This skill was generated for `4.
|
|
18
|
+
Before using documentation outside this skill or the installed package, match it to the installed PDS version. This skill was generated for `4.7.0-beta.0`; prefer the [exact-version Porsche Design System Storefront](https://designsystem.porsche.com/v4.7.0-beta.0/). Major-version URLs such as `/v4/` always serve the latest v4 release and may describe APIs or setup introduced after the installed version. Use them only as a fallback and verify relevant details against the installed package.
|
|
19
19
|
|
|
20
20
|
For runnable patterns and templates, consult the [Porsche Design System examples repository](https://github.com/porsche-design-system/examples), selecting a release tag or commit that matches the installed package instead of assuming its default branch is compatible. For release-specific changes, read `../../CHANGELOG.md`.
|
|
21
21
|
|
|
22
|
-
For exact API facts, inspect the installed typings and metadata first. When readable implementation details are necessary, use the [exact-version component source](https://github.com/porsche-design-system/porsche-design-system/tree/v4.
|
|
22
|
+
For exact API facts, inspect the installed typings and metadata first. When readable implementation details are necessary, use the [exact-version component source](https://github.com/porsche-design-system/porsche-design-system/tree/v4.7.0-beta.0/packages/components/src/components) under the repository's `packages/components/src/components/<component>` directory. Do not use the default branch, which may represent a newer release.
|
|
23
23
|
|
|
24
24
|
For deployed browser behavior, inspect component requests in the Network panel. Treat these minified, content-hashed CDN artifacts as a debugging fallback; use the exact-version repository source for readable implementation details.
|
|
25
25
|
|
|
@@ -110,7 +110,7 @@ import { PButton, PorscheDesignSystemProvider } from '@porsche-design-system/com
|
|
|
110
110
|
|
|
111
111
|
On the server, the `/ssr` build emits component markup and styles as Declarative Shadow DOM so the browser can create the Shadow DOM before JavaScript runs. In the browser, it initializes like the standard React wrapper. The framework build must replace `process.browser` for its server and client targets and eliminate the unused branch.
|
|
112
112
|
|
|
113
|
-
Framework setup differs. Follow the [Next.js integration guide](https://designsystem.porsche.com/v4.
|
|
113
|
+
Framework setup differs. Follow the [Next.js integration guide](https://designsystem.porsche.com/v4.7.0-beta.0/developing/next-js/getting-started/) or the [React Router integration guide](https://designsystem.porsche.com/v4.7.0-beta.0/developing/react-router/getting-started/). Remix users should follow the React Router guidance because Remix v2 was upstreamed into React Router.
|
|
114
114
|
|
|
115
115
|
## Stylesheets
|
|
116
116
|
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButton } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<style>
|
|
8
|
+
{` .custom-ai-shadow {
|
|
9
|
+
--p-button-bg: #fff;
|
|
10
|
+
--p-button-fg: #000;
|
|
11
|
+
box-shadow: var(--p-shadow-lg);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
.custom-ai-shadow:not(:disabled, :state(loading)):hover {
|
|
15
|
+
--p-button-bg: var(--p-color-frosted-strong);
|
|
16
|
+
--p-button-fg: var(--p-color-primary);
|
|
17
|
+
}`}
|
|
18
|
+
</style>
|
|
19
|
+
|
|
20
|
+
<div className="flex flex-wrap gap-static-lg items-start">
|
|
21
|
+
<PButton className="custom-ai-shadow" icon="ai-chat" hideLabel={true}>
|
|
22
|
+
Ask AI assistant
|
|
23
|
+
</PButton>
|
|
24
|
+
<PButton className="custom-ai-shadow" icon="ai-chat">
|
|
25
|
+
Ask AI assistant
|
|
26
|
+
</PButton>
|
|
27
|
+
</div>
|
|
28
|
+
</>
|
|
29
|
+
)
|
|
30
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButton } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<style>
|
|
8
|
+
{` .custom-ai-orb {
|
|
9
|
+
--p-button-bg: var(--p-color-canvas);
|
|
10
|
+
--p-button-fg: var(--p-color-primary);
|
|
11
|
+
position: relative;
|
|
12
|
+
z-index: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.custom-ai-orb:not(:disabled, :state(loading)):hover {
|
|
16
|
+
--p-button-bg: var(--p-color-frosted-strong);
|
|
17
|
+
--p-button-fg: var(--p-color-primary);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.custom-ai-orb::before,
|
|
21
|
+
.custom-ai-orb::after {
|
|
22
|
+
content: '';
|
|
23
|
+
position: absolute;
|
|
24
|
+
inset: 0;
|
|
25
|
+
z-index: -1;
|
|
26
|
+
border-radius: inherit;
|
|
27
|
+
background: linear-gradient(45deg, #00a8ff, #0151e1, #2ae3ff, #bff0ff, #0151e1, #00a8ff);
|
|
28
|
+
background-size: 400%;
|
|
29
|
+
animation: custom-ai-orb-gradient 20s linear infinite;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.custom-ai-orb::after {
|
|
33
|
+
filter: blur(10px);
|
|
34
|
+
animation:
|
|
35
|
+
custom-ai-orb-gradient 20s linear infinite,
|
|
36
|
+
custom-ai-orb-float 8s ease-in-out infinite;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
@keyframes custom-ai-orb-gradient {
|
|
40
|
+
0% {
|
|
41
|
+
background-position: 0 0;
|
|
42
|
+
}
|
|
43
|
+
50% {
|
|
44
|
+
background-position: 300% 0;
|
|
45
|
+
}
|
|
46
|
+
100% {
|
|
47
|
+
background-position: 0 0;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
@keyframes custom-ai-orb-float {
|
|
52
|
+
0% {
|
|
53
|
+
transform: scale(1) rotate(0deg);
|
|
54
|
+
}
|
|
55
|
+
50% {
|
|
56
|
+
transform: scale(1.02) rotate(0.5deg);
|
|
57
|
+
}
|
|
58
|
+
100% {
|
|
59
|
+
transform: scale(1) rotate(0deg);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/* Respect the user's motion preference */
|
|
64
|
+
@media (prefers-reduced-motion: reduce) {
|
|
65
|
+
.custom-ai-orb::before,
|
|
66
|
+
.custom-ai-orb::after {
|
|
67
|
+
animation: none;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Decorative gradient is not conveyed in forced-colors mode */
|
|
72
|
+
@media (forced-colors: active) {
|
|
73
|
+
.custom-ai-orb::before,
|
|
74
|
+
.custom-ai-orb::after {
|
|
75
|
+
display: none;
|
|
76
|
+
}
|
|
77
|
+
}`}
|
|
78
|
+
</style>
|
|
79
|
+
|
|
80
|
+
<div className="flex flex-wrap gap-static-lg items-start">
|
|
81
|
+
<PButton className="custom-ai-orb" icon="ai-chat" hideLabel={true}>
|
|
82
|
+
Ask AI assistant
|
|
83
|
+
</PButton>
|
|
84
|
+
<PButton className="custom-ai-orb" icon="ai-chat">
|
|
85
|
+
Ask AI assistant
|
|
86
|
+
</PButton>
|
|
87
|
+
</div>
|
|
88
|
+
</>
|
|
89
|
+
)
|
|
90
|
+
}
|
|
@@ -25,6 +25,55 @@ You can use native `click`, `focus`, `focusin`, `blur` and `focusout` events on
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
+
## Custom states
|
|
29
|
+
|
|
30
|
+
🧪 **Experimental**: The button exposes its loading state as a [CSS custom state](https://developer.mozilla.org/en-US/docs/Web/CSS/:state), which can be targeted with the `:state()` pseudo-class. This is handy to conditionally override the exposed CSS variables (e.g. `--p-button-bg` and `--p-button-fg`) without having to duplicate the state logic in your application.
|
|
31
|
+
|
|
32
|
+
| Custom state | Applied when |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| `loading` | `loading` is `true` |
|
|
35
|
+
|
|
36
|
+
```scss
|
|
37
|
+
p-button:state(loading) {
|
|
38
|
+
--p-button-bg: light-dark(#025b3f, #21eeae);
|
|
39
|
+
--p-button-fg: light-dark(#21eeae, #025b3f);
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Custom states are a progressive enhancement: browsers without support for `CustomStateSet` or the `:state()` pseudo-class simply ignore these rules, the button keeps working and falls back to its default styling. Be aware that custom states can't be expressed during server side rendering, they are only applied once the component is hydrated on the client. Therefore, don't rely on `:state()` for styling that has to be correct on first paint.
|
|
44
|
+
|
|
45
|
+
For all other states and variants, use native CSS selectors instead:
|
|
46
|
+
|
|
47
|
+
| Styling target | Selector |
|
|
48
|
+
| --- | --- |
|
|
49
|
+
| Disabled | `p-button:disabled` (the button is form-associated) |
|
|
50
|
+
| Hover | `p-button:not(:disabled, :state(loading)):hover` |
|
|
51
|
+
| Focus | `p-button:focus-visible` |
|
|
52
|
+
| Variant | a custom class, e.g. `<p-button class="my-button" variant="secondary">` |
|
|
53
|
+
|
|
54
|
+
Since the button is a form-associated custom element, it is matched by the native `:disabled` pseudo-class as soon as the `disabled` attribute is set — no custom state is needed for it.
|
|
55
|
+
|
|
56
|
+
```scss
|
|
57
|
+
p-button {
|
|
58
|
+
--p-button-bg: light-dark(#025b3f, #21eeae);
|
|
59
|
+
--p-button-fg: light-dark(#21eeae, #025b3f);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
p-button:not(:disabled, :state(loading)):hover {
|
|
63
|
+
--p-button-bg: light-dark(#013d2a, #6ef7cf);
|
|
64
|
+
--p-button-fg: light-dark(#6ef7cf, #013d2a);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
p-button:disabled {
|
|
68
|
+
--p-button-bg: light-dark(#6f3d0b, #ffaa4f);
|
|
69
|
+
--p-button-fg: light-dark(#ffaa4f, #6f3d0b);
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
As with all color customizations, you are responsible for ensuring sufficient contrast and brand compliance.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
28
77
|
## Related components
|
|
29
78
|
|
|
30
79
|
- [Links](../p-link/p-link.md)
|
|
@@ -99,13 +148,13 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
99
148
|
| `disabled` | `boolean` | `false` | Disables the button, preventing all interaction and blocking events. |
|
|
100
149
|
| `form` | `string` | `undefined` | Associates the button with a form element by its ID, so it can submit or reset that form even when placed outside of it. |
|
|
101
150
|
| `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
|
|
102
|
-
| `icon` | `'none'`<br>one of
|
|
151
|
+
| `icon` | `'none'`<br>one of 294 icon names — see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the button. Use `none` to show no icon. |
|
|
103
152
|
| `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
|
|
104
153
|
| `loading` | `boolean` | `false` | Disables the button and replaces its content with a loading spinner to indicate an ongoing operation. |
|
|
105
154
|
| `name` | `string` | `undefined` | Sets the name submitted with the form data when this button triggers form submission. |
|
|
106
155
|
| `type` | `'button'` `'submit'` `'reset'` | `'submit'` | Sets the button's HTML type — `submit` sends the form, `reset` clears it, `button` performs no default action. |
|
|
107
156
|
| `value` | `string` | `undefined` | Sets the value submitted with the form data when this button triggers form submission, paired with `name`. |
|
|
108
|
-
| `variant` | `'primary'` `'secondary'` | `'primary'` | Sets the visual style variant of the button (`primary` or `
|
|
157
|
+
| `variant` | `'primary'` `'secondary'` `'destructive'` | `'primary'` | Sets the visual style variant of the button (`primary`, `secondary` or `destructive`). Use `destructive` for actions with irreversible consequences, e.g. deleting data. |
|
|
109
158
|
|
|
110
159
|
### Slots
|
|
111
160
|
|
|
@@ -113,6 +162,17 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
113
162
|
| --- | --- | --- | --- |
|
|
114
163
|
| _(default)_ | no | — | Default slot for the button label. |
|
|
115
164
|
|
|
165
|
+
### CSS Variables
|
|
166
|
+
|
|
167
|
+
| CSS Variable | Default | Description |
|
|
168
|
+
| --- | --- | --- |
|
|
169
|
+
| `--p-button-bg` | — | Overrides the background color of the button in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
|
|
170
|
+
| `--p-button-fg` | — | Overrides the foreground color (label, icon and loading spinner) of the button in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
|
|
171
|
+
| `--p-button-px` | — | Horizontal padding of the button. |
|
|
172
|
+
| `--p-button-py` | — | Vertical padding of the button. |
|
|
173
|
+
| `--p-button-gap` | — | Gap between the button's content (label and icon). |
|
|
174
|
+
| `--p-button-radius` | — | Radius of the button |
|
|
175
|
+
|
|
116
176
|
## Examples
|
|
117
177
|
|
|
118
178
|
| Example | When to use | File |
|
|
@@ -120,3 +180,5 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
120
180
|
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
121
181
|
| Form | When used as a submit button, the `name` and `value` props are submitted as a pair as part of the form data. | [./examples/Form.tsx](./examples/Form.tsx) |
|
|
122
182
|
| Form Attribute | When a button is used as a submit or reset button outside a form, the `form` attribute can be utilized to explicitly associate the button with a specific form element. | [./examples/FormAttribute.tsx](./examples/FormAttribute.tsx) |
|
|
183
|
+
| Custom AI Styling: Drop Shadow | 🧪 **Experimental**: This example shows what's technically possible with the exposed `--p-button-bg` and `--p-button-fg` CSS variables. | [./examples/AiDropShadow.tsx](./examples/AiDropShadow.tsx) |
|
|
184
|
+
| Custom AI Styling: Gradient Glow | 🧪 **Experimental**: This example demonstrates the technical possibilities of styling around the button host element. | [./examples/AiGradientGlow.tsx](./examples/AiGradientGlow.tsx) |
|
|
@@ -96,7 +96,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
96
96
|
| `disabled` | `boolean` | `false` | Disables the button, preventing all interaction and blocking events. |
|
|
97
97
|
| `form` | `string` | `undefined` | Associates the button with a form element by its ID, so it can submit or reset that form even when placed outside of it. |
|
|
98
98
|
| `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
|
|
99
|
-
| `icon` | `''`<br>one of
|
|
99
|
+
| `icon` | `''`<br>one of 294 icon names — see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
|
|
100
100
|
| `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
|
|
101
101
|
| `loading` | `boolean` | `false` | Disables the button and replaces its icon with a loading spinner to indicate an ongoing operation. |
|
|
102
102
|
| `name` | `string` | `undefined` | Sets the name submitted with the form data when this button triggers form submission. |
|
|
@@ -92,7 +92,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
92
92
|
| `description` _(required)_ | `string` | `undefined` | Sets the description text displayed in the tile's content area. |
|
|
93
93
|
| `disabled` | `boolean` | `false` | Disables the tile, preventing button interaction. |
|
|
94
94
|
| `gradient` | `boolean` | `false` | Shows a gradient overlay over the media slot to improve text legibility on bright images or videos. |
|
|
95
|
-
| `icon` | `'none'`<br>one of
|
|
95
|
+
| `icon` | `'none'`<br>one of 294 icon names — see [icon names](references/icons.md) | `'none'` | Sets the icon displayed in the tile's action button. Use `none` to show no icon. |
|
|
96
96
|
| `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon for the action button, used instead of the built-in icon set. |
|
|
97
97
|
| `label` _(required)_ | `string` | `undefined` | Sets the accessible label text of the action button rendered inside the tile. |
|
|
98
98
|
| `loading` | `boolean` | `false` | Disables the tile and shows a loading spinner to indicate an ongoing operation. |
|
|
@@ -20,6 +20,8 @@ export const Example = () => {
|
|
|
20
20
|
|
|
21
21
|
<PIcon name="ai-3d-object" aria={{'aria-label': 'Ai 3d Object icon'}}></PIcon>
|
|
22
22
|
|
|
23
|
+
<PIcon name="ai-chat" aria={{'aria-label': 'Ai Chat icon'}}></PIcon>
|
|
24
|
+
|
|
23
25
|
<PIcon name="ai-code" aria={{'aria-label': 'Ai Code icon'}}></PIcon>
|
|
24
26
|
|
|
25
27
|
<PIcon name="ai-edit" aria={{'aria-label': 'Ai Edit icon'}}></PIcon>
|
|
@@ -67,7 +67,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
67
67
|
| --- | --- | --- | --- |
|
|
68
68
|
| `aria` | `IconAriaAttribute` | `undefined` | Sets ARIA attributes on the icon — use `aria-label` to make the icon meaningful to screen readers when it conveys information. |
|
|
69
69
|
| `color` | `'primary'` `'contrast-higher'` `'contrast-high'` `'contrast-medium'` `'contrast-low'` `'contrast-lower'` `'success'` `'warning'` `'error'` `'info'` `'inherit'` | `'primary'` | Sets the fill color of the icon using PDS color tokens. |
|
|
70
|
-
| `name` | one of
|
|
70
|
+
| `name` | one of 294 icon names — see [icon names](references/icons.md) | `'arrow-right'` | Selects an icon from the built-in PDS icon library by name (e.g. `arrow-right`, `close`). |
|
|
71
71
|
| `size` | `'2xs'` `'xs'` `'sm'` `'md'` `'lg'` `'xl'` `'2xl'` `'3xl'` `'4xl'` `'5xl'` `'inherit'`<br>_deprecated:_ `'xx-small'` `'x-small'` `'small'` `'medium'` `'large'` `'x-large'` `'xx-large'`<br>`BreakpointCustomizable<IconSize>` | `'sm'` | Sets the icon size using the PDS typographic scale. Use `inherit` to derive size from the parent element. Supports responsive breakpoint values. |
|
|
72
72
|
| `source` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon library. |
|
|
73
73
|
|
|
@@ -46,7 +46,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
46
46
|
|
|
47
47
|
| Property | Type | Default | Description |
|
|
48
48
|
| --- | --- | --- | --- |
|
|
49
|
-
| `actionIcon` | `''`<br>one of
|
|
49
|
+
| `actionIcon` | `''`<br>one of 294 icon names — see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed inside the action button using a PDS icon name. |
|
|
50
50
|
| `actionLabel` | `string` | `undefined` | Sets the label text of the optional action button inside the notification. |
|
|
51
51
|
| `actionLoading` | `boolean` | `false` | Disables the action button and shows a spinner to indicate an ongoing operation. |
|
|
52
52
|
| `description` | `string` | `''` | Sets the supporting description text shown below the heading. |
|
|
@@ -84,7 +84,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
84
84
|
| `download` | `string` | `undefined` | Sets the native `download` attribute to trigger a file download. Only applies when `href` is set. |
|
|
85
85
|
| `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
|
|
86
86
|
| `href` | `string` | `undefined` | When set, the component renders as an anchor navigating to this URL. Otherwise, provide a slotted anchor element. |
|
|
87
|
-
| `icon` | `'none'`<br>one of
|
|
87
|
+
| `icon` | `'none'`<br>one of 294 icon names — see [icon names](references/icons.md) | `'none'` | Sets the icon displayed next to the link label. Use `none` to show no icon. |
|
|
88
88
|
| `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
|
|
89
89
|
| `rel` | `string` | `undefined` | Sets the `rel` attribute on the link (e.g. `noopener`). Only applies when `href` is set. |
|
|
90
90
|
| `target` | `'_self'` `'_blank'` `'_parent'` `'_top'` `'string'` | `'_self'` | Specifies where to open the linked URL (e.g. `_self`, `_blank`). Only applies when `href` is set. |
|
|
@@ -96,6 +96,17 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
96
96
|
| --- | --- | --- | --- |
|
|
97
97
|
| _(default)_ | no | — | Default slot to render the link label. This slot can be used to slot an anchor tag instead of using the href prop. |
|
|
98
98
|
|
|
99
|
+
### CSS Variables
|
|
100
|
+
|
|
101
|
+
| CSS Variable | Default | Description |
|
|
102
|
+
| --- | --- | --- |
|
|
103
|
+
| `--p-link-bg` | — | Overrides the background color of the link in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
|
|
104
|
+
| `--p-link-fg` | — | Overrides the foreground color (label and icon) of the link in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
|
|
105
|
+
| `--p-link-px` | — | Horizontal padding of the link. |
|
|
106
|
+
| `--p-link-py` | — | Vertical padding of the link. |
|
|
107
|
+
| `--p-link-gap` | — | Gap between the link's content (label and icon). |
|
|
108
|
+
| `--p-link-radius` | — | Radius of the link |
|
|
109
|
+
|
|
99
110
|
## Examples
|
|
100
111
|
|
|
101
112
|
| Example | When to use | File |
|
|
@@ -89,7 +89,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
89
89
|
| `download` | `string` | `undefined` | Sets the native `download` attribute to trigger a file download. Only applies when `href` is set. |
|
|
90
90
|
| `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
|
|
91
91
|
| `href` | `string` | `undefined` | When set, the component renders as an anchor navigating to this URL. Otherwise, provide a slotted anchor element. |
|
|
92
|
-
| `icon` | `''`<br>one of
|
|
92
|
+
| `icon` | `''`<br>one of 294 icon names — see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
|
|
93
93
|
| `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
|
|
94
94
|
| `rel` | `string` | `undefined` | Sets the `rel` attribute on the link (e.g. `noopener`). Only applies when `href` is set. |
|
|
95
95
|
| `size` | `'2xs'` `'xs'` `'sm'` `'md'` `'lg'` `'xl'` `'2xl'` `'3xl'` `'4xl'` `'5xl'` `'inherit'`<br>_deprecated:_ `'xx-small'` `'x-small'` `'small'` `'medium'` `'large'` `'x-large'`<br>`BreakpointCustomizable<LinkPureSize>` | `'sm'` | Sets the font size of the link label. Supports responsive breakpoint values. |
|
package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md
CHANGED
|
@@ -145,7 +145,7 @@ Allowed parent: `p-segmented-control`.
|
|
|
145
145
|
| --- | --- | --- | --- |
|
|
146
146
|
| `aria` | `SegmentedControlItemAriaAttribute` | `undefined` | Sets ARIA attributes on the item's button element to improve accessibility for screen readers. |
|
|
147
147
|
| `disabled` | `boolean` | `false` | Prevents this item from being selected and visually dims it; the parent's value will not change to this item's value. |
|
|
148
|
-
| `icon` | `''`<br>one of
|
|
148
|
+
| `icon` | `''`<br>one of 294 icon names — see [icon names](references/icons.md) | `undefined` | Sets an icon rendered inside the item button using an icon name from the PDS icon library. |
|
|
149
149
|
| `iconSource` | `string` | `undefined` | Sets a URL to a custom SVG icon for the item button, overriding the built-in icon set. |
|
|
150
150
|
| `label` | `string` | `undefined` | Sets a visible text label rendered inside the item button, used when no slotted content is provided. |
|
|
151
151
|
| `value` _(required)_ | `string | number` | `undefined` | Sets the value emitted by the parent `p-segmented-control` when this item is selected. This property is*required**. |
|
|
@@ -50,7 +50,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
|
|
|
50
50
|
| Property | Type | Default | Description |
|
|
51
51
|
| --- | --- | --- | --- |
|
|
52
52
|
| `compact` | `boolean` | `false` | Reduces the tag's padding and height for use in dense layouts where vertical space is limited. |
|
|
53
|
-
| `icon` | `'none'`<br>one of
|
|
53
|
+
| `icon` | `'none'`<br>one of 294 icon names — see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the tag alongside the label. Use `none` to render the tag without an icon. |
|
|
54
54
|
| `iconSource` | `string` | `undefined` | Sets a URL to a custom SVG icon, overriding the built-in icon set when a brand-specific icon is needed. |
|
|
55
55
|
| `variant` | `'primary'` `'secondary'` `'info'` `'info-frosted'` `'warning'` `'warning-frosted'` `'success'` `'success-frosted'` `'error'` `'error-frosted'` | `'secondary'` | Sets the visual style of the tag, which controls its background and text colors (e.g. `primary`, `secondary`, `notification-info`). |
|
|
56
56
|
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
|
|
3
3
|
Valid values for the icon-typed props across PDS components (e.g. `p-icon` `name`, `p-button` `icon`, `p-link` `icon`, `p-inline-notification` `actionIcon`). Pass one as a string, e.g. `icon="arrow-right"`. Each component reference links here instead of repeating the full list. (`p-flag` `name` uses a separate set of flag names, not listed here.)
|
|
4
4
|
|
|
5
|
-
`360` `4-wheel-drive` `accessibility` `active-cabin-ventilation` `add` `adjust` `aggregation` `ai-3d-object` `ai-code` `ai-edit` `ai-image` `ai-scale` `ai-sound` `ai-spark` `ai-spark-filled` `ai-text` `ai-video` `arrow-compact-down` `arrow-compact-left` `arrow-compact-right` `arrow-compact-up` `arrow-double-down` `arrow-double-left` `arrow-double-right` `arrow-double-up` `arrow-down` `arrow-down-left` `arrow-down-right` `arrow-first` `arrow-head-down` `arrow-head-left` `arrow-head-right` `arrow-head-up` `arrow-last` `arrow-left` `arrow-right` `arrow-up` `arrow-up-left` `arrow-up-right` `arrows` `attachment` `augmented-reality` `battery-empty` `battery-empty-co2` `battery-empty-fuel` `battery-full` `battery-half` `battery-one-quarter` `battery-three-quarters` `bell` `bookmark` `bookmark-filled` `brain` `broadcast` `cabriolet` `calculator` `calendar` `camera` `car` `car-battery` `card` `charging-active` `charging-network` `charging-state` `charging-station` `chart` `chat` `check` `city` `climate` `climate-control` `clock` `close` `closed-caption` `cloud` `co2-class` `co2-emission` `color-picker` `compare` `compass` `configurate` `connect-services` `copy` `country-road` `coupe` `cubic-capacity` `customer-support` `cut` `delete` `disable` `dislike` `dislike-filled` `document` `door` `download` `drag` `duration` `ear` `edit` `email` `error` `error-filled` `exclamation` `exclamation-filled` `external` `fast-backward` `fast-forward` `file-csv` `file-excel` `filter` `fingerprint` `flag` `flash` `fuel-station` `garage` `genuine-parts` `geo-localization` `gift` `globe` `grid` `grip` `group` `hand` `heart` `heart-filled` `highway` `highway-filled` `history` `home` `horn` `image` `increase` `information` `information-filled` `key` `laptop` `leaf` `leather` `light` `like` `like-filled` `limousine` `linked` `list` `locate` `lock` `lock-open` `logo-apple-carplay` `logo-apple-music` `logo-apple-podcast` `logo-baidu` `logo-delicious` `logo-digg` `logo-facebook` `logo-foursquare` `logo-gmail` `logo-google` `logo-hatena` `logo-instagram` `logo-kaixin` `logo-kakaotalk` `logo-kununu` `logo-linkedin` `logo-naver` `logo-pinterest` `logo-qq` `logo-qq-share` `logo-reddit` `logo-skyrock` `logo-snapchat` `logo-sohu` `logo-spotify` `logo-tecent` `logo-telegram` `logo-tiktok` `logo-tumblr` `logo-twitter` `logo-viber` `logo-vk` `logo-wechat` `logo-weibo` `logo-whatsapp` `logo-x` `logo-xing` `logo-yahoo` `logo-youku` `logo-youtube` `logout` `map` `menu-dots-horizontal` `menu-dots-vertical` `menu-lines` `microphone` `minus` `mobile` `moon` `new-chat` `news` `north-arrow` `oil-can` `online-search` `parking-brake` `parking-light` `paste` `pause` `phone` `pin` `pin-filled` `pivot` `play` `play-filled` `plug` `plus` `preheating` `price-tag` `printer` `purchase` `push-pin` `push-pin-off` `qr` `qr-off` `question` `question-filled` `racing-flag` `radar` `radio` `refresh` `replay` `reset` `return` `road` `roof-closed` `roof-open` `route` `rss` `save` `screen` `search` `seat` `send` `service-technician` `share` `shopping-bag` `shopping-bag-filled` `shopping-cart` `shopping-cart-filled` `shopping-cart-off` `sidebar` `sidelights` `skip-backward` `skip-forward` `snowflake` `sort` `stack` `star` `star-filled` `steering-wheel` `stop` `stopwatch` `subtract` `success` `success-filled` `sun` `suv` `switch` `tablet` `tachometer` `theme` `tire` `trigger-finger` `truck` `turismo` `unlinked` `upload` `user` `user-filled` `user-group` `user-manual` `video` `view` `view-off` `volume-off` `volume-up` `warning` `warning-filled` `weather` `weight` `wifi` `work` `wrench` `wrenches` `zoom-in` `zoom-out`
|
|
5
|
+
`360` `4-wheel-drive` `accessibility` `active-cabin-ventilation` `add` `adjust` `aggregation` `ai-3d-object` `ai-chat` `ai-code` `ai-edit` `ai-image` `ai-scale` `ai-sound` `ai-spark` `ai-spark-filled` `ai-text` `ai-video` `arrow-compact-down` `arrow-compact-left` `arrow-compact-right` `arrow-compact-up` `arrow-double-down` `arrow-double-left` `arrow-double-right` `arrow-double-up` `arrow-down` `arrow-down-left` `arrow-down-right` `arrow-first` `arrow-head-down` `arrow-head-left` `arrow-head-right` `arrow-head-up` `arrow-last` `arrow-left` `arrow-right` `arrow-up` `arrow-up-left` `arrow-up-right` `arrows` `attachment` `augmented-reality` `battery-empty` `battery-empty-co2` `battery-empty-fuel` `battery-full` `battery-half` `battery-one-quarter` `battery-three-quarters` `bell` `bookmark` `bookmark-filled` `brain` `broadcast` `cabriolet` `calculator` `calendar` `camera` `car` `car-battery` `card` `charging-active` `charging-network` `charging-state` `charging-station` `chart` `chat` `check` `city` `climate` `climate-control` `clock` `close` `closed-caption` `cloud` `co2-class` `co2-emission` `color-picker` `compare` `compass` `configurate` `connect-services` `copy` `country-road` `coupe` `cubic-capacity` `customer-support` `cut` `delete` `disable` `dislike` `dislike-filled` `document` `door` `download` `drag` `duration` `ear` `edit` `email` `error` `error-filled` `exclamation` `exclamation-filled` `external` `fast-backward` `fast-forward` `file-csv` `file-excel` `filter` `fingerprint` `flag` `flash` `fuel-station` `garage` `genuine-parts` `geo-localization` `gift` `globe` `grid` `grip` `group` `hand` `heart` `heart-filled` `highway` `highway-filled` `history` `home` `horn` `image` `increase` `information` `information-filled` `key` `laptop` `leaf` `leather` `light` `like` `like-filled` `limousine` `linked` `list` `locate` `lock` `lock-open` `logo-apple-carplay` `logo-apple-music` `logo-apple-podcast` `logo-baidu` `logo-delicious` `logo-digg` `logo-facebook` `logo-foursquare` `logo-gmail` `logo-google` `logo-hatena` `logo-instagram` `logo-kaixin` `logo-kakaotalk` `logo-kununu` `logo-linkedin` `logo-naver` `logo-pinterest` `logo-qq` `logo-qq-share` `logo-reddit` `logo-skyrock` `logo-snapchat` `logo-sohu` `logo-spotify` `logo-tecent` `logo-telegram` `logo-tiktok` `logo-tumblr` `logo-twitter` `logo-viber` `logo-vk` `logo-wechat` `logo-weibo` `logo-whatsapp` `logo-x` `logo-xing` `logo-yahoo` `logo-youku` `logo-youtube` `logout` `map` `menu-dots-horizontal` `menu-dots-vertical` `menu-lines` `microphone` `minus` `mobile` `moon` `new-chat` `news` `north-arrow` `oil-can` `online-search` `parking-brake` `parking-light` `paste` `pause` `phone` `pin` `pin-filled` `pivot` `play` `play-filled` `plug` `plus` `preheating` `price-tag` `printer` `purchase` `push-pin` `push-pin-off` `qr` `qr-off` `question` `question-filled` `racing-flag` `radar` `radio` `refresh` `replay` `reset` `return` `road` `roof-closed` `roof-open` `route` `rss` `save` `screen` `search` `seat` `send` `service-technician` `share` `shopping-bag` `shopping-bag-filled` `shopping-cart` `shopping-cart-filled` `shopping-cart-off` `sidebar` `sidelights` `skip-backward` `skip-forward` `snowflake` `sort` `stack` `star` `star-filled` `steering-wheel` `stop` `stopwatch` `subtract` `success` `success-filled` `sun` `suv` `switch` `tablet` `tachometer` `theme` `tire` `trigger-finger` `truck` `turismo` `unlinked` `upload` `user` `user-filled` `user-group` `user-manual` `video` `view` `view-off` `volume-off` `volume-up` `warning` `warning-filled` `weather` `weight` `wifi` `work` `wrench` `wrenches` `zoom-in` `zoom-out`
|