@porsche-design-system/components-react 4.6.0-rc.0 → 4.6.0-rc.2

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 (392) hide show
  1. package/CHANGELOG.md +85 -2
  2. package/OSS_NOTICE +5532 -2115
  3. package/bin/pds-skill.js +166 -79
  4. package/cjs/lib/components/ai-tag.wrapper.cjs +1 -1
  5. package/cjs/lib/components/radio-group.wrapper.cjs +1 -1
  6. package/esm/lib/components/ai-tag.wrapper.d.ts +4 -4
  7. package/esm/lib/components/ai-tag.wrapper.mjs +1 -1
  8. package/esm/lib/components/input-number.wrapper.d.ts +6 -6
  9. package/esm/lib/components/input-text.wrapper.d.ts +6 -6
  10. package/esm/lib/components/multi-select-option.wrapper.d.ts +2 -2
  11. package/esm/lib/components/pin-code.wrapper.d.ts +6 -6
  12. package/esm/lib/components/radio-group-option.wrapper.d.ts +4 -4
  13. package/esm/lib/components/radio-group.wrapper.d.ts +4 -6
  14. package/esm/lib/components/radio-group.wrapper.mjs +1 -1
  15. package/esm/lib/components/segmented-control.wrapper.d.ts +4 -4
  16. package/esm/lib/components/wordmark.wrapper.d.ts +2 -2
  17. package/esm/lib/types.d.ts +184 -213
  18. package/package.json +6 -2
  19. package/{skill → skills/pds-knowledge-react}/SKILL.md +6 -6
  20. package/skills/pds-knowledge-react/references/components/p-accordion/accessibility.md +63 -0
  21. package/{skill → skills/pds-knowledge-react}/references/components/p-accordion/p-accordion.md +4 -0
  22. package/skills/pds-knowledge-react/references/components/p-ai-tag/p-ai-tag.md +47 -0
  23. package/skills/pds-knowledge-react/references/components/p-banner/accessibility.md +37 -0
  24. package/{skill → skills/pds-knowledge-react}/references/components/p-banner/p-banner.md +4 -0
  25. package/skills/pds-knowledge-react/references/components/p-button/accessibility.md +61 -0
  26. package/{skill → skills/pds-knowledge-react}/references/components/p-button/p-button.md +5 -1
  27. package/skills/pds-knowledge-react/references/components/p-button-pure/accessibility.md +61 -0
  28. package/{skill → skills/pds-knowledge-react}/references/components/p-button-pure/p-button-pure.md +5 -1
  29. package/skills/pds-knowledge-react/references/components/p-button-tile/accessibility.md +31 -0
  30. package/{skill → skills/pds-knowledge-react}/references/components/p-button-tile/p-button-tile.md +5 -1
  31. package/skills/pds-knowledge-react/references/components/p-canvas/examples/Default.tsx +111 -0
  32. package/{skill → skills/pds-knowledge-react}/references/components/p-canvas/p-canvas.md +4 -0
  33. package/skills/pds-knowledge-react/references/components/p-carousel/accessibility.md +61 -0
  34. package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/p-carousel.md +5 -1
  35. package/skills/pds-knowledge-react/references/components/p-checkbox/accessibility.md +31 -0
  36. package/{skill → skills/pds-knowledge-react}/references/components/p-checkbox/p-checkbox.md +4 -0
  37. package/skills/pds-knowledge-react/references/components/p-crest/accessibility.md +17 -0
  38. package/{skill → skills/pds-knowledge-react}/references/components/p-crest/p-crest.md +4 -0
  39. package/skills/pds-knowledge-react/references/components/p-divider/accessibility.md +41 -0
  40. package/{skill → skills/pds-knowledge-react}/references/components/p-divider/p-divider.md +4 -0
  41. package/skills/pds-knowledge-react/references/components/p-drilldown/accessibility.md +65 -0
  42. package/{skill → skills/pds-knowledge-react}/references/components/p-drilldown/p-drilldown.md +4 -0
  43. package/skills/pds-knowledge-react/references/components/p-fieldset/accessibility.md +37 -0
  44. package/{skill → skills/pds-knowledge-react}/references/components/p-fieldset/p-fieldset.md +4 -0
  45. package/skills/pds-knowledge-react/references/components/p-flag/accessibility.md +39 -0
  46. package/{skill → skills/pds-knowledge-react}/references/components/p-flag/p-flag.md +4 -0
  47. package/skills/pds-knowledge-react/references/components/p-flyout/accessibility.md +80 -0
  48. package/{skill → skills/pds-knowledge-react}/references/components/p-flyout/p-flyout.md +4 -0
  49. package/skills/pds-knowledge-react/references/components/p-heading/accessibility.md +29 -0
  50. package/{skill → skills/pds-knowledge-react}/references/components/p-heading/p-heading.md +4 -0
  51. package/skills/pds-knowledge-react/references/components/p-icon/accessibility.md +39 -0
  52. package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/Overview.tsx +6 -0
  53. package/{skill → skills/pds-knowledge-react}/references/components/p-icon/p-icon.md +5 -1
  54. package/skills/pds-knowledge-react/references/components/p-inline-notification/accessibility.md +36 -0
  55. package/{skill → skills/pds-knowledge-react}/references/components/p-inline-notification/p-inline-notification.md +5 -1
  56. package/skills/pds-knowledge-react/references/components/p-input-date/accessibility.md +45 -0
  57. package/{skill → skills/pds-knowledge-react}/references/components/p-input-date/p-input-date.md +4 -0
  58. package/skills/pds-knowledge-react/references/components/p-input-email/accessibility.md +45 -0
  59. package/{skill → skills/pds-knowledge-react}/references/components/p-input-email/p-input-email.md +4 -0
  60. package/skills/pds-knowledge-react/references/components/p-input-month/accessibility.md +45 -0
  61. package/{skill → skills/pds-knowledge-react}/references/components/p-input-month/p-input-month.md +4 -0
  62. package/skills/pds-knowledge-react/references/components/p-input-number/accessibility.md +45 -0
  63. package/{skill → skills/pds-knowledge-react}/references/components/p-input-number/p-input-number.md +7 -3
  64. package/skills/pds-knowledge-react/references/components/p-input-password/accessibility.md +45 -0
  65. package/{skill → skills/pds-knowledge-react}/references/components/p-input-password/p-input-password.md +4 -0
  66. package/skills/pds-knowledge-react/references/components/p-input-search/accessibility.md +59 -0
  67. package/{skill → skills/pds-knowledge-react}/references/components/p-input-search/p-input-search.md +4 -0
  68. package/skills/pds-knowledge-react/references/components/p-input-tel/accessibility.md +45 -0
  69. package/{skill → skills/pds-knowledge-react}/references/components/p-input-tel/p-input-tel.md +4 -0
  70. package/skills/pds-knowledge-react/references/components/p-input-text/accessibility.md +45 -0
  71. package/{skill → skills/pds-knowledge-react}/references/components/p-input-text/p-input-text.md +7 -3
  72. package/skills/pds-knowledge-react/references/components/p-input-time/accessibility.md +45 -0
  73. package/{skill → skills/pds-knowledge-react}/references/components/p-input-time/p-input-time.md +4 -0
  74. package/skills/pds-knowledge-react/references/components/p-input-url/accessibility.md +45 -0
  75. package/{skill → skills/pds-knowledge-react}/references/components/p-input-url/p-input-url.md +4 -0
  76. package/skills/pds-knowledge-react/references/components/p-input-week/accessibility.md +45 -0
  77. package/{skill → skills/pds-knowledge-react}/references/components/p-input-week/p-input-week.md +4 -0
  78. package/skills/pds-knowledge-react/references/components/p-link/accessibility.md +73 -0
  79. package/{skill → skills/pds-knowledge-react}/references/components/p-link/p-link.md +5 -1
  80. package/skills/pds-knowledge-react/references/components/p-link-pure/accessibility.md +73 -0
  81. package/{skill → skills/pds-knowledge-react}/references/components/p-link-pure/p-link-pure.md +5 -1
  82. package/skills/pds-knowledge-react/references/components/p-link-tile/accessibility.md +31 -0
  83. package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/p-link-tile.md +4 -0
  84. package/skills/pds-knowledge-react/references/components/p-modal/accessibility.md +80 -0
  85. package/{skill → skills/pds-knowledge-react}/references/components/p-modal/p-modal.md +4 -0
  86. package/skills/pds-knowledge-react/references/components/p-multi-select/accessibility.md +78 -0
  87. package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/AsyncFilter.tsx +29 -6
  88. package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/p-multi-select.md +6 -2
  89. package/skills/pds-knowledge-react/references/components/p-pagination/accessibility.md +23 -0
  90. package/{skill → skills/pds-knowledge-react}/references/components/p-pagination/p-pagination.md +4 -0
  91. package/skills/pds-knowledge-react/references/components/p-pin-code/accessibility.md +45 -0
  92. package/{skill → skills/pds-knowledge-react}/references/components/p-pin-code/p-pin-code.md +6 -2
  93. package/skills/pds-knowledge-react/references/components/p-popover/accessibility.md +61 -0
  94. package/{skill → skills/pds-knowledge-react}/references/components/p-popover/p-popover.md +4 -0
  95. package/skills/pds-knowledge-react/references/components/p-radio-group/accessibility.md +63 -0
  96. package/{skill → skills/pds-knowledge-react}/references/components/p-radio-group/examples/Form.tsx +2 -2
  97. package/{skill → skills/pds-knowledge-react}/references/components/p-radio-group/p-radio-group.md +7 -3
  98. package/skills/pds-knowledge-react/references/components/p-scroller/accessibility.md +31 -0
  99. package/{skill → skills/pds-knowledge-react}/references/components/p-scroller/p-scroller.md +4 -0
  100. package/skills/pds-knowledge-react/references/components/p-segmented-control/accessibility.md +67 -0
  101. package/{skill → skills/pds-knowledge-react}/references/components/p-segmented-control/p-segmented-control.md +6 -2
  102. package/skills/pds-knowledge-react/references/components/p-select/accessibility.md +140 -0
  103. package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/AsyncFilter.tsx +29 -6
  104. package/{skill → skills/pds-knowledge-react}/references/components/p-select/p-select.md +5 -1
  105. package/skills/pds-knowledge-react/references/components/p-sheet/accessibility.md +80 -0
  106. package/{skill → skills/pds-knowledge-react}/references/components/p-sheet/p-sheet.md +4 -0
  107. package/skills/pds-knowledge-react/references/components/p-spinner/accessibility.md +31 -0
  108. package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/p-spinner.md +4 -0
  109. package/skills/pds-knowledge-react/references/components/p-stepper-horizontal/accessibility.md +34 -0
  110. package/{skill → skills/pds-knowledge-react}/references/components/p-stepper-horizontal/p-stepper-horizontal.md +4 -0
  111. package/skills/pds-knowledge-react/references/components/p-switch/accessibility.md +35 -0
  112. package/{skill → skills/pds-knowledge-react}/references/components/p-switch/p-switch.md +4 -0
  113. package/skills/pds-knowledge-react/references/components/p-table/accessibility.md +47 -0
  114. package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/Sorting.tsx +9 -8
  115. package/{skill → skills/pds-knowledge-react}/references/components/p-table/p-table.md +5 -1
  116. package/skills/pds-knowledge-react/references/components/p-tabs/accessibility.md +56 -0
  117. package/{skill → skills/pds-knowledge-react}/references/components/p-tabs/p-tabs.md +4 -0
  118. package/skills/pds-knowledge-react/references/components/p-tabs-bar/accessibility.md +61 -0
  119. package/{skill → skills/pds-knowledge-react}/references/components/p-tabs-bar/p-tabs-bar.md +4 -0
  120. package/skills/pds-knowledge-react/references/components/p-tag/accessibility.md +19 -0
  121. package/{skill → skills/pds-knowledge-react}/references/components/p-tag/p-tag.md +5 -1
  122. package/skills/pds-knowledge-react/references/components/p-tag-dismissible/accessibility.md +35 -0
  123. package/{skill → skills/pds-knowledge-react}/references/components/p-tag-dismissible/p-tag-dismissible.md +4 -0
  124. package/skills/pds-knowledge-react/references/components/p-text/accessibility.md +21 -0
  125. package/{skill → skills/pds-knowledge-react}/references/components/p-text/p-text.md +4 -0
  126. package/skills/pds-knowledge-react/references/components/p-text-list/accessibility.md +31 -0
  127. package/{skill → skills/pds-knowledge-react}/references/components/p-text-list/p-text-list.md +4 -0
  128. package/skills/pds-knowledge-react/references/components/p-textarea/accessibility.md +45 -0
  129. package/{skill → skills/pds-knowledge-react}/references/components/p-textarea/p-textarea.md +4 -0
  130. package/{skill → skills/pds-knowledge-react}/references/components/p-toast/p-toast.md +1 -1
  131. package/skills/pds-knowledge-react/references/components/p-wordmark/accessibility.md +31 -0
  132. package/{skill → skills/pds-knowledge-react}/references/components/p-wordmark/p-wordmark.md +5 -1
  133. package/skills/pds-knowledge-react/references/icons.md +5 -0
  134. package/{skill → skills/pds-knowledge-react}/references/styles/tailwindcss.md +1 -1
  135. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +207 -8
  136. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +241 -40
  137. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/ai-tag.wrapper.cjs +1 -1
  138. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/components/radio-group.wrapper.cjs +1 -1
  139. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +4 -1
  140. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/filter-status-announcer.cjs +7 -0
  141. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +3 -1
  142. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.cjs +1 -1
  143. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +7 -3
  144. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.cjs +4 -0
  145. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +5 -1
  146. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +3 -4
  147. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +207 -9
  148. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +237 -41
  149. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/ai-tag.wrapper.mjs +1 -1
  150. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/components/radio-group.wrapper.mjs +1 -1
  151. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +4 -1
  152. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/filter-status-announcer.mjs +5 -0
  153. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +3 -1
  154. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/no-results-option.mjs +1 -1
  155. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +7 -3
  156. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs +4 -0
  157. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +5 -1
  158. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +3 -4
  159. package/ssr/esm/lib/components/ai-tag.wrapper.d.ts +4 -4
  160. package/ssr/esm/lib/components/input-number.wrapper.d.ts +6 -6
  161. package/ssr/esm/lib/components/input-text.wrapper.d.ts +6 -6
  162. package/ssr/esm/lib/components/multi-select-option.wrapper.d.ts +2 -2
  163. package/ssr/esm/lib/components/pin-code.wrapper.d.ts +6 -6
  164. package/ssr/esm/lib/components/radio-group-option.wrapper.d.ts +4 -4
  165. package/ssr/esm/lib/components/radio-group.wrapper.d.ts +4 -6
  166. package/ssr/esm/lib/components/segmented-control.wrapper.d.ts +4 -4
  167. package/ssr/esm/lib/components/wordmark.wrapper.d.ts +2 -2
  168. package/ssr/esm/lib/dsr-components/carousel.d.ts +3 -0
  169. package/ssr/esm/lib/dsr-components/filter-status-announcer.d.ts +6 -0
  170. package/ssr/esm/lib/dsr-components/multi-select.d.ts +1 -0
  171. package/ssr/esm/lib/dsr-components/pin-code.d.ts +1 -0
  172. package/ssr/esm/lib/dsr-components/radio-group.d.ts +1 -0
  173. package/ssr/esm/lib/dsr-components/segmented-control.d.ts +1 -0
  174. package/ssr/esm/lib/dsr-components/select.d.ts +1 -1
  175. package/ssr/esm/lib/types.d.ts +184 -213
  176. package/skill/references/components/p-ai-tag/p-ai-tag.md +0 -47
  177. package/skill/references/components/p-canvas/examples/Default.tsx +0 -10
  178. package/skill/references/icons.md +0 -5
  179. /package/{skill → skills/pds-knowledge-react}/references/components/p-accordion/examples/Default.tsx +0 -0
  180. /package/{skill → skills/pds-knowledge-react}/references/components/p-accordion/examples/InteractiveElementsInSummary.tsx +0 -0
  181. /package/{skill → skills/pds-knowledge-react}/references/components/p-accordion/examples/StickySummary.tsx +0 -0
  182. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/Default.tsx +0 -0
  183. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinCheckbox.tsx +0 -0
  184. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinFormLabel.tsx +0 -0
  185. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinImage.tsx +0 -0
  186. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinInputSearch.tsx +0 -0
  187. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinRadioGroup.tsx +0 -0
  188. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinTable.tsx +0 -0
  189. /package/{skill → skills/pds-knowledge-react}/references/components/p-ai-tag/examples/WithinText.tsx +0 -0
  190. /package/{skill → skills/pds-knowledge-react}/references/components/p-banner/examples/Customization.tsx +0 -0
  191. /package/{skill → skills/pds-knowledge-react}/references/components/p-banner/examples/Default.tsx +0 -0
  192. /package/{skill → skills/pds-knowledge-react}/references/components/p-button/examples/Default.tsx +0 -0
  193. /package/{skill → skills/pds-knowledge-react}/references/components/p-button/examples/Form.tsx +0 -0
  194. /package/{skill → skills/pds-knowledge-react}/references/components/p-button/examples/FormAttribute.tsx +0 -0
  195. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-pure/examples/CustomClickableArea.tsx +0 -0
  196. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-pure/examples/Default.tsx +0 -0
  197. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-pure/examples/Form.tsx +0 -0
  198. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-pure/examples/FormAttribute.tsx +0 -0
  199. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-tile/examples/ColorScheme.tsx +0 -0
  200. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-tile/examples/Default.tsx +0 -0
  201. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-tile/examples/FooterSlot.tsx +0 -0
  202. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-tile/examples/Hyphens.tsx +0 -0
  203. /package/{skill → skills/pds-knowledge-react}/references/components/p-button-tile/examples/UiBehaviour.tsx +0 -0
  204. /package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/examples/Default.tsx +0 -0
  205. /package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/examples/DynamicSlides.tsx +0 -0
  206. /package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/examples/FlexibleWidths.tsx +0 -0
  207. /package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/examples/FocusOnCenterSlide.tsx +0 -0
  208. /package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/examples/Intl.tsx +0 -0
  209. /package/{skill → skills/pds-knowledge-react}/references/components/p-carousel/examples/JumpToSlide.tsx +0 -0
  210. /package/{skill → skills/pds-knowledge-react}/references/components/p-checkbox/examples/Default.tsx +0 -0
  211. /package/{skill → skills/pds-knowledge-react}/references/components/p-checkbox/examples/Form.tsx +0 -0
  212. /package/{skill → skills/pds-knowledge-react}/references/components/p-checkbox/examples/Indeterminate.tsx +0 -0
  213. /package/{skill → skills/pds-knowledge-react}/references/components/p-checkbox/examples/Slots.tsx +0 -0
  214. /package/{skill → skills/pds-knowledge-react}/references/components/p-checkbox/examples/WrappedLabel.tsx +0 -0
  215. /package/{skill → skills/pds-knowledge-react}/references/components/p-crest/examples/CustomClickableArea.tsx +0 -0
  216. /package/{skill → skills/pds-knowledge-react}/references/components/p-crest/examples/Default.tsx +0 -0
  217. /package/{skill → skills/pds-knowledge-react}/references/components/p-crest/examples/Link.tsx +0 -0
  218. /package/{skill → skills/pds-knowledge-react}/references/components/p-display/examples/Color.tsx +0 -0
  219. /package/{skill → skills/pds-knowledge-react}/references/components/p-display/examples/Default.tsx +0 -0
  220. /package/{skill → skills/pds-knowledge-react}/references/components/p-display/examples/Semantics.tsx +0 -0
  221. /package/{skill → skills/pds-knowledge-react}/references/components/p-display/examples/Size.tsx +0 -0
  222. /package/{skill → skills/pds-knowledge-react}/references/components/p-display/examples/SizeResponsive.tsx +0 -0
  223. /package/{skill → skills/pds-knowledge-react}/references/components/p-display/p-display.md +0 -0
  224. /package/{skill → skills/pds-knowledge-react}/references/components/p-divider/examples/Default.tsx +0 -0
  225. /package/{skill → skills/pds-knowledge-react}/references/components/p-divider/examples/Responsive.tsx +0 -0
  226. /package/{skill → skills/pds-knowledge-react}/references/components/p-divider/examples/Vertical.tsx +0 -0
  227. /package/{skill → skills/pds-knowledge-react}/references/components/p-drilldown/examples/CustomContent.tsx +0 -0
  228. /package/{skill → skills/pds-knowledge-react}/references/components/p-drilldown/examples/Default.tsx +0 -0
  229. /package/{skill → skills/pds-knowledge-react}/references/components/p-fieldset/examples/Default.tsx +0 -0
  230. /package/{skill → skills/pds-knowledge-react}/references/components/p-fieldset/examples/Required.tsx +0 -0
  231. /package/{skill → skills/pds-knowledge-react}/references/components/p-fieldset/examples/SlottedLabel.tsx +0 -0
  232. /package/{skill → skills/pds-knowledge-react}/references/components/p-fieldset/examples/SlottedMessage.tsx +0 -0
  233. /package/{skill → skills/pds-knowledge-react}/references/components/p-flag/examples/Default.tsx +0 -0
  234. /package/{skill → skills/pds-knowledge-react}/references/components/p-flag/examples/ResponsiveSize.tsx +0 -0
  235. /package/{skill → skills/pds-knowledge-react}/references/components/p-flag/examples/Size.tsx +0 -0
  236. /package/{skill → skills/pds-knowledge-react}/references/components/p-flag/examples/SizeCssVar.tsx +0 -0
  237. /package/{skill → skills/pds-knowledge-react}/references/components/p-flyout/examples/CustomStyling.tsx +0 -0
  238. /package/{skill → skills/pds-knowledge-react}/references/components/p-flyout/examples/Default.tsx +0 -0
  239. /package/{skill → skills/pds-knowledge-react}/references/components/p-flyout/examples/Form.tsx +0 -0
  240. /package/{skill → skills/pds-knowledge-react}/references/components/p-flyout/examples/StickyTop.tsx +0 -0
  241. /package/{skill → skills/pds-knowledge-react}/references/components/p-heading/examples/Color.tsx +0 -0
  242. /package/{skill → skills/pds-knowledge-react}/references/components/p-heading/examples/Default.tsx +0 -0
  243. /package/{skill → skills/pds-knowledge-react}/references/components/p-heading/examples/Semantics.tsx +0 -0
  244. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/Color.tsx +0 -0
  245. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/ColorCssVar.tsx +0 -0
  246. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/Custom.tsx +0 -0
  247. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/Default.tsx +0 -0
  248. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/ResponsiveSize.tsx +0 -0
  249. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/Size.tsx +0 -0
  250. /package/{skill → skills/pds-knowledge-react}/references/components/p-icon/examples/SizeCssVar.tsx +0 -0
  251. /package/{skill → skills/pds-knowledge-react}/references/components/p-inline-notification/examples/ActionButton.tsx +0 -0
  252. /package/{skill → skills/pds-knowledge-react}/references/components/p-inline-notification/examples/Default.tsx +0 -0
  253. /package/{skill → skills/pds-knowledge-react}/references/components/p-inline-notification/examples/EventHandling.tsx +0 -0
  254. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-date/examples/Default.tsx +0 -0
  255. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-date/examples/Form.tsx +0 -0
  256. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-date/examples/Slots.tsx +0 -0
  257. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-email/examples/Default.tsx +0 -0
  258. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-email/examples/Form.tsx +0 -0
  259. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-email/examples/Slots.tsx +0 -0
  260. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-month/examples/Default.tsx +0 -0
  261. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-month/examples/Form.tsx +0 -0
  262. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-month/examples/Slots.tsx +0 -0
  263. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-number/examples/Default.tsx +0 -0
  264. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-number/examples/Form.tsx +0 -0
  265. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-number/examples/Slots.tsx +0 -0
  266. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-password/examples/Default.tsx +0 -0
  267. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-password/examples/Form.tsx +0 -0
  268. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-password/examples/Slots.tsx +0 -0
  269. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-password/examples/Toggle.tsx +0 -0
  270. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-search/examples/AriaCombobox.tsx +0 -0
  271. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-search/examples/Default.tsx +0 -0
  272. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-search/examples/Form.tsx +0 -0
  273. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-search/examples/Slots.tsx +0 -0
  274. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-tel/examples/Default.tsx +0 -0
  275. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-tel/examples/Form.tsx +0 -0
  276. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-tel/examples/Slots.tsx +0 -0
  277. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-text/examples/Controlled.tsx +0 -0
  278. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-text/examples/Default.tsx +0 -0
  279. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-text/examples/Form.tsx +0 -0
  280. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-text/examples/Slots.tsx +0 -0
  281. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-time/examples/Default.tsx +0 -0
  282. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-time/examples/Form.tsx +0 -0
  283. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-time/examples/Slots.tsx +0 -0
  284. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-url/examples/Default.tsx +0 -0
  285. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-url/examples/Form.tsx +0 -0
  286. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-url/examples/Slots.tsx +0 -0
  287. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-week/examples/Default.tsx +0 -0
  288. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-week/examples/Form.tsx +0 -0
  289. /package/{skill → skills/pds-knowledge-react}/references/components/p-input-week/examples/Slots.tsx +0 -0
  290. /package/{skill → skills/pds-knowledge-react}/references/components/p-link/examples/Default.tsx +0 -0
  291. /package/{skill → skills/pds-knowledge-react}/references/components/p-link/examples/FrameworkRouting.tsx +0 -0
  292. /package/{skill → skills/pds-knowledge-react}/references/components/p-link/examples/Icon.tsx +0 -0
  293. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-pure/examples/CustomClickableArea.tsx +0 -0
  294. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-pure/examples/Default.tsx +0 -0
  295. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-pure/examples/FrameworkRouting.tsx +0 -0
  296. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-pure/examples/Icon.tsx +0 -0
  297. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/examples/ColorScheme.tsx +0 -0
  298. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/examples/Default.tsx +0 -0
  299. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/examples/FooterSlot.tsx +0 -0
  300. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/examples/Hyphens.tsx +0 -0
  301. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/examples/UiBehaviour.tsx +0 -0
  302. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile/examples/WithVideo.tsx +0 -0
  303. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile-product/examples/Default.tsx +0 -0
  304. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile-product/examples/FrameworkRouting.tsx +0 -0
  305. /package/{skill → skills/pds-knowledge-react}/references/components/p-link-tile-product/p-link-tile-product.md +0 -0
  306. /package/{skill → skills/pds-knowledge-react}/references/components/p-modal/examples/AlertDialog.tsx +0 -0
  307. /package/{skill → skills/pds-knowledge-react}/references/components/p-modal/examples/CustomStyling.tsx +0 -0
  308. /package/{skill → skills/pds-knowledge-react}/references/components/p-modal/examples/Default.tsx +0 -0
  309. /package/{skill → skills/pds-knowledge-react}/references/components/p-modal/examples/Scrollable.tsx +0 -0
  310. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/examples/CustomStyling.tsx +0 -0
  311. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/examples/Default.tsx +0 -0
  312. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/examples/MaskBlendMode.tsx +0 -0
  313. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/examples/MaskImage.tsx +0 -0
  314. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/examples/MaskVideo.tsx +0 -0
  315. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/examples/SafeZone.tsx +0 -0
  316. /package/{skill → skills/pds-knowledge-react}/references/components/p-model-signature/p-model-signature.md +0 -0
  317. /package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/Default.tsx +0 -0
  318. /package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/Form.tsx +0 -0
  319. /package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/Optgroups.tsx +0 -0
  320. /package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/SelectedSlot.tsx +0 -0
  321. /package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/SetValue.tsx +0 -0
  322. /package/{skill → skills/pds-knowledge-react}/references/components/p-multi-select/examples/Slots.tsx +0 -0
  323. /package/{skill → skills/pds-knowledge-react}/references/components/p-pagination/examples/Default.tsx +0 -0
  324. /package/{skill → skills/pds-knowledge-react}/references/components/p-pin-code/examples/CopyPaste.tsx +0 -0
  325. /package/{skill → skills/pds-knowledge-react}/references/components/p-pin-code/examples/Default.tsx +0 -0
  326. /package/{skill → skills/pds-knowledge-react}/references/components/p-pin-code/examples/Form.tsx +0 -0
  327. /package/{skill → skills/pds-knowledge-react}/references/components/p-pin-code/examples/Slots.tsx +0 -0
  328. /package/{skill → skills/pds-knowledge-react}/references/components/p-popover/examples/Default.tsx +0 -0
  329. /package/{skill → skills/pds-knowledge-react}/references/components/p-popover/examples/SlottedButton.tsx +0 -0
  330. /package/{skill → skills/pds-knowledge-react}/references/components/p-radio-group/examples/Default.tsx +0 -0
  331. /package/{skill → skills/pds-knowledge-react}/references/components/p-radio-group/examples/Slots.tsx +0 -0
  332. /package/{skill → skills/pds-knowledge-react}/references/components/p-scroller/examples/Default.tsx +0 -0
  333. /package/{skill → skills/pds-knowledge-react}/references/components/p-scroller/examples/Height.tsx +0 -0
  334. /package/{skill → skills/pds-knowledge-react}/references/components/p-scroller/examples/ScrollToPosition.tsx +0 -0
  335. /package/{skill → skills/pds-knowledge-react}/references/components/p-segmented-control/examples/Default.tsx +0 -0
  336. /package/{skill → skills/pds-knowledge-react}/references/components/p-segmented-control/examples/Form.tsx +0 -0
  337. /package/{skill → skills/pds-knowledge-react}/references/components/p-segmented-control/examples/Slots.tsx +0 -0
  338. /package/{skill → skills/pds-knowledge-react}/references/components/p-segmented-control/examples/WithLabels.tsx +0 -0
  339. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/Default.tsx +0 -0
  340. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/Form.tsx +0 -0
  341. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/Optgroups.tsx +0 -0
  342. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/Required.tsx +0 -0
  343. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/SelectedSlot.tsx +0 -0
  344. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/SetValue.tsx +0 -0
  345. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/Slots.tsx +0 -0
  346. /package/{skill → skills/pds-knowledge-react}/references/components/p-select/examples/SlottedImages.tsx +0 -0
  347. /package/{skill → skills/pds-knowledge-react}/references/components/p-sheet/examples/Default.tsx +0 -0
  348. /package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/examples/Color.tsx +0 -0
  349. /package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/examples/ColorCssVar.tsx +0 -0
  350. /package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/examples/Default.tsx +0 -0
  351. /package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/examples/ResponsiveSize.tsx +0 -0
  352. /package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/examples/Size.tsx +0 -0
  353. /package/{skill → skills/pds-knowledge-react}/references/components/p-spinner/examples/SizeCssVar.tsx +0 -0
  354. /package/{skill → skills/pds-knowledge-react}/references/components/p-stepper-horizontal/examples/Default.tsx +0 -0
  355. /package/{skill → skills/pds-knowledge-react}/references/components/p-stepper-horizontal/examples/FrameworkImplementation.tsx +0 -0
  356. /package/{skill → skills/pds-knowledge-react}/references/components/p-switch/examples/Default.tsx +0 -0
  357. /package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/Advanced.tsx +0 -0
  358. /package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/CaptionProperty.tsx +0 -0
  359. /package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/CaptionSlot.tsx +0 -0
  360. /package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/Default.tsx +0 -0
  361. /package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/HideLabel.tsx +0 -0
  362. /package/{skill → skills/pds-knowledge-react}/references/components/p-table/examples/LayoutFixed.tsx +0 -0
  363. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs/examples/ActiveTab.tsx +0 -0
  364. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs/examples/Default.tsx +0 -0
  365. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs/examples/Gradient.tsx +0 -0
  366. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs/examples/Labelling.tsx +0 -0
  367. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs-bar/examples/Default.tsx +0 -0
  368. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs-bar/examples/Gradient.tsx +0 -0
  369. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs-bar/examples/Labelling.tsx +0 -0
  370. /package/{skill → skills/pds-knowledge-react}/references/components/p-tabs-bar/examples/Links.tsx +0 -0
  371. /package/{skill → skills/pds-knowledge-react}/references/components/p-tag/examples/Default.tsx +0 -0
  372. /package/{skill → skills/pds-knowledge-react}/references/components/p-tag/examples/Multiline.tsx +0 -0
  373. /package/{skill → skills/pds-knowledge-react}/references/components/p-tag/examples/SlottedButton.tsx +0 -0
  374. /package/{skill → skills/pds-knowledge-react}/references/components/p-tag/examples/SlottedLink.tsx +0 -0
  375. /package/{skill → skills/pds-knowledge-react}/references/components/p-tag-dismissible/examples/Default.tsx +0 -0
  376. /package/{skill → skills/pds-knowledge-react}/references/components/p-text/examples/Default.tsx +0 -0
  377. /package/{skill → skills/pds-knowledge-react}/references/components/p-text/examples/Semantics.tsx +0 -0
  378. /package/{skill → skills/pds-knowledge-react}/references/components/p-text/examples/Size.tsx +0 -0
  379. /package/{skill → skills/pds-knowledge-react}/references/components/p-text/examples/SizeResponsive.tsx +0 -0
  380. /package/{skill → skills/pds-knowledge-react}/references/components/p-text-list/examples/Default.tsx +0 -0
  381. /package/{skill → skills/pds-knowledge-react}/references/components/p-textarea/examples/Default.tsx +0 -0
  382. /package/{skill → skills/pds-knowledge-react}/references/components/p-textarea/examples/Form.tsx +0 -0
  383. /package/{skill → skills/pds-knowledge-react}/references/components/p-textarea/examples/Slots.tsx +0 -0
  384. /package/{skill → skills/pds-knowledge-react}/references/components/p-toast/examples/Default.tsx +0 -0
  385. /package/{skill → skills/pds-knowledge-react}/references/components/p-wordmark/examples/CustomClickableArea.tsx +0 -0
  386. /package/{skill → skills/pds-knowledge-react}/references/components/p-wordmark/examples/Default.tsx +0 -0
  387. /package/{skill → skills/pds-knowledge-react}/references/components/p-wordmark/examples/Size.tsx +0 -0
  388. /package/{skill → skills/pds-knowledge-react}/references/styles/emotion.md +0 -0
  389. /package/{skill → skills/pds-knowledge-react}/references/styles/scss.md +0 -0
  390. /package/{skill → skills/pds-knowledge-react}/references/styles/vanilla-extract.md +0 -0
  391. /package/{skill → skills/pds-knowledge-react}/references/stylesheets.md +0 -0
  392. /package/{skill → skills/pds-knowledge-react}/references/tokens.md +0 -0
@@ -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
+ ```
@@ -80,6 +80,10 @@ To inform users that the trigger button opens a `dialog`, the `aria-haspopup` at
80
80
  - **Don't** add raw host-level ARIA attributes as a workaround.
81
81
  - **Don't** use unclear trigger copy like "Open" when the destination is not obvious.
82
82
 
83
+ ## Integration examples
84
+
85
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
86
+
83
87
  ## API
84
88
 
85
89
  ### Properties
@@ -0,0 +1,78 @@
1
+ # p-multi-select accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Prompt option used instead of a label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PMultiSelect name="features">
11
+ <PMultiSelectOption value="">
12
+ Select features
13
+ </PMultiSelectOption>
14
+ <PMultiSelectOption value="sport">
15
+ Sport Chrono Package
16
+ </PMultiSelectOption>
17
+ </PMultiSelect>
18
+ ```
19
+
20
+ #### ✅ Recommended
21
+
22
+ ```tsx
23
+ <PMultiSelect label="Optional features" name="features" description="Select all features for your configuration.">
24
+ <PMultiSelectOption value="sport">
25
+ Sport Chrono Package
26
+ </PMultiSelectOption>
27
+ <PMultiSelectOption value="audio">
28
+ BOSE Surround Sound
29
+ </PMultiSelectOption>
30
+ </PMultiSelect>
31
+ ```
32
+
33
+ ### Hidden label without accessible name
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```tsx
38
+ <PMultiSelect name="features" hideLabel={true}>
39
+ <PMultiSelectOption value="sport">
40
+ Sport Chrono Package
41
+ </PMultiSelectOption>
42
+ </PMultiSelect>
43
+ ```
44
+
45
+ #### ✅ Recommended
46
+
47
+ ```tsx
48
+ <PMultiSelect label="Optional features" name="features" hideLabel={true}>
49
+ <PMultiSelectOption value="sport">
50
+ Sport Chrono Package
51
+ </PMultiSelectOption>
52
+ </PMultiSelect>
53
+ ```
54
+
55
+ ### Validation feedback via state and message API
56
+
57
+ #### ❌ Anti-pattern
58
+
59
+ ```tsx
60
+ <PMultiSelect label="Optional features" name="features" aria-invalid={true} message="Required">
61
+ <PMultiSelectOption value="sport">
62
+ Sport Chrono Package
63
+ </PMultiSelectOption>
64
+ </PMultiSelect>
65
+ ```
66
+
67
+ #### ✅ Recommended
68
+
69
+ ```tsx
70
+ <PMultiSelect label="Optional features" name="features" required={true} state="error" message="Select at least one feature to continue.">
71
+ <PMultiSelectOption value="sport">
72
+ Sport Chrono Package
73
+ </PMultiSelectOption>
74
+ <PMultiSelectOption value="audio">
75
+ BOSE Surround Sound
76
+ </PMultiSelectOption>
77
+ </PMultiSelect>
78
+ ```
@@ -9,7 +9,7 @@ import {
9
9
  PMultiSelectOption,
10
10
  type PMultiSelectProps,
11
11
  } from '@porsche-design-system/components-react';
12
- import { useCallback, useRef, useState } from 'react';
12
+ import { useCallback, useMemo, useRef, useState } from 'react';
13
13
 
14
14
  const useDebounce = <T,>(callback: (value: T) => void, delay = 400) => {
15
15
  const timer = useRef<number | undefined>(undefined);
@@ -19,6 +19,20 @@ const useDebounce = <T,>(callback: (value: T) => void, delay = 400) => {
19
19
  };
20
20
  };
21
21
 
22
+ const getFilterStatusMessage = (
23
+ searchValue: string,
24
+ optionCount: number,
25
+ isLoading: boolean,
26
+ error: string | null
27
+ ): string => {
28
+ if (error) return '';
29
+ if (isLoading) return 'Loading options';
30
+ const term = searchValue.trim();
31
+ if (!term) return '';
32
+ if (optionCount === 0) return 'No results found';
33
+ return optionCount === 1 ? '1 result available' : `${optionCount} results available`;
34
+ };
35
+
22
36
  export const Example = () => {
23
37
  const [value, setValue] = useState<PMultiSelectProps['value']>([]);
24
38
  const [options, setOptions] = useState<{ value: string; label: string }[]>([]);
@@ -83,6 +97,11 @@ export const Example = () => {
83
97
  }
84
98
  };
85
99
 
100
+ const filterStatusMessage = useMemo(
101
+ () => getFilterStatusMessage(searchValue, options.length, initialLoading || loading, error),
102
+ [searchValue, options.length, initialLoading, loading, error]
103
+ );
104
+
86
105
  return (
87
106
  <PMultiSelect name="async-search-select" label="Async Search" value={value} onChange={onChange} onToggle={onToggle}>
88
107
  <PInputSearch
@@ -100,6 +119,11 @@ export const Example = () => {
100
119
  onChange={(e: any) => e.stopPropagation()}
101
120
  />
102
121
 
122
+ {/* Persistent status announcer for assistive technologies (keep always in the DOM) */}
123
+ <div slot="options-status" className="sr-only" aria-live="polite" aria-atomic="true">
124
+ {filterStatusMessage}
125
+ </div>
126
+
103
127
  {/* Initial skeleton loading */}
104
128
  {initialLoading &&
105
129
  !error &&
@@ -112,15 +136,14 @@ export const Example = () => {
112
136
  </PMultiSelectOption>
113
137
  ))}
114
138
 
115
- {/* No filter results */}
116
- {!initialLoading && options.length === 0 && !error && (
139
+ {/* No filter results (visual only; announcements come from the live region) */}
140
+ {!initialLoading && !loading && options.length === 0 && !error && (
117
141
  <div
118
142
  slot="options-status"
119
143
  className="text-contrast-medium cursor-not-allowed py-static-sm px-[12px]"
120
- role="alert"
144
+ aria-hidden="true"
121
145
  >
122
- <span aria-hidden="true">–</span>
123
- <span className="sr-only">No results found</span>
146
+
124
147
  </div>
125
148
  )}
126
149
 
@@ -4,7 +4,7 @@ The `p-multi-select` component is a versatile custom form element that facilitat
4
4
 
5
5
  Many of the properties closely resemble those found in the [select](../p-select/p-select.md) and other form components (e.g. `label`, `description`, `state`, `message`, `hideLabel`, `disabled`, `required` & `dropdownDirection`). The `p-multi-select` offers a search field by default. When the user types in a search string, the options are reduced by matching the options text.
6
6
 
7
- Options are slotted using the `p-multi-select-option` component. Each option needs to have an assigned value, which can be passed via an attribute or property and needs to be of type string. Initial selection states can only be achieved using the value property on the `p-multi-select` component ([More Info](./p-multi-select.md)). Options don't have a selected attribute or property. If an option should be visible but not selectable, it can be disabled by using the `disabled` attribute.
7
+ Options are slotted using the `p-multi-select-option` component. Each option needs to have an assigned value, which can be passed via an attribute or property and needs to be a string or number. `null` and `undefined` are not valid option values. Initial selection states can only be achieved using the value property on the `p-multi-select` component ([More Info](./p-multi-select.md)). Options don't have a selected attribute or property. If an option should be visible but not selectable, it can be disabled by using the `disabled` attribute.
8
8
 
9
9
  **Hint:** The `p-multi-select` utilizes the [Popover API](https://developer.mozilla.org/en-US/docs/Web/API/Popover_API) to render its dropdown on the `#top-layer` which enables it to be shown correctly even when used e.g. within a scroll container.
10
10
 
@@ -85,6 +85,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
85
85
  - **Don't** use a prompt option or adjacent text as a substitute for a field label.
86
86
  - **Don't** use `hide-label` without an accessible name.
87
87
 
88
+ ## Integration examples
89
+
90
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
91
+
88
92
  ## API
89
93
 
90
94
  ### Properties
@@ -142,7 +146,7 @@ Allowed parents: `p-multi-select`, `p-optgroup`.
142
146
  | Property | Type | Default | Description |
143
147
  | --- | --- | --- | --- |
144
148
  | `disabled` | `boolean` | `false` | Disables the option, preventing it from being selected. |
145
- | `value` _(required)_ | `string | number` | `undefined` | Sets the value submitted with the form data when this option is selected in the parent multi-select. |
149
+ | `value` _(required)_ | `string | number` | `undefined` | Sets the required option value submitted with the form data when selected. Must be a string or number. |
146
150
 
147
151
  #### Slots
148
152
 
@@ -0,0 +1,23 @@
1
+ # p-pagination accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Default English labels on a localized page
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <html lang="de_DE">
11
+ ...
12
+ <PPagination totalItemsCount={120} itemsPerPage={10} activePage={1}></PPagination>
13
+ </html>
14
+ ```
15
+
16
+ #### ✅ Recommended
17
+
18
+ ```tsx
19
+ <html lang="de_DE">
20
+ ...
21
+ <PPagination totalItemsCount={120} itemsPerPage={10} activePage={1} intl={{'root': 'Seitennavigation', 'prev': 'Vorherige Seite', 'next': 'Nächste Seite', 'page': 'Seite'}}></PPagination>
22
+ </html>
23
+ ```
@@ -54,6 +54,10 @@ To adapt the pagination to the specific viewport context, the amount of displaye
54
54
  - **Do** keep prev/next and page button labels specific enough to identify the pagination control.
55
55
  - **Don't** rely on default English `intl` strings on localized pages.
56
56
 
57
+ ## Integration examples
58
+
59
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
60
+
57
61
  ## API
58
62
 
59
63
  ### Properties
@@ -0,0 +1,45 @@
1
+ # p-pin-code accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Missing field label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PPinCode name="verification" length={6}></PPinCode>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```tsx
16
+ <PPinCode name="verification" length={6} label="Verification code" description="Enter the 6-digit code from your email."></PPinCode>
17
+ ```
18
+
19
+ ### Hidden label without accessible name
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```tsx
24
+ <PPinCode name="verification" length={6} hideLabel={true}></PPinCode>
25
+ ```
26
+
27
+ #### ✅ Recommended
28
+
29
+ ```tsx
30
+ <PPinCode name="verification" length={6} hideLabel={true} label="Verification code"></PPinCode>
31
+ ```
32
+
33
+ ### Validation feedback via state and message API
34
+
35
+ #### ❌ Anti-pattern
36
+
37
+ ```tsx
38
+ <PPinCode name="verification" label="Verification code" aria-invalid={true} message="Invalid"></PPinCode>
39
+ ```
40
+
41
+ #### ✅ Recommended
42
+
43
+ ```tsx
44
+ <PPinCode name="verification" length={6} label="Verification code" state="error" message="Enter the complete 6-digit verification code."></PPinCode>
45
+ ```
@@ -58,6 +58,10 @@ In general, avoid using the `disabled="true"` state. Disabled elements are no lo
58
58
  - **Do** use the component state/message API so validation and status changes are announced.
59
59
  - **Don't** use `hide-label` without an accessible name.
60
60
 
61
+ ## Integration examples
62
+
63
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
64
+
61
65
  ## API
62
66
 
63
67
  ### Properties
@@ -77,14 +81,14 @@ In general, avoid using the `disabled="true"` state. Disabled elements are no lo
77
81
  | `required` | `boolean` | `false` | Marks the pin code as required so the form cannot be submitted until all fields are filled. |
78
82
  | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the pin code, which controls its visual appearance and feedback message style (`none`, `success`, `error`). |
79
83
  | `type` | `'number'` `'password'` | `'number'` | Controls whether the individual input fields mask their content as password dots (`password`) or show digits (`number`). |
80
- | `value` | `string` | `''` | Sets the current concatenated value of all pin code fields and allows setting the initial value. |
84
+ | `value` | `string | number | null` | `''` | Sets the current concatenated value. Numbers are accepted for programmatic assignment, but user input updates the value as a string. |
81
85
 
82
86
  ### Events
83
87
 
84
88
  | Event | Type | Description |
85
89
  | --- | --- | --- |
86
90
  | `blur` | `CustomEvent<void>` | Emitted when the pin code component loses focus after the user finishes entering characters. |
87
- | `change` | `CustomEvent<PinCodeChangeEventDetail>`<br>`{ value: string; isComplete: boolean }` | Emitted when the pin code value changes as the user types, carrying the new concatenated value in the event detail. |
91
+ | `change` | `CustomEvent<PinCodeChangeEventDetail>`<br>`{ value: string; isComplete: boolean }` | Emitted when the pin code value changes as the user types, carrying `{ value: string; isComplete: boolean }` in the event detail. |
88
92
 
89
93
  ### Controlled properties
90
94
 
@@ -0,0 +1,61 @@
1
+ # p-popover accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PPopover aria-label="Specification details" description="Additional specification details."></PPopover>
11
+ ```
12
+
13
+ #### ✅ Recommended
14
+
15
+ ```tsx
16
+ <PPopover aria={{'aria-label': 'Specification details'}} description="Additional specification details."></PPopover>
17
+ ```
18
+
19
+ ### Custom slotted trigger without accessible name
20
+
21
+ #### ❌ Anti-pattern
22
+
23
+ ```tsx
24
+ <PPopover>
25
+ <button slot="button" type="button"></button>
26
+ Additional specification details.
27
+ </PPopover>
28
+ ```
29
+
30
+ #### ✅ Recommended
31
+
32
+ ```tsx
33
+ <PPopover description="Additional specification details."></PPopover>
34
+
35
+ {/* or provide an accessible name on a custom slotted button */}
36
+
37
+ <PPopover>
38
+ <button slot="button" type="button" ariaLabel="Specification details">
39
+ i
40
+ </button>
41
+ Additional specification details.
42
+ </PPopover>
43
+ ```
44
+
45
+ ### Custom slotted trigger without aria-expanded
46
+
47
+ #### ❌ Anti-pattern
48
+
49
+ ```tsx
50
+ <PPopover>
51
+ <button slot="button" type="button"></button>
52
+ </PPopover>
53
+ ```
54
+
55
+ #### ✅ Recommended
56
+
57
+ ```tsx
58
+ <PPopover>
59
+ <button slot="button" type="button" ariaExpanded="false"></button>
60
+ </PPopover>
61
+ ```
@@ -65,6 +65,10 @@ In **controlled** mode the consumer owns the `open` state, so the slotted trigge
65
65
  - **Don't** use an unnamed custom slotted trigger button.
66
66
  - **Don't** add native `aria-*` attributes directly on the component host.
67
67
 
68
+ ## Integration examples
69
+
70
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
71
+
68
72
  ## API
69
73
 
70
74
  ### Properties
@@ -0,0 +1,63 @@
1
+ # p-radio-group accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### Missing group label
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PRadioGroup name="fuel">
11
+ <PRadioGroupOption value="electric" label="Electric"></PRadioGroupOption>
12
+ <PRadioGroupOption value="hybrid" label="Hybrid"></PRadioGroupOption>
13
+ </PRadioGroup>
14
+ ```
15
+
16
+ #### ✅ Recommended
17
+
18
+ ```tsx
19
+ <PRadioGroup label="Powertrain" name="fuel" description="Select your preferred powertrain.">
20
+ <PRadioGroupOption value="electric" label="Electric"></PRadioGroupOption>
21
+ <PRadioGroupOption value="hybrid" label="Hybrid"></PRadioGroupOption>
22
+ </PRadioGroup>
23
+ ```
24
+
25
+ ### Hidden label without accessible name
26
+
27
+ #### ❌ Anti-pattern
28
+
29
+ ```tsx
30
+ <PRadioGroup name="fuel" hideLabel={true}>
31
+ <PRadioGroupOption value="electric" label="Electric"></PRadioGroupOption>
32
+ <PRadioGroupOption value="hybrid" label="Hybrid"></PRadioGroupOption>
33
+ </PRadioGroup>
34
+ ```
35
+
36
+ #### ✅ Recommended
37
+
38
+ ```tsx
39
+ <PRadioGroup label="Powertrain" name="fuel" hideLabel={true}>
40
+ <PRadioGroupOption value="electric" label="Electric"></PRadioGroupOption>
41
+ <PRadioGroupOption value="hybrid" label="Hybrid"></PRadioGroupOption>
42
+ </PRadioGroup>
43
+ ```
44
+
45
+ ### Validation feedback via state and message API
46
+
47
+ #### ❌ Anti-pattern
48
+
49
+ ```tsx
50
+ <PRadioGroup label="Powertrain" name="fuel" aria-invalid={true} message="Required">
51
+ <PRadioGroupOption value="electric" label="Electric"></PRadioGroupOption>
52
+ <PRadioGroupOption value="hybrid" label="Hybrid"></PRadioGroupOption>
53
+ </PRadioGroup>
54
+ ```
55
+
56
+ #### ✅ Recommended
57
+
58
+ ```tsx
59
+ <PRadioGroup label="Powertrain" name="fuel" required={true} state="error" message="Select a powertrain to continue.">
60
+ <PRadioGroupOption value="electric" label="Electric"></PRadioGroupOption>
61
+ <PRadioGroupOption value="hybrid" label="Hybrid"></PRadioGroupOption>
62
+ </PRadioGroup>
63
+ ```
@@ -10,7 +10,7 @@ import {
10
10
  import { FormEvent, useState } from 'react';
11
11
 
12
12
  export const Example = () => {
13
- const [form, setForm] = useState({ myRadioGroup: '' });
13
+ const [form, setForm] = useState<{ myRadioGroup: PRadioGroupProps['value'] }>({ myRadioGroup: null });
14
14
  const [lastSubmittedData, setLastSubmittedData] = useState<any>();
15
15
 
16
16
  const onChange = (e: CustomEvent<RadioGroupChangeEventDetail>) => {
@@ -28,7 +28,7 @@ export const Example = () => {
28
28
 
29
29
  const onReset = (e: FormEvent<HTMLFormElement>) => {
30
30
  e.preventDefault();
31
- setForm({ myRadioGroup: '' });
31
+ setForm({ myRadioGroup: null });
32
32
  };
33
33
 
34
34
  return (
@@ -6,7 +6,7 @@ The `p-radio-group` component is a versatile custom form element that enables th
6
6
  >
7
7
  > The `blur` event is emitted whenever the focused `p-radio-group-option` changes — not only when the entire `p-radio-group` loses focus. This means that switching between options within the same group will also trigger a `blur` event for the previously focused option.
8
8
 
9
- Options are slotted using the `p-radio-group-option` component. Each option needs to have an assigned value, which can be passed via an attribute or property and needs to be of type string. Initial selection states can only be achieved using the value property on the `p-radio-group` component. If an option should be visible but not selectable, it can be disabled by using the `disabled` attribute.
9
+ Options are slotted using the `p-radio-group-option` component. Each option needs an assigned `string` or `number` value. The `p-radio-group` value matches an option strictly by type and value, so a number does not match the equivalent string. `undefined` and `null` are reserved for the radio group's unselected state and are not valid option values. Initial selection states can only be achieved using the `value` property on the `p-radio-group` component. If an option should be visible but not selectable, it can be disabled using the `disabled` attribute.
10
10
 
11
11
  A `label` is a caption which informs the user what information a particular form field is asking for. The `p-radio-group` component can be used with or without a label, but it's recommended to keep the label visible for better accessibility whenever possible. When used without a label, it's best practice to provide a descriptive label text for screen readers.
12
12
 
@@ -70,6 +70,10 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
70
70
  - **Don't** rely on adjacent text instead of the group `label` prop.
71
71
  - **Don't** use `hide-label` without an accessible name.
72
72
 
73
+ ## Integration examples
74
+
75
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
76
+
73
77
  ## Tests
74
78
 
75
79
  ### Automated
@@ -105,7 +109,7 @@ In general, avoid using the `disabled` state. Disabled elements are no longer fo
105
109
  | `name` _(required)_ | `string` | `undefined` | Sets the shared name attribute for all radio buttons in the group, grouping them for mutually exclusive selection. |
106
110
  | `required` | `boolean` | `false` | Marks the radio group as required so the form cannot be submitted until one option is selected. |
107
111
  | `state` | `'none'` `'error'` `'success'` | `'none'` | Sets the validation state of the radio group, controlling its visual appearance and feedback message style (`none`, `success`, `error`). |
108
- | `value` | `string` | `''` | Sets the currently selected value that pre-selects the matching radio option and reflects user changes. |
112
+ | `value` | `string | number | null` | `undefined` | Sets the currently selected value that pre-selects the matching radio option and reflects user changes. Matches an option strictly by type and value, meaning string or number only match an option whose value has the same type and equal value. Use undefined or null for no preselection; these values never match an option because every option requires a string or number value. Please note that FormData always serializes values as strings, so when participating in a native (uncontrolled) form a number value is restored as string via formStateRestoreCallback and will no longer strictly match a number-typed option. This limitation only applies to native form state restoration; in controlled forms (where the consumer manages value directly via the change event), the number type is preserved end-to-end. |
109
113
 
110
114
  ### Events
111
115
 
@@ -139,7 +143,7 @@ Allowed parent: `p-radio-group`.
139
143
  | `disabled` | `boolean` | `false` | Prevents this option from being selected and excludes its value from form submissions while it is disabled. |
140
144
  | `label` | `string` | `undefined` | Sets the visible label text displayed next to the radio button that the user reads to identify the option. |
141
145
  | `loading` _(experimental)_ | `boolean` | `false` | @experimental Disables this option and shows a spinner to indicate that this particular option is in a loading state. |
142
- | `value` | `string` | `undefined` | Sets the value submitted with the form data when this radio option is selected within its parent group. |
146
+ | `value` _(required)_ | `string | number` | `undefined` | Sets the required option value. Must be a string or number and is selected when it strictly matches the parent `p-radio-group` value by type and value. |
143
147
 
144
148
  #### Slots
145
149
 
@@ -0,0 +1,31 @@
1
+ # p-scroller accessibility integration examples
2
+
3
+ ## Integration examples
4
+
5
+ ### ARIA on component host vs aria prop
6
+
7
+ #### ❌ Anti-pattern
8
+
9
+ ```tsx
10
+ <PScroller aria-label="Section tags" aria-description="Section tags for the section overview">
11
+ <PTag>
12
+ Overview
13
+ </PTag>
14
+ <PTag>
15
+ Equipment
16
+ </PTag>
17
+ </PScroller>
18
+ ```
19
+
20
+ #### ✅ Recommended
21
+
22
+ ```tsx
23
+ <PScroller aria={{'aria-label': 'Section tags', 'aria-description': 'Section tags for the section overview'}}>
24
+ <PTag>
25
+ Overview
26
+ </PTag>
27
+ <PTag>
28
+ Equipment
29
+ </PTag>
30
+ </PScroller>
31
+ ```
@@ -57,6 +57,10 @@ If the `p-scroller` component is accessed by keyboard navigation and is focused,
57
57
  - **Do** pass `aria-label` and `aria-description` via the `aria` prop, not as host attributes.
58
58
  - **Don't** add native `aria-*` attributes directly on the component host.
59
59
 
60
+ ## Integration examples
61
+
62
+ See [accessibility integration examples](./accessibility.md) for paired anti-pattern and recommended implementations.
63
+
60
64
  ## API
61
65
 
62
66
  ### Properties