@pega/sdk 0.0.3 → 0.0.4

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 (346) hide show
  1. package/LICENSE +183 -183
  2. package/README.md +6 -6
  3. package/SECURITY.md +2 -1
  4. package/dist/index.js +12 -55
  5. package/package.json +7 -6
  6. package/templates/angular-sdk-reference/package.json +15 -15
  7. package/templates/angular-sdk-reference/tsconfig.json +2 -2
  8. package/templates/react-native-sdk-reference/App.tsx +2 -4
  9. package/templates/react-native-sdk-reference/package.json +6 -6
  10. package/templates/react-native-sdk-reference/tsconfig.json +2 -1
  11. package/templates/react-sdk-reference/.claude/instructions/component-map.md +1 -1
  12. package/templates/react-sdk-reference/.claude/instructions/field-component.md +4 -0
  13. package/templates/react-sdk-reference/.claude/instructions/template-component.md +2 -1
  14. package/templates/react-sdk-reference/.claude/instructions/widget-component.md +1 -0
  15. package/templates/react-sdk-reference/.claude/prompts/add-component.md +18 -10
  16. package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +165 -83
  17. package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +26 -17
  18. package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +27 -13
  19. package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +42 -28
  20. package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +48 -34
  21. package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +25 -11
  22. package/templates/react-sdk-reference/.claude/prompts/identify-components.md +65 -65
  23. package/templates/react-sdk-reference/.claude/skills/component-contracts.md +99 -99
  24. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +40 -38
  25. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +54 -51
  26. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +51 -46
  27. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +32 -28
  28. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +38 -35
  29. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +25 -23
  30. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +29 -26
  31. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Operator.md +32 -26
  32. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +17 -15
  33. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +85 -59
  34. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +49 -47
  35. package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +13 -11
  36. package/templates/react-sdk-reference/.claude/skills/field-components.md +9 -8
  37. package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +27 -26
  38. package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +30 -22
  39. package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +60 -43
  40. package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +23 -20
  41. package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +19 -17
  42. package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +18 -15
  43. package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +22 -21
  44. package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +50 -30
  45. package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +20 -18
  46. package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +21 -15
  47. package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +17 -16
  48. package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +30 -21
  49. package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +66 -42
  50. package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +27 -18
  51. package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +22 -21
  52. package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +36 -17
  53. package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +56 -35
  54. package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +23 -12
  55. package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +41 -31
  56. package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +70 -55
  57. package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +34 -27
  58. package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +24 -22
  59. package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +38 -22
  60. package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +24 -21
  61. package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +16 -15
  62. package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +16 -15
  63. package/templates/react-sdk-reference/.claude/skills/field-skills/UserReference.md +57 -34
  64. package/templates/react-sdk-reference/.claude/skills/run-and-verify.md +10 -8
  65. package/templates/react-sdk-reference/.claude/skills/template-components.md +7 -8
  66. package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +27 -21
  67. package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +17 -15
  68. package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +19 -16
  69. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +19 -13
  70. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +23 -17
  71. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +34 -29
  72. package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +18 -16
  73. package/templates/react-sdk-reference/.claude/skills/template-skills/DataReference.md +36 -32
  74. package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +23 -21
  75. package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +31 -29
  76. package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +19 -17
  77. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +22 -20
  78. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +19 -17
  79. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +19 -17
  80. package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +15 -10
  81. package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +19 -16
  82. package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +18 -15
  83. package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +17 -13
  84. package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +10 -13
  85. package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +9 -7
  86. package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +33 -30
  87. package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +13 -11
  88. package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +42 -40
  89. package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +25 -20
  90. package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +25 -19
  91. package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +36 -29
  92. package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +31 -27
  93. package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +29 -24
  94. package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +14 -11
  95. package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +34 -32
  96. package/templates/react-sdk-reference/.claude/skills/template-skills/WideNarrow.md +48 -46
  97. package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +23 -19
  98. package/templates/react-sdk-reference/.claude/skills/widget-components.md +11 -22
  99. package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +22 -20
  100. package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +33 -28
  101. package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +18 -15
  102. package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +43 -37
  103. package/templates/react-sdk-reference/.claude/skills/widget-skills/Followers.md +23 -19
  104. package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +20 -16
  105. package/templates/react-sdk-reference/.claude/skills/widget-skills/SummaryItem.md +26 -24
  106. package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +43 -35
  107. package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +165 -83
  108. package/templates/react-sdk-reference/.github/agents/implementation-expert.agent.md +135 -0
  109. package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +2 -2
  110. package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +1 -1
  111. package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +5 -1
  112. package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +3 -2
  113. package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +2 -1
  114. package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +58 -15
  115. package/templates/react-sdk-reference/.github/prompts/component-manifest.json +165 -83
  116. package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +322 -65
  117. package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +124 -50
  118. package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +145 -66
  119. package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +146 -73
  120. package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +128 -49
  121. package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +65 -65
  122. package/templates/react-sdk-reference/.github/skills/component-contracts.md +99 -99
  123. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/AlertBanner.md +40 -38
  124. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +54 -51
  125. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +51 -46
  126. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +32 -28
  127. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +38 -35
  128. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +25 -23
  129. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +29 -26
  130. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +32 -26
  131. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +17 -15
  132. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +85 -59
  133. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +49 -47
  134. package/templates/react-sdk-reference/.github/skills/design-system-extension.md +13 -11
  135. package/templates/react-sdk-reference/.github/skills/field-components.md +9 -8
  136. package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +27 -26
  137. package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +30 -22
  138. package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +60 -43
  139. package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +23 -20
  140. package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +19 -17
  141. package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +18 -15
  142. package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +22 -21
  143. package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +50 -30
  144. package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +20 -18
  145. package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +21 -15
  146. package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +17 -16
  147. package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +30 -21
  148. package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +66 -42
  149. package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +27 -18
  150. package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +22 -21
  151. package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +36 -17
  152. package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +56 -35
  153. package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +23 -12
  154. package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +41 -31
  155. package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +70 -55
  156. package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +34 -27
  157. package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +24 -22
  158. package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +38 -22
  159. package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +24 -21
  160. package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +16 -15
  161. package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +16 -15
  162. package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +57 -34
  163. package/templates/react-sdk-reference/.github/skills/run-and-verify.md +10 -8
  164. package/templates/react-sdk-reference/.github/skills/template-components.md +7 -8
  165. package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +27 -21
  166. package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +17 -15
  167. package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +19 -16
  168. package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +19 -13
  169. package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +23 -17
  170. package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +34 -29
  171. package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +18 -16
  172. package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +36 -32
  173. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +23 -21
  174. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +31 -29
  175. package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +19 -17
  176. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +22 -20
  177. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +19 -17
  178. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +19 -17
  179. package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +15 -10
  180. package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +19 -16
  181. package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +18 -15
  182. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +17 -13
  183. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +10 -13
  184. package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +9 -7
  185. package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +33 -30
  186. package/templates/react-sdk-reference/.github/skills/template-skills/MultiReferenceReadOnly.md +13 -11
  187. package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +42 -40
  188. package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +25 -20
  189. package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +25 -19
  190. package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +36 -29
  191. package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +31 -27
  192. package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +29 -24
  193. package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +14 -11
  194. package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +34 -32
  195. package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +48 -46
  196. package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +23 -19
  197. package/templates/react-sdk-reference/.github/skills/widget-components.md +11 -22
  198. package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +22 -20
  199. package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +33 -28
  200. package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +18 -15
  201. package/templates/react-sdk-reference/.github/skills/widget-skills/FileUtility.md +43 -37
  202. package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +23 -19
  203. package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +20 -16
  204. package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +26 -24
  205. package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +43 -35
  206. package/templates/react-sdk-reference/AGENTS.md +0 -1
  207. package/templates/react-sdk-reference/index.html +1 -4
  208. package/templates/react-sdk-reference/package.json +15 -15
  209. package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  210. package/templates/react-sdk-reference/src/AppSelector.tsx +6 -6
  211. package/templates/react-sdk-reference/src/FallbackComponent.tsx +2 -6
  212. package/templates/react-sdk-reference/src/MashupApp.styles.ts +269 -41
  213. package/templates/react-sdk-reference/src/MashupApp.tsx +186 -85
  214. package/templates/react-sdk-reference/src/PortalApp.tsx +10 -34
  215. package/templates/react-sdk-reference/src/components/component-map.ts +2 -7
  216. package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/AlertBanner.tsx +7 -28
  217. package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/Banner.tsx +12 -7
  218. package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +35 -33
  219. package/templates/react-sdk-reference/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx +6 -27
  220. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroup/FieldGroup.tsx +15 -11
  221. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx +7 -7
  222. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldValueList/FieldValueList.tsx +18 -12
  223. package/templates/react-sdk-reference/src/components/designSystemExtension/Operator/Operator.tsx +27 -25
  224. package/templates/react-sdk-reference/src/components/designSystemExtension/Pulse/Pulse.tsx +4 -4
  225. package/templates/react-sdk-reference/src/components/designSystemExtension/RichTextEditor/RichTextEditor.tsx +8 -40
  226. package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +9 -9
  227. package/templates/react-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +26 -20
  228. package/templates/react-sdk-reference/src/components/field/CancelAlert/CancelAlert.tsx +35 -17
  229. package/templates/react-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +27 -25
  230. package/templates/react-sdk-reference/src/components/field/Currency/Currency.tsx +10 -6
  231. package/templates/react-sdk-reference/src/components/field/Currency/currency-utils.ts +1 -1
  232. package/templates/react-sdk-reference/src/components/field/Date/Date.tsx +20 -7
  233. package/templates/react-sdk-reference/src/components/field/DateTime/DateTime.tsx +23 -8
  234. package/templates/react-sdk-reference/src/components/field/Decimal/Decimal.tsx +5 -5
  235. package/templates/react-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +45 -25
  236. package/templates/react-sdk-reference/src/components/field/Email/Email.tsx +8 -8
  237. package/templates/react-sdk-reference/src/components/field/Group/Group.tsx +1 -1
  238. package/templates/react-sdk-reference/src/components/field/Integer/Integer.tsx +5 -5
  239. package/templates/react-sdk-reference/src/components/field/Location/Location.tsx +21 -16
  240. package/templates/react-sdk-reference/src/components/field/Multiselect/Multiselect.tsx +42 -27
  241. package/templates/react-sdk-reference/src/components/field/Multiselect/utils.ts +43 -29
  242. package/templates/react-sdk-reference/src/components/field/ObjectReference/ObjectReference.tsx +53 -30
  243. package/templates/react-sdk-reference/src/components/field/ObjectReference/utils.ts +12 -11
  244. package/templates/react-sdk-reference/src/components/field/Percentage/Percentage.tsx +6 -6
  245. package/templates/react-sdk-reference/src/components/field/Phone/Phone.tsx +12 -12
  246. package/templates/react-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +38 -16
  247. package/templates/react-sdk-reference/src/components/field/RichText/RichText.tsx +17 -4
  248. package/templates/react-sdk-reference/src/components/field/ScalarList/ScalarList.tsx +5 -5
  249. package/templates/react-sdk-reference/src/components/field/SelectableCard/SelectableCard.tsx +31 -18
  250. package/templates/react-sdk-reference/src/components/field/SelectableCard/utils.tsx +28 -20
  251. package/templates/react-sdk-reference/src/components/field/SemanticLink/SemanticLink.tsx +28 -19
  252. package/templates/react-sdk-reference/src/components/field/SemanticLink/utils.ts +3 -1
  253. package/templates/react-sdk-reference/src/components/field/TextArea/TextArea.tsx +4 -4
  254. package/templates/react-sdk-reference/src/components/field/TextInput/TextInput.tsx +4 -4
  255. package/templates/react-sdk-reference/src/components/field/Time/Time.tsx +20 -7
  256. package/templates/react-sdk-reference/src/components/field/URL/URL.tsx +7 -7
  257. package/templates/react-sdk-reference/src/components/field/UserReference/UserReference.tsx +14 -14
  258. package/templates/react-sdk-reference/src/components/field/UserReference/UserReferenceUtils.ts +2 -2
  259. package/templates/react-sdk-reference/src/components/helpers/case-utils.tsx +5 -5
  260. package/templates/react-sdk-reference/src/components/helpers/data_page.ts +3 -3
  261. package/templates/react-sdk-reference/src/components/helpers/date-format-utils.ts +5 -5
  262. package/templates/react-sdk-reference/src/components/helpers/field-group-utils.ts +2 -7
  263. package/templates/react-sdk-reference/src/components/helpers/formatters/Boolean.ts +9 -3
  264. package/templates/react-sdk-reference/src/components/helpers/formatters/Currency.ts +18 -6
  265. package/templates/react-sdk-reference/src/components/helpers/formatters/CurrencyMap.ts +168 -168
  266. package/templates/react-sdk-reference/src/components/helpers/formatters/Date.ts +5 -5
  267. package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +8 -5
  268. package/templates/react-sdk-reference/src/components/helpers/instructions-utils.ts +2 -2
  269. package/templates/react-sdk-reference/src/components/helpers/simpleTableHelpers.ts +54 -30
  270. package/templates/react-sdk-reference/src/components/helpers/state-utils.tsx +5 -2
  271. package/templates/react-sdk-reference/src/components/helpers/template-utils.ts +5 -4
  272. package/templates/react-sdk-reference/src/components/helpers/utils.ts +3 -3
  273. package/templates/react-sdk-reference/src/components/helpers/versionHelpers.ts +3 -1
  274. package/templates/react-sdk-reference/src/components/index.ts +1 -4
  275. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/AdvancedSearch.tsx +18 -10
  276. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroup/persistUtils.ts +3 -3
  277. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +26 -90
  278. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/hooks.ts +8 -5
  279. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/utils.ts +8 -4
  280. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/TemplateContext.ts +1 -1
  281. package/templates/react-sdk-reference/src/components/template/AppShell/AppShell.tsx +28 -19
  282. package/templates/react-sdk-reference/src/components/template/BannerPage/BannerPage.tsx +2 -2
  283. package/templates/react-sdk-reference/src/components/template/CaseSummary/CaseSummary.tsx +5 -5
  284. package/templates/react-sdk-reference/src/components/template/CaseView/CaseView.tsx +35 -16
  285. package/templates/react-sdk-reference/src/components/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +10 -10
  286. package/templates/react-sdk-reference/src/components/template/Confirmation/Confirmation.tsx +12 -26
  287. package/templates/react-sdk-reference/src/components/template/DataReference/DataReference.tsx +41 -124
  288. package/templates/react-sdk-reference/src/components/template/DataReference/DataReferenceAdvancedSearchContext.ts +2 -2
  289. package/templates/react-sdk-reference/src/components/template/DataReference/SearchForm.tsx +18 -78
  290. package/templates/react-sdk-reference/src/components/template/DataReference/utils.ts +18 -12
  291. package/templates/react-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +4 -12
  292. package/templates/react-sdk-reference/src/components/template/DefaultForm/utils/index.ts +3 -3
  293. package/templates/react-sdk-reference/src/components/template/DefaultPage/DefaultPage.tsx +3 -3
  294. package/templates/react-sdk-reference/src/components/template/Details/Details/Details.tsx +6 -8
  295. package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +7 -14
  296. package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +7 -14
  297. package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/DynamicTabs.tsx +16 -8
  298. package/templates/react-sdk-reference/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +7 -4
  299. package/templates/react-sdk-reference/src/components/template/HierarchicalForm/HierarchicalForm.tsx +20 -5
  300. package/templates/react-sdk-reference/src/components/template/HierarchicalForm/hooks.ts +35 -77
  301. package/templates/react-sdk-reference/src/components/template/InlineDashboard/InlineDashboard.tsx +10 -10
  302. package/templates/react-sdk-reference/src/components/template/ListView/DefaultViewMeta.ts +31 -31
  303. package/templates/react-sdk-reference/src/components/template/ListView/ListView.tsx +173 -133
  304. package/templates/react-sdk-reference/src/components/template/ListView/hooks.ts +17 -10
  305. package/templates/react-sdk-reference/src/components/template/ListView/utils.ts +64 -51
  306. package/templates/react-sdk-reference/src/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +6 -6
  307. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/NarrowWide.tsx +6 -6
  308. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +8 -18
  309. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +3 -3
  310. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +7 -1
  311. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/OneColumn.tsx +3 -3
  312. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/OneColumnTab.tsx +1 -1
  313. package/templates/react-sdk-reference/src/components/template/PromotedFilters/PromotedFilters.tsx +13 -40
  314. package/templates/react-sdk-reference/src/components/template/SelfServiceCaseView/SelfServiceCaseView.tsx +19 -16
  315. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/SimpleTable.tsx +8 -7
  316. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +84 -203
  317. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +15 -5
  318. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.tsx +15 -29
  319. package/templates/react-sdk-reference/src/components/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +7 -7
  320. package/templates/react-sdk-reference/src/components/template/SubTabs/SubTabs.tsx +1 -1
  321. package/templates/react-sdk-reference/src/components/template/SubTabs/tabUtils.ts +13 -11
  322. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/TwoColumn.tsx +3 -3
  323. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +3 -3
  324. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/WideNarrow.tsx +6 -6
  325. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +13 -24
  326. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +3 -3
  327. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +7 -1
  328. package/templates/react-sdk-reference/src/components/template/WssNavBar/WssNavBar.tsx +25 -25
  329. package/templates/react-sdk-reference/src/components/template/utils.tsx +6 -6
  330. package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/AppAnnouncement.tsx +9 -9
  331. package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.tsx +125 -79
  332. package/templates/react-sdk-reference/src/components/widget/Attachment/AttachmentUtils.ts +58 -33
  333. package/templates/react-sdk-reference/src/components/widget/CaseHistory/CaseHistory.tsx +14 -12
  334. package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +19 -7
  335. package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/FileUtility.tsx +137 -107
  336. package/templates/react-sdk-reference/src/components/widget/Followers/Followers.tsx +4 -4
  337. package/templates/react-sdk-reference/src/components/widget/QuickCreate/QuickCreate.tsx +15 -11
  338. package/templates/react-sdk-reference/src/components/widget/SummaryItem/SummaryItem.tsx +25 -18
  339. package/templates/react-sdk-reference/src/components/widget/SummaryList/SummaryList.tsx +7 -2
  340. package/templates/react-sdk-reference/src/components/widget/ToDo/ToDo.tsx +30 -116
  341. package/templates/react-sdk-reference/src/main.tsx +1 -1
  342. package/templates/react-sdk-reference/tsconfig.json +2 -1
  343. package/templates/react-sdk-reference/vite.config.ts +51 -26
  344. package/templates/wc-sdk-reference/package.json +3 -3
  345. package/templates/wc-sdk-reference/src/index.ts +10 -10
  346. package/templates/wc-sdk-reference/tsconfig.json +1 -0
@@ -18,13 +18,13 @@ Provides the top navigation bar for WSS (Web Self-Service) portals. Responsive:
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `links` | `array` | Yes | Array of `{ label, url, id }` navigation link objects |
24
- | `navDisplayOptions` | `object` | No | `{ alignment: 'left'|'right'|'center', position: 'inline'|'below' }` |
25
- | `portalLogoUrl` | `string` | No | URL for the portal logo image |
26
- | `operatorInfo` | `object` | No | `{ displayName: string }` — for avatar initials |
27
- | `getPConnect` | `function` | Yes | PConnect getter |
21
+ | Prop | Type | Required | Description |
22
+ | ------------------- | ---------- | -------- | ----------------------------------------------------- |
23
+ | `links` | `array` | Yes | Array of `{ label, url, id }` navigation link objects |
24
+ | `navDisplayOptions` | `object` | No | `{ alignment: 'left' | 'right' | 'center', position: 'inline' | 'below' }` |
25
+ | `portalLogoUrl` | `string` | No | URL for the portal logo image |
26
+ | `operatorInfo` | `object` | No | `{ displayName: string }` — for avatar initials |
27
+ | `getPConnect` | `function` | Yes | PConnect getter |
28
28
 
29
29
  ## Behavioral Contract
30
30
 
@@ -38,12 +38,14 @@ Provides the top navigation bar for WSS (Web Self-Service) portals. Responsive:
38
38
  ### Navigation Position
39
39
 
40
40
  From `navDisplayOptions.position`:
41
+
41
42
  - `'inline'` — nav links appear in the same row as the logo.
42
43
  - `'below'` — nav links appear in a second row below the logo/title row.
43
44
 
44
45
  ### Navigation Alignment
45
46
 
46
47
  From `navDisplayOptions.alignment`:
48
+
47
49
  - `'left'` — links flush left.
48
50
  - `'right'` — links pushed to the right (flex with `ml: 'auto'`).
49
51
  - `'center'` — links centered.
@@ -87,14 +89,15 @@ From `navDisplayOptions.alignment`:
87
89
 
88
90
  ## Visual Specifications
89
91
 
90
- | Element | Mobile | Desktop |
91
- |---------|--------|---------|
92
- | Logo | Shown | Shown |
92
+ | Element | Mobile | Desktop |
93
+ | --------- | ----------------------- | --------------------- |
94
+ | Logo | Shown | Shown |
93
95
  | Nav links | Hidden (hamburger menu) | Shown inline or below |
94
- | Avatar | Shown | Shown |
95
- | Hamburger | Shown | Hidden |
96
+ | Avatar | Shown | Shown |
97
+ | Hamburger | Shown | Hidden |
96
98
 
97
99
  **CSS-only implementation notes:**
100
+
98
101
  - App bar: `background: var(--app-primary-color); color: white`.
99
102
  - Toolbar: `display: flex; align-items: center; gap: 1rem; padding: 0 1rem`.
100
103
  - Hamburger: `display: none`. At mobile breakpoint: `display: flex`.
@@ -121,15 +124,16 @@ From `navDisplayOptions.alignment`:
121
124
 
122
125
  Listed design systems are examples only.
123
126
 
124
- | Design System | App Bar | Avatar | Mobile Menu |
125
- |---|---|---|---|
126
- | Default (CSS only) | `<header>` + CSS | `<div class='avatar'>` | CSS hamburger + dropdown |
127
- | MUI | `<AppBar>` + `<Toolbar>` | `<Avatar>` | `<Drawer>` or `<Menu>` |
128
- | Ant Design | `<Layout.Header>` | `<Avatar>` | `<Drawer>` |
129
- | Chakra UI | `<Box as='header'>` | `<Avatar>` | `<Drawer>` |
130
- | Shadcn/ui | Custom `<header>` | Custom initials avatar | `<Sheet>` (drawer) |
127
+ | Design System | App Bar | Avatar | Mobile Menu |
128
+ | ------------------ | ------------------------ | ---------------------- | ------------------------ |
129
+ | Default (CSS only) | `<header>` + CSS | `<div class='avatar'>` | CSS hamburger + dropdown |
130
+ | MUI | `<AppBar>` + `<Toolbar>` | `<Avatar>` | `<Drawer>` or `<Menu>` |
131
+ | Ant Design | `<Layout.Header>` | `<Avatar>` | `<Drawer>` |
132
+ | Chakra UI | `<Box as='header'>` | `<Avatar>` | `<Drawer>` |
133
+ | Shadcn/ui | Custom `<header>` | Custom initials avatar | `<Sheet>` (drawer) |
131
134
 
132
135
  When implementing in a specific design system:
136
+
133
137
  - `logout` from `@pega/auth/lib/sdk-auth-manager` is mandatory — always call the SDK logout, not a custom one
134
138
  - Responsive breakpoints for hamburger/nav visibility must be implemented
135
139
  - `navDisplayOptions.alignment` and `.position` must be respected
@@ -123,6 +123,7 @@ The PCore data-fetching logic (all `PCore.*` calls) is always identical regardle
123
123
  **2. If the chosen design system is not listed** — use the component purpose description to identify the appropriate DS primitives (card, list, table, button, badge, etc.).
124
124
 
125
125
  **3. Discover the API from installed packages** — confirm component names and props from `.d.ts` before writing JSX:
126
+
126
127
  ```bash
127
128
  find node_modules/<ds-package> -name "*.d.ts" | xargs grep -l "Card\|List\|Table" | head -5
128
129
  grep -A 30 "interface.*Props" <path-to-file>
@@ -130,14 +131,14 @@ grep -A 30 "interface.*Props" <path-to-file>
130
131
 
131
132
  **4. Common widget UI primitive mapping:**
132
133
 
133
- | Widget pattern | Typical DS equivalent |
134
- |---|---|
135
- | Container with title | `Card` + header/title prop, or `Panel`, `Box` |
136
- | Item list | `List`, `UnorderedList`, or `Table` rows |
137
- | Loading indicator | `Spinner`, `Skeleton`, `Loading` |
138
- | Action button | `Button` with `onClick` |
139
- | Status badge | `Badge`, `Tag`, `Chip` |
140
- | Empty state | DS empty/placeholder component or plain `<div>` |
134
+ | Widget pattern | Typical DS equivalent |
135
+ | -------------------- | ----------------------------------------------- |
136
+ | Container with title | `Card` + header/title prop, or `Panel`, `Box` |
137
+ | Item list | `List`, `UnorderedList`, or `Table` rows |
138
+ | Loading indicator | `Spinner`, `Skeleton`, `Loading` |
139
+ | Action button | `Button` with `onClick` |
140
+ | Status badge | `Badge`, `Tag`, `Chip` |
141
+ | Empty state | DS empty/placeholder component or plain `<div>` |
141
142
 
142
143
  **5. Icons** — if the DS has a companion icon package, read its exports before using any icon name. Never guess icon names.
143
144
 
@@ -167,14 +168,7 @@ function createCase(caseType) {
167
168
 
168
169
  ```typescript
169
170
  // Fetch list data
170
- PCore.getDataPageUtils().getDataAsync(
171
- dataPageName,
172
- context,
173
- params,
174
- paging,
175
- query,
176
- options,
177
- );
171
+ PCore.getDataPageUtils().getDataAsync(dataPageName, context, params, paging, query, options);
178
172
 
179
173
  // Get page data (single record)
180
174
  PCore.getDataPageUtils().getPageDataAsync(dataPageName, context, params);
@@ -193,12 +187,7 @@ const caseName = pConn.getCaseInfo().getName();
193
187
 
194
188
  ```typescript
195
189
  PCore.getAttachmentUtils().prepareAttachmentData(value);
196
- PCore.getAttachmentUtils().uploadAttachment(
197
- file,
198
- onProgress,
199
- errorHandler,
200
- context,
201
- );
190
+ PCore.getAttachmentUtils().uploadAttachment(file, onProgress, errorHandler, context);
202
191
  PCore.getAttachmentUtils().downloadAttachment(attachmentID, context);
203
192
  ```
204
193
 
@@ -18,13 +18,13 @@ Renders an announcement card with a heading, description text, optional bullet l
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `header` | `string` | No | Announcement card title |
24
- | `description` | `string` | No | Announcement body text |
25
- | `datasource` | `object` | No | Data source object — `datasource.source` is an array of item objects |
26
- | `whatsnewlink` | `string` | No | URL for the "See what's new" button; if absent, button is not rendered |
27
- | `getPConnect` | `function` | Yes | PConnect getter |
21
+ | Prop | Type | Required | Description |
22
+ | -------------- | ---------- | -------- | ---------------------------------------------------------------------- |
23
+ | `header` | `string` | No | Announcement card title |
24
+ | `description` | `string` | No | Announcement body text |
25
+ | `datasource` | `object` | No | Data source object — `datasource.source` is an array of item objects |
26
+ | `whatsnewlink` | `string` | No | URL for the "See what's new" button; if absent, button is not rendered |
27
+ | `getPConnect` | `function` | Yes | PConnect getter |
28
28
 
29
29
  ## Behavioral Contract
30
30
 
@@ -37,14 +37,15 @@ Renders an announcement card with a heading, description text, optional bullet l
37
37
 
38
38
  ### Card Layout
39
39
 
40
- | Element | Position |
41
- |---------|----------|
42
- | Left accent border | 6px solid, primary light color |
43
- | Card header | `header` prop as title |
44
- | Card content | Description text + optional bullet list |
45
- | "See what's new" button | Below description / bullet list |
40
+ | Element | Position |
41
+ | ----------------------- | --------------------------------------- |
42
+ | Left accent border | 6px solid, primary light color |
43
+ | Card header | `header` prop as title |
44
+ | Card content | Description text + optional bullet list |
45
+ | "See what's new" button | Below description / bullet list |
46
46
 
47
47
  **CSS-only implementation notes:**
48
+
48
49
  - Card: `border-left: 6px solid var(--app-primary-light-color); border-radius: 4px; box-shadow: 0 1px 4px rgba(0,0,0,0.12)`.
49
50
  - Card header: `padding: 12px 16px; font-weight: 600`.
50
51
  - Card content: `padding: 0 16px 16px`.
@@ -68,15 +69,16 @@ Renders an announcement card with a heading, description text, optional bullet l
68
69
 
69
70
  Listed design systems are examples only.
70
71
 
71
- | Design System | Card | Bullet List | Button |
72
- |---|---|---|---|
73
- | Default (CSS only) | `<div>` with left border + box-shadow | `<ul>/<li>` | `<button>` opening new tab |
74
- | MUI | `<Card>` + `<CardHeader>` + `<CardContent>` | `<List>/<ListItem>` or `<ul>` | `<Button>` |
75
- | Ant Design | `<Card>` with `title` prop | `<ul>/<li>` | `<Button>` |
76
- | Chakra UI | `<Card>` + `<CardHeader>` + `<CardBody>` | `<UnorderedList>/<ListItem>` | `<Button>` |
77
- | Shadcn/ui | `<Card>` + `<CardHeader>` + `<CardContent>` | `<ul>/<li>` | `<Button>` |
72
+ | Design System | Card | Bullet List | Button |
73
+ | ------------------ | ------------------------------------------- | ----------------------------- | -------------------------- |
74
+ | Default (CSS only) | `<div>` with left border + box-shadow | `<ul>/<li>` | `<button>` opening new tab |
75
+ | MUI | `<Card>` + `<CardHeader>` + `<CardContent>` | `<List>/<ListItem>` or `<ul>` | `<Button>` |
76
+ | Ant Design | `<Card>` with `title` prop | `<ul>/<li>` | `<Button>` |
77
+ | Chakra UI | `<Card>` + `<CardHeader>` + `<CardBody>` | `<UnorderedList>/<ListItem>` | `<Button>` |
78
+ | Shadcn/ui | `<Card>` + `<CardHeader>` + `<CardContent>` | `<ul>/<li>` | `<Button>` |
78
79
 
79
80
  When implementing in a specific design system:
81
+
80
82
  - Left accent border is a key visual identifier — implement it via CSS or the design system's border utilities
81
83
  - "See what's new" must open in a new tab (`target='_blank'` + `rel='noopener noreferrer'`)
82
84
  - The widget is entirely prop-driven — no data fetching needed
@@ -18,20 +18,20 @@ Renders a file attachment control within a Pega form. Users can upload one or mu
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `value` | `any` | Yes | Attachment list or single attachment object (from Pega property) |
24
- | `allowMultiple` | `boolean \| string` | No | Whether multiple files can be attached. Default `false` |
25
- | `extensions` | `string` | No | Comma-separated list of allowed file extensions (e.g., `".pdf,.doc,.jpg"`) |
26
- | `editMode` | `string` | No | `"tableRows"` for inline table edit mode (special multi-attachment handling) |
27
- | `isTableFormatter` | `boolean` | No | Whether this widget is used inside a table formatter |
28
- | `label` | `string` | Yes (from PConnFieldProps) | Field label |
29
- | `required` | `boolean` | No | Whether a file is required |
30
- | `disabled` | `boolean` | No | Whether the control is disabled |
31
- | `displayMode` | `string` | No | `"DISPLAY_ONLY"` for read-only rendering |
32
- | `validatemessage` | `string` | No | Validation error message to display |
33
- | `helperText` | `string` | No | Helper text shown below the control |
34
- | `getPConnect` | `function` | Yes | PConnect getter |
21
+ | Prop | Type | Required | Description |
22
+ | ------------------ | ------------------- | -------------------------- | ---------------------------------------------------------------------------- |
23
+ | `value` | `any` | Yes | Attachment list or single attachment object (from Pega property) |
24
+ | `allowMultiple` | `boolean \| string` | No | Whether multiple files can be attached. Default `false` |
25
+ | `extensions` | `string` | No | Comma-separated list of allowed file extensions (e.g., `".pdf,.doc,.jpg"`) |
26
+ | `editMode` | `string` | No | `"tableRows"` for inline table edit mode (special multi-attachment handling) |
27
+ | `isTableFormatter` | `boolean` | No | Whether this widget is used inside a table formatter |
28
+ | `label` | `string` | Yes (from PConnFieldProps) | Field label |
29
+ | `required` | `boolean` | No | Whether a file is required |
30
+ | `disabled` | `boolean` | No | Whether the control is disabled |
31
+ | `displayMode` | `string` | No | `"DISPLAY_ONLY"` for read-only rendering |
32
+ | `validatemessage` | `string` | No | Validation error message to display |
33
+ | `helperText` | `string` | No | Helper text shown below the control |
34
+ | `getPConnect` | `function` | Yes | PConnect getter |
35
35
 
36
36
  ## Behavioral Contract
37
37
 
@@ -40,11 +40,13 @@ Renders a file attachment control within a Pega form. Users can upload one or mu
40
40
  Pega has two attachment data formats — detect which one is in use:
41
41
 
42
42
  **Old format (annotation-based):**
43
+
43
44
  ```typescript
44
45
  value = { pxResults: [...], pyAttachCount: N }
45
46
  ```
46
47
 
47
48
  **New standard format:**
49
+
48
50
  ```typescript
49
51
  value = [{ ID, name, mimeType, category, ... }] // array
50
52
  ```
@@ -54,6 +56,7 @@ Call `PCore.getAttachmentUtils().prepareAttachmentData(value)` to normalize both
54
56
  ### File Validation
55
57
 
56
58
  On file selection (via `<input type='file'>`):
59
+
57
60
  1. **Extension check:** Compare selected file's extension against `extensions` prop (split by comma). If not allowed, add an error to the file and do not upload.
58
61
  2. **Size check:** Compare file size against `PCore.getEnvironmentInfo().getMaxAttachmentSize()` (in bytes). If too large, add a size error.
59
62
  3. Valid files proceed to upload.
@@ -89,15 +92,16 @@ Compressed display for use inside a table cell. Show attachment count and a smal
89
92
 
90
93
  ## Visual Specifications
91
94
 
92
- | Element | Description |
93
- |---------|-------------|
94
- | Label | Standard field label above the control |
95
- | Drop zone / Upload button | Clickable area to select files; optionally supports drag-and-drop |
96
- | File list | Each uploaded file: icon + name + size + progress bar (during upload) + delete button |
97
- | Error state | Red error text below the control for invalid files or upload failures |
98
- | Helper text | Secondary text below the control |
95
+ | Element | Description |
96
+ | ------------------------- | ------------------------------------------------------------------------------------- |
97
+ | Label | Standard field label above the control |
98
+ | Drop zone / Upload button | Clickable area to select files; optionally supports drag-and-drop |
99
+ | File list | Each uploaded file: icon + name + size + progress bar (during upload) + delete button |
100
+ | Error state | Red error text below the control for invalid files or upload failures |
101
+ | Helper text | Secondary text below the control |
99
102
 
100
103
  **CSS-only implementation notes:**
104
+
101
105
  - Drop zone: `border: 2px dashed var(--border-color); border-radius: 4px; padding: 1rem; text-align: center; cursor: pointer`.
102
106
  - Drop zone hover: `border-color: var(--app-primary-color); background: var(--hover-bg)`.
103
107
  - File row: `display: flex; align-items: center; gap: 0.5rem; padding: 4px 0`.
@@ -131,15 +135,16 @@ Compressed display for use inside a table cell. Show attachment count and a smal
131
135
 
132
136
  Listed design systems are examples only.
133
137
 
134
- | Design System | File Input | Progress | File List |
135
- |---|---|---|---|
136
- | Default (CSS only) | `<input type='file'>` + custom styled drop zone | `<progress>` element or CSS bar | `<ul>/<li>` rows |
137
- | MUI | Custom styled `<Box>` drop zone + hidden `<input>` | `<LinearProgress>` | `<List>/<ListItem>` |
138
- | Ant Design | `<Upload dragger>` | `<Progress>` | Built-in upload file list |
139
- | Chakra UI | Custom `<Box>` with `useDropzone` | `<Progress>` | `<VStack>` rows |
140
- | Shadcn/ui | Custom drop zone | Custom CSS progress bar | `<ul>/<li>` rows |
138
+ | Design System | File Input | Progress | File List |
139
+ | ------------------ | -------------------------------------------------- | ------------------------------- | ------------------------- |
140
+ | Default (CSS only) | `<input type='file'>` + custom styled drop zone | `<progress>` element or CSS bar | `<ul>/<li>` rows |
141
+ | MUI | Custom styled `<Box>` drop zone + hidden `<input>` | `<LinearProgress>` | `<List>/<ListItem>` |
142
+ | Ant Design | `<Upload dragger>` | `<Progress>` | Built-in upload file list |
143
+ | Chakra UI | Custom `<Box>` with `useDropzone` | `<Progress>` | `<VStack>` rows |
144
+ | Shadcn/ui | Custom drop zone | Custom CSS progress bar | `<ul>/<li>` rows |
141
145
 
142
146
  When implementing in a specific design system:
147
+
143
148
  - Action sequencer blocking (`addAction`/`removeAction`) is mandatory — do not skip it; form submission must be blocked during uploads
144
149
  - Detect and normalize both old and new attachment formats via `prepareAttachmentData`
145
150
  - `allowMultiple` coercion (string vs boolean) is required
@@ -18,9 +18,9 @@ Renders a table of case events sourced from the `D_pyWorkHistory` data page. Sho
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `getPConnect` | `function` | Yes | PConnect getter — used to resolve case ID and context |
21
+ | Prop | Type | Required | Description |
22
+ | ------------- | ---------- | -------- | ----------------------------------------------------- |
23
+ | `getPConnect` | `function` | Yes | PConnect getter — used to resolve case ID and context |
24
24
 
25
25
  No additional custom props. All data is fetched internally.
26
26
 
@@ -50,6 +50,7 @@ Use `fast-deep-equal/react` to compare new `historyData` with previous value —
50
50
  ### Data Transformation
51
51
 
52
52
  For each history row, map:
53
+
53
54
  - **Date column:** Format `pyUpdatedDateTime` using the SDK date formatter (e.g., `formatDateTime(row.pyUpdatedDateTime)`) or display as-is.
54
55
  - **Description column:** `row.pyMessageKey` — the localized event description string.
55
56
  - **Performer column:** `row.pyPerformer` — the operator who performed the action.
@@ -59,13 +60,14 @@ For each history row, map:
59
60
 
60
61
  ### Table Layout
61
62
 
62
- | Column | Field | Width |
63
- |--------|-------|-------|
64
- | Date | `pyUpdatedDateTime` (formatted) | ~25% |
65
- | Description | `pyMessageKey` | ~50% |
66
- | Performer | `pyPerformer` | ~25% |
63
+ | Column | Field | Width |
64
+ | ----------- | ------------------------------- | ----- |
65
+ | Date | `pyUpdatedDateTime` (formatted) | ~25% |
66
+ | Description | `pyMessageKey` | ~50% |
67
+ | Performer | `pyPerformer` | ~25% |
67
68
 
68
69
  **CSS-only implementation notes:**
70
+
69
71
  - Table container: `width: 100%; overflow-x: auto`.
70
72
  - Table: `border-collapse: collapse; width: 100%`.
71
73
  - Header cells: `background: var(--table-header-bg); font-weight: 600; padding: 8px 12px; border-bottom: 2px solid var(--divider-color)`.
@@ -93,15 +95,16 @@ For each history row, map:
93
95
 
94
96
  Listed design systems are examples only.
95
97
 
96
- | Design System | Table |
97
- |---|---|
98
- | Default (CSS only) | `<table>/<thead>/<tbody>/<tr>/<td>` |
99
- | MUI | `<TableContainer>` + `<Table>` + `<TableHead>/<TableBody>/<TableRow>/<TableCell>` |
100
- | Ant Design | `<Table dataSource={historyData} columns={...}>` |
101
- | Chakra UI | `<Table>` + `<Thead>/<Tbody>/<Tr>/<Th>/<Td>` |
102
- | Shadcn/ui | `<Table>` + `<TableHeader>/<TableBody>/<TableRow>/<TableHead>/<TableCell>` |
98
+ | Design System | Table |
99
+ | ------------------ | --------------------------------------------------------------------------------- |
100
+ | Default (CSS only) | `<table>/<thead>/<tbody>/<tr>/<td>` |
101
+ | MUI | `<TableContainer>` + `<Table>` + `<TableHead>/<TableBody>/<TableRow>/<TableCell>` |
102
+ | Ant Design | `<Table dataSource={historyData} columns={...}>` |
103
+ | Chakra UI | `<Table>` + `<Thead>/<Tbody>/<Tr>/<Th>/<Td>` |
104
+ | Shadcn/ui | `<Table>` + `<TableHeader>/<TableBody>/<TableRow>/<TableHead>/<TableCell>` |
103
105
 
104
106
  When implementing in a specific design system:
107
+
105
108
  - `fast-deep-equal` comparison is a performance optimization — include it to avoid redundant renders on re-subscription
106
109
  - Data page name `D_pyWorkHistory` is fixed — do not make it configurable
107
110
  - Missing field fallback `"---"` should be consistent across all three columns
@@ -18,19 +18,21 @@ The primary attachments management panel in the case utilities column. Shows up
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `caseId` | `string` | No | Optional case ID override. If absent, resolved from `pConn.getCaseInfo().getID()` |
24
- | `getPConnect` | `function` | Yes | PConnect getter |
21
+ | Prop | Type | Required | Description |
22
+ | ------------- | ---------- | -------- | --------------------------------------------------------------------------------- |
23
+ | `caseId` | `string` | No | Optional case ID override. If absent, resolved from `pConn.getCaseInfo().getID()` |
24
+ | `getPConnect` | `function` | Yes | PConnect getter |
25
25
 
26
26
  ## Behavioral Contract
27
27
 
28
28
  ### Attachment Fetch
29
29
 
30
30
  On mount and on attachment change events:
31
+
31
32
  ```
32
33
  PCore.getAttachmentUtils().getCaseAttachments(caseKey, context)
33
34
  ```
35
+
34
36
  Returns array of attachment/link objects. Store in `attachments` state.
35
37
 
36
38
  Debounced auto-refresh: on `CASE_ATTACHMENTS_UPDATED` pub-sub event, wait 1000ms (debounced) then re-fetch. This prevents rapid re-fetches when multiple files are uploaded simultaneously.
@@ -42,6 +44,7 @@ Show only the first 3 items from `attachments`. If `attachments.length > 3`, sho
42
44
  ### SummaryList Integration
43
45
 
44
46
  Map each attachment/link to a `SummaryItem`-compatible object:
47
+
45
48
  ```typescript
46
49
  {
47
50
  id: attachment.ID,
@@ -89,6 +92,7 @@ Call `PCore.getAttachmentUtils().deleteAttachment(attachmentID, context)`. Refre
89
92
  ### Actions Menu
90
93
 
91
94
  Render a `<MoreVertIcon>` `<IconButton>` that opens a `<Menu>` with:
95
+
92
96
  - `"Add file"` — opens add-file modal
93
97
  - `"Add link"` — opens add-link modal
94
98
 
@@ -96,39 +100,40 @@ Render a `<MoreVertIcon>` `<IconButton>` that opens a `<Menu>` with:
96
100
 
97
101
  ### Main Card
98
102
 
99
- | Element | Description |
100
- |---------|-------------|
101
- | Card header | `"Attachments"` (or localized) + count badge |
102
- | Actions icon | `<MoreVertIcon>` button top-right |
103
- | Attachment rows | Up to 3 `SummaryItem` cards |
104
- | "View all" button | Text button, shown when > 3 attachments |
103
+ | Element | Description |
104
+ | ----------------- | -------------------------------------------- |
105
+ | Card header | `"Attachments"` (or localized) + count badge |
106
+ | Actions icon | `<MoreVertIcon>` button top-right |
107
+ | Attachment rows | Up to 3 `SummaryItem` cards |
108
+ | "View all" button | Text button, shown when > 3 attachments |
105
109
 
106
110
  ### "View all" Modal
107
111
 
108
- | Element | Description |
109
- |---------|-------------|
110
- | Modal header | `"All attachments (N)"` |
112
+ | Element | Description |
113
+ | --------------- | -------------------------- |
114
+ | Modal header | `"All attachments (N)"` |
111
115
  | Attachment rows | All items in `SummaryList` |
112
- | Close button | `X` in modal header |
116
+ | Close button | `X` in modal header |
113
117
 
114
118
  ### Add File Modal
115
119
 
116
- | Element | Description |
117
- |---------|-------------|
118
- | File picker | `<input type='file'>` |
119
- | Progress bar | Per-file upload progress |
120
+ | Element | Description |
121
+ | -------------- | -------------------------------------------- |
122
+ | File picker | `<input type='file'>` |
123
+ | Progress bar | Per-file upload progress |
120
124
  | Action buttons | `ActionButtonsForFileUtil` (Cancel + Attach) |
121
125
 
122
126
  ### Add Link Modal
123
127
 
124
- | Element | Description |
125
- |---------|-------------|
126
- | Title field | `<TextField label='Title'>` — required |
127
- | URL field | `<TextField label='URL'>` — required |
128
- | Attach button | Enabled only when both fields are filled |
128
+ | Element | Description |
129
+ | -------------- | -------------------------------------------- |
130
+ | Title field | `<TextField label='Title'>` — required |
131
+ | URL field | `<TextField label='URL'>` — required |
132
+ | Attach button | Enabled only when both fields are filled |
129
133
  | Action buttons | `ActionButtonsForFileUtil` (Cancel + Attach) |
130
134
 
131
135
  **CSS-only implementation notes:**
136
+
132
137
  - Main card: standard card styles.
133
138
  - Modal: `position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; border-radius: 8px; box-shadow: 0 4px 24px rgba(0,0,0,0.2); min-width: 480px; padding: 1.5rem`.
134
139
  - "View all" button: text style, `color: var(--app-primary-color); cursor: pointer`.
@@ -142,13 +147,13 @@ A simple button row component used inside the FileUtility modals to render Cance
142
147
 
143
148
  ### Props
144
149
 
145
- | Prop | Type | Required | Description |
146
- |------|------|----------|-------------|
147
- | `arMainButtons` | `any[]` | Yes | Primary button definitions `[{ actionID, name }]` |
148
- | `arSecondaryButtons` | `any[]` | Yes | Secondary (cancel) button definitions `[{ actionID, name }]` |
149
- | `primaryAction` | `function` | Yes | Callback invoked when the primary button is clicked |
150
- | `secondaryAction` | `function` | Yes | Callback invoked when the secondary/cancel button is clicked |
151
- | `getPConnect` | `function` | Yes | PConnect getter |
150
+ | Prop | Type | Required | Description |
151
+ | -------------------- | ---------- | -------- | ------------------------------------------------------------ |
152
+ | `arMainButtons` | `any[]` | Yes | Primary button definitions `[{ actionID, name }]` |
153
+ | `arSecondaryButtons` | `any[]` | Yes | Secondary (cancel) button definitions `[{ actionID, name }]` |
154
+ | `primaryAction` | `function` | Yes | Callback invoked when the primary button is clicked |
155
+ | `secondaryAction` | `function` | Yes | Callback invoked when the secondary/cancel button is clicked |
156
+ | `getPConnect` | `function` | Yes | PConnect getter |
152
157
 
153
158
  ### Layout
154
159
 
@@ -186,15 +191,16 @@ A simple button row component used inside the FileUtility modals to render Cance
186
191
 
187
192
  Listed design systems are examples only.
188
193
 
189
- | Design System | Card | Action Menu | Modal | Progress |
190
- |---|---|---|---|---|
191
- | Default (CSS only) | `<div>` card | `<button>` + custom dropdown | `<dialog>` | CSS progress bar |
192
- | MUI | `<Card>` | `<IconButton>` + `<Menu>/<MenuItem>` | `<Dialog>` | `<CircularProgress>` or `<LinearProgress>` |
193
- | Ant Design | `<Card>` | `<Dropdown menu={{ items }}>` | `<Modal>` | `<Progress>` |
194
- | Chakra UI | `<Card>` | `<Menu>/<MenuButton>/<MenuList>` | `<Modal>` | `<Progress>` |
195
- | Shadcn/ui | `<Card>` | `<DropdownMenu>` | `<Dialog>` | Custom progress bar |
194
+ | Design System | Card | Action Menu | Modal | Progress |
195
+ | ------------------ | ------------ | ------------------------------------ | ---------- | ------------------------------------------ |
196
+ | Default (CSS only) | `<div>` card | `<button>` + custom dropdown | `<dialog>` | CSS progress bar |
197
+ | MUI | `<Card>` | `<IconButton>` + `<Menu>/<MenuItem>` | `<Dialog>` | `<CircularProgress>` or `<LinearProgress>` |
198
+ | Ant Design | `<Card>` | `<Dropdown menu={{ items }}>` | `<Modal>` | `<Progress>` |
199
+ | Chakra UI | `<Card>` | `<Menu>/<MenuButton>/<MenuList>` | `<Modal>` | `<Progress>` |
200
+ | Shadcn/ui | `<Card>` | `<DropdownMenu>` | `<Dialog>` | Custom progress bar |
196
201
 
197
202
  When implementing in a specific design system:
203
+
198
204
  - Debounced refresh (1000ms) after pub-sub attachment events is required — prevents excessive API calls
199
205
  - `linkAttachmentsToCase` must be called after upload — uploading alone does not attach to the case
200
206
  - `ActionButtonsForFileUtil` receives button definition arrays — render them generically from `arMainButtons`/`arSecondaryButtons`
@@ -18,11 +18,12 @@ Intended to display the list of operators following a case, allowing users to fo
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `getPConnect` | `function` | Yes | PConnect getter |
21
+ | Prop | Type | Required | Description |
22
+ | ------------- | ---------- | -------- | --------------- |
23
+ | `getPConnect` | `function` | Yes | PConnect getter |
24
24
 
25
25
  No additional custom props in the current stub implementation. A full implementation would likely include:
26
+
26
27
  - `datasource` — data page name for follower list
27
28
  - `headerText` — widget title (e.g., `"Followers"`)
28
29
 
@@ -47,24 +48,26 @@ No additional custom props in the current stub implementation. A full implementa
47
48
 
48
49
  ### Stub Rendering
49
50
 
50
- | Element | Value |
51
- |---------|-------|
52
- | Card title | `"Followers"` |
53
- | Card body | `"Followers - unsupported"` plain text |
51
+ | Element | Value |
52
+ | ---------- | -------------------------------------- |
53
+ | Card title | `"Followers"` |
54
+ | Card body | `"Followers - unsupported"` plain text |
54
55
 
55
56
  ### Expected Full Rendering
56
57
 
57
- | Element | Description |
58
- |---------|-------------|
59
- | Card header | `"Followers"` + count badge |
60
- | Follower avatars | Row of avatar initials circles |
61
- | Follow button | Toggle button `"Follow"` / `"Unfollow"` |
58
+ | Element | Description |
59
+ | ---------------- | --------------------------------------- |
60
+ | Card header | `"Followers"` + count badge |
61
+ | Follower avatars | Row of avatar initials circles |
62
+ | Follow button | Toggle button `"Follow"` / `"Unfollow"` |
62
63
 
63
64
  **CSS-only implementation notes (stub):**
65
+
64
66
  - Card: standard card layout — `border-radius: 4px; box-shadow: 0 1px 4px rgba(0,0,0,0.12); padding: 1rem`.
65
67
  - Unsupported message: `color: var(--secondary-text-color); font-size: 0.875rem`.
66
68
 
67
69
  **CSS-only implementation notes (full):**
70
+
68
71
  - Avatar row: `display: flex; flex-wrap: wrap; gap: 4px`.
69
72
  - Avatar circle: `width: 32px; height: 32px; border-radius: 50%; background: var(--avatar-bg); display: flex; align-items: center; justify-content: center; font-size: 0.75rem; font-weight: 600`.
70
73
 
@@ -85,15 +88,16 @@ No additional custom props in the current stub implementation. A full implementa
85
88
 
86
89
  Listed design systems are examples only.
87
90
 
88
- | Design System | Card | Avatar | Toggle Button |
89
- |---|---|---|---|
90
- | Default (CSS only) | `<div>` with border | CSS circle with initials | `<button>` |
91
- | MUI | `<Card>` + `<Avatar>` | `<Avatar>` | `<Button>` variant toggle |
92
- | Ant Design | `<Card>` | `<Avatar>` | `<Button>` |
93
- | Chakra UI | `<Card>` | `<Avatar>` | `<Button>` |
94
- | Shadcn/ui | `<Card>` | Custom avatar | `<Button>` |
91
+ | Design System | Card | Avatar | Toggle Button |
92
+ | ------------------ | --------------------- | ------------------------ | ------------------------- |
93
+ | Default (CSS only) | `<div>` with border | CSS circle with initials | `<button>` |
94
+ | MUI | `<Card>` + `<Avatar>` | `<Avatar>` | `<Button>` variant toggle |
95
+ | Ant Design | `<Card>` | `<Avatar>` | `<Button>` |
96
+ | Chakra UI | `<Card>` | `<Avatar>` | `<Button>` |
97
+ | Shadcn/ui | `<Card>` | Custom avatar | `<Button>` |
95
98
 
96
99
  When implementing in a specific design system:
100
+
97
101
  - The current stub only needs a card with a message — implement the full behavior once the Pega backend supports it
98
102
  - Follow/unfollow must be scoped to the current case (`caseKey` from `pConn.getCaseInfo().getKey()`)
99
103
  - Follower count badge in the card header improves scannability