@pega/sdk 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (317) hide show
  1. package/dist/index.js +287 -1
  2. package/package.json +1 -1
  3. package/templates/angular-sdk-reference/package.json +12 -12
  4. package/templates/angular-sdk-reference/tsconfig.json +1 -1
  5. package/templates/react-native-sdk-reference/expo-env.d.ts +3 -0
  6. package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +23 -26
  7. package/templates/react-sdk-reference/{.github/copilot-instructions.md → .ai-common/global/ai-agent-instructions.md} +7 -7
  8. package/templates/react-sdk-reference/{.github/instructions/component-map.instructions.md → .ai-common/instructions/component-map.md} +8 -1
  9. package/templates/react-sdk-reference/{.github/instructions/dse-component.instructions.md → .ai-common/instructions/dse-component.md} +1 -1
  10. package/templates/react-sdk-reference/{.github/instructions/field-component.instructions.md → .ai-common/instructions/field-component.md} +2 -1
  11. package/templates/react-sdk-reference/{.github/instructions/template-component.instructions.md → .ai-common/instructions/template-component.md} +1 -1
  12. package/templates/react-sdk-reference/{.github/instructions/widget-component.instructions.md → .ai-common/instructions/widget-component.md} +1 -1
  13. package/templates/react-sdk-reference/{.github/prompts/add-component.prompt.md → .ai-common/prompts/add-component.md} +45 -18
  14. package/templates/react-sdk-reference/{.cursor/rules → .ai-common}/prompts/component-manifest.json +8 -2
  15. package/templates/react-sdk-reference/{.github/prompts/generate-all-components.prompt.md → .ai-common/prompts/generate-all-components.md} +195 -78
  16. package/templates/react-sdk-reference/{.github/prompts/generate-dse-components.prompt.md → .ai-common/prompts/generate-dse-components.md} +28 -17
  17. package/templates/react-sdk-reference/{.github/prompts/generate-field-components.prompt.md → .ai-common/prompts/generate-field-components.md} +32 -16
  18. package/templates/react-sdk-reference/{.github/prompts/generate-template-components.prompt.md → .ai-common/prompts/generate-template-components.md} +76 -22
  19. package/templates/react-sdk-reference/{.github/prompts/generate-widget-components.prompt.md → .ai-common/prompts/generate-widget-components.md} +44 -30
  20. package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -0
  21. package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
  22. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +50 -0
  23. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Banner.md +44 -0
  24. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/CaseSummaryFields.md +54 -0
  25. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/DetailsFields.md +49 -0
  26. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/FieldGroup.md +44 -0
  27. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/FieldGroupList.md +43 -0
  28. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/FieldValueList.md +46 -0
  29. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +67 -0
  30. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/Pulse.md +20 -0
  31. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/RichTextEditor.md +58 -0
  32. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +31 -0
  33. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension.md +1 -1
  34. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-components.md +18 -1
  35. package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +298 -0
  36. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/CancelAlert.md +132 -3
  37. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +358 -0
  38. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +230 -0
  39. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +221 -0
  40. package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +213 -0
  41. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Decimal.md +112 -13
  42. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Dropdown.md +127 -1
  43. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Email.md +68 -0
  44. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Group.md +51 -0
  45. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Integer.md +81 -0
  46. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Location.md +105 -0
  47. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Multiselect.md +70 -0
  48. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/ObjectReference.md +74 -0
  49. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Percentage.md +84 -0
  50. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Phone.md +81 -0
  51. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/RadioButtons.md +93 -0
  52. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/RichText.md +85 -0
  53. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/ScalarList.md +54 -0
  54. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/SelectableCard.md +55 -0
  55. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/SemanticLink.md +64 -0
  56. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/TextArea.md +66 -0
  57. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/TextContent.md +28 -0
  58. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextInput.md +67 -0
  59. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Time.md +67 -0
  60. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/URL.md +59 -0
  61. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +90 -0
  62. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-components.md +83 -52
  63. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/AdvancedSearch.md +77 -0
  64. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +273 -0
  65. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/BannerPage.md +39 -0
  66. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/CaseSummary.md +79 -0
  67. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +399 -0
  68. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +282 -0
  69. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/Confirmation.md +89 -0
  70. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +50 -0
  71. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DefaultForm.md +117 -0
  72. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DefaultPage.md +49 -0
  73. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/Details.md +59 -0
  74. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DetailsSubTabs.md +60 -0
  75. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DetailsThreeColumn.md +12 -0
  76. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DetailsTwoColumn.md +12 -0
  77. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DynamicTabs.md +67 -0
  78. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/FieldGroupTemplate.md +119 -0
  79. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/HierarchicalForm.md +45 -0
  80. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/InlineDashboard.md +41 -0
  81. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/InlineDashboardPage.md +56 -0
  82. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/ListPage.md +18 -0
  83. package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +419 -0
  84. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +40 -0
  85. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/NarrowWide.md +66 -0
  86. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/OneColumn.md +34 -0
  87. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/PromotedFilters.md +92 -0
  88. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SelfServiceCaseView.md +56 -0
  89. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SimpleTable.md +59 -0
  90. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SingleReferenceReadOnly.md +52 -0
  91. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SubTabs.md +47 -0
  92. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/TwoColumn.md +49 -0
  93. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WssNavBar.md +71 -0
  94. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-components.md +1 -1
  95. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/AppAnnouncement.md +38 -1
  96. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Attachment.md +58 -0
  97. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/CaseHistory.md +63 -0
  98. package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +81 -14
  99. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +20 -0
  100. package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/QuickCreate.md +48 -0
  101. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +66 -0
  102. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +492 -0
  103. package/templates/react-sdk-reference/package.minimal.json +29 -0
  104. package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
  105. package/templates/react-sdk-reference/src/MashupApp.tsx +8 -19
  106. package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
  107. package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
  108. package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
  109. package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -75
  110. package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
  111. package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
  112. package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
  113. package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +0 -193
  114. package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
  115. package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
  116. package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
  117. package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
  118. package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
  119. package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
  120. package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
  121. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -137
  122. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
  123. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
  124. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
  125. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
  126. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
  127. package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
  128. package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
  129. package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
  130. package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
  131. package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
  132. package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
  133. package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
  134. package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +0 -188
  135. package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +0 -173
  136. package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
  137. package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
  138. package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
  139. package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
  140. package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
  141. package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
  142. package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +0 -155
  143. package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
  144. package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
  145. package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
  146. package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
  147. package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
  148. package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
  149. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
  150. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
  151. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
  152. package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
  153. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
  154. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
  155. package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +0 -70
  156. package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
  157. package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
  158. package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
  159. package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +0 -131
  160. package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
  161. package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
  162. package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
  163. package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +0 -118
  164. package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
  165. package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
  166. package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
  167. package/templates/react-sdk-reference/.cursor/rules/field-component.mdrules +0 -74
  168. package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
  169. package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
  170. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
  171. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
  172. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
  173. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
  174. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
  175. package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
  176. package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
  177. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
  178. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
  179. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
  180. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules +0 -149
  181. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
  182. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
  183. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
  184. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
  185. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
  186. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
  187. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
  188. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension.mdrules +0 -294
  189. package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
  190. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
  191. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
  192. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
  193. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
  194. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
  195. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
  196. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
  197. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
  198. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
  199. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Group.mdrules +0 -95
  200. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
  201. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
  202. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
  203. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ObjectReference.mdrules +0 -169
  204. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
  205. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
  206. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
  207. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RichText.mdrules +0 -143
  208. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
  209. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
  210. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SemanticLink.mdrules +0 -153
  211. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
  212. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
  213. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
  214. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
  215. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
  216. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
  217. package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
  218. package/templates/react-sdk-reference/.cursor/rules/skills/template-components.mdrules +0 -327
  219. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
  220. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
  221. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/BannerPage.mdrules +0 -88
  222. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
  223. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
  224. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
  225. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
  226. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
  227. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
  228. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
  229. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Details.mdrules +0 -93
  230. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
  231. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
  232. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
  233. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
  234. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
  235. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
  236. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
  237. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
  238. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
  239. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
  240. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
  241. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
  242. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
  243. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
  244. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
  245. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
  246. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
  247. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SubTabs.mdrules +0 -84
  248. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
  249. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
  250. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
  251. package/templates/react-sdk-reference/.cursor/rules/skills/widget-components.mdrules +0 -276
  252. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
  253. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
  254. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/CaseHistory.mdrules +0 -112
  255. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
  256. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
  257. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
  258. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
  259. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
  260. package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
  261. package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
  262. package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
  263. package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
  264. package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
  265. package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
  266. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -152
  267. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
  268. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
  269. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
  270. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
  271. package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
  272. package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
  273. package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
  274. package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
  275. package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
  276. package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
  277. package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
  278. package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
  279. package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
  280. package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
  281. package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
  282. package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
  283. package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
  284. package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +0 -117
  285. package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
  286. package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
  287. package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
  288. package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
  289. package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
  290. package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
  291. package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
  292. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
  293. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +0 -112
  294. package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
  295. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
  296. package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
  297. package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
  298. package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
  299. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
  300. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
  301. package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
  302. package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
  303. package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
  304. package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
  305. package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
  306. package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
  307. package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +0 -139
  308. package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
  309. package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
  310. package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
  311. package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
  312. package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
  313. package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
  314. package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
  315. package/templates/react-sdk-reference/AGENTS.md +0 -246
  316. /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
  317. /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +0 -0
@@ -0,0 +1,273 @@
1
+ # Skill: AppShell
2
+
3
+ Top-level application shell template. Renders the outer portal/WSS portal frame: navigation bar, alert banners, operator avatar, portal logo, and case types. Provides NavContext to child components.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ > ⚠️ **CRITICAL — DO NOT SIMPLIFY THIS COMPONENT**
10
+ >
11
+ > **NavBar requires `pConn` prop.** Without it, `pConn.resolveConfigProps()` throws `TypeError: Cannot read properties of undefined`. ALWAYS pass `pConn={pConn}` where `const pConn = getPConnect()`.
12
+ >
13
+ > This component has **mandatory side effects** (portal logo loading, case type fetching from data page, WSS vs standard portal detection). Do NOT collapse to a single-line return statement.
14
+ >
15
+ > **Minimum Viable Implementation must include:**
16
+ >
17
+ > 1. `const pConn = getPConnect()` — and pass `pConn` to NavBar
18
+ > 2. WSS vs standard portal detection (`portalTemplate === 'wss'`)
19
+ > 3. `NavContext.Provider` wrapping the standard portal layout
20
+ > 4. NavBar receiving: `getPConnect`, `pConn`, `appName`, `pages`, `caseTypes`
21
+ > 5. AlertBanner rendering messages from `httpMessages` + `pageMessages`
22
+ >
23
+ > **Post-Generation Checklist:**
24
+ >
25
+ > - [ ] `pConn` passed to NavBar
26
+ > - [ ] `NavContext.Provider` wrapping standard portal
27
+ > - [ ] WSS vs standard portal detection
28
+ > - [ ] AlertBanner with combined messages
29
+ > - [ ] Operator info from `PCore.getEnvironmentInfo()`
30
+
31
+ ---
32
+
33
+ ## Component Purpose
34
+
35
+ The outermost container for the Pega SDK React app. Determines whether the app is running in WSS portal or standard portal mode, renders the appropriate navigation bar, handles HTTP and page-level alert messages, loads the portal logo asynchronously, and passes navigation links and case types to the nav bar.
36
+
37
+ ## Pega Metadata
38
+
39
+ - **Registration key:** `AppShell` (in `component-map.ts`)
40
+ - **Category:** Page template — application shell
41
+ - **Extends:** `PConnProps`
42
+
43
+ ## Props
44
+
45
+ | Prop | Type | Required | Description |
46
+ | ------------- | ----------- | -------- | ------------------------------------------------------------ |
47
+ | `pages` | `array` | Yes | Array of portal page objects `{ name, pyLabel, linkUrl }` |
48
+ | `caseTypes` | `array` | No | Fallback case types (overridden by data page fetch if empty) |
49
+ | `portalName` | `string` | Yes | Portal identifier — determines WSS vs standard rendering |
50
+ | `displayName` | `string` | No | Operator display name for avatar |
51
+ | `getPConnect` | `function` | Yes | PConnect getter |
52
+ | `children` | `ReactNode` | Yes | Main content area |
53
+
54
+ ## Component Skeleton
55
+
56
+ ```typescript
57
+ import { type PropsWithChildren, useEffect, useState } from 'react';
58
+ import { getComponentFromRegistry } from '@pega/sdk-react';
59
+ import type { PConnProps } from '@pega/sdk-react';
60
+ import { Utils } from '../../helpers/utils';
61
+ import { NavContext } from '../../helpers/reactContextHelpers';
62
+ import './AppShell.css';
63
+
64
+ interface AppShellProps extends PConnProps {
65
+ showAppName: boolean;
66
+ pages: { pxPageViewIcon: string; pyClassName: string; pyLabel: string; pyRuleName: string; pyURLContent: string }[];
67
+ caseTypes?: object[];
68
+ portalTemplate: string;
69
+ portalName: string;
70
+ portalLogo: string;
71
+ navDisplayOptions: { alignment: string; position: string };
72
+ httpMessages: string[];
73
+ pageMessages: string[];
74
+ }
75
+
76
+ export default function AppShell(props: PropsWithChildren<AppShellProps>) {
77
+ // 1. Registry lookups
78
+ const NavBar = getComponentFromRegistry('NavBar');
79
+ const WssNavBar = getComponentFromRegistry('WssNavBar');
80
+ const AlertBanner = getComponentFromRegistry('AlertBanner');
81
+
82
+ // 2. Destructure props
83
+ const {
84
+ pages = [], caseTypes = [], showAppName, children = [],
85
+ getPConnect, httpMessages = [], pageMessages = [],
86
+ portalTemplate, portalName, portalLogo, navDisplayOptions,
87
+ } = props;
88
+
89
+ // 3. State + PConnect setup
90
+ const [open, setOpen] = useState(true);
91
+ const pConn = getPConnect();
92
+ const envInfo = PCore.getEnvironmentInfo();
93
+ const userName = envInfo.getOperatorName() || '';
94
+ const currentUserInitials = Utils.getInitials(userName);
95
+ const appNameToDisplay = showAppName ? envInfo.getApplicationLabel() : '';
96
+ const localizedVal = PCore.getLocaleUtils().getLocaleValue;
97
+ const [iconURL, setIconURL] = useState('');
98
+
99
+ // 4. Messages/banners
100
+ const messages = [...httpMessages, ...pageMessages];
101
+ const hasBanner = messages.length > 0;
102
+
103
+ // 5. useEffect: load portal logo async
104
+ // 6. useEffect: fetch case types from data page
105
+ // 7. useEffect: set pyPortalTemplate for WSS
106
+
107
+ // 8. Build nav links from pages
108
+ const links = pages.map(page => ({
109
+ text: localizedVal(page.pyLabel, '', ''),
110
+ onClick: () => !page.pyURLContent
111
+ ? pConn.getActionsApi().showPage(page.pyRuleName, page.pyClassName)
112
+ : window.open(page.pyURLContent, '_blank'),
113
+ }));
114
+
115
+ // 9. Render: WSS portal vs standard portal
116
+ if (portalTemplate === 'wss') {
117
+ return (
118
+ <div id="AppShell">
119
+ <WssNavBar portalName={portalName} imageSrc={iconURL} navLinks={links}
120
+ operator={{ name: userName, currentUserInitials }} navDisplayOptions={navDisplayOptions} />
121
+ <div>{hasBanner && <AlertBanner messages={messages} />}{children}</div>
122
+ </div>
123
+ );
124
+ }
125
+ return (
126
+ <NavContext.Provider value={{ open, setOpen }}>
127
+ <div id="AppShell" style={{ display: 'flex' }}>
128
+ <NavBar getPConnect={getPConnect} pConn={pConn}
129
+ appName={appNameToDisplay} pages={pages} caseTypes={caseTypes} />
130
+ <div>{hasBanner && <AlertBanner messages={messages} />}{children}</div>
131
+ </div>
132
+ </NavContext.Provider>
133
+ );
134
+ }
135
+ ```
136
+
137
+ ## Behavioral Contract
138
+
139
+ ### Portal Type Detection
140
+
141
+ - Check `portalName` (or metadata flag) against WSS portal identifier.
142
+ - WSS portal → render `<WssNavBar>` component.
143
+ - Standard portal → render `<NavBar>` component.
144
+
145
+ ### Alert Banners
146
+
147
+ 1. Subscribe to `getPConnect()` for `httpMessages` and `pageMessages` updates.
148
+ 2. If either array is non-empty, render `<AlertBanner>` DSE component above the main content.
149
+ 3. `AlertBanner` receives the combined message array and a dismiss handler.
150
+
151
+ ### Portal Logo
152
+
153
+ 1. On mount, call `PCore.getAssetLoader().getSvcImageUrl(logoAssetName)` asynchronously.
154
+ 2. Store the resolved URL in `portalLogoUrl` state.
155
+ 3. Pass `portalLogoUrl` to the nav bar as the `logo` prop.
156
+
157
+ ### Operator Avatar
158
+
159
+ - Read `displayName` from `getPConnect().getValue('.pyUserName')` or the `displayName` prop.
160
+ - Render operator avatar (initials) in the nav bar via the `operatorInfo` prop.
161
+
162
+ ### Case Types
163
+
164
+ > ⚠️ **DO NOT hardcode `'D_pyPortalTypeList'`** — this data page does not exist in most environments and will 404.
165
+
166
+ The correct pattern reads the data page name dynamically from the environment:
167
+
168
+ ```typescript
169
+ useEffect(() => {
170
+ // @ts-expect-error - environmentInfoObject may not be in typedefs
171
+ const caseTypesDP = PCore.getEnvironmentInfo().environmentInfoObject?.pxApplication?.pyCaseTypesAvailableToCreateDP;
172
+ if (caseTypesDP) {
173
+ const portalID = pConn.getValue('.pyOwner', '');
174
+ PCore.getDataPageUtils()
175
+ .getPageDataAsync(caseTypesDP, pConn.getContextName(), { PortalName: portalID })
176
+ .then((response) => {
177
+ if (response?.pyCaseTypesAvailableToCreate) {
178
+ pConn.replaceState('.pyCaseTypesAvailableToCreate', response.pyCaseTypesAvailableToCreate, {
179
+ skipDirtyValidation: true,
180
+ });
181
+ }
182
+ })
183
+ .catch(() => undefined);
184
+ }
185
+ }, []);
186
+ ```
187
+
188
+ Key points:
189
+
190
+ 1. Data page name comes from `environmentInfoObject.pxApplication.pyCaseTypesAvailableToCreateDP` (dynamic)
191
+ 2. Context is `pConn.getContextName()` (NOT `'root'`)
192
+ 3. Parameter `{ PortalName: portalID }` is required
193
+ 4. Result is stored via `pConn.replaceState('.pyCaseTypesAvailableToCreate', ...)` — this populates PConnect state for other consumers
194
+
195
+ > ⚠️ **NavBar reads `caseTypes` from its PROP, not from PConnect state.** Do NOT shadow the `caseTypes` prop with `useState`. Pass the prop directly to NavBar:
196
+ >
197
+ > ```typescript
198
+ > const { caseTypes = [] } = props; // direct from props, NO useState
199
+ > <NavBar caseTypes={caseTypes} /> // pass the prop through
200
+ > ```
201
+ >
202
+ > If you use `useState(caseTypes)`, NavBar will receive an empty array because the React state is never updated by `replaceState`.
203
+
204
+ ### NavContext
205
+
206
+ - Wrap children in `<NavContext.Provider value={{ open, setOpen }}>`.
207
+
208
+ ### Render Structure
209
+
210
+ ```
211
+ <NavContext.Provider value={{ open, setOpen }}>
212
+ <div id="AppShell" style={{ display: 'flex' }}>
213
+ <NavBar caseTypes={caseTypes} ... />
214
+ <main style={{ flexGrow: 1, height: '100vh', overflow: 'auto', margin: '0 1rem' }}>
215
+ <AlertBanner (if messages) />
216
+ {children}
217
+ </main>
218
+ </div>
219
+ </NavContext.Provider>
220
+ ```
221
+
222
+ > ⚠️ The `<main>` element MUST have:
223
+ >
224
+ > - `flexGrow: 1` — fill remaining viewport width beside NavBar
225
+ > - `height: 100vh` — full viewport height
226
+ > - `overflow: auto` — scroll when content exceeds viewport
227
+ > - `margin: '0 1rem'` — horizontal spacing between NavBar and content (matches reference's `theme.spacing(2)` = 16px)
228
+
229
+ ## Visual Specifications
230
+
231
+ **CSS-only implementation notes:**
232
+
233
+ - Shell wrapper: `display: flex; flex-direction: column; height: 100vh`.
234
+ - Nav bar: `flex: 0 0 auto` (fixed height).
235
+ - Alert banner: `flex: 0 0 auto` (shown below nav, pushes content down).
236
+ - Content area: `flex: 1 1 auto; overflow-y: auto`.
237
+
238
+ ## Edge Cases & Special Logic
239
+
240
+ - Logo loading is async — show fallback (app name or blank) until URL resolves.
241
+ - Case types fetch may fail — catch errors and fall back to the `caseTypes` prop.
242
+ - `httpMessages` are transient (from API errors) — clear them after display or on next navigation.
243
+ - `pageMessages` are persistent until explicitly dismissed.
244
+ - If `pages` is empty, `links` array is empty — nav bar may render without page links.
245
+
246
+ ## Dependencies
247
+
248
+ - `NavBar` DSE component — standard portal navigation
249
+ - `WssNavBar` template component — WSS portal navigation (see `WssNavBar.md`)
250
+ - `AlertBanner` DSE component — message display
251
+ - `NavContext` from `../../context/nav-context`
252
+ - `PCore.getAssetLoader().getSvcImageUrl()` — logo URL resolution
253
+ - `PCore.getDataPageUtils().getPageDataAsync()` — case types data page
254
+
255
+ ## Design System Mapping
256
+
257
+ **UI control type:** Application shell layout — fixed nav + scrollable content area.
258
+
259
+ Listed design systems are examples only.
260
+
261
+ | Design System | Nav Bar | Alert Banner | Shell Layout |
262
+ | ------------------ | ------------------------ | -------------------- | --------------------------------------------- |
263
+ | Default (CSS only) | `<header>` + custom nav | `<div role='alert'>` | CSS flexbox column |
264
+ | MUI | `<AppBar>` + `<Toolbar>` | `<Alert>` | `<Box display='flex' flexDirection='column'>` |
265
+ | Ant Design | `<Layout.Header>` | `<Alert>` | `<Layout>` |
266
+ | Chakra UI | `<Box as='header'>` | `<Alert>` | `<Flex direction='column'>` |
267
+ | Shadcn/ui | Custom header | `<Alert>` | Tailwind `flex flex-col h-screen` |
268
+
269
+ When implementing in a specific design system:
270
+
271
+ - WSS vs portal detection must remain — the nav bar component differs for each
272
+ - Logo URL must be loaded asynchronously from `PCore.getAssetLoader()`
273
+ - `NavContext.Provider` must wrap children so descendant nav-aware components can access links
@@ -29,6 +29,45 @@ A thin template wrapper that delegates entirely to the `Banner` DSE component. T
29
29
  | `backgroundColor` | `string` | No | Background color for the hero. Default `''` |
30
30
  | `tintImage` | `boolean` | No | Whether to tint the background image. Default `false` |
31
31
 
32
+ ## Component Skeleton
33
+
34
+ Simplest template — pure pass-through to `Banner` DSE component.
35
+
36
+ ```typescript
37
+ import { Children, type PropsWithChildren, useMemo } from 'react';
38
+ import { getComponentFromRegistry } from '@pega/sdk-react';
39
+ import type { PConnProps } from '@pega/sdk-react';
40
+
41
+ interface BannerPageProps extends PConnProps {
42
+ layout?: string;
43
+ heading?: string;
44
+ message?: string;
45
+ imageTheme?: string;
46
+ backgroundImage?: string;
47
+ backgroundColor?: string;
48
+ tintImage?: boolean;
49
+ }
50
+
51
+ export default function BannerPage(props: PropsWithChildren<BannerPageProps>) {
52
+ const Banner = getComponentFromRegistry('Banner');
53
+ const {
54
+ children, layout = 'two-column', heading = '', message = '',
55
+ imageTheme = 'light', backgroundImage = '', backgroundColor = '', tintImage = false,
56
+ } = props;
57
+
58
+ const childArray = useMemo(() => Children.toArray(children), [children]);
59
+
60
+ return (
61
+ <Banner
62
+ variant={layout}
63
+ a={childArray[0]}
64
+ b={childArray[1]}
65
+ banner={{ variant: imageTheme, backgroundColor, title: heading, message, backgroundImage, tintImage }}
66
+ />
67
+ );
68
+ }
69
+ ```
70
+
32
71
  ## Behavioral Contract
33
72
 
34
73
  1. Retrieve `Banner` from the component registry via `getComponentFromRegistry('Banner')`.
@@ -6,6 +6,28 @@ Case summary template. Renders a summary panel with primary and secondary case f
6
6
 
7
7
  ---
8
8
 
9
+ > ⚠️ **CRITICAL — Children extraction is MANDATORY**
10
+ >
11
+ > The `arPrimaryFields` and `arSecondaryFields` props are almost always EMPTY at runtime. The Pega engine passes field data as **React children** (regions named "primary fields" and "secondary fields"), not as pre-computed array props.
12
+ >
13
+ > You MUST include the children-extraction block:
14
+ >
15
+ > ```typescript
16
+ > if (arPrimaryFields.length === 0 && arSecondaryFields.length === 0) {
17
+ > for (const child of childArr) {
18
+ > const childPConn = child.props.getPConnect();
19
+ > const childPConnData = childPConn.resolveConfigProps(childPConn.getRawMetadata());
20
+ > if (childPConnData.name.toLowerCase() === 'primary fields') {
21
+ > arPrimaryFields = childPConnData.children;
22
+ > } else if (childPConnData.name.toLowerCase() === 'secondary fields') {
23
+ > arSecondaryFields = childPConnData.children;
24
+ > }
25
+ > }
26
+ > }
27
+ > ```
28
+ >
29
+ > Without this, the summary will render completely empty.
30
+
9
31
  ## Component Purpose
10
32
 
11
33
  Displays a case's key summary data in a structured summary panel. Primary fields are shown prominently; secondary fields are shown with labels. Data is sourced either directly from props or by extracting child regions. All field values are localized before display.
@@ -25,6 +47,63 @@ Displays a case's key summary data in a structured summary panel. Primary fields
25
47
  | `arSecondaryFields` | `array` | No | Array of secondary field objects (direct prop) |
26
48
  | `getPConnect` | `function` | Yes | PConnect getter |
27
49
 
50
+ ## Component Skeleton
51
+
52
+ ```typescript
53
+ import type { PropsWithChildren, ReactElement } from 'react';
54
+ import { getComponentFromRegistry } from '@pega/sdk-react';
55
+ import type { PConnProps } from '@pega/sdk-react';
56
+
57
+ interface CaseSummaryProps extends PConnProps {
58
+ arPrimaryFields: any[];
59
+ arSecondaryFields: any[];
60
+ }
61
+
62
+ export default function CaseSummary(props: PropsWithChildren<CaseSummaryProps>) {
63
+ const CaseSummaryFields = getComponentFromRegistry('CaseSummaryFields');
64
+ const { children } = props;
65
+ let { arPrimaryFields = [], arSecondaryFields = [] } = props;
66
+
67
+ const localizedVal = PCore.getLocaleUtils().getLocaleValue;
68
+ const localeCategory = 'ModalContainer';
69
+
70
+ // 1. Helper: create component from metadata and return { value: createdComponent }
71
+ function prepareComponentInCaseSummary(pConnectMeta, getPConnect) { /* ... */ }
72
+
73
+ // 2. Helper: convert children to summary data array
74
+ function prepareCaseSummaryData(summaryFieldChildren) { /* ... */ }
75
+
76
+ // 3. If direct props empty, extract from children regions
77
+ if (arPrimaryFields.length === 0 && arSecondaryFields.length === 0) {
78
+ for (const child of children as ReactElement[]) {
79
+ const childPConn = (child as ReactElement).props.getPConnect();
80
+ const childPConnData = childPConn.resolveConfigProps(childPConn.getRawMetadata());
81
+ if (childPConnData.name.toLowerCase() === 'primary fields') {
82
+ arPrimaryFields = childPConnData.children;
83
+ arPrimaryFields.forEach(field => {
84
+ if (field.config?.value && typeof field.config?.value === 'string')
85
+ field.config.value = localizedVal(field.config.value, localeCategory);
86
+ });
87
+ } else if (childPConnData.name.toLowerCase() === 'secondary fields') {
88
+ const secondarySummaryFields = prepareCaseSummaryData(childPConn);
89
+ arSecondaryFields = childPConnData.children;
90
+ arSecondaryFields.forEach((field, index) => {
91
+ field.config.displayLabel = secondarySummaryFields[index]?.value?.props?.label;
92
+ });
93
+ }
94
+ }
95
+ }
96
+
97
+ // 4. Render
98
+ return (
99
+ <div id="CaseSummary">
100
+ <CaseSummaryFields theFields={arPrimaryFields} />
101
+ <CaseSummaryFields theFields={arSecondaryFields} />
102
+ </div>
103
+ );
104
+ }
105
+ ```
106
+
28
107
  ## Behavioral Contract
29
108
 
30
109
  ### Field Sourcing