@porsche-design-system/components-react 4.5.0 → 4.6.0-rc.1
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/bin/pds-skill.js +346 -0
- package/esm/lib/components/button.wrapper.d.ts +2 -2
- package/esm/lib/components/link.wrapper.d.ts +2 -2
- package/package.json +4 -3
- package/skills/pds-knowledge-react/SKILL.md +136 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/accessibility.md +63 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/examples/Default.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/examples/InteractiveElementsInSummary.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/examples/StickySummary.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-accordion/p-accordion.md +99 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinCheckbox.tsx +30 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinFormLabel.tsx +37 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinImage.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinInputSearch.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinRadioGroup.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinTable.tsx +91 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinText.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-ai-tag/p-ai-tag.md +47 -0
- package/skills/pds-knowledge-react/references/components/p-banner/accessibility.md +37 -0
- package/skills/pds-knowledge-react/references/components/p-banner/examples/Customization.tsx +35 -0
- package/skills/pds-knowledge-react/references/components/p-banner/examples/Default.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-banner/p-banner.md +96 -0
- package/skills/pds-knowledge-react/references/components/p-button/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/Form.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-button/examples/FormAttribute.tsx +31 -0
- package/skills/pds-knowledge-react/references/components/p-button/p-button.md +122 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/CustomClickableArea.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/Form.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/examples/FormAttribute.tsx +32 -0
- package/skills/pds-knowledge-react/references/components/p-button-pure/p-button-pure.md +122 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/ColorScheme.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/Default.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/FooterSlot.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/Hyphens.tsx +33 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/examples/UiBehaviour.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-button-tile/p-button-tile.md +119 -0
- package/skills/pds-knowledge-react/references/components/p-canvas/examples/Default.tsx +111 -0
- package/skills/pds-knowledge-react/references/components/p-canvas/p-canvas.md +95 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/Default.tsx +23 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/DynamicSlides.tsx +32 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/FlexibleWidths.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/FocusOnCenterSlide.tsx +56 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/Intl.tsx +20 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/examples/JumpToSlide.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-carousel/p-carousel.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Indeterminate.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Slots.tsx +54 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/examples/WrappedLabel.tsx +24 -0
- package/skills/pds-knowledge-react/references/components/p-checkbox/p-checkbox.md +126 -0
- package/skills/pds-knowledge-react/references/components/p-crest/accessibility.md +17 -0
- package/skills/pds-knowledge-react/references/components/p-crest/examples/CustomClickableArea.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-crest/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-crest/examples/Link.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-crest/p-crest.md +69 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Color.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Semantics.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/Size.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/examples/SizeResponsive.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-display/p-display.md +78 -0
- package/skills/pds-knowledge-react/references/components/p-divider/accessibility.md +41 -0
- package/skills/pds-knowledge-react/references/components/p-divider/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-divider/examples/Responsive.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-divider/examples/Vertical.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-divider/p-divider.md +53 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/accessibility.md +65 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/examples/CustomContent.tsx +164 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/examples/Default.tsx +117 -0
- package/skills/pds-knowledge-react/references/components/p-drilldown/p-drilldown.md +172 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/accessibility.md +37 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/Required.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/SlottedLabel.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/examples/SlottedMessage.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-fieldset/p-fieldset.md +92 -0
- package/skills/pds-knowledge-react/references/components/p-flag/accessibility.md +39 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/ResponsiveSize.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/Size.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-flag/examples/SizeCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-flag/p-flag.md +72 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/accessibility.md +80 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/CustomStyling.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/Default.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/Form.tsx +54 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/examples/StickyTop.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-flyout/p-flyout.md +132 -0
- package/skills/pds-knowledge-react/references/components/p-heading/accessibility.md +29 -0
- package/skills/pds-knowledge-react/references/components/p-heading/examples/Color.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-heading/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-heading/examples/Semantics.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-heading/p-heading.md +82 -0
- package/skills/pds-knowledge-react/references/components/p-icon/accessibility.md +39 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Color.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/ColorCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Custom.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Overview.tsx +588 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/ResponsiveSize.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/Size.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-icon/examples/SizeCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-icon/p-icon.md +92 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/accessibility.md +36 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/ActionButton.tsx +25 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/EventHandling.tsx +25 -0
- package/skills/pds-knowledge-react/references/components/p-inline-notification/p-inline-notification.md +78 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-date/p-input-date.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/examples/Form.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-email/p-input-email.md +150 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-month/p-input-month.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/examples/Form.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-number/p-input-number.md +154 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Form.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Slots.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/examples/Toggle.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-password/p-input-password.md +149 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/accessibility.md +59 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/AriaCombobox.tsx +35 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/Form.tsx +52 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-search/p-input-search.md +186 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-tel/p-input-tel.md +149 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Controlled.tsx +36 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-text/p-input-text.md +154 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-time/p-input-time.md +148 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-url/p-input-url.md +149 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/examples/Slots.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-input-week/p-input-week.md +146 -0
- package/skills/pds-knowledge-react/references/components/p-link/accessibility.md +73 -0
- package/skills/pds-knowledge-react/references/components/p-link/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-link/examples/FrameworkRouting.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-link/examples/Icon.tsx +17 -0
- package/skills/pds-knowledge-react/references/components/p-link/p-link.md +105 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/accessibility.md +73 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/CustomClickableArea.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/FrameworkRouting.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/examples/Icon.tsx +17 -0
- package/skills/pds-knowledge-react/references/components/p-link-pure/p-link-pure.md +114 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/ColorScheme.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/Default.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/FooterSlot.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/Hyphens.tsx +34 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/UiBehaviour.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/examples/WithVideo.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile/p-link-tile.md +109 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/Default.tsx +22 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/FrameworkRouting.tsx +25 -0
- package/skills/pds-knowledge-react/references/components/p-link-tile-product/p-link-tile-product.md +93 -0
- package/skills/pds-knowledge-react/references/components/p-modal/accessibility.md +80 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/AlertDialog.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/CustomStyling.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/Default.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-modal/examples/Scrollable.tsx +43 -0
- package/skills/pds-knowledge-react/references/components/p-modal/p-modal.md +139 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/CustomStyling.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskBlendMode.tsx +32 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskImage.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskVideo.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/examples/SafeZone.tsx +60 -0
- package/skills/pds-knowledge-react/references/components/p-model-signature/p-model-signature.md +62 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/accessibility.md +78 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/AsyncFilter.tsx +136 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Default.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Form.tsx +53 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Optgroups.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SelectedSlot.tsx +94 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SetValue.tsx +80 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Slots.tsx +48 -0
- package/skills/pds-knowledge-react/references/components/p-multi-select/p-multi-select.md +201 -0
- package/skills/pds-knowledge-react/references/components/p-pagination/accessibility.md +23 -0
- package/skills/pds-knowledge-react/references/components/p-pagination/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-pagination/p-pagination.md +87 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/CopyPaste.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Slots.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-pin-code/p-pin-code.md +113 -0
- package/skills/pds-knowledge-react/references/components/p-popover/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-popover/examples/Default.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-popover/examples/SlottedButton.tsx +15 -0
- package/skills/pds-knowledge-react/references/components/p-popover/p-popover.md +120 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/accessibility.md +63 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Default.tsx +17 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Form.tsx +53 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Slots.tsx +69 -0
- package/skills/pds-knowledge-react/references/components/p-radio-group/p-radio-group.md +161 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/examples/Default.tsx +51 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/examples/Height.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/examples/ScrollToPosition.tsx +58 -0
- package/skills/pds-knowledge-react/references/components/p-scroller/p-scroller.md +97 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/accessibility.md +67 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Default.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Form.tsx +52 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Slots.tsx +54 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/WithLabels.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md +166 -0
- package/skills/pds-knowledge-react/references/components/p-select/accessibility.md +140 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/AsyncFilter.tsx +136 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Default.tsx +29 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Form.tsx +53 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Optgroups.tsx +42 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Required.tsx +48 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/SelectedSlot.tsx +124 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/SetValue.tsx +80 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/Slots.tsx +48 -0
- package/skills/pds-knowledge-react/references/components/p-select/examples/SlottedImages.tsx +35 -0
- package/skills/pds-knowledge-react/references/components/p-select/p-select.md +198 -0
- package/skills/pds-knowledge-react/references/components/p-sheet/accessibility.md +80 -0
- package/skills/pds-knowledge-react/references/components/p-sheet/examples/Default.tsx +31 -0
- package/skills/pds-knowledge-react/references/components/p-sheet/p-sheet.md +125 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/Color.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/ColorCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/ResponsiveSize.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/Size.tsx +13 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/examples/SizeCssVar.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-spinner/p-spinner.md +100 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/accessibility.md +34 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/examples/Default.tsx +23 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/examples/FrameworkImplementation.tsx +100 -0
- package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/p-stepper-horizontal.md +113 -0
- package/skills/pds-knowledge-react/references/components/p-switch/accessibility.md +35 -0
- package/skills/pds-knowledge-react/references/components/p-switch/examples/Default.tsx +19 -0
- package/skills/pds-knowledge-react/references/components/p-switch/p-switch.md +107 -0
- package/skills/pds-knowledge-react/references/components/p-table/accessibility.md +47 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/Advanced.tsx +186 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/CaptionProperty.tsx +37 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/CaptionSlot.tsx +40 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/Default.tsx +117 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/HideLabel.tsx +37 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/LayoutFixed.tsx +50 -0
- package/skills/pds-knowledge-react/references/components/p-table/examples/Sorting.tsx +87 -0
- package/skills/pds-knowledge-react/references/components/p-table/p-table.md +193 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/accessibility.md +56 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/ActiveTab.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/Default.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/Gradient.tsx +111 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/examples/Labelling.tsx +26 -0
- package/skills/pds-knowledge-react/references/components/p-tabs/p-tabs.md +140 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/accessibility.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Default.tsx +27 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Gradient.tsx +78 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Labelling.tsx +27 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Links.tsx +20 -0
- package/skills/pds-knowledge-react/references/components/p-tabs-bar/p-tabs-bar.md +185 -0
- package/skills/pds-knowledge-react/references/components/p-tag/accessibility.md +19 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/Multiline.tsx +14 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/SlottedButton.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-tag/examples/SlottedLink.tsx +41 -0
- package/skills/pds-knowledge-react/references/components/p-tag/p-tag.md +70 -0
- package/skills/pds-knowledge-react/references/components/p-tag-dismissible/accessibility.md +35 -0
- package/skills/pds-knowledge-react/references/components/p-tag-dismissible/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-tag-dismissible/p-tag-dismissible.md +79 -0
- package/skills/pds-knowledge-react/references/components/p-text/accessibility.md +21 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/Default.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/Semantics.tsx +18 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/Size.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-text/examples/SizeResponsive.tsx +12 -0
- package/skills/pds-knowledge-react/references/components/p-text/p-text.md +72 -0
- package/skills/pds-knowledge-react/references/components/p-text-list/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-text-list/examples/Default.tsx +28 -0
- package/skills/pds-knowledge-react/references/components/p-text-list/p-text-list.md +72 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/accessibility.md +45 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/examples/Form.tsx +45 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/examples/Slots.tsx +39 -0
- package/skills/pds-knowledge-react/references/components/p-textarea/p-textarea.md +126 -0
- package/skills/pds-knowledge-react/references/components/p-toast/examples/Default.tsx +22 -0
- package/skills/pds-knowledge-react/references/components/p-toast/p-toast.md +61 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/accessibility.md +31 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/examples/CustomClickableArea.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/examples/Default.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/examples/Size.tsx +10 -0
- package/skills/pds-knowledge-react/references/components/p-wordmark/p-wordmark.md +70 -0
- package/skills/pds-knowledge-react/references/icons.md +5 -0
- package/skills/pds-knowledge-react/references/styles/emotion.md +439 -0
- package/skills/pds-knowledge-react/references/styles/scss.md +402 -0
- package/skills/pds-knowledge-react/references/styles/tailwindcss.md +356 -0
- package/skills/pds-knowledge-react/references/styles/vanilla-extract.md +444 -0
- package/skills/pds-knowledge-react/references/stylesheets.md +331 -0
- package/skills/pds-knowledge-react/references/tokens.md +323 -0
- package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +5 -5
- package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +1 -1
- package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +5 -5
- package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -1
- package/ssr/esm/lib/components/button.wrapper.d.ts +2 -2
- package/ssr/esm/lib/components/link.wrapper.d.ts +2 -2
package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/Default.tsx
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { PLinkTileProduct, PTag, type LinkTileProductLikeEvent } from '@porsche-design-system/components-react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [liked, setLiked] = useState(false);
|
|
7
|
+
|
|
8
|
+
const onLike = (e: CustomEvent<LinkTileProductLikeEvent>) => {
|
|
9
|
+
setLiked(!e.detail.liked);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<PLinkTileProduct liked={liked} heading="Some product" price="718,00 €" priceOriginal="911,00 €" description="Some description" href="https://porsche.com" onLike={onLike}>
|
|
15
|
+
<PTag slot="header" color="background-base">
|
|
16
|
+
New
|
|
17
|
+
</PTag>
|
|
18
|
+
<img src="assets/placeholder_800x900.svg" width={800} height={900} alt="Some alt text" />
|
|
19
|
+
</PLinkTileProduct>
|
|
20
|
+
</>
|
|
21
|
+
)
|
|
22
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { PLinkTileProduct, type LinkTileProductLikeEvent } from '@porsche-design-system/components-react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [liked, setLiked] = useState(false);
|
|
7
|
+
|
|
8
|
+
const onLike = (e: CustomEvent<LinkTileProductLikeEvent>) => {
|
|
9
|
+
setLiked(!e.detail.liked);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
return (
|
|
13
|
+
<>
|
|
14
|
+
<PLinkTileProduct liked={liked} heading="Some product" price="718,00 €" priceOriginal="911,00 €" description="Some description" onLike={onLike}>
|
|
15
|
+
<a slot="anchor" href="https://porsche.com">
|
|
16
|
+
Weekender, sale price 718,00 €, original price
|
|
17
|
+
<s>
|
|
18
|
+
911,00 €
|
|
19
|
+
</s>
|
|
20
|
+
</a>
|
|
21
|
+
<img src="assets/placeholder_800x900.svg" width={800} height={900} alt="Some alt text" />
|
|
22
|
+
</PLinkTileProduct>
|
|
23
|
+
</>
|
|
24
|
+
)
|
|
25
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-link-tile-product/p-link-tile-product.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# p-link-tile-product
|
|
2
|
+
|
|
3
|
+
> **Experimental:** This component is experimental — its API may change in any release. Avoid relying on it in production.
|
|
4
|
+
|
|
5
|
+
> **Experimental Component**
|
|
6
|
+
>
|
|
7
|
+
> The `p-link-tile-product` component is experimental and might be changed or removed in a future release.
|
|
8
|
+
|
|
9
|
+
The `p-link-tile-product` is a navigational component designed to showcase a featured product within a store. it offers the option to "like" the product, allowing you to easily add it to the users wishlist. Additionally, you can place a chip at the top to signal special features about the product, such as its novelty or exclusivity.
|
|
10
|
+
|
|
11
|
+
> **Image Aspect Ratio**
|
|
12
|
+
>
|
|
13
|
+
> The image within the component has a fixed aspect ratio of 8:9. For optimal presentation, it is recommended that the supplied image adheres to the same aspect ratio of 8:9 and includes a transparent background.
|
|
14
|
+
|
|
15
|
+
An `img` or `picture` element has to be available as a child of the `p-link-tile-product` component.
|
|
16
|
+
|
|
17
|
+
The `heading` and `price` properties are required and a link must be provided, using either the `href` property or a [slotted link](./p-link-tile-product.md).
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### Do:
|
|
22
|
+
|
|
23
|
+
- Use Link-Tile-Product to display a single product or within other products.
|
|
24
|
+
- Use the heading prop only for the product name.
|
|
25
|
+
- Use the price prop only for price and price reduction.
|
|
26
|
+
- Use description prop only for VAT or other disclaimers according to the product.
|
|
27
|
+
- Use only transparent images for the Link Tile Product.
|
|
28
|
+
- Use product images with an aspect ratio of 8:9.
|
|
29
|
+
- Use only product images with the same aspect ratio.
|
|
30
|
+
- Use Link-Tile-Products with identical sizes in one view.
|
|
31
|
+
- Use the header slot only for appropriate information such as "new" or "limited", and keep it short.
|
|
32
|
+
- Use Link-Tile-Product in a grid with other products.
|
|
33
|
+
- Use the likeButton prop to hide the likeButton when no wishlist is available.
|
|
34
|
+
|
|
35
|
+
### Don't:
|
|
36
|
+
|
|
37
|
+
- Do not manipulate product images. Keep them natural, with transparent backgrounds and sufficient contrast.
|
|
38
|
+
- Don't integrate environment into the product image, no reflection, drop shadow, or other styling effects.
|
|
39
|
+
- Don't alter the display of VAT when the display is requested, either show it for all products or don't.
|
|
40
|
+
- Don't manipulate the likeButton, this position is only reserved for this function.
|
|
41
|
+
- Don't have long product names.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Related components
|
|
46
|
+
|
|
47
|
+
- [Link Tile](../p-link-tile/p-link-tile.md)
|
|
48
|
+
|
|
49
|
+
## Accessibility support
|
|
50
|
+
|
|
51
|
+
Not yet considered due to experimental state.
|
|
52
|
+
|
|
53
|
+
## API
|
|
54
|
+
|
|
55
|
+
### Properties
|
|
56
|
+
|
|
57
|
+
| Property | Type | Default | Description |
|
|
58
|
+
| --- | --- | --- | --- |
|
|
59
|
+
| `aspectRatio` | `'3/4'` `'9/16'`<br>`BreakpointCustomizable<LinkTileProductAspectRatio>` | `'3/4'` | Sets the width-to-height ratio of the tile media area. Supports responsive breakpoint values. |
|
|
60
|
+
| `description` | `string` | `undefined` | Sets an optional short description providing additional product details below the price. |
|
|
61
|
+
| `heading` _(required)_ | `string` | `undefined` | Sets the product name displayed prominently at the top of the tile. |
|
|
62
|
+
| `href` | `string` | `undefined` | Sets the URL the tile navigates to when clicked. Alternatively, provide a slotted anchor element. |
|
|
63
|
+
| `likeButton` | `boolean` | `true` | Shows a like/bookmark button so users can save the product. |
|
|
64
|
+
| `liked` | `boolean` | `false` | Reflects whether the product is currently liked — controls the filled state of the like button. |
|
|
65
|
+
| `price` _(required)_ | `string` | `undefined` | Sets the current retail price of the product, displayed with or without a discount. |
|
|
66
|
+
| `priceOriginal` | `string` | `undefined` | Sets the original recommended retail price shown with a strikethrough to indicate a discount. Requires `price` to be set. |
|
|
67
|
+
| `rel` | `string` | `undefined` | Sets the `rel` attribute on the link (e.g. `noopener`). |
|
|
68
|
+
| `target` | `'_self'` `'_blank'` `'_parent'` `'_top'` `'string'` | `'_self'` | Specifies where to open the linked URL (e.g. `_self`, `_blank`). |
|
|
69
|
+
|
|
70
|
+
### Events
|
|
71
|
+
|
|
72
|
+
| Event | Type | Description |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| `like` | `CustomEvent<LinkTileProductLikeEventDetail>`<br>`{ liked: boolean }` | Emitted when the user clicks the like button, with the new liked state in the event detail. |
|
|
75
|
+
|
|
76
|
+
### Controlled properties
|
|
77
|
+
|
|
78
|
+
- `liked` — a controlled prop: the component does **not** update it itself. Handle the `like` event and assign the new value to `liked` yourself, or the change will not take effect.
|
|
79
|
+
|
|
80
|
+
### Slots
|
|
81
|
+
|
|
82
|
+
| Slot | Required | Allowed tag names | Description |
|
|
83
|
+
| --- | --- | --- | --- |
|
|
84
|
+
| `anchor` | no | — | Slotted anchor link which can be used instead of the `href` prop. Ensure the named slot is directly on the anchor element, without nesting. |
|
|
85
|
+
| `header` | no | — | Shows special features about the product like novelty or exclusivity. Although you can pass in anything, it is recommended to use the `p-tag` component. |
|
|
86
|
+
| _(default)_ | no | — | Default slot for the img or picture tag. |
|
|
87
|
+
|
|
88
|
+
## Examples
|
|
89
|
+
|
|
90
|
+
| Example | When to use | File |
|
|
91
|
+
| --- | --- | --- |
|
|
92
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
93
|
+
| Framework routing (anchor nesting) | To support framework routing you can provide the link as a slotted element by using the `anchor` slot instead of using the `href` property. | [./examples/FrameworkRouting.tsx](./examples/FrameworkRouting.tsx) |
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# p-modal accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### ARIA on component host vs aria prop
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PButton aria-haspopup="dialog">
|
|
11
|
+
Details of product XYZ
|
|
12
|
+
</PButton>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
#### ✅ Recommended
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<PButton aria={{'aria-haspopup': 'dialog'}}>
|
|
19
|
+
Details of product XYZ
|
|
20
|
+
</PButton>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Dialog label on component host vs header slot
|
|
24
|
+
|
|
25
|
+
#### ❌ Anti-pattern
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
<PModal aria-label="Details">
|
|
29
|
+
...
|
|
30
|
+
</PModal>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
#### ✅ Recommended
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<PModal>
|
|
37
|
+
<PHeading slot="header" tag="h2" size="lg">
|
|
38
|
+
Details of product XYZ
|
|
39
|
+
</PHeading>
|
|
40
|
+
...
|
|
41
|
+
</PModal>
|
|
42
|
+
|
|
43
|
+
{/* or with aria prop when no visible header is shown */}
|
|
44
|
+
|
|
45
|
+
<PModal aria={{'aria-label': 'Details of product XYZ'}}>
|
|
46
|
+
...
|
|
47
|
+
</PModal>
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Modal trigger without popup semantics or context
|
|
51
|
+
|
|
52
|
+
#### ❌ Anti-pattern
|
|
53
|
+
|
|
54
|
+
```tsx
|
|
55
|
+
<PButton>
|
|
56
|
+
Open
|
|
57
|
+
</PButton>
|
|
58
|
+
|
|
59
|
+
<PModal>
|
|
60
|
+
<PHeading slot="header" tag="h2" size="lg">
|
|
61
|
+
Details
|
|
62
|
+
</PHeading>
|
|
63
|
+
...
|
|
64
|
+
</PModal>
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### ✅ Recommended
|
|
68
|
+
|
|
69
|
+
```tsx
|
|
70
|
+
<PButton aria={{'aria-haspopup': 'dialog'}}>
|
|
71
|
+
Details of product XYZ
|
|
72
|
+
</PButton>
|
|
73
|
+
|
|
74
|
+
<PModal>
|
|
75
|
+
<PHeading slot="header" tag="h2" size="lg">
|
|
76
|
+
Details of product XYZ
|
|
77
|
+
</PHeading>
|
|
78
|
+
...
|
|
79
|
+
</PModal>
|
|
80
|
+
```
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { PButton, PHeading, PModal, PText } from '@porsche-design-system/components-react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [open, setOpen] = useState(false);
|
|
7
|
+
|
|
8
|
+
const onClick = () => {
|
|
9
|
+
setOpen(true);
|
|
10
|
+
}
|
|
11
|
+
const onDismiss = () => {
|
|
12
|
+
setOpen(false);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<>
|
|
17
|
+
<PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
|
|
18
|
+
Open Modal
|
|
19
|
+
</PButton>
|
|
20
|
+
|
|
21
|
+
<PModal open={open} aria={{'role': 'alertdialog'}} disableBackdropClick={true} onDismiss={onDismiss}>
|
|
22
|
+
<PHeading slot="header" size="large" tag="h2">
|
|
23
|
+
Some important Heading
|
|
24
|
+
</PHeading>
|
|
25
|
+
<PText>
|
|
26
|
+
Some important Content
|
|
27
|
+
</PText>
|
|
28
|
+
<div slot="footer" role="group" className="flex flex-wrap gap-fluid-sm max-xs:flex-col">
|
|
29
|
+
<PButton type="button">
|
|
30
|
+
Accept
|
|
31
|
+
</PButton>
|
|
32
|
+
<PButton type="button" variant="secondary">
|
|
33
|
+
Deny
|
|
34
|
+
</PButton>
|
|
35
|
+
</div>
|
|
36
|
+
</PModal>
|
|
37
|
+
</>
|
|
38
|
+
)
|
|
39
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { PButton, PModal } from '@porsche-design-system/components-react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [open, setOpen] = useState(false);
|
|
7
|
+
|
|
8
|
+
const onClick = () => {
|
|
9
|
+
setOpen(true);
|
|
10
|
+
}
|
|
11
|
+
const onDismiss = () => {
|
|
12
|
+
setOpen(false);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<>
|
|
17
|
+
<PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
|
|
18
|
+
Open Modal
|
|
19
|
+
</PButton>
|
|
20
|
+
|
|
21
|
+
<PModal open={open} backdrop="shading" aria={{'aria-label': 'Some Label'}} className="[--p-modal-width:clamp(276px,45.25vw+131px,1000px)] [--p-modal-spacing-top:200px] [--p-modal-spacing-bottom:50px]" onDismiss={onDismiss}>
|
|
22
|
+
<img src="assets/porsche-992-carrera-s.jpg" className="-mt-(--ref-p-modal-pt) -mx-(--ref-p-modal-px) -mb-(--ref-p-modal-pb) max-w-(--p-modal-width) rounded-xl" />
|
|
23
|
+
</PModal>
|
|
24
|
+
</>
|
|
25
|
+
)
|
|
26
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { PButton, PHeading, PModal, PText } from '@porsche-design-system/components-react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [open, setOpen] = useState(false);
|
|
7
|
+
|
|
8
|
+
const onClick = () => {
|
|
9
|
+
setOpen(true);
|
|
10
|
+
}
|
|
11
|
+
const onDismiss = () => {
|
|
12
|
+
setOpen(false);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<>
|
|
17
|
+
<PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
|
|
18
|
+
Open Modal
|
|
19
|
+
</PButton>
|
|
20
|
+
|
|
21
|
+
<PModal open={open} aria={{'aria-label': 'Some Heading'}} onDismiss={onDismiss}>
|
|
22
|
+
<PHeading slot="header" size="large" tag="h2">
|
|
23
|
+
Some Heading
|
|
24
|
+
</PHeading>
|
|
25
|
+
<PText>
|
|
26
|
+
Some Content
|
|
27
|
+
</PText>
|
|
28
|
+
<div slot="footer" role="group" className="flex flex-wrap gap-fluid-sm max-xs:flex-col">
|
|
29
|
+
<PButton type="button">
|
|
30
|
+
Proceed
|
|
31
|
+
</PButton>
|
|
32
|
+
<PButton type="button" variant="secondary">
|
|
33
|
+
Cancel
|
|
34
|
+
</PButton>
|
|
35
|
+
</div>
|
|
36
|
+
</PModal>
|
|
37
|
+
</>
|
|
38
|
+
)
|
|
39
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { PButton, PHeading, PModal, PText } from '@porsche-design-system/components-react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [open, setOpen] = useState(false);
|
|
7
|
+
|
|
8
|
+
const onClick = () => {
|
|
9
|
+
setOpen(true);
|
|
10
|
+
}
|
|
11
|
+
const onDismiss = () => {
|
|
12
|
+
setOpen(false);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return (
|
|
16
|
+
<>
|
|
17
|
+
<PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
|
|
18
|
+
Open Modal
|
|
19
|
+
</PButton>
|
|
20
|
+
|
|
21
|
+
<PModal open={open} aria={{'aria-label': 'Some Heading'}} onDismiss={onDismiss}>
|
|
22
|
+
<PHeading slot="header" size="large" tag="h2">
|
|
23
|
+
Some Heading
|
|
24
|
+
</PHeading>
|
|
25
|
+
<PText>
|
|
26
|
+
Some Content Begin
|
|
27
|
+
</PText>
|
|
28
|
+
<div className="w-[10px] h-[120vh] bg-[deeppink]"></div>
|
|
29
|
+
<PText>
|
|
30
|
+
Some Content End
|
|
31
|
+
</PText>
|
|
32
|
+
<div slot="footer" role="group" className="flex flex-wrap gap-fluid-sm max-xs:flex-col">
|
|
33
|
+
<PButton type="button">
|
|
34
|
+
Proceed
|
|
35
|
+
</PButton>
|
|
36
|
+
<PButton type="button" variant="secondary">
|
|
37
|
+
Cancel
|
|
38
|
+
</PButton>
|
|
39
|
+
</div>
|
|
40
|
+
</PModal>
|
|
41
|
+
</>
|
|
42
|
+
)
|
|
43
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# p-modal
|
|
2
|
+
|
|
3
|
+
The `p-modal` is a temporary overlay to focus the user's attention on one task while interactions with the underlying page are blocked. It is only used as highly disruptive modal notification to present important information until dismissed. Or as overlay to confirm critical user actions, such as confirming an irreversible choice. It should be used thoughtfully and sparingly.
|
|
4
|
+
|
|
5
|
+
It is a controlled component. This grants flexible control over the modal's behavior especially whether it should stay open after user interaction like submission of a form.
|
|
6
|
+
|
|
7
|
+
> **Scroll-lock**
|
|
8
|
+
>
|
|
9
|
+
> This component sets `overflow: hidden` on the body when opened in order to prevent background scrolling.
|
|
10
|
+
>
|
|
11
|
+
> This doesn't work completely reliable under iOS but is the most stable solution.
|
|
12
|
+
>
|
|
13
|
+
> Feel free to address this issue in an Open Source PR, if you can provide a better solution.
|
|
14
|
+
>
|
|
15
|
+
> **[Current implementation](https://github.com/porsche-design-system/porsche-design-system/blob/main/packages/components/src/utils/setScrollLock.ts)**
|
|
16
|
+
|
|
17
|
+
Following **web standards**, the component uses the native `<dialog />` element internally which ensures proper focus handling including a **focus trap**. In addition, it's rendered on the `#top-layer` which ensures the element to be on top of the page independent of where `p-modal` is placed in the DOM hierarchy (`z-index` is not relevant anymore and won't have any effect).
|
|
18
|
+
|
|
19
|
+
The most important property of `p-modal` is its `open` property. When it's set to `true` the modal will be visible. In order to get notified when the modal gets closed by clicking the `x` button, the backdrop or by pressing the `Escape` key you need to register an event listener for the `dismiss` event which is emitted by `p-modal`.
|
|
20
|
+
|
|
21
|
+
The size of `p-modal` adjusts itself to the content with a predefined **min/max width** which aligns to the **[Porsche Grid](../../styles/tailwindcss.md)**.
|
|
22
|
+
|
|
23
|
+
## Usage
|
|
24
|
+
|
|
25
|
+
### Do:
|
|
26
|
+
|
|
27
|
+
- Use Modals to display additional information or required steps without losing context.
|
|
28
|
+
- Use Modals for confirmation before performing lengthy or dangerous actions.
|
|
29
|
+
- Use default Modal for simple content.
|
|
30
|
+
- Use full-width content and background overlay animation to draw user attention.
|
|
31
|
+
- Provide multiple ways to dismiss the Modal but require an intentional choice.
|
|
32
|
+
- Use scrolling only when necessary and try to keep content in a single view.
|
|
33
|
+
- Adjust Modal size and alignment with the grid.
|
|
34
|
+
- Use up to three actions in the action bar at the bottom of the Modal.
|
|
35
|
+
- Follow button order and positioning guidelines.
|
|
36
|
+
- Use feedback banner for any feedback related to the request.
|
|
37
|
+
|
|
38
|
+
### Don't:
|
|
39
|
+
|
|
40
|
+
- Don't use fullscreen Modals on desktop.
|
|
41
|
+
- Don't use the Modal with more than three buttons.
|
|
42
|
+
- Don't launch a Modal within a Modal.
|
|
43
|
+
|
|
44
|
+
## Accessibility support
|
|
45
|
+
|
|
46
|
+
The `Modal` component uses the native `dialog` element to provide a modal dialog which comes with browser-specific behavior. As a result, accessibility features may vary across different browsers.
|
|
47
|
+
|
|
48
|
+
### Keyboard
|
|
49
|
+
|
|
50
|
+
| Key / state | Function |
|
|
51
|
+
| --- | --- |
|
|
52
|
+
| `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element inside the dialog. Focus is trapped (browser behavior). |
|
|
53
|
+
| `ESC` | Closes the dialog. |
|
|
54
|
+
| `focus` on trigger element | The focus is returned to the trigger element after closing the dialog (browser behavior). |
|
|
55
|
+
|
|
56
|
+
### ARIA enhancements
|
|
57
|
+
|
|
58
|
+
#### External **ARIA** provided by the `aria` property:
|
|
59
|
+
|
|
60
|
+
| ARIA | Usage |
|
|
61
|
+
| --- | --- |
|
|
62
|
+
| `aria-label` | Defines a string value that labels the dialog element. |
|
|
63
|
+
| `role` | Defines the semantic of the dialog element (`dialog` or `alertdialog`). |
|
|
64
|
+
|
|
65
|
+
#### Internal **ARIA** that is managed by the component:
|
|
66
|
+
|
|
67
|
+
| ARIA | Usage |
|
|
68
|
+
| --- | --- |
|
|
69
|
+
| `aria-label="STRING"` | Defines the accessible name if no `aria` property is provided, uses the contents of the header slot and falls back to a fixed name. |
|
|
70
|
+
|
|
71
|
+
## Development considerations
|
|
72
|
+
|
|
73
|
+
To inform users that the trigger button opens a `dialog`, the `aria-haspopup` attribute must be set using the `aria` property.
|
|
74
|
+
|
|
75
|
+
### Common do's and don'ts
|
|
76
|
+
|
|
77
|
+
- **Do** use a semantic trigger (usually a button) with a meaningful accessible name.
|
|
78
|
+
- **Do** set `aria-haspopup` through the trigger component `aria` prop when opening the modal.
|
|
79
|
+
- **Do** ensure a meaningful title is available via the `header` slot or `aria` property.
|
|
80
|
+
- **Don't** add raw host-level ARIA attributes as a workaround.
|
|
81
|
+
- **Don't** use unclear trigger copy like "Open" when the destination is not obvious.
|
|
82
|
+
|
|
83
|
+
## Integration examples
|
|
84
|
+
|
|
85
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
86
|
+
|
|
87
|
+
## API
|
|
88
|
+
|
|
89
|
+
### Properties
|
|
90
|
+
|
|
91
|
+
| Property | Type | Default | Description |
|
|
92
|
+
| --- | --- | --- | --- |
|
|
93
|
+
| `aria` | `ModalAriaAttribute` | `undefined` | Sets ARIA attributes on the dialog element for improved accessibility when no visible heading is present. |
|
|
94
|
+
| `backdrop` | `'blur'` `'shading'` | `'blur'` | Sets the backdrop style. Use `blur` when the modal is opened by user interaction; use `shading` when opened automatically (e.g. Cookie Consent). |
|
|
95
|
+
| `background` | `'canvas'` `'surface'` | `'canvas'` | Sets the background color of the modal panel (`canvas` or `surface`). |
|
|
96
|
+
| `disableBackdropClick` | `boolean` | `false` | When enabled, clicking the backdrop will not close the modal. |
|
|
97
|
+
| `dismissButton` | `boolean` | `true` | Shows a dismiss button in the modal header so the user can manually close it. |
|
|
98
|
+
| `fullscreen` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Expands the modal to the full viewport size, intended for mobile use cases. Supports responsive breakpoint values. |
|
|
99
|
+
| `open` _(required)_ | `boolean` | `false` | Controls whether the modal dialog is visible. |
|
|
100
|
+
|
|
101
|
+
### Events
|
|
102
|
+
|
|
103
|
+
| Event | Type | Description |
|
|
104
|
+
| --- | --- | --- |
|
|
105
|
+
| `dismiss` | `CustomEvent<void>` | Emitted when the user closes the modal via the dismiss button, backdrop click, or Escape key. |
|
|
106
|
+
| `motionHiddenEnd` | `CustomEvent<ModalMotionHiddenEndEventDetail>`<br>`TransitionEvent` | Emitted after the modal's close transition completes and the dialog is fully hidden. |
|
|
107
|
+
| `motionVisibleEnd` | `CustomEvent<ModalMotionVisibleEndEventDetail>`<br>`TransitionEvent` | Emitted after the modal's open transition completes and the dialog is fully visible. |
|
|
108
|
+
|
|
109
|
+
### Controlled properties
|
|
110
|
+
|
|
111
|
+
- `open` — a controlled prop: the component does **not** update it itself. Handle the `dismiss` event and assign the new value to `open` yourself, or the change will not take effect.
|
|
112
|
+
|
|
113
|
+
### Slots
|
|
114
|
+
|
|
115
|
+
| Slot | Required | Allowed tag names | Description |
|
|
116
|
+
| --- | --- | --- | --- |
|
|
117
|
+
| `header` | no | — | Renders a header section above the content area. |
|
|
118
|
+
| _(default)_ | no | — | Default slot for the main content. |
|
|
119
|
+
| `footer` | no | — | Shows a sticky footer section, flowing under the content area when scrollable. |
|
|
120
|
+
|
|
121
|
+
### CSS Variables
|
|
122
|
+
|
|
123
|
+
| CSS Variable | Default | Description |
|
|
124
|
+
| --- | --- | --- |
|
|
125
|
+
| `--p-modal-width` | `auto` | Width of the modal. |
|
|
126
|
+
| `--p-modal-spacing-top` | `clamp(16px, 10vh, 192px)` | Spacing of the modal to the top. |
|
|
127
|
+
| `--p-modal-spacing-bottom` | `clamp(16px, 10vh, 192px)` | Spacing of the modal to the bottom. |
|
|
128
|
+
| `--ref-p-modal-pt` | — | Exposes the internally used padding-top of the Modal as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the top of the Modal. |
|
|
129
|
+
| `--ref-p-modal-pb` | — | Exposes the internally used padding-bottom of the Modal as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the bottom of the Modal. |
|
|
130
|
+
| `--ref-p-modal-px` | — | Exposes the internally used padding-inline of the Modal as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the full horizontal size of the Modal. |
|
|
131
|
+
|
|
132
|
+
## Examples
|
|
133
|
+
|
|
134
|
+
| Example | When to use | File |
|
|
135
|
+
| --- | --- | --- |
|
|
136
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
137
|
+
| Scrollable modal with sticky footer | If the modal's content does not fit within the available space, the content becomes scrollable and the footer area remains sticky. | [./examples/Scrollable.tsx](./examples/Scrollable.tsx) |
|
|
138
|
+
| Modal as alert dialog | The `p-modal` component can be used as an alert dialog. | [./examples/AlertDialog.tsx](./examples/AlertDialog.tsx) |
|
|
139
|
+
| Custom styling | The modal component has some values that can be overridden via CSS custom properties (aka CSS variables). | [./examples/CustomStyling.tsx](./examples/CustomStyling.tsx) |
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PModelSignature } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PModelSignature color="inherit" className="text-info"></PModelSignature>
|
|
8
|
+
|
|
9
|
+
<PModelSignature className="[--p-model-signature-width:auto] [--p-model-signature-height:50px] block"></PModelSignature>
|
|
10
|
+
|
|
11
|
+
<PModelSignature className="[--p-model-signature-width:50px] [--p-model-signature-height:auto] block"></PModelSignature>
|
|
12
|
+
</>
|
|
13
|
+
)
|
|
14
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PModelSignature } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<div className="isolate bg-[#00aa3680] inline-block p-static-lg">
|
|
8
|
+
<PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div className="isolate bg-[#f2f2f280] inline-block p-static-lg">
|
|
12
|
+
<PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div className="isolate bg-[#1f1f1f80] inline-block p-static-lg">
|
|
16
|
+
<PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div className="isolate bg-[#c5004280] inline-block p-static-lg">
|
|
20
|
+
<PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div className="isolate bg-[#e1d4a480] inline-block p-static-lg">
|
|
24
|
+
<PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div className="isolate bg-[#0099e080] inline-block p-static-lg">
|
|
28
|
+
<PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
|
|
29
|
+
</div>
|
|
30
|
+
</>
|
|
31
|
+
)
|
|
32
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskImage.tsx
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PModelSignature } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PModelSignature safeZone={false} className="[--p-model-signature-width:auto]">
|
|
8
|
+
<img src="assets/dessert.jpg" alt="Dessert" />
|
|
9
|
+
</PModelSignature>
|
|
10
|
+
</>
|
|
11
|
+
)
|
|
12
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskVideo.tsx
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PModelSignature } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PModelSignature safeZone={false} className="[--p-model-signature-width:auto]">
|
|
8
|
+
<video poster="assets/ocean.jpg" src="assets/ocean.mp4" autoPlay={true} playsInline={true} loop={true} muted={true}></video>
|
|
9
|
+
</PModelSignature>
|
|
10
|
+
</>
|
|
11
|
+
)
|
|
12
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-model-signature/examples/SafeZone.tsx
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PModelSignature } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
8
|
+
<PModelSignature safeZone={false} model="718"></PModelSignature>
|
|
9
|
+
</div>
|
|
10
|
+
|
|
11
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
12
|
+
<PModelSignature safeZone={false} model="911"></PModelSignature>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
16
|
+
<PModelSignature safeZone={false} model="boxster"></PModelSignature>
|
|
17
|
+
</div>
|
|
18
|
+
|
|
19
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
20
|
+
<PModelSignature safeZone={false} model="cayenne"></PModelSignature>
|
|
21
|
+
</div>
|
|
22
|
+
|
|
23
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
24
|
+
<PModelSignature safeZone={false} model="cayman"></PModelSignature>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
28
|
+
<PModelSignature safeZone={false} model="gt3-rs"></PModelSignature>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
32
|
+
<PModelSignature safeZone={false} model="gt3"></PModelSignature>
|
|
33
|
+
</div>
|
|
34
|
+
|
|
35
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
36
|
+
<PModelSignature safeZone={false} model="gts"></PModelSignature>
|
|
37
|
+
</div>
|
|
38
|
+
|
|
39
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
40
|
+
<PModelSignature safeZone={false} model="macan"></PModelSignature>
|
|
41
|
+
</div>
|
|
42
|
+
|
|
43
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
44
|
+
<PModelSignature safeZone={false} model="panamera"></PModelSignature>
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
48
|
+
<PModelSignature safeZone={false} model="taycan"></PModelSignature>
|
|
49
|
+
</div>
|
|
50
|
+
|
|
51
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
52
|
+
<PModelSignature safeZone={false} model="turbo-s"></PModelSignature>
|
|
53
|
+
</div>
|
|
54
|
+
|
|
55
|
+
<div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
|
|
56
|
+
<PModelSignature safeZone={false} model="turbo"></PModelSignature>
|
|
57
|
+
</div>
|
|
58
|
+
</>
|
|
59
|
+
)
|
|
60
|
+
}
|