@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
@@ -29,15 +29,15 @@ interface TextContentProps extends PConnProps {
29
29
  }
30
30
  ```
31
31
 
32
- | Prop | Type | Description |
33
- |------|------|-------------|
34
- | `content` | `string` | The text string to render |
32
+ | Prop | Type | Description |
33
+ | ----------- | ------------------------------------------------------------------------- | ------------------------------------------------- |
34
+ | `content` | `string` | The text string to render |
35
35
  | `displayAs` | `'Paragraph' \| 'Heading 1' \| 'Heading 2' \| 'Heading 3' \| 'Heading 4'` | How to render the text — maps to typography level |
36
36
 
37
37
  ## Behavioral Contract
38
38
 
39
39
  1. **No state, no effects** — purely presentational. Render `content` using the appropriate typography element for `displayAs`.
40
- 2. **Mapping:**
40
+ 2. **Mapping:**
41
41
  - `'Paragraph'` → `<p>` / body text
42
42
  - `'Heading 1'` → `<h1>`
43
43
  - `'Heading 2'` → `<h2>`
@@ -57,23 +57,39 @@ Always read-only — there is no editable state.
57
57
 
58
58
  Derived from standard HTML typography:
59
59
 
60
- | `displayAs` | Element | Font size | Font weight |
61
- |-------------|---------|-----------|-------------|
62
- | `Paragraph` | `<p>` / `body1` | 1rem (16px) | 400 |
63
- | `Heading 1` | `<h1>` | 2.5rem | 300 |
64
- | `Heading 2` | `<h2>` | 2rem | 300 |
65
- | `Heading 3` | `<h3>` | 1.75rem | 400 |
66
- | `Heading 4` | `<h4>` | 1.5rem | 400 |
60
+ | `displayAs` | Element | Font size | Font weight |
61
+ | ----------- | --------------- | ----------- | ----------- |
62
+ | `Paragraph` | `<p>` / `body1` | 1rem (16px) | 400 |
63
+ | `Heading 1` | `<h1>` | 2.5rem | 300 |
64
+ | `Heading 2` | `<h2>` | 2rem | 300 |
65
+ | `Heading 3` | `<h3>` | 1.75rem | 400 |
66
+ | `Heading 4` | `<h4>` | 1.5rem | 400 |
67
67
 
68
68
  Color inherits from the surrounding text color. No padding, margin, border, or background beyond what the browser/design-system applies to the heading element.
69
69
 
70
70
  **CSS-only implementation notes:**
71
+
71
72
  ```css
72
- .text-content-h1 { font-size: 2.5rem; font-weight: 300; }
73
- .text-content-h2 { font-size: 2rem; font-weight: 300; }
74
- .text-content-h3 { font-size: 1.75rem; font-weight: 400; }
75
- .text-content-h4 { font-size: 1.5rem; font-weight: 400; }
76
- .text-content-body { font-size: 1rem; font-weight: 400; }
73
+ .text-content-h1 {
74
+ font-size: 2.5rem;
75
+ font-weight: 300;
76
+ }
77
+ .text-content-h2 {
78
+ font-size: 2rem;
79
+ font-weight: 300;
80
+ }
81
+ .text-content-h3 {
82
+ font-size: 1.75rem;
83
+ font-weight: 400;
84
+ }
85
+ .text-content-h4 {
86
+ font-size: 1.5rem;
87
+ font-weight: 400;
88
+ }
89
+ .text-content-body {
90
+ font-size: 1rem;
91
+ font-weight: 400;
92
+ }
77
93
  ```
78
94
 
79
95
  ## Edge Cases & Special Logic
@@ -93,9 +109,9 @@ Color inherits from the surrounding text color. No padding, margin, border, or b
93
109
 
94
110
  Listed design systems are examples only.
95
111
 
96
- | Design System | Recommended Component |
97
- |---|---|
98
- | Default (CSS only) | Native `<h1>`–`<h4>` or `<p>` |
99
- | MUI | `<Typography variant='h1' \| 'h2' \| 'h3' \| 'h4' \| 'body1'>` |
100
- | Ant Design | `<Typography.Title level={1-4}>` or `<Typography.Text>` |
101
- | Chakra UI | `<Heading as='h1'-'h4'>` or `<Text>` |
112
+ | Design System | Recommended Component |
113
+ | ------------------ | -------------------------------------------------------------- |
114
+ | Default (CSS only) | Native `<h1>`–`<h4>` or `<p>` |
115
+ | MUI | `<Typography variant='h1' \| 'h2' \| 'h3' \| 'h4' \| 'body1'>` |
116
+ | Ant Design | `<Typography.Title level={1-4}>` or `<Typography.Text>` |
117
+ | Chakra UI | `<Heading as='h1'-'h4'>` or `<Text>` |
@@ -18,11 +18,12 @@ Renders a single-line editable text field. It is the simplest and most foundatio
18
18
 
19
19
  ## Props (component-specific)
20
20
 
21
- | Prop | Type | Description |
22
- |------|------|-------------|
21
+ | Prop | Type | Description |
22
+ | --------------- | ---------------- | ------------------------------------------------------- |
23
23
  | `fieldMetadata` | `any` (optional) | Metadata object; used to read `maxLength` for the input |
24
24
 
25
25
  All other props come from `PConnFieldProps`. Import type as:
26
+
26
27
  ```typescript
27
28
  import type { PConnFieldProps } from '@pega/sdk-react';
28
29
  ```
@@ -52,20 +53,21 @@ Set the `readOnly` attribute on the underlying input element. Use a visually fla
52
53
 
53
54
  Derived from the reference component's MUI props and styles:
54
55
 
55
- | Property | Standard (editable) | Read-only |
56
- |----------|---------------------|-----------|
57
- | Width | 100% of container | 100% of container |
58
- | Height / size | Small (`height ~40px`) | Small |
59
- | Border | 1px solid (outlined) | None (standard variant) |
60
- | Border radius | 4px | — |
61
- | Label | Floating label (above input when focused/filled) | Floating label |
62
- | Helper text | Shown below input | Shown below input |
63
- | Error state | Red border + red helper text | — |
64
- | Disabled | Reduced opacity (~0.38), not-allowed cursor | — |
65
- | Padding (input) | 8px 14px | — |
66
- | Font size | 0.875rem (14px) | 0.875rem |
56
+ | Property | Standard (editable) | Read-only |
57
+ | --------------- | ------------------------------------------------ | ----------------------- |
58
+ | Width | 100% of container | 100% of container |
59
+ | Height / size | Small (`height ~40px`) | Small |
60
+ | Border | 1px solid (outlined) | None (standard variant) |
61
+ | Border radius | 4px | — |
62
+ | Label | Floating label (above input when focused/filled) | Floating label |
63
+ | Helper text | Shown below input | Shown below input |
64
+ | Error state | Red border + red helper text | — |
65
+ | Disabled | Reduced opacity (~0.38), not-allowed cursor | — |
66
+ | Padding (input) | 8px 14px | — |
67
+ | Font size | 0.875rem (14px) | 0.875rem |
67
68
 
68
69
  **CSS-only implementation notes:**
70
+
69
71
  - Floating label: use `<label>` positioned absolutely, translate upward on `:focus-within` or when input has value.
70
72
  - Error state: add `.error` class → border-color: `#d32f2f`; helper text color: `#d32f2f`.
71
73
  - Outlined box shadow on focus: `0 0 0 2px rgba(25, 118, 210, 0.2)`.
@@ -88,15 +90,16 @@ Derived from the reference component's MUI props and styles:
88
90
 
89
91
  Listed design systems are examples only.
90
92
 
91
- | Design System | Recommended Component |
92
- |---|---|
93
- | Default (CSS only) | `<input type="text">` with floating label pattern |
94
- | MUI | `<TextField variant='outlined' size='small' fullWidth />` |
95
- | Ant Design | `<Input />` |
96
- | Chakra UI | `<Input />` |
97
- | Shadcn/ui | `<Input />` |
93
+ | Design System | Recommended Component |
94
+ | ------------------ | --------------------------------------------------------- |
95
+ | Default (CSS only) | `<input type="text">` with floating label pattern |
96
+ | MUI | `<TextField variant='outlined' size='small' fullWidth />` |
97
+ | Ant Design | `<Input />` |
98
+ | Chakra UI | `<Input />` |
99
+ | Shadcn/ui | `<Input />` |
98
100
 
99
101
  When implementing in a specific design system, map the following behaviors:
102
+
100
103
  - `error={status === 'error'}` → error/danger variant
101
104
  - `helperText` → helper/description slot below the input
102
105
  - `label` → field label (floating or static depending on design system)
@@ -19,6 +19,7 @@ Renders a time-only picker. Stores time as `HH:mm:ss` string. Displays time in 1
19
19
  ## Props (component-specific)
20
20
 
21
21
  No props beyond `PConnFieldProps`. Import type as:
22
+
22
23
  ```typescript
23
24
  import type { PConnFieldProps } from '@pega/sdk-react';
24
25
  ```
@@ -47,15 +48,15 @@ Delegate to `TextInput`: `return <TextInput {...props} />`.
47
48
 
48
49
  ## Visual Specifications
49
50
 
50
- | Property | Value |
51
- |----------|-------|
52
- | Width | Auto (time picker natural width) |
53
- | Size | Small |
54
- | Variant | Outlined |
55
- | Format | `hh:mm a` (12-hour) |
56
- | Placeholder | `hh:mm am` |
57
- | Minutes step | 5 |
58
- | Error state | Red border + red helper text |
51
+ | Property | Value |
52
+ | ------------ | -------------------------------- |
53
+ | Width | Auto (time picker natural width) |
54
+ | Size | Small |
55
+ | Variant | Outlined |
56
+ | Format | `hh:mm a` (12-hour) |
57
+ | Placeholder | `hh:mm am` |
58
+ | Minutes step | 5 |
59
+ | Error state | Red border + red helper text |
59
60
 
60
61
  **Note on known issue:** Keyboard input in the minute field may jump to the am/pm field after one digit — same as DateTime, this is a known date picker library quirk.
61
62
 
@@ -80,9 +81,9 @@ Delegate to `TextInput`: `return <TextInput {...props} />`.
80
81
 
81
82
  Listed design systems are examples only.
82
83
 
83
- | Design System | Recommended Component |
84
- |---|---|
85
- | Default (CSS only) | `<input type="time">` (24h, no am/pm) |
86
- | MUI | `<TimePicker minutesStep={5} format='hh:mm a' />` |
87
- | Ant Design | `<TimePicker format="hh:mm a" minuteStep={5} />` |
88
- | Chakra UI | Third-party time picker |
84
+ | Design System | Recommended Component |
85
+ | ------------------ | ------------------------------------------------- |
86
+ | Default (CSS only) | `<input type="time">` (24h, no am/pm) |
87
+ | MUI | `<TimePicker minutesStep={5} format='hh:mm a' />` |
88
+ | Ant Design | `<TimePicker format="hh:mm a" minuteStep={5} />` |
89
+ | Chakra UI | Third-party time picker |
@@ -19,6 +19,7 @@ Renders a single-line text input of type `url`. Provides browser-native URL form
19
19
  ## Props (component-specific)
20
20
 
21
21
  No props beyond `PConnFieldProps`. Import type as:
22
+
22
23
  ```typescript
23
24
  import type { PConnFieldProps } from '@pega/sdk-react';
24
25
  ```
@@ -47,15 +48,15 @@ Delegate to `TextInput`: `return <TextInput {...props} />`.
47
48
 
48
49
  Identical to `TextInput` visually — no additional adornments.
49
50
 
50
- | Property | Value |
51
- |----------|-------|
52
- | Width | 100% |
53
- | Size | Small (~40px height) |
54
- | Variant | Outlined |
55
- | Border | 1px solid outlined |
56
- | Border radius | 4px |
57
- | Error state | Red border + red helper text |
58
- | Helper text | Below input |
51
+ | Property | Value |
52
+ | ------------- | ---------------------------- |
53
+ | Width | 100% |
54
+ | Size | Small (~40px height) |
55
+ | Variant | Outlined |
56
+ | Border | 1px solid outlined |
57
+ | Border radius | 4px |
58
+ | Error state | Red border + red helper text |
59
+ | Helper text | Below input |
59
60
 
60
61
  No special icon or adornment — the only difference from `TextInput` is `type='url'`.
61
62
 
@@ -77,9 +78,9 @@ No special icon or adornment — the only difference from `TextInput` is `type='
77
78
 
78
79
  Listed design systems are examples only.
79
80
 
80
- | Design System | Recommended Component |
81
- |---|---|
82
- | Default (CSS only) | `<input type="url">` |
83
- | MUI | `<TextField type='url' />` |
84
- | Ant Design | `<Input type="url" />` |
85
- | Chakra UI | `<Input type="url" />` |
81
+ | Design System | Recommended Component |
82
+ | ------------------ | -------------------------- |
83
+ | Default (CSS only) | `<input type="url">` |
84
+ | MUI | `<TextField type='url' />` |
85
+ | Ant Design | `<Input type="url" />` |
86
+ | Chakra UI | `<Input type="url" />` |
@@ -24,24 +24,24 @@ Renders a user selection field. Can display as a typeahead search box or a dropd
24
24
  import type { PConnProps } from '@pega/sdk-react';
25
25
  ```
26
26
 
27
- | Prop | Type | Default | Description |
28
- |------|------|---------|-------------|
29
- | `displayAs` | `string` (optional) | `''` | `'Drop-down list'` or `'Search box'` — determines the input type |
30
- | `displayMode` | `string` (optional) | `''` | `'DISPLAY_ONLY'` or `'STACKED_LARGE_VAL'` |
31
- | `label` | `string` (optional) | `''` | Field label |
32
- | `value` | `any` (optional) | `''` | Raw value from Pega store (may be a user object or string ID) |
33
- | `testId` | `string` (optional) | `''` | Test identifier |
34
- | `placeholder` | `string` (optional) | `''` | Placeholder text |
35
- | `helperText` | `string` (optional) | `''` | Helper text |
36
- | `disabled` | `boolean` (optional) | `false` | |
37
- | `readOnly` | `boolean` (optional) | `false` | |
38
- | `required` | `boolean` (optional) | `false` | |
39
- | `validatemessage` | `string` (optional) | `''` | Validation error message |
40
- | `showAsFormattedText` | `boolean` (optional) | `false` | When `true` in read-only mode, show formatted user name text |
41
- | `additionalProps` | `object` (optional) | `{}` | Extra props forwarded to the child component |
42
- | `hideLabel` | `boolean` (optional) | `false` | |
43
- | `variant` | `string` (optional) | `'inline'` | Layout variant |
44
- | `onChange` | `any` (optional) | — | Change handler (passed through to child) |
27
+ | Prop | Type | Default | Description |
28
+ | --------------------- | -------------------- | ---------- | ---------------------------------------------------------------- |
29
+ | `displayAs` | `string` (optional) | `''` | `'Drop-down list'` or `'Search box'` — determines the input type |
30
+ | `displayMode` | `string` (optional) | `''` | `'DISPLAY_ONLY'` or `'STACKED_LARGE_VAL'` |
31
+ | `label` | `string` (optional) | `''` | Field label |
32
+ | `value` | `any` (optional) | `''` | Raw value from Pega store (may be a user object or string ID) |
33
+ | `testId` | `string` (optional) | `''` | Test identifier |
34
+ | `placeholder` | `string` (optional) | `''` | Placeholder text |
35
+ | `helperText` | `string` (optional) | `''` | Helper text |
36
+ | `disabled` | `boolean` (optional) | `false` | |
37
+ | `readOnly` | `boolean` (optional) | `false` | |
38
+ | `required` | `boolean` (optional) | `false` | |
39
+ | `validatemessage` | `string` (optional) | `''` | Validation error message |
40
+ | `showAsFormattedText` | `boolean` (optional) | `false` | When `true` in read-only mode, show formatted user name text |
41
+ | `additionalProps` | `object` (optional) | `{}` | Extra props forwarded to the child component |
42
+ | `hideLabel` | `boolean` (optional) | `false` | |
43
+ | `variant` | `string` (optional) | `'inline'` | Layout variant |
44
+ | `onChange` | `any` (optional) | — | Change handler (passed through to child) |
45
45
 
46
46
  ## Behavioral Contract
47
47
 
@@ -57,10 +57,12 @@ import type { PConnProps } from '@pega/sdk-react';
57
57
  ### Mount effect: `useEffect([displayAs, readOnly, showAsFormattedText, value])`
58
58
 
59
59
  **Case 1: `userId && readOnly && showAsFormattedText`**
60
+
60
61
  - If `isUserNameAvailable(value)`: `setUserName(value.userName)` — username already in value object
61
62
  - Else: call `PCore.getUserApi().getOperatorDetails(userId)` and extract `pyUserName` from response
62
63
 
63
64
  **Case 2: `displayAs === 'Drop-down list'`**
65
+
64
66
  - Call `PCore.getRestClient().invokeRestApi('getListData', { queryPayload: { dataViewName: OPERATORS_DP } })`
65
67
  - Map results to `{key: pyUserIdentifier, value: pyUserName}` array
66
68
  - `setDropDownDataSource(mapped)`
@@ -80,17 +82,27 @@ else if displayAs === 'Drop-down list' → Dropdown component
80
82
  ### Subsection: Search box mode (`displayAs === 'Search box'`)
81
83
 
82
84
  Render `AutoComplete` with hardcoded columns for operator search:
85
+
83
86
  ```typescript
84
87
  columns = [
85
88
  { value: 'pyUserName', display: 'true', useForSearch: true, primary: 'true' },
86
- { value: 'pyUserIdentifier', setProperty: 'Associated property', key: 'true', display: 'true', secondary: 'true', useForSearch: 'true' }
87
- ]
89
+ {
90
+ value: 'pyUserIdentifier',
91
+ setProperty: 'Associated property',
92
+ key: 'true',
93
+ display: 'true',
94
+ secondary: 'true',
95
+ useForSearch: 'true',
96
+ },
97
+ ];
88
98
  ```
99
+
89
100
  Props: `datasource={OPERATORS_DP}`, `listType='datapage'`, `value={userId}`, plus label/placeholder/readOnly/disabled/required/helperText/validatemessage/hideLabel/onChange/additionalProps/testId.
90
101
 
91
102
  ### Subsection: Dropdown mode (`displayAs === 'Drop-down list'`)
92
103
 
93
104
  Render `Dropdown` with:
105
+
94
106
  - `datasource={dropDownDataSource}` (fetched user list)
95
107
  - `listType='associated'`
96
108
  - `value={userId}`
@@ -99,6 +111,7 @@ Render `Dropdown` with:
99
111
  ### Subsection: Formatted text read-only (`readOnly && showAsFormattedText && userId`)
100
112
 
101
113
  Render a label + name display:
114
+
102
115
  ```html
103
116
  <div>
104
117
  <caption-text>{label}</caption-text>
@@ -109,13 +122,14 @@ Render a label + name display:
109
122
  ### Re-render optimization
110
123
 
111
124
  Export with `memo` using custom comparison `comparisonFn`:
125
+
112
126
  ```typescript
113
127
  const comparisonFn = (prevProps, nextProps) =>
114
128
  getUserId(prevProps.value) === getUserId(nextProps.value) &&
115
129
  prevProps.validatemessage === nextProps.validatemessage &&
116
130
  prevProps.required === nextProps.required &&
117
131
  prevProps.disabled === nextProps.disabled &&
118
- prevProps.readOnly === nextProps.readOnly
132
+ prevProps.readOnly === nextProps.readOnly;
119
133
  ```
120
134
 
121
135
  `export default memo(UserReference, comparisonFn)`
@@ -123,6 +137,7 @@ const comparisonFn = (prevProps, nextProps) =>
123
137
  ## Display Mode Rendering
124
138
 
125
139
  Uses resolved `userName` (not raw `value`):
140
+
126
141
  - **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={userName || ''} />`
127
142
  - **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={userName || ''} variant='stacked' />`
128
143
 
@@ -131,20 +146,28 @@ Uses resolved `userName` (not raw `value`):
131
146
  ## Visual Specifications
132
147
 
133
148
  The visual appearance is determined by the child component rendered:
149
+
134
150
  - **Search box**: Same as `AutoComplete` — combobox input with outlined border, floating label
135
151
  - **Dropdown**: Same as `Dropdown` — select field with outlined border, floating label
136
152
  - **Formatted text read-only**:
137
153
 
138
- | Property | Value |
139
- |----------|-------|
140
- | Label | Caption-size text (small, secondary color) above the name |
141
- | Name | Body text (normal size) |
142
- | Spacing | Standard form field spacing |
154
+ | Property | Value |
155
+ | -------- | --------------------------------------------------------- |
156
+ | Label | Caption-size text (small, secondary color) above the name |
157
+ | Name | Body text (normal size) |
158
+ | Spacing | Standard form field spacing |
143
159
 
144
160
  **CSS-only for formatted text:**
161
+
145
162
  ```css
146
- .user-reference-label { font-size: 0.75rem; color: rgba(0,0,0,0.6); margin-bottom: 4px; }
147
- .user-reference-name { font-size: 1rem; }
163
+ .user-reference-label {
164
+ font-size: 0.75rem;
165
+ color: rgba(0, 0, 0, 0.6);
166
+ margin-bottom: 4px;
167
+ }
168
+ .user-reference-name {
169
+ font-size: 1rem;
170
+ }
148
171
  ```
149
172
 
150
173
  ## Edge Cases & Special Logic
@@ -172,9 +195,9 @@ The visual appearance is determined by the child component rendered:
172
195
 
173
196
  Listed design systems are examples only.
174
197
 
175
- | Mode | Underlying control |
176
- |------|--------------------|
177
- | Search box | AutoComplete (combobox/typeahead) |
178
- | Drop-down list | Dropdown (select) |
179
- | Formatted text read-only | Label + text display |
180
- | Display mode | FieldValueList |
198
+ | Mode | Underlying control |
199
+ | ------------------------ | --------------------------------- |
200
+ | Search box | AutoComplete (combobox/typeahead) |
201
+ | Drop-down list | Dropdown (select) |
202
+ | Formatted text read-only | Label + text display |
203
+ | Display mode | FieldValueList |
@@ -24,6 +24,7 @@ npm run build
24
24
  ```
25
25
 
26
26
  ### What to check:
27
+
27
28
  - Zero TypeScript errors
28
29
  - Zero build warnings related to missing imports
29
30
  - Output bundle is generated
@@ -38,6 +39,7 @@ npm run dev
38
39
  ```
39
40
 
40
41
  ### What to verify:
42
+
41
43
  1. App loads without console errors
42
44
  2. "Create Case" button appears after auth
43
45
  3. Clicking "Create Case" renders the form
@@ -50,14 +52,14 @@ npm run dev
50
52
 
51
53
  ## Common Issues
52
54
 
53
- | Symptom | Cause | Fix |
54
- |---------|-------|-----|
55
- | "X is not registered" console error | Component missing from `component-map.ts` | Add the import + map entry |
56
- | Field value doesn't persist after blur | `handleEvent` not called on blur | Add `onBlur` handler calling `handleEvent(actions, 'changeNblur', propName, value)` |
57
- | Read-only view shows nothing | Missing `displayMode` handling | Add the `DISPLAY_ONLY` / `STACKED_LARGE_VAL` checks |
58
- | TypeScript error on `getPConnect` | Wrong props interface | Extend `PConnFieldProps` or `PConnProps` from `@pega/sdk-react` |
59
- | Build fails on CSS import | Missing CSS loader config | Ensure Vite config handles `.css` imports |
60
- | "Cannot read property of undefined" on theme | Design system provider missing | Wrap app in the design system's ThemeProvider/Provider |
55
+ | Symptom | Cause | Fix |
56
+ | -------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------------------------- |
57
+ | "X is not registered" console error | Component missing from `component-map.ts` | Add the import + map entry |
58
+ | Field value doesn't persist after blur | `handleEvent` not called on blur | Add `onBlur` handler calling `handleEvent(actions, 'changeNblur', propName, value)` |
59
+ | Read-only view shows nothing | Missing `displayMode` handling | Add the `DISPLAY_ONLY` / `STACKED_LARGE_VAL` checks |
60
+ | TypeScript error on `getPConnect` | Wrong props interface | Extend `PConnFieldProps` or `PConnProps` from `@pega/sdk-react` |
61
+ | Build fails on CSS import | Missing CSS loader config | Ensure Vite config handles `.css` imports |
62
+ | "Cannot read property of undefined" on theme | Design system provider missing | Wrap app in the design system's ThemeProvider/Provider |
61
63
 
62
64
  ---
63
65
 
@@ -99,6 +99,7 @@ export default function TwoColumn(props: PropsWithChildren<TwoColumnProps>) {
99
99
  **2. If the chosen design system is not listed** — use the **component purpose** description to identify the appropriate DS layout primitive (grid, flex, columns).
100
100
 
101
101
  **3. Discover the API from installed packages** — confirm layout component names and props from `.d.ts` before writing JSX:
102
+
102
103
  ```bash
103
104
  find node_modules/<ds-package> -name "*.d.ts" | xargs grep -l "Grid\|Columns\|Flex" | head -5
104
105
  grep -A 30 "interface.*Props" <path-to-file>
@@ -106,11 +107,11 @@ grep -A 30 "interface.*Props" <path-to-file>
106
107
 
107
108
  **4. Column ratio mapping** — the `templateCol` prop (e.g., `'2fr 1fr'`) gives you fractional widths. Map to your DS's column system:
108
109
 
109
- | `templateCol` | Fraction | MUI 12-col | CSS `grid-template-columns` |
110
- |---|---|---|---|
111
- | `'1fr 1fr'` | 50% / 50% | 6 / 6 | `1fr 1fr` |
112
- | `'2fr 1fr'` | 67% / 33% | 8 / 4 | `2fr 1fr` |
113
- | `'1fr 2fr'` | 33% / 67% | 4 / 8 | `1fr 2fr` |
110
+ | `templateCol` | Fraction | MUI 12-col | CSS `grid-template-columns` |
111
+ | ------------- | --------- | ---------- | --------------------------- |
112
+ | `'1fr 1fr'` | 50% / 50% | 6 / 6 | `1fr 1fr` |
113
+ | `'2fr 1fr'` | 67% / 33% | 8 / 4 | `2fr 1fr` |
114
+ | `'1fr 2fr'` | 33% / 67% | 4 / 8 | `1fr 2fr` |
114
115
 
115
116
  **5. Responsive behavior** — on mobile, both columns must stack to full width. Use your DS's responsive breakpoint props or a CSS media query.
116
117
 
@@ -198,9 +199,7 @@ import createPConnectComponent from '../../helpers/react_pconnect';
198
199
  const children = getPConnect().getChildren();
199
200
 
200
201
  // Render each child through the PConnect bridge
201
- children.map((child, i) =>
202
- createElement(createPConnectComponent(), { ...child, key: `child-${i}` }),
203
- );
202
+ children.map((child, i) => createElement(createPConnectComponent(), { ...child, key: `child-${i}` }));
204
203
  ```
205
204
 
206
205
  ### 3. State-connected children (DefaultForm pattern)
@@ -18,11 +18,11 @@ Renders a multi-section advanced search form where search fields are organized i
18
18
 
19
19
  ## Props
20
20
 
21
- | Prop | Type | Required | Description |
22
- |------|------|----------|-------------|
23
- | `dataPageName` | `string` | Yes | Data page for search results |
24
- | `parameters` | `object` | No | Parameters passed to the data page |
25
- | `getPConnect` | `function` | Yes | PConnect getter |
21
+ | Prop | Type | Required | Description |
22
+ | -------------- | ---------- | -------- | ---------------------------------- |
23
+ | `dataPageName` | `string` | Yes | Data page for search results |
24
+ | `parameters` | `object` | No | Parameters passed to the data page |
25
+ | `getPConnect` | `function` | Yes | PConnect getter |
26
26
 
27
27
  ## Behavioral Contract
28
28
 
@@ -42,9 +42,12 @@ Renders a multi-section advanced search form where search fields are organized i
42
42
  ### Context (`DataReferenceAdvancedSearchContext`)
43
43
 
44
44
  Provides shared config to `SearchGroups`:
45
+
45
46
  ```tsx
46
47
  <DataReferenceAdvancedSearchContext.Provider value={{ dataPageName, parameters, getPConnect }}>
47
- {searchGroups.map((group) => <SearchGroups key={group.label} group={group} />)}
48
+ {searchGroups.map((group) => (
49
+ <SearchGroups key={group.label} group={group} />
50
+ ))}
48
51
  </DataReferenceAdvancedSearchContext.Provider>
49
52
  ```
50
53
 
@@ -66,13 +69,14 @@ Renders a single search group section: a heading + a list of editable search fie
66
69
 
67
70
  ### Props
68
71
 
69
- | Prop | Type | Description |
70
- |------|------|-------------|
72
+ | Prop | Type | Description |
73
+ | ------- | -------- | ---------------------------------- |
71
74
  | `group` | `object` | `{ label: string, fields: array }` |
72
75
 
73
76
  ### Behavioral Contract
74
77
 
75
78
  For each field in `group.fields`:
79
+
76
80
  1. Get `firstChildPConnect = getPConnect().getChildren()[0]`.
77
81
  2. Create an editable field component: `firstChildPConnect.createComponent({ type: field.type, config: { ...field.config } })`.
78
82
  3. Render the created component alongside a `<SearchGroups>` label row.
@@ -94,18 +98,19 @@ For each field in `group.fields`:
94
98
 
95
99
  ### AdvancedSearch Container
96
100
 
97
- | Element | Description |
98
- |---------|-------------|
101
+ | Element | Description |
102
+ | --------------- | --------------------------------------- |
99
103
  | Outer container | Vertical stack of search group sections |
100
104
 
101
105
  ### SearchGroups Section
102
106
 
103
- | Element | Description |
104
- |---------|-------------|
105
- | Group heading | `<h4>` with group label |
106
- | Field rows | Each field rendered as a form control |
107
+ | Element | Description |
108
+ | ------------- | ------------------------------------- |
109
+ | Group heading | `<h4>` with group label |
110
+ | Field rows | Each field rendered as a form control |
107
111
 
108
112
  **CSS-only implementation notes:**
113
+
109
114
  - Outer container: `display: flex; flex-direction: column; gap: 1.5rem`.
110
115
  - Group section: `display: flex; flex-direction: column; gap: 0.75rem`.
111
116
  - Group heading: `font-size: 1rem; font-weight: 600; margin-bottom: 0.25rem`.
@@ -130,15 +135,16 @@ For each field in `group.fields`:
130
135
 
131
136
  Listed design systems are examples only.
132
137
 
133
- | Design System | Group Heading | Field Layout |
134
- |---|---|---|
135
- | Default (CSS only) | `<h4>` | CSS grid 2-col (label + input) |
136
- | MUI | `<Typography variant='h6'>` | `<Grid container>` |
137
- | Ant Design | `<Typography.Title level={5}>` | `<Form.Item>` |
138
- | Chakra UI | `<Heading size='sm'>` | `<FormControl>` rows |
139
- | Shadcn/ui | `<h4>` or `<Label>` | Tailwind grid |
138
+ | Design System | Group Heading | Field Layout |
139
+ | ------------------ | ------------------------------ | ------------------------------ |
140
+ | Default (CSS only) | `<h4>` | CSS grid 2-col (label + input) |
141
+ | MUI | `<Typography variant='h6'>` | `<Grid container>` |
142
+ | Ant Design | `<Typography.Title level={5}>` | `<Form.Item>` |
143
+ | Chakra UI | `<Heading size='sm'>` | `<FormControl>` rows |
144
+ | Shadcn/ui | `<h4>` or `<Label>` | Tailwind grid |
140
145
 
141
146
  When implementing in a specific design system:
147
+
142
148
  - `DataReferenceAdvancedSearchContext` must be provided — `SearchGroups` consumes it via `useContext`
143
149
  - Field deduplication by `field.value` must happen before rendering
144
150
  - `createComponent` creates live editable fields — render via `createElement(PConnectComponent, fieldConfig)`