@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
@@ -0,0 +1,492 @@
1
+ # Skill: ToDo
2
+
3
+ Assignment worklist widget. Displays the current user's pending assignments with expand/collapse, click-to-open, priority indicators, badge counts, responsive layout, and snackbar error notifications.
4
+
5
+ > **Prerequisite skill:** [`widget-components.md`](../widget-components.md) — covers architecture, props interface, data-fetching patterns, and registration conventions common to ALL widget components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a compact to-do / worklist panel showing the user's pending assignments. Shows the top 3 items by default with a "Show more" / "Show less" toggle. Supports two modes: `worklist` (personal workbasket) and `todo` (case-level assignments). Clicking an item opens the assignment. A badge in the card header shows the total count.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `Todo` (note: lowercase `o` in the key; file is `ToDo.tsx`)
16
+ - **Category:** Widget — assignment / action
17
+ - **Extends:** `PConnProps`
18
+
19
+ ## Props
20
+
21
+ | Prop | Type | Required | Description |
22
+ | -------------- | ---------- | -------- | -------------------------------------------------------------------------------------------------- |
23
+ | `datasource` | `any` | No | Array of assignments passed directly (used in `todo` type). If provided, skips the data page fetch |
24
+ | `myWorkList` | `any` | No | Work list config object `{ datapage: string, fields: [...] }` — for `worklist` type |
25
+ | `caseInfoID` | `string` | No | Case ID to filter assignments (used in `todo` type) |
26
+ | `headerText` | `string` | No | Widget title. Default: `"To do"` |
27
+ | `itemKey` | `string` | No | Field key (reserved, currently unused) |
28
+ | `showTodoList` | `boolean` | No | Whether to show the assignment list. Default `true` |
29
+ | `type` | `string` | No | `'worklist'` (personal work) or `'todo'` (case-level). Default `'worklist'` |
30
+ | `context` | `string` | No | Context name for API calls. Falls back to `pConn.getContextName()` |
31
+ | `isConfirm` | `boolean` | No | Confirmation mode — adjusts rendering for post-submit confirmation view |
32
+ | `getPConnect` | `function` | Yes | PConnect getter |
33
+
34
+ ## Component Skeleton
35
+
36
+ ```typescript
37
+ import { useCallback, useEffect, useState } from 'react';
38
+ import { Utils } from '../../helpers/utils';
39
+ import type { PConnProps } from '@pega/sdk-react';
40
+ import './ToDo.css';
41
+
42
+ interface ToDoProps extends PConnProps {
43
+ datasource?: any; myWorkList?: any; caseInfoID?: string;
44
+ headerText?: string; showTodoList?: boolean; type?: string;
45
+ context?: string; isConfirm?: boolean;
46
+ }
47
+
48
+ export default function ToDo(props: ToDoProps) {
49
+ const {
50
+ getPConnect, context, datasource = [], headerText = 'To do',
51
+ showTodoList = true, myWorkList = {}, type = 'worklist', isConfirm = false,
52
+ } = props;
53
+ const CONSTS = PCore.getConstants();
54
+ const thePConn = getPConnect();
55
+ const currentUser = PCore.getEnvironmentInfo().getOperatorName() ?? '';
56
+ const currentUserInitials = Utils.getInitials(currentUser);
57
+
58
+ // 1. Data: derive assignments from props OR fetch
59
+ const assignmentsSource = Array.isArray(datasource) ? datasource : Array.isArray(datasource?.source) ? datasource.source : Array.isArray(myWorkList?.source) ? myWorkList.source : null;
60
+ const [fetchedAssignments, setFetchedAssignments] = useState([]);
61
+
62
+ // 2. Only fetch for WORKLIST type — TODO type gets data from props directly
63
+ useEffect(() => {
64
+ if (type === CONSTS.WORKLIST && myWorkList?.datapage && !assignmentsSource?.length) {
65
+ PCore.getDataPageUtils().getDataAsync(myWorkList.datapage, context || pConn.getContextName(), ...)
66
+ .then(response => setFetchedAssignments(response?.data || []));
67
+ }
68
+ }, [type, myWorkList?.datapage, context]);
69
+
70
+ // Use prop data if available, otherwise use fetched data
71
+ const assignments = assignmentsSource?.length ? assignmentsSource : fetchedAssignments;
72
+
73
+ // 3. clickGo — openAssignment with container options
74
+ // IMPORTANT: assignment ID field differs by type!
75
+ const CONSTS = PCore.getConstants();
76
+ const getAssignmentId = (assignment) => type === CONSTS.TODO ? assignment.ID : assignment.id;
77
+
78
+ function clickGo(assignment) {
79
+ const id = getAssignmentId(assignment);
80
+ let classname = assignment.classname || '';
81
+ if (!classname) classname = thePConn.getCaseInfo().getClassName();
82
+ const sTarget = thePConn.getContainerName() || '';
83
+ const options: any = { containerName: sTarget || CONSTS.APP.APP, channelName: '' };
84
+ if (sTarget === 'workarea') { options.isActionFromToDoList = true; options.target = ''; options.context = null; options.isChild = assignment.isChild; }
85
+ else { options.isActionFromToDoList = false; options.target = sTarget; }
86
+ thePConn.getActionsApi().openAssignment(id, classname, options)
87
+ .catch(() => { setSnackbarMessage('Submit failed!'); setShowSnackbar(true); });
88
+ }
89
+
90
+ // 4. Show more/less toggle
91
+ function _showMore() { setBShowMore(false); /* fetch all or setAssignments(full list) */ }
92
+ function _showLess() { setBShowMore(true); setAssignments(a => a.slice(0, 3)); }
93
+
94
+ // 5. Render: WORKLIST and TODO have DIFFERENT render structures
95
+ // See the two render paths below — they MUST be separate.
96
+ }
97
+ ```
98
+
99
+ > ⚠️ **CRITICAL — WORKLIST AND TODO RENDER DIFFERENTLY**
100
+ >
101
+ > The component MUST have **two separate render paths** based on `type`:
102
+ >
103
+ > **WORKLIST mode** (homepage — `type === CONSTS.WORKLIST`):
104
+ >
105
+ > - Header: avatar circle (initials) + title + count badge **immediately next to title** (no flex spacer)
106
+ > - Show only first 3 items by default (`bShowMore ? assignments.slice(0, 3) : assignments`)
107
+ > - Each row: name (bold) + subtitle "In {caseName} {caseId} • {status} • Urgency {priority}" + Chevron icon
108
+ > - "Show more" fetches all from data page; "Show less" slices back to 3
109
+ >
110
+ > **TODO mode** (case view — `type === CONSTS.TODO`):
111
+ >
112
+ > - Header: title + count badge (NO avatar in header)
113
+ > - Each row: avatar circle + name (bold) + "In {caseId} • Urgency {priority}" + Chevron icon
114
+ > - `isConfirm` mode: render without card wrapper, hide chevron when `canPerform === false`
115
+ >
116
+ > ❌ **NEVER** use a single render path for both modes.
117
+ > ❌ **NEVER** use `flex: 1` on the title — it pushes the badge to the far right.
118
+
119
+ > ⚠️ **CRITICAL — USE THE PROJECT'S DESIGN SYSTEM**
120
+ >
121
+ > Check `package.json` for the installed design system and use its components:
122
+ >
123
+ > | If installed DS is... | Card/Tile | Badge/Count | Chevron Icon | Button |
124
+ > | --------------------- | ------------------------ | --------------------------- | ----------------------------------------- | ------------------------ |
125
+ > | `@carbon/react` | `Tile` | `Tag type='blue' size='sm'` | `ChevronRight` from `@carbon/react/icons` | `Button kind='ghost'` |
126
+ > | `@mui/material` | `Card` + `CardHeader` | `Badge` | `ArrowForwardIosOutlinedIcon` | `Button` |
127
+ > | `antd` | `Card` | `Badge count={N}` | `RightOutlined` | `Button type='link'` |
128
+ > | `@chakra-ui/react` | `Card` | `Badge` | `ChevronRightIcon` | `Button variant='ghost'` |
129
+ > | None / CSS-only | `<div>` with card styles | `<span>` with badge CSS | `›` character | `<button>` |
130
+ >
131
+ > ❌ **NEVER** use plain `<button>` with inline styles for assignment rows.
132
+ > ❌ **NEVER** use text `›` when a DS chevron icon is available.
133
+
134
+ ### WORKLIST Render Path (complete JSX)
135
+
136
+ ```tsx
137
+ // ─── WORKLIST MODE (homepage) ───
138
+ if (type === CONSTS.WORKLIST) {
139
+ return (
140
+ <Card className="psdk-todo">
141
+ {showTodoList && (
142
+ <div className="psdk-todo-header">
143
+ <Avatar>{currentUserInitials}</Avatar>
144
+ <h4 className="psdk-todo-title">{headerText}</h4>
145
+ <Badge>{getCount()}</Badge> {/* Badge IMMEDIATELY next to title */}
146
+ </div>
147
+ )}
148
+ <List>
149
+ {(bShowMore ? assignments.slice(0, 3) : assignments).map((assignment) => (
150
+ <ListItem
151
+ key={getAssignmentId(assignment)}
152
+ onClick={() => clickGo(assignment)}
153
+ disabled={assignment.canPerform === false}
154
+ >
155
+ <div>
156
+ <strong>{getAssignmentName(assignment)}</strong>
157
+ <span>
158
+ In {assignment.name} {getDisplayId(assignment)} • {assignment.status} • Urgency{' '}
159
+ {getPriority(assignment)}
160
+ </span>
161
+ </div>
162
+ <ChevronRightIcon />
163
+ </ListItem>
164
+ ))}
165
+ </List>
166
+ {getCount() > 3 &&
167
+ (bShowMore ? (
168
+ <Button onClick={handleShowMore}>Show more</Button>
169
+ ) : (
170
+ <Button onClick={handleShowLess}>Show less</Button>
171
+ ))}
172
+ </Card>
173
+ );
174
+ }
175
+ ```
176
+
177
+ ### TODO Render Path (complete JSX)
178
+
179
+ ```tsx
180
+ // ─── TODO MODE (case view) ───
181
+ const todoContent = (
182
+ <>
183
+ {showTodoList && (
184
+ <div className="psdk-todo-header">
185
+ <h4 className="psdk-todo-title">{headerText}</h4>
186
+ <Badge>{assignments.length}</Badge>
187
+ </div>
188
+ )}
189
+ <List>
190
+ {assignments.map((assignment) => (
191
+ <ListItem
192
+ key={getAssignmentId(assignment)}
193
+ onClick={() => clickGo(assignment)}
194
+ disabled={assignment.canPerform === false}
195
+ >
196
+ <Avatar>{currentUserInitials}</Avatar>
197
+ <div>
198
+ <strong>{getAssignmentName(assignment)}</strong>
199
+ <span>
200
+ In {getDisplayId(assignment)} • Urgency {getPriority(assignment)}
201
+ </span>
202
+ </div>
203
+ {(!isConfirm || canPerform) && <ChevronRightIcon />}
204
+ </ListItem>
205
+ ))}
206
+ {assignments.length === 0 && showTodoList && <p>You're all caught up!</p>}
207
+ </List>
208
+ </>
209
+ );
210
+ if (isConfirm) return <div>{todoContent}</div>;
211
+ return <Card>{todoContent}</Card>;
212
+ ```
213
+
214
+ ### Required CSS (create `ToDo.css`)
215
+
216
+ ```css
217
+ .psdk-todo {
218
+ padding: 1rem;
219
+ }
220
+ .psdk-todo-header {
221
+ display: flex;
222
+ align-items: center;
223
+ gap: 0.75rem;
224
+ margin-bottom: 1rem;
225
+ }
226
+ .psdk-todo-title {
227
+ margin: 0;
228
+ font-size: 1.125rem;
229
+ font-weight: 500;
230
+ }
231
+ /* Do NOT use flex: 1 on title — badge must sit immediately next to text */
232
+ .psdk-todo-avatar {
233
+ width: 36px;
234
+ height: 36px;
235
+ border-radius: 50%;
236
+ background: #c6c6c6;
237
+ display: flex;
238
+ align-items: center;
239
+ justify-content: center;
240
+ font-size: 0.8125rem;
241
+ font-weight: 600;
242
+ flex-shrink: 0;
243
+ }
244
+ .psdk-todo-row {
245
+ display: flex;
246
+ align-items: center;
247
+ gap: 0.75rem;
248
+ padding: 0.75rem 0;
249
+ border-bottom: 1px solid #e0e0e0;
250
+ cursor: pointer;
251
+ }
252
+ .psdk-todo-row:hover {
253
+ background: #f4f4f4;
254
+ }
255
+ .psdk-todo-row--disabled {
256
+ opacity: 0.5;
257
+ cursor: not-allowed;
258
+ }
259
+ ```
260
+
261
+ ## Behavioral Contract
262
+
263
+ ### Data Source Resolution
264
+
265
+ **`type === 'todo'` (case-level):**
266
+
267
+ - Use `datasource` prop directly (array of assignment objects).
268
+ - `caseInfoID` is used to scope the assignments.
269
+
270
+ **`type === 'worklist'` (personal work):**
271
+
272
+ - Fetch from `myWorkList.datapage` (e.g., `D_WorkList`) via:
273
+ ```
274
+ PCore.getDataPageUtils().getDataAsync(
275
+ myWorkList.datapage,
276
+ context,
277
+ {},
278
+ { pageNumber: 1, pageSize: 50 },
279
+ { select: myWorkList.fields },
280
+ { invalidateCache: true }
281
+ )
282
+ ```
283
+ - Map the response to assignment objects.
284
+
285
+ ### Top 3 + Show More
286
+
287
+ - `showCount` state: default `3`.
288
+ - Render only `assignments.slice(0, showCount)`.
289
+ - If `assignments.length > 3`:
290
+ - Show a `"Show more"` button → sets `showCount = assignments.length`.
291
+ - When expanded: show `"Show less"` button → sets `showCount = 3`.
292
+
293
+ ### Badge Count
294
+
295
+ - Render a `<Badge badgeContent={assignments.length}>` on the card header or alongside the title.
296
+ - Badge shows the total count of assignments, not the currently-visible count.
297
+
298
+ ### Open Assignment
299
+
300
+ On item click:
301
+
302
+ > ⚠️ **CRITICAL — Assignment ID field differs by type:**
303
+ >
304
+ > - `type === CONSTS.TODO` → use `assignment.ID` (uppercase)
305
+ > - `type === 'worklist'` → use `assignment.id` (lowercase)
306
+ >
307
+ > Using the wrong casing will pass `undefined` and produce "assignmentID is required parameter" error.
308
+
309
+ ```typescript
310
+ const CONSTS = PCore.getConstants();
311
+ const getAssignmentId = (assignment) => (type === CONSTS.TODO ? assignment.ID : assignment.id);
312
+
313
+ function clickGo(assignment) {
314
+ const id = getAssignmentId(assignment);
315
+ let classname = assignment.classname || '';
316
+ if (!classname) classname = pConn.getCaseInfo().getClassName(); // fallback
317
+ const sTarget = pConn.getContainerName() || '';
318
+ const options: any = { containerName: sTarget || PCore.getConstants().APP.APP, channelName: '' };
319
+ if (sTarget === 'workarea') {
320
+ options.isActionFromToDoList = true;
321
+ options.target = '';
322
+ options.context = null;
323
+ options.isChild = assignment.isChild;
324
+ } else {
325
+ options.isActionFromToDoList = false;
326
+ options.target = sTarget;
327
+ }
328
+ pConn.getActionsApi().openAssignment(id, classname, options);
329
+ }
330
+ ```
331
+
332
+ ### Assignment Item Rendering
333
+
334
+ > ⚠️ **Worklist vs TODO have DIFFERENT field names and display formats.**
335
+
336
+ #### Helper functions (MUST include):
337
+
338
+ ```typescript
339
+ const CONSTS = PCore.getConstants();
340
+ const getAssignmentId = (assignment) => (type === CONSTS.TODO ? assignment.ID : assignment.id);
341
+ const getDisplayId = (assignment) => {
342
+ const refKey = assignment.value || assignment.ID || assignment.id || '';
343
+ if (assignment.value) return refKey.substring(refKey.lastIndexOf(' ') + 1);
344
+ const parts = refKey.split('!')[0]?.split(' ');
345
+ return parts?.[2] || parts?.[parts.length - 1] || refKey;
346
+ };
347
+ const getPriority = (assignment) => (type === CONSTS.TODO ? assignment.urgency : assignment.priority);
348
+ ```
349
+
350
+ #### Data source:
351
+
352
+ - **TODO type** (`type === CONSTS.TODO`): data from `datasource.source` prop (synchronous, do NOT fetch)
353
+ - **WORKLIST type** (`type === CONSTS.WORKLIST`): data fetched from `myWorkList.datapage` via `getDataAsync`
354
+
355
+ Use prop data directly when available (`assignmentsSource`), only fetch for WORKLIST when no prop data exists.
356
+
357
+ #### Field names by type:
358
+
359
+ | Field | WORKLIST (`assignment.xxx`) | TODO (`assignment.xxx`) |
360
+ | ---------------- | -------------------------------------- | -------------------------------------- |
361
+ | Assignment ID | `id` (lowercase) | `ID` (uppercase) |
362
+ | Step/task name | `stepName` or `name` | `name` or `stepName` |
363
+ | Case type label | `name` | — |
364
+ | Case ID | extract from `id` via `getDisplayId()` | extract from `ID` via `getDisplayId()` |
365
+ | Status | `status` | — |
366
+ | Priority/Urgency | `priority` | `urgency` |
367
+ | Class name | `classname` | `classname` |
368
+
369
+ #### Display format per item:
370
+
371
+ - **WORKLIST:** `"In {assignment.name} {getDisplayId(assignment)} • {assignment.status} • Urgency {getPriority(assignment)}"`
372
+ - **TODO:** `"In {getDisplayId(assignment)} • Urgency {getPriority(assignment)}"`
373
+
374
+ #### Each item renders:
375
+
376
+ - **Avatar:** Circle with operator initials
377
+ - **Name (bold):** `assignment.stepName || assignment.name` (the task/step name)
378
+ - **Subtitle:** The format string above (WORKLIST or TODO format)
379
+ - **Chevron:** Right-pointing arrow `›` indicating clickable
380
+
381
+ #### `showTodoList` behavior:
382
+
383
+ - Items should ALWAYS render when `assignments.length > 0` — do NOT gate by `showTodoList`
384
+ - Only show "You're all caught up" empty state when `showTodoList === true && assignments.length === 0`
385
+
386
+ ### Responsive Layout
387
+
388
+ Use `useMediaQuery(theme.breakpoints.down('sm'))` (MUI) to detect mobile:
389
+
390
+ - **Desktop:** Show avatar, name, status, priority, and arrow in a horizontal row.
391
+ - **Mobile:** Stack or truncate elements for narrow display.
392
+
393
+ ### `canPerform` Permission Check
394
+
395
+ If an assignment has `canPerform === false`, render it as non-clickable (greyed out, no onClick handler).
396
+
397
+ ### Snackbar Error
398
+
399
+ - On `openAssignment` failure, catch the error and show a `<Snackbar>` with the error message.
400
+ - Auto-hide after 3000ms.
401
+ - `<IconButton>` (`<CloseIcon>`) to manually dismiss.
402
+
403
+ ### Operator Avatar Initials
404
+
405
+ Extract initials from `PCore.getEnvironmentInfo().getOperatorName()`:
406
+
407
+ ```typescript
408
+ const initials = operatorName
409
+ .split(' ')
410
+ .map((w) => w[0])
411
+ .join('')
412
+ .substring(0, 2)
413
+ .toUpperCase();
414
+ ```
415
+
416
+ ## Visual Specifications
417
+
418
+ ### Card Layout
419
+
420
+ | Element | Description |
421
+ | --------------------- | --------------------------------------------------- |
422
+ | Card header | `headerText` (default `"To do"`) + badge with count |
423
+ | Assignment rows | Up to `showCount` items |
424
+ | Show more/less button | Below the last visible item |
425
+
426
+ ### Assignment Row
427
+
428
+ | Element | Desktop | Mobile |
429
+ | ------------------ | --------- | --------------- |
430
+ | Avatar circle | Shown | Shown |
431
+ | Task name | Full text | Truncated |
432
+ | Status badge | Shown | Hidden or small |
433
+ | Priority indicator | Shown | Simplified |
434
+ | Arrow icon | Shown | Shown |
435
+
436
+ **CSS-only implementation notes:**
437
+
438
+ - Card: standard card layout.
439
+ - Assignment row: `display: flex; align-items: center; gap: 0.75rem; padding: 10px 0; cursor: pointer; border-bottom: 1px solid var(--divider-color)`.
440
+ - Avatar: `width: 36px; height: 36px; border-radius: 50%; background: var(--avatar-bg); display: flex; align-items: center; justify-content: center; font-size: 0.875rem; font-weight: 600`.
441
+ - Status badge: `padding: 2px 6px; border-radius: 10px; font-size: 0.75rem; background: var(--status-bg-color)`.
442
+ - Priority: `font-size: 0.75rem; color: var(--secondary-text-color)`.
443
+ - Arrow: `margin-left: auto; color: var(--secondary-text-color)`.
444
+ - Non-clickable (canPerform=false): `opacity: 0.5; cursor: not-allowed`.
445
+ - Show more button: `width: 100%; text-align: center; padding: 8px; color: var(--app-primary-color)`.
446
+
447
+ ## Edge Cases & Special Logic
448
+
449
+ - `type` defaults to `'worklist'` — handle the fallback gracefully if `type` is undefined.
450
+ - `datasource` prop vs fetch: if `datasource` is provided (non-empty), skip the data page fetch entirely.
451
+ - `myWorkList` may be undefined for `todo` type — do not attempt a fetch if it's missing.
452
+ - `showTodoList === false` — render only the card header (with badge count) and hide the list body.
453
+ - `isConfirm === true` — used in the Confirmation template context; may adjust layout to hide certain elements (e.g., hide status badge, show simpler view).
454
+ - Empty assignments — show a `"No tasks"` or `"You're all caught up!"` empty state message.
455
+ - `canPerform` check: if `false`, disable click and show cursor `not-allowed`. Do not open the assignment.
456
+ - Container name fallback: `pConn.getContainerName() || PCore.getConstants().APP.APP` — always provide a container name to `openAssignment`.
457
+
458
+ ## Dependencies
459
+
460
+ - `PCore.getDataPageUtils().getDataAsync()` — worklist data page fetch
461
+ - `PCore.getEnvironmentInfo()` — operator name for avatar initials
462
+ - `PCore.getConstants()` — CASE_INFO, WORK_BASKET, TODO, APP constants
463
+ - `PCore.getLocaleUtils()` — assignment label localization
464
+ - `pConn.getActionsApi().openAssignment()` — opens the selected assignment
465
+ - MUI: `<Card>`, `<CardContent>`, `<CardHeader>`, `<Avatar>`, `<Typography>`, `<Badge>`, `<List>`, `<ListItem>`, `<ListItemText>`, `<Button>`, `<Snackbar>`, `<IconButton>`, `useMediaQuery`, `useTheme`
466
+ - MUI Icons: `<CloseIcon>`, `<ArrowForwardIosOutlinedIcon>`
467
+
468
+ ## Design System Mapping
469
+
470
+ **UI control type:** Assignment worklist widget with expand/collapse, click-to-open, badge count, and error toast.
471
+
472
+ Listed design systems are examples only.
473
+
474
+ | Design System | Card | List | Badge | Snackbar |
475
+ | ------------------ | ------------------------- | ------------------- | ------------------- | ----------------------------- |
476
+ | Default (CSS only) | `<div>` card | `<ul>/<li>` | CSS counter badge | Custom toast overlay |
477
+ | MUI | `<Card>` + `<CardHeader>` | `<List>/<ListItem>` | `<Badge>` | `<Snackbar>/<Alert>` |
478
+ | Ant Design | `<Card>` | `<List>` | `<Badge count={N}>` | `message.error()` |
479
+ | Chakra UI | `<Card>` | `<VStack>` | `<Badge>` | `useToast()` |
480
+ | Shadcn/ui | `<Card>` | `<ul>/<li>` | Custom badge | `<Toaster>` + `toast.error()` |
481
+
482
+ When implementing in a specific design system:
483
+
484
+ - **ALWAYS check `package.json`** to identify the installed design system BEFORE writing render code
485
+ - Import and use the DS's card/badge/icon/button components — do NOT fall back to plain HTML
486
+ - **WORKLIST and TODO MUST have separate render paths** — they have different header layouts and subtitle formats
487
+ - **Badge/count MUST sit immediately next to the title** — do NOT use `flex: 1` on the title or push badge to far right
488
+ - Show top 3 items by default — `bShowMore ? assignments.slice(0, 3) : assignments` controls the slice
489
+ - Use the DS's chevron/arrow icon (not text `›`) for the row action indicator
490
+ - `canPerform === false` must make the row non-clickable — check this before calling `openAssignment`
491
+ - `type === 'worklist'` fetches from a data page; `type === 'todo'` uses the `datasource` prop — both paths must be implemented
492
+ - Operator initials for the avatar must be derived from `PCore.getEnvironmentInfo().getOperatorName()`
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@pega/react-sdk-reference",
3
+ "version": "0.0.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "dev": "vite",
8
+ "build": "vite build",
9
+ "preview": "vite preview"
10
+ },
11
+ "dependencies": {
12
+ "@pega/auth": "file:pega-auth-0.2.42.tgz",
13
+ "@pega/constellationjs": "file:pega-constellationjs-0.26.3-local.tgz",
14
+ "@pega/sdk-react": "file:pega-sdk-react-0.1.0.tgz",
15
+ "@pega/sdk-types": "file:pega-sdk-types-0.1.0.tgz",
16
+ "react": "^19.2.7",
17
+ "react-dom": "^19.2.7",
18
+ "react-router-dom": "^7.18.1"
19
+ },
20
+ "devDependencies": {
21
+ "@pega/pcore-pconnect-typedefs": "^4.1.0",
22
+ "@types/react": "^19.2.17",
23
+ "@types/react-dom": "^19.2.3",
24
+ "@vitejs/plugin-react": "^6.0.3",
25
+ "typescript": "~6.0.3",
26
+ "vite": "^8.1.4",
27
+ "vite-plugin-static-copy": "^4.1.1"
28
+ }
29
+ }
@@ -0,0 +1,17 @@
1
+ import type { PropsWithChildren } from 'react';
2
+ import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
3
+ import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
4
+ import { ThemeProvider, createTheme } from '@mui/material/styles';
5
+ import { ThemeProvider as LegacyThemeProvider } from '@mui/styles';
6
+
7
+ const muiTheme = createTheme();
8
+
9
+ export function AppProviders({ children }: PropsWithChildren) {
10
+ return (
11
+ <ThemeProvider theme={muiTheme}>
12
+ <LegacyThemeProvider theme={muiTheme}>
13
+ <LocalizationProvider dateAdapter={AdapterDayjs}>{children}</LocalizationProvider>
14
+ </LegacyThemeProvider>
15
+ </ThemeProvider>
16
+ );
17
+ }
@@ -15,13 +15,9 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
15
15
  // ── React adapter (includes sdk-core re-exports) ───────────────────────────────────────
16
16
  import { PConnectComponent, PegaStoreContext, registerComponentCreator } from '@pega/sdk-react';
17
17
 
18
- import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
19
- import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
20
- import { ThemeProvider, createTheme } from '@mui/material/styles';
21
- import { ThemeProvider as LegacyThemeProvider } from '@mui/styles';
22
-
23
18
  // ── Sample components (local to this app) ───────────────────────────────────────────────────────
24
19
  import { registerSampleComponents } from './components/component-map';
20
+ import { AppProviders } from './AppProviders';
25
21
 
26
22
  // ── @pega/auth for SDK config access ────────────────────────────────────────
27
23
  import { getSdkConfig } from '@pega/auth/lib/sdk-auth-manager';
@@ -76,25 +72,18 @@ const QUICK_LINKS = [
76
72
  },
77
73
  ];
78
74
 
79
- // ─── Root Component ─────────────────────────────────────────────────────────
80
- const muiTheme = createTheme();
81
-
82
75
  function RootComponent({ renderProps, registry }: { renderProps: Record<string, unknown>; registry: any }) {
83
76
  const contextValue = useMemo(() => ({ store: PCore.getStore() }), []);
84
77
  const getPConnect = renderProps.getPConnect as () => any;
85
78
 
86
79
  return (
87
- <ThemeProvider theme={muiTheme}>
88
- <LegacyThemeProvider theme={muiTheme}>
89
- <LocalizationProvider dateAdapter={AdapterDayjs}>
90
- <PegaStoreContext.Provider value={contextValue}>
91
- <div style={styles.root}>
92
- <PConnectComponent getPConnect={getPConnect} componentRegistry={registry} fallback={FallbackComponent} />
93
- </div>
94
- </PegaStoreContext.Provider>
95
- </LocalizationProvider>
96
- </LegacyThemeProvider>
97
- </ThemeProvider>
80
+ <AppProviders>
81
+ <PegaStoreContext.Provider value={contextValue}>
82
+ <div style={styles.root}>
83
+ <PConnectComponent getPConnect={getPConnect} componentRegistry={registry} fallback={FallbackComponent} />
84
+ </div>
85
+ </PegaStoreContext.Provider>
86
+ </AppProviders>
98
87
  );
99
88
  }
100
89
 
@@ -13,34 +13,23 @@ import { useLocation } from 'react-router-dom';
13
13
 
14
14
  import { PConnectComponent, PegaStoreContext, registerComponentCreator } from '@pega/sdk-react';
15
15
 
16
- import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
17
- import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
18
- import { ThemeProvider, createTheme } from '@mui/material/styles';
19
- import { ThemeProvider as LegacyThemeProvider } from '@mui/styles';
20
-
21
16
  import { registerSampleComponents } from './components/component-map';
17
+ import { AppProviders } from './AppProviders';
22
18
  import { getSdkConfig } from '@pega/auth/lib/sdk-auth-manager';
23
19
  import { AuthClient } from '@pega/auth';
24
20
 
25
21
  import { FallbackComponent } from './FallbackComponent';
26
22
 
27
- // ─── Root Component ─────────────────────────────────────────────────────────
28
- const muiTheme = createTheme();
29
-
30
23
  function RootComponent({ renderProps, registry }: { renderProps: Record<string, unknown>; registry: any }) {
31
24
  const contextValue = useMemo(() => ({ store: PCore.getStore() }), []);
32
25
  const getPConnect = renderProps.getPConnect as () => any;
33
26
 
34
27
  return (
35
- <ThemeProvider theme={muiTheme}>
36
- <LegacyThemeProvider theme={muiTheme}>
37
- <LocalizationProvider dateAdapter={AdapterDayjs}>
38
- <PegaStoreContext.Provider value={contextValue}>
39
- <PConnectComponent getPConnect={getPConnect} componentRegistry={registry} fallback={FallbackComponent} />
40
- </PegaStoreContext.Provider>
41
- </LocalizationProvider>
42
- </LegacyThemeProvider>
43
- </ThemeProvider>
28
+ <AppProviders>
29
+ <PegaStoreContext.Provider value={contextValue}>
30
+ <PConnectComponent getPConnect={getPConnect} componentRegistry={registry} fallback={FallbackComponent} />
31
+ </PegaStoreContext.Provider>
32
+ </AppProviders>
44
33
  );
45
34
  }
46
35
 
@@ -1,38 +0,0 @@
1
- <!-- Applies to: **/component-map.ts -->
2
-
3
- # Component Map Rules
4
-
5
- The component map (`src/components/component-map.ts`) is the registry that maps Pega component names to React implementations.
6
-
7
- ## Structure
8
-
9
- ```typescript
10
- import { sdkComponents } from '@pega/sdk-react';
11
-
12
- function getSampleComponentMap() {
13
- return {
14
- ...sdkComponents, // NEVER remove this — provides infrastructure
15
- // Your components below:
16
- TextInput,
17
- Dropdown,
18
- // ...
19
- };
20
- }
21
- ```
22
-
23
- ## Rules
24
-
25
- 1. **NEVER remove `...sdkComponents`** — it provides View, Region, Reference, RootContainer, FlowContainer, ViewContainer, Assignment, AssignmentCard, ErrorBoundary, MultiStep, CaseSummary, and their aliases.
26
-
27
- 2. **Map keys must match Pega component names exactly** — these are resolved at runtime by the platform. The key is what Pega sends; the value is your React component.
28
-
29
- 3. **To replace a component**: change its import path to your new implementation. Do NOT rename the key.
30
-
31
- 4. **To add a new component**: add the import + add a new key-value entry.
32
-
33
- 5. **Key naming exceptions** (where key differs from variable name):
34
- - `Date: DateField` (Date is reserved in JS)
35
- - `URL: URLComponent` (URL is a global)
36
- - `Todo: ToDo` (casing difference)
37
-
38
- 6. **Keep the `registerSampleComponents` function** — it registers all entries into the `ComponentRegistry` instance used by the PConnect bridge.