@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
package/CHANGELOG.md CHANGED
@@ -14,6 +14,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [4.6.0-rc.1] - 2026-08-03
18
+
19
+ ### Added
20
+
21
+ - `Knowledge Skill`: Accessibility integration examples for each documented component, pairing anti-pattern and
22
+ recommended markup in the selected framework
23
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
24
+ - `pds-skill`: `--skill` option to link only the named skills instead of all discovered ones
25
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
26
+
27
+ ### Changed
28
+
29
+ - `Knowledge Skill`: Renamed from `porsche-design-system-components-{js|angular|react|vue}` to
30
+ `pds-knowledge-{js|angular|react|vue}`
31
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
32
+ - `Knowledge Skill`: Now shipped in the package's `skills/` directory with one directory per skill, replacing the single
33
+ `skill/` directory. Update any manually created symlink to the new location
34
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
35
+
36
+ ### Fixed
37
+
38
+ - `Segmented Control`: Improved `hover/selected` color visibility of items
39
+ ([#4610](https://github.com/porsche-design-system/porsche-design-system/pull/4610))
40
+
41
+ ## [4.6.0-rc.0] - 2026-07-21
42
+
43
+ ### Added
44
+
45
+ - `Knowledge Skill`: providing version-exact guidance for PDS components, stylesheets, design tokens, and styling
46
+ integrations
47
+ ([#4555](https://github.com/porsche-design-system/porsche-design-system/pull/4555))
48
+
17
49
  ## [4.5.0] - 2026-07-21
18
50
 
19
51
  ## [4.5.0-rc.1] - 2026-07-20
@@ -0,0 +1,346 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Links locally installed Porsche Design System wrapper skills into the consumer project.
4
+ // Every wrapper package exposes this same bin through the local node_modules/.bin directory;
5
+ // --package selects which installed wrapper supplies the skills, independently of which
6
+ // wrapper supplies the bin.
7
+ //
8
+ // --location is the destination parent directory for the skill links (e.g. `.claude/skills`,
9
+ // `.agents`, `.github/skills`). Relative locations resolve from the cwd.
10
+ //
11
+ // --skill may be repeated to install only named skills. Omit it to install all discovered skills.
12
+ //
13
+ // pds-skill --package <package> --location <dir> [--skill <name>...]
14
+ //
15
+ // This is the canonical source copied into all four wrapper package distributions by their
16
+ // `build:subPackages:skill:bin` steps.
17
+
18
+ const fs = require('node:fs');
19
+ const path = require('node:path');
20
+ const { parseArgs } = require('node:util');
21
+
22
+ const SUPPORTED_PACKAGES = [
23
+ '@porsche-design-system/components-js',
24
+ '@porsche-design-system/components-angular',
25
+ '@porsche-design-system/components-react',
26
+ '@porsche-design-system/components-vue',
27
+ ];
28
+ const USAGE = [
29
+ 'Usage: pds-skill --package <package> --location <dir> [--skill <name>...]',
30
+ '',
31
+ 'Required options:',
32
+ ' -p, --package <package> locally installed Porsche Design System wrapper',
33
+ ' -l, --location <dir> destination parent directory for the skill links',
34
+ '',
35
+ 'Options:',
36
+ ' -s, --skill <name> install only the named skill (repeatable); omit to install all',
37
+ ' -h, --help print this usage',
38
+ '',
39
+ `Supported packages: ${SUPPORTED_PACKAGES.join(', ')}`,
40
+ ].join('\n');
41
+
42
+ const fail = (message) => {
43
+ console.error(message);
44
+ process.exit(1);
45
+ };
46
+
47
+ const isMissingPathError = (error) => error.code === 'ENOENT' || error.code === 'ENOTDIR';
48
+ const isPermissionError = (error) => error.code === 'EACCES' || error.code === 'EPERM';
49
+
50
+ const parseOptions = (args) => {
51
+ try {
52
+ return parseArgs({
53
+ args,
54
+ options: {
55
+ package: { type: 'string', short: 'p' },
56
+ location: { type: 'string', short: 'l' },
57
+ skill: { type: 'string', short: 's', multiple: true },
58
+ help: { type: 'boolean', short: 'h' },
59
+ },
60
+ strict: true,
61
+ allowPositionals: false,
62
+ }).values;
63
+ } catch (error) {
64
+ fail(`${error.message}\n${USAGE}`);
65
+ }
66
+ };
67
+
68
+ const readPackageManifest = (packageJsonPath) => {
69
+ let content;
70
+ try {
71
+ content = fs.readFileSync(packageJsonPath, 'utf8');
72
+ } catch (error) {
73
+ if (isMissingPathError(error)) {
74
+ return undefined;
75
+ }
76
+ if (isPermissionError(error)) {
77
+ fail(`Cannot read ${packageJsonPath}: permission denied. Check the package permissions and re-run.`);
78
+ }
79
+ throw error;
80
+ }
81
+
82
+ try {
83
+ return JSON.parse(content);
84
+ } catch (error) {
85
+ if (error instanceof SyntaxError) {
86
+ fail(`Cannot read ${packageJsonPath}: invalid JSON. Reinstall the package and re-run.`);
87
+ }
88
+ throw error;
89
+ }
90
+ };
91
+
92
+ /** Parse the frontmatter `name:` value from SKILL.md content. Returns null if not found. */
93
+ const parseFrontmatterName = (content) => {
94
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
95
+ if (!fmMatch) {
96
+ return null;
97
+ }
98
+ const nameMatch = fmMatch[1].match(/^name:\s*(\S+)/m);
99
+ return nameMatch ? nameMatch[1] : null;
100
+ };
101
+
102
+ /**
103
+ * Validate that the SKILL.md at skillMdPath is a readable regular file with a frontmatter name
104
+ * matching expectedName. Calls fail() on any violation.
105
+ */
106
+ const validateSkillMd = (skillMdPath, expectedName) => {
107
+ let stats;
108
+ try {
109
+ stats = fs.statSync(skillMdPath);
110
+ } catch (error) {
111
+ if (isMissingPathError(error)) {
112
+ fail(`The installed package does not ship a skill at ${skillMdPath}. Upgrade the package and re-run.`);
113
+ }
114
+ if (isPermissionError(error)) {
115
+ fail(`Cannot read ${skillMdPath}: permission denied. Check the package permissions and re-run.`);
116
+ }
117
+ throw error;
118
+ }
119
+
120
+ if (!stats.isFile()) {
121
+ fail(`${skillMdPath} is not a file. Reinstall the package and re-run.`);
122
+ }
123
+
124
+ let content;
125
+ try {
126
+ content = fs.readFileSync(skillMdPath, 'utf8');
127
+ } catch (error) {
128
+ if (isPermissionError(error)) {
129
+ fail(`Cannot read ${skillMdPath}: permission denied. Check the package permissions and re-run.`);
130
+ }
131
+ throw error;
132
+ }
133
+
134
+ const name = parseFrontmatterName(content);
135
+ if (name !== expectedName) {
136
+ fail(
137
+ `${skillMdPath} has frontmatter name "${name ?? '(none)'}" but its directory is "${expectedName}". Reinstall the package and re-run.`
138
+ );
139
+ }
140
+ };
141
+
142
+ /** Preflight the destination link path. Fails if something other than a symlink (or nothing) exists there. */
143
+ const preflightDestLink = (linkPath, show) => {
144
+ let existing;
145
+ try {
146
+ existing = fs.lstatSync(linkPath);
147
+ } catch (error) {
148
+ if (error.code === 'ENOENT') {
149
+ return;
150
+ }
151
+ if (isPermissionError(error)) {
152
+ fail(`Cannot inspect ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
153
+ }
154
+ throw error;
155
+ }
156
+ if (!existing.isSymbolicLink()) {
157
+ fail(`Refusing to replace ${show(linkPath)}: it exists and is not a symlink. Remove it manually and re-run.`);
158
+ }
159
+ };
160
+
161
+ /** Resolve the installed package directory by walking up from cwd. Fails if not found. */
162
+ const resolvePackageDir = (packageName, cwd) => {
163
+ if (!SUPPORTED_PACKAGES.includes(packageName)) {
164
+ fail(`Unsupported package: ${packageName}\n${USAGE}`);
165
+ }
166
+
167
+ let dir = cwd;
168
+ for (;;) {
169
+ const packageDir = path.join(dir, 'node_modules', ...packageName.split('/'));
170
+ const packageJsonPath = path.join(packageDir, 'package.json');
171
+ const pkg = readPackageManifest(packageJsonPath);
172
+ if (pkg !== undefined) {
173
+ const installedName = pkg && typeof pkg === 'object' ? pkg.name : undefined;
174
+ if (installedName !== packageName) {
175
+ fail(`Expected ${packageName} at ${packageDir}, but found ${installedName || 'a package without a name'}.`);
176
+ }
177
+ return packageDir;
178
+ }
179
+
180
+ const parent = path.dirname(dir);
181
+ if (parent === dir) {
182
+ fail(`Cannot find ${packageName} from ${cwd}. Install it in this project or workspace and re-run.`);
183
+ }
184
+ dir = parent;
185
+ }
186
+ };
187
+
188
+ /** Discover sorted child directory names under skillsDir. Returns empty array if the dir is absent. */
189
+ const discoverSkillNames = (skillsDir) => {
190
+ let entries;
191
+ try {
192
+ entries = fs.readdirSync(skillsDir, { withFileTypes: true });
193
+ } catch (error) {
194
+ if (isMissingPathError(error)) {
195
+ return [];
196
+ }
197
+ if (isPermissionError(error)) {
198
+ fail(`Cannot read ${skillsDir}: permission denied. Check the package permissions and re-run.`);
199
+ }
200
+ throw error;
201
+ }
202
+ return entries
203
+ .filter((e) => e.isDirectory())
204
+ .map((e) => e.name)
205
+ .sort();
206
+ };
207
+
208
+ const main = () => {
209
+ const options = parseOptions(process.argv.slice(2));
210
+ if (options.help) {
211
+ console.log(USAGE);
212
+ return;
213
+ }
214
+
215
+ const missingOptions = [!options.package && '--package', !options.location && '--location'].filter(Boolean);
216
+ if (missingOptions.length > 0) {
217
+ fail(`Missing required option${missingOptions.length > 1 ? 's' : ''}: ${missingOptions.join(' and ')}\n${USAGE}`);
218
+ }
219
+
220
+ if (process.versions.pnp) {
221
+ fail(
222
+ "Yarn Plug'n'Play is not supported because an operating-system symlink cannot target Yarn's virtual filesystem. Use `nodeLinker: node-modules`."
223
+ );
224
+ }
225
+
226
+ const cwd = process.cwd();
227
+ const packageName = options.package;
228
+ const destArg = options.location;
229
+ const requestedSkills = options.skill ?? [];
230
+
231
+ const packageDir = resolvePackageDir(packageName, cwd);
232
+ const skillsDir = path.join(packageDir, 'skills');
233
+ const discovered = discoverSkillNames(skillsDir);
234
+
235
+ if (discovered.length === 0) {
236
+ fail(`The installed package does not ship any skills at ${skillsDir}. Upgrade the package and re-run.`);
237
+ }
238
+
239
+ // Validate --skill filters; unknown names fail clearly.
240
+ if (requestedSkills.length > 0) {
241
+ const unknown = requestedSkills.filter((s) => !discovered.includes(s));
242
+ if (unknown.length > 0) {
243
+ fail(
244
+ `Unknown skill${unknown.length > 1 ? 's' : ''}: ${unknown.join(', ')}. ` +
245
+ `Available: ${[...discovered].sort().join(', ')}.`
246
+ );
247
+ }
248
+ }
249
+
250
+ // Deterministic sorted selection.
251
+ const selected =
252
+ requestedSkills.length > 0
253
+ ? [...new Set(requestedSkills)].filter((s) => discovered.includes(s)).sort()
254
+ : discovered;
255
+
256
+ const destDir = path.isAbsolute(destArg) ? destArg : path.resolve(cwd, destArg);
257
+
258
+ // Prefer a cwd-relative path in messages; fall back to absolute when outside.
259
+ const show = (target) => {
260
+ const rel = path.relative(cwd, target);
261
+ return rel && !rel.startsWith('..') && !path.isAbsolute(rel) ? rel : target;
262
+ };
263
+
264
+ // Preflight every selected skill tree before touching the destination at all.
265
+ for (const skillName of selected) {
266
+ validateSkillMd(path.join(skillsDir, skillName, 'SKILL.md'), skillName);
267
+ }
268
+
269
+ try {
270
+ fs.mkdirSync(destDir, { recursive: true });
271
+ } catch (error) {
272
+ if (error.code === 'ENOTDIR' || error.code === 'EEXIST') {
273
+ fail(`Cannot create ${show(destDir)}: a parent path exists as a file, not a directory. Remove it and re-run.`);
274
+ }
275
+ if (isPermissionError(error)) {
276
+ fail(`Cannot create ${show(destDir)}: permission denied. Check the destination permissions and re-run.`);
277
+ }
278
+ throw error;
279
+ }
280
+
281
+ // Preflight all destination links before any mutation.
282
+ for (const skillName of selected) {
283
+ preflightDestLink(path.join(destDir, skillName), show);
284
+ }
285
+
286
+ // All preflights passed — perform link operations.
287
+ const linkType = process.platform === 'win32' ? 'junction' : 'dir';
288
+ for (const skillName of selected) {
289
+ const skillDir = path.join(skillsDir, skillName);
290
+ const linkPath = path.join(destDir, skillName);
291
+
292
+ // Idempotent: repoint an existing symlink (including a dangling one), but never touch a
293
+ // real directory a user may have hand-maintained — the preflight above already rejected that.
294
+ let existingLink = null;
295
+ try {
296
+ existingLink = fs.lstatSync(linkPath);
297
+ } catch (error) {
298
+ if (error.code !== 'ENOENT') {
299
+ throw error;
300
+ }
301
+ }
302
+
303
+ if (existingLink?.isSymbolicLink()) {
304
+ try {
305
+ if (fs.realpathSync(linkPath) === fs.realpathSync(skillDir)) {
306
+ console.log(`Porsche Design System skill already linked: ${show(linkPath)} -> ${skillDir}`);
307
+ continue;
308
+ }
309
+ } catch (error) {
310
+ if (error.code !== 'ENOENT') {
311
+ if (isPermissionError(error)) {
312
+ fail(`Cannot inspect ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
313
+ }
314
+ throw error;
315
+ }
316
+ // Dangling symlink — fall through to replace it.
317
+ }
318
+ try {
319
+ fs.rmSync(linkPath, { force: true });
320
+ } catch (error) {
321
+ if (isPermissionError(error)) {
322
+ fail(`Cannot replace ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
323
+ }
324
+ throw error;
325
+ }
326
+ }
327
+
328
+ try {
329
+ fs.symlinkSync(skillDir, linkPath, linkType);
330
+ } catch (error) {
331
+ if (process.platform === 'win32' && error.code === 'EPERM') {
332
+ fail(
333
+ `Could not create the skill junction on Windows (EPERM). Check the destination permissions or create it manually:\n mklink /J "${linkPath}" "${skillDir}"`
334
+ );
335
+ }
336
+ if (isPermissionError(error)) {
337
+ fail(`Cannot create ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
338
+ }
339
+ throw error;
340
+ }
341
+
342
+ console.log(`Linked Porsche Design System skill: ${show(linkPath)} -> ${skillDir}`);
343
+ }
344
+ };
345
+
346
+ main();
@@ -52,7 +52,7 @@ export type PButtonProps = BaseProps & {
52
52
  */
53
53
  value?: string;
54
54
  /**
55
- * Sets the visual style variant of the button (e.g. `primary`, `secondary`, `tertiary`).
55
+ * Sets the visual style variant of the button (`primary` or `secondary`).
56
56
  * @default 'primary'
57
57
  */
58
58
  variant?: ButtonVariant;
@@ -109,7 +109,7 @@ export declare const PButton: import("react").ForwardRefExoticComponent<Omit<imp
109
109
  */
110
110
  value?: string;
111
111
  /**
112
- * Sets the visual style variant of the button (e.g. `primary`, `secondary`, `tertiary`).
112
+ * Sets the visual style variant of the button (`primary` or `secondary`).
113
113
  * @default 'primary'
114
114
  */
115
115
  variant?: ButtonVariant;
@@ -42,7 +42,7 @@ export type PLinkProps = BaseProps & {
42
42
  */
43
43
  target?: LinkTarget;
44
44
  /**
45
- * Sets the visual style variant of the link (e.g. `primary`, `secondary`, `tertiary`).
45
+ * Sets the visual style variant of the link (`primary` or `secondary`).
46
46
  * @default 'primary'
47
47
  */
48
48
  variant?: LinkVariant;
@@ -89,7 +89,7 @@ export declare const PLink: import("react").ForwardRefExoticComponent<Omit<impor
89
89
  */
90
90
  target?: LinkTarget;
91
91
  /**
92
- * Sets the visual style variant of the link (e.g. `primary`, `secondary`, `tertiary`).
92
+ * Sets the visual style variant of the link (`primary` or `secondary`).
93
93
  * @default 'primary'
94
94
  */
95
95
  variant?: LinkVariant;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@porsche-design-system/components-react",
3
- "version": "4.5.0",
3
+ "version": "4.6.0-rc.1",
4
4
  "description": "Porsche Design System is a component library designed to help developers create the best experience for software or services distributed by Dr. Ing. h.c. F. Porsche AG.",
5
5
  "keywords": [
6
6
  "porsche",
@@ -21,7 +21,7 @@
21
21
  "url": "https://github.com/porsche-design-system/porsche-design-system"
22
22
  },
23
23
  "dependencies": {
24
- "@porsche-design-system/components-js": "4.5.0"
24
+ "@porsche-design-system/components-js": "4.6.0-rc.1"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "ag-grid-community": ">= 36.0.0 <37.0.0",
@@ -134,6 +134,7 @@
134
134
  },
135
135
  "style": "./stylesheets/index.css",
136
136
  "bin": {
137
- "patchRemixRunProcessBrowserGlobalIdentifier": "./bin/patchRemixRunProcessBrowserGlobalIdentifier.js"
137
+ "patchRemixRunProcessBrowserGlobalIdentifier": "./bin/patchRemixRunProcessBrowserGlobalIdentifier.js",
138
+ "pds-skill": "./bin/pds-skill.js"
138
139
  }
139
140
  }
@@ -0,0 +1,136 @@
1
+ ---
2
+ name: pds-knowledge-react
3
+ description: Build, style, or review web user interfaces with the Porsche Design System (PDS), or author and review documents that specify PDS behavior. Use whenever a task touches frontend UI — adding or changing components (buttons, forms, inputs, cards, tables, modals, navigation, layouts), styling with Tailwind, SCSS, vanilla-extract or Emotion, applying design tokens, or scaffolding a new page or form. Also use whenever a requirement, spec, design doc, or acceptance criteria names a PDS component, prop, token, or theming. Prefer PDS for new UI even when it is not named by the user. Do not activate for backend or non-UI logic, unrelated tests or tooling, documentation or prose that does not assert PDS component, prop, token, or theming behavior, work that clearly targets a different UI library, or when the user opts out of PDS.
4
+ ---
5
+
6
+ # Porsche Design System (`react`)
7
+
8
+ Version-exact knowledge of the installed Porsche Design System: every fact, prop, token and example here matches the installed package exactly — never mix guidance across versions. Every reference path is relative to this skill root unless noted otherwise.
9
+
10
+ This skill ships inside the installed wrapper package alongside its inspectable package artifacts: the typings, `component-meta` (`@porsche-design-system/components-js/meta`), the SCSS partials (`@porsche-design-system/components-js/scss`), the design tokens (`../../tokens`), the Tailwind theme (`../../tailwindcss/index.css`) and the shipped global CSS. The underlying Stencil component implementation is not included in the npm package; it is loaded from the Porsche Design System CDN at runtime. The wrapper's own `meta` and `scss` are re-export shims of the same-version `@porsche-design-system/components-js` peer, so those two point at the peer directly.
11
+
12
+ Prefer Porsche Design System components and tokens for new UI, even when the user does not name PDS. Do not rewrite non-PDS UI unasked, and do not hijack work that targets another library.
13
+
14
+ ## Coverage and fallbacks
15
+
16
+ This skill currently covers components, global stylesheets and theming, tokens, and styling integrations. It does not yet include complete getting-started, setup, and installation guidance; the v3-to-v4 migration guide; the changelog; partials; patterns and templates; the AG Grid theme; or the Storefront’s Must Know and Help sections.
17
+
18
+ Before using documentation outside this skill or the installed package, match it to the installed PDS version. This skill was generated for `4.6.0-rc.1`; prefer the [exact-version Porsche Design System Storefront](https://designsystem.porsche.com/v4.6.0-rc.1/). Major-version URLs such as `/v4/` always serve the latest v4 release and may describe APIs or setup introduced after the installed version. Use them only as a fallback and verify relevant details against the installed package.
19
+
20
+ For runnable patterns and templates, consult the [Porsche Design System examples repository](https://github.com/porsche-design-system/examples), selecting a release tag or commit that matches the installed package instead of assuming its default branch is compatible. For release-specific changes, read `../../CHANGELOG.md`.
21
+
22
+ For exact API facts, inspect the installed typings and metadata first. When readable implementation details are necessary, use the [exact-version component source](https://github.com/porsche-design-system/porsche-design-system/tree/v4.6.0-rc.1/packages/components/src/components) under the repository's `packages/components/src/components/<component>` directory. Do not use the default branch, which may represent a newer release.
23
+
24
+ For deployed browser behavior, inspect component requests in the Network panel. Treat these minified, content-hashed CDN artifacts as a debugging fallback; use the exact-version repository source for readable implementation details.
25
+
26
+ ## Components
27
+
28
+ The Porsche Design System ships 58 components. Open a component's reference for its props, slots, events, CSS variables and examples before using it. Each reference's "Examples" table links runnable, framework-specific example files under `references/components/<tag>/examples/`.
29
+
30
+ `component-meta` is authoritative: when it disagrees with the examples or prose here, follow `component-meta` (raw data at `@porsche-design-system/components-js/meta`).
31
+
32
+ Every component is validated against the PDS accessibility test matrix (automated: AXE-Core WCAG 2.2 AA, high-contrast, text-zoom; manual: keyboard, screen reader). A component reference carries a `## Tests` section only to flag an exception (e.g. partial high-contrast support).
33
+
34
+ **Framework syntax** (this differs from the custom-element tags the references show):
35
+ - Import each component by name and use its **PascalCase** React component: `p-button` → `<PButton>`, `p-input-text` → `<PInputText>`.
36
+ - Props are **camelCase** (`disableBackdropClick`, not `disable-backdrop-click`); use `className` for CSS classes and pass ARIA via the `aria={{ ... }}` prop.
37
+ - Events are `on<Event>` handler props — the `dismiss` event is `onDismiss`, `update` is `onUpdate`.
38
+ - Place a child into a named slot with the `slot="..."` attribute.
39
+
40
+ Sub-components (e.g. `p-table-row`, `p-select-option`, `p-tabs-item`) have no separate row — they are only valid inside a parent, so their API is documented under a "Sub-components" section in that parent's reference.
41
+
42
+ | Component | Summary | Reference |
43
+ | --- | --- | --- |
44
+ | `p-accordion` | The `p-accordion` is a component that reveals or hides associated sections of content. | [p-accordion.md](references/components/p-accordion/p-accordion.md) |
45
+ | `p-ai-tag` | `p-ai-tag` is used to indicate AI-generated or AI-modified content. | [p-ai-tag.md](references/components/p-ai-tag/p-ai-tag.md) |
46
+ | `p-banner` | 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. | [p-banner.md](references/components/p-banner/p-banner.md) |
47
+ | `p-button` | The `p-button` component is essential for performing form or **interaction** events. | [p-button.md](references/components/p-button/p-button.md) |
48
+ | `p-button-pure` | The `p-button-pure` component is essential to perform events for **interactions**. | [p-button-pure.md](references/components/p-button-pure/p-button-pure.md) |
49
+ | `p-button-tile` | The `p-button-tile` is an interactive component that displays a provided image to tease content and performs form or **interaction** events within one container. | [p-button-tile.md](references/components/p-button-tile/p-button-tile.md) |
50
+ | `p-canvas` _(experimental)_ | The `p-canvas` is an experimental layout component for productive web applications. | [p-canvas.md](references/components/p-canvas/p-canvas.md) |
51
+ | `p-carousel` | 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. | [p-carousel.md](references/components/p-carousel/p-carousel.md) |
52
+ | `p-checkbox` | The `p-checkbox` component wraps the native HTML input type `checkbox` form element. | [p-checkbox.md](references/components/p-checkbox/p-checkbox.md) |
53
+ | `p-crest` | The `p-crest` gives the Porsche brand a distinctive look, sets it apart from others within the overall external image and represents the quality of the product. | [p-crest.md](references/components/p-crest/p-crest.md) |
54
+ | `p-display` _(deprecated)_ | `p-display` is used to highlight and specify heading styling and hierarchy in documents. | [p-display.md](references/components/p-display/p-display.md) |
55
+ | `p-divider` | The `p-divider` is used as 'horizontal or vertical rule' and displays a dividing line. | [p-divider.md](references/components/p-divider/p-divider.md) |
56
+ | `p-drilldown` _(experimental)_ | The `p-drilldown` component is meant for displaying an infinite multilevel structure in a drilldown menu that overlays the page content from the start side of the screen. | [p-drilldown.md](references/components/p-drilldown/p-drilldown.md) |
57
+ | `p-fieldset` | The `p-fieldset` is a grouping component for wrapping contextual associated form elements. | [p-fieldset.md](references/components/p-fieldset/p-fieldset.md) |
58
+ | `p-flag` | The `p-flag` component displays a country or region flag and should be used to communicate geographic context visually. | [p-flag.md](references/components/p-flag/p-flag.md) |
59
+ | `p-flyout` | The `p-flyout` is a overlay from the left or right side of the screen. | [p-flyout.md](references/components/p-flyout/p-flyout.md) |
60
+ | `p-heading` | `p-heading` is used to highlight and specify heading styling and hierarchy in documents. | [p-heading.md](references/components/p-heading/p-heading.md) |
61
+ | `p-icon` | Along with other Porsche basic elements - such as colors, typography and the Porsche marque - icons are core components of the Porsche design. | [p-icon.md](references/components/p-icon/p-icon.md) |
62
+ | `p-inline-notification` | The `p-inline-notification` is a controlled component that provides action-based feedback messages (e.g. after performing a task) or to convey informational and/or critical notification like some site related topics. | [p-inline-notification.md](references/components/p-inline-notification/p-inline-notification.md) |
63
+ | `p-input-date` | The `p-input-date` component provides a versatile, user‑friendly interface for entering date values. | [p-input-date.md](references/components/p-input-date/p-input-date.md) |
64
+ | `p-input-email` | The `p-input-email` component provides a user-friendly, accessible interface for entering valid email addresses. | [p-input-email.md](references/components/p-input-email/p-input-email.md) |
65
+ | `p-input-month` | The `p-input-month` component provides a versatile, user‑friendly interface for entering month values. | [p-input-month.md](references/components/p-input-month/p-input-month.md) |
66
+ | `p-input-number` | The `p-input-number` component provides a versatile, user‑friendly interface for entering numeric values. | [p-input-number.md](references/components/p-input-number/p-input-number.md) |
67
+ | `p-input-password` | The `p-input-password` component enables secure password entry by obscuring the typed characters. | [p-input-password.md](references/components/p-input-password/p-input-password.md) |
68
+ | `p-input-search` | The `p-input-search` component offers a versatile, user-friendly interface for entering and submitting search queries. | [p-input-search.md](references/components/p-input-search/p-input-search.md) |
69
+ | `p-input-tel` | The `p-input-tel` component provides a user-friendly, accessible interface for entering valid telephone numbers. | [p-input-tel.md](references/components/p-input-tel/p-input-tel.md) |
70
+ | `p-input-text` | The `p-input-text` component provides a versatile, user‑friendly interface for entering freeform text. | [p-input-text.md](references/components/p-input-text/p-input-text.md) |
71
+ | `p-input-time` | The `p-input-time` component provides a versatile, user‑friendly interface for entering time values. | [p-input-time.md](references/components/p-input-time/p-input-time.md) |
72
+ | `p-input-url` | The `p-input-url` component provides a user-friendly, accessible interface for entering valid website URLs. | [p-input-url.md](references/components/p-input-url/p-input-url.md) |
73
+ | `p-input-week` | The `p-input-week` component provides a versatile, user‑friendly interface for entering week values. | [p-input-week.md](references/components/p-input-week/p-input-week.md) |
74
+ | `p-link` | The `p-link` component is essential to perform changes in **page routes**. | [p-link.md](references/components/p-link/p-link.md) |
75
+ | `p-link-pure` | The `p-link-pure` component is essential for performing changes in **page routes**. | [p-link-pure.md](references/components/p-link-pure/p-link-pure.md) |
76
+ | `p-link-tile` | The `p-link-tile` is a navigational component that displays a provided image to tease content and navigate to further information within one container. | [p-link-tile.md](references/components/p-link-tile/p-link-tile.md) |
77
+ | `p-link-tile-product` _(experimental)_ | The `p-link-tile-product` is a navigational component designed to showcase a featured product within a store. | [p-link-tile-product.md](references/components/p-link-tile-product/p-link-tile-product.md) |
78
+ | `p-modal` | The `p-modal` is a temporary overlay to focus the user's attention on one task while interactions with the underlying page are blocked. | [p-modal.md](references/components/p-modal/p-modal.md) |
79
+ | `p-model-signature` | The `p-model-signature` component is purely visual and renders the different signatures of Porsche car models. | [p-model-signature.md](references/components/p-model-signature/p-model-signature.md) |
80
+ | `p-multi-select` | The `p-multi-select` component is a versatile custom form element that facilitates the selection of multiple options. | [p-multi-select.md](references/components/p-multi-select/p-multi-select.md) |
81
+ | `p-pagination` | The `p-pagination` component divides large content sets into pages and should be used when all items cannot be displayed at once. | [p-pagination.md](references/components/p-pagination/p-pagination.md) |
82
+ | `p-pin-code` | The `p-pin-code` component is optimized for entering sequences of digits. | [p-pin-code.md](references/components/p-pin-code/p-pin-code.md) |
83
+ | `p-popover` | The `p-popover` component displays additional contextual content in an overlay and should be used when users need optional details without leaving their current context. | [p-popover.md](references/components/p-popover/p-popover.md) |
84
+ | `p-radio-group` | The `p-radio-group` component is a versatile custom form element that enables the selection of a single option. | [p-radio-group.md](references/components/p-radio-group/p-radio-group.md) |
85
+ | `p-scroller` | The `p-scroller` component forces its child nodes to be rendered horizontally next to each other. | [p-scroller.md](references/components/p-scroller/p-scroller.md) |
86
+ | `p-segmented-control` | The `p-segmented-control` component is similar to the native `select` element while showing all available options right away. | [p-segmented-control.md](references/components/p-segmented-control/p-segmented-control.md) |
87
+ | `p-select` | The `p-select` component is a versatile custom form element that enables the selection of a single option. | [p-select.md](references/components/p-select/p-select.md) |
88
+ | `p-sheet` | The `p-sheet` is a temporary overlay to focus the user's attention on one or multiple tasks while the underlying page is still visible but interactions with it are blocked. | [p-sheet.md](references/components/p-sheet/p-sheet.md) |
89
+ | `p-spinner` | The `p-spinner` component indicates an indeterminate ongoing process and should be used when users must wait for loading or processing to finish. | [p-spinner.md](references/components/p-spinner/p-spinner.md) |
90
+ | `p-stepper-horizontal` | The `p-stepper-horizontal` component displays progress through a sequence of logical and numbered steps. | [p-stepper-horizontal.md](references/components/p-stepper-horizontal/p-stepper-horizontal.md) |
91
+ | `p-switch` | The `p-switch` component is a control that is used to quickly switch between two possible states. | [p-switch.md](references/components/p-switch/p-switch.md) |
92
+ | `p-table` | The `p-table` component displays tabular data and offers column-wise sorting options. | [p-table.md](references/components/p-table/p-table.md) |
93
+ | `p-tabs` | The `p-tabs` component makes it easy to explore and switch between different views. | [p-tabs.md](references/components/p-tabs/p-tabs.md) |
94
+ | `p-tabs-bar` | The `p-tabs-bar` component is a styled button/link list for multiple purposes. | [p-tabs-bar.md](references/components/p-tabs-bar/p-tabs-bar.md) |
95
+ | `p-tag` | `p-tag` is used to label, categorize, or organize items by using keywords that describe them. | [p-tag.md](references/components/p-tag/p-tag.md) |
96
+ | `p-tag-dismissible` | `p-tag-dismissible` is used in contexts where the user can actively remove a tag. | [p-tag-dismissible.md](references/components/p-tag-dismissible/p-tag-dismissible.md) |
97
+ | `p-text` | `p-text` is used to specify paragraph styling in documents. | [p-text.md](references/components/p-text/p-text.md) |
98
+ | `p-text-list` | The `p-text-list` component is used to display listed data in form of an unordered or ordered list. | [p-text-list.md](references/components/p-text-list/p-text-list.md) |
99
+ | `p-textarea` | The `p-textarea` component is a multi-line text input control. | [p-textarea.md](references/components/p-textarea/p-textarea.md) |
100
+ | `p-toast` | The `p-toast` component manages both, the queue and display of toast messages. | [p-toast.md](references/components/p-toast/p-toast.md) |
101
+ | `p-wordmark` | The `p-wordmark` gives the Porsche brand a distinctive look, sets it apart from others within the overall external image and represents the quality of the product. | [p-wordmark.md](references/components/p-wordmark/p-wordmark.md) |
102
+
103
+ ## Server-side rendering (SSR)
104
+
105
+ React applications that render on the server — Next.js, Remix, or React Router with SSR enabled — must import `PorscheDesignSystemProvider` and every PDS component from `@porsche-design-system/components-react/ssr`. Use the package root only for client-rendered React applications; do not mix the two entry points.
106
+
107
+ ```tsx
108
+ import { PButton, PorscheDesignSystemProvider } from '@porsche-design-system/components-react/ssr';
109
+ ```
110
+
111
+ On the server, the `/ssr` build emits component markup and styles as Declarative Shadow DOM so the browser can create the Shadow DOM before JavaScript runs. In the browser, it initializes like the standard React wrapper. The framework build must replace `process.browser` for its server and client targets and eliminate the unused branch.
112
+
113
+ Framework setup differs. Follow the [Next.js integration guide](https://designsystem.porsche.com/v4.6.0-rc.1/developing/next-js/getting-started/) or the [React Router integration guide](https://designsystem.porsche.com/v4.6.0-rc.1/developing/react-router/getting-started/). Remix users should follow the React Router guidance because Remix v2 was upstreamed into React Router.
114
+
115
+ ## Stylesheets
116
+
117
+ The required global stylesheets every component depends on (CSS variables, font-face, normalize/reset) and light/dark theming via the `.scheme-*` classes and `color-scheme`. Open this whenever installing or setting up PDS, before rendering any component, when components look unstyled or use the wrong font/colors, or for anything about themes, dark mode, or color scheme — it applies to most PDS work. See [stylesheets.md](references/stylesheets.md) for the exact files, their import order and the full `.scheme-*` list.
118
+
119
+ **Theming is one mechanism — CSS `color-scheme`, nothing else** (the `.scheme-*` mechanics live in [stylesheets.md](references/stylesheets.md)). There is **no** `theme` prop — not on `PorscheDesignSystemProvider` (it takes only `prefix` and `cdn`) and not on components. A `theme="light|dark|auto"` prop existed in earlier majors and was removed; if you recall one, it is a stale prior — do not add it, verify against the installed types.
120
+
121
+ ## Tokens
122
+
123
+ Design tokens — the source values for color, spacing, typography, motion, breakpoints and more, provided as JS constants. The entire system is built on these tokens: the global stylesheets, the components and the custom styling themes all depend on them. They can also be used standalone to support other styling solutions or to build custom UI directly. Open [tokens.md](references/tokens.md) when using tokens directly in custom UI.
124
+
125
+ ## Styling
126
+
127
+ The Porsche Design System offers a ready-made integration for four styling solutions. Use them to build layout and custom components or patterns not yet available in the component library — typography, surfaces, boxes, the layout grid, spacing and responsive breakpoints. They are independent of the components, but build on the same design tokens and the same `color-scheme` (light/dark) theming (see the **Stylesheets** section above), so custom UI shares the exact palette, spacing and typography as PDS components. Pick one solution per project and open its reference for setup and the full catalog.
128
+
129
+ Note: the code examples in the component references use PDS Tailwind utility classes (e.g. `flex`, `flex-col`, `gap-fluid-sm`) for layout. These only take effect with the Tailwind CSS solution installed (`references/styles/tailwindcss.md`) — without it they are inert, so replace them with your own layout CSS.
130
+
131
+ | Styling solution | Use this when | Reference |
132
+ | --- | --- | --- |
133
+ | Tailwind CSS | utility-first styling on a PDS Tailwind v4 theme | [tailwindcss.md](references/styles/tailwindcss.md) |
134
+ | SCSS | Sass variables and mixins under the `pds` namespace | [scss.md](references/styles/scss.md) |
135
+ | vanilla-extract | typed tokens and utilities in `*.css.ts` files | [vanilla-extract.md](references/styles/vanilla-extract.md) |
136
+ | Emotion | tokens and utilities in `css`/`styled` styles | [emotion.md](references/styles/emotion.md) |
@@ -0,0 +1,63 @@
1
+ # p-accordion accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Accordion summary without semantic heading
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PAccordion>
11
+ <span slot="summary">
12
+ Delivery options
13
+ </span>
14
+ <PText>
15
+ Content about delivery.
16
+ </PText>
17
+ </PAccordion>
18
+ ```
19
+
20
+ #### ✅ Recommended
21
+
22
+ ```tsx
23
+ <PAccordion>
24
+ <PHeading slot="summary" tag="h2" size="sm">
25
+ Delivery options
26
+ </PHeading>
27
+ <PText>
28
+ Content about delivery.
29
+ </PText>
30
+ </PAccordion>
31
+ ```
32
+
33
+ ### Skipped heading level
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```tsx
38
+ <PHeading tag="h1">
39
+ Configure your Porsche
40
+ </PHeading>
41
+
42
+ <PAccordion>
43
+ <PHeading slot="summary" tag="h4" size="sm">
44
+ Delivery options
45
+ </PHeading>
46
+ ...
47
+ </PAccordion>
48
+ ```
49
+
50
+ #### ✅ Recommended
51
+
52
+ ```tsx
53
+ <PHeading tag="h1">
54
+ Configure your Porsche
55
+ </PHeading>
56
+
57
+ <PAccordion>
58
+ <PHeading slot="summary" tag="h2" size="sm">
59
+ Delivery options
60
+ </PHeading>
61
+ ...
62
+ </PAccordion>
63
+ ```