@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,22 @@
1
+ import React from 'react';
2
+ import { useState } from 'react';
3
+ import { PLinkTileProduct, PTag, type LinkTileProductLikeEvent } from '@porsche-design-system/components-react';
4
+
5
+ export const Example = () => {
6
+ const [liked, setLiked] = useState(false);
7
+
8
+ const onLike = (e: CustomEvent<LinkTileProductLikeEvent>) => {
9
+ setLiked(!e.detail.liked);
10
+ }
11
+
12
+ return (
13
+ <>
14
+ <PLinkTileProduct liked={liked} heading="Some product" price="718,00 €" priceOriginal="911,00 €" description="Some description" href="https://porsche.com" onLike={onLike}>
15
+ <PTag slot="header" color="background-base">
16
+ New
17
+ </PTag>
18
+ <img src="assets/placeholder_800x900.svg" width={800} height={900} alt="Some alt text" />
19
+ </PLinkTileProduct>
20
+ </>
21
+ )
22
+ }
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { useState } from 'react';
3
+ import { PLinkTileProduct, type LinkTileProductLikeEvent } from '@porsche-design-system/components-react';
4
+
5
+ export const Example = () => {
6
+ const [liked, setLiked] = useState(false);
7
+
8
+ const onLike = (e: CustomEvent<LinkTileProductLikeEvent>) => {
9
+ setLiked(!e.detail.liked);
10
+ }
11
+
12
+ return (
13
+ <>
14
+ <PLinkTileProduct liked={liked} heading="Some product" price="718,00 €" priceOriginal="911,00 €" description="Some description" onLike={onLike}>
15
+ <a slot="anchor" href="https://porsche.com">
16
+ Weekender, sale price 718,00 €, original price
17
+ <s>
18
+ 911,00 €
19
+ </s>
20
+ </a>
21
+ <img src="assets/placeholder_800x900.svg" width={800} height={900} alt="Some alt text" />
22
+ </PLinkTileProduct>
23
+ </>
24
+ )
25
+ }
@@ -0,0 +1,93 @@
1
+ # p-link-tile-product
2
+
3
+ > **Experimental:** This component is experimental — its API may change in any release. Avoid relying on it in production.
4
+
5
+ > **Experimental Component**
6
+ >
7
+ > The `p-link-tile-product` component is experimental and might be changed or removed in a future release.
8
+
9
+ The `p-link-tile-product` is a navigational component designed to showcase a featured product within a store. it offers the option to "like" the product, allowing you to easily add it to the users wishlist. Additionally, you can place a chip at the top to signal special features about the product, such as its novelty or exclusivity.
10
+
11
+ > **Image Aspect Ratio**
12
+ >
13
+ > The image within the component has a fixed aspect ratio of 8:9. For optimal presentation, it is recommended that the supplied image adheres to the same aspect ratio of 8:9 and includes a transparent background.
14
+
15
+ An `img` or `picture` element has to be available as a child of the `p-link-tile-product` component.
16
+
17
+ The `heading` and `price` properties are required and a link must be provided, using either the `href` property or a [slotted link](./p-link-tile-product.md).
18
+
19
+ ## Usage
20
+
21
+ ### Do:
22
+
23
+ - Use Link-Tile-Product to display a single product or within other products.
24
+ - Use the heading prop only for the product name.
25
+ - Use the price prop only for price and price reduction.
26
+ - Use description prop only for VAT or other disclaimers according to the product.
27
+ - Use only transparent images for the Link Tile Product.
28
+ - Use product images with an aspect ratio of 8:9.
29
+ - Use only product images with the same aspect ratio.
30
+ - Use Link-Tile-Products with identical sizes in one view.
31
+ - Use the header slot only for appropriate information such as "new" or "limited", and keep it short.
32
+ - Use Link-Tile-Product in a grid with other products.
33
+ - Use the likeButton prop to hide the likeButton when no wishlist is available.
34
+
35
+ ### Don't:
36
+
37
+ - Do not manipulate product images. Keep them natural, with transparent backgrounds and sufficient contrast.
38
+ - Don't integrate environment into the product image, no reflection, drop shadow, or other styling effects.
39
+ - Don't alter the display of VAT when the display is requested, either show it for all products or don't.
40
+ - Don't manipulate the likeButton, this position is only reserved for this function.
41
+ - Don't have long product names.
42
+
43
+ ---
44
+
45
+ ## Related components
46
+
47
+ - [Link Tile](../p-link-tile/p-link-tile.md)
48
+
49
+ ## Accessibility support
50
+
51
+ Not yet considered due to experimental state.
52
+
53
+ ## API
54
+
55
+ ### Properties
56
+
57
+ | Property | Type | Default | Description |
58
+ | --- | --- | --- | --- |
59
+ | `aspectRatio` | `'3/4'` `'9/16'`<br>`BreakpointCustomizable<LinkTileProductAspectRatio>` | `'3/4'` | Sets the width-to-height ratio of the tile media area. Supports responsive breakpoint values. |
60
+ | `description` | `string` | `undefined` | Sets an optional short description providing additional product details below the price. |
61
+ | `heading` _(required)_ | `string` | `undefined` | Sets the product name displayed prominently at the top of the tile. |
62
+ | `href` | `string` | `undefined` | Sets the URL the tile navigates to when clicked. Alternatively, provide a slotted anchor element. |
63
+ | `likeButton` | `boolean` | `true` | Shows a like/bookmark button so users can save the product. |
64
+ | `liked` | `boolean` | `false` | Reflects whether the product is currently liked — controls the filled state of the like button. |
65
+ | `price` _(required)_ | `string` | `undefined` | Sets the current retail price of the product, displayed with or without a discount. |
66
+ | `priceOriginal` | `string` | `undefined` | Sets the original recommended retail price shown with a strikethrough to indicate a discount. Requires `price` to be set. |
67
+ | `rel` | `string` | `undefined` | Sets the `rel` attribute on the link (e.g. `noopener`). |
68
+ | `target` | `'_self'` `'_blank'` `'_parent'` `'_top'` `'string'` | `'_self'` | Specifies where to open the linked URL (e.g. `_self`, `_blank`). |
69
+
70
+ ### Events
71
+
72
+ | Event | Type | Description |
73
+ | --- | --- | --- |
74
+ | `like` | `CustomEvent<LinkTileProductLikeEventDetail>`<br>`{ liked: boolean }` | Emitted when the user clicks the like button, with the new liked state in the event detail. |
75
+
76
+ ### Controlled properties
77
+
78
+ - `liked` — a controlled prop: the component does **not** update it itself. Handle the `like` event and assign the new value to `liked` yourself, or the change will not take effect.
79
+
80
+ ### Slots
81
+
82
+ | Slot | Required | Allowed tag names | Description |
83
+ | --- | --- | --- | --- |
84
+ | `anchor` | no | — | Slotted anchor link which can be used instead of the `href` prop. Ensure the named slot is directly on the anchor element, without nesting. |
85
+ | `header` | no | — | Shows special features about the product like novelty or exclusivity. Although you can pass in anything, it is recommended to use the `p-tag` component. |
86
+ | _(default)_ | no | — | Default slot for the img or picture tag. |
87
+
88
+ ## Examples
89
+
90
+ | Example | When to use | File |
91
+ | --- | --- | --- |
92
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
93
+ | Framework routing (anchor nesting) | To support framework routing you can provide the link as a slotted element by using the `anchor` slot instead of using the `href` property. | [./examples/FrameworkRouting.tsx](./examples/FrameworkRouting.tsx) |
@@ -0,0 +1,80 @@
1
+ # p-modal accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PButton aria-haspopup="dialog">
11
+ Details of product XYZ
12
+ </PButton>
13
+ ```
14
+
15
+ #### ✅ Recommended
16
+
17
+ ```tsx
18
+ <PButton aria={{'aria-haspopup': 'dialog'}}>
19
+ Details of product XYZ
20
+ </PButton>
21
+ ```
22
+
23
+ ### Dialog label on component host vs header slot
24
+
25
+ #### ❌ Anti-pattern
26
+
27
+ ```tsx
28
+ <PModal aria-label="Details">
29
+ ...
30
+ </PModal>
31
+ ```
32
+
33
+ #### ✅ Recommended
34
+
35
+ ```tsx
36
+ <PModal>
37
+ <PHeading slot="header" tag="h2" size="lg">
38
+ Details of product XYZ
39
+ </PHeading>
40
+ ...
41
+ </PModal>
42
+
43
+ {/* or with aria prop when no visible header is shown */}
44
+
45
+ <PModal aria={{'aria-label': 'Details of product XYZ'}}>
46
+ ...
47
+ </PModal>
48
+ ```
49
+
50
+ ### Modal trigger without popup semantics or context
51
+
52
+ #### ❌ Anti-pattern
53
+
54
+ ```tsx
55
+ <PButton>
56
+ Open
57
+ </PButton>
58
+
59
+ <PModal>
60
+ <PHeading slot="header" tag="h2" size="lg">
61
+ Details
62
+ </PHeading>
63
+ ...
64
+ </PModal>
65
+ ```
66
+
67
+ #### ✅ Recommended
68
+
69
+ ```tsx
70
+ <PButton aria={{'aria-haspopup': 'dialog'}}>
71
+ Details of product XYZ
72
+ </PButton>
73
+
74
+ <PModal>
75
+ <PHeading slot="header" tag="h2" size="lg">
76
+ Details of product XYZ
77
+ </PHeading>
78
+ ...
79
+ </PModal>
80
+ ```
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { useState } from 'react';
3
+ import { PButton, PHeading, PModal, PText } from '@porsche-design-system/components-react';
4
+
5
+ export const Example = () => {
6
+ const [open, setOpen] = useState(false);
7
+
8
+ const onClick = () => {
9
+ setOpen(true);
10
+ }
11
+ const onDismiss = () => {
12
+ setOpen(false);
13
+ }
14
+
15
+ return (
16
+ <>
17
+ <PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
18
+ Open Modal
19
+ </PButton>
20
+
21
+ <PModal open={open} aria={{'role': 'alertdialog'}} disableBackdropClick={true} onDismiss={onDismiss}>
22
+ <PHeading slot="header" size="large" tag="h2">
23
+ Some important Heading
24
+ </PHeading>
25
+ <PText>
26
+ Some important Content
27
+ </PText>
28
+ <div slot="footer" role="group" className="flex flex-wrap gap-fluid-sm max-xs:flex-col">
29
+ <PButton type="button">
30
+ Accept
31
+ </PButton>
32
+ <PButton type="button" variant="secondary">
33
+ Deny
34
+ </PButton>
35
+ </div>
36
+ </PModal>
37
+ </>
38
+ )
39
+ }
@@ -0,0 +1,26 @@
1
+ import React from 'react';
2
+ import { useState } from 'react';
3
+ import { PButton, PModal } from '@porsche-design-system/components-react';
4
+
5
+ export const Example = () => {
6
+ const [open, setOpen] = useState(false);
7
+
8
+ const onClick = () => {
9
+ setOpen(true);
10
+ }
11
+ const onDismiss = () => {
12
+ setOpen(false);
13
+ }
14
+
15
+ return (
16
+ <>
17
+ <PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
18
+ Open Modal
19
+ </PButton>
20
+
21
+ <PModal open={open} backdrop="shading" aria={{'aria-label': 'Some Label'}} className="[--p-modal-width:clamp(276px,45.25vw+131px,1000px)] [--p-modal-spacing-top:200px] [--p-modal-spacing-bottom:50px]" onDismiss={onDismiss}>
22
+ <img src="assets/porsche-992-carrera-s.jpg" className="-mt-(--ref-p-modal-pt) -mx-(--ref-p-modal-px) -mb-(--ref-p-modal-pb) max-w-(--p-modal-width) rounded-xl" />
23
+ </PModal>
24
+ </>
25
+ )
26
+ }
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { useState } from 'react';
3
+ import { PButton, PHeading, PModal, PText } from '@porsche-design-system/components-react';
4
+
5
+ export const Example = () => {
6
+ const [open, setOpen] = useState(false);
7
+
8
+ const onClick = () => {
9
+ setOpen(true);
10
+ }
11
+ const onDismiss = () => {
12
+ setOpen(false);
13
+ }
14
+
15
+ return (
16
+ <>
17
+ <PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
18
+ Open Modal
19
+ </PButton>
20
+
21
+ <PModal open={open} aria={{'aria-label': 'Some Heading'}} onDismiss={onDismiss}>
22
+ <PHeading slot="header" size="large" tag="h2">
23
+ Some Heading
24
+ </PHeading>
25
+ <PText>
26
+ Some Content
27
+ </PText>
28
+ <div slot="footer" role="group" className="flex flex-wrap gap-fluid-sm max-xs:flex-col">
29
+ <PButton type="button">
30
+ Proceed
31
+ </PButton>
32
+ <PButton type="button" variant="secondary">
33
+ Cancel
34
+ </PButton>
35
+ </div>
36
+ </PModal>
37
+ </>
38
+ )
39
+ }
@@ -0,0 +1,43 @@
1
+ import React from 'react';
2
+ import { useState } from 'react';
3
+ import { PButton, PHeading, PModal, PText } from '@porsche-design-system/components-react';
4
+
5
+ export const Example = () => {
6
+ const [open, setOpen] = useState(false);
7
+
8
+ const onClick = () => {
9
+ setOpen(true);
10
+ }
11
+ const onDismiss = () => {
12
+ setOpen(false);
13
+ }
14
+
15
+ return (
16
+ <>
17
+ <PButton type="button" aria={{'aria-haspopup': 'dialog'}} onClick={onClick}>
18
+ Open Modal
19
+ </PButton>
20
+
21
+ <PModal open={open} aria={{'aria-label': 'Some Heading'}} onDismiss={onDismiss}>
22
+ <PHeading slot="header" size="large" tag="h2">
23
+ Some Heading
24
+ </PHeading>
25
+ <PText>
26
+ Some Content Begin
27
+ </PText>
28
+ <div className="w-[10px] h-[120vh] bg-[deeppink]"></div>
29
+ <PText>
30
+ Some Content End
31
+ </PText>
32
+ <div slot="footer" role="group" className="flex flex-wrap gap-fluid-sm max-xs:flex-col">
33
+ <PButton type="button">
34
+ Proceed
35
+ </PButton>
36
+ <PButton type="button" variant="secondary">
37
+ Cancel
38
+ </PButton>
39
+ </div>
40
+ </PModal>
41
+ </>
42
+ )
43
+ }
@@ -0,0 +1,139 @@
1
+ # p-modal
2
+
3
+ The `p-modal` is a temporary overlay to focus the user's attention on one task while interactions with the underlying page are blocked. It is only used as highly disruptive modal notification to present important information until dismissed. Or as overlay to confirm critical user actions, such as confirming an irreversible choice. It should be used thoughtfully and sparingly.
4
+
5
+ It is a controlled component. This grants flexible control over the modal's behavior especially whether it should stay open after user interaction like submission of a form.
6
+
7
+ > **Scroll-lock**
8
+ >
9
+ > This component sets `overflow: hidden` on the body when opened in order to prevent background scrolling.
10
+ >
11
+ > This doesn't work completely reliable under iOS but is the most stable solution.
12
+ >
13
+ > Feel free to address this issue in an Open Source PR, if you can provide a better solution.
14
+ >
15
+ > **[Current implementation](https://github.com/porsche-design-system/porsche-design-system/blob/main/packages/components/src/utils/setScrollLock.ts)**
16
+
17
+ Following **web standards**, the component uses the native `<dialog />` element internally which ensures proper focus handling including a **focus trap**. In addition, it's rendered on the `#top-layer` which ensures the element to be on top of the page independent of where `p-modal` is placed in the DOM hierarchy (`z-index` is not relevant anymore and won't have any effect).
18
+
19
+ The most important property of `p-modal` is its `open` property. When it's set to `true` the modal will be visible. In order to get notified when the modal gets closed by clicking the `x` button, the backdrop or by pressing the `Escape` key you need to register an event listener for the `dismiss` event which is emitted by `p-modal`.
20
+
21
+ The size of `p-modal` adjusts itself to the content with a predefined **min/max width** which aligns to the **[Porsche Grid](../../styles/tailwindcss.md)**.
22
+
23
+ ## Usage
24
+
25
+ ### Do:
26
+
27
+ - Use Modals to display additional information or required steps without losing context.
28
+ - Use Modals for confirmation before performing lengthy or dangerous actions.
29
+ - Use default Modal for simple content.
30
+ - Use full-width content and background overlay animation to draw user attention.
31
+ - Provide multiple ways to dismiss the Modal but require an intentional choice.
32
+ - Use scrolling only when necessary and try to keep content in a single view.
33
+ - Adjust Modal size and alignment with the grid.
34
+ - Use up to three actions in the action bar at the bottom of the Modal.
35
+ - Follow button order and positioning guidelines.
36
+ - Use feedback banner for any feedback related to the request.
37
+
38
+ ### Don't:
39
+
40
+ - Don't use fullscreen Modals on desktop.
41
+ - Don't use the Modal with more than three buttons.
42
+ - Don't launch a Modal within a Modal.
43
+
44
+ ## Accessibility support
45
+
46
+ The `Modal` component uses the native `dialog` element to provide a modal dialog which comes with browser-specific behavior. As a result, accessibility features may vary across different browsers.
47
+
48
+ ### Keyboard
49
+
50
+ | Key / state | Function |
51
+ | --- | --- |
52
+ | `Tab`, `Shift-Tab` | Moves focus to the next (or previous) focusable element inside the dialog. Focus is trapped (browser behavior). |
53
+ | `ESC` | Closes the dialog. |
54
+ | `focus` on trigger element | The focus is returned to the trigger element after closing the dialog (browser behavior). |
55
+
56
+ ### ARIA enhancements
57
+
58
+ #### External **ARIA** provided by the `aria` property:
59
+
60
+ | ARIA | Usage |
61
+ | --- | --- |
62
+ | `aria-label` | Defines a string value that labels the dialog element. |
63
+ | `role` | Defines the semantic of the dialog element (`dialog` or `alertdialog`). |
64
+
65
+ #### Internal **ARIA** that is managed by the component:
66
+
67
+ | ARIA | Usage |
68
+ | --- | --- |
69
+ | `aria-label="STRING"` | Defines the accessible name if no `aria` property is provided, uses the contents of the header slot and falls back to a fixed name. |
70
+
71
+ ## Development considerations
72
+
73
+ To inform users that the trigger button opens a `dialog`, the `aria-haspopup` attribute must be set using the `aria` property.
74
+
75
+ ### Common do's and don'ts
76
+
77
+ - **Do** use a semantic trigger (usually a button) with a meaningful accessible name.
78
+ - **Do** set `aria-haspopup` through the trigger component `aria` prop when opening the modal.
79
+ - **Do** ensure a meaningful title is available via the `header` slot or `aria` property.
80
+ - **Don't** add raw host-level ARIA attributes as a workaround.
81
+ - **Don't** use unclear trigger copy like "Open" when the destination is not obvious.
82
+
83
+ ## Integration examples
84
+
85
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
86
+
87
+ ## API
88
+
89
+ ### Properties
90
+
91
+ | Property | Type | Default | Description |
92
+ | --- | --- | --- | --- |
93
+ | `aria` | `ModalAriaAttribute` | `undefined` | Sets ARIA attributes on the dialog element for improved accessibility when no visible heading is present. |
94
+ | `backdrop` | `'blur'` `'shading'` | `'blur'` | Sets the backdrop style. Use `blur` when the modal is opened by user interaction; use `shading` when opened automatically (e.g. Cookie Consent). |
95
+ | `background` | `'canvas'` `'surface'` | `'canvas'` | Sets the background color of the modal panel (`canvas` or `surface`). |
96
+ | `disableBackdropClick` | `boolean` | `false` | When enabled, clicking the backdrop will not close the modal. |
97
+ | `dismissButton` | `boolean` | `true` | Shows a dismiss button in the modal header so the user can manually close it. |
98
+ | `fullscreen` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Expands the modal to the full viewport size, intended for mobile use cases. Supports responsive breakpoint values. |
99
+ | `open` _(required)_ | `boolean` | `false` | Controls whether the modal dialog is visible. |
100
+
101
+ ### Events
102
+
103
+ | Event | Type | Description |
104
+ | --- | --- | --- |
105
+ | `dismiss` | `CustomEvent<void>` | Emitted when the user closes the modal via the dismiss button, backdrop click, or Escape key. |
106
+ | `motionHiddenEnd` | `CustomEvent<ModalMotionHiddenEndEventDetail>`<br>`TransitionEvent` | Emitted after the modal's close transition completes and the dialog is fully hidden. |
107
+ | `motionVisibleEnd` | `CustomEvent<ModalMotionVisibleEndEventDetail>`<br>`TransitionEvent` | Emitted after the modal's open transition completes and the dialog is fully visible. |
108
+
109
+ ### Controlled properties
110
+
111
+ - `open` — a controlled prop: the component does **not** update it itself. Handle the `dismiss` event and assign the new value to `open` yourself, or the change will not take effect.
112
+
113
+ ### Slots
114
+
115
+ | Slot | Required | Allowed tag names | Description |
116
+ | --- | --- | --- | --- |
117
+ | `header` | no | — | Renders a header section above the content area. |
118
+ | _(default)_ | no | — | Default slot for the main content. |
119
+ | `footer` | no | — | Shows a sticky footer section, flowing under the content area when scrollable. |
120
+
121
+ ### CSS Variables
122
+
123
+ | CSS Variable | Default | Description |
124
+ | --- | --- | --- |
125
+ | `--p-modal-width` | `auto` | Width of the modal. |
126
+ | `--p-modal-spacing-top` | `clamp(16px, 10vh, 192px)` | Spacing of the modal to the top. |
127
+ | `--p-modal-spacing-bottom` | `clamp(16px, 10vh, 192px)` | Spacing of the modal to the bottom. |
128
+ | `--ref-p-modal-pt` | — | Exposes the internally used padding-top of the Modal as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the top of the Modal. |
129
+ | `--ref-p-modal-pb` | — | Exposes the internally used padding-bottom of the Modal as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the bottom of the Modal. |
130
+ | `--ref-p-modal-px` | — | Exposes the internally used padding-inline of the Modal as read only CSS variable. When slotting e.g. a media container, this variable can be used to stretch the element to the full horizontal size of the Modal. |
131
+
132
+ ## Examples
133
+
134
+ | Example | When to use | File |
135
+ | --- | --- | --- |
136
+ | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
137
+ | Scrollable modal with sticky footer | If the modal's content does not fit within the available space, the content becomes scrollable and the footer area remains sticky. | [./examples/Scrollable.tsx](./examples/Scrollable.tsx) |
138
+ | Modal as alert dialog | The `p-modal` component can be used as an alert dialog. | [./examples/AlertDialog.tsx](./examples/AlertDialog.tsx) |
139
+ | Custom styling | The modal component has some values that can be overridden via CSS custom properties (aka CSS variables). | [./examples/CustomStyling.tsx](./examples/CustomStyling.tsx) |
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { PModelSignature } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PModelSignature color="inherit" className="text-info"></PModelSignature>
8
+
9
+ <PModelSignature className="[--p-model-signature-width:auto] [--p-model-signature-height:50px] block"></PModelSignature>
10
+
11
+ <PModelSignature className="[--p-model-signature-width:50px] [--p-model-signature-height:auto] block"></PModelSignature>
12
+ </>
13
+ )
14
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { PModelSignature } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PModelSignature></PModelSignature>
8
+ </>
9
+ )
10
+ }
@@ -0,0 +1,32 @@
1
+ import React from 'react';
2
+ import { PModelSignature } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <div className="isolate bg-[#00aa3680] inline-block p-static-lg">
8
+ <PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
9
+ </div>
10
+
11
+ <div className="isolate bg-[#f2f2f280] inline-block p-static-lg">
12
+ <PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
13
+ </div>
14
+
15
+ <div className="isolate bg-[#1f1f1f80] inline-block p-static-lg">
16
+ <PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
17
+ </div>
18
+
19
+ <div className="isolate bg-[#c5004280] inline-block p-static-lg">
20
+ <PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
21
+ </div>
22
+
23
+ <div className="isolate bg-[#e1d4a480] inline-block p-static-lg">
24
+ <PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
25
+ </div>
26
+
27
+ <div className="isolate bg-[#0099e080] inline-block p-static-lg">
28
+ <PModelSignature color="contrast-medium" safeZone={false} className="mix-blend-overlay"></PModelSignature>
29
+ </div>
30
+ </>
31
+ )
32
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PModelSignature } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PModelSignature safeZone={false} className="[--p-model-signature-width:auto]">
8
+ <img src="assets/dessert.jpg" alt="Dessert" />
9
+ </PModelSignature>
10
+ </>
11
+ )
12
+ }
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { PModelSignature } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <PModelSignature safeZone={false} className="[--p-model-signature-width:auto]">
8
+ <video poster="assets/ocean.jpg" src="assets/ocean.mp4" autoPlay={true} playsInline={true} loop={true} muted={true}></video>
9
+ </PModelSignature>
10
+ </>
11
+ )
12
+ }
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { PModelSignature } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
8
+ <PModelSignature safeZone={false} model="718"></PModelSignature>
9
+ </div>
10
+
11
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
12
+ <PModelSignature safeZone={false} model="911"></PModelSignature>
13
+ </div>
14
+
15
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
16
+ <PModelSignature safeZone={false} model="boxster"></PModelSignature>
17
+ </div>
18
+
19
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
20
+ <PModelSignature safeZone={false} model="cayenne"></PModelSignature>
21
+ </div>
22
+
23
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
24
+ <PModelSignature safeZone={false} model="cayman"></PModelSignature>
25
+ </div>
26
+
27
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
28
+ <PModelSignature safeZone={false} model="gt3-rs"></PModelSignature>
29
+ </div>
30
+
31
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
32
+ <PModelSignature safeZone={false} model="gt3"></PModelSignature>
33
+ </div>
34
+
35
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
36
+ <PModelSignature safeZone={false} model="gts"></PModelSignature>
37
+ </div>
38
+
39
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
40
+ <PModelSignature safeZone={false} model="macan"></PModelSignature>
41
+ </div>
42
+
43
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
44
+ <PModelSignature safeZone={false} model="panamera"></PModelSignature>
45
+ </div>
46
+
47
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
48
+ <PModelSignature safeZone={false} model="taycan"></PModelSignature>
49
+ </div>
50
+
51
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
52
+ <PModelSignature safeZone={false} model="turbo-s"></PModelSignature>
53
+ </div>
54
+
55
+ <div className="bg-[#ff000033] inline-block me-static-md mt-static-md">
56
+ <PModelSignature safeZone={false} model="turbo"></PModelSignature>
57
+ </div>
58
+ </>
59
+ )
60
+ }