@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.
Files changed (341) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/bin/pds-skill.js +346 -0
  3. package/esm/lib/components/button.wrapper.d.ts +2 -2
  4. package/esm/lib/components/link.wrapper.d.ts +2 -2
  5. package/package.json +4 -3
  6. package/skills/pds-knowledge-react/SKILL.md +136 -0
  7. package/skills/pds-knowledge-react/references/components/p-accordion/accessibility.md +63 -0
  8. package/skills/pds-knowledge-react/references/components/p-accordion/examples/Default.tsx +24 -0
  9. package/skills/pds-knowledge-react/references/components/p-accordion/examples/InteractiveElementsInSummary.tsx +28 -0
  10. package/skills/pds-knowledge-react/references/components/p-accordion/examples/StickySummary.tsx +24 -0
  11. package/skills/pds-knowledge-react/references/components/p-accordion/p-accordion.md +99 -0
  12. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/Default.tsx +10 -0
  13. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinCheckbox.tsx +30 -0
  14. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinFormLabel.tsx +37 -0
  15. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinImage.tsx +13 -0
  16. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinInputSearch.tsx +12 -0
  17. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinRadioGroup.tsx +29 -0
  18. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinTable.tsx +91 -0
  19. package/skills/pds-knowledge-react/references/components/p-ai-tag/examples/WithinText.tsx +14 -0
  20. package/skills/pds-knowledge-react/references/components/p-ai-tag/p-ai-tag.md +47 -0
  21. package/skills/pds-knowledge-react/references/components/p-banner/accessibility.md +37 -0
  22. package/skills/pds-knowledge-react/references/components/p-banner/examples/Customization.tsx +35 -0
  23. package/skills/pds-knowledge-react/references/components/p-banner/examples/Default.tsx +24 -0
  24. package/skills/pds-knowledge-react/references/components/p-banner/p-banner.md +96 -0
  25. package/skills/pds-knowledge-react/references/components/p-button/accessibility.md +61 -0
  26. package/skills/pds-knowledge-react/references/components/p-button/examples/Default.tsx +12 -0
  27. package/skills/pds-knowledge-react/references/components/p-button/examples/Form.tsx +28 -0
  28. package/skills/pds-knowledge-react/references/components/p-button/examples/FormAttribute.tsx +31 -0
  29. package/skills/pds-knowledge-react/references/components/p-button/p-button.md +122 -0
  30. package/skills/pds-knowledge-react/references/components/p-button-pure/accessibility.md +61 -0
  31. package/skills/pds-knowledge-react/references/components/p-button-pure/examples/CustomClickableArea.tsx +12 -0
  32. package/skills/pds-knowledge-react/references/components/p-button-pure/examples/Default.tsx +12 -0
  33. package/skills/pds-knowledge-react/references/components/p-button-pure/examples/Form.tsx +28 -0
  34. package/skills/pds-knowledge-react/references/components/p-button-pure/examples/FormAttribute.tsx +32 -0
  35. package/skills/pds-knowledge-react/references/components/p-button-pure/p-button-pure.md +122 -0
  36. package/skills/pds-knowledge-react/references/components/p-button-tile/accessibility.md +31 -0
  37. package/skills/pds-knowledge-react/references/components/p-button-tile/examples/ColorScheme.tsx +15 -0
  38. package/skills/pds-knowledge-react/references/components/p-button-tile/examples/Default.tsx +18 -0
  39. package/skills/pds-knowledge-react/references/components/p-button-tile/examples/FooterSlot.tsx +29 -0
  40. package/skills/pds-knowledge-react/references/components/p-button-tile/examples/Hyphens.tsx +33 -0
  41. package/skills/pds-knowledge-react/references/components/p-button-tile/examples/UiBehaviour.tsx +41 -0
  42. package/skills/pds-knowledge-react/references/components/p-button-tile/p-button-tile.md +119 -0
  43. package/skills/pds-knowledge-react/references/components/p-canvas/examples/Default.tsx +111 -0
  44. package/skills/pds-knowledge-react/references/components/p-canvas/p-canvas.md +95 -0
  45. package/skills/pds-knowledge-react/references/components/p-carousel/accessibility.md +61 -0
  46. package/skills/pds-knowledge-react/references/components/p-carousel/examples/Default.tsx +23 -0
  47. package/skills/pds-knowledge-react/references/components/p-carousel/examples/DynamicSlides.tsx +32 -0
  48. package/skills/pds-knowledge-react/references/components/p-carousel/examples/FlexibleWidths.tsx +29 -0
  49. package/skills/pds-knowledge-react/references/components/p-carousel/examples/FocusOnCenterSlide.tsx +56 -0
  50. package/skills/pds-knowledge-react/references/components/p-carousel/examples/Intl.tsx +20 -0
  51. package/skills/pds-knowledge-react/references/components/p-carousel/examples/JumpToSlide.tsx +42 -0
  52. package/skills/pds-knowledge-react/references/components/p-carousel/p-carousel.md +146 -0
  53. package/skills/pds-knowledge-react/references/components/p-checkbox/accessibility.md +31 -0
  54. package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Default.tsx +10 -0
  55. package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Form.tsx +45 -0
  56. package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Indeterminate.tsx +13 -0
  57. package/skills/pds-knowledge-react/references/components/p-checkbox/examples/Slots.tsx +54 -0
  58. package/skills/pds-knowledge-react/references/components/p-checkbox/examples/WrappedLabel.tsx +24 -0
  59. package/skills/pds-knowledge-react/references/components/p-checkbox/p-checkbox.md +126 -0
  60. package/skills/pds-knowledge-react/references/components/p-crest/accessibility.md +17 -0
  61. package/skills/pds-knowledge-react/references/components/p-crest/examples/CustomClickableArea.tsx +10 -0
  62. package/skills/pds-knowledge-react/references/components/p-crest/examples/Default.tsx +10 -0
  63. package/skills/pds-knowledge-react/references/components/p-crest/examples/Link.tsx +10 -0
  64. package/skills/pds-knowledge-react/references/components/p-crest/p-crest.md +69 -0
  65. package/skills/pds-knowledge-react/references/components/p-display/examples/Color.tsx +12 -0
  66. package/skills/pds-knowledge-react/references/components/p-display/examples/Default.tsx +12 -0
  67. package/skills/pds-knowledge-react/references/components/p-display/examples/Semantics.tsx +18 -0
  68. package/skills/pds-knowledge-react/references/components/p-display/examples/Size.tsx +12 -0
  69. package/skills/pds-knowledge-react/references/components/p-display/examples/SizeResponsive.tsx +12 -0
  70. package/skills/pds-knowledge-react/references/components/p-display/p-display.md +78 -0
  71. package/skills/pds-knowledge-react/references/components/p-divider/accessibility.md +41 -0
  72. package/skills/pds-knowledge-react/references/components/p-divider/examples/Default.tsx +10 -0
  73. package/skills/pds-knowledge-react/references/components/p-divider/examples/Responsive.tsx +12 -0
  74. package/skills/pds-knowledge-react/references/components/p-divider/examples/Vertical.tsx +12 -0
  75. package/skills/pds-knowledge-react/references/components/p-divider/p-divider.md +53 -0
  76. package/skills/pds-knowledge-react/references/components/p-drilldown/accessibility.md +65 -0
  77. package/skills/pds-knowledge-react/references/components/p-drilldown/examples/CustomContent.tsx +164 -0
  78. package/skills/pds-knowledge-react/references/components/p-drilldown/examples/Default.tsx +117 -0
  79. package/skills/pds-knowledge-react/references/components/p-drilldown/p-drilldown.md +172 -0
  80. package/skills/pds-knowledge-react/references/components/p-fieldset/accessibility.md +37 -0
  81. package/skills/pds-knowledge-react/references/components/p-fieldset/examples/Default.tsx +12 -0
  82. package/skills/pds-knowledge-react/references/components/p-fieldset/examples/Required.tsx +13 -0
  83. package/skills/pds-knowledge-react/references/components/p-fieldset/examples/SlottedLabel.tsx +15 -0
  84. package/skills/pds-knowledge-react/references/components/p-fieldset/examples/SlottedMessage.tsx +15 -0
  85. package/skills/pds-knowledge-react/references/components/p-fieldset/p-fieldset.md +92 -0
  86. package/skills/pds-knowledge-react/references/components/p-flag/accessibility.md +39 -0
  87. package/skills/pds-knowledge-react/references/components/p-flag/examples/Default.tsx +10 -0
  88. package/skills/pds-knowledge-react/references/components/p-flag/examples/ResponsiveSize.tsx +10 -0
  89. package/skills/pds-knowledge-react/references/components/p-flag/examples/Size.tsx +13 -0
  90. package/skills/pds-knowledge-react/references/components/p-flag/examples/SizeCssVar.tsx +10 -0
  91. package/skills/pds-knowledge-react/references/components/p-flag/p-flag.md +72 -0
  92. package/skills/pds-knowledge-react/references/components/p-flyout/accessibility.md +80 -0
  93. package/skills/pds-knowledge-react/references/components/p-flyout/examples/CustomStyling.tsx +45 -0
  94. package/skills/pds-knowledge-react/references/components/p-flyout/examples/Default.tsx +42 -0
  95. package/skills/pds-knowledge-react/references/components/p-flyout/examples/Form.tsx +54 -0
  96. package/skills/pds-knowledge-react/references/components/p-flyout/examples/StickyTop.tsx +42 -0
  97. package/skills/pds-knowledge-react/references/components/p-flyout/p-flyout.md +132 -0
  98. package/skills/pds-knowledge-react/references/components/p-heading/accessibility.md +29 -0
  99. package/skills/pds-knowledge-react/references/components/p-heading/examples/Color.tsx +12 -0
  100. package/skills/pds-knowledge-react/references/components/p-heading/examples/Default.tsx +12 -0
  101. package/skills/pds-knowledge-react/references/components/p-heading/examples/Semantics.tsx +18 -0
  102. package/skills/pds-knowledge-react/references/components/p-heading/p-heading.md +82 -0
  103. package/skills/pds-knowledge-react/references/components/p-icon/accessibility.md +39 -0
  104. package/skills/pds-knowledge-react/references/components/p-icon/examples/Color.tsx +13 -0
  105. package/skills/pds-knowledge-react/references/components/p-icon/examples/ColorCssVar.tsx +10 -0
  106. package/skills/pds-knowledge-react/references/components/p-icon/examples/Custom.tsx +10 -0
  107. package/skills/pds-knowledge-react/references/components/p-icon/examples/Default.tsx +10 -0
  108. package/skills/pds-knowledge-react/references/components/p-icon/examples/Overview.tsx +588 -0
  109. package/skills/pds-knowledge-react/references/components/p-icon/examples/ResponsiveSize.tsx +10 -0
  110. package/skills/pds-knowledge-react/references/components/p-icon/examples/Size.tsx +13 -0
  111. package/skills/pds-knowledge-react/references/components/p-icon/examples/SizeCssVar.tsx +10 -0
  112. package/skills/pds-knowledge-react/references/components/p-icon/p-icon.md +92 -0
  113. package/skills/pds-knowledge-react/references/components/p-inline-notification/accessibility.md +36 -0
  114. package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/ActionButton.tsx +25 -0
  115. package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/Default.tsx +10 -0
  116. package/skills/pds-knowledge-react/references/components/p-inline-notification/examples/EventHandling.tsx +25 -0
  117. package/skills/pds-knowledge-react/references/components/p-inline-notification/p-inline-notification.md +78 -0
  118. package/skills/pds-knowledge-react/references/components/p-input-date/accessibility.md +45 -0
  119. package/skills/pds-knowledge-react/references/components/p-input-date/examples/Default.tsx +10 -0
  120. package/skills/pds-knowledge-react/references/components/p-input-date/examples/Form.tsx +45 -0
  121. package/skills/pds-knowledge-react/references/components/p-input-date/examples/Slots.tsx +41 -0
  122. package/skills/pds-knowledge-react/references/components/p-input-date/p-input-date.md +146 -0
  123. package/skills/pds-knowledge-react/references/components/p-input-email/accessibility.md +45 -0
  124. package/skills/pds-knowledge-react/references/components/p-input-email/examples/Default.tsx +10 -0
  125. package/skills/pds-knowledge-react/references/components/p-input-email/examples/Form.tsx +51 -0
  126. package/skills/pds-knowledge-react/references/components/p-input-email/examples/Slots.tsx +41 -0
  127. package/skills/pds-knowledge-react/references/components/p-input-email/p-input-email.md +150 -0
  128. package/skills/pds-knowledge-react/references/components/p-input-month/accessibility.md +45 -0
  129. package/skills/pds-knowledge-react/references/components/p-input-month/examples/Default.tsx +10 -0
  130. package/skills/pds-knowledge-react/references/components/p-input-month/examples/Form.tsx +45 -0
  131. package/skills/pds-knowledge-react/references/components/p-input-month/examples/Slots.tsx +41 -0
  132. package/skills/pds-knowledge-react/references/components/p-input-month/p-input-month.md +146 -0
  133. package/skills/pds-knowledge-react/references/components/p-input-number/accessibility.md +45 -0
  134. package/skills/pds-knowledge-react/references/components/p-input-number/examples/Default.tsx +10 -0
  135. package/skills/pds-knowledge-react/references/components/p-input-number/examples/Form.tsx +51 -0
  136. package/skills/pds-knowledge-react/references/components/p-input-number/examples/Slots.tsx +41 -0
  137. package/skills/pds-knowledge-react/references/components/p-input-number/p-input-number.md +154 -0
  138. package/skills/pds-knowledge-react/references/components/p-input-password/accessibility.md +45 -0
  139. package/skills/pds-knowledge-react/references/components/p-input-password/examples/Default.tsx +10 -0
  140. package/skills/pds-knowledge-react/references/components/p-input-password/examples/Form.tsx +51 -0
  141. package/skills/pds-knowledge-react/references/components/p-input-password/examples/Slots.tsx +39 -0
  142. package/skills/pds-knowledge-react/references/components/p-input-password/examples/Toggle.tsx +10 -0
  143. package/skills/pds-knowledge-react/references/components/p-input-password/p-input-password.md +149 -0
  144. package/skills/pds-knowledge-react/references/components/p-input-search/accessibility.md +59 -0
  145. package/skills/pds-knowledge-react/references/components/p-input-search/examples/AriaCombobox.tsx +35 -0
  146. package/skills/pds-knowledge-react/references/components/p-input-search/examples/Default.tsx +10 -0
  147. package/skills/pds-knowledge-react/references/components/p-input-search/examples/Form.tsx +52 -0
  148. package/skills/pds-knowledge-react/references/components/p-input-search/examples/Slots.tsx +41 -0
  149. package/skills/pds-knowledge-react/references/components/p-input-search/p-input-search.md +186 -0
  150. package/skills/pds-knowledge-react/references/components/p-input-tel/accessibility.md +45 -0
  151. package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Default.tsx +10 -0
  152. package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Form.tsx +45 -0
  153. package/skills/pds-knowledge-react/references/components/p-input-tel/examples/Slots.tsx +41 -0
  154. package/skills/pds-knowledge-react/references/components/p-input-tel/p-input-tel.md +149 -0
  155. package/skills/pds-knowledge-react/references/components/p-input-text/accessibility.md +45 -0
  156. package/skills/pds-knowledge-react/references/components/p-input-text/examples/Controlled.tsx +36 -0
  157. package/skills/pds-knowledge-react/references/components/p-input-text/examples/Default.tsx +10 -0
  158. package/skills/pds-knowledge-react/references/components/p-input-text/examples/Form.tsx +45 -0
  159. package/skills/pds-knowledge-react/references/components/p-input-text/examples/Slots.tsx +41 -0
  160. package/skills/pds-knowledge-react/references/components/p-input-text/p-input-text.md +154 -0
  161. package/skills/pds-knowledge-react/references/components/p-input-time/accessibility.md +45 -0
  162. package/skills/pds-knowledge-react/references/components/p-input-time/examples/Default.tsx +10 -0
  163. package/skills/pds-knowledge-react/references/components/p-input-time/examples/Form.tsx +45 -0
  164. package/skills/pds-knowledge-react/references/components/p-input-time/examples/Slots.tsx +41 -0
  165. package/skills/pds-knowledge-react/references/components/p-input-time/p-input-time.md +148 -0
  166. package/skills/pds-knowledge-react/references/components/p-input-url/accessibility.md +45 -0
  167. package/skills/pds-knowledge-react/references/components/p-input-url/examples/Default.tsx +10 -0
  168. package/skills/pds-knowledge-react/references/components/p-input-url/examples/Form.tsx +45 -0
  169. package/skills/pds-knowledge-react/references/components/p-input-url/examples/Slots.tsx +41 -0
  170. package/skills/pds-knowledge-react/references/components/p-input-url/p-input-url.md +149 -0
  171. package/skills/pds-knowledge-react/references/components/p-input-week/accessibility.md +45 -0
  172. package/skills/pds-knowledge-react/references/components/p-input-week/examples/Default.tsx +10 -0
  173. package/skills/pds-knowledge-react/references/components/p-input-week/examples/Form.tsx +45 -0
  174. package/skills/pds-knowledge-react/references/components/p-input-week/examples/Slots.tsx +41 -0
  175. package/skills/pds-knowledge-react/references/components/p-input-week/p-input-week.md +146 -0
  176. package/skills/pds-knowledge-react/references/components/p-link/accessibility.md +73 -0
  177. package/skills/pds-knowledge-react/references/components/p-link/examples/Default.tsx +12 -0
  178. package/skills/pds-knowledge-react/references/components/p-link/examples/FrameworkRouting.tsx +14 -0
  179. package/skills/pds-knowledge-react/references/components/p-link/examples/Icon.tsx +17 -0
  180. package/skills/pds-knowledge-react/references/components/p-link/p-link.md +105 -0
  181. package/skills/pds-knowledge-react/references/components/p-link-pure/accessibility.md +73 -0
  182. package/skills/pds-knowledge-react/references/components/p-link-pure/examples/CustomClickableArea.tsx +12 -0
  183. package/skills/pds-knowledge-react/references/components/p-link-pure/examples/Default.tsx +12 -0
  184. package/skills/pds-knowledge-react/references/components/p-link-pure/examples/FrameworkRouting.tsx +14 -0
  185. package/skills/pds-knowledge-react/references/components/p-link-pure/examples/Icon.tsx +17 -0
  186. package/skills/pds-knowledge-react/references/components/p-link-pure/p-link-pure.md +114 -0
  187. package/skills/pds-knowledge-react/references/components/p-link-tile/accessibility.md +31 -0
  188. package/skills/pds-knowledge-react/references/components/p-link-tile/examples/ColorScheme.tsx +15 -0
  189. package/skills/pds-knowledge-react/references/components/p-link-tile/examples/Default.tsx +18 -0
  190. package/skills/pds-knowledge-react/references/components/p-link-tile/examples/FooterSlot.tsx +29 -0
  191. package/skills/pds-knowledge-react/references/components/p-link-tile/examples/Hyphens.tsx +34 -0
  192. package/skills/pds-knowledge-react/references/components/p-link-tile/examples/UiBehaviour.tsx +41 -0
  193. package/skills/pds-knowledge-react/references/components/p-link-tile/examples/WithVideo.tsx +15 -0
  194. package/skills/pds-knowledge-react/references/components/p-link-tile/p-link-tile.md +109 -0
  195. package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/Default.tsx +22 -0
  196. package/skills/pds-knowledge-react/references/components/p-link-tile-product/examples/FrameworkRouting.tsx +25 -0
  197. package/skills/pds-knowledge-react/references/components/p-link-tile-product/p-link-tile-product.md +93 -0
  198. package/skills/pds-knowledge-react/references/components/p-modal/accessibility.md +80 -0
  199. package/skills/pds-knowledge-react/references/components/p-modal/examples/AlertDialog.tsx +39 -0
  200. package/skills/pds-knowledge-react/references/components/p-modal/examples/CustomStyling.tsx +26 -0
  201. package/skills/pds-knowledge-react/references/components/p-modal/examples/Default.tsx +39 -0
  202. package/skills/pds-knowledge-react/references/components/p-modal/examples/Scrollable.tsx +43 -0
  203. package/skills/pds-knowledge-react/references/components/p-modal/p-modal.md +139 -0
  204. package/skills/pds-knowledge-react/references/components/p-model-signature/examples/CustomStyling.tsx +14 -0
  205. package/skills/pds-knowledge-react/references/components/p-model-signature/examples/Default.tsx +10 -0
  206. package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskBlendMode.tsx +32 -0
  207. package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskImage.tsx +12 -0
  208. package/skills/pds-knowledge-react/references/components/p-model-signature/examples/MaskVideo.tsx +12 -0
  209. package/skills/pds-knowledge-react/references/components/p-model-signature/examples/SafeZone.tsx +60 -0
  210. package/skills/pds-knowledge-react/references/components/p-model-signature/p-model-signature.md +62 -0
  211. package/skills/pds-knowledge-react/references/components/p-multi-select/accessibility.md +78 -0
  212. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/AsyncFilter.tsx +136 -0
  213. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Default.tsx +29 -0
  214. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Form.tsx +53 -0
  215. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Optgroups.tsx +42 -0
  216. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SelectedSlot.tsx +94 -0
  217. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/SetValue.tsx +80 -0
  218. package/skills/pds-knowledge-react/references/components/p-multi-select/examples/Slots.tsx +48 -0
  219. package/skills/pds-knowledge-react/references/components/p-multi-select/p-multi-select.md +201 -0
  220. package/skills/pds-knowledge-react/references/components/p-pagination/accessibility.md +23 -0
  221. package/skills/pds-knowledge-react/references/components/p-pagination/examples/Default.tsx +10 -0
  222. package/skills/pds-knowledge-react/references/components/p-pagination/p-pagination.md +87 -0
  223. package/skills/pds-knowledge-react/references/components/p-pin-code/accessibility.md +45 -0
  224. package/skills/pds-knowledge-react/references/components/p-pin-code/examples/CopyPaste.tsx +10 -0
  225. package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Default.tsx +10 -0
  226. package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Form.tsx +45 -0
  227. package/skills/pds-knowledge-react/references/components/p-pin-code/examples/Slots.tsx +39 -0
  228. package/skills/pds-knowledge-react/references/components/p-pin-code/p-pin-code.md +113 -0
  229. package/skills/pds-knowledge-react/references/components/p-popover/accessibility.md +61 -0
  230. package/skills/pds-knowledge-react/references/components/p-popover/examples/Default.tsx +14 -0
  231. package/skills/pds-knowledge-react/references/components/p-popover/examples/SlottedButton.tsx +15 -0
  232. package/skills/pds-knowledge-react/references/components/p-popover/p-popover.md +120 -0
  233. package/skills/pds-knowledge-react/references/components/p-radio-group/accessibility.md +63 -0
  234. package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Default.tsx +17 -0
  235. package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Form.tsx +53 -0
  236. package/skills/pds-knowledge-react/references/components/p-radio-group/examples/Slots.tsx +69 -0
  237. package/skills/pds-knowledge-react/references/components/p-radio-group/p-radio-group.md +161 -0
  238. package/skills/pds-knowledge-react/references/components/p-scroller/accessibility.md +31 -0
  239. package/skills/pds-knowledge-react/references/components/p-scroller/examples/Default.tsx +51 -0
  240. package/skills/pds-knowledge-react/references/components/p-scroller/examples/Height.tsx +26 -0
  241. package/skills/pds-knowledge-react/references/components/p-scroller/examples/ScrollToPosition.tsx +58 -0
  242. package/skills/pds-knowledge-react/references/components/p-scroller/p-scroller.md +97 -0
  243. package/skills/pds-knowledge-react/references/components/p-segmented-control/accessibility.md +67 -0
  244. package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Default.tsx +26 -0
  245. package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Form.tsx +52 -0
  246. package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/Slots.tsx +54 -0
  247. package/skills/pds-knowledge-react/references/components/p-segmented-control/examples/WithLabels.tsx +26 -0
  248. package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md +166 -0
  249. package/skills/pds-knowledge-react/references/components/p-select/accessibility.md +140 -0
  250. package/skills/pds-knowledge-react/references/components/p-select/examples/AsyncFilter.tsx +136 -0
  251. package/skills/pds-knowledge-react/references/components/p-select/examples/Default.tsx +29 -0
  252. package/skills/pds-knowledge-react/references/components/p-select/examples/Form.tsx +53 -0
  253. package/skills/pds-knowledge-react/references/components/p-select/examples/Optgroups.tsx +42 -0
  254. package/skills/pds-knowledge-react/references/components/p-select/examples/Required.tsx +48 -0
  255. package/skills/pds-knowledge-react/references/components/p-select/examples/SelectedSlot.tsx +124 -0
  256. package/skills/pds-knowledge-react/references/components/p-select/examples/SetValue.tsx +80 -0
  257. package/skills/pds-knowledge-react/references/components/p-select/examples/Slots.tsx +48 -0
  258. package/skills/pds-knowledge-react/references/components/p-select/examples/SlottedImages.tsx +35 -0
  259. package/skills/pds-knowledge-react/references/components/p-select/p-select.md +198 -0
  260. package/skills/pds-knowledge-react/references/components/p-sheet/accessibility.md +80 -0
  261. package/skills/pds-knowledge-react/references/components/p-sheet/examples/Default.tsx +31 -0
  262. package/skills/pds-knowledge-react/references/components/p-sheet/p-sheet.md +125 -0
  263. package/skills/pds-knowledge-react/references/components/p-spinner/accessibility.md +31 -0
  264. package/skills/pds-knowledge-react/references/components/p-spinner/examples/Color.tsx +13 -0
  265. package/skills/pds-knowledge-react/references/components/p-spinner/examples/ColorCssVar.tsx +10 -0
  266. package/skills/pds-knowledge-react/references/components/p-spinner/examples/Default.tsx +10 -0
  267. package/skills/pds-knowledge-react/references/components/p-spinner/examples/ResponsiveSize.tsx +10 -0
  268. package/skills/pds-knowledge-react/references/components/p-spinner/examples/Size.tsx +13 -0
  269. package/skills/pds-knowledge-react/references/components/p-spinner/examples/SizeCssVar.tsx +10 -0
  270. package/skills/pds-knowledge-react/references/components/p-spinner/p-spinner.md +100 -0
  271. package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/accessibility.md +34 -0
  272. package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/examples/Default.tsx +23 -0
  273. package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/examples/FrameworkImplementation.tsx +100 -0
  274. package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/p-stepper-horizontal.md +113 -0
  275. package/skills/pds-knowledge-react/references/components/p-switch/accessibility.md +35 -0
  276. package/skills/pds-knowledge-react/references/components/p-switch/examples/Default.tsx +19 -0
  277. package/skills/pds-knowledge-react/references/components/p-switch/p-switch.md +107 -0
  278. package/skills/pds-knowledge-react/references/components/p-table/accessibility.md +47 -0
  279. package/skills/pds-knowledge-react/references/components/p-table/examples/Advanced.tsx +186 -0
  280. package/skills/pds-knowledge-react/references/components/p-table/examples/CaptionProperty.tsx +37 -0
  281. package/skills/pds-knowledge-react/references/components/p-table/examples/CaptionSlot.tsx +40 -0
  282. package/skills/pds-knowledge-react/references/components/p-table/examples/Default.tsx +117 -0
  283. package/skills/pds-knowledge-react/references/components/p-table/examples/HideLabel.tsx +37 -0
  284. package/skills/pds-knowledge-react/references/components/p-table/examples/LayoutFixed.tsx +50 -0
  285. package/skills/pds-knowledge-react/references/components/p-table/examples/Sorting.tsx +87 -0
  286. package/skills/pds-knowledge-react/references/components/p-table/p-table.md +193 -0
  287. package/skills/pds-knowledge-react/references/components/p-tabs/accessibility.md +56 -0
  288. package/skills/pds-knowledge-react/references/components/p-tabs/examples/ActiveTab.tsx +26 -0
  289. package/skills/pds-knowledge-react/references/components/p-tabs/examples/Default.tsx +26 -0
  290. package/skills/pds-knowledge-react/references/components/p-tabs/examples/Gradient.tsx +111 -0
  291. package/skills/pds-knowledge-react/references/components/p-tabs/examples/Labelling.tsx +26 -0
  292. package/skills/pds-knowledge-react/references/components/p-tabs/p-tabs.md +140 -0
  293. package/skills/pds-knowledge-react/references/components/p-tabs-bar/accessibility.md +61 -0
  294. package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Default.tsx +27 -0
  295. package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Gradient.tsx +78 -0
  296. package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Labelling.tsx +27 -0
  297. package/skills/pds-knowledge-react/references/components/p-tabs-bar/examples/Links.tsx +20 -0
  298. package/skills/pds-knowledge-react/references/components/p-tabs-bar/p-tabs-bar.md +185 -0
  299. package/skills/pds-knowledge-react/references/components/p-tag/accessibility.md +19 -0
  300. package/skills/pds-knowledge-react/references/components/p-tag/examples/Default.tsx +12 -0
  301. package/skills/pds-knowledge-react/references/components/p-tag/examples/Multiline.tsx +14 -0
  302. package/skills/pds-knowledge-react/references/components/p-tag/examples/SlottedButton.tsx +41 -0
  303. package/skills/pds-knowledge-react/references/components/p-tag/examples/SlottedLink.tsx +41 -0
  304. package/skills/pds-knowledge-react/references/components/p-tag/p-tag.md +70 -0
  305. package/skills/pds-knowledge-react/references/components/p-tag-dismissible/accessibility.md +35 -0
  306. package/skills/pds-knowledge-react/references/components/p-tag-dismissible/examples/Default.tsx +12 -0
  307. package/skills/pds-knowledge-react/references/components/p-tag-dismissible/p-tag-dismissible.md +79 -0
  308. package/skills/pds-knowledge-react/references/components/p-text/accessibility.md +21 -0
  309. package/skills/pds-knowledge-react/references/components/p-text/examples/Default.tsx +12 -0
  310. package/skills/pds-knowledge-react/references/components/p-text/examples/Semantics.tsx +18 -0
  311. package/skills/pds-knowledge-react/references/components/p-text/examples/Size.tsx +12 -0
  312. package/skills/pds-knowledge-react/references/components/p-text/examples/SizeResponsive.tsx +12 -0
  313. package/skills/pds-knowledge-react/references/components/p-text/p-text.md +72 -0
  314. package/skills/pds-knowledge-react/references/components/p-text-list/accessibility.md +31 -0
  315. package/skills/pds-knowledge-react/references/components/p-text-list/examples/Default.tsx +28 -0
  316. package/skills/pds-knowledge-react/references/components/p-text-list/p-text-list.md +72 -0
  317. package/skills/pds-knowledge-react/references/components/p-textarea/accessibility.md +45 -0
  318. package/skills/pds-knowledge-react/references/components/p-textarea/examples/Default.tsx +10 -0
  319. package/skills/pds-knowledge-react/references/components/p-textarea/examples/Form.tsx +45 -0
  320. package/skills/pds-knowledge-react/references/components/p-textarea/examples/Slots.tsx +39 -0
  321. package/skills/pds-knowledge-react/references/components/p-textarea/p-textarea.md +126 -0
  322. package/skills/pds-knowledge-react/references/components/p-toast/examples/Default.tsx +22 -0
  323. package/skills/pds-knowledge-react/references/components/p-toast/p-toast.md +61 -0
  324. package/skills/pds-knowledge-react/references/components/p-wordmark/accessibility.md +31 -0
  325. package/skills/pds-knowledge-react/references/components/p-wordmark/examples/CustomClickableArea.tsx +10 -0
  326. package/skills/pds-knowledge-react/references/components/p-wordmark/examples/Default.tsx +10 -0
  327. package/skills/pds-knowledge-react/references/components/p-wordmark/examples/Size.tsx +10 -0
  328. package/skills/pds-knowledge-react/references/components/p-wordmark/p-wordmark.md +70 -0
  329. package/skills/pds-knowledge-react/references/icons.md +5 -0
  330. package/skills/pds-knowledge-react/references/styles/emotion.md +439 -0
  331. package/skills/pds-knowledge-react/references/styles/scss.md +402 -0
  332. package/skills/pds-knowledge-react/references/styles/tailwindcss.md +356 -0
  333. package/skills/pds-knowledge-react/references/styles/vanilla-extract.md +444 -0
  334. package/skills/pds-knowledge-react/references/stylesheets.md +331 -0
  335. package/skills/pds-knowledge-react/references/tokens.md +323 -0
  336. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +5 -5
  337. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +1 -1
  338. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +5 -5
  339. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +1 -1
  340. package/ssr/esm/lib/components/button.wrapper.d.ts +2 -2
  341. package/ssr/esm/lib/components/link.wrapper.d.ts +2 -2
@@ -0,0 +1,96 @@
1
+ # p-banner
2
+
3
+ The `p-banner` component provides action-based feedback messages (e.g. after performing a task) or to convey informational and/or critical notification like some site related topics.
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
+ For more information about the Usage of the `p-banner` checkout the [Notification](https://designsystem.porsche.com/patterns/notifications/introduction) page.
8
+
9
+ ## Accessibility support
10
+
11
+ ### Keyboard
12
+
13
+ | Key / state | Function |
14
+ | --- | --- |
15
+ | `ESC` | Closes the Banner. |
16
+ | `Tab`, `Shift-Tab` | Moves focus to the next focusable element. |
17
+ | `focus` | Moves focus automatically to the close button. |
18
+
19
+ ### ARIA enhancements
20
+
21
+ #### Internal **ARIA** that is managed by the component:
22
+
23
+ | ARIA | Usage |
24
+ | --- | --- |
25
+ | `role="status"` | When content is populated or changed in `state="info"`, the component announces it unobtrusively. |
26
+ | `role="alert"` | When content is populated or changed in `state="warning/error"`, the component announces it immediately. |
27
+ | `aria-label="STRING"` | References the accessible name. |
28
+
29
+ ## Development considerations
30
+
31
+ ### Focus handling
32
+
33
+ To support **keyboard navigation**, please take care of correct **focus handling** after closing the `Banner` with `ESC` or `Enter` key: The trigger element (e.g. a button) which has opened the `Banner` must receive focus state again after the `Banner` is closed. This is important to keep focus order consistent.
34
+
35
+ ### ARIA live announcements
36
+
37
+ The `Banner` component uses `role="status"` and `role="alert"` to announce **content changes** for assistive technologies, but only if the component is **pre-rendered** and the content is added dynamically.
38
+
39
+ ### Common do's and don'ts
40
+
41
+ - **Do** pre-render the banner in the DOM and update its content when showing feedback.
42
+ - **Do** provide meaningful `heading` and `description` text for warnings and errors.
43
+ - **Do** return focus to the trigger or at a logical place after the banner is dismissed.
44
+ - **Don't** mount the entire banner only at the moment it should be announced.
45
+
46
+ ## Integration examples
47
+
48
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
49
+
50
+ ## API
51
+
52
+ ### Properties
53
+
54
+ | Property | Type | Default | Description |
55
+ | --- | --- | --- | --- |
56
+ | `description` | `string` | `''` | Sets the supporting description text shown below the heading. |
57
+ | `dismissButton` | `boolean` | `true` | Shows a dismiss button so the user can manually close the banner. |
58
+ | `heading` | `string` | `''` | Sets the heading text displayed at the top of the banner. |
59
+ | `headingTag` | `'h1'` `'h2'` `'h3'` `'h4'` `'h5'` `'h6'` | `'h5'` | Sets the HTML heading tag (e.g. h2, h3) to maintain correct document structure for the heading. |
60
+ | `open` _(required)_ | `boolean` | `false` | Controls whether the banner is visible. Set to `true` to show it and `false` to hide it. |
61
+ | `position` | `'top'` `'bottom'`<br>`BreakpointCustomizable<BannerPosition>` | `{"base":"bottom","s":"top"}` | Sets the position of the banner on screen — `top` or `bottom`. Supports responsive breakpoint values. |
62
+ | `state` | `'info'` `'success'` `'warning'` `'error'` | `'info'` | Sets the visual state of the banner — controls the icon and color scheme (`info`, `warning`, `error`, `success`). |
63
+
64
+ ### Events
65
+
66
+ | Event | Type | Description |
67
+ | --- | --- | --- |
68
+ | `dismiss` | `CustomEvent<void>` | Emitted when the user closes the banner via the dismiss button or Escape key. |
69
+
70
+ ### Controlled properties
71
+
72
+ - `open` — a controlled prop: the component does **not** update it itself. Handle the `dismiss` event and assign the new value to `open` yourself, or the change will not take effect.
73
+
74
+ ### Slots
75
+
76
+ | Slot | Required | Allowed tag names | Description |
77
+ | --- | --- | --- | --- |
78
+ | `heading` | no | — | Defines the heading of the banner. Can be used as an alternative to the `heading` prop for rich content. |
79
+ | _(default)_ | no | — | Default slot for the banner description content. |
80
+ | `description` _(deprecated)_ | no | — | Deprecated: Use the default slot instead. |
81
+
82
+ ### CSS Variables
83
+
84
+ | CSS Variable | Default | Description |
85
+ | --- | --- | --- |
86
+ | `--p-banner-max-w` | `100ch` | Defines the maximum width of the Banner. |
87
+ | `--p-banner-top` | `56px` | Defines the distance from the top of the viewport. Only takes effect when the `position` property is set to `top` (at the respective breakpoint). |
88
+ | `--p-banner-bottom` | `56px` | Defines the distance from the bottom of the viewport. Only takes effect when the `position` property is set to `bottom` (at the respective breakpoint). |
89
+ | `--p-banner-inset-x` | `max(22px, 10.625vw - 12px)` | Defines the horizontal offset of the Banner from the edges of the viewport. |
90
+
91
+ ## Examples
92
+
93
+ | Example | When to use | File |
94
+ | --- | --- | --- |
95
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
96
+ | Customization | Rich content for `heading` and `description` can be provided via named slots. | [./examples/Customization.tsx](./examples/Customization.tsx) |
@@ -0,0 +1,61 @@
1
+ # p-button accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PButton aria-haspopup="dialog" aria-label="Open details of product XYZ">
11
+ Open details
12
+ </PButton>
13
+ ```
14
+
15
+ #### ✅ Recommended
16
+
17
+ ```tsx
18
+ <PButton aria={{'aria-haspopup': 'dialog', 'aria-label': 'Open details of product XYZ'}}>
19
+ Open details
20
+ </PButton>
21
+ ```
22
+
23
+ ### Icon-only button without accessible name
24
+
25
+ #### ❌ Anti-pattern
26
+
27
+ ```tsx
28
+ <PButton icon="plus"></PButton>
29
+ ```
30
+
31
+ #### ✅ Recommended
32
+
33
+ ```tsx
34
+ <PButton icon="plus" hideLabel={true}>
35
+ Add item XYZ to shopping cart
36
+ </PButton>
37
+ ```
38
+
39
+ ### Vague button label without context
40
+
41
+ #### ❌ Anti-pattern
42
+
43
+ ```tsx
44
+ <PButton icon="plus">
45
+ Add
46
+ </PButton>
47
+ ```
48
+
49
+ #### ✅ Recommended
50
+
51
+ ```tsx
52
+ <PButton icon="plus" aria={{'aria-label': 'Add item XYZ to shopping cart'}}>
53
+ Add
54
+ </PButton>
55
+
56
+ {/* or use descriptive visible text */}
57
+
58
+ <PButton icon="plus">
59
+ Add item XYZ to cart
60
+ </PButton>
61
+ ```
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PButton } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PButton>
8
+ Some label
9
+ </PButton>
10
+ </>
11
+ )
12
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { PButton, PText } from '@porsche-design-system/components-react';
3
+ import { type FormEvent, useState } from 'react';
4
+
5
+ export const Example = () => {
6
+ const [lastSubmittedData, setLastSubmittedData] = useState('none');
7
+
8
+ const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
9
+ e.preventDefault();
10
+ const formData = Array.from(new FormData(e.currentTarget, (e.nativeEvent as SubmitEvent).submitter).entries())[0];
11
+ setLastSubmittedData(formData.join('=') || 'none');
12
+ };
13
+
14
+ return (
15
+ <>
16
+ <form onSubmit={handleSubmit} className="flex gap-fluid-sm">
17
+ <PButton name="option" value="A" type="submit">
18
+ Button A
19
+ </PButton>
20
+ <PButton name="option" value="B" type="submit">
21
+ Button B
22
+ </PButton>
23
+ </form>
24
+
25
+ <PText>Last submitted data: {lastSubmittedData}</PText>
26
+ </>
27
+ );
28
+ };
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { PButton, PText, PTextarea } from '@porsche-design-system/components-react';
3
+ import { type FormEvent, useState } from 'react';
4
+
5
+ export const Example = () => {
6
+ const [lastSubmittedData, setLastSubmittedData] = useState('none');
7
+
8
+ const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
9
+ e.preventDefault();
10
+ const formData = new FormData(e.currentTarget);
11
+ setLastSubmittedData((formData.get('some-name') as string) || 'none');
12
+ };
13
+
14
+ return (
15
+ <>
16
+ <form onSubmit={handleSubmit} id="some-form">
17
+ <PTextarea name="some-name" label="Some Label"></PTextarea>
18
+ </form>
19
+ <div className="flex gap-fluid-sm mt-fluid-sm">
20
+ <PButton type="submit" form="some-form">
21
+ Submit
22
+ </PButton>
23
+ <PButton type="reset" form="some-form">
24
+ Reset
25
+ </PButton>
26
+ </div>
27
+
28
+ <PText>Last submitted data: {lastSubmittedData}</PText>
29
+ </>
30
+ );
31
+ };
@@ -0,0 +1,122 @@
1
+ # p-button
2
+
3
+ The `p-button` component is essential for performing form or **interaction** events. For an optimal user guidance and dedicated pursuit of business or sales goals, different types of Buttons (**Primary** and **Secondary**) are available for usage. A Button can be used with or without a label but it's recommended to keep the **label visible** for better **usability** whenever possible. When used without a label, it is mandatory for **accessibility** to provide a descriptive label text for screen readers. Whenever you want to provide navigational elements, stick to the [Link](../p-link/p-link.md) component instead.
4
+
5
+ You can use native `click`, `focus`, `focusin`, `blur` and `focusout` events on the `p-button`.
6
+
7
+ ## Usage
8
+
9
+ ### Do:
10
+
11
+ - Use buttons for actions that have clear consequences, such as submitting a form or initiating a purchase.
12
+ - Use buttons to indicate the next step in a process, such as "Continue" or "Next".
13
+ - Use buttons with clear and concise labels that accurately describe the action they perform.
14
+ - Use the primary button for the most important or desired action, and use the secondary button for less important or secondary actions.
15
+ - Use icons in buttons to enhance their meaning, but ensure the icon is relevant and easily recognizable.
16
+ - Use disabled buttons to indicate actions that are currently unavailable or incomplete, and provide context for why the button is disabled.
17
+
18
+ ### Don't:
19
+
20
+ - Don't use buttons for non-actionable elements, such as decorative graphics or text.
21
+ - Don't use ambiguous or unclear labels for buttons, as it can lead to confusion for users.
22
+ - Don't use too many buttons on a page or in a single section, as it can overwhelm users and reduce usability.
23
+ - Don't use primary and secondary buttons interchangeably, as it can confuse users and reduce the clarity of your interface.
24
+ - Don't use disabled buttons without providing context for why the button is disabled. This can lead to confusion and frustration for users.
25
+
26
+ ---
27
+
28
+ ## Related components
29
+
30
+ - [Links](../p-link/p-link.md)
31
+
32
+ ## Accessibility support
33
+
34
+ ### Keyboard
35
+
36
+ | Key / state | Function |
37
+ | --- | --- |
38
+ | `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element. |
39
+ | `Enter`, `Space` | Activates the button. |
40
+ | `disabled` | Button still focusable. |
41
+
42
+ ### ARIA enhancements
43
+
44
+ #### External **ARIA** provided by the `aria` property:
45
+
46
+ | ARIA | Usage |
47
+ | --- | --- |
48
+ | `aria-label` | Defines a string value that labels the interactive element. |
49
+ | `aria-description` | Defines a string value that adds a more detailed description of the interactive element. |
50
+ | `aria-expanded` | Exposes a visual state (e.g. expanded/collapsed) of another element. |
51
+ | `aria-pressed` | Exposes the `pressed` state of a toggle button. |
52
+ | `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. |
53
+
54
+ #### Internal **ARIA** that is managed by the component:
55
+
56
+ | ARIA | Usage |
57
+ | --- | --- |
58
+ | `aria-disabled="true"` | When `disabled` prop is set, this ARIA attribute is set on the button element. |
59
+ | `role="status"` | When `loading` prop is set, the component announces the loading state (start and finish). |
60
+ | `aria-hidden="true"` | When the `icon` prop is set, the icon is hidden from the screen reader. |
61
+
62
+ ## Limitations
63
+
64
+ 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.
65
+
66
+ | ARIA | Support |
67
+ | --- | --- |
68
+ | `aria-labelledby` | 🚫 |
69
+ | `aria-describedby` | 🚫 |
70
+ | `aria-owns` | 🚫 |
71
+ | `aria-controls` | 🚫 |
72
+ | `aria-activedescendant` | 🚫 |
73
+
74
+ ## Development considerations
75
+
76
+ ### Labelling
77
+
78
+ If the text of a button does not clearly indicate what the button's behavior 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 "Add", "Detail" or "Show" 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 "Add item XYZ to shopping cart" or "Details of product XYZ."
79
+
80
+ ### Common do's and don'ts
81
+
82
+ - **Do** pass ARIA attributes via the `aria` prop, for example `aria="{ 'aria-haspopup': 'dialog' }"` when opening a dialog.
83
+ - **Do** provide a clear accessible name for icon-only actions via slotted label or `aria` property.
84
+ - **Don't** add native `aria-*` attributes directly on the component host.
85
+ - **Don't** rely on short generic button labels like "Show" or "Add" without context.
86
+
87
+ ## Integration examples
88
+
89
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
90
+
91
+ ## API
92
+
93
+ ### Properties
94
+
95
+ | Property | Type | Default | Description |
96
+ | --- | --- | --- | --- |
97
+ | `aria` | `ButtonAriaAttribute` | `undefined` | Sets ARIA attributes on the button to improve accessibility for screen readers. |
98
+ | `compact` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Reduces the button's height and padding for denser layouts. Supports responsive breakpoint values. |
99
+ | `disabled` | `boolean` | `false` | Disables the button, preventing all interaction and blocking events. |
100
+ | `form` | `string` | `undefined` | Associates the button with a form element by its ID, so it can submit or reset that form even when placed outside of it. |
101
+ | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
102
+ | `icon` | `'none'`<br>one of 290 icon names — see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the button. Use `none` to show no icon. |
103
+ | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
104
+ | `loading` | `boolean` | `false` | Disables the button and replaces its content with a loading spinner to indicate an ongoing operation. |
105
+ | `name` | `string` | `undefined` | Sets the name submitted with the form data when this button triggers form submission. |
106
+ | `type` | `'button'` `'submit'` `'reset'` | `'submit'` | Sets the button's HTML type — `submit` sends the form, `reset` clears it, `button` performs no default action. |
107
+ | `value` | `string` | `undefined` | Sets the value submitted with the form data when this button triggers form submission, paired with `name`. |
108
+ | `variant` | `'primary'` `'secondary'` | `'primary'` | Sets the visual style variant of the button (`primary` or `secondary`). |
109
+
110
+ ### Slots
111
+
112
+ | Slot | Required | Allowed tag names | Description |
113
+ | --- | --- | --- | --- |
114
+ | _(default)_ | no | — | Default slot for the button label. |
115
+
116
+ ## Examples
117
+
118
+ | Example | When to use | File |
119
+ | --- | --- | --- |
120
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
121
+ | Form | When used as a submit button, the `name` and `value` props are submitted as a pair as part of the form data. | [./examples/Form.tsx](./examples/Form.tsx) |
122
+ | Form Attribute | When a button is used as a submit or reset button outside a form, the `form` attribute can be utilized to explicitly associate the button with a specific form element. | [./examples/FormAttribute.tsx](./examples/FormAttribute.tsx) |
@@ -0,0 +1,61 @@
1
+ # p-button-pure accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PButtonPure aria-haspopup="dialog" aria-label="Open details of product XYZ">
11
+ Open details
12
+ </PButtonPure>
13
+ ```
14
+
15
+ #### ✅ Recommended
16
+
17
+ ```tsx
18
+ <PButtonPure aria={{'aria-haspopup': 'dialog', 'aria-label': 'Open details of product XYZ'}}>
19
+ Open details
20
+ </PButtonPure>
21
+ ```
22
+
23
+ ### Icon-only button without accessible name
24
+
25
+ #### ❌ Anti-pattern
26
+
27
+ ```tsx
28
+ <PButtonPure icon="plus"></PButtonPure>
29
+ ```
30
+
31
+ #### ✅ Recommended
32
+
33
+ ```tsx
34
+ <PButtonPure icon="plus" hideLabel={true}>
35
+ Add item XYZ to shopping cart
36
+ </PButtonPure>
37
+ ```
38
+
39
+ ### Vague button label without context
40
+
41
+ #### ❌ Anti-pattern
42
+
43
+ ```tsx
44
+ <PButtonPure icon="plus">
45
+ Add
46
+ </PButtonPure>
47
+ ```
48
+
49
+ #### ✅ Recommended
50
+
51
+ ```tsx
52
+ <PButtonPure icon="plus" aria={{'aria-label': 'Add item XYZ to shopping cart'}}>
53
+ Add
54
+ </PButtonPure>
55
+
56
+ {/* or use descriptive visible text */}
57
+
58
+ <PButtonPure icon="plus">
59
+ Add item XYZ to cart
60
+ </PButtonPure>
61
+ ```
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PButtonPure } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PButtonPure className="p-static-md">
8
+ Some label
9
+ </PButtonPure>
10
+ </>
11
+ )
12
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PButtonPure } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PButtonPure>
8
+ Some label
9
+ </PButtonPure>
10
+ </>
11
+ )
12
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { PButtonPure, PText } from '@porsche-design-system/components-react';
3
+ import { type FormEvent, useState } from 'react';
4
+
5
+ export const Example = () => {
6
+ const [lastSubmittedData, setLastSubmittedData] = useState('none');
7
+
8
+ const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
9
+ e.preventDefault();
10
+ const formData = Array.from(new FormData(e.currentTarget, (e.nativeEvent as SubmitEvent).submitter).entries())[0];
11
+ setLastSubmittedData(formData.join('=') || 'none');
12
+ };
13
+
14
+ return (
15
+ <>
16
+ <form onSubmit={handleSubmit} className="flex gap-fluid-sm">
17
+ <PButtonPure name="option" value="A" type="submit">
18
+ Button A
19
+ </PButtonPure>
20
+ <PButtonPure name="option" value="B" type="submit">
21
+ Button B
22
+ </PButtonPure>
23
+ </form>
24
+
25
+ <PText>Last submitted data: {lastSubmittedData}</PText>
26
+ </>
27
+ );
28
+ };
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { PButtonPure, PText, PTextarea } from '@porsche-design-system/components-react';
3
+ import { type FormEvent, useState } from 'react';
4
+
5
+ export const Example = () => {
6
+ const [lastSubmittedData, setLastSubmittedData] = useState('none');
7
+
8
+ const handleSubmit = (e: FormEvent<HTMLFormElement>) => {
9
+ e.preventDefault();
10
+ const formData = new FormData(e.currentTarget);
11
+ setLastSubmittedData((formData.get('some-name') as string) || 'none');
12
+ };
13
+
14
+ return (
15
+ <>
16
+ <form onSubmit={handleSubmit} id="some-form">
17
+ <PTextarea name="some-name" label="Some Label"></PTextarea>
18
+ </form>
19
+
20
+ <div className="flex gap-fluid-sm mt-fluid-sm">
21
+ <PButtonPure type="submit" form="some-form">
22
+ Submit
23
+ </PButtonPure>
24
+ <PButtonPure type="reset" form="some-form">
25
+ Reset
26
+ </PButtonPure>
27
+ </div>
28
+
29
+ <PText>Last submitted data: {lastSubmittedData}</PText>
30
+ </>
31
+ );
32
+ };
@@ -0,0 +1,122 @@
1
+ # p-button-pure
2
+
3
+ The `p-button-pure` component is essential to perform events for **interactions**. A Button can be used with or without a label, but it's recommended to keep the **label visible** for better **usability** whenever possible. When used without a label, it is mandatory for **accessibility** to provide a descriptive label text for screen readers.
4
+
5
+ Whenever you want to provide navigational elements, stick to the [Link](../p-link/p-link.md) or [Link Pure](../p-link-pure/p-link-pure.md) component instead.
6
+
7
+ Similarly to the `p-button`, the `p-button-pure` can be used as a submit button within a form for which a `name` and `value` prop can be passed. See the [Button Form Example](../p-button/p-button.md) for more information.
8
+
9
+ You can use native `click`, `focus`, `focusin`, `blur` and `focusout` events on the `p-button-pure`.
10
+
11
+ ## Usage
12
+
13
+ ### Do:
14
+
15
+ - Use Button Pure as a more subtle call to action or to execute an action.
16
+ - Choose the appropriate variant for your use case, such as Icon and Text or Text only.
17
+ - Use Icon left as the default state and stretch only on small viewports or areas.
18
+ - Keep the label short and include active verbs to indicate the action.
19
+ - Stack Button Pure groups left-aligned to guarantee scannability and legibility.
20
+
21
+ ### Don't:
22
+
23
+ - Don't use Button Pure as the primary or only call to action.
24
+ - Don't use long labels that do not give a clear indication of the action.
25
+ - Don't use buttons to link/navigate to other pages. Use regular [Link](../p-link/p-link.md) instead.
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
+ | `Enter`, `Space` | Activates the button. |
35
+ | `disabled` | Button still focusable. |
36
+
37
+ ### ARIA enhancements
38
+
39
+ #### External **ARIA** provided by the `aria` property:
40
+
41
+ | ARIA | Usage |
42
+ | --- | --- |
43
+ | `aria-label` | Defines a string value that labels the interactive element. |
44
+ | `aria-description` | Defines a string value that adds a more detailed description of the interactive element. |
45
+ | `aria-expanded` | Exposes a visual state (e.g. expanded/collapsed) of another element. |
46
+ | `aria-pressed` | Exposes the `pressed` state of a toggle button. |
47
+ | `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. |
48
+
49
+ #### Internal **ARIA** that is managed by the component:
50
+
51
+ | ARIA | Usage |
52
+ | --- | --- |
53
+ | `aria-disabled="true"` | When `disabled` prop is set, this ARIA attribute is set on the button element. |
54
+ | `role="status"` | When `loading` prop is set, the component announces the loading state (start and finish). |
55
+ | `aria-hidden="true"` | When the `icon` prop is set, the icon is hidden from the screen reader. |
56
+
57
+ ## Limitations
58
+
59
+ 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.
60
+
61
+ | ARIA | Support |
62
+ | --- | --- |
63
+ | `aria-labelledby` | 🚫 |
64
+ | `aria-describedby` | 🚫 |
65
+ | `aria-owns` | 🚫 |
66
+ | `aria-controls` | 🚫 |
67
+ | `aria-activedescendant` | 🚫 |
68
+
69
+ ## Development considerations
70
+
71
+ ### Labelling
72
+
73
+ If the text of a button does not clearly indicate what the button's behavior 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 "Add," "Detail," or "Show" 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 "Add item XYZ to shopping cart" or "Details of product XYZ."
74
+
75
+ ### Common do's and don'ts
76
+
77
+ - **Do** pass ARIA attributes via the `aria` prop, for example `aria="{ 'aria-haspopup': 'dialog' }"` when opening a dialog.
78
+ - **Do** provide a clear accessible name for icon-only actions via slotted label or `aria` property.
79
+ - **Don't** add native `aria-*` attributes directly on the component host.
80
+ - **Don't** rely on short generic button labels like "Show" or "Add" without context.
81
+
82
+ ## Integration examples
83
+
84
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
85
+
86
+ ## API
87
+
88
+ ### Properties
89
+
90
+ | Property | Type | Default | Description |
91
+ | --- | --- | --- | --- |
92
+ | `active` | `boolean` | `false` | Visually marks the button as the currently active or selected item, useful for navigation and toggle patterns. |
93
+ | `alignLabel` | `'start'` `'end'`<br>`BreakpointCustomizable<ButtonPureAlignLabel>` | `'end'` | Sets the label position relative to the icon — `start` places it before, `end` places it after. Supports responsive breakpoint values. |
94
+ | `aria` | `ButtonPureAriaAttribute` | `undefined` | Sets ARIA attributes on the button to improve accessibility for screen readers. |
95
+ | `color` | `'primary'` `'contrast-higher'` `'contrast-high'` `'contrast-medium'` `'inherit'` | `'primary'` | Sets the foreground color of the button's icon and label text. |
96
+ | `disabled` | `boolean` | `false` | Disables the button, preventing all interaction and blocking events. |
97
+ | `form` | `string` | `undefined` | Associates the button with a form element by its ID, so it can submit or reset that form even when placed outside of it. |
98
+ | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
99
+ | `icon` | `''`<br>one of 290 icon names — see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
100
+ | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
101
+ | `loading` | `boolean` | `false` | Disables the button and replaces its icon with a loading spinner to indicate an ongoing operation. |
102
+ | `name` | `string` | `undefined` | Sets the name submitted with the form data when this button triggers form submission. |
103
+ | `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<ButtonPureSize>` | `'sm'` | Sets the font size of the button label. Supports responsive breakpoint values. |
104
+ | `stretch` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Expands the space between icon and label to fill the full container width. Supports responsive breakpoint values. |
105
+ | `type` | `'button'` `'submit'` `'reset'` | `'submit'` | Sets the button's HTML type — `submit` sends the form, `reset` clears it, `button` performs no default action. |
106
+ | `underline` | `boolean` | `false` | Adds a text underline to the label to reinforce the button's link-like appearance. |
107
+ | `value` | `string` | `undefined` | Sets the value submitted with the form data when this button triggers form submission, paired with `name`. |
108
+
109
+ ### Slots
110
+
111
+ | Slot | Required | Allowed tag names | Description |
112
+ | --- | --- | --- | --- |
113
+ | _(default)_ | no | — | Default slot for the button label. |
114
+
115
+ ## Examples
116
+
117
+ | Example | When to use | File |
118
+ | --- | --- | --- |
119
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
120
+ | Button Pure with custom clickable/focusable area | Sometimes it might be useful to enlarge the clickable/focusable area of a button to fulfill accessibility guidelines. | [./examples/CustomClickableArea.tsx](./examples/CustomClickableArea.tsx) |
121
+ | Form | When used as a submit button, the `name` and `value` props are submitted as a pair as part of the form data. | [./examples/Form.tsx](./examples/Form.tsx) |
122
+ | Form Attribute | When a button is used as a submit or reset button outside a form, the `form` attribute can be utilized to explicitly associate the button with a specific form element. | [./examples/FormAttribute.tsx](./examples/FormAttribute.tsx) |
@@ -0,0 +1,31 @@
1
+ # p-button-tile accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PButtonTile label="Open" aria-label="Open details of Porsche Taycan" aria-haspopup="dialog"></PButtonTile>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```tsx
16
+ <PButtonTile label="Open" aria={{'aria-haspopup': 'dialog', 'aria-label': 'Open details of Porsche Taycan'}}></PButtonTile>
17
+ ```
18
+
19
+ ### Vague tile label without context
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```tsx
24
+ <PButtonTile label="Open"></PButtonTile>
25
+ ```
26
+
27
+ #### ✅ Recommended
28
+
29
+ ```tsx
30
+ <PButtonTile label="Configure Porsche Taycan"></PButtonTile>
31
+ ```