@pega/sdk 0.0.4 → 0.0.6

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 (548) hide show
  1. package/README.md +10 -3
  2. package/dist/index.js +977 -92
  3. package/package.json +1 -1
  4. package/templates/angular-sdk-reference/package.json +12 -12
  5. package/templates/angular-sdk-reference/tsconfig.json +1 -1
  6. package/templates/react-native-sdk-reference/.claude/settings.json +5 -0
  7. package/templates/react-native-sdk-reference/.prettierignore +17 -0
  8. package/templates/react-native-sdk-reference/.vscode/extensions.json +1 -0
  9. package/templates/react-native-sdk-reference/.vscode/settings.json +7 -0
  10. package/templates/react-native-sdk-reference/AGENTS.md +3 -0
  11. package/templates/react-native-sdk-reference/CLAUDE.md +1 -0
  12. package/templates/react-native-sdk-reference/README.md +56 -0
  13. package/templates/react-native-sdk-reference/app.json +40 -5
  14. package/templates/react-native-sdk-reference/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
  15. package/templates/react-native-sdk-reference/assets/expo.icon/Assets/grid.png +0 -0
  16. package/templates/react-native-sdk-reference/assets/expo.icon/icon.json +35 -0
  17. package/templates/react-native-sdk-reference/assets/icons/bell.png +0 -0
  18. package/templates/react-native-sdk-reference/assets/icons/clock.png +0 -0
  19. package/templates/react-native-sdk-reference/assets/icons/cross.png +0 -0
  20. package/templates/react-native-sdk-reference/assets/icons/donut.png +0 -0
  21. package/templates/react-native-sdk-reference/assets/icons/gear.png +0 -0
  22. package/templates/react-native-sdk-reference/assets/icons/globe.png +0 -0
  23. package/templates/react-native-sdk-reference/assets/icons/internet.png +0 -0
  24. package/templates/react-native-sdk-reference/assets/icons/music.png +0 -0
  25. package/templates/react-native-sdk-reference/assets/icons/right-arrow.png +0 -0
  26. package/templates/react-native-sdk-reference/assets/icons/speed.png +0 -0
  27. package/templates/react-native-sdk-reference/assets/images/MediaCo.png +0 -0
  28. package/templates/react-native-sdk-reference/assets/images/adaptive-icon.png +0 -0
  29. package/templates/react-native-sdk-reference/assets/images/android-icon-background.png +0 -0
  30. package/templates/react-native-sdk-reference/assets/images/android-icon-foreground.png +0 -0
  31. package/templates/react-native-sdk-reference/assets/images/android-icon-monochrome.png +0 -0
  32. package/templates/react-native-sdk-reference/assets/images/expo-badge-white.png +0 -0
  33. package/templates/react-native-sdk-reference/assets/images/expo-badge.png +0 -0
  34. package/templates/react-native-sdk-reference/assets/images/expo-logo.png +0 -0
  35. package/templates/react-native-sdk-reference/assets/images/favicon.png +0 -0
  36. package/templates/react-native-sdk-reference/assets/images/icon.png +0 -0
  37. package/templates/react-native-sdk-reference/assets/images/logo-glow.png +0 -0
  38. package/templates/react-native-sdk-reference/assets/images/partial-react-logo.png +0 -0
  39. package/templates/react-native-sdk-reference/assets/images/react-logo.png +0 -0
  40. package/templates/react-native-sdk-reference/assets/images/react-logo@2x.png +0 -0
  41. package/templates/react-native-sdk-reference/assets/images/react-logo@3x.png +0 -0
  42. package/templates/react-native-sdk-reference/assets/images/splash-icon.png +0 -0
  43. package/templates/react-native-sdk-reference/assets/images/tutorial-web.png +0 -0
  44. package/templates/react-native-sdk-reference/eslint.config.mjs +68 -0
  45. package/templates/react-native-sdk-reference/package.json +59 -14
  46. package/templates/react-native-sdk-reference/pega-constellationjs-0.26.3.tgz +0 -0
  47. package/templates/react-native-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  48. package/templates/react-native-sdk-reference/pega-sdk-types-0.1.0.tgz +0 -0
  49. package/templates/react-native-sdk-reference/sdk-config.json +31 -9
  50. package/templates/react-native-sdk-reference/src/app/_layout.tsx +38 -0
  51. package/templates/react-native-sdk-reference/src/app/home/_layout.tsx +39 -0
  52. package/templates/react-native-sdk-reference/src/app/home/contact.tsx +11 -0
  53. package/templates/react-native-sdk-reference/src/app/home/index.tsx +36 -0
  54. package/templates/react-native-sdk-reference/src/app/home/shop.tsx +11 -0
  55. package/templates/react-native-sdk-reference/src/app/home/your-services.tsx +11 -0
  56. package/templates/react-native-sdk-reference/src/app/index.tsx +72 -0
  57. package/templates/react-native-sdk-reference/src/app/workarea.tsx +135 -0
  58. package/templates/react-native-sdk-reference/src/bridge/Context/StoreContext.ts +4 -0
  59. package/templates/react-native-sdk-reference/src/bridge/RootComponent.tsx +12 -0
  60. package/templates/react-native-sdk-reference/src/bridge/react_pconnect.jsx +334 -0
  61. package/templates/react-native-sdk-reference/src/components/common/DisplayField.tsx +29 -0
  62. package/templates/react-native-sdk-reference/src/components/common/FormFieldWrapper.tsx +5 -0
  63. package/templates/react-native-sdk-reference/src/components/common/HelperText.tsx +11 -0
  64. package/templates/react-native-sdk-reference/src/components/common/LabelText.tsx +22 -0
  65. package/templates/react-native-sdk-reference/src/components/common/inputTheme.ts +17 -0
  66. package/templates/react-native-sdk-reference/src/components/design-system/AutoComplete.tsx +126 -0
  67. package/templates/react-native-sdk-reference/src/components/design-system/FieldGroup.tsx +72 -0
  68. package/templates/react-native-sdk-reference/src/components/design-system/Radio.tsx +61 -0
  69. package/templates/react-native-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +196 -0
  70. package/templates/react-native-sdk-reference/src/components/field/AutoComplete/index.tsx +1 -0
  71. package/templates/react-native-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +89 -0
  72. package/templates/react-native-sdk-reference/src/components/field/Checkbox/index.tsx +1 -0
  73. package/templates/react-native-sdk-reference/src/components/field/Currency/Currency.tsx +84 -0
  74. package/templates/react-native-sdk-reference/src/components/field/Currency/index.tsx +1 -0
  75. package/templates/react-native-sdk-reference/src/components/field/Date/Date.tsx +94 -0
  76. package/templates/react-native-sdk-reference/src/components/field/Date/index.tsx +1 -0
  77. package/templates/react-native-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +211 -0
  78. package/templates/react-native-sdk-reference/src/components/field/Dropdown/index.tsx +1 -0
  79. package/templates/react-native-sdk-reference/src/components/field/Email/Email.tsx +81 -0
  80. package/templates/react-native-sdk-reference/src/components/field/Email/index.tsx +1 -0
  81. package/templates/react-native-sdk-reference/src/components/field/Group/Group.tsx +47 -0
  82. package/templates/react-native-sdk-reference/src/components/field/Group/index.tsx +1 -0
  83. package/templates/react-native-sdk-reference/src/components/field/Integer/Integer.tsx +84 -0
  84. package/templates/react-native-sdk-reference/src/components/field/Integer/index.tsx +1 -0
  85. package/templates/react-native-sdk-reference/src/components/field/Phone/Phone.tsx +85 -0
  86. package/templates/react-native-sdk-reference/src/components/field/Phone/index.ts +1 -0
  87. package/templates/react-native-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +118 -0
  88. package/templates/react-native-sdk-reference/src/components/field/RadioButtons/index.ts +1 -0
  89. package/templates/react-native-sdk-reference/src/components/field/TextArea/TextArea.tsx +86 -0
  90. package/templates/react-native-sdk-reference/src/components/field/TextArea/index.tsx +1 -0
  91. package/templates/react-native-sdk-reference/src/components/field/TextInput/TextInput.tsx +84 -0
  92. package/templates/react-native-sdk-reference/src/components/field/TextInput/index.tsx +1 -0
  93. package/templates/react-native-sdk-reference/src/components/field/URL/URL.tsx +86 -0
  94. package/templates/react-native-sdk-reference/src/components/field/URL/index.tsx +1 -0
  95. package/templates/react-native-sdk-reference/src/components/helpers/data_page.ts +20 -0
  96. package/templates/react-native-sdk-reference/src/components/helpers/event-utils.ts +20 -0
  97. package/templates/react-native-sdk-reference/src/components/helpers/instructions-utils.ts +57 -0
  98. package/templates/react-native-sdk-reference/src/components/helpers/state-utils.tsx +46 -0
  99. package/templates/react-native-sdk-reference/src/components/helpers/template-utils.ts +75 -0
  100. package/templates/react-native-sdk-reference/src/components/helpers/utils.ts +339 -0
  101. package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/ActionButtons.tsx +63 -0
  102. package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/index.tsx +1 -0
  103. package/templates/react-native-sdk-reference/src/components/infra/Assignment/Assignment.tsx +348 -0
  104. package/templates/react-native-sdk-reference/src/components/infra/Assignment/index.tsx +1 -0
  105. package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/AssignmentCard.tsx +56 -0
  106. package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/index.tsx +1 -0
  107. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/FlowContainer.tsx +57 -0
  108. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/helpers.ts +137 -0
  109. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/index.tsx +1 -0
  110. package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/RootContainer.tsx +52 -0
  111. package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/index.tsx +1 -0
  112. package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/helper.ts +128 -0
  113. package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/index.tsx +59 -0
  114. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/ViewContainer.tsx +31 -0
  115. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/helper.ts +39 -0
  116. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/index.ts +1 -0
  117. package/templates/react-native-sdk-reference/src/components/infra/Containers/helper.ts +9 -0
  118. package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/ErrorBoundary.tsx +53 -0
  119. package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/index.tsx +1 -0
  120. package/templates/react-native-sdk-reference/src/components/infra/MultiStep/MultiStep.tsx +24 -0
  121. package/templates/react-native-sdk-reference/src/components/infra/MultiStep/index.ts +1 -0
  122. package/templates/react-native-sdk-reference/src/components/infra/Reference/Reference.tsx +68 -0
  123. package/templates/react-native-sdk-reference/src/components/infra/Reference/index.tsx +1 -0
  124. package/templates/react-native-sdk-reference/src/components/infra/Reference/utils.ts +16 -0
  125. package/templates/react-native-sdk-reference/src/components/infra/Region/Region.tsx +10 -0
  126. package/templates/react-native-sdk-reference/src/components/infra/Region/index.tsx +1 -0
  127. package/templates/react-native-sdk-reference/src/components/infra/View/View.tsx +49 -0
  128. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +38 -0
  129. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/index.tsx +1 -0
  130. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/utils/index.ts +28 -0
  131. package/templates/react-native-sdk-reference/src/components/template/Details/Details.tsx +82 -0
  132. package/templates/react-native-sdk-reference/src/components/template/Details/index.tsx +1 -0
  133. package/templates/react-native-sdk-reference/src/components/template/OneColumn/OneColumn.tsx +29 -0
  134. package/templates/react-native-sdk-reference/src/components/template/OneColumn/index.tsx +1 -0
  135. package/templates/react-native-sdk-reference/src/context/LoaderContext.tsx +42 -0
  136. package/templates/react-native-sdk-reference/src/mediaco/AdvBanner.tsx +62 -0
  137. package/templates/react-native-sdk-reference/src/mediaco/Header.tsx +60 -0
  138. package/templates/react-native-sdk-reference/src/mediaco/HomeScreen.tsx +78 -0
  139. package/templates/react-native-sdk-reference/src/mediaco/QuickActions.tsx +68 -0
  140. package/templates/react-native-sdk-reference/src/mediaco/ResolutionScreen.tsx +48 -0
  141. package/templates/react-native-sdk-reference/src/mediaco/SafeArea.tsx +11 -0
  142. package/templates/react-native-sdk-reference/src/mediaco/TabBar.tsx +102 -0
  143. package/templates/react-native-sdk-reference/src/mediaco/YourServices.tsx +90 -0
  144. package/templates/react-native-sdk-reference/src/sdk-pega-component-map.ts +64 -0
  145. package/templates/react-native-sdk-reference/src/types/PConnProps.d.ts +41 -0
  146. package/templates/react-native-sdk-reference/src/utils/auth.ts +62 -0
  147. package/templates/react-native-sdk-reference/src/utils/init-pcore.ts +37 -0
  148. package/templates/react-native-sdk-reference/src/utils/pcore-polyfills.ts +66 -0
  149. package/templates/react-native-sdk-reference/tsconfig.json +9 -8
  150. package/templates/react-sdk-reference/.ai-common/agents/embedded-flow-expert.md +171 -0
  151. package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +44 -48
  152. package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions-embedded.md +119 -0
  153. package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions.md +192 -0
  154. package/templates/react-sdk-reference/.ai-common/instructions/component-map.md +35 -0
  155. package/templates/react-sdk-reference/.ai-common/instructions/dse-component.md +47 -0
  156. package/templates/react-sdk-reference/.ai-common/instructions/embedded-component.md +134 -0
  157. package/templates/react-sdk-reference/.ai-common/instructions/field-component.md +50 -0
  158. package/templates/react-sdk-reference/.ai-common/instructions/template-component.md +43 -0
  159. package/templates/react-sdk-reference/.ai-common/instructions/widget-component.md +45 -0
  160. package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +193 -0
  161. package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/component-manifest.json +106 -2
  162. package/templates/react-sdk-reference/.ai-common/prompts/embedded-component-manifest.md +155 -0
  163. package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +358 -0
  164. package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +165 -0
  165. package/templates/react-sdk-reference/.ai-common/prompts/generate-embedded-components.md +315 -0
  166. package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +190 -0
  167. package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +227 -0
  168. package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +172 -0
  169. package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -0
  170. package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
  171. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +61 -25
  172. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +176 -0
  173. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +180 -0
  174. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/DetailsFields.md +180 -0
  175. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroup.md +153 -0
  176. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroupList.md +136 -0
  177. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldValueList.md +140 -0
  178. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +85 -41
  179. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Pulse.md +97 -0
  180. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +226 -0
  181. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +35 -20
  182. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension.md +169 -0
  183. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/analyze-customer-repo.md +130 -0
  184. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/authenticate.md +311 -0
  185. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/run-and-verify-integration.md +156 -0
  186. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/wire-integration.md +476 -0
  187. package/templates/react-sdk-reference/.ai-common/skills/field-components.md +190 -0
  188. package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +157 -0
  189. package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +178 -0
  190. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +189 -0
  191. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +136 -0
  192. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +126 -0
  193. package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +115 -0
  194. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +119 -0
  195. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +136 -0
  196. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +99 -0
  197. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Group.md +88 -0
  198. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +102 -0
  199. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +142 -0
  200. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Multiselect.md +42 -53
  201. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/ObjectReference.md +36 -60
  202. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +113 -0
  203. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +100 -0
  204. package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +153 -0
  205. package/templates/react-sdk-reference/.ai-common/skills/field-skills/RichText.md +117 -0
  206. package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +95 -0
  207. package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +155 -0
  208. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/SemanticLink.md +35 -57
  209. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +109 -0
  210. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextContent.md +27 -52
  211. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +112 -0
  212. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +102 -0
  213. package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +96 -0
  214. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +41 -78
  215. package/templates/react-sdk-reference/.ai-common/skills/infra-components.md +165 -0
  216. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/ActionButtons.md +122 -0
  217. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/MultiStep.md +178 -0
  218. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/Stages.md +140 -0
  219. package/templates/react-sdk-reference/.ai-common/skills/template-components.md +198 -0
  220. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +126 -0
  221. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +160 -0
  222. package/templates/react-sdk-reference/.ai-common/skills/template-skills/BannerPage.md +90 -0
  223. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +129 -0
  224. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +196 -0
  225. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +157 -0
  226. package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +149 -0
  227. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +46 -31
  228. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +141 -0
  229. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DefaultPage.md +40 -34
  230. package/templates/react-sdk-reference/.ai-common/skills/template-skills/Details.md +96 -0
  231. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsSubTabs.md +103 -0
  232. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md +85 -0
  233. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsTwoColumn.md +77 -0
  234. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DynamicTabs.md +103 -0
  235. package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +130 -0
  236. package/templates/react-sdk-reference/.ai-common/skills/template-skills/HierarchicalForm.md +200 -0
  237. package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboard.md +110 -0
  238. package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboardPage.md +105 -0
  239. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/ListPage.md +21 -16
  240. package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +234 -0
  241. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +18 -23
  242. package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +161 -0
  243. package/templates/react-sdk-reference/.ai-common/skills/template-skills/OneColumn.md +114 -0
  244. package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +132 -0
  245. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +173 -0
  246. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SimpleTable.md +44 -24
  247. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +103 -0
  248. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SubTabs.md +89 -0
  249. package/templates/react-sdk-reference/.ai-common/skills/template-skills/TwoColumn.md +133 -0
  250. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +36 -43
  251. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/WssNavBar.md +26 -45
  252. package/templates/react-sdk-reference/.ai-common/skills/widget-components.md +124 -0
  253. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +94 -0
  254. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +163 -0
  255. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/CaseHistory.md +90 -0
  256. package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +68 -62
  257. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +24 -19
  258. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/QuickCreate.md +27 -44
  259. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +35 -61
  260. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +261 -0
  261. package/templates/react-sdk-reference/package.json +1 -1
  262. package/templates/react-sdk-reference/package.minimal.json +29 -0
  263. package/templates/react-sdk-reference/pega-auth-0.2.44.tgz +0 -0
  264. package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  265. package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
  266. package/templates/react-sdk-reference/src/MashupApp.tsx +8 -19
  267. package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
  268. package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +13 -3
  269. package/templates/react-native-sdk-reference/.github/AGENTS.md +0 -23
  270. package/templates/react-native-sdk-reference/.github/copilot-instructions.md +0 -40
  271. package/templates/react-native-sdk-reference/.github/skills/pega-sdk-component.md +0 -48
  272. package/templates/react-native-sdk-reference/App.tsx +0 -49
  273. package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
  274. package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
  275. package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -75
  276. package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
  277. package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
  278. package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
  279. package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
  280. package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
  281. package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
  282. package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
  283. package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
  284. package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
  285. package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
  286. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -137
  287. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +0 -152
  288. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
  289. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +0 -148
  290. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
  291. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +0 -113
  292. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
  293. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
  294. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
  295. package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
  296. package/templates/react-sdk-reference/.claude/skills/field-components.md +0 -295
  297. package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
  298. package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +0 -211
  299. package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
  300. package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
  301. package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
  302. package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
  303. package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +0 -99
  304. package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +0 -134
  305. package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +0 -109
  306. package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +0 -96
  307. package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
  308. package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +0 -145
  309. package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
  310. package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
  311. package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
  312. package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
  313. package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
  314. package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
  315. package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +0 -98
  316. package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +0 -117
  317. package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
  318. package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
  319. package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
  320. package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
  321. package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
  322. package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
  323. package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +0 -86
  324. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
  325. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
  326. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
  327. package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
  328. package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +0 -104
  329. package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +0 -112
  330. package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +0 -90
  331. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
  332. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +0 -80
  333. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
  334. package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +0 -106
  335. package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +0 -112
  336. package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +0 -116
  337. package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +0 -108
  338. package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +0 -82
  339. package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
  340. package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
  341. package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +0 -143
  342. package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
  343. package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +0 -130
  344. package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +0 -142
  345. package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
  346. package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
  347. package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +0 -133
  348. package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +0 -139
  349. package/templates/react-sdk-reference/.claude/skills/widget-components.md +0 -260
  350. package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +0 -84
  351. package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +0 -151
  352. package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +0 -110
  353. package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
  354. package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
  355. package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
  356. package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
  357. package/templates/react-sdk-reference/.cursor/rules/field-component.mdrules +0 -74
  358. package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
  359. package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
  360. package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +0 -193
  361. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
  362. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
  363. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
  364. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
  365. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
  366. package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
  367. package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
  368. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
  369. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
  370. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
  371. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules +0 -149
  372. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
  373. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
  374. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
  375. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
  376. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
  377. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
  378. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
  379. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension.mdrules +0 -294
  380. package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
  381. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
  382. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
  383. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
  384. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
  385. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
  386. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
  387. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
  388. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
  389. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
  390. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Group.mdrules +0 -95
  391. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
  392. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
  393. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
  394. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ObjectReference.mdrules +0 -169
  395. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
  396. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
  397. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
  398. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RichText.mdrules +0 -143
  399. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
  400. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
  401. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SemanticLink.mdrules +0 -153
  402. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
  403. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
  404. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
  405. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
  406. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
  407. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
  408. package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
  409. package/templates/react-sdk-reference/.cursor/rules/skills/template-components.mdrules +0 -327
  410. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
  411. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
  412. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/BannerPage.mdrules +0 -88
  413. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
  414. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
  415. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
  416. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
  417. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
  418. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
  419. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
  420. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Details.mdrules +0 -93
  421. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
  422. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
  423. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
  424. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
  425. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
  426. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
  427. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
  428. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
  429. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
  430. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
  431. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
  432. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
  433. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
  434. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
  435. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
  436. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
  437. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
  438. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SubTabs.mdrules +0 -84
  439. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
  440. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
  441. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
  442. package/templates/react-sdk-reference/.cursor/rules/skills/widget-components.mdrules +0 -276
  443. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
  444. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
  445. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/CaseHistory.mdrules +0 -112
  446. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
  447. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
  448. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
  449. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
  450. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
  451. package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
  452. package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
  453. package/templates/react-sdk-reference/.github/copilot-instructions.md +0 -243
  454. package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +0 -40
  455. package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +0 -77
  456. package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +0 -77
  457. package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +0 -95
  458. package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +0 -90
  459. package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +0 -192
  460. package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
  461. package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +0 -411
  462. package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +0 -205
  463. package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +0 -223
  464. package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +0 -229
  465. package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +0 -208
  466. package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
  467. package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
  468. package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
  469. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -152
  470. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
  471. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
  472. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +0 -134
  473. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
  474. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +0 -118
  475. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
  476. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +0 -85
  477. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +0 -232
  478. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
  479. package/templates/react-sdk-reference/.github/skills/design-system-extension.md +0 -291
  480. package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
  481. package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
  482. package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
  483. package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
  484. package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
  485. package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
  486. package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
  487. package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
  488. package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
  489. package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
  490. package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
  491. package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +0 -88
  492. package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
  493. package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +0 -188
  494. package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +0 -173
  495. package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +0 -93
  496. package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +0 -129
  497. package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +0 -167
  498. package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +0 -149
  499. package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +0 -134
  500. package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +0 -231
  501. package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +0 -155
  502. package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
  503. package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +0 -107
  504. package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +0 -89
  505. package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +0 -86
  506. package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
  507. package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
  508. package/templates/react-sdk-reference/.github/skills/template-components.md +0 -321
  509. package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +0 -150
  510. package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
  511. package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
  512. package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +0 -106
  513. package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
  514. package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
  515. package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +0 -109
  516. package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
  517. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
  518. package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
  519. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +0 -97
  520. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
  521. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +0 -80
  522. package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
  523. package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
  524. package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
  525. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
  526. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
  527. package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +0 -70
  528. package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
  529. package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
  530. package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +0 -114
  531. package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
  532. package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
  533. package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +0 -131
  534. package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +0 -108
  535. package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +0 -82
  536. package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
  537. package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
  538. package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
  539. package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
  540. package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
  541. package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
  542. package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
  543. package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +0 -118
  544. package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
  545. package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
  546. package/templates/react-sdk-reference/AGENTS.md +0 -246
  547. package/templates/react-sdk-reference/pega-auth-0.2.42.tgz +0 -0
  548. /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
@@ -12,13 +12,13 @@ Provides the top navigation bar for WSS (Web Self-Service) portals. Responsive:
12
12
 
13
13
  ## Pega Metadata
14
14
 
15
- - **Registration key:** `WssNavBar` (in `component-map.ts`)
15
+ - **Registration key:** `WssNavBar` (in the project's component map)
16
16
  - **Category:** Navigation template — WSS portal
17
- - **Extends:** `PConnProps`
17
+ - **Extends:** the project's base component interface
18
18
 
19
- ## Props
19
+ ## Inputs
20
20
 
21
- | Prop | Type | Required | Description |
21
+ | Input | Type | Required | Description |
22
22
  | ------------------- | ---------- | -------- | ----------------------------------------------------- |
23
23
  | `links` | `array` | Yes | Array of `{ label, url, id }` navigation link objects |
24
24
  | `navDisplayOptions` | `object` | No | `{ alignment: 'left' | 'right' | 'center', position: 'inline' | 'below' }` |
@@ -26,14 +26,26 @@ Provides the top navigation bar for WSS (Web Self-Service) portals. Responsive:
26
26
  | `operatorInfo` | `object` | No | `{ displayName: string }` — for avatar initials |
27
27
  | `getPConnect` | `function` | Yes | PConnect getter |
28
28
 
29
+ ## Implementation Structure
30
+
31
+ **Module Setup:** Use the project's base component interface for typing. Import the `logout` function from the SDK auth manager (`@pega/auth/lib/sdk-auth-manager`). Include a companion styles file for layout. Register the component under its key in the project's component map.
32
+
33
+ **Main Component Logic** — steps in order:
34
+
35
+ 1. Receive inputs: `appInfo`, `navLinks`, `operator`, and `navDisplayOptions`; further destructure `alignment` and `position` from `navDisplayOptions`.
36
+ 2. Declare local state for menu anchoring: one for the mobile hamburger menu, one for the user/avatar menu (both initialized to `null`). Bind `localizedVal` to `PCore.getLocaleUtils().getLocaleValue`.
37
+ 3. Build a reusable `navLinksContent` element — a container hidden on mobile and shown as a flex row on desktop (justified per `alignment`), containing one button per nav link that invokes the link's `onClick`.
38
+ 4. Render an app bar with static position, containing a toolbar with, in order: the app logo/name button (invoking `appInfo.onClick`, showing `appInfo.imageSrc` and `appInfo.appName`); a hamburger icon button shown only on mobile that opens the mobile menu; a mobile dropdown menu (anchored to the hamburger state, open when set, closing by resetting to `null`) listing each nav link as a menu item; the `navLinksContent` block rendered inline when `position === 'inline'`; and an avatar showing `operator.currentUserInitials` that opens a user menu containing a "Log off" menu item (localized via `localizedVal('Log off', 'AppShell')`) wired to the imported `logout` function.
39
+ 5. When `position === 'below'`, render the `navLinksContent` block again below the toolbar, still inside the app bar.
40
+
29
41
  ## Behavioral Contract
30
42
 
31
43
  ### Responsive Layout
32
44
 
33
- - **Mobile (xs breakpoint):** Hamburger menu button (`<MenuIcon>`) shown; nav links hidden.
34
- - On click: opens a `<Drawer>` or dropdown menu with nav links.
35
- - CSS: `display: { xs: 'flex', md: 'none' }` on hamburger; `display: { xs: 'none', md: 'flex' }` on nav links.
36
- - **Desktop (md+ breakpoint):** Nav links shown inline; hamburger hidden.
45
+ - **Mobile (narrow viewport):** Hamburger menu button shown; nav links hidden.
46
+ - On click: opens a dropdown or drawer with nav links.
47
+ - CSS approach: hide nav links at narrow breakpoint, show hamburger; reverse at wide breakpoint.
48
+ - **Desktop (wide viewport):** Nav links shown inline; hamburger hidden.
37
49
 
38
50
  ### Navigation Position
39
51
 
@@ -47,7 +59,7 @@ From `navDisplayOptions.position`:
47
59
  From `navDisplayOptions.alignment`:
48
60
 
49
61
  - `'left'` — links flush left.
50
- - `'right'` — links pushed to the right (flex with `ml: 'auto'`).
62
+ - `'right'` — links pushed to the right (e.g., flex with auto-margin on left side).
51
63
  - `'center'` — links centered.
52
64
 
53
65
  ### Operator Avatar
@@ -55,7 +67,7 @@ From `navDisplayOptions.alignment`:
55
67
  - Extract initials from `operatorInfo.displayName`:
56
68
  - Split by space, take first letter of first and last word.
57
69
  - E.g. `"John Smith"` → `"JS"`.
58
- - Render as `<Avatar>{initials}</Avatar>`.
70
+ - Render as a circular avatar element with initials text.
59
71
  - Clicking avatar opens a menu with a Logout option.
60
72
 
61
73
  ### Logout
@@ -65,27 +77,7 @@ From `navDisplayOptions.alignment`:
65
77
 
66
78
  ### Render Structure
67
79
 
68
- ```
69
- <AppBar position='static'>
70
- <Toolbar>
71
- {/* Logo */}
72
- {portalLogoUrl && <img src={portalLogoUrl} alt='logo' />}
73
-
74
- {/* Hamburger (mobile) */}
75
- <IconButton sx={{ display: { xs: 'flex', md: 'none' } }} onClick={openMobileMenu}>
76
- <MenuIcon />
77
- </IconButton>
78
-
79
- {/* Nav links (desktop) */}
80
- <Box sx={{ display: { xs: 'none', md: 'flex' }, ...alignmentStyles }}>
81
- {links.map(link => <Button key={link.id} href={link.url}>{link.label}</Button>)}
82
- </Box>
83
-
84
- {/* Operator avatar */}
85
- <Avatar onClick={openUserMenu}>{initials}</Avatar>
86
- </Toolbar>
87
- </AppBar>
88
- ```
80
+ An app bar (static position) containing a toolbar with, in order: the portal logo image (when `portalLogoUrl` is set); a hamburger icon button hidden on desktop that opens the mobile menu; a nav-links container hidden on mobile / shown on desktop applying the alignment styles, with one button per link (using `link.url` as the href and `link.label` as the text); and an avatar showing the operator initials that opens the user menu.
89
81
 
90
82
  ## Visual Specifications
91
83
 
@@ -110,29 +102,18 @@ From `navDisplayOptions.alignment`:
110
102
  - `portalLogoUrl` is async — show fallback text until resolved.
111
103
  - `operatorInfo.displayName` may be undefined — guard and show a default avatar (single letter or icon).
112
104
  - `navDisplayOptions` may be absent — default to `{ alignment: 'left', position: 'inline' }`.
113
- - Mobile drawer state must be managed separately from the user menu state.
105
+ - Mobile menu state must be managed separately from the user menu state.
114
106
 
115
107
  ## Dependencies
116
108
 
117
109
  - `logout` from `@pega/auth/lib/sdk-auth-manager` — logout handler
118
- - MUI: `<AppBar>`, `<Toolbar>`, `<IconButton>`, `<Avatar>`, `<Menu>`, `<MenuItem>`, `<Button>`, `<Box>`
119
- - MUI Icons: `<MenuIcon>`
110
+ - The project's design system components for app bar, toolbar, icon button, avatar, menu, and button elements
120
111
 
121
112
  ## Design System Mapping
122
113
 
123
114
  **UI control type:** Responsive application navigation bar with avatar and logout.
124
115
 
125
- Listed design systems are examples only.
126
-
127
- | Design System | App Bar | Avatar | Mobile Menu |
128
- | ------------------ | ------------------------ | ---------------------- | ------------------------ |
129
- | Default (CSS only) | `<header>` + CSS | `<div class='avatar'>` | CSS hamburger + dropdown |
130
- | MUI | `<AppBar>` + `<Toolbar>` | `<Avatar>` | `<Drawer>` or `<Menu>` |
131
- | Ant Design | `<Layout.Header>` | `<Avatar>` | `<Drawer>` |
132
- | Chakra UI | `<Box as='header'>` | `<Avatar>` | `<Drawer>` |
133
- | Shadcn/ui | Custom `<header>` | Custom initials avatar | `<Sheet>` (drawer) |
134
-
135
- When implementing in a specific design system:
116
+ When implementing, choose the design system's app bar, avatar, and mobile menu (drawer or dropdown) components that match the project's chosen library. All design systems must preserve:
136
117
 
137
118
  - `logout` from `@pega/auth/lib/sdk-auth-manager` is mandatory — always call the SDK logout, not a custom one
138
119
  - Responsive breakpoints for hamburger/nav visibility must be implemented
@@ -0,0 +1,124 @@
1
+ # Skill: Widget Components
2
+
3
+ Create or replace widget components in the project. Widgets are self-contained UI blocks that fetch their own data from Pega APIs (data pages, case info) and render interactive features (ToDo lists, attachments, case history, etc.).
4
+
5
+ ---
6
+
7
+ ## Architecture Overview
8
+
9
+ Each widget lives in its own folder under the project's widget components directory, named after the component. The folder typically contains: the component implementation file; optionally a re-export module; optionally a companion stylesheet; optionally a widget-specific utilities module; optionally a types definition module; and optionally a metadata file.
10
+
11
+ ---
12
+
13
+ ## Input Contract
14
+
15
+ Widget components extend the project's **base component interface** (which provides `getPConnect`). A typical widget input contract adds widget-specific inputs provided by the platform, such as `datasource`, `headerText`, and `context`.
16
+
17
+ Some widgets extend the project's **field input contract** when they behave like form fields (e.g., Attachment): the Attachment input contract overrides `value` to be `any` (an attachment list rather than a string), and adds `allowMultiple` and `extensions`.
18
+
19
+ ---
20
+
21
+ ## Implementation Pattern
22
+
23
+ ### Data-Fetching Widget
24
+
25
+ Widgets typically fetch data from Pega data pages on mount. This pattern is design-system agnostic. The design-system render section must be replaced with your design system's presentation primitives (card, list, table, etc.) — see "Design System Adaptation" below.
26
+
27
+ **Module Setup:** The component depends on local state management and a lifecycle effect for data fetching, plus the design system's presentation components (card, list, etc.). Define the input contract as an extension of the project's base component interface with `datasource` and `headerText` fields.
28
+
29
+ **Main Component Logic** — steps in order:
30
+
31
+ 1. Receive `getPConnect`, `datasource`, and `headerText` (default `'My Widget'`) from inputs; call `getPConnect()` into `pConn`. Declare `data` local state (array, default empty) and `loading` local state (boolean, default `true`).
32
+ 2. **Fetch data from a Pega data page on mount** — this block is always the same regardless of design system. In a lifecycle effect that runs once on initialization: resolve `context` via `pConn.getContextName()`; call `PCore.getDataPageUtils().getDataAsync(datasource?.source, context, {}, { pageNumber: 1, pageSize: 10 }, { select: [{ field: 'pyID' }, { field: 'pyLabel' }] }, { invalidateCache: true })` — where `datasource?.source` is the data page name (e.g. `'D_WorkList'`); on success, set `data` to `response?.data` when it is an array (otherwise an empty array) and set `loading` to `false`; on failure, just set `loading` to `false`.
33
+ 3. **Loading state** — while `loading` is true, render a simple loading placeholder (replace with the design system's loading indicator if available).
34
+ 4. **Design-system render** — once loaded, render the design system's card/list primitives: a card with a header showing `headerText`, and inside the card content, a list where each `data` item (keyed by index) renders `item.pyLabel`. See "Design System Adaptation" below for guidance on choosing the actual DS components.
35
+
36
+ ---
37
+
38
+ ## Design System Adaptation
39
+
40
+ The PCore data-fetching logic (all `PCore.*` calls) is always identical regardless of design system. Only the design-system render section changes.
41
+
42
+ **1. Check the component-specific skill file** — `{{SKILL_DIR}}/widget-skills/<ComponentName>.md` contains a **Design System Mapping** section where available. Use it as a starting point.
43
+
44
+ **2. If the chosen design system is not covered** — use the component purpose description to identify the appropriate DS primitives (card, list, table, button, badge, etc.).
45
+
46
+ **3. Discover the API from installed packages** — confirm component names and inputs from the design system's type declaration files before writing the render markup.
47
+
48
+ **4. Common widget UI primitive mapping:**
49
+
50
+ | Widget pattern | Typical DS equivalent |
51
+ | -------------------- | ----------------------------------------------- |
52
+ | Container with title | Card + header/title, or Panel, Box |
53
+ | Item list | List, or Table rows |
54
+ | Loading indicator | Spinner, Skeleton, Loading |
55
+ | Action button | Button with click handler |
56
+ | Status badge | Badge, Tag, Chip |
57
+ | Empty state | DS empty/placeholder component or plain element |
58
+
59
+ **5. Icons** — if the DS has a companion icon package, check its exports before using any icon name. Never guess icon names.
60
+
61
+ ---
62
+
63
+ ### Action Widget (opens assignments/cases)
64
+
65
+ Define `openAssignment(assignment)`: resolve `classname` and `ID` from `assignment`; resolve `context` via `getPConnect().getContextName()`; build `options = { containerName: 'primary', channelName: '' }`; then call `PCore.getMashupApi().openAssignment(ID, classname, options)`. Define `createCase(caseType)` to call `PCore.getMashupApi().createCase(caseType, PCore.getConstants().APP.APP)`.
66
+
67
+ ---
68
+
69
+ ## Common Pega APIs Used in Widgets
70
+
71
+ ### Data Pages
72
+
73
+ Fetch list data via `PCore.getDataPageUtils().getDataAsync(dataPageName, context, params, paging, query, options)`. Get a single-record page via `PCore.getDataPageUtils().getPageDataAsync(dataPageName, context, params)`.
74
+
75
+ ### Case Info
76
+
77
+ Call `getPConnect()` into `pConn`, then read `pConn.getCaseInfo().getKey()` for the case key, `pConn.getCaseInfo().getID()` for the case ID, and `pConn.getCaseInfo().getName()` for the case name.
78
+
79
+ ### Attachments
80
+
81
+ Use `PCore.getAttachmentUtils().prepareAttachmentData(value)` to prepare attachment data, `PCore.getAttachmentUtils().uploadAttachment(file, onProgress, errorHandler, context)` to upload, and `PCore.getAttachmentUtils().downloadAttachment(attachmentID, context)` to download.
82
+
83
+ ### Actions
84
+
85
+ Resolve `actionsApi` via `pConn.getActionsApi()`, then use `actionsApi.updateFieldValue(propName, value)` to update a field's value, `actionsApi.triggerFieldChange(propName, value)` to trigger a field change event, and `actionsApi.openLocalAction(actionName, options)` to open a local action.
86
+
87
+ ### Container Management
88
+
89
+ Resolve `containerManager` via `pConn.getContainerManager()`, then call `containerManager.addContainerItem({ semanticURL, key, flowName, caseViewMode, resourceType, data })` to add a container item.
90
+
91
+ ---
92
+
93
+ ## Registration
94
+
95
+ Register widgets in the project's component map: import the widget's default export from its folder under the widget components directory, then add it to the object returned by the project's component registration function. The key must match the Pega component name.
96
+
97
+ ---
98
+
99
+ ## Existing Widget Components
100
+
101
+ | Component | Description | Key APIs |
102
+ | --------------- | --------------------------- | ------------------------------------------------------------------- |
103
+ | AppAnnouncement | System-wide announcements | `PCore.getMessagingServiceUtils()` |
104
+ | Attachment | File upload/download | `PCore.getAttachmentUtils()` |
105
+ | CaseHistory | Case audit trail | `PCore.getDataPageUtils()` |
106
+ | FileUtility | File management utility | `PCore.getAttachmentUtils()` |
107
+ | Followers | Case followers list | `PCore.getDataPageUtils()` |
108
+ | QuickCreate | Quick case creation buttons | `PCore.getMashupApi().createCase()` |
109
+ | SummaryItem | Single summary card | Inputs from parent |
110
+ | SummaryList | List of summary cards | Inputs from parent |
111
+ | ToDo | Assignment worklist | `PCore.getDataPageUtils()`, `PCore.getMashupApi().openAssignment()` |
112
+
113
+ ---
114
+
115
+ ## Key Conventions
116
+
117
+ 1. **Default export** — Each component is exported as the module's default export.
118
+ 2. **Self-contained data** — Widgets fetch their own data (don't rely on parent passing data down).
119
+ 3. **Loading states** — Always handle loading/error states when fetching data.
120
+ 4. **PCore globals** — Access `PCore` directly (declared globally by the Pega runtime type definitions).
121
+ 5. **Localization** — Use `pConn.getLocalizationService()` for translated strings when available.
122
+ 6. **Context** — Use `pConn.getContextName()` as the context parameter for data page calls.
123
+ 7. **Card layout** — Widgets typically render inside the design system's card component with a header and content area.
124
+ 8. **Action handling** — Use `PCore.getMashupApi()` for case/assignment operations, `actionsApi` for field updates.
@@ -0,0 +1,94 @@
1
+ # Skill: AppAnnouncement
2
+
3
+ Card-based announcement widget. Displays a system-wide or application announcement with an optional bullet list of items and a "See what's new" external link button.
4
+
5
+ > **Prerequisite skill:** [`widget-components.md`](../widget-components.md) — covers architecture, inputs interface, data-fetching patterns, and registration conventions common to ALL widget components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders an announcement card with a heading, description text, optional bullet list of items sourced from a `datasource` input, and an optional external link button. Styled with a left accent border to visually distinguish it from other cards.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `AppAnnouncement` (registered in the project's component map)
16
+ - **Category:** Widget — informational display
17
+ - **Extends:** the project's base component interface
18
+
19
+ ## Inputs
20
+
21
+ | Input | Type | Required | Description |
22
+ | -------------- | ---------- | -------- | ---------------------------------------------------------------------- |
23
+ | `header` | `string` | No | Announcement card title |
24
+ | `description` | `string` | No | Announcement body text |
25
+ | `datasource` | `object` | No | Data source object — `datasource.source` is an array of item objects |
26
+ | `whatsnewlink` | `string` | No | URL for the "See what's new" button; if absent, button is not rendered |
27
+ | `getPConnect` | `function` | Yes | PConnect getter |
28
+
29
+ ## Implementation Structure
30
+
31
+ **Module Setup:** The component's inputs interface extends the project's base component interface with optional `header` (string), `description` (string), `datasource` (any), and `whatsnewlink` (string).
32
+
33
+ **Main Component Logic** — steps in order:
34
+
35
+ 1. Receive `header`, `description`, `datasource`, and `whatsnewlink` from inputs, each defaulting to an empty string (`datasource` defaulting to an empty array).
36
+ 2. Extract item names from `datasource`: map `datasource?.source` to an array of each item's `name` property, defaulting to an empty array when `datasource.source` is absent.
37
+ 3. Render a card with a left accent border (6px solid, using the primary light color token) and vertical margin (`0.5rem 0` top/bottom) so the card has proper spacing from sibling elements — this margin is required, without it the card has no top spacing. Inside, render a card header containing the `header` text as a heading, followed by a card content block containing the `description` paragraph and one paragraph per extracted item name (prefixed with a dash). When `whatsnewlink` is non-empty, render a card actions block with a button labeled "See what's new" that opens `whatsnewlink` in a new browser tab on click.
38
+
39
+ ## Behavioral Contract
40
+
41
+ 1. **Item list extraction:** If `datasource` is provided and `datasource.source` is a non-empty array, extract item names and render them as a bullet list. Each array item is expected to have a `name` property.
42
+ 2. **Button:** If `whatsnewlink` is non-empty, render a button labeled `"See what's new"` (or localized equivalent). On click, open the URL in a new browser tab (`window.open(whatsnewlink, '_blank')`).
43
+ 3. **Description:** Render the `description` string as plain text below the header.
44
+ 4. **No data fetching:** This widget is purely input-driven — it does not call any PCore data APIs.
45
+
46
+ ## Visual Specifications
47
+
48
+ ### Card Layout
49
+
50
+ | Element | Position |
51
+ | ----------------------- | --------------------------------------- |
52
+ | Left accent border | 6px solid, primary light color |
53
+ | Card header | `header` input as title |
54
+ | Card content | Description text + optional bullet list |
55
+ | "See what's new" button | Below description / bullet list |
56
+
57
+ **CSS-only implementation notes:**
58
+
59
+ - Card: `border-left: 6px solid var(--app-primary-light-color); border-radius: 4px; box-shadow: 0 1px 4px rgba(0,0,0,0.12); margin: 0.5rem 0` — the vertical margin ensures consistent spacing with sibling widgets (e.g., Pulse).
60
+ - Card header: `padding: 12px 16px; font-weight: 600`.
61
+ - Card content: `padding: 0 16px 16px`.
62
+ - Bullet list: `padding-left: 1.5rem; margin: 0.5rem 0`.
63
+ - "See what's new" button: `margin-top: 0.75rem; text-transform: none`.
64
+
65
+ ## Edge Cases & Special Logic
66
+
67
+ - `datasource` may be `undefined` or `datasource.source` may be an empty array — in both cases, render no bullet list.
68
+ - `whatsnewlink` may be an empty string — treat the same as absent (no button rendered).
69
+ - `header` and `description` may both be absent — render the card with empty/placeholder content without crashing.
70
+ - Item objects in `datasource.source` are expected to have `name` — guard against items where `name` is `undefined`.
71
+
72
+ ## Dependencies
73
+
74
+ - The design system's card component (with header, content, and actions regions)
75
+ - The design system's typography component
76
+ - The design system's button component
77
+
78
+ ## Design System Mapping
79
+
80
+ **UI control type:** Announcement / informational card with bullet list and external link.
81
+
82
+ When implementing in a specific design system, map the following:
83
+
84
+ - **Card container:** A card component with distinct header, content, and footer/actions regions. Apply a 6px solid left accent border using the primary light color token — this is the key visual identifier.
85
+ - **Card header:** Renders the `header` text as a heading-level element (typically h6 weight).
86
+ - **Card content:** Contains the `description` as body text, followed by the optional bullet list (one item per line, prefixed with a dash or rendered as a standard unordered list).
87
+ - **Card actions / footer:** Contains the "See what's new" button. This button must open the URL in a new tab with appropriate security attributes.
88
+ - **Button:** A primary-colored text or outlined button with no text transformation (no uppercase).
89
+
90
+ Implementation notes:
91
+
92
+ - Left accent border is a key visual identifier — implement it via CSS or the design system's border utilities
93
+ - "See what's new" must open in a new tab with `rel='noopener noreferrer'`
94
+ - The widget is entirely input-driven — no data fetching needed
@@ -0,0 +1,163 @@
1
+ # Skill: Attachment
2
+
3
+ File upload/download widget for case attachments. Behaves like a form field — binds to a case attachment property, supports multiple files, validates extensions and size, tracks upload progress, and blocks form submission during active uploads.
4
+
5
+ > **Prerequisite skill:** [`widget-components.md`](../widget-components.md) — covers architecture, inputs interface, data-fetching patterns, and registration conventions common to ALL widget components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a file attachment control within a Pega form. Users can upload one or multiple files, download existing attachments, and delete attachments. The widget validates file extensions and enforces a maximum size from environment config. Upload progress is shown per-file. Form submission is blocked while uploads are in progress via the action sequencer.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `Attachment` (registered in the project's component map)
16
+ - **Category:** Widget — form field (file input)
17
+ - **Extends:** the project's base component interface (with `value` typed as `any` instead of the standard string value)
18
+
19
+ ## Inputs
20
+
21
+ | Input | Type | Required | Description |
22
+ | ------------------ | ------------------- | ------------------------- | ---------------------------------------------------------------------------- |
23
+ | `value` | `any` | Yes | Attachment list or single attachment object (from Pega property) |
24
+ | `allowMultiple` | `boolean \| string` | No | Whether multiple files can be attached. Default `false` |
25
+ | `extensions` | `string` | No | Comma-separated list of allowed file extensions (e.g., `".pdf,.doc,.jpg"`) |
26
+ | `editMode` | `string` | No | `"tableRows"` for inline table edit mode (special multi-attachment handling) |
27
+ | `isTableFormatter` | `boolean` | No | Whether this widget is used inside a table formatter |
28
+ | `label` | `string` | Yes (from base interface) | Field label |
29
+ | `required` | `boolean` | No | Whether a file is required |
30
+ | `disabled` | `boolean` | No | Whether the control is disabled |
31
+ | `displayMode` | `string` | No | `"DISPLAY_ONLY"` for read-only rendering |
32
+ | `validatemessage` | `string` | No | Validation error message to display |
33
+ | `helperText` | `string` | No | Helper text shown below the control |
34
+ | `getPConnect` | `function` | Yes | PConnect getter |
35
+
36
+ ## Implementation Structure
37
+
38
+ This is a complex form-field widget (~400 lines). Key structural outline:
39
+
40
+ **Module Setup:** The component requires local state, lifecycle effects, cached callbacks, memoized computations, and instance references. It depends on `validateMaxSize` from the project's attachment helpers, as well as `clearFieldErrorMessages`, `deleteAttachments`, `getIconFromFileType`, `insertAttachments`, a deep-memo utility, a file-download utility, and `validateFileExtension` from the component's own utility module. The component's inputs interface extends the project's base component interface (with `value` as `any`) plus `allowMultiple` (boolean or string), `extensions` (string), `editMode` (string), and `isTableFormatter` (boolean).
41
+
42
+ **Main Component Logic** — steps in order:
43
+
44
+ 1. Receive `value`, `getPConnect`, `label`, `validatemessage`, `extensions`, `displayMode`, `helperText`, `editMode`, and `isTableFormatter` from inputs; also receive `required`, `disabled`, and `allowMultiple` as mutable locals. Coerce each of `required`, `disabled`, and `allowMultiple` to a real boolean (true when the value is literally `true` or the string `'true'`), since these may arrive as string booleans.
45
+ 2. Call `getPConnect()` into `pConn`; store `actionSequencer = PCore.getActionsSequencer()` via a memoized computation (no dependencies); resolve `contextName = pConn.getContextName()`.
46
+ 3. **Normalize attachment data** (old vs. new format): call `PCore.getAttachmentUtils().prepareAttachmentData(value)` to get `{ attachments, isOldAttachment }`.
47
+ 4. **Set the reference list**: read `valueRef` from `(pConn.getStateProps() as any).value`, then call `pConn.setReferenceList('.' + valueRef)`.
48
+ 5. Declare local state: `files` (array, initialized from `attachments`) and `toggleUploadBegin` (boolean, default `false`).
49
+ 6. Define `deleteFile`: removes the file from local state, calls `deleteAttachments`, and deregisters it from the action sequencer.
50
+ 7. Define `onFileAdded`: validates the file's extension and size, adds it to `files`, and sets `toggleUploadBegin`.
51
+ 8. Define `uploadFiles`: registers a blocking action via the sequencer, uploads each file via `uploadAttachment`, and calls `insertAttachments` on success.
52
+ 9. In a lifecycle effect keyed on `toggleUploadBegin`, trigger `uploadFiles` when it changes.
53
+ 10. In another lifecycle effect, subscribe to the `ASSIGNMENT_SUBMISSION` event for state override (block submission while uploads are pending).
54
+ 11. **Render**: a container element with the field `label`, an upload button (hidden native file input plus a styled button), validation/helper text, and the file list — each row showing an icon, name, metadata, upload progress, and a delete button.
55
+
56
+ > **Key patterns:** Action sequencer blocking (`registerBlockingAction`/`deRegisterBlockingAction`), `prepareAttachmentData` normalization, per-file progress tracking, `insertAttachments`/`deleteAttachments` helpers for state management.
57
+
58
+ ## Behavioral Contract
59
+
60
+ ### Attachment Format Detection
61
+
62
+ Pega has two attachment data formats — detect which one is in use:
63
+
64
+ **Old format (annotation-based):** `value` is an object shaped like `{ pxResults: [...], pyAttachCount: N }`.
65
+
66
+ **New standard format:** `value` is an array of attachment objects, each shaped like `{ ID, name, mimeType, category, ... }`.
67
+
68
+ Call `PCore.getAttachmentUtils().prepareAttachmentData(value)` to normalize both formats into a unified `FileObject[]` array.
69
+
70
+ ### File Validation
71
+
72
+ On file selection (via a file-picker control):
73
+
74
+ 1. **Extension check:** Compare selected file's extension against the `extensions` input (split by comma). If not allowed, add an error to the file and do not upload.
75
+ 2. **Size check:** Compare file size against `PCore.getEnvironmentInfo().getMaxAttachmentSize()` (in bytes). If too large, add a size error.
76
+ 3. Valid files proceed to upload.
77
+
78
+ ### Upload Flow
79
+
80
+ 1. Call `PCore.getActionsSequencer().addAction('attachment_upload_' + fileId)` — blocks form submission.
81
+ 2. Call `PCore.getAttachmentUtils().uploadAttachment(file, onProgress, onError, context)`.
82
+ 3. On progress: update per-file `progress` value (0–100) in local state.
83
+ 4. On success: add the returned attachment metadata to the local file list; update the Pega property via `pConn.setReferenceList(newAttachmentList)`.
84
+ 5. Call `PCore.getActionsSequencer().removeAction('attachment_upload_' + fileId)` — unblocks form submission.
85
+ 6. On error: set file error state; call `PCore.getMessageManager().addMessages([errorMessage])`.
86
+
87
+ ### Download
88
+
89
+ Call `PCore.getAttachmentUtils().downloadAttachment(attachmentID, context)` — triggers browser file download.
90
+
91
+ ### Delete
92
+
93
+ Remove the attachment from the local list and update `pConn.setReferenceList(updatedList)`. Do not call a separate delete API in the reference implementation — deletion is committed on form save.
94
+
95
+ ### Pub-Sub: Assignment Submission
96
+
97
+ Subscribe to `PCore.getPubSubUtils().subscribe(BEFORE_ASSIGNMENT_SUBMIT, handleBeforeSubmit, 'Attachment')`. In `handleBeforeSubmit`, validate that no uploads are still in progress.
98
+
99
+ ### Read-Only Mode (`displayMode === 'DISPLAY_ONLY'`)
100
+
101
+ Render a list of existing attachments as download links. No upload controls shown.
102
+
103
+ ### Inline Table Edit Mode (`editMode === 'tableRows'`)
104
+
105
+ Compressed display for use inside a table cell. Show attachment count and a small upload button. Clicking opens a minimal upload dialog.
106
+
107
+ ## Visual Specifications
108
+
109
+ | Element | Description |
110
+ | ------------------------- | ------------------------------------------------------------------------------------- |
111
+ | Label | Standard field label above the control |
112
+ | Drop zone / Upload button | Clickable area to select files; optionally supports drag-and-drop |
113
+ | File list | Each uploaded file: icon + name + size + progress bar (during upload) + delete button |
114
+ | Error state | Red error text below the control for invalid files or upload failures |
115
+ | Helper text | Secondary text below the control |
116
+
117
+ **CSS-only implementation notes:**
118
+
119
+ - Drop zone: `border: 2px dashed var(--border-color); border-radius: 4px; padding: 1rem; text-align: center; cursor: pointer`.
120
+ - Drop zone hover: `border-color: var(--app-primary-color); background: var(--hover-bg)`.
121
+ - File row: `display: flex; align-items: center; gap: 0.5rem; padding: 4px 0`.
122
+ - Progress bar: `height: 4px; background: var(--app-primary-color); border-radius: 2px; transition: width 0.2s`.
123
+ - Error text: `color: var(--error-color); font-size: 0.75rem; margin-top: 4px`.
124
+ - Delete button: `color: var(--error-color)`.
125
+
126
+ ## Edge Cases & Special Logic
127
+
128
+ - `allowMultiple` may be a string `"true"` / `"false"` or a boolean — always coerce: `allowMultiple === true || allowMultiple === 'true'`.
129
+ - Upload progress: track per-file progress in a map of `fileId → number` in local state.
130
+ - `isTableFormatter`: when `true`, hide the label and reduce padding for compact table display.
131
+ - Concurrent uploads: multiple files may upload simultaneously — the sequencer action must be keyed per-file.
132
+ - Max size: call `PCore.getEnvironmentInfo().getMaxAttachmentSize()` at validation time (not at mount) — size config may be dynamic.
133
+ - `extensions` may be empty string — if empty, allow all file types.
134
+
135
+ ## Dependencies
136
+
137
+ - The project's attachment utility module — `validateExtension`, `validateSize`, `getFileTypeIcon`, `buildDownloadURL`, error handling helpers
138
+ - The project's attachment type definitions — `FileObject`, `AttachmentLinks`, `PageInstructionOptions`
139
+ - `PCore.getAttachmentUtils()` — upload, download, prepareAttachmentData
140
+ - `PCore.getActionsSequencer()` — block/unblock form submission during upload
141
+ - `PCore.getEnvironmentInfo()` — max attachment size
142
+ - `PCore.getMessageManager()` — error message display
143
+ - `PCore.getPubSubUtils()` — before-submit subscription
144
+ - A file-download utility — browser file download trigger
145
+
146
+ ## Design System Mapping
147
+
148
+ **UI control type:** File upload form field with progress tracking, validation, and attachment list.
149
+
150
+ When implementing in a specific design system, map the following:
151
+
152
+ - **File input / drop zone:** A clickable upload area (optionally supporting drag-and-drop) backed by a hidden native file input. The design system's file-picker or upload component can replace the custom drop zone, but the hidden native input pattern works universally.
153
+ - **Progress indicator:** A linear progress bar (determinate, 0–100) shown per-file during upload. Use the design system's linear progress component or a CSS-based bar.
154
+ - **File list:** A vertical list of uploaded file rows. Each row contains: a file-type icon, the file name, file size metadata, the progress indicator (during upload), and a delete action button. Use the design system's list component or simple styled rows.
155
+ - **Error text:** Validation or upload error messages displayed below the control in an error color.
156
+ - **Helper text:** Secondary descriptive text below the control.
157
+
158
+ Implementation notes:
159
+
160
+ - Action sequencer blocking (`addAction`/`removeAction`) is mandatory — do not skip it; form submission must be blocked during uploads
161
+ - Detect and normalize both old and new attachment formats via `prepareAttachmentData`
162
+ - `allowMultiple` coercion (string vs boolean) is required
163
+ - Extension and size validation must happen client-side before calling the upload API
@@ -0,0 +1,90 @@
1
+ # Skill: CaseHistory
2
+
3
+ Case history widget. Fetches and displays the full audit trail for the current case in a table with Date, Description, and Performer columns.
4
+
5
+ > **Prerequisite skill:** [`widget-components.md`](../widget-components.md) — covers architecture, the base component interface, data-fetching patterns, and registration conventions common to ALL widget components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a table of case events sourced from the `D_pyWorkHistory` data page. Shows when each event happened (`pxTimeCreated`), what happened (`pyMessageKey`), and who performed it (`pyPerformer`). Uses a deep-equality utility to skip unnecessary re-renders when data has not changed.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `CaseHistory` (in the project's component map)
16
+ - **Category:** Widget — case data display
17
+ - **Extends:** the project's base component interface
18
+
19
+ ## Inputs
20
+
21
+ | Input | Type | Required | Description |
22
+ | ------------- | ---------- | -------- | ----------------------------------------------------- |
23
+ | `getPConnect` | `function` | Yes | PConnect getter — used to resolve case ID and context |
24
+
25
+ ## Implementation Structure
26
+
27
+ **Module Setup:** Requires local state, an instance reference, and a lifecycle effect. Also needs a deep-equality utility and the project's SDK utility helpers for date formatting. The component interface extends the project's base component interface (no additional custom inputs).
28
+
29
+ **Main Component Logic** — steps in order:
30
+
31
+ 1. Receive `getPConnect` from inputs; call it once into `thePConn`. Declare a `rowData` instance reference (initialized to an empty array) and a `waitingForData` local state boolean (default `true`).
32
+ 2. Resolve `caseID` via `thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID, '')` and `context` via `thePConn.getContextName()`.
33
+ 3. Build a `displayedColumns` array of three column descriptors, each with a localized `label` (via `thePConn.getLocalizedValue`), a `type`, and a `fieldName`: Date (`'DateTime'`, `pxTimeCreated`), Description (`'TextInput'`, `pyMessageKey`), and Performed by (`'TextInput'`, `pyPerformer`).
34
+ 4. **Fetch `D_pyWorkHistory` on mount** — in a lifecycle effect that runs once on initialization, using a guard flag to prevent post-teardown state updates: call `PCore.getDataApiUtils().getData('D_pyWorkHistory', { dataViewParameters: [{ CaseInstanceKey: caseID }] }, context)`; on resolution, when still active, call `computeRowData` with `historyJSON.data.data` and set `waitingForData` to `false`. In the teardown callback, set the guard flag to `false` so the state setter is never called after the component is destroyed.
35
+ 5. Define `computeRowData(rows)`: map each row to an array of cell values, one per `displayedColumns` entry — formatting `DateTime`-type columns through the SDK utility helper `generateDateTime(row[col.fieldName], 'DateTime-Short')` and passing other column values through as-is. Compare the resulting `theRowData` against the current `rowData` instance reference using the deep-equality utility, and only update the instance reference when the data has actually changed (this avoids unnecessary re-renders).
36
+ 6. **Render** a table with three columns and `'---'` as the placeholder for missing or falsy cell values. The header row renders one cell per `displayedColumns` entry (using its `label`). The body renders one row per entry in the `rowData` instance reference, with one cell per value (falling back to `'---'` when the value is falsy).
37
+
38
+ No additional custom inputs. All data is fetched internally.
39
+
40
+ ## Behavioral Contract
41
+
42
+ ### Data Fetch
43
+
44
+ On mount, fetch history from the `D_pyWorkHistory` data page by calling `PCore.getDataApiUtils().getData('D_pyWorkHistory', { dataViewParameters: [{ CaseInstanceKey: caseID }] }, context)`.
45
+
46
+ - `caseID` = `thePConn.getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID, '')`.
47
+ - `context` = `thePConn.getContextName()`.
48
+ - Store result in a `rowData` instance reference.
49
+ - On error or empty response, `rowData` stays as `[]`.
50
+
51
+ ### Re-render Optimization
52
+
53
+ Use a deep-equality utility to compare new row data with the previous value — only update the stored data if it has actually changed. This prevents unnecessary re-renders caused by reference inequality.
54
+
55
+ ### Data Transformation
56
+
57
+ For each history row, map:
58
+
59
+ - **Date column:** Format `pxTimeCreated` using the SDK date formatting utility (e.g., `generateDateTime(row.pxTimeCreated, 'DateTime-Short')`).
60
+ - **Description column:** `row.pyMessageKey` — the localized event description string.
61
+ - **Performer column:** `row.pyPerformer` — the operator who performed the action.
62
+ - Missing values: display `"---"` for any undefined/null field.
63
+
64
+ ## Visual Specifications
65
+
66
+ ### Table Layout
67
+
68
+ | Column | Field | Width |
69
+ | ------------ | --------------------------- | ----- |
70
+ | Date | `pxTimeCreated` (formatted) | ~25% |
71
+ | Description | `pyMessageKey` | ~50% |
72
+ | Performed by | `pyPerformer` | ~25% |
73
+
74
+ The table header cells should have a distinct background color, bold text, and 1px solid borders. Body cells should have 1px solid borders in a silver/neutral tone. Missing-value placeholders (`"---"`) should be visually subdued. Use the design system's table component for consistent styling. No pagination in the reference implementation — all rows are shown.
75
+
76
+ ## Edge Cases & Special Logic
77
+
78
+ - `D_pyWorkHistory` may return an empty array for cases with no history events — render an empty table body (or an empty-state message like `"No history available"`).
79
+ - `pxTimeCreated` format varies — always run it through the SDK date formatting utility before display.
80
+ - `pyMessageKey` may be a locale key — resolve it via `PCore.getLocaleUtils().getLocaleValue()` if a localized string is required.
81
+ - The widget has no pagination — for cases with very long history, the table may become very tall. Consider adding pagination if needed.
82
+ - The lifecycle effect teardown callback sets a guard flag to prevent calling state setters after component destruction, avoiding framework warnings about unmounted state updates.
83
+
84
+ ## Dependencies
85
+
86
+ - `PCore.getDataApiUtils().getData()` — fetches `D_pyWorkHistory` data page
87
+ - A deep-equality utility — prevents unnecessary re-renders by comparing row data before updating
88
+ - `PCore.getConstants().CASE_INFO.CASE_INFO_ID` — resolves case ID constant
89
+ - The project's SDK utility helpers — for date formatting (`generateDateTime`)
90
+ - The design system's table component (container, header, body, row, and cell elements)