@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-button-tile/examples/ColorScheme.tsx
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButtonTile, PTag } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PButtonTile label="Some label" description="Some Description" gradient={true}>
|
|
8
|
+
<PTag slot="header" color="background-frosted" compact={true} style={{'colorScheme': 'only light'}}>
|
|
9
|
+
Some tag
|
|
10
|
+
</PTag>
|
|
11
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
12
|
+
</PButtonTile>
|
|
13
|
+
</>
|
|
14
|
+
)
|
|
15
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButtonTile, PTag, PText } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PButtonTile label="Some label" description="Some Description" gradient={true}>
|
|
8
|
+
<PTag slot="header" color="background-frosted" compact={true}>
|
|
9
|
+
Some tag
|
|
10
|
+
</PTag>
|
|
11
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
12
|
+
<PText slot="footer">
|
|
13
|
+
Some footer text
|
|
14
|
+
</PText>
|
|
15
|
+
</PButtonTile>
|
|
16
|
+
</>
|
|
17
|
+
)
|
|
18
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-button-tile/examples/FooterSlot.tsx
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButtonTile, PTag, PText } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<div className="grid grid-cols-2 gap-static-md">
|
|
8
|
+
<PButtonTile label="Some label" description="Some Description">
|
|
9
|
+
<PTag slot="header" color="background-frosted" compact={true}>
|
|
10
|
+
Some tag
|
|
11
|
+
</PTag>
|
|
12
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
13
|
+
<PText slot="footer">
|
|
14
|
+
Some footer text
|
|
15
|
+
</PText>
|
|
16
|
+
</PButtonTile>
|
|
17
|
+
<PButtonTile label="Some label" description="Some Description" compact={true}>
|
|
18
|
+
<PTag slot="header" color="background-frosted" compact={true}>
|
|
19
|
+
Some tag
|
|
20
|
+
</PTag>
|
|
21
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
22
|
+
<PText slot="footer">
|
|
23
|
+
Some footer text
|
|
24
|
+
</PText>
|
|
25
|
+
</PButtonTile>
|
|
26
|
+
</div>
|
|
27
|
+
</>
|
|
28
|
+
)
|
|
29
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButtonTile, PSelect, PSelectOption, SelectChangeEventDetail } from '@porsche-design-system/components-react';
|
|
3
|
+
import { Property } from 'csstype';
|
|
4
|
+
import { useState } from 'react';
|
|
5
|
+
|
|
6
|
+
export const Example = () => {
|
|
7
|
+
const [hyphens, setHyphens] = useState<Property.Hyphens>('auto');
|
|
8
|
+
|
|
9
|
+
const onChange = (e: CustomEvent<SelectChangeEventDetail>) => {
|
|
10
|
+
setHyphens(e.detail.value as Property.Hyphens);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
return (
|
|
14
|
+
<>
|
|
15
|
+
<PSelect label="Select hyphens" name="hyphens" value={hyphens} onChange={onChange}>
|
|
16
|
+
<PSelectOption value="auto">style="hyphens: auto;"</PSelectOption>
|
|
17
|
+
<PSelectOption value="manual">style="hyphens: manual;"</PSelectOption>
|
|
18
|
+
<PSelectOption value="none">style="hyphens: none;"</PSelectOption>
|
|
19
|
+
</PSelect>
|
|
20
|
+
|
|
21
|
+
<PButtonTile
|
|
22
|
+
label="Some label"
|
|
23
|
+
description="An extra­ordinarily Porsche"
|
|
24
|
+
compact={true}
|
|
25
|
+
size="inherit"
|
|
26
|
+
style={{ colorScheme: 'dark', maxWidth: '400px', fontSize: '45px', hyphens }}
|
|
27
|
+
className="mt-fluid-sm"
|
|
28
|
+
>
|
|
29
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
30
|
+
</PButtonTile>
|
|
31
|
+
</>
|
|
32
|
+
);
|
|
33
|
+
};
|
package/skills/pds-knowledge-react/references/components/p-button-tile/examples/UiBehaviour.tsx
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButtonTile, PTag } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<div className="grid grid-cols-2 gap-static-md">
|
|
8
|
+
<PButtonTile aspectRatio="4/3" label="Some Label" description="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum." size="large">
|
|
9
|
+
<PTag slot="header" color="background-frosted" compact="true">
|
|
10
|
+
4/3
|
|
11
|
+
</PTag>
|
|
12
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
13
|
+
</PButtonTile>
|
|
14
|
+
<PButtonTile aspectRatio="4/3" label="Some Label" description="Some description">
|
|
15
|
+
<PTag slot="header" color="background-frosted" compact="true">
|
|
16
|
+
4/3
|
|
17
|
+
</PTag>
|
|
18
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
19
|
+
</PButtonTile>
|
|
20
|
+
<PButtonTile aspectRatio="1/1" label="Some Label" description="Some description">
|
|
21
|
+
<PTag slot="header" color="background-frosted" compact="true">
|
|
22
|
+
1/1
|
|
23
|
+
</PTag>
|
|
24
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
25
|
+
</PButtonTile>
|
|
26
|
+
<PButtonTile aspectRatio="9/16" label="Some Label" description="Some description">
|
|
27
|
+
<PTag slot="header" color="background-frosted" compact="true">
|
|
28
|
+
9/16
|
|
29
|
+
</PTag>
|
|
30
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
31
|
+
</PButtonTile>
|
|
32
|
+
<PButtonTile aspectRatio="1/1" label="Some Label" description="Some description">
|
|
33
|
+
<PTag slot="header" color="background-frosted" compact="true">
|
|
34
|
+
1/1
|
|
35
|
+
</PTag>
|
|
36
|
+
<img src="assets/lights.jpg" alt="Some image description" />
|
|
37
|
+
</PButtonTile>
|
|
38
|
+
</div>
|
|
39
|
+
</>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# p-button-tile
|
|
2
|
+
|
|
3
|
+
The `p-button-tile` is an interactive component that displays a provided image to tease content and performs form or **interaction** events within one container. Whenever you want to provide navigational elements, stick to the [Link Tile](../p-link-tile/p-link-tile.md) component instead.
|
|
4
|
+
|
|
5
|
+
**Note:** The component does not take care of processing and aligning the image.
|
|
6
|
+
|
|
7
|
+
An `<img/>`, `<picture/>` or `<video/>` tag has to be provided as default slot.
|
|
8
|
+
|
|
9
|
+
Additionally, the properties `description` and `label` are required. The `description` property is used as a teaser with a more detailed description of the button and its action.
|
|
10
|
+
|
|
11
|
+
The `label` property is used to describe the button.
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
### Do:
|
|
16
|
+
|
|
17
|
+
- Use Button Tile for **on-page interactivity**.
|
|
18
|
+
- Use [Link Tile](../p-link-tile/p-link-tile.md) instead if you want to **navigate** to another page.
|
|
19
|
+
- Use Button Tile with appropriate aspect ratios and short descriptions (80 characters or fewer).
|
|
20
|
+
- Use basic Button Tile for better perception tests and compact Button Tile for improved spacing (especially on mobile).
|
|
21
|
+
- Use gradient Button Tile when image contrast is insufficient and select images with natural contrast.
|
|
22
|
+
- Use font size for visual hierarchy and customize image type and font size for responsiveness.
|
|
23
|
+
- Use engaging verbs and product names in compact Button Tile.
|
|
24
|
+
- Create assets upfront for image processing.
|
|
25
|
+
|
|
26
|
+
### Don't:
|
|
27
|
+
|
|
28
|
+
- Don't manipulate images, keep them natural and contrasted.
|
|
29
|
+
- Don't write long descriptions that overflow content (especially on mobile).
|
|
30
|
+
|
|
31
|
+
## Accessibility support
|
|
32
|
+
|
|
33
|
+
### Keyboard
|
|
34
|
+
|
|
35
|
+
| Key / state | Function |
|
|
36
|
+
| --- | --- |
|
|
37
|
+
| `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element. |
|
|
38
|
+
| `Enter`, `Space` | Activates the button. |
|
|
39
|
+
| `disabled` | Button still focusable. |
|
|
40
|
+
|
|
41
|
+
### ARIA enhancements
|
|
42
|
+
|
|
43
|
+
#### External **ARIA** provided by the `aria` property:
|
|
44
|
+
|
|
45
|
+
| ARIA | Usage |
|
|
46
|
+
| --- | --- |
|
|
47
|
+
| `aria-label` | Defines a string value that labels an interactive element. It's required for buttons with `hideLabel="true"`. |
|
|
48
|
+
| `aria-description` | Defines a string value that adds a more detailed description of the interactive element. |
|
|
49
|
+
| `aria-expanded` | Exposes a visual state (e.g. expanded/collapsed) of another element. |
|
|
50
|
+
| `aria-pressed` | Exposes the `pressed` state of a toggle button. |
|
|
51
|
+
| `aria-haspopup` | Defines that the button opens a popup (e.g. `dialog`). It can be used in combination with `aria-expanded` to indicate the state of the popup. |
|
|
52
|
+
|
|
53
|
+
## Limitations
|
|
54
|
+
|
|
55
|
+
Due to the nature of **Web Components** and **shadow DOM**, there are limitations when using some **ARIA** attributes to define relationships between elements across different shadow DOMs or shadow DOM/light DOM combinations.
|
|
56
|
+
|
|
57
|
+
| ARIA | Support |
|
|
58
|
+
| --- | --- |
|
|
59
|
+
| `aria-labelledby` | 🚫 |
|
|
60
|
+
| `aria-describedby` | 🚫 |
|
|
61
|
+
| `aria-owns` | 🚫 |
|
|
62
|
+
| `aria-controls` | 🚫 |
|
|
63
|
+
| `aria-activedescendant` | 🚫 |
|
|
64
|
+
|
|
65
|
+
## Development considerations
|
|
66
|
+
|
|
67
|
+
### Labelling
|
|
68
|
+
|
|
69
|
+
If the text of the button does not clearly indicate what the button's function is, add a brief, descriptive label using the `aria` property with the `aria-label` value to provide more context for screen reader users. Phrases like "Detail" or "Open" can be unclear when read out of context by a screen reader. In such instances, provide an alternative text that offers more detailed information, such as "Open details of product XYZ."
|
|
70
|
+
|
|
71
|
+
### Common do's and don'ts
|
|
72
|
+
|
|
73
|
+
- **Do** pass ARIA attributes via the `aria` prop when the visible label needs more context.
|
|
74
|
+
- **Do** provide a descriptive `label` that explains the tile action.
|
|
75
|
+
- **Do** add `aria-label` on slotted `<video>` elements used as backgrounds.
|
|
76
|
+
- **Don't** add native `aria-*` attributes directly on the component host.
|
|
77
|
+
|
|
78
|
+
## Integration examples
|
|
79
|
+
|
|
80
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
81
|
+
|
|
82
|
+
## API
|
|
83
|
+
|
|
84
|
+
### Properties
|
|
85
|
+
|
|
86
|
+
| Property | Type | Default | Description |
|
|
87
|
+
| --- | --- | --- | --- |
|
|
88
|
+
| `align` | `'top'` `'bottom'` | `'bottom'` | Controls the vertical placement of the description and button — `top` or `bottom`. |
|
|
89
|
+
| `aria` | `ButtonTileAriaAttribute` | `undefined` | Sets ARIA attributes on the tile's action button to improve accessibility for screen readers. |
|
|
90
|
+
| `aspectRatio` | `'1/1'` `'4/3'` `'3/4'` `'16/9'` `'9/16'` `'auto'`<br>`BreakpointCustomizable<ButtonTileAspectRatio>` | `'4/3'` | Sets the width-to-height ratio of the tile media area. Supports responsive breakpoint values. |
|
|
91
|
+
| `compact` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Renders only the icon button without the full label. Supports responsive breakpoint values. |
|
|
92
|
+
| `description` _(required)_ | `string` | `undefined` | Sets the description text displayed in the tile's content area. |
|
|
93
|
+
| `disabled` | `boolean` | `false` | Disables the tile, preventing button interaction. |
|
|
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 290 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
|
+
| `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon for the action button, used instead of the built-in icon set. |
|
|
97
|
+
| `label` _(required)_ | `string` | `undefined` | Sets the accessible label text of the action button rendered inside the tile. |
|
|
98
|
+
| `loading` | `boolean` | `false` | Disables the tile and shows a loading spinner to indicate an ongoing operation. |
|
|
99
|
+
| `size` | `'medium'` `'large'` `'inherit'`<br>`BreakpointCustomizable<ButtonTileSize>` | `'medium'` | Sets the font size of the description text in the tile content area. Supports responsive breakpoint values. |
|
|
100
|
+
| `type` | `'button'` `'submit'` `'reset'` | `'submit'` | Sets the button's HTML type — `submit` sends the form, `reset` clears it, `button` performs no default action. |
|
|
101
|
+
| `weight` | `'regular'` `'semi-bold'`<br>`BreakpointCustomizable<ButtonTileWeight>` | `'semi-bold'` | Sets the font weight of the description text in the tile content area. Supports responsive breakpoint values. |
|
|
102
|
+
|
|
103
|
+
### Slots
|
|
104
|
+
|
|
105
|
+
| Slot | Required | Allowed tag names | Description |
|
|
106
|
+
| --- | --- | --- | --- |
|
|
107
|
+
| `header` | no | — | Renders a header section above the content area. |
|
|
108
|
+
| _(default)_ | no | — | Default slot for the img or picture tag. |
|
|
109
|
+
| `footer` | no | — | Renders a footer section below the description. |
|
|
110
|
+
|
|
111
|
+
## Examples
|
|
112
|
+
|
|
113
|
+
| Example | When to use | File |
|
|
114
|
+
| --- | --- | --- |
|
|
115
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
116
|
+
| UI behaviour | The component is able to break out of its aspect ratio in case content overflows to be accessibility compliant (see first row in example). | [./examples/UiBehaviour.tsx](./examples/UiBehaviour.tsx) |
|
|
117
|
+
| Hyphens | It is possible to overwrite the hyphens style on the host element and use 'soft' hyphens. | [./examples/Hyphens.tsx](./examples/Hyphens.tsx) |
|
|
118
|
+
| Footer slot | You can also use a `footer` slot to display additional text below the description, providing more flexibility for custom content. | [./examples/FooterSlot.tsx](./examples/FooterSlot.tsx) |
|
|
119
|
+
| Color scheme | The component defines `color-scheme: dark` internally, independently of the scheme defined globally or on an ancestor outside the Button Tile. | [./examples/ColorScheme.tsx](./examples/ColorScheme.tsx) |
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
type CanvasSidebarStartUpdateEventDetail,
|
|
4
|
+
PButton,
|
|
5
|
+
PCanvas,
|
|
6
|
+
PHeading,
|
|
7
|
+
PText,
|
|
8
|
+
} from '@porsche-design-system/components-react';
|
|
9
|
+
import { breakpointS } from '@porsche-design-system/components-react/emotion';
|
|
10
|
+
import { useCallback, useState } from 'react';
|
|
11
|
+
|
|
12
|
+
export const Example = () => {
|
|
13
|
+
const [isSidebarStartOpen, setIsSidebarStartOpen] = useState<boolean>(
|
|
14
|
+
// initially, sidebar should be closed on mobile and opened on desktop
|
|
15
|
+
window.matchMedia(`(min-width: ${breakpointS}px)`).matches
|
|
16
|
+
);
|
|
17
|
+
const [isSidebarEndOpen, setIsSidebarEndOpen] = useState<boolean>(false);
|
|
18
|
+
|
|
19
|
+
const onSidebarStartUpdate = useCallback((e: CustomEvent<CanvasSidebarStartUpdateEventDetail>) => {
|
|
20
|
+
setIsSidebarStartOpen(e.detail.open);
|
|
21
|
+
}, []);
|
|
22
|
+
const onSidebarEndOpen = useCallback(() => {
|
|
23
|
+
setIsSidebarEndOpen(true);
|
|
24
|
+
}, []);
|
|
25
|
+
const onSidebarEndDismiss = useCallback(() => {
|
|
26
|
+
setIsSidebarEndOpen(false);
|
|
27
|
+
}, []);
|
|
28
|
+
|
|
29
|
+
const style = `
|
|
30
|
+
.-col-span-full-1 {
|
|
31
|
+
grid-column: 1 / -1;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.-col-span-full-2 {
|
|
35
|
+
grid-column: 2 / -2;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.-col-span-full-3 {
|
|
39
|
+
grid-column: 3 / -3;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.-col-span-4 {
|
|
43
|
+
grid-column: span 4;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.tile {
|
|
47
|
+
margin-top: 16px;
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
justify-content: center;
|
|
51
|
+
padding: 16px;
|
|
52
|
+
background: lightpink;
|
|
53
|
+
}
|
|
54
|
+
`;
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<>
|
|
58
|
+
<style dangerouslySetInnerHTML={{ __html: style }} />
|
|
59
|
+
<PCanvas
|
|
60
|
+
sidebarStartOpen={isSidebarStartOpen}
|
|
61
|
+
sidebarEndOpen={isSidebarEndOpen}
|
|
62
|
+
onSidebarStartUpdate={onSidebarStartUpdate}
|
|
63
|
+
onSidebarEndDismiss={onSidebarEndDismiss}
|
|
64
|
+
>
|
|
65
|
+
<a slot="title" href="#">
|
|
66
|
+
App Name
|
|
67
|
+
</a>
|
|
68
|
+
|
|
69
|
+
<PButton
|
|
70
|
+
slot="header-end"
|
|
71
|
+
icon="configurate"
|
|
72
|
+
variant="secondary"
|
|
73
|
+
compact={true}
|
|
74
|
+
hideLabel={true}
|
|
75
|
+
onClick={onSidebarEndOpen}
|
|
76
|
+
>
|
|
77
|
+
Open sidebar
|
|
78
|
+
</PButton>
|
|
79
|
+
|
|
80
|
+
<div className="-p-canvas-grid">
|
|
81
|
+
<PText className="-col-span-full-1">Content</PText>
|
|
82
|
+
|
|
83
|
+
<div className="tile -col-span-4">Grid span 4x</div>
|
|
84
|
+
<div className="tile -col-span-4">Grid span 4x</div>
|
|
85
|
+
<div className="tile -col-span-4">Grid span 4x</div>
|
|
86
|
+
|
|
87
|
+
<div className="tile -col-span-full-1">12 Grid columns</div>
|
|
88
|
+
<div className="tile -col-span-full-2">10 Grid columns</div>
|
|
89
|
+
<div className="tile -col-span-full-3">8 Grid columns</div>
|
|
90
|
+
</div>
|
|
91
|
+
|
|
92
|
+
<div slot="footer" className="-p-canvas-grid">
|
|
93
|
+
<PText className="-col-span-full-1">Footer</PText>
|
|
94
|
+
<div className="tile -col-span-full-1">12 Grid columns</div>
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<div slot="sidebar-start">
|
|
98
|
+
<PText>Sidebar Start</PText>
|
|
99
|
+
</div>
|
|
100
|
+
|
|
101
|
+
<PHeading slot="sidebar-end-header" tag="h2" size="small">
|
|
102
|
+
Sidebar End Header
|
|
103
|
+
</PHeading>
|
|
104
|
+
|
|
105
|
+
<div slot="sidebar-end">
|
|
106
|
+
<PText>Sidebar End</PText>
|
|
107
|
+
</div>
|
|
108
|
+
</PCanvas>
|
|
109
|
+
</>
|
|
110
|
+
);
|
|
111
|
+
};
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# p-canvas
|
|
2
|
+
|
|
3
|
+
> **Experimental:** This component is experimental — its API may change in any release. Avoid relying on it in production.
|
|
4
|
+
|
|
5
|
+
The `p-canvas` is an experimental layout component for productive web applications.
|
|
6
|
+
|
|
7
|
+
The canvas component provides a CSS utility class which comes with a basic 12 columns [CSS grid](https://css-tricks.com/snippets/css/complete-guide-grid) and [CSS container-type](https://css-tricks.com/css-container-queries). The utility class can be used in default or footer slot to align its content.
|
|
8
|
+
|
|
9
|
+
```scss
|
|
10
|
+
.-p-canvas-grid // experimental, might be removed in a future release
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
> **Porsche Grid compatibility**
|
|
14
|
+
>
|
|
15
|
+
> The standard Porsche Grid currently supports only top-level layouts that span the full viewport width. Do not use it inside the `p-canvas` default or footer slots because their available width can be reduced by open sidebars. Use `.-p-canvas-grid` instead.
|
|
16
|
+
|
|
17
|
+
The canvas component has some values which can be overwritten by **CSS Variables**.
|
|
18
|
+
|
|
19
|
+
```scss
|
|
20
|
+
--p-canvas-sidebar-start-width: 220px;
|
|
21
|
+
--p-canvas-sidebar-end-width: 180px;
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Usage
|
|
25
|
+
|
|
26
|
+
The following section provides guidance for designers and developers on how to use the p-canvas layout component in different application contexts.
|
|
27
|
+
|
|
28
|
+
### Do:
|
|
29
|
+
|
|
30
|
+
- Use p-canvas to structure complex application layouts with sidebars, headers, and footers in a consistent, responsive manner.
|
|
31
|
+
- Use named slots (sidebar-start, sidebar-end, header-start, footer, etc.) to separate concerns and improve maintainability.
|
|
32
|
+
- Use the -p-canvas-grid utility class to create a 12-column layout inside the canvas content or footer areas.
|
|
33
|
+
- Combine p-canvas with CSS Grid column helpers (e.g. grid-column: span 4) to align content efficiently.
|
|
34
|
+
- Use the sidebarStartOpen and sidebarEndOpen bindings to dynamically control sidebar behavior based on viewport size or user actions.
|
|
35
|
+
- Customize layout widths via CSS variables like --p-canvas-sidebar-start-width and --p-canvas-sidebar-end-width to match your design needs.
|
|
36
|
+
- Use slot="background" for decorative media like images or videos that sit below the main content, enhancing visual appeal.
|
|
37
|
+
- Consider keyboard and focus management when using dynamic flyouts or sidebars, especially on mobile.
|
|
38
|
+
|
|
39
|
+
### Don’t:
|
|
40
|
+
|
|
41
|
+
- Don’t use p-canvas for simple or static content pages where a standard layout is sufficient.
|
|
42
|
+
- Don’t place critical content only inside sidebars or sticky areas without providing access via the main layout.
|
|
43
|
+
- Don’t rely solely on custom styling; instead, use provided slots and layout classes to maintain consistency.
|
|
44
|
+
- Don’t nest p-canvas within another p-canvas; this may lead to unpredictable layout behavior.
|
|
45
|
+
- Don’t overload the p-canvas with too many sticky elements that compete for screen space, especially on smaller viewports.
|
|
46
|
+
- Don’t use -p-canvas-grid outside of canvas slots—it is experimental and might be removed in future releases.
|
|
47
|
+
- Don’t override CSS variables globally without scoping, as this can break other usages in your application.
|
|
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
|
+
| `background` | `'canvas'` `'surface'` | `'canvas'` | Sets the background color of the main content area and automatically applies a matching color to the sidebar. |
|
|
60
|
+
| `sidebarEndOpen` | `boolean` | `false` | Controls whether the utility sidebar on the end side (right in LTR) is open or collapsed. |
|
|
61
|
+
| `sidebarStartOpen` | `boolean` | `false` | Controls whether the navigation sidebar on the start side (left in LTR) is open or collapsed. |
|
|
62
|
+
|
|
63
|
+
### Events
|
|
64
|
+
|
|
65
|
+
| Event | Type | Description |
|
|
66
|
+
| --- | --- | --- |
|
|
67
|
+
| `sidebarEndDismiss` | `CustomEvent<void>` | Emitted when the user dismisses the end sidebar via the close button. |
|
|
68
|
+
| `sidebarStartUpdate` | `CustomEvent<CanvasSidebarStartUpdateEventDetail>`<br>`{ open: boolean }` | Emitted when the user toggles the start sidebar, with the new open state in the event detail. |
|
|
69
|
+
|
|
70
|
+
### Slots
|
|
71
|
+
|
|
72
|
+
| Slot | Required | Allowed tag names | Description |
|
|
73
|
+
| --- | --- | --- | --- |
|
|
74
|
+
| `title` | no | — | Renders the application name in the header section of the sidebar start area. |
|
|
75
|
+
| `header-start` | no | — | Renders a **sticky** header section above the content area on the **start** side (**left** in **LTR** mode / **right** in **RTL** mode). |
|
|
76
|
+
| `header-end` | no | — | Renders a **sticky** header section above the content area on the **end** side (**right** in **LTR** mode / **left** in **RTL** mode). |
|
|
77
|
+
| _(default)_ | no | — | Default slot for the main content. |
|
|
78
|
+
| `footer` | no | — | Renders a **sticky** footer section underneath the main content. |
|
|
79
|
+
| `sidebar-start` | no | — | Renders a sidebar area on the **start** side (**left** in **LTR** mode / **right** in **RTL** mode). On mobile view it transforms into a flyout. |
|
|
80
|
+
| `sidebar-end` | no | — | Renders a sidebar area on the **end** side (**right** in **LTR** mode / **left** in **RTL** mode). On mobile view it transforms into a flyout. |
|
|
81
|
+
| `sidebar-end-header` | no | — | Renders in the header section of the sidebar end area. |
|
|
82
|
+
| `background` | no | — | Can be used to pass a sticky media element <img/> or <video/> placed underneath the main content. |
|
|
83
|
+
|
|
84
|
+
### CSS Variables
|
|
85
|
+
|
|
86
|
+
| CSS Variable | Default | Description |
|
|
87
|
+
| --- | --- | --- |
|
|
88
|
+
| `--p-canvas-sidebar-start-width` | `320px` | Width of the sidebar start. |
|
|
89
|
+
| `--p-canvas-sidebar-end-width` | `320px` | Width of the sidebar end. |
|
|
90
|
+
|
|
91
|
+
## Examples
|
|
92
|
+
|
|
93
|
+
| Example | When to use | File |
|
|
94
|
+
| --- | --- | --- |
|
|
95
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# p-carousel accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### ARIA on component host vs aria prop
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PCarousel aria-label="Slider">
|
|
11
|
+
{/* slides */}
|
|
12
|
+
</PCarousel>
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
#### ✅ Recommended
|
|
16
|
+
|
|
17
|
+
```tsx
|
|
18
|
+
<PCarousel aria={{'aria-label': 'Featured Porsche models'}}>
|
|
19
|
+
{/* slides */}
|
|
20
|
+
</PCarousel>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### Carousel without skip path for keyboard users
|
|
24
|
+
|
|
25
|
+
#### ❌ Anti-pattern
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
<PCarousel>
|
|
29
|
+
{/* many slides (>6 items) */}
|
|
30
|
+
</PCarousel>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
#### ✅ Recommended
|
|
34
|
+
|
|
35
|
+
```tsx
|
|
36
|
+
<PCarousel skipLinkTarget="#after-carousel" aria={{'aria-label': 'Highlights'}}>
|
|
37
|
+
{/* many slides (>6 items) */}
|
|
38
|
+
</PCarousel>
|
|
39
|
+
|
|
40
|
+
<PHeading tag="h2" id="after-carousel">
|
|
41
|
+
Next section
|
|
42
|
+
</PHeading>
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Vague carousel label
|
|
46
|
+
|
|
47
|
+
#### ❌ Anti-pattern
|
|
48
|
+
|
|
49
|
+
```tsx
|
|
50
|
+
<PCarousel aria={{'aria-label': 'Slider'}}>
|
|
51
|
+
{/* slides */}
|
|
52
|
+
</PCarousel>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### ✅ Recommended
|
|
56
|
+
|
|
57
|
+
```tsx
|
|
58
|
+
<PCarousel aria={{'aria-label': 'Featured Porsche models'}}>
|
|
59
|
+
{/* slides */}
|
|
60
|
+
</PCarousel>
|
|
61
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PCarousel } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PCarousel heading="Some heading" trimSpace={true} pagination={true} rewind={true}>
|
|
8
|
+
<div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
|
|
9
|
+
Slide 1
|
|
10
|
+
</div>
|
|
11
|
+
<div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
|
|
12
|
+
Slide 2
|
|
13
|
+
</div>
|
|
14
|
+
<div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
|
|
15
|
+
Slide 3
|
|
16
|
+
</div>
|
|
17
|
+
<div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
|
|
18
|
+
Slide 4
|
|
19
|
+
</div>
|
|
20
|
+
</PCarousel>
|
|
21
|
+
</>
|
|
22
|
+
)
|
|
23
|
+
}
|
package/skills/pds-knowledge-react/references/components/p-carousel/examples/DynamicSlides.tsx
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PButton, PCarousel } from '@porsche-design-system/components-react';
|
|
3
|
+
import { useCallback, useState } from 'react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const [amountOfSlides, setAmountOfSlides] = useState(3);
|
|
7
|
+
const onAddClick = useCallback(() => setAmountOfSlides((prev) => prev + 1), []);
|
|
8
|
+
const onRemoveClick = useCallback(() => setAmountOfSlides((prev) => (prev === 0 ? 0 : prev - 1)), []);
|
|
9
|
+
|
|
10
|
+
const slideStyle = {
|
|
11
|
+
display: 'flex',
|
|
12
|
+
alignItems: 'center',
|
|
13
|
+
justifyContent: 'center',
|
|
14
|
+
background: '#00b0f4',
|
|
15
|
+
height: '150px',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<>
|
|
20
|
+
<PCarousel slidesPerPage={2} heading="Some Heading">
|
|
21
|
+
{Array.from(Array(amountOfSlides)).map((_, i) => (
|
|
22
|
+
<div style={slideStyle} key={i} children={`Slide ${i + 1}`} />
|
|
23
|
+
))}
|
|
24
|
+
</PCarousel>
|
|
25
|
+
|
|
26
|
+
<div className="flex gap-fluid-sm mt-fluid-sm">
|
|
27
|
+
<PButton type="button" onClick={onAddClick} children="Add slide" />
|
|
28
|
+
<PButton type="button" onClick={onRemoveClick} children="Remove last slide" />
|
|
29
|
+
</div>
|
|
30
|
+
</>
|
|
31
|
+
);
|
|
32
|
+
};
|
package/skills/pds-knowledge-react/references/components/p-carousel/examples/FlexibleWidths.tsx
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PCarousel } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PCarousel heading="Some heading" slidesPerPage="auto" trimSpace={true} pagination={true} rewind={true}>
|
|
8
|
+
<div className="grid place-content-center w-[10vw] h-[150px] bg-surface prose-text-sm">
|
|
9
|
+
10vw
|
|
10
|
+
</div>
|
|
11
|
+
<div className="grid place-content-center w-[200px] h-[150px] bg-surface prose-text-sm">
|
|
12
|
+
200px
|
|
13
|
+
</div>
|
|
14
|
+
<div className="grid place-content-center w-[100px] h-[150px] bg-surface prose-text-sm">
|
|
15
|
+
100px
|
|
16
|
+
</div>
|
|
17
|
+
<div className="grid place-content-center w-[40vw] h-[150px] bg-surface prose-text-sm">
|
|
18
|
+
40vw
|
|
19
|
+
</div>
|
|
20
|
+
<div className="grid place-content-center w-[150px] h-[150px] bg-surface prose-text-sm">
|
|
21
|
+
150px
|
|
22
|
+
</div>
|
|
23
|
+
<div className="grid place-content-center w-[50vw] h-[150px] bg-surface prose-text-sm">
|
|
24
|
+
50vw
|
|
25
|
+
</div>
|
|
26
|
+
</PCarousel>
|
|
27
|
+
</>
|
|
28
|
+
)
|
|
29
|
+
}
|