@porsche-design-system/components-react 4.6.0 โ†’ 4.7.0-rc.0

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 (185) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/bin/pds-skill.js +50 -41
  3. package/esm/lib/components/button.wrapper.d.ts +2 -2
  4. package/esm/lib/types.d.ts +12 -7
  5. package/package.json +2 -2
  6. package/skills/pds-audit-deprecations-react/SKILL.md +247 -0
  7. package/skills/pds-audit-deprecations-react/references/report-template.md +128 -0
  8. package/skills/pds-audit-deprecations-react/references/report.schema.json +446 -0
  9. package/skills/pds-knowledge-react/SKILL.md +10 -4
  10. package/skills/pds-knowledge-react/references/components/p-button/examples/AiDropShadow.tsx +30 -0
  11. package/skills/pds-knowledge-react/references/components/p-button/examples/AiGradientGlow.tsx +90 -0
  12. package/skills/pds-knowledge-react/references/components/p-button/p-button.md +64 -2
  13. package/skills/pds-knowledge-react/references/components/p-button-pure/p-button-pure.md +1 -1
  14. package/skills/pds-knowledge-react/references/components/p-button-tile/p-button-tile.md +1 -1
  15. package/skills/pds-knowledge-react/references/components/p-icon/examples/Overview.tsx +2 -0
  16. package/skills/pds-knowledge-react/references/components/p-icon/p-icon.md +1 -1
  17. package/skills/pds-knowledge-react/references/components/p-inline-notification/p-inline-notification.md +1 -1
  18. package/skills/pds-knowledge-react/references/components/p-link/p-link.md +12 -1
  19. package/skills/pds-knowledge-react/references/components/p-link-pure/p-link-pure.md +1 -1
  20. package/skills/pds-knowledge-react/references/components/p-segmented-control/p-segmented-control.md +1 -1
  21. package/skills/pds-knowledge-react/references/components/p-tag/p-tag.md +1 -1
  22. package/skills/pds-knowledge-react/references/deprecations.md +686 -0
  23. package/skills/pds-knowledge-react/references/icons.md +1 -1
  24. package/skills/pds-knowledge-react/references/styles/scss.md +3 -2
  25. package/skills/pds-knowledge-react/references/styles/tailwindcss.md +0 -2
  26. package/ssr/cjs/components/dist/styles/esm/styles-entry.cjs +162 -89
  27. package/ssr/cjs/components/dist/utils/esm/utils-entry.cjs +40 -12
  28. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.cjs +1 -1
  29. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/ai-tag.cjs +1 -1
  30. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.cjs +1 -1
  31. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.cjs +1 -1
  32. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.cjs +2 -3
  33. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.cjs +9 -1
  34. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.cjs +1 -1
  35. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.cjs +5 -1
  36. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.cjs +1 -1
  37. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.cjs +1 -1
  38. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/dialog-base.cjs +1 -1
  39. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.cjs +1 -1
  40. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.cjs +1 -1
  41. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-item.cjs +1 -1
  42. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.cjs +1 -1
  43. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.cjs +1 -1
  44. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.cjs +1 -1
  45. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.cjs +1 -1
  46. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.cjs +1 -1
  47. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.cjs +1 -1
  48. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.cjs +1 -1
  49. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.cjs +1 -1
  50. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.cjs +1 -1
  51. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.cjs +1 -1
  52. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.cjs +1 -1
  53. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.cjs +1 -1
  54. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.cjs +1 -1
  55. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.cjs +1 -1
  56. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.cjs +1 -1
  57. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.cjs +1 -1
  58. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.cjs +1 -1
  59. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.cjs +1 -1
  60. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.cjs +1 -1
  61. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.cjs +1 -1
  62. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-product.cjs +1 -1
  63. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.cjs +3 -3
  64. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.cjs +1 -1
  65. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.cjs +1 -1
  66. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/model-signature.cjs +1 -1
  67. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.cjs +1 -1
  68. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.cjs +1 -1
  69. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.cjs +1 -1
  70. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.cjs +1 -1
  71. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.cjs +1 -1
  72. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.cjs +1 -1
  73. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.cjs +1 -1
  74. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.cjs +1 -1
  75. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.cjs +1 -1
  76. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.cjs +1 -1
  77. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.cjs +1 -1
  78. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.cjs +1 -1
  79. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.cjs +1 -1
  80. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.cjs +1 -1
  81. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/spinner.cjs +1 -1
  82. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal-item.cjs +1 -1
  83. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.cjs +1 -1
  84. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.cjs +1 -1
  85. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-body.cjs +1 -1
  86. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-cell.cjs +1 -1
  87. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-cell.cjs +1 -1
  88. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-row.cjs +1 -1
  89. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head.cjs +1 -1
  90. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-row.cjs +1 -1
  91. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.cjs +1 -1
  92. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.cjs +1 -1
  93. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-item.cjs +1 -1
  94. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.cjs +1 -1
  95. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag-dismissible.cjs +1 -1
  96. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.cjs +1 -1
  97. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list-item.cjs +1 -1
  98. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list.cjs +1 -1
  99. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text.cjs +1 -1
  100. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.cjs +1 -1
  101. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/toast.cjs +1 -1
  102. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/wordmark.cjs +1 -1
  103. package/ssr/cjs/components-react/projects/react-ssr-wrapper/src/splitChildren.cjs +3 -1
  104. package/ssr/esm/components/dist/styles/esm/styles-entry.mjs +162 -89
  105. package/ssr/esm/components/dist/utils/esm/utils-entry.mjs +39 -13
  106. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/accordion.mjs +1 -1
  107. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/ai-tag.mjs +1 -1
  108. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/banner.mjs +1 -1
  109. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-pure.mjs +1 -1
  110. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button-tile.mjs +3 -4
  111. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/button.mjs +9 -1
  112. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/canvas.mjs +1 -1
  113. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/carousel.mjs +5 -1
  114. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/checkbox.mjs +1 -1
  115. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/crest.mjs +1 -1
  116. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/dialog-base.mjs +1 -1
  117. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/display.mjs +1 -1
  118. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/divider.mjs +1 -1
  119. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-item.mjs +1 -1
  120. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown-link.mjs +1 -1
  121. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/drilldown.mjs +1 -1
  122. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/fieldset.mjs +1 -1
  123. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flag.mjs +1 -1
  124. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/flyout.mjs +1 -1
  125. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/heading.mjs +1 -1
  126. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/icon.mjs +1 -1
  127. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/inline-notification.mjs +1 -1
  128. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-date.mjs +1 -1
  129. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-email.mjs +1 -1
  130. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-month.mjs +1 -1
  131. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-number.mjs +1 -1
  132. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-password.mjs +1 -1
  133. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-search.mjs +1 -1
  134. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-tel.mjs +1 -1
  135. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-text.mjs +1 -1
  136. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-time.mjs +1 -1
  137. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-url.mjs +1 -1
  138. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/input-week.mjs +1 -1
  139. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-pure.mjs +1 -1
  140. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile-product.mjs +1 -1
  141. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link-tile.mjs +3 -3
  142. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/link.mjs +1 -1
  143. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/modal.mjs +1 -1
  144. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/model-signature.mjs +1 -1
  145. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select-option.mjs +1 -1
  146. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/multi-select.mjs +1 -1
  147. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/optgroup.mjs +1 -1
  148. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pagination.mjs +1 -1
  149. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/pin-code.mjs +1 -1
  150. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/popover.mjs +1 -1
  151. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group-option.mjs +1 -1
  152. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/radio-group.mjs +1 -1
  153. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/scroller.mjs +1 -1
  154. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control-item.mjs +1 -1
  155. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/segmented-control.mjs +1 -1
  156. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select-option.mjs +1 -1
  157. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/select.mjs +1 -1
  158. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/sheet.mjs +1 -1
  159. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/spinner.mjs +1 -1
  160. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal-item.mjs +1 -1
  161. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/stepper-horizontal.mjs +1 -1
  162. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/switch.mjs +1 -1
  163. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-body.mjs +1 -1
  164. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-cell.mjs +1 -1
  165. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-cell.mjs +1 -1
  166. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head-row.mjs +1 -1
  167. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-head.mjs +1 -1
  168. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table-row.mjs +1 -1
  169. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/table.mjs +1 -1
  170. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-bar.mjs +1 -1
  171. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs-item.mjs +1 -1
  172. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tabs.mjs +1 -1
  173. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag-dismissible.mjs +1 -1
  174. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/tag.mjs +1 -1
  175. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list-item.mjs +1 -1
  176. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text-list.mjs +1 -1
  177. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/text.mjs +1 -1
  178. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/textarea.mjs +1 -1
  179. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/toast.mjs +1 -1
  180. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/lib/dsr-components/wordmark.mjs +1 -1
  181. package/ssr/esm/components-react/projects/react-ssr-wrapper/src/splitChildren.mjs +3 -1
  182. package/ssr/esm/lib/components/button.wrapper.d.ts +2 -2
  183. package/ssr/esm/lib/dsr-components/button.d.ts +8 -0
  184. package/ssr/esm/lib/types.d.ts +12 -7
  185. package/tailwindcss/index.css +16 -16
@@ -0,0 +1,90 @@
1
+ import React from 'react';
2
+ import { PButton } from '@porsche-design-system/components-react';
3
+
4
+ export const Example = () => {
5
+ return (
6
+ <>
7
+ <style>
8
+ {` .custom-ai-orb {
9
+ --p-button-bg: var(--p-color-canvas);
10
+ --p-button-fg: var(--p-color-primary);
11
+ position: relative;
12
+ z-index: 0;
13
+ }
14
+
15
+ .custom-ai-orb:not(:disabled, :state(loading)):hover {
16
+ --p-button-bg: var(--p-color-frosted-strong);
17
+ --p-button-fg: #fff;
18
+ }
19
+
20
+ .custom-ai-orb::before,
21
+ .custom-ai-orb::after {
22
+ content: '';
23
+ position: absolute;
24
+ inset: 0;
25
+ z-index: -1;
26
+ border-radius: inherit;
27
+ background: linear-gradient(45deg, #00a8ff, #0151e1, #2ae3ff, #bff0ff, #0151e1, #00a8ff);
28
+ background-size: 400%;
29
+ animation: custom-ai-orb-gradient 20s linear infinite;
30
+ }
31
+
32
+ .custom-ai-orb::after {
33
+ filter: blur(10px);
34
+ animation:
35
+ custom-ai-orb-gradient 20s linear infinite,
36
+ custom-ai-orb-float 8s ease-in-out infinite;
37
+ }
38
+
39
+ @keyframes custom-ai-orb-gradient {
40
+ 0% {
41
+ background-position: 0 0;
42
+ }
43
+ 50% {
44
+ background-position: 300% 0;
45
+ }
46
+ 100% {
47
+ background-position: 0 0;
48
+ }
49
+ }
50
+
51
+ @keyframes custom-ai-orb-float {
52
+ 0% {
53
+ transform: scale(1) rotate(0deg);
54
+ }
55
+ 50% {
56
+ transform: scale(1.02) rotate(0.5deg);
57
+ }
58
+ 100% {
59
+ transform: scale(1) rotate(0deg);
60
+ }
61
+ }
62
+
63
+ /* Respect the user's motion preference */
64
+ @media (prefers-reduced-motion: reduce) {
65
+ .custom-ai-orb::before,
66
+ .custom-ai-orb::after {
67
+ animation: none;
68
+ }
69
+ }
70
+
71
+ /* Decorative gradient is not conveyed in forced-colors mode */
72
+ @media (forced-colors: active) {
73
+ .custom-ai-orb::before,
74
+ .custom-ai-orb::after {
75
+ display: none;
76
+ }
77
+ }`}
78
+ </style>
79
+
80
+ <div className="flex flex-wrap gap-static-lg items-start">
81
+ <PButton className="custom-ai-orb" icon="ai-chat" hideLabel={true}>
82
+ Ask AI assistant
83
+ </PButton>
84
+ <PButton className="custom-ai-orb" icon="ai-chat">
85
+ Ask AI assistant
86
+ </PButton>
87
+ </div>
88
+ </>
89
+ )
90
+ }
@@ -25,6 +25,55 @@ You can use native `click`, `focus`, `focusin`, `blur` and `focusout` events on
25
25
 
26
26
  ---
27
27
 
28
+ ## Custom states
29
+
30
+ ๐Ÿงช **Experimental**: The button exposes its loading state as a [CSS custom state](https://developer.mozilla.org/en-US/docs/Web/CSS/:state), which can be targeted with the `:state()` pseudo-class. This is handy to conditionally override the exposed CSS variables (e.g. `--p-button-bg` and `--p-button-fg`) without having to duplicate the state logic in your application.
31
+
32
+ | Custom state | Applied when |
33
+ | --- | --- |
34
+ | `loading` | `loading` is `true` |
35
+
36
+ ```scss
37
+ p-button:state(loading) {
38
+ --p-button-bg: light-dark(#025b3f, #21eeae);
39
+ --p-button-fg: light-dark(#21eeae, #025b3f);
40
+ }
41
+ ```
42
+
43
+ Custom states are a progressive enhancement: browsers without support for `CustomStateSet` or the `:state()` pseudo-class simply ignore these rules, the button keeps working and falls back to its default styling. Be aware that custom states can't be expressed during server side rendering, they are only applied once the component is hydrated on the client. Therefore, don't rely on `:state()` for styling that has to be correct on first paint.
44
+
45
+ For all other states and variants, use native CSS selectors instead:
46
+
47
+ | Styling target | Selector |
48
+ | --- | --- |
49
+ | Disabled | `p-button:disabled` (the button is form-associated) |
50
+ | Hover | `p-button:not(:disabled, :state(loading)):hover` |
51
+ | Focus | `p-button:focus-visible` |
52
+ | Variant | a custom class, e.g. `<p-button class="my-button" variant="secondary">` |
53
+
54
+ Since the button is a form-associated custom element, it is matched by the native `:disabled` pseudo-class as soon as the `disabled` attribute is set โ€” no custom state is needed for it.
55
+
56
+ ```scss
57
+ p-button {
58
+ --p-button-bg: light-dark(#025b3f, #21eeae);
59
+ --p-button-fg: light-dark(#21eeae, #025b3f);
60
+ }
61
+
62
+ p-button:not(:disabled, :state(loading)):hover {
63
+ --p-button-bg: light-dark(#013d2a, #6ef7cf);
64
+ --p-button-fg: light-dark(#6ef7cf, #013d2a);
65
+ }
66
+
67
+ p-button:disabled {
68
+ --p-button-bg: light-dark(#6f3d0b, #ffaa4f);
69
+ --p-button-fg: light-dark(#ffaa4f, #6f3d0b);
70
+ }
71
+ ```
72
+
73
+ As with all color customizations, you are responsible for ensuring sufficient contrast and brand compliance.
74
+
75
+ ---
76
+
28
77
  ## Related components
29
78
 
30
79
  - [Links](../p-link/p-link.md)
@@ -99,13 +148,13 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
99
148
  | `disabled` | `boolean` | `false` | Disables the button, preventing all interaction and blocking events. |
100
149
  | `form` | `string` | `undefined` | Associates the button with a form element by its ID, so it can submit or reset that form even when placed outside of it. |
101
150
  | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
102
- | `icon` | `'none'`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the button. Use `none` to show no icon. |
151
+ | `icon` | `'none'`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the button. Use `none` to show no icon. |
103
152
  | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
104
153
  | `loading` | `boolean` | `false` | Disables the button and replaces its content with a loading spinner to indicate an ongoing operation. |
105
154
  | `name` | `string` | `undefined` | Sets the name submitted with the form data when this button triggers form submission. |
106
155
  | `type` | `'button'` `'submit'` `'reset'` | `'submit'` | Sets the button's HTML type โ€” `submit` sends the form, `reset` clears it, `button` performs no default action. |
107
156
  | `value` | `string` | `undefined` | Sets the value submitted with the form data when this button triggers form submission, paired with `name`. |
108
- | `variant` | `'primary'` `'secondary'` | `'primary'` | Sets the visual style variant of the button (`primary` or `secondary`). |
157
+ | `variant` | `'primary'` `'secondary'` `'destructive'` | `'primary'` | Sets the visual style variant of the button (`primary`, `secondary` or `destructive`). Use `destructive` for actions with irreversible consequences, e.g. deleting data. |
109
158
 
110
159
  ### Slots
111
160
 
@@ -113,6 +162,17 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
113
162
  | --- | --- | --- | --- |
114
163
  | _(default)_ | no | โ€” | Default slot for the button label. |
115
164
 
165
+ ### CSS Variables
166
+
167
+ | CSS Variable | Default | Description |
168
+ | --- | --- | --- |
169
+ | `--p-button-bg` | โ€” | Overrides the background color of the button in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
170
+ | `--p-button-fg` | โ€” | Overrides the foreground color (label, icon and loading spinner) of the button in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
171
+ | `--p-button-px` | โ€” | Horizontal padding of the button. |
172
+ | `--p-button-py` | โ€” | Vertical padding of the button. |
173
+ | `--p-button-gap` | โ€” | Gap between the button's content (label and icon). |
174
+ | `--p-button-radius` | โ€” | Radius of the button |
175
+
116
176
  ## Examples
117
177
 
118
178
  | Example | When to use | File |
@@ -120,3 +180,5 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
120
180
  | Default | Minimal default configuration. | [./examples/Default.tsx](./examples/Default.tsx) |
121
181
  | Form | When used as a submit button, the `name` and `value` props are submitted as a pair as part of the form data. | [./examples/Form.tsx](./examples/Form.tsx) |
122
182
  | Form Attribute | When a button is used as a submit or reset button outside a form, the `form` attribute can be utilized to explicitly associate the button with a specific form element. | [./examples/FormAttribute.tsx](./examples/FormAttribute.tsx) |
183
+ | Custom AI Styling: Drop Shadow | ๐Ÿงช **Experimental**: This example shows what's technically possible with the exposed `--p-button-bg` and `--p-button-fg` CSS variables. | [./examples/AiDropShadow.tsx](./examples/AiDropShadow.tsx) |
184
+ | Custom AI Styling: Gradient Glow | ๐Ÿงช **Experimental**: This example demonstrates the technical possibilities of styling around the button host element. | [./examples/AiGradientGlow.tsx](./examples/AiGradientGlow.tsx) |
@@ -96,7 +96,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
96
96
  | `disabled` | `boolean` | `false` | Disables the button, preventing all interaction and blocking events. |
97
97
  | `form` | `string` | `undefined` | Associates the button with a form element by its ID, so it can submit or reset that form even when placed outside of it. |
98
98
  | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
99
- | `icon` | `''`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
99
+ | `icon` | `''`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
100
100
  | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
101
101
  | `loading` | `boolean` | `false` | Disables the button and replaces its icon with a loading spinner to indicate an ongoing operation. |
102
102
  | `name` | `string` | `undefined` | Sets the name submitted with the form data when this button triggers form submission. |
@@ -92,7 +92,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
92
92
  | `description` _(required)_ | `string` | `undefined` | Sets the description text displayed in the tile's content area. |
93
93
  | `disabled` | `boolean` | `false` | Disables the tile, preventing button interaction. |
94
94
  | `gradient` | `boolean` | `false` | Shows a gradient overlay over the media slot to improve text legibility on bright images or videos. |
95
- | `icon` | `'none'`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed in the tile's action button. Use `none` to show no icon. |
95
+ | `icon` | `'none'`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed in the tile's action button. Use `none` to show no icon. |
96
96
  | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon for the action button, used instead of the built-in icon set. |
97
97
  | `label` _(required)_ | `string` | `undefined` | Sets the accessible label text of the action button rendered inside the tile. |
98
98
  | `loading` | `boolean` | `false` | Disables the tile and shows a loading spinner to indicate an ongoing operation. |
@@ -20,6 +20,8 @@ export const Example = () => {
20
20
 
21
21
  <PIcon name="ai-3d-object" aria={{'aria-label': 'Ai 3d Object icon'}}></PIcon>
22
22
 
23
+ <PIcon name="ai-chat" aria={{'aria-label': 'Ai Chat icon'}}></PIcon>
24
+
23
25
  <PIcon name="ai-code" aria={{'aria-label': 'Ai Code icon'}}></PIcon>
24
26
 
25
27
  <PIcon name="ai-edit" aria={{'aria-label': 'Ai Edit icon'}}></PIcon>
@@ -67,7 +67,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
67
67
  | --- | --- | --- | --- |
68
68
  | `aria` | `IconAriaAttribute` | `undefined` | Sets ARIA attributes on the icon โ€” use `aria-label` to make the icon meaningful to screen readers when it conveys information. |
69
69
  | `color` | `'primary'` `'contrast-higher'` `'contrast-high'` `'contrast-medium'` `'contrast-low'` `'contrast-lower'` `'success'` `'warning'` `'error'` `'info'` `'inherit'` | `'primary'` | Sets the fill color of the icon using PDS color tokens. |
70
- | `name` | one of 293 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Selects an icon from the built-in PDS icon library by name (e.g. `arrow-right`, `close`). |
70
+ | `name` | one of 294 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Selects an icon from the built-in PDS icon library by name (e.g. `arrow-right`, `close`). |
71
71
  | `size` | `'2xs'` `'xs'` `'sm'` `'md'` `'lg'` `'xl'` `'2xl'` `'3xl'` `'4xl'` `'5xl'` `'inherit'`<br>_deprecated:_ `'xx-small'` `'x-small'` `'small'` `'medium'` `'large'` `'x-large'` `'xx-large'`<br>`BreakpointCustomizable<IconSize>` | `'sm'` | Sets the icon size using the PDS typographic scale. Use `inherit` to derive size from the parent element. Supports responsive breakpoint values. |
72
72
  | `source` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon library. |
73
73
 
@@ -46,7 +46,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
46
46
 
47
47
  | Property | Type | Default | Description |
48
48
  | --- | --- | --- | --- |
49
- | `actionIcon` | `''`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed inside the action button using a PDS icon name. |
49
+ | `actionIcon` | `''`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed inside the action button using a PDS icon name. |
50
50
  | `actionLabel` | `string` | `undefined` | Sets the label text of the optional action button inside the notification. |
51
51
  | `actionLoading` | `boolean` | `false` | Disables the action button and shows a spinner to indicate an ongoing operation. |
52
52
  | `description` | `string` | `''` | Sets the supporting description text shown below the heading. |
@@ -84,7 +84,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
84
84
  | `download` | `string` | `undefined` | Sets the native `download` attribute to trigger a file download. Only applies when `href` is set. |
85
85
  | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
86
86
  | `href` | `string` | `undefined` | When set, the component renders as an anchor navigating to this URL. Otherwise, provide a slotted anchor element. |
87
- | `icon` | `'none'`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed next to the link label. Use `none` to show no icon. |
87
+ | `icon` | `'none'`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed next to the link label. Use `none` to show no icon. |
88
88
  | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
89
89
  | `rel` | `string` | `undefined` | Sets the `rel` attribute on the link (e.g. `noopener`). Only applies when `href` is set. |
90
90
  | `target` | `'_self'` `'_blank'` `'_parent'` `'_top'` `'string'` | `'_self'` | Specifies where to open the linked URL (e.g. `_self`, `_blank`). Only applies when `href` is set. |
@@ -96,6 +96,17 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
96
96
  | --- | --- | --- | --- |
97
97
  | _(default)_ | no | โ€” | Default slot to render the link label. This slot can be used to slot an anchor tag instead of using the href prop. |
98
98
 
99
+ ### CSS Variables
100
+
101
+ | CSS Variable | Default | Description |
102
+ | --- | --- | --- |
103
+ | `--p-link-bg` | โ€” | Overrides the background color of the link in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
104
+ | `--p-link-fg` | โ€” | Overrides the foreground color (label and icon) of the link in every state, including hover. You are responsible for ensuring sufficient contrast and brand compliance. |
105
+ | `--p-link-px` | โ€” | Horizontal padding of the link. |
106
+ | `--p-link-py` | โ€” | Vertical padding of the link. |
107
+ | `--p-link-gap` | โ€” | Gap between the link's content (label and icon). |
108
+ | `--p-link-radius` | โ€” | Radius of the link |
109
+
99
110
  ## Examples
100
111
 
101
112
  | Example | When to use | File |
@@ -89,7 +89,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
89
89
  | `download` | `string` | `undefined` | Sets the native `download` attribute to trigger a file download. Only applies when `href` is set. |
90
90
  | `hideLabel` | `boolean`<br>`BreakpointCustomizable<boolean>` | `false` | Hides the visible label while keeping it accessible to screen readers. Supports responsive breakpoint values. |
91
91
  | `href` | `string` | `undefined` | When set, the component renders as an anchor navigating to this URL. Otherwise, provide a slotted anchor element. |
92
- | `icon` | `''`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
92
+ | `icon` | `''`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'arrow-right'` | Sets the icon displayed next to the label. |
93
93
  | `iconSource` | `string` | `undefined` | Sets a path to a custom SVG icon, used instead of the built-in icon set. |
94
94
  | `rel` | `string` | `undefined` | Sets the `rel` attribute on the link (e.g. `noopener`). Only applies when `href` is set. |
95
95
  | `size` | `'2xs'` `'xs'` `'sm'` `'md'` `'lg'` `'xl'` `'2xl'` `'3xl'` `'4xl'` `'5xl'` `'inherit'`<br>_deprecated:_ `'xx-small'` `'x-small'` `'small'` `'medium'` `'large'` `'x-large'`<br>`BreakpointCustomizable<LinkPureSize>` | `'sm'` | Sets the font size of the link label. Supports responsive breakpoint values. |
@@ -145,7 +145,7 @@ Allowed parent: `p-segmented-control`.
145
145
  | --- | --- | --- | --- |
146
146
  | `aria` | `SegmentedControlItemAriaAttribute` | `undefined` | Sets ARIA attributes on the item's button element to improve accessibility for screen readers. |
147
147
  | `disabled` | `boolean` | `false` | Prevents this item from being selected and visually dims it; the parent's value will not change to this item's value. |
148
- | `icon` | `''`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `undefined` | Sets an icon rendered inside the item button using an icon name from the PDS icon library. |
148
+ | `icon` | `''`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `undefined` | Sets an icon rendered inside the item button using an icon name from the PDS icon library. |
149
149
  | `iconSource` | `string` | `undefined` | Sets a URL to a custom SVG icon for the item button, overriding the built-in icon set. |
150
150
  | `label` | `string` | `undefined` | Sets a visible text label rendered inside the item button, used when no slotted content is provided. |
151
151
  | `value` _(required)_ | `string | number` | `undefined` | Sets the value emitted by the parent `p-segmented-control` when this item is selected. This property is*required**. |
@@ -50,7 +50,7 @@ See [accessibility integration examples](./accessibility.md) for paired anti-pat
50
50
  | Property | Type | Default | Description |
51
51
  | --- | --- | --- | --- |
52
52
  | `compact` | `boolean` | `false` | Reduces the tag's padding and height for use in dense layouts where vertical space is limited. |
53
- | `icon` | `'none'`<br>one of 293 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the tag alongside the label. Use `none` to render the tag without an icon. |
53
+ | `icon` | `'none'`<br>one of 294 icon names โ€” see [icon names](references/icons.md) | `'none'` | Sets the icon displayed inside the tag alongside the label. Use `none` to render the tag without an icon. |
54
54
  | `iconSource` | `string` | `undefined` | Sets a URL to a custom SVG icon, overriding the built-in icon set when a brand-specific icon is needed. |
55
55
  | `variant` | `'primary'` `'secondary'` `'info'` `'info-frosted'` `'warning'` `'warning-frosted'` `'success'` `'success-frosted'` `'error'` `'error-frosted'` | `'secondary'` | Sets the visual style of the tag, which controls its background and text colors (e.g. `primary`, `secondary`, `notification-info`). |
56
56