@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
@@ -5,7 +5,7 @@
5
5
  * Flow:
6
6
  * 1. Auth via AuthClient → @pega/auth
7
7
  * 2. Bootstrap via BootstrapClient.loadMashup()
8
- * 3. Show "Create Case" button
8
+ * 3. Show service portal homepage with quick-link cards
9
9
  * 4. On click → PCore.getMashupApi().createCase()
10
10
  * 5. PConnectComponent renders the case form via registered sample components
11
11
  */
@@ -13,11 +13,7 @@
13
13
  import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
14
14
 
15
15
  // ── React adapter (includes sdk-core re-exports) ───────────────────────────────────────
16
- import {
17
- PConnectComponent,
18
- PegaStoreContext,
19
- registerComponentCreator,
20
- } from '@pega/sdk-react';
16
+ import { PConnectComponent, PegaStoreContext, registerComponentCreator } from '@pega/sdk-react';
21
17
 
22
18
  import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
23
19
  import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
@@ -34,23 +30,57 @@ import { AuthClient } from '@pega/auth';
34
30
  import { styles } from './MashupApp.styles';
35
31
  import { FallbackComponent } from './FallbackComponent';
36
32
 
37
- // ─── Create component registry + register sample components ─────────────────
38
- // const registry =
39
- // createComponentRegistry<React.ComponentType<Record<string, unknown>>>();
40
- // registerSampleComponents(registry);
33
+ // ─── Quick-link card definitions ────────────────────────────────────────────
34
+ const QUICK_LINKS = [
35
+ {
36
+ id: 'new-service',
37
+ icon: '📋',
38
+ title: 'New Service Request',
39
+ desc: 'Submit a new service request and track its progress in real-time.',
40
+ active: true,
41
+ },
42
+ {
43
+ id: 'my-cases',
44
+ icon: '📊',
45
+ title: 'View My Cases',
46
+ desc: 'Check the status of your existing cases and requests.',
47
+ active: false,
48
+ },
49
+ {
50
+ id: 'billing',
51
+ icon: '💳',
52
+ title: 'Billing Inquiry',
53
+ desc: 'Review invoices, payments, and billing history.',
54
+ active: false,
55
+ },
56
+ {
57
+ id: 'support',
58
+ icon: '🔧',
59
+ title: 'Technical Support',
60
+ desc: 'Get help with technical issues and troubleshooting.',
61
+ active: false,
62
+ },
63
+ {
64
+ id: 'contact',
65
+ icon: '📞',
66
+ title: 'Contact Us',
67
+ desc: 'Reach our support team via phone, email, or chat.',
68
+ active: false,
69
+ },
70
+ {
71
+ id: 'tracking',
72
+ icon: '📦',
73
+ title: 'Order Tracking',
74
+ desc: 'Track your orders and deliveries in real-time.',
75
+ active: false,
76
+ },
77
+ ];
41
78
 
42
79
  // ─── Root Component ─────────────────────────────────────────────────────────
43
80
  const muiTheme = createTheme();
44
81
 
45
- function RootComponent({
46
- renderProps,
47
- registry,
48
- }: {
49
- renderProps: Record<string, unknown>;
50
- registry: any;
51
- }) {
82
+ function RootComponent({ renderProps, registry }: { renderProps: Record<string, unknown>; registry: any }) {
52
83
  const contextValue = useMemo(() => ({ store: PCore.getStore() }), []);
53
-
54
84
  const getPConnect = renderProps.getPConnect as () => any;
55
85
 
56
86
  return (
@@ -59,11 +89,7 @@ function RootComponent({
59
89
  <LocalizationProvider dateAdapter={AdapterDayjs}>
60
90
  <PegaStoreContext.Provider value={contextValue}>
61
91
  <div style={styles.root}>
62
- <PConnectComponent
63
- getPConnect={getPConnect}
64
- componentRegistry={registry}
65
- fallback={FallbackComponent}
66
- />
92
+ <PConnectComponent getPConnect={getPConnect} componentRegistry={registry} fallback={FallbackComponent} />
67
93
  </div>
68
94
  </PegaStoreContext.Provider>
69
95
  </LocalizationProvider>
@@ -75,14 +101,11 @@ function RootComponent({
75
101
  // ─── Mashup App ─────────────────────────────────────────────────────────────
76
102
  function MashupApp() {
77
103
  const [isPegaReady, setIsPegaReady] = useState(false);
78
- const [rootProps, setRootProps] = useState<Record<string, unknown> | null>(
79
- null,
80
- );
104
+ const [rootProps, setRootProps] = useState<Record<string, unknown> | null>(null);
81
105
  const [showForm, setShowForm] = useState(false);
82
106
  const [loading, setLoading] = useState(false);
83
107
  const authClientRef = useRef<AuthClient | null>(null);
84
-
85
- let registry;
108
+ const registryRef = useRef<any>(null);
86
109
 
87
110
  // ── 1. Auth + Bootstrap mashup on mount ─────────────────────────────────
88
111
  useEffect(() => {
@@ -106,8 +129,9 @@ function MashupApp() {
106
129
  } = PCore.getInitialiser().getSdkCore();
107
130
 
108
131
  // ─── Create component registry + register sample components ─────────────────
109
- registry = createComponentRegistry();
132
+ const registry = createComponentRegistry();
110
133
  registerSampleComponents(registry);
134
+ registryRef.current = registry;
111
135
 
112
136
  // Register component creator so PCore uses our bridge
113
137
  registerComponentCreator(registry, FallbackComponent);
@@ -149,20 +173,15 @@ function MashupApp() {
149
173
  );
150
174
 
151
175
  PCore.getPubSubUtils().subscribe(
152
- PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS
153
- .END_OF_ASSIGNMENT_PROCESSING,
176
+ PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.END_OF_ASSIGNMENT_PROCESSING,
154
177
  () => setShowForm(false),
155
178
  doneId,
156
179
  );
157
180
 
158
181
  return () => {
182
+ PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL, cancelId);
159
183
  PCore.getPubSubUtils().unsubscribe(
160
- PCore.getConstants().PUB_SUB_EVENTS.EVENT_CANCEL,
161
- cancelId,
162
- );
163
- PCore.getPubSubUtils().unsubscribe(
164
- PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS
165
- .END_OF_ASSIGNMENT_PROCESSING,
184
+ PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.END_OF_ASSIGNMENT_PROCESSING,
166
185
  doneId,
167
186
  );
168
187
  };
@@ -177,15 +196,13 @@ function MashupApp() {
177
196
 
178
197
  try {
179
198
  const sdkConfig = await getSdkConfig();
180
- const mashupCaseType = (
181
- sdkConfig as Record<string, Record<string, unknown>>
182
- ).serverConfig.appMashupCaseType as string;
183
-
184
- await PCore.getMashupApi().createCase(
185
- mashupCaseType,
186
- PCore.getConstants().APP.APP,
187
- { pageName: 'pyEmbedAssignment', startingFields: {} },
188
- );
199
+ const mashupCaseType = (sdkConfig as Record<string, Record<string, unknown>>).serverConfig
200
+ .appMashupCaseType as string;
201
+
202
+ await PCore.getMashupApi().createCase(mashupCaseType, PCore.getConstants().APP.APP, {
203
+ pageName: 'pyEmbedAssignment',
204
+ startingFields: {},
205
+ });
189
206
  } catch (err) {
190
207
  console.error('Error creating case:', err);
191
208
  setShowForm(false);
@@ -197,55 +214,139 @@ function MashupApp() {
197
214
  // ── Render ──────────────────────────────────────────────────────────────
198
215
  if (!isPegaReady) {
199
216
  return (
200
- <div className='loading-container'>
201
- <span className='loading-text'>Authenticating and loading Pega...</span>
217
+ <div className="loading-container">
218
+ <span className="loading-text">Authenticating and loading Pega...</span>
202
219
  </div>
203
220
  );
204
221
  }
205
222
 
206
223
  return (
207
- <div id='pega-root' style={styles.app.container}>
208
- {/* Header */}
209
- <div style={styles.app.header}>
210
- <span style={styles.app.headerTitle}>
211
- Pega SDK — React Mashup Sample
212
- </span>
213
- <button
214
- type='button'
215
- onClick={() => authClientRef.current?.logout()}
216
- style={styles.app.logoutButton}
224
+ <div id="pega-root" style={styles.app.container}>
225
+ {/* ── Nav Bar ──────────────────────────────────────────────── */}
226
+ <nav style={styles.app.nav}>
227
+ <div
228
+ style={styles.app.navLogo}
229
+ onClick={() => setShowForm(false)}
230
+ role="button"
231
+ tabIndex={0}
232
+ onKeyDown={(e) => e.key === 'Enter' && setShowForm(false)}
217
233
  >
218
- Logout
234
+ <span style={styles.app.navLogoIcon}>🏠</span>
235
+ <span>Pega Services</span>
236
+ </div>
237
+ <div style={styles.app.navRight}>
238
+ <button type="button" onClick={() => authClientRef.current?.logout()} style={styles.app.logoutButton}>
239
+ Logout
240
+ </button>
241
+ </div>
242
+ </nav>
243
+
244
+ {/* ── Screen: Homepage with Quick Links ────────────────────── */}
245
+ {!showForm && (
246
+ <div style={styles.app.homeContent}>
247
+ <h1 style={styles.app.homeTitle}>Welcome to Pega Services</h1>
248
+ <p style={styles.app.homeSubtitle}>What would you like to do today?</p>
249
+
250
+ <div style={styles.app.cardGrid}>
251
+ {QUICK_LINKS.map((link) =>
252
+ link.active ? (
253
+ <div
254
+ key={link.id}
255
+ style={styles.app.cardActive}
256
+ onClick={handleCreateCase}
257
+ role="button"
258
+ tabIndex={0}
259
+ onKeyDown={(e) => e.key === 'Enter' && handleCreateCase()}
260
+ onMouseEnter={(e) => {
261
+ (e.currentTarget as HTMLElement).style.transform = 'translateY(-4px)';
262
+ (e.currentTarget as HTMLElement).style.boxShadow = '0 12px 24px rgba(0,0,0,0.15)';
263
+ }}
264
+ onMouseLeave={(e) => {
265
+ (e.currentTarget as HTMLElement).style.transform = 'none';
266
+ (e.currentTarget as HTMLElement).style.boxShadow = '0 6px 16px rgba(0,0,0,0.12)';
267
+ }}
268
+ >
269
+ <div style={styles.app.cardIconActive}>
270
+ <span>{link.icon}</span>
271
+ </div>
272
+ <div style={styles.app.cardTitle}>{link.title}</div>
273
+ <div style={styles.app.cardDesc}>{link.desc}</div>
274
+ <div style={styles.app.cardAction}>Start →</div>
275
+ </div>
276
+ ) : (
277
+ <div key={link.id} style={styles.app.cardDisabled}>
278
+ <div style={styles.app.cardIcon}>
279
+ <span>{link.icon}</span>
280
+ </div>
281
+ <div style={styles.app.cardTitle}>{link.title}</div>
282
+ <div style={styles.app.cardDesc}>{link.desc}</div>
283
+ <span style={styles.app.comingSoonBadge}>Coming Soon</span>
284
+ </div>
285
+ ),
286
+ )}
287
+ </div>
288
+
289
+ <div style={styles.app.trustBar}>
290
+ <span style={styles.app.trustItem}>
291
+ <span>🏆</span> Trusted by thousands
292
+ </span>
293
+ <span style={styles.app.trustItem}>
294
+ <span>🕐</span> 24/7 Support
295
+ </span>
296
+ <span style={styles.app.trustItem}>
297
+ <span>🔒</span> Enterprise Grade
298
+ </span>
299
+ </div>
300
+ </div>
301
+ )}
302
+
303
+ {/* ── Form screen — always mounted for PCore, hidden on homepage ── */}
304
+ <div style={showForm ? styles.app.formContent : { display: 'none' }}>
305
+ <button type="button" style={styles.app.backButton} onClick={() => setShowForm(false)}>
306
+ ← Back to Services
219
307
  </button>
220
- </div>
221
308
 
222
- <div style={styles.app.content}>
223
- {!showForm && (
224
- <div style={styles.app.welcome}>
225
- <h2 style={styles.app.welcomeHeading}>Ready to go</h2>
226
- <p style={styles.app.welcomeText}>
227
- Click below to create a new case and see the Pega form components
228
- in action.
229
- </p>
230
- <button
231
- type='button'
232
- onClick={handleCreateCase}
233
- style={styles.app.createButton}
234
- >
235
- Create Case
236
- </button>
309
+ <div style={styles.app.twoCol}>
310
+ {/* Left info panel (40%) */}
311
+ <div style={styles.app.leftPanel}>
312
+ <div style={styles.app.leftPanelInner}>
313
+ <h2 style={styles.app.leftTitle}>📋 New Service Request</h2>
314
+ <p style={styles.app.leftSubtitle}>MediaCo Digital Services</p>
315
+
316
+ <div style={styles.app.leftBadges}>
317
+ <span style={styles.app.heroBadge}>⚡ Fast Processing</span>
318
+ <span style={styles.app.heroBadge}>🔒 Secure</span>
319
+ <span style={styles.app.heroBadge}>📊 Trackable</span>
320
+ </div>
321
+
322
+ <div style={styles.app.leftDivider} />
323
+
324
+ <div style={styles.app.leftChecks}>
325
+ <span style={styles.app.footerItem}>
326
+ <span style={styles.app.footerCheck}>✓</span> Free to submit
327
+ </span>
328
+ <span style={styles.app.footerItem}>
329
+ <span style={styles.app.footerCheck}>✓</span> Cancel anytime
330
+ </span>
331
+ <span style={styles.app.footerItem}>
332
+ <span style={styles.app.footerCheck}>✓</span> 24-hour processing
333
+ </span>
334
+ <span style={styles.app.footerItem}>
335
+ <span style={styles.app.footerCheck}>✓</span> Track your request
336
+ </span>
337
+ </div>
338
+ </div>
339
+ </div>
340
+
341
+ {/* Right form card (60%) */}
342
+ <div style={styles.app.formCard}>
343
+ {loading ? (
344
+ <div style={styles.app.loading}>Loading your form...</div>
345
+ ) : rootProps ? (
346
+ <RootComponent renderProps={rootProps} registry={registryRef.current} />
347
+ ) : null}
237
348
  </div>
238
- )}
239
-
240
- {/* {showForm && ( */}
241
- <div style={styles.app.formArea}>
242
- {loading ? (
243
- <div style={styles.app.loading}>Loading case form...</div>
244
- ) : rootProps ? (
245
- <RootComponent renderProps={rootProps} registry={registry} />
246
- ) : null}
247
349
  </div>
248
- {/* )} */}
249
350
  </div>
250
351
  </div>
251
352
  );
@@ -11,11 +11,7 @@
11
11
  import { useEffect, useMemo, useRef, useState } from 'react';
12
12
  import { useLocation } from 'react-router-dom';
13
13
 
14
- import {
15
- PConnectComponent,
16
- PegaStoreContext,
17
- registerComponentCreator,
18
- } from '@pega/sdk-react';
14
+ import { PConnectComponent, PegaStoreContext, registerComponentCreator } from '@pega/sdk-react';
19
15
 
20
16
  import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
21
17
  import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
@@ -31,13 +27,7 @@ import { FallbackComponent } from './FallbackComponent';
31
27
  // ─── Root Component ─────────────────────────────────────────────────────────
32
28
  const muiTheme = createTheme();
33
29
 
34
- function RootComponent({
35
- renderProps,
36
- registry,
37
- }: {
38
- renderProps: Record<string, unknown>;
39
- registry: any;
40
- }) {
30
+ function RootComponent({ renderProps, registry }: { renderProps: Record<string, unknown>; registry: any }) {
41
31
  const contextValue = useMemo(() => ({ store: PCore.getStore() }), []);
42
32
  const getPConnect = renderProps.getPConnect as () => any;
43
33
 
@@ -46,11 +36,7 @@ function RootComponent({
46
36
  <LegacyThemeProvider theme={muiTheme}>
47
37
  <LocalizationProvider dateAdapter={AdapterDayjs}>
48
38
  <PegaStoreContext.Provider value={contextValue}>
49
- <PConnectComponent
50
- getPConnect={getPConnect}
51
- componentRegistry={registry}
52
- fallback={FallbackComponent}
53
- />
39
+ <PConnectComponent getPConnect={getPConnect} componentRegistry={registry} fallback={FallbackComponent} />
54
40
  </PegaStoreContext.Provider>
55
41
  </LocalizationProvider>
56
42
  </LegacyThemeProvider>
@@ -61,9 +47,7 @@ function RootComponent({
61
47
  // ─── Portal App ─────────────────────────────────────────────────────────────
62
48
  function PortalApp() {
63
49
  const [isPegaReady, setIsPegaReady] = useState(false);
64
- const [rootProps, setRootProps] = useState<Record<string, unknown> | null>(
65
- null,
66
- );
50
+ const [rootProps, setRootProps] = useState<Record<string, unknown> | null>(null);
67
51
  const authClientRef = useRef<AuthClient | null>(null);
68
52
  const registryRef = useRef<unknown>(null);
69
53
 
@@ -110,13 +94,9 @@ function PortalApp() {
110
94
  registryRef.current = registry;
111
95
 
112
96
  // Determine which portal to load
113
- const sdkConfig = (await getSdkConfig()) as Record<
114
- string,
115
- Record<string, unknown>
116
- >;
97
+ const sdkConfig = (await getSdkConfig()) as Record<string, Record<string, unknown>>;
117
98
  const appPortal = sdkConfig.serverConfig.appPortal as string;
118
- const excludePortals = (sdkConfig.serverConfig.excludePortals ??
119
- []) as string[];
99
+ const excludePortals = (sdkConfig.serverConfig.excludePortals ?? []) as string[];
120
100
 
121
101
  const queryPortal = sessionStorage.getItem('rsdk_portalName');
122
102
  const portalName = queryPortal || appPortal || undefined;
@@ -130,9 +110,7 @@ function PortalApp() {
130
110
  targetId: 'pega-root',
131
111
  });
132
112
 
133
- console.log(
134
- `Loading portal: ${portalName}, excluding portals: ${excludePortals}`,
135
- );
113
+ console.log(`Loading portal: ${portalName}, excluding portals: ${excludePortals}`);
136
114
  const result = await client.loadPortal({
137
115
  portalName,
138
116
  excludePortals,
@@ -157,16 +135,14 @@ function PortalApp() {
157
135
  // ── Render ──────────────────────────────────────────────────────────────
158
136
  if (!isPegaReady || !rootProps) {
159
137
  return (
160
- <div className='loading-container'>
161
- <span className='loading-text'>
162
- Authenticating and loading portal...
163
- </span>
138
+ <div className="loading-container">
139
+ <span className="loading-text">Authenticating and loading portal...</span>
164
140
  </div>
165
141
  );
166
142
  }
167
143
 
168
144
  return (
169
- <div id='pega-root'>
145
+ <div id="pega-root">
170
146
  <RootComponent renderProps={rootProps} registry={registryRef.current} />
171
147
  </div>
172
148
  );
@@ -119,10 +119,7 @@ import {
119
119
  /**
120
120
  * Returns a map of Pega component names → sample React components.
121
121
  */
122
- function getSampleComponentMap(): Record<
123
- string,
124
- React.ComponentType<Record<string, unknown>>
125
- > {
122
+ function getSampleComponentMap(): Record<string, React.ComponentType<Record<string, unknown>>> {
126
123
  return {
127
124
  // Infrastructure from sdk-react (includes View, Region, Reference,
128
125
  // RootContainer, FlowContainer, ViewContainer, Assignment, AssignmentCard, etc.)
@@ -243,9 +240,7 @@ function getSampleComponentMap(): Record<
243
240
  } as unknown as Record<string, React.ComponentType<Record<string, unknown>>>;
244
241
  }
245
242
 
246
- function registerSampleComponents(
247
- registry: ComponentRegistry<React.ComponentType<Record<string, unknown>>>,
248
- ): void {
243
+ function registerSampleComponents(registry: ComponentRegistry<React.ComponentType<Record<string, unknown>>>): void {
249
244
  const map = getSampleComponentMap();
250
245
  for (const [name, component] of Object.entries(map)) {
251
246
  registry.register(name, component);
@@ -17,9 +17,7 @@ const VARIANT_MAP: Record<string, { severity: string; label: string }> = {
17
17
  info: { severity: 'info', label: 'Info' },
18
18
  };
19
19
 
20
- function renderMessage(
21
- message: string | { label?: string; description?: string },
22
- ) {
20
+ function renderMessage(message: string | { label?: string; description?: string }) {
23
21
  if (typeof message === 'object' && message !== null) {
24
22
  const label = message.label || '';
25
23
  const description = message.description || '';
@@ -42,42 +40,23 @@ function renderMessage(
42
40
  );
43
41
  }
44
42
 
45
- export default function AlertBanner({
46
- id,
47
- variant,
48
- messages,
49
- onDismiss,
50
- }: AlertBannerProps) {
43
+ export default function AlertBanner({ id, variant, messages, onDismiss }: AlertBannerProps) {
51
44
  const { severity, label } = VARIANT_MAP[variant] ?? VARIANT_MAP.info;
52
45
  const isMultiple = messages.length > 1;
53
46
 
54
47
  return (
55
48
  <div id={id}>
56
- <Alert
57
- variant='outlined'
58
- severity={severity as any}
59
- {...(onDismiss && { onClose: onDismiss })}
60
- >
49
+ <Alert variant="outlined" severity={severity as any} {...(onDismiss && { onClose: onDismiss })}>
61
50
  {isMultiple && (
62
- <AlertTitle className='alert-banner-title'>
51
+ <AlertTitle className="alert-banner-title">
63
52
  {label}
64
- <span
65
- className={`alert-banner-badge alert-banner-badge--${variant}`}
66
- >
67
- {messages.length}
68
- </span>
53
+ <span className={`alert-banner-badge alert-banner-badge--${variant}`}>{messages.length}</span>
69
54
  </AlertTitle>
70
55
  )}
71
56
  {isMultiple ? (
72
- <ul className='alert-banner-list'>
57
+ <ul className="alert-banner-list">
73
58
  {messages.map((message, index) => (
74
- <li
75
- key={
76
- typeof message === 'string'
77
- ? message
78
- : `${message.label}-${index}`
79
- }
80
- >
59
+ <li key={typeof message === 'string' ? message : `${message.label}-${index}`}>
81
60
  {renderMessage(message)}
82
61
  </li>
83
62
  ))}
@@ -25,22 +25,27 @@ export default function Banner(props: BannerProps) {
25
25
  const variantMap = {
26
26
  'two-column': [6, 6],
27
27
  'narrow-wide': [4, 8],
28
- 'wide-narrow': [8, 4]
28
+ 'wide-narrow': [8, 4],
29
29
  };
30
30
  return (
31
31
  <div style={{ marginBottom: '2rem' }}>
32
- <div className='background-image-style' style={{ backgroundImage: `url(${backgroundImage})` }}>
33
- <div className='background-style content'>
32
+ <div className="background-image-style" style={{ backgroundImage: `url(${backgroundImage})` }}>
33
+ <div className="background-style content">
34
34
  <div>
35
- <h1 className='title'>{title}</h1>
36
- <p className='message'>{message}</p>
35
+ <h1 className="title">{title}</h1>
36
+ <p className="message">{message}</p>
37
37
  </div>
38
38
  </div>
39
39
  </div>
40
- <Grid container size={12} className='banner-layout' spacing={1}>
40
+ <Grid container size={12} className="banner-layout" spacing={1}>
41
41
  <Grid
42
42
  size={{ xs: variantMap[variant][0] }}
43
- style={{ padding: '1rem', backgroundColor: 'var(--app-form-bg-color)', borderRadius: '16px', height: 'fit-content' }}
43
+ style={{
44
+ padding: '1rem',
45
+ backgroundColor: 'var(--app-form-bg-color)',
46
+ borderRadius: '16px',
47
+ height: 'fit-content',
48
+ }}
44
49
  >
45
50
  {a}
46
51
  </Grid>