@pega/sdk 0.0.4 → 0.0.5

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 (317) hide show
  1. package/dist/index.js +287 -1
  2. package/package.json +1 -1
  3. package/templates/angular-sdk-reference/package.json +12 -12
  4. package/templates/angular-sdk-reference/tsconfig.json +1 -1
  5. package/templates/react-native-sdk-reference/expo-env.d.ts +3 -0
  6. package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +23 -26
  7. package/templates/react-sdk-reference/{.github/copilot-instructions.md → .ai-common/global/ai-agent-instructions.md} +7 -7
  8. package/templates/react-sdk-reference/{.github/instructions/component-map.instructions.md → .ai-common/instructions/component-map.md} +8 -1
  9. package/templates/react-sdk-reference/{.github/instructions/dse-component.instructions.md → .ai-common/instructions/dse-component.md} +1 -1
  10. package/templates/react-sdk-reference/{.github/instructions/field-component.instructions.md → .ai-common/instructions/field-component.md} +2 -1
  11. package/templates/react-sdk-reference/{.github/instructions/template-component.instructions.md → .ai-common/instructions/template-component.md} +1 -1
  12. package/templates/react-sdk-reference/{.github/instructions/widget-component.instructions.md → .ai-common/instructions/widget-component.md} +1 -1
  13. package/templates/react-sdk-reference/{.github/prompts/add-component.prompt.md → .ai-common/prompts/add-component.md} +45 -18
  14. package/templates/react-sdk-reference/{.cursor/rules → .ai-common}/prompts/component-manifest.json +8 -2
  15. package/templates/react-sdk-reference/{.github/prompts/generate-all-components.prompt.md → .ai-common/prompts/generate-all-components.md} +195 -78
  16. package/templates/react-sdk-reference/{.github/prompts/generate-dse-components.prompt.md → .ai-common/prompts/generate-dse-components.md} +28 -17
  17. package/templates/react-sdk-reference/{.github/prompts/generate-field-components.prompt.md → .ai-common/prompts/generate-field-components.md} +32 -16
  18. package/templates/react-sdk-reference/{.github/prompts/generate-template-components.prompt.md → .ai-common/prompts/generate-template-components.md} +76 -22
  19. package/templates/react-sdk-reference/{.github/prompts/generate-widget-components.prompt.md → .ai-common/prompts/generate-widget-components.md} +44 -30
  20. package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -0
  21. package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
  22. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +50 -0
  23. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Banner.md +44 -0
  24. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/CaseSummaryFields.md +54 -0
  25. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/DetailsFields.md +49 -0
  26. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/FieldGroup.md +44 -0
  27. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/FieldGroupList.md +43 -0
  28. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/FieldValueList.md +46 -0
  29. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +67 -0
  30. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/Pulse.md +20 -0
  31. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/RichTextEditor.md +58 -0
  32. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +31 -0
  33. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension.md +1 -1
  34. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-components.md +18 -1
  35. package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +298 -0
  36. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/CancelAlert.md +132 -3
  37. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +358 -0
  38. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +230 -0
  39. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +221 -0
  40. package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +213 -0
  41. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Decimal.md +112 -13
  42. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Dropdown.md +127 -1
  43. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Email.md +68 -0
  44. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Group.md +51 -0
  45. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Integer.md +81 -0
  46. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Location.md +105 -0
  47. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Multiselect.md +70 -0
  48. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/ObjectReference.md +74 -0
  49. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Percentage.md +84 -0
  50. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Phone.md +81 -0
  51. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/RadioButtons.md +93 -0
  52. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/RichText.md +85 -0
  53. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/ScalarList.md +54 -0
  54. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/SelectableCard.md +55 -0
  55. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/SemanticLink.md +64 -0
  56. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/TextArea.md +66 -0
  57. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/TextContent.md +28 -0
  58. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextInput.md +67 -0
  59. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Time.md +67 -0
  60. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/URL.md +59 -0
  61. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +90 -0
  62. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-components.md +83 -52
  63. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/AdvancedSearch.md +77 -0
  64. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +273 -0
  65. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/BannerPage.md +39 -0
  66. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/CaseSummary.md +79 -0
  67. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +399 -0
  68. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +282 -0
  69. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/Confirmation.md +89 -0
  70. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +50 -0
  71. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DefaultForm.md +117 -0
  72. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DefaultPage.md +49 -0
  73. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/Details.md +59 -0
  74. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DetailsSubTabs.md +60 -0
  75. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DetailsThreeColumn.md +12 -0
  76. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DetailsTwoColumn.md +12 -0
  77. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DynamicTabs.md +67 -0
  78. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/FieldGroupTemplate.md +119 -0
  79. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/HierarchicalForm.md +45 -0
  80. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/InlineDashboard.md +41 -0
  81. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/InlineDashboardPage.md +56 -0
  82. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/ListPage.md +18 -0
  83. package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +419 -0
  84. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +40 -0
  85. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/NarrowWide.md +66 -0
  86. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/OneColumn.md +34 -0
  87. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/PromotedFilters.md +92 -0
  88. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SelfServiceCaseView.md +56 -0
  89. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SimpleTable.md +59 -0
  90. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SingleReferenceReadOnly.md +52 -0
  91. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SubTabs.md +47 -0
  92. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/TwoColumn.md +49 -0
  93. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WssNavBar.md +71 -0
  94. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-components.md +1 -1
  95. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/AppAnnouncement.md +38 -1
  96. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Attachment.md +58 -0
  97. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/CaseHistory.md +63 -0
  98. package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +81 -14
  99. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +20 -0
  100. package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/QuickCreate.md +48 -0
  101. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +66 -0
  102. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +492 -0
  103. package/templates/react-sdk-reference/package.minimal.json +29 -0
  104. package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
  105. package/templates/react-sdk-reference/src/MashupApp.tsx +8 -19
  106. package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
  107. package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
  108. package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
  109. package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -75
  110. package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
  111. package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
  112. package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
  113. package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +0 -193
  114. package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
  115. package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
  116. package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
  117. package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
  118. package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
  119. package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
  120. package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
  121. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -137
  122. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
  123. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
  124. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
  125. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
  126. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
  127. package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
  128. package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
  129. package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
  130. package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
  131. package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
  132. package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
  133. package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
  134. package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +0 -188
  135. package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +0 -173
  136. package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
  137. package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
  138. package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
  139. package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
  140. package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
  141. package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
  142. package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +0 -155
  143. package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
  144. package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
  145. package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
  146. package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
  147. package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
  148. package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
  149. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
  150. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
  151. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
  152. package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
  153. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
  154. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
  155. package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +0 -70
  156. package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
  157. package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
  158. package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
  159. package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +0 -131
  160. package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
  161. package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
  162. package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
  163. package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +0 -118
  164. package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
  165. package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
  166. package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
  167. package/templates/react-sdk-reference/.cursor/rules/field-component.mdrules +0 -74
  168. package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
  169. package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
  170. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
  171. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
  172. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
  173. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
  174. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
  175. package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
  176. package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
  177. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
  178. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
  179. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
  180. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules +0 -149
  181. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
  182. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
  183. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
  184. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
  185. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
  186. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
  187. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
  188. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension.mdrules +0 -294
  189. package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
  190. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
  191. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
  192. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
  193. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
  194. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
  195. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
  196. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
  197. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
  198. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
  199. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Group.mdrules +0 -95
  200. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
  201. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
  202. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
  203. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ObjectReference.mdrules +0 -169
  204. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
  205. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
  206. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
  207. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RichText.mdrules +0 -143
  208. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
  209. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
  210. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SemanticLink.mdrules +0 -153
  211. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
  212. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
  213. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
  214. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
  215. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
  216. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
  217. package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
  218. package/templates/react-sdk-reference/.cursor/rules/skills/template-components.mdrules +0 -327
  219. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
  220. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
  221. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/BannerPage.mdrules +0 -88
  222. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
  223. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
  224. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
  225. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
  226. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
  227. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
  228. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
  229. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Details.mdrules +0 -93
  230. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
  231. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
  232. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
  233. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
  234. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
  235. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
  236. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
  237. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
  238. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
  239. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
  240. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
  241. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
  242. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
  243. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
  244. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
  245. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
  246. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
  247. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SubTabs.mdrules +0 -84
  248. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
  249. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
  250. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
  251. package/templates/react-sdk-reference/.cursor/rules/skills/widget-components.mdrules +0 -276
  252. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
  253. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
  254. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/CaseHistory.mdrules +0 -112
  255. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
  256. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
  257. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
  258. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
  259. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
  260. package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
  261. package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
  262. package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
  263. package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
  264. package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
  265. package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
  266. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -152
  267. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
  268. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
  269. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
  270. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
  271. package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
  272. package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
  273. package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
  274. package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
  275. package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
  276. package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
  277. package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
  278. package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
  279. package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
  280. package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
  281. package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
  282. package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
  283. package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
  284. package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +0 -117
  285. package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
  286. package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
  287. package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
  288. package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
  289. package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
  290. package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
  291. package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
  292. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
  293. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +0 -112
  294. package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
  295. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
  296. package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
  297. package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
  298. package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
  299. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
  300. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
  301. package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
  302. package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
  303. package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
  304. package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
  305. package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
  306. package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
  307. package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +0 -139
  308. package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
  309. package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
  310. package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
  311. package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
  312. package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
  313. package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
  314. package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
  315. package/templates/react-sdk-reference/AGENTS.md +0 -246
  316. /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
  317. /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +0 -0
@@ -1,113 +0,0 @@
1
- # Skill: FieldGroupList
2
-
3
- Repeating list of named field groups, each with its own children. Supports per-item delete and a global "+Add" link at the bottom.
4
-
5
- > **Prerequisite skill:** [`design-system-extension.md`](../design-system-extension.md) — covers architecture, props interface, styling patterns, and registration patterns common to ALL DSE components.
6
-
7
- ---
8
-
9
- ## Component Purpose
10
-
11
- Renders a vertical list of field group items. Each item has a bold name header, optional delete button (top-right), and rendered children (the group's fields). An optional "+Add" link appears at the bottom when adding is allowed. A horizontal divider separates items when `onAdd` is provided.
12
-
13
- ## Pega Metadata
14
-
15
- - **Pega Name:** `FieldGroupList`
16
- - **Registration key:** `FieldGroupList` (in `component-map.ts`)
17
- - **Does NOT use `getPConnect`** — receives all data as direct props
18
-
19
- ## Props
20
-
21
- | Prop | Type | Required | Description |
22
- | ---------- | ---------------------------------------------------------- | -------- | --------------------------------------------------------------------------------------------------------- |
23
- | `items` | `Array<{ name: string; id: string; children: ReactNode }>` | Yes | List of field group items to render |
24
- | `onDelete` | `(id: string) => void` | No | Called with the item's `id` when the delete button is clicked. If not provided, no delete button is shown |
25
- | `onAdd` | `() => void` | No | Called when the "+Add" link is clicked. If not provided, no add link or dividers are shown |
26
-
27
- ## Behavioral Contract
28
-
29
- 1. Render a `Grid container` with `spacing={4}` and `justifyContent='space-between'` as the outer wrapper.
30
- 2. Inside, render a full-width inner Grid with `spacing={1}`.
31
- 3. For **each item** in `props.items`:
32
- - Render a full-width `Grid` keyed by `item.name`.
33
- - Render `<b>{item.name}</b>` as the item header.
34
- - If `onDelete` is provided, render a delete button:
35
- - Floated right.
36
- - `type='button'`, `id={'delete-row-' + item.id}`, `aria-label='Delete Row'`.
37
- - Button class: `psdk-utility-button`.
38
- - On click: call `onDelete(item.id)`.
39
- - Button contains an `<img>` with the trash icon loaded via `Utils.getImageSrc('trash', Utils.getSDKStaticConentUrl())`.
40
- - Image class: `psdk-utility-card-action-svg-icon`.
41
- - Render `{item.children}`.
42
- - Render `<br />`.
43
- - If `onAdd` is provided: render `<Divider />`, then `<br />`.
44
- 4. After all items, if `onAdd` is provided, render a `<Link>` (or `<a>`) with text `'+Add'`, `cursor: pointer`, and `onClick={onAdd}`.
45
-
46
- ## Visual Specifications
47
-
48
- Derived from `FieldGroupList.tsx`:
49
-
50
- ### Outer Layout
51
-
52
- | Property | Value |
53
- | ---------------------- | ---------- |
54
- | Grid container spacing | 4 (≈ 32px) |
55
-
56
- ### Delete Button
57
-
58
- | Property | Value |
59
- | ----------- | ----------------------------------------------------------- |
60
- | Float | right |
61
- | Style class | `psdk-utility-button` |
62
- | Icon source | `Utils.getImageSrc('trash', Utils.getSDKStaticConentUrl())` |
63
-
64
- ### "+Add" Link
65
-
66
- | Property | Value |
67
- | --------- | -------- |
68
- | Cursor | pointer |
69
- | Underline | hover |
70
- | Text | `'+Add'` |
71
-
72
- **CSS-only implementation notes:**
73
-
74
- - Outer wrapper: `display: flex; flex-direction: column; gap: 32px`.
75
- - Item wrapper: `display: flex; flex-direction: column; gap: 8px; width: 100%`.
76
- - Item header row: `display: flex; justify-content: space-between; align-items: center`.
77
- - Delete button: `float: right` (or use flexbox `justify-content: space-between` on the header row instead).
78
- - Delete icon: `width: 20px; height: 20px` SVG image of a trash/delete icon.
79
- - Divider: `border-top: 1px solid var(--divider-color); margin: 8px 0`.
80
- - "+Add" link: `cursor: pointer; text-decoration: underline; color: var(--app-primary-color)`.
81
-
82
- ## Edge Cases & Special Logic
83
-
84
- - If `items` is empty, render only the "+Add" link (if `onAdd` is provided).
85
- - If neither `onDelete` nor `onAdd` is provided, the list is read-only (no interactive elements).
86
- - The trash icon is loaded dynamically via `Utils.getImageSrc` — if this utility is unavailable, fall back to a standard `🗑` character or an SVG trash icon.
87
- - The delete button must use `type='button'` to prevent form submission.
88
-
89
- ## Dependencies
90
-
91
- - `Utils` from `../../helpers/utils` — for `getImageSrc` and `getSDKStaticConentUrl` (used only for the trash icon)
92
- - No Pega SDK `getPConnect` imports required
93
-
94
- ## Design System Mapping
95
-
96
- **UI control type:** Repeating list of named groups with optional delete and add actions.
97
-
98
- Listed design systems are examples only.
99
-
100
- | Design System | Recommended Component |
101
- | ------------------ | --------------------------------------------------------------------- |
102
- | Default (CSS only) | Flex column layout with `<hr>` divider and `<button>` delete |
103
- | MUI | `<Grid container>` items with `<Divider>` and `<Link>` for "+Add" |
104
- | Ant Design | `<List>` items with `<Divider>` and `<Button type='link'>` for "+Add" |
105
- | Chakra UI | `<VStack>` with `<Divider>` and `<Button variant='link'>` |
106
- | Shadcn/ui | `<div>` flex column with `<Separator>` and a link button |
107
-
108
- When implementing in a specific design system, map the following:
109
-
110
- - Delete button → icon button or `danger` variant button placed at the item top-right
111
- - Divider between items → `<Divider>` / `<hr>` (only when `onAdd` is present)
112
- - "+Add" link → a text link / `Button variant='link'` that calls `onAdd`
113
- - Trash icon → design system's delete icon or an SVG
@@ -1,155 +0,0 @@
1
- # Skill: Operator
2
-
3
- Read-only display of a Pega case operator (creator or updater). Shows the operator's name and relative timestamp. On click, fetches full operator details from Pega and displays them in a popover.
4
-
5
- > **Prerequisite skill:** [`design-system-extension.md`](../design-system-extension.md) — covers architecture, props interface, styling patterns, and registration patterns common to ALL DSE components.
6
-
7
- ---
8
-
9
- ## Component Purpose
10
-
11
- Renders a clickable read-only field displaying a case operator's name and the relative time of their action (created/updated). Clicking the field triggers an async fetch of the operator's profile details (position, organization, reports-to, telephone, email) and shows them in a popover panel.
12
-
13
- ## Pega Metadata
14
-
15
- - **Pega Name:** `Operator`
16
- - **Registration key:** `Operator` (in `component-map.ts`)
17
- - **Extends `PConnProps`** — but does NOT call `getPConnect()`. Props are all passed directly.
18
-
19
- ## Props
20
-
21
- The component interface extends `PConnProps` but all rendering data is passed as explicit props:
22
-
23
- | Prop | Type | Required | Description |
24
- | ---------------- | -------------------------------------- | -------- | ---------------------------------------------------------------------------------------------------------------------------------- |
25
- | `label` | `string` | Yes | The field label used to identify which operator to display. Must be `'create operator'` or `'update operator'` (case-insensitive). |
26
- | `displayLabel` | `any` | No | Alternative label (used if `label` doesn't match). Also compared case-insensitively. |
27
- | `createDateTime` | `string` | Yes | ISO datetime string of when the case was created |
28
- | `createLabel` | `string` | Yes | Display label for the create operator field |
29
- | `createOperator` | `{ userName: string; userId: string }` | Yes | Creator's name and ID |
30
- | `updateDateTime` | `string` | Yes | ISO datetime string of last update |
31
- | `updateLabel` | `string` | Yes | Display label for the update operator field |
32
- | `updateOperator` | `{ userName: string; userId: string }` | Yes | Updater's name and ID |
33
-
34
- ## Behavioral Contract
35
-
36
- ### 1. Operator Selection
37
-
38
- Determine which operator to display based on `label.toLowerCase()` or `displayLabel?.toLowerCase()`:
39
-
40
- - If either is `'create operator'`:
41
- - `caseOpLabel = createLabel`
42
- - `caseOpName = createOperator.userName`
43
- - `caseOpId = createOperator.userId`
44
- - `caseTime = createDateTime`
45
- - If either is `'update operator'`:
46
- - `caseOpLabel = updateLabel`
47
- - `caseOpName = updateOperator.userName`
48
- - `caseOpId = updateOperator.userId`
49
- - `caseTime = updateDateTime`
50
- - Otherwise: `caseOpLabel = '---'`, `caseOpName = '---'`, `caseOpId = ''`, `caseTime = ''`.
51
-
52
- ### 2. Main Display
53
-
54
- Render a read-only TextField (standard variant, no underline, pointer cursor) with:
55
-
56
- - `defaultValue={caseOpName}`
57
- - `label={caseOpLabel}`
58
- - `onClick={showOperatorDetails}`
59
- - `readOnly: true`, `disableUnderline: true`, `cursor: 'pointer'`
60
-
61
- Below the TextField, render the relative time: `Utils.generateDateTime(caseTime, 'DateTime-Since')`.
62
-
63
- ### 3. Popover on Click (`showOperatorDetails`)
64
-
65
- When the TextField is clicked:
66
-
67
- 1. Call `PCore.getUserApi().getOperatorDetails(caseOpId)` — returns a Promise.
68
- 2. Use `PCore.getLocaleUtils().getLocaleValue(key, 'Operator')` to localize field labels.
69
- 3. On resolution, build a fields array with these entries (using `'---'` as fallback for missing values):
70
- - Position (`pyPosition`)
71
- - Organization (`pyOrganization`)
72
- - Reports to (`pyReportToUserName`)
73
- - Telephone (`pyTelephone`) — rendered as `<a href={'tel:' + value}>{value}</a>`
74
- - Email address (`pyEmailAddress`) — rendered as `<a href={'mailto:' + value}>{value}</a>`
75
- 4. If `res.data.pyOperatorInfo.pyUserName` is empty, use all `'---'` fallbacks.
76
- 5. Set `popoverFields` state with the resolved fields.
77
- 6. Set `popoverAnchorEl` to the clicked element to open the popover.
78
-
79
- ### 4. Popover Layout
80
-
81
- The popover renders when `popoverAnchorEl` is set:
82
-
83
- - Anchor origin: `{ vertical: 'bottom', horizontal: 'center' }`
84
- - Transform origin: `{ vertical: 'top', horizontal: 'center' }`
85
- - Max width: `45ch`
86
- - Content: A `Grid container` with:
87
- - `Typography h6` showing `caseOpName` at full width.
88
- - One row per field: 6-col `Typography caption` (label) + 6-col `Typography subtitle2` (value).
89
-
90
- Closing the popover sets `popoverAnchorEl` to `null`.
91
-
92
- ## Visual Specifications
93
-
94
- Derived from `Operator.tsx` makeStyles:
95
-
96
- ### Root Container
97
-
98
- | Property | Value |
99
- | -------- | -------------------------- |
100
- | Padding | `theme.spacing(1)` (≈ 8px) |
101
- | Margin | `theme.spacing(1)` |
102
-
103
- ### Popover Container
104
-
105
- | Property | Value |
106
- | --------- | ------------------ |
107
- | Padding | `theme.spacing(1)` |
108
- | Margin | `theme.spacing(1)` |
109
- | Max width | 45ch |
110
-
111
- **CSS-only implementation notes:**
112
-
113
- - Main display: read-only text field with label above, value below, pointer cursor on the value element.
114
- - Time display: secondary muted text below the operator name (e.g., `font-size: 0.75rem; color: var(--text-secondary)`).
115
- - Popover: `position: absolute; background: var(--bg-paper); border: 1px solid var(--divider); border-radius: 4px; padding: 8px; max-width: 45ch; box-shadow: 0 4px 12px rgba(0,0,0,0.15)`.
116
- - Operator name in popover: `font-size: 1.25rem; font-weight: 500; margin-bottom: 8px`.
117
- - Detail rows: `display: grid; grid-template-columns: 1fr 1fr; gap: 4px; align-items: baseline`.
118
- - Detail label: `font-size: 0.75rem; color: var(--text-secondary)`.
119
- - Detail value: `font-size: 0.875rem; font-weight: 500`.
120
- - Close popover on outside click (use `onClose` / blur handler).
121
-
122
- ## Edge Cases & Special Logic
123
-
124
- - If `caseOpId` is empty (label not recognized), do NOT call `getOperatorDetails` — the fetch would fail.
125
- - If the API response has no `pyOperatorInfo.pyUserName`, fall back to all `'---'` for field values (still open the popover).
126
- - `Utils.generateDateTime(caseTime, 'DateTime-Since')` handles empty `caseTime` gracefully.
127
- - State: `popoverFields` starts as empty array `[]`. Check `popoverFields.length === 0` and return `undefined` from `getPopoverGrid()` to render nothing before data loads.
128
-
129
- ## Dependencies
130
-
131
- - `Utils` from `../../helpers/utils` — `Utils.generateDateTime` for relative time display
132
- - `PCore.getUserApi().getOperatorDetails(userId)` — global Pega runtime API for operator details
133
- - `PCore.getLocaleUtils().getLocaleValue(key, 'Operator')` — for localized field labels in the popover
134
-
135
- ## Design System Mapping
136
-
137
- **UI control type:** Clickable read-only field with async popover detail panel.
138
-
139
- Listed design systems are examples only.
140
-
141
- | Design System | Recommended Component |
142
- | ------------------ | --------------------------------------------------------------- |
143
- | Default (CSS only) | `<div>` with click handler, custom CSS popover/tooltip panel |
144
- | MUI | Read-only `<TextField>` + `<Popover>` with `<Grid>` detail rows |
145
- | Ant Design | `<Input readOnly>` + `<Popover>` with `<Descriptions>` |
146
- | Chakra UI | `<Input isReadOnly>` + `<Popover>` with custom content |
147
- | Shadcn/ui | `<Input readOnly>` + `<Popover>` + `<PopoverContent>` |
148
-
149
- When implementing in a specific design system, map the following:
150
-
151
- - `onClick` on read-only input → trigger async fetch + open popover
152
- - `PCore.getUserApi().getOperatorDetails()` → call this before showing the popover
153
- - Popover anchor → position relative to the clicked element
154
- - `Utils.generateDateTime(caseTime, 'DateTime-Since')` → relative time display (e.g., "2 hours ago")
155
- - Telephone/email in popover → clickable `<a href='tel:...'>` and `<a href='mailto:...'>` links
@@ -1,295 +0,0 @@
1
- # Skill: Field Components
2
-
3
- Create or replace field components (form inputs) in the react-sdk-reference application. Field components render individual form controls that bind to Pega case properties.
4
-
5
- ---
6
-
7
- ## Architecture Overview
8
-
9
- ```
10
- src/components/field/<ComponentName>/
11
- ├── <ComponentName>.tsx # Component implementation
12
- ├── index.tsx # Re-export: export { default } from './<ComponentName>'
13
- └── config-ext.json # Metadata (name, label, description, type, subtype)
14
- ```
15
-
16
- Components are registered in `src/components/component-map.ts` and resolved at runtime via `getComponentFromRegistry` from `@pega/sdk-react`.
17
-
18
- ---
19
-
20
- ## Props Interface
21
-
22
- All field components extend `PConnFieldProps` from `src/types/PConnProps.d.ts`:
23
-
24
- ```typescript
25
- import type { PConnFieldProps } from '../../../types/PConnProps';
26
-
27
- interface PConnFieldProps extends PConnProps {
28
- label: string; // Field label text
29
- required: boolean; // Whether the field is required
30
- disabled: boolean; // Whether the field is disabled
31
- value?: string; // Current field value from the store
32
- validatemessage: string; // Validation error message
33
- status?: string; // 'error' | 'warning' | undefined
34
- onChange: any; // Change handler (wired by platform)
35
- onBlur?: any; // Blur handler (wired by platform)
36
- readOnly: boolean; // Whether the field is read-only
37
- testId: string; // Test identifier for automation
38
- helperText: string; // Helper/hint text below the field
39
- displayMode?: string; // 'DISPLAY_ONLY' | 'STACKED_LARGE_VAL' | undefined
40
- hideLabel: boolean; // Whether to hide the label
41
- placeholder?: string; // Placeholder text
42
- }
43
-
44
- interface PConnProps {
45
- getPConnect: () => typeof PConnect; // Returns the PConnect API object
46
- }
47
- ```
48
-
49
- Extend `PConnFieldProps` for component-specific additional props:
50
-
51
- ```typescript
52
- interface MyFieldProps extends PConnFieldProps {
53
- fieldMetadata?: any;
54
- maxLength?: number;
55
- }
56
- ```
57
-
58
- ---
59
-
60
- ## Implementation Pattern
61
-
62
- ### Abstract Field Component Template
63
-
64
- This template is design-system agnostic. It defines the **behavioral skeleton** every field component must follow. Replace the `// [DS RENDER]` section with your design system's input primitive — see the "Design System Adaptation" section below for guidance.
65
-
66
- ```typescript
67
- import { useState, useEffect } from 'react';
68
- // Import your design system component here:
69
- // e.g. import { Input } from 'antd';
70
- // e.g. import { Input } from '@chakra-ui/react';
71
-
72
- import handleEvent from '../../helpers/event-utils';
73
- import { getComponentFromRegistry } from '@pega/sdk-react';
74
- import type { PConnFieldProps } from '@pega/sdk-react';
75
-
76
- interface MyFieldProps extends PConnFieldProps {
77
- // Add component-specific props here
78
- }
79
-
80
- export default function MyField(props: MyFieldProps) {
81
- const FieldValueList = getComponentFromRegistry('FieldValueList');
82
-
83
- const {
84
- getPConnect,
85
- label,
86
- required,
87
- disabled,
88
- value = '',
89
- validatemessage,
90
- status,
91
- readOnly,
92
- testId,
93
- helperText,
94
- displayMode,
95
- hideLabel,
96
- placeholder
97
- } = props;
98
-
99
- const pConn = getPConnect();
100
- const actions = pConn.getActionsApi();
101
- const propName = (pConn.getStateProps() as any).value;
102
- const helperTextToDisplay = validatemessage || helperText;
103
-
104
- // 1. Track input value locally — do NOT commit on every keystroke
105
- const [inputValue, setInputValue] = useState(value);
106
-
107
- // 2. Sync local state when the store value changes
108
- useEffect(() => {
109
- setInputValue(value);
110
- }, [value]);
111
-
112
- // 3. Display modes — must short-circuit before any interactive rendering
113
- if (displayMode === 'DISPLAY_ONLY') {
114
- return <FieldValueList name={hideLabel ? '' : label} value={value} />;
115
- }
116
-
117
- if (displayMode === 'STACKED_LARGE_VAL') {
118
- return <FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />;
119
- }
120
-
121
- // 4. Event handlers
122
- function handleChange(newValue: string) {
123
- setInputValue(newValue); // update local state only
124
- }
125
-
126
- function handleBlur() {
127
- handleEvent(actions, 'changeNblur', propName, inputValue); // commit to Pega store
128
- }
129
-
130
- // 5. [DS RENDER] — replace with your design system's input primitive
131
- // Refer to "Design System Adaptation" below for prop mapping guidance
132
- return (
133
- <YourDesignSystemInput
134
- value={inputValue}
135
- onChange={handleChange}
136
- onBlur={!readOnly ? handleBlur : undefined}
137
- disabled={disabled}
138
- readOnly={readOnly}
139
- required={required}
140
- placeholder={placeholder}
141
- label={label}
142
- helperText={helperTextToDisplay}
143
- isInvalid={status === 'error'}
144
- data-test-id={testId}
145
- />
146
- );
147
- }
148
- ```
149
-
150
- ---
151
-
152
- ## Design System Adaptation
153
-
154
- When filling in the `// [DS RENDER]` section with a specific design system:
155
-
156
- **1. Check the component-specific skill file** — `.github/skills/field-skills/<ComponentName>.md` contains a **Design System Mapping** table that lists the recommended DS component for common design systems. Use it as a starting point.
157
-
158
- **2. If the chosen design system is not in the mapping table** — use the **UI control type** field in the same skill file (e.g., `"Combobox / typeahead autocomplete input"`) to identify the closest DS primitive.
159
-
160
- **3. Discover the API from installed packages** — before writing any render JSX, confirm all prop names from `.d.ts` files. Never rely on training-knowledge of a DS API:
161
-
162
- ```bash
163
- find node_modules/<ds-package> -name "ComponentName.d.ts" | head -3
164
- grep -A 40 "interface.*Props" <path-to-file>
165
- ```
166
-
167
- **4. Prop mapping conventions** — adapt these Pega/SDK props to whatever your DS component calls them:
168
-
169
- | Pega/SDK prop | Meaning | Typical DS equivalent |
170
- | --------------------------------- | ----------------------------- | -------------------------------------------------- |
171
- | `status === 'error'` | Validation error state | `error`, `status="error"`, `invalid`, `isInvalid` |
172
- | `validatemessage \|\| helperText` | Helper/error text below field | `helperText`, `description`, `hint`, `extra` |
173
- | `readOnly` | Non-editable, still visible | `readOnly`, `isReadOnly`, `variant="borderless"` |
174
- | `testId` | Automation selector | `data-test-id` on the underlying `<input>` element |
175
- | `required` | Required field marker | `required`, `isRequired` |
176
- | `hideLabel` | Suppress label display | Pass empty string `''` as label |
177
-
178
- **5. Use a form layout wrapper** — if the DS provides a wrapper that combines label + input + helper text (e.g., `<Form.Item>` in Ant Design, `<FormControl>` in Chakra UI), use it rather than composing them manually.
179
-
180
- ---
181
-
182
- ## Event Handling
183
-
184
- Use `src/components/helpers/event-utils.ts` to commit values to the Pega store:
185
-
186
- ```typescript
187
- import handleEvent from '../../helpers/event-utils';
188
-
189
- // Get references
190
- const actions = pConn.getActionsApi();
191
- const propName = (pConn.getStateProps() as any).value;
192
-
193
- // Options:
194
- handleEvent(actions, 'change', propName, value); // Update store only
195
- handleEvent(actions, 'blur', propName, value); // Trigger validation only
196
- handleEvent(actions, 'changeNblur', propName, value); // Update + validate (most common)
197
- ```
198
-
199
- **Pattern:** Track local state with `useState`, update on user input, then call `handleEvent` on blur to commit.
200
-
201
- ---
202
-
203
- ## Display Modes
204
-
205
- Every field component MUST handle these `displayMode` values:
206
-
207
- | Mode | Behavior |
208
- | --------------------- | -------------------------------------------------------------- |
209
- | `undefined` / `null` | Render editable form control |
210
- | `'DISPLAY_ONLY'` | Render read-only via `FieldValueList` (inline layout) |
211
- | `'STACKED_LARGE_VAL'` | Render read-only via `FieldValueList` with `variant='stacked'` |
212
-
213
- Use `getComponentFromRegistry('FieldValueList')` to get the display component.
214
-
215
- ---
216
-
217
- ## Resolving Other Components
218
-
219
- Use `getComponentFromRegistry` from `@pega/sdk-react` to resolve components by name:
220
-
221
- ```typescript
222
- import { getComponentFromRegistry } from '@pega/sdk-react';
223
-
224
- const FieldValueList = getComponentFromRegistry('FieldValueList');
225
- const TextInput = getComponentFromRegistry('TextInput');
226
- ```
227
-
228
- This is used when:
229
-
230
- - Rendering display modes (FieldValueList)
231
- - Delegating to another field component (e.g., Date delegates to TextInput for readOnly)
232
-
233
- ---
234
-
235
- ## Registration
236
-
237
- After creating a component, register it in `src/components/component-map.ts`:
238
-
239
- ```typescript
240
- import MyField from './field/MyField';
241
-
242
- // In the getSampleComponentMap() return object:
243
- {
244
- ...sdkComponents,
245
- // ... other fields ...
246
- MyField, // Key must match the Pega component name exactly
247
- }
248
- ```
249
-
250
- ---
251
-
252
- ## Existing Field Components
253
-
254
- | Component | Pega Name | Description |
255
- | --------------- | --------------- | ---------------------------------------------- |
256
- | AutoComplete | AutoComplete | Typeahead search field |
257
- | CancelAlert | CancelAlert | Cancel confirmation dialog |
258
- | Checkbox | Checkbox | Single checkbox with label |
259
- | Currency | Currency | Currency input with formatting |
260
- | Date | Date | Date picker (uses @mui/x-date-pickers + dayjs) |
261
- | DateTime | DateTime | Date + time picker |
262
- | Decimal | Decimal | Decimal number input |
263
- | Dropdown | Dropdown | Select/dropdown with options from data page |
264
- | Email | Email | Email input with icon |
265
- | Group | Group | Field group container |
266
- | Integer | Integer | Integer-only input |
267
- | Location | Location | Google Maps location picker |
268
- | Multiselect | Multiselect | Multi-select dropdown |
269
- | ObjectReference | ObjectReference | Reference to another object |
270
- | Percentage | Percentage | Percentage input |
271
- | Phone | Phone | Phone input (uses mui-tel-input) |
272
- | RadioButtons | RadioButtons | Radio button group |
273
- | RichText | RichText | Rich text editor (TinyMCE) |
274
- | ScalarList | ScalarList | List of scalar values |
275
- | SelectableCard | SelectableCard | Card-style selection |
276
- | SemanticLink | SemanticLink | Clickable link to another case/object |
277
- | TextArea | TextArea | Multi-line text input |
278
- | TextContent | TextContent | Static text display |
279
- | TextInput | TextInput | Single-line text input |
280
- | Time | Time | Time picker |
281
- | URL | URL | URL input with validation |
282
- | UserReference | UserReference | User picker |
283
-
284
- ---
285
-
286
- ## Key Conventions
287
-
288
- 1. **Default export** — Each component uses `export default function`.
289
- 2. **index.tsx** — Re-exports: `export { default } from './ComponentName'`.
290
- 3. **Local state** — Track input value locally, sync from `value` prop via `useEffect`.
291
- 4. **Commit on blur** — Use `handleEvent(actions, 'changeNblur', propName, localValue)` on blur, not on every keystroke.
292
- 5. **Error display** — Show `validatemessage` or `helperText` below the field; set `error={status === 'error'}`.
293
- 6. **Read-only** — Set `readOnly` on input props or render a display-only component.
294
- 7. **Test IDs** — Pass `data-test-id={testId}` to the underlying input element.
295
- 8. **No PCore imports** — Access PCore globals directly (they're declared globally by `@pega/pcore-pconnect-typedefs`).