@porsche-design-system/components-angular 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 (344) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/ag-grid/package.json +6 -0
  3. package/bin/pds-skill.js +346 -0
  4. package/emotion/package.json +6 -0
  5. package/fesm2022/porsche-design-system-components-angular.mjs +232 -232
  6. package/fesm2022/porsche-design-system-components-angular.mjs.map +1 -1
  7. package/jsdom-polyfill/package.json +5 -0
  8. package/meta/package.json +6 -0
  9. package/package.json +5 -2
  10. package/partials/package.json +6 -0
  11. package/skills/pds-knowledge-angular/SKILL.md +124 -0
  12. package/skills/pds-knowledge-angular/references/components/p-accordion/accessibility.md +63 -0
  13. package/skills/pds-knowledge-angular/references/components/p-accordion/examples/Default.ts +26 -0
  14. package/skills/pds-knowledge-angular/references/components/p-accordion/examples/InteractiveElementsInSummary.ts +30 -0
  15. package/skills/pds-knowledge-angular/references/components/p-accordion/examples/StickySummary.ts +26 -0
  16. package/skills/pds-knowledge-angular/references/components/p-accordion/p-accordion.md +99 -0
  17. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/Default.ts +13 -0
  18. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinCheckbox.ts +33 -0
  19. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinFormLabel.ts +40 -0
  20. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinImage.ts +16 -0
  21. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinInputSearch.ts +15 -0
  22. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinRadioGroup.ts +32 -0
  23. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinTable.ts +94 -0
  24. package/skills/pds-knowledge-angular/references/components/p-ai-tag/examples/WithinText.ts +17 -0
  25. package/skills/pds-knowledge-angular/references/components/p-ai-tag/p-ai-tag.md +47 -0
  26. package/skills/pds-knowledge-angular/references/components/p-banner/accessibility.md +35 -0
  27. package/skills/pds-knowledge-angular/references/components/p-banner/examples/Customization.ts +37 -0
  28. package/skills/pds-knowledge-angular/references/components/p-banner/examples/Default.ts +26 -0
  29. package/skills/pds-knowledge-angular/references/components/p-banner/p-banner.md +96 -0
  30. package/skills/pds-knowledge-angular/references/components/p-button/accessibility.md +61 -0
  31. package/skills/pds-knowledge-angular/references/components/p-button/examples/Default.ts +15 -0
  32. package/skills/pds-knowledge-angular/references/components/p-button/examples/Form.ts +26 -0
  33. package/skills/pds-knowledge-angular/references/components/p-button/examples/FormAttribute.ts +30 -0
  34. package/skills/pds-knowledge-angular/references/components/p-button/p-button.md +122 -0
  35. package/skills/pds-knowledge-angular/references/components/p-button-pure/accessibility.md +61 -0
  36. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/CustomClickableArea.ts +15 -0
  37. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/Default.ts +15 -0
  38. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/Form.ts +26 -0
  39. package/skills/pds-knowledge-angular/references/components/p-button-pure/examples/FormAttribute.ts +30 -0
  40. package/skills/pds-knowledge-angular/references/components/p-button-pure/p-button-pure.md +122 -0
  41. package/skills/pds-knowledge-angular/references/components/p-button-tile/accessibility.md +31 -0
  42. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/ColorScheme.ts +18 -0
  43. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/Default.ts +21 -0
  44. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/FooterSlot.ts +32 -0
  45. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/Hyphens.ts +38 -0
  46. package/skills/pds-knowledge-angular/references/components/p-button-tile/examples/UiBehaviour.ts +44 -0
  47. package/skills/pds-knowledge-angular/references/components/p-button-tile/p-button-tile.md +119 -0
  48. package/skills/pds-knowledge-angular/references/components/p-canvas/examples/Default.ts +105 -0
  49. package/skills/pds-knowledge-angular/references/components/p-canvas/p-canvas.md +95 -0
  50. package/skills/pds-knowledge-angular/references/components/p-carousel/accessibility.md +61 -0
  51. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/Default.ts +26 -0
  52. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/DynamicSlides.ts +37 -0
  53. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/FlexibleWidths.ts +32 -0
  54. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/FocusOnCenterSlide.ts +65 -0
  55. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/Intl.ts +23 -0
  56. package/skills/pds-knowledge-angular/references/components/p-carousel/examples/JumpToSlide.ts +50 -0
  57. package/skills/pds-knowledge-angular/references/components/p-carousel/p-carousel.md +146 -0
  58. package/skills/pds-knowledge-angular/references/components/p-checkbox/accessibility.md +31 -0
  59. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Default.ts +13 -0
  60. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Form.ts +31 -0
  61. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Indeterminate.ts +16 -0
  62. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/Slots.ts +57 -0
  63. package/skills/pds-knowledge-angular/references/components/p-checkbox/examples/WrappedLabel.ts +27 -0
  64. package/skills/pds-knowledge-angular/references/components/p-checkbox/p-checkbox.md +126 -0
  65. package/skills/pds-knowledge-angular/references/components/p-crest/accessibility.md +17 -0
  66. package/skills/pds-knowledge-angular/references/components/p-crest/examples/CustomClickableArea.ts +13 -0
  67. package/skills/pds-knowledge-angular/references/components/p-crest/examples/Default.ts +13 -0
  68. package/skills/pds-knowledge-angular/references/components/p-crest/examples/Link.ts +13 -0
  69. package/skills/pds-knowledge-angular/references/components/p-crest/p-crest.md +69 -0
  70. package/skills/pds-knowledge-angular/references/components/p-display/examples/Color.ts +15 -0
  71. package/skills/pds-knowledge-angular/references/components/p-display/examples/Default.ts +15 -0
  72. package/skills/pds-knowledge-angular/references/components/p-display/examples/Semantics.ts +21 -0
  73. package/skills/pds-knowledge-angular/references/components/p-display/examples/Size.ts +15 -0
  74. package/skills/pds-knowledge-angular/references/components/p-display/examples/SizeResponsive.ts +15 -0
  75. package/skills/pds-knowledge-angular/references/components/p-display/p-display.md +78 -0
  76. package/skills/pds-knowledge-angular/references/components/p-divider/accessibility.md +41 -0
  77. package/skills/pds-knowledge-angular/references/components/p-divider/examples/Default.ts +13 -0
  78. package/skills/pds-knowledge-angular/references/components/p-divider/examples/Responsive.ts +15 -0
  79. package/skills/pds-knowledge-angular/references/components/p-divider/examples/Vertical.ts +15 -0
  80. package/skills/pds-knowledge-angular/references/components/p-divider/p-divider.md +53 -0
  81. package/skills/pds-knowledge-angular/references/components/p-drilldown/accessibility.md +65 -0
  82. package/skills/pds-knowledge-angular/references/components/p-drilldown/examples/CustomContent.ts +166 -0
  83. package/skills/pds-knowledge-angular/references/components/p-drilldown/examples/Default.ts +119 -0
  84. package/skills/pds-knowledge-angular/references/components/p-drilldown/p-drilldown.md +172 -0
  85. package/skills/pds-knowledge-angular/references/components/p-fieldset/accessibility.md +37 -0
  86. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/Default.ts +15 -0
  87. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/Required.ts +16 -0
  88. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/SlottedLabel.ts +18 -0
  89. package/skills/pds-knowledge-angular/references/components/p-fieldset/examples/SlottedMessage.ts +18 -0
  90. package/skills/pds-knowledge-angular/references/components/p-fieldset/p-fieldset.md +92 -0
  91. package/skills/pds-knowledge-angular/references/components/p-flag/accessibility.md +39 -0
  92. package/skills/pds-knowledge-angular/references/components/p-flag/examples/Default.ts +13 -0
  93. package/skills/pds-knowledge-angular/references/components/p-flag/examples/ResponsiveSize.ts +13 -0
  94. package/skills/pds-knowledge-angular/references/components/p-flag/examples/Size.ts +16 -0
  95. package/skills/pds-knowledge-angular/references/components/p-flag/examples/SizeCssVar.ts +13 -0
  96. package/skills/pds-knowledge-angular/references/components/p-flag/p-flag.md +72 -0
  97. package/skills/pds-knowledge-angular/references/components/p-flyout/accessibility.md +80 -0
  98. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/CustomStyling.ts +47 -0
  99. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/Default.ts +44 -0
  100. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/Form.ts +47 -0
  101. package/skills/pds-knowledge-angular/references/components/p-flyout/examples/StickyTop.ts +44 -0
  102. package/skills/pds-knowledge-angular/references/components/p-flyout/p-flyout.md +132 -0
  103. package/skills/pds-knowledge-angular/references/components/p-heading/accessibility.md +29 -0
  104. package/skills/pds-knowledge-angular/references/components/p-heading/examples/Color.ts +15 -0
  105. package/skills/pds-knowledge-angular/references/components/p-heading/examples/Default.ts +15 -0
  106. package/skills/pds-knowledge-angular/references/components/p-heading/examples/Semantics.ts +21 -0
  107. package/skills/pds-knowledge-angular/references/components/p-heading/p-heading.md +82 -0
  108. package/skills/pds-knowledge-angular/references/components/p-icon/accessibility.md +39 -0
  109. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Color.ts +16 -0
  110. package/skills/pds-knowledge-angular/references/components/p-icon/examples/ColorCssVar.ts +13 -0
  111. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Custom.ts +13 -0
  112. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Default.ts +13 -0
  113. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Overview.ts +591 -0
  114. package/skills/pds-knowledge-angular/references/components/p-icon/examples/ResponsiveSize.ts +13 -0
  115. package/skills/pds-knowledge-angular/references/components/p-icon/examples/Size.ts +16 -0
  116. package/skills/pds-knowledge-angular/references/components/p-icon/examples/SizeCssVar.ts +13 -0
  117. package/skills/pds-knowledge-angular/references/components/p-icon/p-icon.md +92 -0
  118. package/skills/pds-knowledge-angular/references/components/p-inline-notification/accessibility.md +38 -0
  119. package/skills/pds-knowledge-angular/references/components/p-inline-notification/examples/ActionButton.ts +29 -0
  120. package/skills/pds-knowledge-angular/references/components/p-inline-notification/examples/Default.ts +13 -0
  121. package/skills/pds-knowledge-angular/references/components/p-inline-notification/examples/EventHandling.ts +31 -0
  122. package/skills/pds-knowledge-angular/references/components/p-inline-notification/p-inline-notification.md +78 -0
  123. package/skills/pds-knowledge-angular/references/components/p-input-date/accessibility.md +45 -0
  124. package/skills/pds-knowledge-angular/references/components/p-input-date/examples/Default.ts +13 -0
  125. package/skills/pds-knowledge-angular/references/components/p-input-date/examples/Form.ts +31 -0
  126. package/skills/pds-knowledge-angular/references/components/p-input-date/examples/Slots.ts +44 -0
  127. package/skills/pds-knowledge-angular/references/components/p-input-date/p-input-date.md +142 -0
  128. package/skills/pds-knowledge-angular/references/components/p-input-email/accessibility.md +45 -0
  129. package/skills/pds-knowledge-angular/references/components/p-input-email/examples/Default.ts +13 -0
  130. package/skills/pds-knowledge-angular/references/components/p-input-email/examples/Form.ts +31 -0
  131. package/skills/pds-knowledge-angular/references/components/p-input-email/examples/Slots.ts +44 -0
  132. package/skills/pds-knowledge-angular/references/components/p-input-email/p-input-email.md +146 -0
  133. package/skills/pds-knowledge-angular/references/components/p-input-month/accessibility.md +45 -0
  134. package/skills/pds-knowledge-angular/references/components/p-input-month/examples/Default.ts +13 -0
  135. package/skills/pds-knowledge-angular/references/components/p-input-month/examples/Form.ts +31 -0
  136. package/skills/pds-knowledge-angular/references/components/p-input-month/examples/Slots.ts +44 -0
  137. package/skills/pds-knowledge-angular/references/components/p-input-month/p-input-month.md +142 -0
  138. package/skills/pds-knowledge-angular/references/components/p-input-number/accessibility.md +45 -0
  139. package/skills/pds-knowledge-angular/references/components/p-input-number/examples/Default.ts +13 -0
  140. package/skills/pds-knowledge-angular/references/components/p-input-number/examples/Form.ts +31 -0
  141. package/skills/pds-knowledge-angular/references/components/p-input-number/examples/Slots.ts +44 -0
  142. package/skills/pds-knowledge-angular/references/components/p-input-number/p-input-number.md +150 -0
  143. package/skills/pds-knowledge-angular/references/components/p-input-password/accessibility.md +45 -0
  144. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Default.ts +13 -0
  145. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Form.ts +31 -0
  146. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Slots.ts +42 -0
  147. package/skills/pds-knowledge-angular/references/components/p-input-password/examples/Toggle.ts +13 -0
  148. package/skills/pds-knowledge-angular/references/components/p-input-password/p-input-password.md +145 -0
  149. package/skills/pds-knowledge-angular/references/components/p-input-search/accessibility.md +59 -0
  150. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/AriaCombobox.ts +38 -0
  151. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/Default.ts +13 -0
  152. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/Form.ts +31 -0
  153. package/skills/pds-knowledge-angular/references/components/p-input-search/examples/Slots.ts +44 -0
  154. package/skills/pds-knowledge-angular/references/components/p-input-search/p-input-search.md +182 -0
  155. package/skills/pds-knowledge-angular/references/components/p-input-tel/accessibility.md +45 -0
  156. package/skills/pds-knowledge-angular/references/components/p-input-tel/examples/Default.ts +13 -0
  157. package/skills/pds-knowledge-angular/references/components/p-input-tel/examples/Form.ts +31 -0
  158. package/skills/pds-knowledge-angular/references/components/p-input-tel/examples/Slots.ts +44 -0
  159. package/skills/pds-knowledge-angular/references/components/p-input-tel/p-input-tel.md +145 -0
  160. package/skills/pds-knowledge-angular/references/components/p-input-text/accessibility.md +45 -0
  161. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Controlled.ts +36 -0
  162. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Default.ts +13 -0
  163. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Form.ts +31 -0
  164. package/skills/pds-knowledge-angular/references/components/p-input-text/examples/Slots.ts +44 -0
  165. package/skills/pds-knowledge-angular/references/components/p-input-text/p-input-text.md +150 -0
  166. package/skills/pds-knowledge-angular/references/components/p-input-time/accessibility.md +45 -0
  167. package/skills/pds-knowledge-angular/references/components/p-input-time/examples/Default.ts +13 -0
  168. package/skills/pds-knowledge-angular/references/components/p-input-time/examples/Form.ts +31 -0
  169. package/skills/pds-knowledge-angular/references/components/p-input-time/examples/Slots.ts +44 -0
  170. package/skills/pds-knowledge-angular/references/components/p-input-time/p-input-time.md +144 -0
  171. package/skills/pds-knowledge-angular/references/components/p-input-url/accessibility.md +45 -0
  172. package/skills/pds-knowledge-angular/references/components/p-input-url/examples/Default.ts +13 -0
  173. package/skills/pds-knowledge-angular/references/components/p-input-url/examples/Form.ts +31 -0
  174. package/skills/pds-knowledge-angular/references/components/p-input-url/examples/Slots.ts +44 -0
  175. package/skills/pds-knowledge-angular/references/components/p-input-url/p-input-url.md +145 -0
  176. package/skills/pds-knowledge-angular/references/components/p-input-week/accessibility.md +45 -0
  177. package/skills/pds-knowledge-angular/references/components/p-input-week/examples/Default.ts +13 -0
  178. package/skills/pds-knowledge-angular/references/components/p-input-week/examples/Form.ts +31 -0
  179. package/skills/pds-knowledge-angular/references/components/p-input-week/examples/Slots.ts +44 -0
  180. package/skills/pds-knowledge-angular/references/components/p-input-week/p-input-week.md +142 -0
  181. package/skills/pds-knowledge-angular/references/components/p-link/accessibility.md +73 -0
  182. package/skills/pds-knowledge-angular/references/components/p-link/examples/Default.ts +15 -0
  183. package/skills/pds-knowledge-angular/references/components/p-link/examples/FrameworkRouting.ts +17 -0
  184. package/skills/pds-knowledge-angular/references/components/p-link/examples/Icon.ts +20 -0
  185. package/skills/pds-knowledge-angular/references/components/p-link/p-link.md +105 -0
  186. package/skills/pds-knowledge-angular/references/components/p-link-pure/accessibility.md +73 -0
  187. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/CustomClickableArea.ts +15 -0
  188. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/Default.ts +15 -0
  189. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/FrameworkRouting.ts +17 -0
  190. package/skills/pds-knowledge-angular/references/components/p-link-pure/examples/Icon.ts +20 -0
  191. package/skills/pds-knowledge-angular/references/components/p-link-pure/p-link-pure.md +114 -0
  192. package/skills/pds-knowledge-angular/references/components/p-link-tile/accessibility.md +31 -0
  193. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/ColorScheme.ts +18 -0
  194. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/Default.ts +21 -0
  195. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/FooterSlot.ts +32 -0
  196. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/Hyphens.ts +39 -0
  197. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/UiBehaviour.ts +44 -0
  198. package/skills/pds-knowledge-angular/references/components/p-link-tile/examples/WithVideo.ts +18 -0
  199. package/skills/pds-knowledge-angular/references/components/p-link-tile/p-link-tile.md +109 -0
  200. package/skills/pds-knowledge-angular/references/components/p-link-tile-product/examples/Default.ts +24 -0
  201. package/skills/pds-knowledge-angular/references/components/p-link-tile-product/examples/FrameworkRouting.ts +27 -0
  202. package/skills/pds-knowledge-angular/references/components/p-link-tile-product/p-link-tile-product.md +93 -0
  203. package/skills/pds-knowledge-angular/references/components/p-modal/accessibility.md +80 -0
  204. package/skills/pds-knowledge-angular/references/components/p-modal/examples/AlertDialog.ts +41 -0
  205. package/skills/pds-knowledge-angular/references/components/p-modal/examples/CustomStyling.ts +28 -0
  206. package/skills/pds-knowledge-angular/references/components/p-modal/examples/Default.ts +41 -0
  207. package/skills/pds-knowledge-angular/references/components/p-modal/examples/Scrollable.ts +45 -0
  208. package/skills/pds-knowledge-angular/references/components/p-modal/p-modal.md +139 -0
  209. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/CustomStyling.ts +17 -0
  210. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/Default.ts +13 -0
  211. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/MaskBlendMode.ts +35 -0
  212. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/MaskImage.ts +15 -0
  213. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/MaskVideo.ts +15 -0
  214. package/skills/pds-knowledge-angular/references/components/p-model-signature/examples/SafeZone.ts +63 -0
  215. package/skills/pds-knowledge-angular/references/components/p-model-signature/p-model-signature.md +62 -0
  216. package/skills/pds-knowledge-angular/references/components/p-multi-select/accessibility.md +78 -0
  217. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/AsyncFilter.ts +149 -0
  218. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Default.ts +32 -0
  219. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Form.ts +38 -0
  220. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Optgroups.ts +45 -0
  221. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/SelectedSlot.ts +103 -0
  222. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/SetValue.ts +76 -0
  223. package/skills/pds-knowledge-angular/references/components/p-multi-select/examples/Slots.ts +51 -0
  224. package/skills/pds-knowledge-angular/references/components/p-multi-select/p-multi-select.md +201 -0
  225. package/skills/pds-knowledge-angular/references/components/p-pagination/accessibility.md +23 -0
  226. package/skills/pds-knowledge-angular/references/components/p-pagination/examples/Default.ts +13 -0
  227. package/skills/pds-knowledge-angular/references/components/p-pagination/p-pagination.md +87 -0
  228. package/skills/pds-knowledge-angular/references/components/p-pin-code/accessibility.md +45 -0
  229. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/CopyPaste.ts +13 -0
  230. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/Default.ts +13 -0
  231. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/Form.ts +31 -0
  232. package/skills/pds-knowledge-angular/references/components/p-pin-code/examples/Slots.ts +42 -0
  233. package/skills/pds-knowledge-angular/references/components/p-pin-code/p-pin-code.md +113 -0
  234. package/skills/pds-knowledge-angular/references/components/p-popover/accessibility.md +61 -0
  235. package/skills/pds-knowledge-angular/references/components/p-popover/examples/Default.ts +17 -0
  236. package/skills/pds-knowledge-angular/references/components/p-popover/examples/SlottedButton.ts +18 -0
  237. package/skills/pds-knowledge-angular/references/components/p-popover/p-popover.md +120 -0
  238. package/skills/pds-knowledge-angular/references/components/p-radio-group/accessibility.md +63 -0
  239. package/skills/pds-knowledge-angular/references/components/p-radio-group/examples/Default.ts +20 -0
  240. package/skills/pds-knowledge-angular/references/components/p-radio-group/examples/Form.ts +38 -0
  241. package/skills/pds-knowledge-angular/references/components/p-radio-group/examples/Slots.ts +72 -0
  242. package/skills/pds-knowledge-angular/references/components/p-radio-group/p-radio-group.md +161 -0
  243. package/skills/pds-knowledge-angular/references/components/p-scroller/accessibility.md +31 -0
  244. package/skills/pds-knowledge-angular/references/components/p-scroller/examples/Default.ts +54 -0
  245. package/skills/pds-knowledge-angular/references/components/p-scroller/examples/Height.ts +29 -0
  246. package/skills/pds-knowledge-angular/references/components/p-scroller/examples/ScrollToPosition.ts +43 -0
  247. package/skills/pds-knowledge-angular/references/components/p-scroller/p-scroller.md +97 -0
  248. package/skills/pds-knowledge-angular/references/components/p-segmented-control/accessibility.md +67 -0
  249. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/Default.ts +29 -0
  250. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/Form.ts +37 -0
  251. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/Slots.ts +57 -0
  252. package/skills/pds-knowledge-angular/references/components/p-segmented-control/examples/WithLabels.ts +29 -0
  253. package/skills/pds-knowledge-angular/references/components/p-segmented-control/p-segmented-control.md +166 -0
  254. package/skills/pds-knowledge-angular/references/components/p-select/accessibility.md +140 -0
  255. package/skills/pds-knowledge-angular/references/components/p-select/examples/AsyncFilter.ts +149 -0
  256. package/skills/pds-knowledge-angular/references/components/p-select/examples/Default.ts +32 -0
  257. package/skills/pds-knowledge-angular/references/components/p-select/examples/Form.ts +38 -0
  258. package/skills/pds-knowledge-angular/references/components/p-select/examples/Optgroups.ts +45 -0
  259. package/skills/pds-knowledge-angular/references/components/p-select/examples/Required.ts +48 -0
  260. package/skills/pds-knowledge-angular/references/components/p-select/examples/SelectedSlot.ts +130 -0
  261. package/skills/pds-knowledge-angular/references/components/p-select/examples/SetValue.ts +71 -0
  262. package/skills/pds-knowledge-angular/references/components/p-select/examples/Slots.ts +51 -0
  263. package/skills/pds-knowledge-angular/references/components/p-select/examples/SlottedImages.ts +38 -0
  264. package/skills/pds-knowledge-angular/references/components/p-select/p-select.md +198 -0
  265. package/skills/pds-knowledge-angular/references/components/p-sheet/accessibility.md +80 -0
  266. package/skills/pds-knowledge-angular/references/components/p-sheet/examples/Default.ts +33 -0
  267. package/skills/pds-knowledge-angular/references/components/p-sheet/p-sheet.md +125 -0
  268. package/skills/pds-knowledge-angular/references/components/p-spinner/accessibility.md +33 -0
  269. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/Color.ts +16 -0
  270. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/ColorCssVar.ts +13 -0
  271. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/Default.ts +13 -0
  272. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/ResponsiveSize.ts +13 -0
  273. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/Size.ts +16 -0
  274. package/skills/pds-knowledge-angular/references/components/p-spinner/examples/SizeCssVar.ts +13 -0
  275. package/skills/pds-knowledge-angular/references/components/p-spinner/p-spinner.md +100 -0
  276. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/accessibility.md +34 -0
  277. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/examples/Default.ts +26 -0
  278. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/examples/FrameworkImplementation.ts +107 -0
  279. package/skills/pds-knowledge-angular/references/components/p-stepper-horizontal/p-stepper-horizontal.md +113 -0
  280. package/skills/pds-knowledge-angular/references/components/p-switch/accessibility.md +35 -0
  281. package/skills/pds-knowledge-angular/references/components/p-switch/examples/Default.ts +21 -0
  282. package/skills/pds-knowledge-angular/references/components/p-switch/p-switch.md +107 -0
  283. package/skills/pds-knowledge-angular/references/components/p-table/accessibility.md +47 -0
  284. package/skills/pds-knowledge-angular/references/components/p-table/examples/Advanced.ts +162 -0
  285. package/skills/pds-knowledge-angular/references/components/p-table/examples/CaptionProperty.ts +40 -0
  286. package/skills/pds-knowledge-angular/references/components/p-table/examples/CaptionSlot.ts +43 -0
  287. package/skills/pds-knowledge-angular/references/components/p-table/examples/Default.ts +120 -0
  288. package/skills/pds-knowledge-angular/references/components/p-table/examples/HideLabel.ts +40 -0
  289. package/skills/pds-knowledge-angular/references/components/p-table/examples/LayoutFixed.ts +53 -0
  290. package/skills/pds-knowledge-angular/references/components/p-table/examples/Sorting.ts +80 -0
  291. package/skills/pds-knowledge-angular/references/components/p-table/p-table.md +193 -0
  292. package/skills/pds-knowledge-angular/references/components/p-tabs/accessibility.md +56 -0
  293. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/ActiveTab.ts +29 -0
  294. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/Default.ts +29 -0
  295. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/Gradient.ts +114 -0
  296. package/skills/pds-knowledge-angular/references/components/p-tabs/examples/Labelling.ts +29 -0
  297. package/skills/pds-knowledge-angular/references/components/p-tabs/p-tabs.md +140 -0
  298. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/accessibility.md +61 -0
  299. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Default.ts +29 -0
  300. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Gradient.ts +80 -0
  301. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Labelling.ts +29 -0
  302. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/examples/Links.ts +23 -0
  303. package/skills/pds-knowledge-angular/references/components/p-tabs-bar/p-tabs-bar.md +185 -0
  304. package/skills/pds-knowledge-angular/references/components/p-tag/accessibility.md +19 -0
  305. package/skills/pds-knowledge-angular/references/components/p-tag/examples/Default.ts +15 -0
  306. package/skills/pds-knowledge-angular/references/components/p-tag/examples/Multiline.ts +17 -0
  307. package/skills/pds-knowledge-angular/references/components/p-tag/examples/SlottedButton.ts +44 -0
  308. package/skills/pds-knowledge-angular/references/components/p-tag/examples/SlottedLink.ts +44 -0
  309. package/skills/pds-knowledge-angular/references/components/p-tag/p-tag.md +70 -0
  310. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/accessibility.md +35 -0
  311. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/examples/Default.ts +15 -0
  312. package/skills/pds-knowledge-angular/references/components/p-tag-dismissible/p-tag-dismissible.md +79 -0
  313. package/skills/pds-knowledge-angular/references/components/p-text/accessibility.md +21 -0
  314. package/skills/pds-knowledge-angular/references/components/p-text/examples/Default.ts +15 -0
  315. package/skills/pds-knowledge-angular/references/components/p-text/examples/Semantics.ts +21 -0
  316. package/skills/pds-knowledge-angular/references/components/p-text/examples/Size.ts +15 -0
  317. package/skills/pds-knowledge-angular/references/components/p-text/examples/SizeResponsive.ts +15 -0
  318. package/skills/pds-knowledge-angular/references/components/p-text/p-text.md +72 -0
  319. package/skills/pds-knowledge-angular/references/components/p-text-list/accessibility.md +31 -0
  320. package/skills/pds-knowledge-angular/references/components/p-text-list/examples/Default.ts +31 -0
  321. package/skills/pds-knowledge-angular/references/components/p-text-list/p-text-list.md +72 -0
  322. package/skills/pds-knowledge-angular/references/components/p-textarea/accessibility.md +45 -0
  323. package/skills/pds-knowledge-angular/references/components/p-textarea/examples/Default.ts +13 -0
  324. package/skills/pds-knowledge-angular/references/components/p-textarea/examples/Form.ts +31 -0
  325. package/skills/pds-knowledge-angular/references/components/p-textarea/examples/Slots.ts +42 -0
  326. package/skills/pds-knowledge-angular/references/components/p-textarea/p-textarea.md +126 -0
  327. package/skills/pds-knowledge-angular/references/components/p-toast/examples/Default.ts +23 -0
  328. package/skills/pds-knowledge-angular/references/components/p-toast/p-toast.md +61 -0
  329. package/skills/pds-knowledge-angular/references/components/p-wordmark/accessibility.md +31 -0
  330. package/skills/pds-knowledge-angular/references/components/p-wordmark/examples/CustomClickableArea.ts +13 -0
  331. package/skills/pds-knowledge-angular/references/components/p-wordmark/examples/Default.ts +13 -0
  332. package/skills/pds-knowledge-angular/references/components/p-wordmark/examples/Size.ts +13 -0
  333. package/skills/pds-knowledge-angular/references/components/p-wordmark/p-wordmark.md +70 -0
  334. package/skills/pds-knowledge-angular/references/icons.md +5 -0
  335. package/skills/pds-knowledge-angular/references/styles/emotion.md +439 -0
  336. package/skills/pds-knowledge-angular/references/styles/scss.md +402 -0
  337. package/skills/pds-knowledge-angular/references/styles/tailwindcss.md +356 -0
  338. package/skills/pds-knowledge-angular/references/styles/vanilla-extract.md +444 -0
  339. package/skills/pds-knowledge-angular/references/stylesheets.md +331 -0
  340. package/skills/pds-knowledge-angular/references/tokens.md +323 -0
  341. package/testing/package.json +5 -0
  342. package/tokens/package.json +6 -0
  343. package/types/porsche-design-system-components-angular.d.ts +2 -2
  344. package/vanilla-extract/package.json +6 -0
package/CHANGELOG.md CHANGED
@@ -14,6 +14,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0),
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
+ ## [4.6.0-rc.1] - 2026-08-03
18
+
19
+ ### Added
20
+
21
+ - `Knowledge Skill`: Accessibility integration examples for each documented component, pairing anti-pattern and
22
+ recommended markup in the selected framework
23
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
24
+ - `pds-skill`: `--skill` option to link only the named skills instead of all discovered ones
25
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
26
+
27
+ ### Changed
28
+
29
+ - `Knowledge Skill`: Renamed from `porsche-design-system-components-{js|angular|react|vue}` to
30
+ `pds-knowledge-{js|angular|react|vue}`
31
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
32
+ - `Knowledge Skill`: Now shipped in the package's `skills/` directory with one directory per skill, replacing the single
33
+ `skill/` directory. Update any manually created symlink to the new location
34
+ ([#4613](https://github.com/porsche-design-system/porsche-design-system/pull/4613))
35
+
36
+ ### Fixed
37
+
38
+ - `Segmented Control`: Improved `hover/selected` color visibility of items
39
+ ([#4610](https://github.com/porsche-design-system/porsche-design-system/pull/4610))
40
+
41
+ ## [4.6.0-rc.0] - 2026-07-21
42
+
43
+ ### Added
44
+
45
+ - `Knowledge Skill`: providing version-exact guidance for PDS components, stylesheets, design tokens, and styling
46
+ integrations
47
+ ([#4555](https://github.com/porsche-design-system/porsche-design-system/pull/4555))
48
+
17
49
  ## [4.5.0] - 2026-07-21
18
50
 
19
51
  ## [4.5.0-rc.1] - 2026-07-20
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "cjs/index.cjs",
3
+ "module": "esm/index.mjs",
4
+ "types": "esm/index.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,346 @@
1
+ #!/usr/bin/env node
2
+
3
+ // Links locally installed Porsche Design System wrapper skills into the consumer project.
4
+ // Every wrapper package exposes this same bin through the local node_modules/.bin directory;
5
+ // --package selects which installed wrapper supplies the skills, independently of which
6
+ // wrapper supplies the bin.
7
+ //
8
+ // --location is the destination parent directory for the skill links (e.g. `.claude/skills`,
9
+ // `.agents`, `.github/skills`). Relative locations resolve from the cwd.
10
+ //
11
+ // --skill may be repeated to install only named skills. Omit it to install all discovered skills.
12
+ //
13
+ // pds-skill --package <package> --location <dir> [--skill <name>...]
14
+ //
15
+ // This is the canonical source copied into all four wrapper package distributions by their
16
+ // `build:subPackages:skill:bin` steps.
17
+
18
+ const fs = require('node:fs');
19
+ const path = require('node:path');
20
+ const { parseArgs } = require('node:util');
21
+
22
+ const SUPPORTED_PACKAGES = [
23
+ '@porsche-design-system/components-js',
24
+ '@porsche-design-system/components-angular',
25
+ '@porsche-design-system/components-react',
26
+ '@porsche-design-system/components-vue',
27
+ ];
28
+ const USAGE = [
29
+ 'Usage: pds-skill --package <package> --location <dir> [--skill <name>...]',
30
+ '',
31
+ 'Required options:',
32
+ ' -p, --package <package> locally installed Porsche Design System wrapper',
33
+ ' -l, --location <dir> destination parent directory for the skill links',
34
+ '',
35
+ 'Options:',
36
+ ' -s, --skill <name> install only the named skill (repeatable); omit to install all',
37
+ ' -h, --help print this usage',
38
+ '',
39
+ `Supported packages: ${SUPPORTED_PACKAGES.join(', ')}`,
40
+ ].join('\n');
41
+
42
+ const fail = (message) => {
43
+ console.error(message);
44
+ process.exit(1);
45
+ };
46
+
47
+ const isMissingPathError = (error) => error.code === 'ENOENT' || error.code === 'ENOTDIR';
48
+ const isPermissionError = (error) => error.code === 'EACCES' || error.code === 'EPERM';
49
+
50
+ const parseOptions = (args) => {
51
+ try {
52
+ return parseArgs({
53
+ args,
54
+ options: {
55
+ package: { type: 'string', short: 'p' },
56
+ location: { type: 'string', short: 'l' },
57
+ skill: { type: 'string', short: 's', multiple: true },
58
+ help: { type: 'boolean', short: 'h' },
59
+ },
60
+ strict: true,
61
+ allowPositionals: false,
62
+ }).values;
63
+ } catch (error) {
64
+ fail(`${error.message}\n${USAGE}`);
65
+ }
66
+ };
67
+
68
+ const readPackageManifest = (packageJsonPath) => {
69
+ let content;
70
+ try {
71
+ content = fs.readFileSync(packageJsonPath, 'utf8');
72
+ } catch (error) {
73
+ if (isMissingPathError(error)) {
74
+ return undefined;
75
+ }
76
+ if (isPermissionError(error)) {
77
+ fail(`Cannot read ${packageJsonPath}: permission denied. Check the package permissions and re-run.`);
78
+ }
79
+ throw error;
80
+ }
81
+
82
+ try {
83
+ return JSON.parse(content);
84
+ } catch (error) {
85
+ if (error instanceof SyntaxError) {
86
+ fail(`Cannot read ${packageJsonPath}: invalid JSON. Reinstall the package and re-run.`);
87
+ }
88
+ throw error;
89
+ }
90
+ };
91
+
92
+ /** Parse the frontmatter `name:` value from SKILL.md content. Returns null if not found. */
93
+ const parseFrontmatterName = (content) => {
94
+ const fmMatch = content.match(/^---\n([\s\S]*?)\n---/);
95
+ if (!fmMatch) {
96
+ return null;
97
+ }
98
+ const nameMatch = fmMatch[1].match(/^name:\s*(\S+)/m);
99
+ return nameMatch ? nameMatch[1] : null;
100
+ };
101
+
102
+ /**
103
+ * Validate that the SKILL.md at skillMdPath is a readable regular file with a frontmatter name
104
+ * matching expectedName. Calls fail() on any violation.
105
+ */
106
+ const validateSkillMd = (skillMdPath, expectedName) => {
107
+ let stats;
108
+ try {
109
+ stats = fs.statSync(skillMdPath);
110
+ } catch (error) {
111
+ if (isMissingPathError(error)) {
112
+ fail(`The installed package does not ship a skill at ${skillMdPath}. Upgrade the package and re-run.`);
113
+ }
114
+ if (isPermissionError(error)) {
115
+ fail(`Cannot read ${skillMdPath}: permission denied. Check the package permissions and re-run.`);
116
+ }
117
+ throw error;
118
+ }
119
+
120
+ if (!stats.isFile()) {
121
+ fail(`${skillMdPath} is not a file. Reinstall the package and re-run.`);
122
+ }
123
+
124
+ let content;
125
+ try {
126
+ content = fs.readFileSync(skillMdPath, 'utf8');
127
+ } catch (error) {
128
+ if (isPermissionError(error)) {
129
+ fail(`Cannot read ${skillMdPath}: permission denied. Check the package permissions and re-run.`);
130
+ }
131
+ throw error;
132
+ }
133
+
134
+ const name = parseFrontmatterName(content);
135
+ if (name !== expectedName) {
136
+ fail(
137
+ `${skillMdPath} has frontmatter name "${name ?? '(none)'}" but its directory is "${expectedName}". Reinstall the package and re-run.`
138
+ );
139
+ }
140
+ };
141
+
142
+ /** Preflight the destination link path. Fails if something other than a symlink (or nothing) exists there. */
143
+ const preflightDestLink = (linkPath, show) => {
144
+ let existing;
145
+ try {
146
+ existing = fs.lstatSync(linkPath);
147
+ } catch (error) {
148
+ if (error.code === 'ENOENT') {
149
+ return;
150
+ }
151
+ if (isPermissionError(error)) {
152
+ fail(`Cannot inspect ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
153
+ }
154
+ throw error;
155
+ }
156
+ if (!existing.isSymbolicLink()) {
157
+ fail(`Refusing to replace ${show(linkPath)}: it exists and is not a symlink. Remove it manually and re-run.`);
158
+ }
159
+ };
160
+
161
+ /** Resolve the installed package directory by walking up from cwd. Fails if not found. */
162
+ const resolvePackageDir = (packageName, cwd) => {
163
+ if (!SUPPORTED_PACKAGES.includes(packageName)) {
164
+ fail(`Unsupported package: ${packageName}\n${USAGE}`);
165
+ }
166
+
167
+ let dir = cwd;
168
+ for (;;) {
169
+ const packageDir = path.join(dir, 'node_modules', ...packageName.split('/'));
170
+ const packageJsonPath = path.join(packageDir, 'package.json');
171
+ const pkg = readPackageManifest(packageJsonPath);
172
+ if (pkg !== undefined) {
173
+ const installedName = pkg && typeof pkg === 'object' ? pkg.name : undefined;
174
+ if (installedName !== packageName) {
175
+ fail(`Expected ${packageName} at ${packageDir}, but found ${installedName || 'a package without a name'}.`);
176
+ }
177
+ return packageDir;
178
+ }
179
+
180
+ const parent = path.dirname(dir);
181
+ if (parent === dir) {
182
+ fail(`Cannot find ${packageName} from ${cwd}. Install it in this project or workspace and re-run.`);
183
+ }
184
+ dir = parent;
185
+ }
186
+ };
187
+
188
+ /** Discover sorted child directory names under skillsDir. Returns empty array if the dir is absent. */
189
+ const discoverSkillNames = (skillsDir) => {
190
+ let entries;
191
+ try {
192
+ entries = fs.readdirSync(skillsDir, { withFileTypes: true });
193
+ } catch (error) {
194
+ if (isMissingPathError(error)) {
195
+ return [];
196
+ }
197
+ if (isPermissionError(error)) {
198
+ fail(`Cannot read ${skillsDir}: permission denied. Check the package permissions and re-run.`);
199
+ }
200
+ throw error;
201
+ }
202
+ return entries
203
+ .filter((e) => e.isDirectory())
204
+ .map((e) => e.name)
205
+ .sort();
206
+ };
207
+
208
+ const main = () => {
209
+ const options = parseOptions(process.argv.slice(2));
210
+ if (options.help) {
211
+ console.log(USAGE);
212
+ return;
213
+ }
214
+
215
+ const missingOptions = [!options.package && '--package', !options.location && '--location'].filter(Boolean);
216
+ if (missingOptions.length > 0) {
217
+ fail(`Missing required option${missingOptions.length > 1 ? 's' : ''}: ${missingOptions.join(' and ')}\n${USAGE}`);
218
+ }
219
+
220
+ if (process.versions.pnp) {
221
+ fail(
222
+ "Yarn Plug'n'Play is not supported because an operating-system symlink cannot target Yarn's virtual filesystem. Use `nodeLinker: node-modules`."
223
+ );
224
+ }
225
+
226
+ const cwd = process.cwd();
227
+ const packageName = options.package;
228
+ const destArg = options.location;
229
+ const requestedSkills = options.skill ?? [];
230
+
231
+ const packageDir = resolvePackageDir(packageName, cwd);
232
+ const skillsDir = path.join(packageDir, 'skills');
233
+ const discovered = discoverSkillNames(skillsDir);
234
+
235
+ if (discovered.length === 0) {
236
+ fail(`The installed package does not ship any skills at ${skillsDir}. Upgrade the package and re-run.`);
237
+ }
238
+
239
+ // Validate --skill filters; unknown names fail clearly.
240
+ if (requestedSkills.length > 0) {
241
+ const unknown = requestedSkills.filter((s) => !discovered.includes(s));
242
+ if (unknown.length > 0) {
243
+ fail(
244
+ `Unknown skill${unknown.length > 1 ? 's' : ''}: ${unknown.join(', ')}. ` +
245
+ `Available: ${[...discovered].sort().join(', ')}.`
246
+ );
247
+ }
248
+ }
249
+
250
+ // Deterministic sorted selection.
251
+ const selected =
252
+ requestedSkills.length > 0
253
+ ? [...new Set(requestedSkills)].filter((s) => discovered.includes(s)).sort()
254
+ : discovered;
255
+
256
+ const destDir = path.isAbsolute(destArg) ? destArg : path.resolve(cwd, destArg);
257
+
258
+ // Prefer a cwd-relative path in messages; fall back to absolute when outside.
259
+ const show = (target) => {
260
+ const rel = path.relative(cwd, target);
261
+ return rel && !rel.startsWith('..') && !path.isAbsolute(rel) ? rel : target;
262
+ };
263
+
264
+ // Preflight every selected skill tree before touching the destination at all.
265
+ for (const skillName of selected) {
266
+ validateSkillMd(path.join(skillsDir, skillName, 'SKILL.md'), skillName);
267
+ }
268
+
269
+ try {
270
+ fs.mkdirSync(destDir, { recursive: true });
271
+ } catch (error) {
272
+ if (error.code === 'ENOTDIR' || error.code === 'EEXIST') {
273
+ fail(`Cannot create ${show(destDir)}: a parent path exists as a file, not a directory. Remove it and re-run.`);
274
+ }
275
+ if (isPermissionError(error)) {
276
+ fail(`Cannot create ${show(destDir)}: permission denied. Check the destination permissions and re-run.`);
277
+ }
278
+ throw error;
279
+ }
280
+
281
+ // Preflight all destination links before any mutation.
282
+ for (const skillName of selected) {
283
+ preflightDestLink(path.join(destDir, skillName), show);
284
+ }
285
+
286
+ // All preflights passed — perform link operations.
287
+ const linkType = process.platform === 'win32' ? 'junction' : 'dir';
288
+ for (const skillName of selected) {
289
+ const skillDir = path.join(skillsDir, skillName);
290
+ const linkPath = path.join(destDir, skillName);
291
+
292
+ // Idempotent: repoint an existing symlink (including a dangling one), but never touch a
293
+ // real directory a user may have hand-maintained — the preflight above already rejected that.
294
+ let existingLink = null;
295
+ try {
296
+ existingLink = fs.lstatSync(linkPath);
297
+ } catch (error) {
298
+ if (error.code !== 'ENOENT') {
299
+ throw error;
300
+ }
301
+ }
302
+
303
+ if (existingLink?.isSymbolicLink()) {
304
+ try {
305
+ if (fs.realpathSync(linkPath) === fs.realpathSync(skillDir)) {
306
+ console.log(`Porsche Design System skill already linked: ${show(linkPath)} -> ${skillDir}`);
307
+ continue;
308
+ }
309
+ } catch (error) {
310
+ if (error.code !== 'ENOENT') {
311
+ if (isPermissionError(error)) {
312
+ fail(`Cannot inspect ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
313
+ }
314
+ throw error;
315
+ }
316
+ // Dangling symlink — fall through to replace it.
317
+ }
318
+ try {
319
+ fs.rmSync(linkPath, { force: true });
320
+ } catch (error) {
321
+ if (isPermissionError(error)) {
322
+ fail(`Cannot replace ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
323
+ }
324
+ throw error;
325
+ }
326
+ }
327
+
328
+ try {
329
+ fs.symlinkSync(skillDir, linkPath, linkType);
330
+ } catch (error) {
331
+ if (process.platform === 'win32' && error.code === 'EPERM') {
332
+ fail(
333
+ `Could not create the skill junction on Windows (EPERM). Check the destination permissions or create it manually:\n mklink /J "${linkPath}" "${skillDir}"`
334
+ );
335
+ }
336
+ if (isPermissionError(error)) {
337
+ fail(`Cannot create ${show(linkPath)}: permission denied. Check the destination permissions and re-run.`);
338
+ }
339
+ throw error;
340
+ }
341
+
342
+ console.log(`Linked Porsche Design System skill: ${show(linkPath)} -> ${skillDir}`);
343
+ }
344
+ };
345
+
346
+ main();
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "cjs/index.cjs",
3
+ "module": "esm/index.mjs",
4
+ "types": "esm/index.d.ts",
5
+ "sideEffects": false
6
+ }