@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,56 @@
1
+ import React from 'react';
2
+ import { PCarousel } from '@porsche-design-system/components-react';
3
+ import { useState } from 'react';
4
+
5
+ export const Example = () => {
6
+ const [activeSlideIndex, setActiveSlideIndex] = useState(0);
7
+
8
+ const slideStyles = {
9
+ base: {
10
+ display: 'flex',
11
+ alignItems: 'center',
12
+ justifyContent: 'center',
13
+ background: '#00b0f4',
14
+ height: '150px',
15
+ transition: 'background 0.3s ease',
16
+ },
17
+ active: {
18
+ background: '#fc4040',
19
+ },
20
+ prevNext: {
21
+ background: '#f7cb47',
22
+ },
23
+ };
24
+
25
+ const getSlideStyle = (index: number) => {
26
+ if (index === activeSlideIndex) {
27
+ return { ...slideStyles.base, ...slideStyles.active };
28
+ }
29
+ if (index === activeSlideIndex - 1 || index === activeSlideIndex + 1) {
30
+ return { ...slideStyles.base, ...slideStyles.prevNext };
31
+ }
32
+ return slideStyles.base;
33
+ };
34
+
35
+ const onCarouselUpdate = (newIndex: number) => {
36
+ setActiveSlideIndex(newIndex);
37
+ };
38
+ return (
39
+ <PCarousel
40
+ slidesPerPage={3}
41
+ heading="Some Heading"
42
+ onUpdate={(e) => onCarouselUpdate(e.detail.activeIndex)}
43
+ focusOnCenterSlide
44
+ trimSpace={false}
45
+ gradient={true}
46
+ // @ts-expect-error: ignore unknown property (TS2353)
47
+ style={{ '--p-gradient-color-width': '25%' }}
48
+ >
49
+ {Array.from({ length: 6 }).map((_, i) => (
50
+ <div style={getSlideStyle(i)} key={i}>
51
+ {`Slide ${i + 1}`}
52
+ </div>
53
+ ))}
54
+ </PCarousel>
55
+ );
56
+ };
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { PCarousel } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PCarousel heading="Some heading" intl={{'slideLabel': 'Slide %s von %s', 'prev': 'Vorheriger Slide', 'next': 'Nchster Slide', 'first': 'Zum ersten Slide', 'last': 'Zum letzten Slide'}}>
8
+ <div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
9
+ Slide 1
10
+ </div>
11
+ <div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
12
+ Slide 2
13
+ </div>
14
+ <div className="grid place-content-center h-[150px] bg-surface prose-text-sm">
15
+ Slide 3
16
+ </div>
17
+ </PCarousel>
18
+ </>
19
+ )
20
+ }
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ import { type CarouselUpdateEventDetail, PButton, PCarousel } from '@porsche-design-system/components-react';
3
+ import { type MouseEvent, useCallback, useState } from 'react';
4
+
5
+ export const Example = () => {
6
+ const [activeSlideIndex, setActiveSlideIndex] = useState(1);
7
+ const onUpdate = useCallback(
8
+ (e: CustomEvent<CarouselUpdateEventDetail>) => setActiveSlideIndex(e.detail.activeIndex),
9
+ []
10
+ );
11
+ const onButtonClick = useCallback(
12
+ (e: MouseEvent<HTMLButtonElement> & { target: HTMLButtonElement }) =>
13
+ setActiveSlideIndex(parseInt(e.target.innerText) - 1),
14
+ []
15
+ );
16
+
17
+ const slideStyle = {
18
+ display: 'flex',
19
+ alignItems: 'center',
20
+ justifyContent: 'center',
21
+ background: '#00b0f4',
22
+ height: '150px',
23
+ };
24
+
25
+ return (
26
+ <>
27
+ <PCarousel heading="Some Heading" activeSlideIndex={activeSlideIndex} onUpdate={onUpdate}>
28
+ <div style={slideStyle}>Slide 1</div>
29
+ <div style={slideStyle}>Slide 2</div>
30
+ <div style={slideStyle}>Slide 3</div>
31
+ </PCarousel>
32
+
33
+ <div className="flex gap-fluid-sm mt-fluid-sm">
34
+ {Array.from(Array(3)).map((_, i) => (
35
+ <PButton key={i} type="button" onClick={onButtonClick} disabled={activeSlideIndex === i}>
36
+ {i + 1}
37
+ </PButton>
38
+ ))}
39
+ </div>
40
+ </>
41
+ );
42
+ };
@@ -0,0 +1,146 @@
1
+ # p-carousel
2
+
3
+ The `p-carousel` component allows related or similar content to be consumed on a step by step basis with a better overview than just showing them in a grid or as a list. The reason for this is, that only a certain amount of slides is visible at the same time.
4
+
5
+ Therefore, the `p-carousel`'s content has to be divided into multiple parts or slides. The amount of slides visible can be specified on a per-breakpoint basis.
6
+
7
+ > **Layout hint**
8
+ >
9
+ > When using the `width` prop to align with the **[Porsche Grid](../../styles/tailwindcss.md)**, the component must span the full viewport width.
10
+ >
11
+ > When using the `--p-carousel-px` CSS variable, the component can be placed within any container, allowing you to customize the horizontal padding that reveals parts of the next/previous slide.
12
+ >
13
+ > When using the `--p-carousel-ps` and `--p-carousel-pe` CSS variables, the component can be placed within any container, allowing you to customize the horizontal padding asymmetric that reveals parts of the next/previous slide.
14
+
15
+ > **Dynamic changes**
16
+ >
17
+ > This component has limited support for dynamic property changes due to the way it is implemented.
18
+ >
19
+ > If you need to use a specific property dynamically, please open a [feature request](https://designsystem.porsche.com/help/feature-request/).
20
+
21
+ ## Usage
22
+
23
+ ### Do:
24
+
25
+ - Use to showcase a group of related featured content in a row, such as images or cards.
26
+ - Use when you have five or fewer items of the same style to display.
27
+ - Use when there is insufficient content space to display all items without overlapping or cluttering.
28
+ - Keep the number of slides within the carousel to a minimum, preferably five or fewer.
29
+ - Use specify the number of slides visible at the same time, either static or for each breakpoint individually.
30
+
31
+ ### Don't:
32
+
33
+ - Don't vary the size of the items in its height.
34
+ - Don't maintain the same layout or at least the same content structure with every item.
35
+
36
+ ## Accessibility support
37
+
38
+ ### Keyboard
39
+
40
+ | Key / state | Function |
41
+ | --- | --- |
42
+ | `Tab`, `Shift-Tab` | - Moves focus to the next (or previous) focusable element. - Supports cycling through all items. - Activates "Skip" link (if set through `skipLinkTarget`). |
43
+
44
+ ### ARIA enhancements
45
+
46
+ #### External **ARIA** provided by the `aria` property:
47
+
48
+ | ARIA | Usage |
49
+ | --- | --- |
50
+ | `aria-label` | Defines a string value that labels the carousel. |
51
+
52
+ #### Internal **ARIA** that is managed by the component:
53
+
54
+ | ARIA | Usage |
55
+ | --- | --- |
56
+ | `aria-label="STRING"` | Defines a string value that labels prev/next and carousel items. |
57
+ | `role="region"` | Defines the carousel as a semantic region. |
58
+ | `role="group"` | Defines the carousel item as a semantic group. |
59
+ | `aria-labelledby="IDREF"` | References the accessible name. |
60
+ | `aria-roledescription="carousel"` | Specifies the role as "carousel". |
61
+ | `aria-roledescription="slide"` | Specifies the role of the carousel item as "slide". |
62
+ | `aria-live="polite"` | Announces current active slide item. |
63
+
64
+ ## Development considerations
65
+
66
+ ### Skip Carousel Entries
67
+
68
+ Through the `skipLinkTarget` property, a skip link for keyboard users can be provided to give the possibility to skip over all carousel entries. The skip link is only visible when it receives focus from the keyboard.
69
+
70
+ - Use the `skipLinkTarget` property if you have >5 carousel items
71
+ - The target of the skip link should point to the next heading or element right after the carousel
72
+
73
+ ### Common do's and don'ts
74
+
75
+ - **Do** configure `skip-link-target` for larger carousels or repeated content sections.
76
+ - **Do** ensure the skip target points to the next meaningful section.
77
+ - **Do** provide a descriptive carousel label via the `aria` property.
78
+ - **Don't** force keyboard users to tab through every slide control when a skip path is needed.
79
+ - **Don't** use vague labels that do not communicate carousel context.
80
+
81
+ ## Integration examples
82
+
83
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
84
+
85
+ ## API
86
+
87
+ ### Properties
88
+
89
+ | Property | Type | Default | Description |
90
+ | --- | --- | --- | --- |
91
+ | `activeSlideIndex` | `number` | `0` | Sets the zero-based index of the currently visible slide. Update this to navigate programmatically. |
92
+ | `alignControls` | `'start'` `'center'` `'auto'` | `'auto'` | Controls the alignment of custom slotted controls within the header area. |
93
+ | `alignHeader` | `'start'` `'center'` | `'start'` | Controls the horizontal alignment of the heading and description. |
94
+ | `aria` | `CarouselAriaAttribute` | `undefined` | Sets ARIA attributes on the carousel region element for improved accessibility. |
95
+ | `description` | `string` | `undefined` | Sets the description text displayed below the heading for additional context. |
96
+ | `focusOnCenterSlide` | `boolean` | `false` | When enabled, each slide is individually focusable and the carousel navigates one slide at a time instead of one page. |
97
+ | `gradient` | `boolean` | `false` | Shows a gradient fade at the start and end edges to visually indicate more slides beyond the viewport. |
98
+ | `heading` | `string` | `undefined` | Sets the heading text displayed above the carousel. Also used as the accessible label when no `aria` prop is set. |
99
+ | `headingSize` | `'x-large'` `'xx-large'` | `'x-large'` | Sets the font size of the carousel heading. |
100
+ | `intl` | `CarouselInternationalization` | `undefined` | Overrides the default label strings used for the previous, next, and page indicators — useful for localization. |
101
+ | `pagination` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Shows pagination dot indicators below the carousel. Supports responsive breakpoint values. |
102
+ | `rewind` | `boolean` | `false` | Enables infinite looping — navigating past the last slide wraps back to the first, and vice versa. |
103
+ | `skipLinkTarget` | `string` | `undefined` | Sets the `href` of an in-page skip link that lets keyboard users jump past the carousel slides. |
104
+ | `slidesPerPage` | `'auto'` `1` `2` `3` `4` `5` `6` `7` `8` `9` `10`<br>`BreakpointCustomizable<CarouselSlidesPerPage>` | `1` | Sets how many slides are visible at once. Use `auto` to control each slide's width via CSS. Supports responsive breakpoint values. |
105
+ | `trimSpace` | `boolean` | `false` | Removes whitespace before the first and after the last slide when `focusOnCenterSlide` is enabled. |
106
+ | `width` | `'basic'` `'extended'` `'wide'` `'full'` | `'basic'` | Sets the maximum width and outer spacing of the carousel, aligned to PDS grid widths. |
107
+
108
+ ### Events
109
+
110
+ | Event | Type | Description |
111
+ | --- | --- | --- |
112
+ | `update` | `CustomEvent<CarouselUpdateEventDetail>`<br>`{ activeIndex: number; previousIndex: number }` | Emitted when the carousel navigates to a new slide, with the active and previous slide indexes in the event detail. |
113
+
114
+ ### Controlled properties
115
+
116
+ - `activeSlideIndex` — a controlled prop, but the component also updates it internally. Listen for the `update` event to observe changes; you do not have to write the value back.
117
+
118
+ ### Slots
119
+
120
+ | Slot | Required | Allowed tag names | Description |
121
+ | --- | --- | --- | --- |
122
+ | `heading` | no | — | Renders a heading above the carousel. |
123
+ | `description` | no | — | Renders descriptive content below the heading. |
124
+ | `controls` | no | — | Renders custom controls such as navigation buttons or indicators. |
125
+ | _(default)_ | no | — | Default slot for the carousel slides. |
126
+
127
+ ### CSS Variables
128
+
129
+ | CSS Variable | Default | Description |
130
+ | --- | --- | --- |
131
+ | `--p-carousel-px` | — | Defines the logical inline start and end padding of the carousel, the extra space is used to show parts of the next/previous slide. When used then the prop `width` has no effect anymore. |
132
+ | `--p-carousel-ps` | — | Defines the logical inline start padding of the carousel, the extra space is used to show parts of the next/previous slide. Needs to be used in combination with `--p-carousel-px` or `--p-carousel-pe`. When used then the prop `width` has no effect anymore. |
133
+ | `--p-carousel-pe` | — | Defines the logical inline end padding of the carousel, the extra space is used to show parts of the next/previous slide. Needs to be used in combination with `--p-carousel-px` or `--p-carousel-ps`. When used then the prop `width` has no effect anymore. |
134
+ | `--p-carousel-prev-next-color-scheme` | — | Color Scheme applied to the navigation (prev/next buttons) |
135
+ | `--p-carousel-border-radius` | `var(--p-radius-large, var(--p-radius-4xl))` | Sets the border radius of each carousel slide. |
136
+
137
+ ## Examples
138
+
139
+ | Example | When to use | File |
140
+ | --- | --- | --- |
141
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
142
+ | Slides with flexible widths | In case you want to have slides with different widths you can use `slidesPerPage` with a value of `auto`. | [./examples/FlexibleWidths.tsx](./examples/FlexibleWidths.tsx) |
143
+ | Jump to slide (activeSlideIndex) | To control the `p-carousel` from the outside you can specify its `activeSlideIndex` initially but also later. | [./examples/JumpToSlide.tsx](./examples/JumpToSlide.tsx) |
144
+ | Add/remove slides | Slides can be added and removed dynamically. | [./examples/DynamicSlides.tsx](./examples/DynamicSlides.tsx) |
145
+ | Centered Slide and Gradient Customization | The carousel centers the active slide and loops through slides individually rather than by page when multiple slides are visible. | [./examples/FocusOnCenterSlide.tsx](./examples/FocusOnCenterSlide.tsx) |
146
+ | Internationalization (i18n) | Default wordings for screen readers can be overridden or translated by passing an object to the `intl` property. | [./examples/Intl.tsx](./examples/Intl.tsx) |
@@ -0,0 +1,31 @@
1
+ # p-checkbox accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Hidden label without accessible name
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PCheckbox name="terms" hideLabel={true}></PCheckbox>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```tsx
16
+ <PCheckbox name="terms" hideLabel={true} label="I accept the terms and conditions"></PCheckbox>
17
+ ```
18
+
19
+ ### Validation feedback via state and message API
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```tsx
24
+ <PCheckbox name="terms" label="I accept the terms and conditions" aria-invalid={true} message="Required"></PCheckbox>
25
+ ```
26
+
27
+ #### ✅ Recommended
28
+
29
+ ```tsx
30
+ <PCheckbox name="terms" label="I accept the terms and conditions" required={true} state="error" message="Accept the terms and conditions to continue."></PCheckbox>
31
+ ```
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { PCheckbox } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PCheckbox label="Some label" name="some-name"></PCheckbox>
8
+ </>
9
+ )
10
+ }
@@ -0,0 +1,45 @@
1
+ import React from 'react';
2
+ import {
3
+ type CheckboxChangeEventDetail,
4
+ PButton,
5
+ PCheckbox,
6
+ PCheckboxProps,
7
+ PText,
8
+ } from '@porsche-design-system/components-react';
9
+ import { FormEvent, useState } from 'react';
10
+
11
+ export const Example = () => {
12
+ const [form, setForm] = useState({ myCheckbox: false });
13
+ const [lastSubmittedData, setLastSubmittedData] = useState<any>();
14
+
15
+ const onChange = (e: CustomEvent<CheckboxChangeEventDetail>) => {
16
+ const { name, checked } = e.target as HTMLElement & PCheckboxProps;
17
+ setForm((prev) => ({
18
+ ...prev,
19
+ [name]: checked,
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({ myCheckbox: false });
31
+ };
32
+
33
+ return (
34
+ <>
35
+ <form onSubmit={onSubmit} onReset={onReset} className="flex flex-col gap-fluid-sm">
36
+ <PCheckbox name="myCheckbox" label="Some Label" checked={form['myCheckbox']} onChange={onChange} />
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,13 @@
1
+ import React from 'react';
2
+ import { PCheckbox } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <div className="flex flex-col gap-static-sm">
8
+ <PCheckbox label="Some label" indeterminate={true}></PCheckbox>
9
+ <PCheckbox label="Some label" indeterminate={true} checked={true}></PCheckbox>
10
+ </div>
11
+ </>
12
+ )
13
+ }
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+ import { PCheckbox, PPopover } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <div className="flex flex-col gap-static-sm">
8
+ <PCheckbox name="some-name">
9
+ <span slot="label">
10
+ <img src="assets/911.png" alt="" className="object-contain inline-block align-middle -mt-2 me-static-sm w-[70px]" />
11
+ Some slotted label with custom content and a "label-after" slot
12
+ </span>
13
+ <PPopover slot="label-after">
14
+ Some label with a
15
+ <a href="https://designsystem.porsche.com" className="underline">
16
+ link
17
+ </a>
18
+ </PPopover>
19
+ </PCheckbox>
20
+ <PCheckbox name="some-name">
21
+ <span slot="label">
22
+ Some slotted label
23
+ </span>
24
+ </PCheckbox>
25
+ <PCheckbox name="some-name" disabled="true">
26
+ <span slot="label">
27
+ Disabled slotted label, a nested
28
+ <a href="https://www.porsche.com" className="underline" tabindex="-1">
29
+ link
30
+ </a>
31
+ and a label-after slot.
32
+ </span>
33
+ <PPopover slot="label-after">
34
+ Some information about the disabled state.
35
+ </PPopover>
36
+ </PCheckbox>
37
+ <PCheckbox name="some-name" state="error">
38
+ <span slot="label">
39
+ Some slotted label with a nested
40
+ <a href="https://www.porsche.com" className="underline">
41
+ link
42
+ </a>
43
+ </span>
44
+ <span slot="message">
45
+ Some slotted error message with a
46
+ <a href="https://designsystem.porsche.com" className="underline">
47
+ link
48
+ </a>
49
+ </span>
50
+ </PCheckbox>
51
+ </div>
52
+ </>
53
+ )
54
+ }
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { PCheckbox, PPopover } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ const onClick = () => {
6
+ setChecked(true);
7
+ }
8
+
9
+ return (
10
+ <>
11
+ <div className="flex items-start w-64 border-2 border-contrast-lower rounded-md hover:border-primary transition-colors">
12
+ <label className="inline-flex flex-col p-fluid-xs gap-static-xs prose-text-sm cursor-pointer hover:[--p-checkbox-border-color:var(--color-primary)]" onClick={onClick}>
13
+ <span>
14
+ Some wrapped custom label besides a popover
15
+ </span>
16
+ <PCheckbox checked={false}></PCheckbox>
17
+ </label>
18
+ <PPopover className="mr-static-xs mt-static-xs">
19
+ Some additional content.
20
+ </PPopover>
21
+ </div>
22
+ </>
23
+ )
24
+ }
@@ -0,0 +1,126 @@
1
+ # p-checkbox
2
+
3
+ The `p-checkbox` component wraps the native HTML input type `checkbox` form element. Checking one box doesn't uncheck other Checkboxes. By default, Checkboxes are not selected.
4
+
5
+ > **Firefox Form Restore Bug**
6
+ >
7
+ > Firefox has a known bug where it incorrectly restores form state for form-associated custom elements with shadow DOM on page reload. Checkbox values may appear inside unrelated `input-text` fields in the same form under certain conditions. To work around this, add the native HTML attribute `autocomplete="off"` to all checkbox form elements. See [Firefox Bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1986953) for details.
8
+
9
+ A `label` is a caption which informs the user what information a particular form field is asking for. The `p-checkbox` 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 best practice to provide a descriptive label text for screen readers.
10
+
11
+ ## Usage
12
+
13
+ ### Do:
14
+
15
+ - Use for a list of options when you want the user to select one, none, or multiple options.
16
+ - Use when an explicit action is required to apply to settings.
17
+ - Use the default view for checkboxes when no option is selected.
18
+ - Use the indeterminate state only as a visual state and not as a direct user interaction.
19
+ - Nest when a parent and child relationship is needed.
20
+ - Use short and descriptive label text for each checkbox option.
21
+ - Provide validation messages for each checkbox option if needed.
22
+ - Set vertically left-aligned for better scannability.
23
+
24
+ ### Don't:
25
+
26
+ - Avoid using when you have more than 8 options to choose from or consider using a [Select](../p-select/p-select.md).
27
+ - Don't mix [Radio Group](../p-radio-group/p-radio-group.md) options with checkboxes.
28
+ - Don't change the selection of another checkbox when a nested one is clicked. The only exception is when a checkbox is used to make a bulk selection of multiple items.
29
+
30
+ ---
31
+
32
+ ## Related Components
33
+
34
+ - [Radio Group](../p-radio-group/p-radio-group.md)
35
+ - [Select](../p-select/p-select.md)
36
+
37
+ ## Accessibility support
38
+
39
+ ### Keyboard
40
+
41
+ | Key / state | Function |
42
+ | --- | --- |
43
+ | `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element. |
44
+ | `Space` | Activates/Deactivates checkbox. |
45
+
46
+ ### ARIA enhancements
47
+
48
+ #### Internal **ARIA** that is managed by the component:
49
+
50
+ | ARIA | Usage |
51
+ | --- | --- |
52
+ | `aria-describedby="IDREF"` | References the accessible description of status messages. |
53
+ | `role="status"`, `role="alert"` | When `message` and `state` or `loading` prop change, the status message is announced. |
54
+ | `aria-hidden="true"` | If `required` attribute is set, the visible asterisk indicator is hidden from assistive technologies. |
55
+ | `aria-invalid="true"` | If `error` state is set. |
56
+
57
+ ## Development considerations
58
+
59
+ ### Disabled state
60
+
61
+ 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.
62
+
63
+ ### Common do's and don'ts
64
+
65
+ - **Do** provide a clear `label` that describes what the checkbox controls.
66
+ - **Do** use the component state/message API so validation and status changes are announced.
67
+ - **Do** use clear error wording that helps users recover.
68
+ - **Don't** use `hide-label` without an accessible name.
69
+ - **Don't** use `hide-label` when it is not clear what the checkbox controls.
70
+
71
+ ## Integration examples
72
+
73
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
74
+
75
+ ## API
76
+
77
+ ### Properties
78
+
79
+ | Property | Type | Default | Description |
80
+ | --- | --- | --- | --- |
81
+ | `checked` | `boolean` | `false` | Reflects the checkbox's current checked state and allows setting the initial checked value on load. |
82
+ | `compact` | `boolean` | `false` | Reduces the checkbox size and spacing for a more compact layout. |
83
+ | `disabled` | `boolean` | `false` | Disables the checkbox, preventing all interaction. The value is not submitted with the form. |
84
+ | `form` | `string` | `undefined` | Associates the checkbox with a form element by its ID when not directly nested inside it. |
85
+ | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
86
+ | `indeterminate` | `boolean` | `false` | Puts the checkbox into an indeterminate state, indicating that a group of child items is only partially selected. |
87
+ | `label` | `string` | `''` | Sets the visible label text displayed next to the checkbox. |
88
+ | `loading` _(experimental)_ | `boolean` | `false` | @experimental Disables the checkbox and displays a loading spinner to indicate an ongoing operation. |
89
+ | `message` | `string` | `''` | Sets the validation feedback message displayed below the checkbox when `state` is `success` or `error`. |
90
+ | `name` | `string` | `''` | Sets the name submitted with the form data to identify this checkbox's value on the server. |
91
+ | `required` | `boolean` | `false` | Marks the checkbox as required — form submission is blocked unless the checkbox is checked. |
92
+ | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state, controlling the visual appearance and style of the feedback message (`none`, `success`, `error`). |
93
+ | `value` | `string` | `'on'` | Sets the value submitted with the form data when the checkbox is checked. Unchecked checkboxes are excluded from form submissions. |
94
+
95
+ ### Events
96
+
97
+ | Event | Type | Description |
98
+ | --- | --- | --- |
99
+ | `blur` | `CustomEvent<CheckboxBlurEventDetail>`<br>`Event` | Emitted when the checkbox loses focus. |
100
+ | `change` | `CustomEvent<CheckboxChangeEventDetail>`<br>`Event` | Emitted when the user changes the checked state of the checkbox. |
101
+
102
+ ### Slots
103
+
104
+ | Slot | Required | Allowed tag names | Description |
105
+ | --- | --- | --- | --- |
106
+ | `label` | no | — | Shows a label. Only [phrasing content](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Content_categories#Phrasing_content) is allowed. |
107
+ | `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`). |
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-checkbox-border-color` | — | 🧪Experimental: Border colors of Checkbox. Should be used to override the default border color in different states (e.g., hover, focus, error), e.g. when the Checkbox is wrapped inside a custom label. |
115
+ | `--p-checkbox-background-color` | — | 🧪Experimental: Background color of Checkbox. |
116
+ | `--p-checkbox-icon-color` | — | 🧪Experimental: Checkmark icon color of Checkbox. |
117
+
118
+ ## Examples
119
+
120
+ | Example | When to use | File |
121
+ | --- | --- | --- |
122
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
123
+ | Form | The `p-checkbox` can be integrated into a form in two ways: **controlled** or **uncontrolled**, depending on your needs. | [./examples/Form.tsx](./examples/Form.tsx) |
124
+ | Indeterminate | Mask the visual appearance of a checkbox which has a state in-between checked and unchecked. | [./examples/Indeterminate.tsx](./examples/Indeterminate.tsx) |
125
+ | Slots | Use named slots when `label` or `message` need markup such as a link. | [./examples/Slots.tsx](./examples/Slots.tsx) |
126
+ | Custom wrapped label (🧪Experimental) | The `p-checkbox` component also supports a custom wrapped `label` by wrapping the component in a `label` tag. | [./examples/WrappedLabel.tsx](./examples/WrappedLabel.tsx) |
@@ -0,0 +1,17 @@
1
+ # p-crest accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PCrest href="/" aria-label="Porsche home"></PCrest>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```tsx
16
+ <PCrest href="/" aria={{'aria-label': 'Porsche home'}}></PCrest>
17
+ ```
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { PCrest } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PCrest href="https://porsche.com" className="p-static-md" aria={{'aria-label': 'Porsche Homepage'}}></PCrest>
8
+ </>
9
+ )
10
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { PCrest } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PCrest></PCrest>
8
+ </>
9
+ )
10
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { PCrest } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PCrest href="https://porsche.com" aria={{'aria-label': 'Porsche Homepage'}}></PCrest>
8
+ </>
9
+ )
10
+ }