@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
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PText } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PText tag="blockquote">
|
|
8
|
+
The quick brown fox jumps over the lazy dog
|
|
9
|
+
</PText>
|
|
10
|
+
|
|
11
|
+
<PText>
|
|
12
|
+
<blockquote>
|
|
13
|
+
The quick brown fox jumps over the lazy dog
|
|
14
|
+
</blockquote>
|
|
15
|
+
</PText>
|
|
16
|
+
</>
|
|
17
|
+
)
|
|
18
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PText } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PText className="text-[3rem]" size="inherit">
|
|
8
|
+
The quick brown fox jumps over the lazy dog
|
|
9
|
+
</PText>
|
|
10
|
+
</>
|
|
11
|
+
)
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PText } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PText size={{'base': 'sm', 'l': '2xl'}}>
|
|
8
|
+
The quick brown fox jumps over the lazy dog
|
|
9
|
+
</PText>
|
|
10
|
+
</>
|
|
11
|
+
)
|
|
12
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# p-text
|
|
2
|
+
|
|
3
|
+
`p-text` is used to specify paragraph styling in documents.
|
|
4
|
+
|
|
5
|
+
> **Recommendation**
|
|
6
|
+
>
|
|
7
|
+
> Although the component is very sophisticated, it's recommended (if possible) to use the corresponding utility classes of the "@porsche-design-system/components-{js | angular | react | vue}/tailwindcss" sub-package or any of the other styling solutions for best performance since way less DOM nodes are required to render. Further information can be found [here](../../styles/tailwindcss.md).
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
p-text is used to specify paragraph styling
|
|
12
|
+
|
|
13
|
+
### Do:
|
|
14
|
+
|
|
15
|
+
- Use p-text for all running body copy, descriptions, and supporting text.
|
|
16
|
+
- Default to text-small for standard paragraphs; scale up for intros or short content blocks.
|
|
17
|
+
- Use text-xx-small for legal disclaimers or metadata.
|
|
18
|
+
- Maintain spacing and alignment using the fluid grid and responsive typography.
|
|
19
|
+
- Always use the predefined text styles to ensure readability and scalability.
|
|
20
|
+
|
|
21
|
+
### Don't:
|
|
22
|
+
|
|
23
|
+
- Don’t use p-text styles for section titles or visual emphasis—use p-heading or p-display.
|
|
24
|
+
- Don’t apply unapproved font sizes, weights, or custom spacing.
|
|
25
|
+
|
|
26
|
+
## Accessibility support
|
|
27
|
+
|
|
28
|
+
This component does not include any special accessibility features.
|
|
29
|
+
|
|
30
|
+
## Development considerations
|
|
31
|
+
|
|
32
|
+
### Semantic markup
|
|
33
|
+
|
|
34
|
+
Use the `tag` prop to choose the correct HTML element. Do not pick heading tags only for visual styling.
|
|
35
|
+
|
|
36
|
+
### Common do's and don'ts
|
|
37
|
+
|
|
38
|
+
- **Do** evaluate correct semantic meaning, e.g. use `tag="p"` for regular paragraphs.
|
|
39
|
+
- **Don't** nest text components.
|
|
40
|
+
|
|
41
|
+
## Integration examples
|
|
42
|
+
|
|
43
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
44
|
+
|
|
45
|
+
## API
|
|
46
|
+
|
|
47
|
+
### Properties
|
|
48
|
+
|
|
49
|
+
| Property | Type | Default | Description |
|
|
50
|
+
| --- | --- | --- | --- |
|
|
51
|
+
| `align` | `'start'` `'center'` `'end'` `'inherit'` | `'start'` | Text alignment of the text. Use 'start' for left-aligned text (in LTR), 'center' for centered, 'end' for right-aligned (in LTR), or 'inherit' to adopt the parent's alignment. |
|
|
52
|
+
| `color` | `'primary'` `'contrast-higher'` `'contrast-high'` `'contrast-medium'` `'success'` `'warning'` `'error'` `'info'` `'inherit'` | `'primary'` | Text color of the text. Use 'primary' for default, 'contrast-higher' / 'contrast-high' / 'contrast-medium' for alternative emphasis levels, 'success' / 'warning' / 'error' / 'info' for status messages, or 'inherit' to adopt the parent's color. |
|
|
53
|
+
| `ellipsis` | `boolean` | `false` | Adds an ellipsis to a single line of text if it overflows the container width. When enabled, the text is truncated to a single line with `text-overflow: ellipsis`. Cannot be combined with multi-line content. |
|
|
54
|
+
| `hyphens` | `'none'` `'manual'` `'auto'` `'inherit'` | `'inherit'` | Controls the hyphenation behavior of the text. Use 'auto' to let the browser automatically hyphenate words at appropriate points, 'manual' to only hyphenate at manually inserted hyphenation points (e.g. `­`), 'none' to disable hyphenation entirely, or 'inherit' to adopt the parent's hyphenation setting. |
|
|
55
|
+
| `size` | `'2xs'` `'xs'` `'sm'` `'md'` `'lg'` `'xl'` `'2xl'` `'3xl'` `'4xl'` `'5xl'` `'inherit'`<br>_deprecated:_ `'xx-small'` `'x-small'` `'small'` `'medium'` `'large'` `'x-large'`<br>`BreakpointCustomizable<TextSize>` | `'sm'` | Size of the text. Also defines the size for specific breakpoints, like {base: "sm", l: "md"}. You always need to provide a base value when doing this. Use 'inherit' to adopt the parent's font size. |
|
|
56
|
+
| `tag` | `'p'` `'span'` `'div'` `'address'` `'blockquote'` `'figcaption'` `'cite'` `'time'` `'legend'` | `'p'` | Sets the HTML tag of the rendered element to ensure correct semantic meaning (e.g. 'p' for paragraphs, 'blockquote' for quotes, 'time' for dates). |
|
|
57
|
+
| `weight` | `'normal'` `'semibold'` `'bold'`<br>_deprecated:_ `'regular'` `'semi-bold'` | `'normal'` | The font weight of the text. Use 'normal' for regular body text, 'semibold' for slightly emphasized text, or 'bold' for strong emphasis. |
|
|
58
|
+
|
|
59
|
+
### Slots
|
|
60
|
+
|
|
61
|
+
| Slot | Required | Allowed tag names | Description |
|
|
62
|
+
| --- | --- | --- | --- |
|
|
63
|
+
| _(default)_ | no | — | Default slot for the text to render. |
|
|
64
|
+
|
|
65
|
+
## Examples
|
|
66
|
+
|
|
67
|
+
| Example | When to use | File |
|
|
68
|
+
| --- | --- | --- |
|
|
69
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
70
|
+
| Static Size | There are predefined fluid text sizes for the text component which should cover most use cases. | [./examples/Size.tsx](./examples/Size.tsx) |
|
|
71
|
+
| Responsive Size | The `size` property accepts a breakpoint object to render different text sizes per viewport. | [./examples/SizeResponsive.tsx](./examples/SizeResponsive.tsx) |
|
|
72
|
+
| Semantics | To provide more contextual HTML semantics you can either pass them with the `tag` property or directly inside a slot. | [./examples/Semantics.tsx](./examples/Semantics.tsx) |
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# p-text-list accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### Numbered list for non-sequential items
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PTextList type="numbered">
|
|
11
|
+
<PTextListItem>
|
|
12
|
+
Sport Chrono Package
|
|
13
|
+
</PTextListItem>
|
|
14
|
+
<PTextListItem>
|
|
15
|
+
BOSE Surround Sound
|
|
16
|
+
</PTextListItem>
|
|
17
|
+
</PTextList>
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
#### ✅ Recommended
|
|
21
|
+
|
|
22
|
+
```tsx
|
|
23
|
+
<PTextList type="unordered">
|
|
24
|
+
<PTextListItem>
|
|
25
|
+
Sport Chrono Package
|
|
26
|
+
</PTextListItem>
|
|
27
|
+
<PTextListItem>
|
|
28
|
+
BOSE Surround Sound
|
|
29
|
+
</PTextListItem>
|
|
30
|
+
</PTextList>
|
|
31
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PTextList, PTextListItem } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PTextList>
|
|
8
|
+
<PTextListItem>
|
|
9
|
+
The quick brown fox jumps over the lazy dog
|
|
10
|
+
</PTextListItem>
|
|
11
|
+
<PTextListItem>
|
|
12
|
+
The quick brown fox jumps over the lazy dog
|
|
13
|
+
<PTextList>
|
|
14
|
+
<PTextListItem>
|
|
15
|
+
The quick brown fox jumps over the lazy dog
|
|
16
|
+
</PTextListItem>
|
|
17
|
+
<PTextListItem>
|
|
18
|
+
The quick brown fox jumps over the lazy dog
|
|
19
|
+
</PTextListItem>
|
|
20
|
+
</PTextList>
|
|
21
|
+
</PTextListItem>
|
|
22
|
+
<PTextListItem>
|
|
23
|
+
The quick brown fox jumps over the lazy dog
|
|
24
|
+
</PTextListItem>
|
|
25
|
+
</PTextList>
|
|
26
|
+
</>
|
|
27
|
+
)
|
|
28
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# p-text-list
|
|
2
|
+
|
|
3
|
+
The `p-text-list` component is used to display listed data in form of an unordered or ordered list. A list depends on two parts (like any native HTML list): A list wrapper which defines the type of the list (unordered or ordered) and the list items. Nesting is also provided and follows the same nesting rules like native HTML lists. For more complex data you should consider the use of a data table.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
### Do:
|
|
8
|
+
|
|
9
|
+
- Use to display short pieces of information in the form of an unordered or ordered list.
|
|
10
|
+
- Use an Unordered List to display content with equal value and an Ordered List for sequenced content.
|
|
11
|
+
- Arrange list items in a logical way such as from highest to the lowest level. If necessary split the content into smaller and more specific categories and group them.
|
|
12
|
+
- Stick to a homogeneous writing structure and style within one list.
|
|
13
|
+
- Use sentence-style capitalization for each list item capitalizing only the first letter.
|
|
14
|
+
|
|
15
|
+
### Don't:
|
|
16
|
+
|
|
17
|
+
- Don't exceed two hierarchy levels in Text Lists.
|
|
18
|
+
- Don't mix active with passive voice or declarative with imperative sentences within one list.
|
|
19
|
+
|
|
20
|
+
## Accessibility support
|
|
21
|
+
|
|
22
|
+
This component does not include any special accessibility features.
|
|
23
|
+
|
|
24
|
+
## Development considerations
|
|
25
|
+
|
|
26
|
+
### List semantics
|
|
27
|
+
|
|
28
|
+
Choose the list `type` based on whether item order matters to understanding the content.
|
|
29
|
+
|
|
30
|
+
### Common do's and don'ts
|
|
31
|
+
|
|
32
|
+
- **Do** use `type="unordered"` for related items without required sequence.
|
|
33
|
+
- **Do** use `type="numbered"` or `type="alphabetically"` when step order or ranking matters.
|
|
34
|
+
- **Don't** use a numbered list for items that are not sequential.
|
|
35
|
+
|
|
36
|
+
## Integration examples
|
|
37
|
+
|
|
38
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
39
|
+
|
|
40
|
+
## API
|
|
41
|
+
|
|
42
|
+
### Properties
|
|
43
|
+
|
|
44
|
+
| Property | Type | Default | Description |
|
|
45
|
+
| --- | --- | --- | --- |
|
|
46
|
+
| `type` | `'unordered'` `'numbered'` `'alphabetically'` | `'unordered'` | Sets the list type to either `unordered` (bulleted) or `ordered` (numbered), controlling the rendered HTML element (`ul` vs `ol`). |
|
|
47
|
+
|
|
48
|
+
### Slots
|
|
49
|
+
|
|
50
|
+
| Slot | Required | Allowed tag names | Description |
|
|
51
|
+
| --- | --- | --- | --- |
|
|
52
|
+
| _(default)_ | no | — | Default slot for the `p-text-list-item` tags or nested `p-text-list` tags. |
|
|
53
|
+
|
|
54
|
+
## Sub-components
|
|
55
|
+
|
|
56
|
+
These tags are only valid inside the parent(s) listed under each one — often this component, but some are shared and list a different parent (e.g. a tag documented here via a common ancestor). Their APIs come from the same authoritative `component-meta` as the parent above.
|
|
57
|
+
|
|
58
|
+
### `p-text-list-item`
|
|
59
|
+
|
|
60
|
+
Allowed parent: `p-text-list`.
|
|
61
|
+
|
|
62
|
+
#### Slots
|
|
63
|
+
|
|
64
|
+
| Slot | Required | Allowed tag names | Description |
|
|
65
|
+
| --- | --- | --- | --- |
|
|
66
|
+
| _(default)_ | no | — | Default slot for the content. |
|
|
67
|
+
|
|
68
|
+
## Examples
|
|
69
|
+
|
|
70
|
+
| Example | When to use | File |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# p-textarea accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### Placeholder-only instructions for open text input
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PTextarea name="feedback" placeholder="Tell us what you think"></PTextarea>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
#### ✅ Recommended
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<PTextarea name="feedback" label="Your feedback" description="Describe what worked well and what we should improve (min. 20 characters)."></PTextarea>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Hidden label without accessible name
|
|
20
|
+
|
|
21
|
+
#### ❌ Anti-pattern
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<PTextarea name="feedback" hideLabel={true}></PTextarea>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
#### ✅ Recommended
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<PTextarea name="feedback" hideLabel={true} label="Your feedback"></PTextarea>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Validation feedback via state and message API
|
|
34
|
+
|
|
35
|
+
#### ❌ Anti-pattern
|
|
36
|
+
|
|
37
|
+
```tsx
|
|
38
|
+
<PTextarea name="feedback" label="Your feedback" aria-invalid={true} message="Too short"></PTextarea>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
#### ✅ Recommended
|
|
42
|
+
|
|
43
|
+
```tsx
|
|
44
|
+
<PTextarea name="feedback" label="Your feedback" state="error" message="Enter at least 20 characters so we can understand your feedback."></PTextarea>
|
|
45
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
PButton,
|
|
4
|
+
PText,
|
|
5
|
+
PTextarea,
|
|
6
|
+
type PTextareaProps,
|
|
7
|
+
type TextareaInputEventDetail,
|
|
8
|
+
} from '@porsche-design-system/components-react';
|
|
9
|
+
import { FormEvent, useState } from 'react';
|
|
10
|
+
|
|
11
|
+
export const Example = () => {
|
|
12
|
+
const [form, setForm] = useState({ myTextarea: '' });
|
|
13
|
+
const [lastSubmittedData, setLastSubmittedData] = useState<any>();
|
|
14
|
+
|
|
15
|
+
const onInput = (e: CustomEvent<TextareaInputEventDetail>) => {
|
|
16
|
+
const { name, value } = e.target as HTMLElement & PTextareaProps;
|
|
17
|
+
setForm((prev) => ({
|
|
18
|
+
...prev,
|
|
19
|
+
[name]: value,
|
|
20
|
+
}));
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
const onSubmit = (e: FormEvent<HTMLFormElement>) => {
|
|
24
|
+
e.preventDefault();
|
|
25
|
+
setLastSubmittedData(JSON.stringify(form));
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
const onReset = (e: FormEvent<HTMLFormElement>) => {
|
|
29
|
+
e.preventDefault();
|
|
30
|
+
setForm({ myTextarea: '' });
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
return (
|
|
34
|
+
<>
|
|
35
|
+
<form onSubmit={onSubmit} onReset={onReset} className="flex flex-col gap-fluid-sm">
|
|
36
|
+
<PTextarea name="myTextarea" label="Some Label" value={form.myTextarea} onInput={onInput} />
|
|
37
|
+
<div className="flex gap-fluid-sm">
|
|
38
|
+
<PButton type="submit">Submit</PButton>
|
|
39
|
+
<PButton type="reset">Reset</PButton>
|
|
40
|
+
</div>
|
|
41
|
+
<PText>Last submitted data: {lastSubmittedData}</PText>
|
|
42
|
+
</form>
|
|
43
|
+
</>
|
|
44
|
+
);
|
|
45
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PPopover, PTextarea } from '@porsche-design-system/components-react';
|
|
3
|
+
|
|
4
|
+
export const Example = () => {
|
|
5
|
+
return (
|
|
6
|
+
<>
|
|
7
|
+
<PTextarea name="some-name" state="error">
|
|
8
|
+
<span slot="label" id="some-label-id">
|
|
9
|
+
Some label with a
|
|
10
|
+
<a href="https://designsystem.porsche.com" className="underline">
|
|
11
|
+
link
|
|
12
|
+
</a>
|
|
13
|
+
and a "label-after" slot.
|
|
14
|
+
</span>
|
|
15
|
+
<PPopover slot="label-after">
|
|
16
|
+
Some Popover content with a
|
|
17
|
+
<a href="https://designsystem.porsche.com" className="underline">
|
|
18
|
+
link
|
|
19
|
+
</a>
|
|
20
|
+
.
|
|
21
|
+
</PPopover>
|
|
22
|
+
<span slot="description" id="some-description-id">
|
|
23
|
+
Some description with a
|
|
24
|
+
<a href="https://designsystem.porsche.com" className="underline">
|
|
25
|
+
link
|
|
26
|
+
</a>
|
|
27
|
+
.
|
|
28
|
+
</span>
|
|
29
|
+
<span slot="message" id="some-message-id">
|
|
30
|
+
Some error message with a
|
|
31
|
+
<a href="https://designsystem.porsche.com" className="underline">
|
|
32
|
+
link
|
|
33
|
+
</a>
|
|
34
|
+
.
|
|
35
|
+
</span>
|
|
36
|
+
</PTextarea>
|
|
37
|
+
</>
|
|
38
|
+
)
|
|
39
|
+
}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# p-textarea
|
|
2
|
+
|
|
3
|
+
The `p-textarea` component is a multi-line text input control. Don't use a Textarea component if you want to allow users to enter shorter responses that are no longer than a single line, such as a phone number or name. In this case, you should use one of the input components.
|
|
4
|
+
|
|
5
|
+
A `label` is a caption which informs the user what information a particular form field is asking for. The `p-textarea` component can be used with or without a label, but it's recommended to keep the label visible for better accessibility whenever possible. When used without a label, it's mandatory to provide a descriptive label text for screen readers.
|
|
6
|
+
|
|
7
|
+
While a `placeholder` is optional but recommended to be set whenever bits of example content or hints shall be shown to give the user visual cues to fill out the form.
|
|
8
|
+
|
|
9
|
+
Instead of relying on slotted content, the `p-textarea` component offers a `value` attribute and property that remain synchronized with user input.
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
### Do:
|
|
14
|
+
|
|
15
|
+
- Use in forms when users need to enter and edit an amount of text that’s longer than a single line.
|
|
16
|
+
- Keep the label text short and descriptive (one or two words).
|
|
17
|
+
- Place validation text right below the Textarea box.
|
|
18
|
+
- Respect the min-height.
|
|
19
|
+
- Mark required fields with a red asterisk to improve the usability of forms.
|
|
20
|
+
- Use the Pure variant (without label) only if the context clearly describes the purpose.
|
|
21
|
+
|
|
22
|
+
### Don't:
|
|
23
|
+
|
|
24
|
+
- Don't use when text entry is expected to be short. Use an input instead to avoid confusing users.
|
|
25
|
+
- Don't overwhelm users with too many Textareas on a single page. Stick to no more than two Textareas.
|
|
26
|
+
|
|
27
|
+
## Accessibility support
|
|
28
|
+
|
|
29
|
+
### Keyboard
|
|
30
|
+
|
|
31
|
+
| Key / state | Function |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element. |
|
|
34
|
+
|
|
35
|
+
### ARIA enhancements
|
|
36
|
+
|
|
37
|
+
#### Internal **ARIA** that is managed by the component:
|
|
38
|
+
|
|
39
|
+
| ARIA | Usage |
|
|
40
|
+
| --- | --- |
|
|
41
|
+
| `aria-describedby="IDREF"` | Defines the accessible description combined with the status message. |
|
|
42
|
+
| `role="status"`, `role="alert"` | When `message` and `state` or `loading` prop change, the status message is announced. |
|
|
43
|
+
| `aria-hidden="true"` | If `required` attribute is set, the visible asterisk indicator is hidden from assistive technologies. |
|
|
44
|
+
| `aria-invalid="true"` | If `error` state is set. |
|
|
45
|
+
| `aria-live="polite"` | If the `maxlength` attribute is present, the counter is announced via ARIA live region. |
|
|
46
|
+
|
|
47
|
+
## Development considerations
|
|
48
|
+
|
|
49
|
+
### Disabled state
|
|
50
|
+
|
|
51
|
+
In general, avoid using the `disabled` state. Disabled elements are no longer focusable and may be missed by screen reader users. They can also confuse sighted users if the reason they are disabled is not made clear.
|
|
52
|
+
|
|
53
|
+
### Common do's and don'ts
|
|
54
|
+
|
|
55
|
+
- **Do** provide a descriptive label, especially for open text questions.
|
|
56
|
+
- **Do** use helper text to describe expected format, length, or sensitive content rules.
|
|
57
|
+
- **Do** surface validation with state/message so screen readers get updates.
|
|
58
|
+
- **Don't** use placeholder-only instructions.
|
|
59
|
+
- **Don't** use `hide-label` without an accessible name.
|
|
60
|
+
|
|
61
|
+
## Integration examples
|
|
62
|
+
|
|
63
|
+
See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
|
|
64
|
+
|
|
65
|
+
## API
|
|
66
|
+
|
|
67
|
+
### Properties
|
|
68
|
+
|
|
69
|
+
| Property | Type | Default | Description |
|
|
70
|
+
| --- | --- | --- | --- |
|
|
71
|
+
| `autoComplete` | `string` | `undefined` | Provides the browser with a hint to enable text autofill suggestions for the textarea (e.g. `autocomplete='on'`). |
|
|
72
|
+
| `compact` | `boolean` | `false` | Reduces the textarea's initial height and padding for use in dense layouts where vertical space is limited. |
|
|
73
|
+
| `counter` | `boolean` | `false` | Shows a live character counter below the textarea indicating how many characters the user has typed relative to `maxLength`. |
|
|
74
|
+
| `description` | `string` | `''` | Sets a supplementary description displayed below the label to give users additional guidance about the textarea. |
|
|
75
|
+
| `disabled` | `boolean` | `false` | Prevents user interaction with the textarea and excludes its value from form submissions. |
|
|
76
|
+
| `form` | `string` | `undefined` | Associates the textarea with a form element by its ID when the textarea is not a direct descendant of that form. |
|
|
77
|
+
| `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
|
|
78
|
+
| `label` | `string` | `''` | Sets the visible label text displayed above the textarea to identify its purpose. |
|
|
79
|
+
| `maxLength` | `number` | `undefined` | Sets the maximum number of characters the user is allowed to enter into the textarea. |
|
|
80
|
+
| `message` | `string` | `''` | Sets the validation feedback message displayed below the textarea when `state` is `success` or `error`. |
|
|
81
|
+
| `minLength` | `number` | `undefined` | Sets the minimum number of characters required for the textarea's value to pass constraint validation. |
|
|
82
|
+
| `name` _(required)_ | `string` | `undefined` | Sets the name of the textarea submitted with the form data to identify this field's value on the server. |
|
|
83
|
+
| `placeholder` | `string` | `''` | Sets placeholder text displayed inside the textarea when it is empty to hint at the expected content format. |
|
|
84
|
+
| `readOnly` | `boolean` | `false` | Makes the textarea read-only so users cannot modify the value, while still including it in form submissions. |
|
|
85
|
+
| `required` | `boolean` | `false` | Marks the textarea as required so the form cannot be submitted while this field is empty. |
|
|
86
|
+
| `resize` | `'none'` `'both'` `'horizontal'` `'vertical'` `'block'` `'inline'` | `'vertical'` | Controls whether and in which direction the user can resize the textarea (`horizontal`, `vertical`, `both`, or `none`). |
|
|
87
|
+
| `rows` | `number` | `7` | Sets the initial visible height of the textarea in lines of text. Has no effect when the `--p-textarea-field-sizing` CSS variable is set to `content`. |
|
|
88
|
+
| `spellCheck` | `boolean` | `undefined` | Controls whether the browser's built-in spell-checking and grammar checking is enabled for the textarea content. |
|
|
89
|
+
| `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the textarea, which controls its visual appearance and feedback message style (`none`, `success`, `error`). |
|
|
90
|
+
| `value` | `string | null` | `''` | Sets the current multi-line text value of the textarea and reflects any changes made by the user. |
|
|
91
|
+
| `wrap` | `'hard'` `'soft'` `'off'` | `'soft'` | Controls how the submitted text wraps in the form data: `soft` wraps only visually, `hard` inserts line breaks at the textarea width. |
|
|
92
|
+
|
|
93
|
+
### Events
|
|
94
|
+
|
|
95
|
+
| Event | Type | Description |
|
|
96
|
+
| --- | --- | --- |
|
|
97
|
+
| `blur` | `CustomEvent<TextareaBlurEventDetail>`<br>`Event` | Emitted when the textarea element loses focus, regardless of whether the value changed. |
|
|
98
|
+
| `change` | `CustomEvent<TextareaChangeEventDetail>`<br>`Event` | Emitted when the textarea loses focus after its value was changed, equivalent to the native `change` event. |
|
|
99
|
+
| `input` | `CustomEvent<TextareaInputEventDetail>`<br>`InputEvent` | Emitted on every keystroke or value change as a direct result of user interaction, equivalent to the native `input` event. |
|
|
100
|
+
|
|
101
|
+
### Slots
|
|
102
|
+
|
|
103
|
+
| Slot | Required | Allowed tag names | Description |
|
|
104
|
+
| --- | --- | --- | --- |
|
|
105
|
+
| `label` | no | — | Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
|
|
106
|
+
| `label-after` | no | — | Places additional content after the label text (for content that should not be part of the label, e.g. external links or `p-popover`). |
|
|
107
|
+
| `description` | no | — | Shows a description. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
|
|
108
|
+
| `message` | no | — | Shows a state message. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
|
|
109
|
+
|
|
110
|
+
### CSS Variables
|
|
111
|
+
|
|
112
|
+
| CSS Variable | Default | Description |
|
|
113
|
+
| --- | --- | --- |
|
|
114
|
+
| `--p-textarea-field-sizing` | `unset` | Controls CSS `field-sizing` for textarea. |
|
|
115
|
+
| `--p-textarea-min-width` | `52px` | Minimum width of the textarea. |
|
|
116
|
+
| `--p-textarea-max-width` | `unset` | Maximum width of the textarea. |
|
|
117
|
+
| `--p-textarea-min-height` | `unset` | Minimum height of the textarea. |
|
|
118
|
+
| `--p-textarea-max-height` | `unset` | Maximum height of the textarea. |
|
|
119
|
+
|
|
120
|
+
## Examples
|
|
121
|
+
|
|
122
|
+
| Example | When to use | File |
|
|
123
|
+
| --- | --- | --- |
|
|
124
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
125
|
+
| Form | The `p-textarea` can be integrated into a form in two ways: **controlled** or **uncontrolled**, depending on your needs. | [./examples/Form.tsx](./examples/Form.tsx) |
|
|
126
|
+
| Slots | Use named slots when `label`, `description` or `message` need markup such as a link. | [./examples/Slots.tsx](./examples/Slots.tsx) |
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { PToast, useToastManager } from '@porsche-design-system/components-react';
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
|
|
5
|
+
export const Example = () => {
|
|
6
|
+
const { addMessage } = useToastManager();
|
|
7
|
+
const [counter, setCounter] = useState(1);
|
|
8
|
+
|
|
9
|
+
const onButtonClick = () => {
|
|
10
|
+
addMessage({ text: `Some message ${counter}`, state: 'success' });
|
|
11
|
+
setCounter((prev) => prev + 1);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
return (
|
|
15
|
+
<>
|
|
16
|
+
<button type="button" onClick={onButtonClick}>
|
|
17
|
+
Queue Toast
|
|
18
|
+
</button>
|
|
19
|
+
<PToast />
|
|
20
|
+
</>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# p-toast
|
|
2
|
+
|
|
3
|
+
The `p-toast` component manages both, the queue and display of toast messages. Therefore, you can only have a single instance of this component within your application. Its messages are rendered on the `#top-layer` which ensures the element to be on top of the page, independent of where `p-toast` is placed in the DOM hierarchy (z-index is not relevant anymore and won't have any effect).
|
|
4
|
+
|
|
5
|
+
Review the [notification decision tree](https://designsystem.porsche.com/patterns/notifications/decision-tree/) to determine which notification component is best for a particular scenario.
|
|
6
|
+
|
|
7
|
+
Queuing messages on `p-toast` component happens via its `addMessage()` method. For Angular users, we offer the injectable `ToastManager` service; for React and Vue, there is the `useToastManager()` hook (a composable in Vue). All expose the `addMessage()` method, which needs to be called with a parameter that has the following structure:
|
|
8
|
+
|
|
9
|
+
```ts
|
|
10
|
+
type ToastMessage = {
|
|
11
|
+
text: string;
|
|
12
|
+
state?: 'info' | 'success' | 'warning' | 'error';
|
|
13
|
+
};
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The bottom position of the `p-toast` can be adjusted via the `--p-toast-position-bottom` CSS variable.
|
|
17
|
+
|
|
18
|
+
For more information about the Usage of the `p-toast` checkout the [Notification](https://designsystem.porsche.com/patterns/notifications/introduction) page.
|
|
19
|
+
|
|
20
|
+
## Accessibility support
|
|
21
|
+
|
|
22
|
+
### Keyboard
|
|
23
|
+
|
|
24
|
+
| Key / state | Function |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| `Tab` | Moves focus to the close button of the `Toast` element. |
|
|
27
|
+
|
|
28
|
+
### ARIA enhancements
|
|
29
|
+
|
|
30
|
+
#### Internal **ARIA** that is managed by the component:
|
|
31
|
+
|
|
32
|
+
| ARIA | Usage |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| `role="status"` | When content is populated or changed in `state="info"`, the component announces it unobtrusively. |
|
|
35
|
+
| `aria-hidden="true"` | State `icon` is hidden from the screen reader. |
|
|
36
|
+
|
|
37
|
+
## Development considerations
|
|
38
|
+
|
|
39
|
+
### ARIA live announcements
|
|
40
|
+
|
|
41
|
+
The `Toast` component uses `role="status"` to announce **content changes** for assistive technologies. Therefore, it is **mandatory** that the component is **pre-rendered** and the content (`Toast Item`) is added dynamically.
|
|
42
|
+
|
|
43
|
+
### Common do's and don'ts
|
|
44
|
+
|
|
45
|
+
- **Do** pre-render `p-toast` and add `p-toast-item` elements dynamically.
|
|
46
|
+
- **Do** provide specific `text` that explains what happened and what to do next.
|
|
47
|
+
- **Don't** create the toast container only when a message should be announced.
|
|
48
|
+
|
|
49
|
+
## API
|
|
50
|
+
|
|
51
|
+
### CSS Variables
|
|
52
|
+
|
|
53
|
+
| CSS Variable | Default | Description |
|
|
54
|
+
| --- | --- | --- |
|
|
55
|
+
| `--p-toast-position-bottom` | `56px` | Defines the spacing between the toast and the bottom edge of its container. |
|
|
56
|
+
|
|
57
|
+
## Examples
|
|
58
|
+
|
|
59
|
+
| Example | When to use | File |
|
|
60
|
+
| --- | --- | --- |
|
|
61
|
+
| Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# p-wordmark accessibility integration examples
|
|
2
|
+
|
|
3
|
+
## Integration examples
|
|
4
|
+
|
|
5
|
+
### ARIA on component host vs aria prop
|
|
6
|
+
|
|
7
|
+
#### ❌ Anti-pattern
|
|
8
|
+
|
|
9
|
+
```tsx
|
|
10
|
+
<PWordmark href="/" aria-label="Porsche home"></PWordmark>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
#### ✅ Recommended
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
<PWordmark href="/" aria={{'aria-label': 'Porsche home'}}></PWordmark>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
### Linked wordmark without accessible name
|
|
20
|
+
|
|
21
|
+
#### ❌ Anti-pattern
|
|
22
|
+
|
|
23
|
+
```tsx
|
|
24
|
+
<PWordmark href="/"></PWordmark>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
#### ✅ Recommended
|
|
28
|
+
|
|
29
|
+
```tsx
|
|
30
|
+
<PWordmark href="/" aria={{'aria-label': 'Porsche home'}}></PWordmark>
|
|
31
|
+
```
|