@pega/sdk 0.0.5 → 0.0.7

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 (269) hide show
  1. package/README.md +10 -3
  2. package/dist/index.js +828 -165
  3. package/package.json +1 -1
  4. package/templates/react-native-sdk-reference/.claude/settings.json +5 -0
  5. package/templates/react-native-sdk-reference/.prettierignore +17 -0
  6. package/templates/react-native-sdk-reference/.vscode/extensions.json +1 -0
  7. package/templates/react-native-sdk-reference/.vscode/settings.json +7 -0
  8. package/templates/react-native-sdk-reference/AGENTS.md +3 -0
  9. package/templates/react-native-sdk-reference/CLAUDE.md +1 -0
  10. package/templates/react-native-sdk-reference/README.md +56 -0
  11. package/templates/react-native-sdk-reference/app.json +40 -5
  12. package/templates/react-native-sdk-reference/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
  13. package/templates/react-native-sdk-reference/assets/expo.icon/Assets/grid.png +0 -0
  14. package/templates/react-native-sdk-reference/assets/expo.icon/icon.json +35 -0
  15. package/templates/react-native-sdk-reference/assets/icons/bell.png +0 -0
  16. package/templates/react-native-sdk-reference/assets/icons/clock.png +0 -0
  17. package/templates/react-native-sdk-reference/assets/icons/cross.png +0 -0
  18. package/templates/react-native-sdk-reference/assets/icons/donut.png +0 -0
  19. package/templates/react-native-sdk-reference/assets/icons/gear.png +0 -0
  20. package/templates/react-native-sdk-reference/assets/icons/globe.png +0 -0
  21. package/templates/react-native-sdk-reference/assets/icons/internet.png +0 -0
  22. package/templates/react-native-sdk-reference/assets/icons/music.png +0 -0
  23. package/templates/react-native-sdk-reference/assets/icons/right-arrow.png +0 -0
  24. package/templates/react-native-sdk-reference/assets/icons/speed.png +0 -0
  25. package/templates/react-native-sdk-reference/assets/images/MediaCo.png +0 -0
  26. package/templates/react-native-sdk-reference/assets/images/adaptive-icon.png +0 -0
  27. package/templates/react-native-sdk-reference/assets/images/android-icon-background.png +0 -0
  28. package/templates/react-native-sdk-reference/assets/images/android-icon-foreground.png +0 -0
  29. package/templates/react-native-sdk-reference/assets/images/android-icon-monochrome.png +0 -0
  30. package/templates/react-native-sdk-reference/assets/images/expo-badge-white.png +0 -0
  31. package/templates/react-native-sdk-reference/assets/images/expo-badge.png +0 -0
  32. package/templates/react-native-sdk-reference/assets/images/expo-logo.png +0 -0
  33. package/templates/react-native-sdk-reference/assets/images/favicon.png +0 -0
  34. package/templates/react-native-sdk-reference/assets/images/icon.png +0 -0
  35. package/templates/react-native-sdk-reference/assets/images/logo-glow.png +0 -0
  36. package/templates/react-native-sdk-reference/assets/images/partial-react-logo.png +0 -0
  37. package/templates/react-native-sdk-reference/assets/images/react-logo.png +0 -0
  38. package/templates/react-native-sdk-reference/assets/images/react-logo@2x.png +0 -0
  39. package/templates/react-native-sdk-reference/assets/images/react-logo@3x.png +0 -0
  40. package/templates/react-native-sdk-reference/assets/images/splash-icon.png +0 -0
  41. package/templates/react-native-sdk-reference/assets/images/tutorial-web.png +0 -0
  42. package/templates/react-native-sdk-reference/eslint.config.mjs +68 -0
  43. package/templates/react-native-sdk-reference/package.json +59 -14
  44. package/templates/react-native-sdk-reference/pega-constellationjs-0.26.3.tgz +0 -0
  45. package/templates/react-native-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  46. package/templates/react-native-sdk-reference/pega-sdk-types-0.1.0.tgz +0 -0
  47. package/templates/react-native-sdk-reference/sdk-config.json +31 -9
  48. package/templates/react-native-sdk-reference/src/app/_layout.tsx +38 -0
  49. package/templates/react-native-sdk-reference/src/app/home/_layout.tsx +39 -0
  50. package/templates/react-native-sdk-reference/src/app/home/contact.tsx +11 -0
  51. package/templates/react-native-sdk-reference/src/app/home/index.tsx +36 -0
  52. package/templates/react-native-sdk-reference/src/app/home/shop.tsx +11 -0
  53. package/templates/react-native-sdk-reference/src/app/home/your-services.tsx +11 -0
  54. package/templates/react-native-sdk-reference/src/app/index.tsx +72 -0
  55. package/templates/react-native-sdk-reference/src/app/workarea.tsx +135 -0
  56. package/templates/react-native-sdk-reference/src/bridge/Context/StoreContext.ts +4 -0
  57. package/templates/react-native-sdk-reference/src/bridge/RootComponent.tsx +12 -0
  58. package/templates/react-native-sdk-reference/src/bridge/react_pconnect.jsx +334 -0
  59. package/templates/react-native-sdk-reference/src/components/common/DisplayField.tsx +29 -0
  60. package/templates/react-native-sdk-reference/src/components/common/FormFieldWrapper.tsx +5 -0
  61. package/templates/react-native-sdk-reference/src/components/common/HelperText.tsx +11 -0
  62. package/templates/react-native-sdk-reference/src/components/common/LabelText.tsx +22 -0
  63. package/templates/react-native-sdk-reference/src/components/common/inputTheme.ts +17 -0
  64. package/templates/react-native-sdk-reference/src/components/design-system/AutoComplete.tsx +126 -0
  65. package/templates/react-native-sdk-reference/src/components/design-system/FieldGroup.tsx +72 -0
  66. package/templates/react-native-sdk-reference/src/components/design-system/Radio.tsx +61 -0
  67. package/templates/react-native-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +196 -0
  68. package/templates/react-native-sdk-reference/src/components/field/AutoComplete/index.tsx +1 -0
  69. package/templates/react-native-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +89 -0
  70. package/templates/react-native-sdk-reference/src/components/field/Checkbox/index.tsx +1 -0
  71. package/templates/react-native-sdk-reference/src/components/field/Currency/Currency.tsx +84 -0
  72. package/templates/react-native-sdk-reference/src/components/field/Currency/index.tsx +1 -0
  73. package/templates/react-native-sdk-reference/src/components/field/Date/Date.tsx +94 -0
  74. package/templates/react-native-sdk-reference/src/components/field/Date/index.tsx +1 -0
  75. package/templates/react-native-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +211 -0
  76. package/templates/react-native-sdk-reference/src/components/field/Dropdown/index.tsx +1 -0
  77. package/templates/react-native-sdk-reference/src/components/field/Email/Email.tsx +81 -0
  78. package/templates/react-native-sdk-reference/src/components/field/Email/index.tsx +1 -0
  79. package/templates/react-native-sdk-reference/src/components/field/Group/Group.tsx +47 -0
  80. package/templates/react-native-sdk-reference/src/components/field/Group/index.tsx +1 -0
  81. package/templates/react-native-sdk-reference/src/components/field/Integer/Integer.tsx +84 -0
  82. package/templates/react-native-sdk-reference/src/components/field/Integer/index.tsx +1 -0
  83. package/templates/react-native-sdk-reference/src/components/field/Phone/Phone.tsx +85 -0
  84. package/templates/react-native-sdk-reference/src/components/field/Phone/index.ts +1 -0
  85. package/templates/react-native-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +118 -0
  86. package/templates/react-native-sdk-reference/src/components/field/RadioButtons/index.ts +1 -0
  87. package/templates/react-native-sdk-reference/src/components/field/TextArea/TextArea.tsx +86 -0
  88. package/templates/react-native-sdk-reference/src/components/field/TextArea/index.tsx +1 -0
  89. package/templates/react-native-sdk-reference/src/components/field/TextInput/TextInput.tsx +84 -0
  90. package/templates/react-native-sdk-reference/src/components/field/TextInput/index.tsx +1 -0
  91. package/templates/react-native-sdk-reference/src/components/field/URL/URL.tsx +86 -0
  92. package/templates/react-native-sdk-reference/src/components/field/URL/index.tsx +1 -0
  93. package/templates/react-native-sdk-reference/src/components/helpers/data_page.ts +20 -0
  94. package/templates/react-native-sdk-reference/src/components/helpers/event-utils.ts +20 -0
  95. package/templates/react-native-sdk-reference/src/components/helpers/instructions-utils.ts +57 -0
  96. package/templates/react-native-sdk-reference/src/components/helpers/state-utils.tsx +46 -0
  97. package/templates/react-native-sdk-reference/src/components/helpers/template-utils.ts +75 -0
  98. package/templates/react-native-sdk-reference/src/components/helpers/utils.ts +339 -0
  99. package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/ActionButtons.tsx +63 -0
  100. package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/index.tsx +1 -0
  101. package/templates/react-native-sdk-reference/src/components/infra/Assignment/Assignment.tsx +348 -0
  102. package/templates/react-native-sdk-reference/src/components/infra/Assignment/index.tsx +1 -0
  103. package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/AssignmentCard.tsx +56 -0
  104. package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/index.tsx +1 -0
  105. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/FlowContainer.tsx +57 -0
  106. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/helpers.ts +137 -0
  107. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/index.tsx +1 -0
  108. package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/RootContainer.tsx +52 -0
  109. package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/index.tsx +1 -0
  110. package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/helper.ts +128 -0
  111. package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/index.tsx +59 -0
  112. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/ViewContainer.tsx +31 -0
  113. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/helper.ts +39 -0
  114. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/index.ts +1 -0
  115. package/templates/react-native-sdk-reference/src/components/infra/Containers/helper.ts +9 -0
  116. package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/ErrorBoundary.tsx +53 -0
  117. package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/index.tsx +1 -0
  118. package/templates/react-native-sdk-reference/src/components/infra/MultiStep/MultiStep.tsx +24 -0
  119. package/templates/react-native-sdk-reference/src/components/infra/MultiStep/index.ts +1 -0
  120. package/templates/react-native-sdk-reference/src/components/infra/Reference/Reference.tsx +68 -0
  121. package/templates/react-native-sdk-reference/src/components/infra/Reference/index.tsx +1 -0
  122. package/templates/react-native-sdk-reference/src/components/infra/Reference/utils.ts +16 -0
  123. package/templates/react-native-sdk-reference/src/components/infra/Region/Region.tsx +10 -0
  124. package/templates/react-native-sdk-reference/src/components/infra/Region/index.tsx +1 -0
  125. package/templates/react-native-sdk-reference/src/components/infra/View/View.tsx +49 -0
  126. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +38 -0
  127. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/index.tsx +1 -0
  128. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/utils/index.ts +28 -0
  129. package/templates/react-native-sdk-reference/src/components/template/Details/Details.tsx +82 -0
  130. package/templates/react-native-sdk-reference/src/components/template/Details/index.tsx +1 -0
  131. package/templates/react-native-sdk-reference/src/components/template/OneColumn/OneColumn.tsx +29 -0
  132. package/templates/react-native-sdk-reference/src/components/template/OneColumn/index.tsx +1 -0
  133. package/templates/react-native-sdk-reference/src/context/LoaderContext.tsx +42 -0
  134. package/templates/react-native-sdk-reference/src/mediaco/AdvBanner.tsx +62 -0
  135. package/templates/react-native-sdk-reference/src/mediaco/Header.tsx +60 -0
  136. package/templates/react-native-sdk-reference/src/mediaco/HomeScreen.tsx +78 -0
  137. package/templates/react-native-sdk-reference/src/mediaco/QuickActions.tsx +68 -0
  138. package/templates/react-native-sdk-reference/src/mediaco/ResolutionScreen.tsx +48 -0
  139. package/templates/react-native-sdk-reference/src/mediaco/SafeArea.tsx +11 -0
  140. package/templates/react-native-sdk-reference/src/mediaco/TabBar.tsx +102 -0
  141. package/templates/react-native-sdk-reference/src/mediaco/YourServices.tsx +90 -0
  142. package/templates/react-native-sdk-reference/src/sdk-pega-component-map.ts +64 -0
  143. package/templates/react-native-sdk-reference/src/types/PConnProps.d.ts +41 -0
  144. package/templates/react-native-sdk-reference/src/utils/auth.ts +62 -0
  145. package/templates/react-native-sdk-reference/src/utils/init-pcore.ts +37 -0
  146. package/templates/react-native-sdk-reference/src/utils/pcore-polyfills.ts +66 -0
  147. package/templates/react-native-sdk-reference/tsconfig.json +9 -8
  148. package/templates/react-sdk-reference/.ai-common/agents/embedded-flow-expert.md +171 -0
  149. package/templates/react-sdk-reference/.ai-common/agents/implementation-expert.md +25 -26
  150. package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions-embedded.md +119 -0
  151. package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions.md +70 -121
  152. package/templates/react-sdk-reference/.ai-common/instructions/component-map.md +7 -19
  153. package/templates/react-sdk-reference/.ai-common/instructions/dse-component.md +10 -40
  154. package/templates/react-sdk-reference/.ai-common/instructions/embedded-component.md +134 -0
  155. package/templates/react-sdk-reference/.ai-common/instructions/field-component.md +15 -43
  156. package/templates/react-sdk-reference/.ai-common/instructions/template-component.md +11 -63
  157. package/templates/react-sdk-reference/.ai-common/instructions/widget-component.md +12 -57
  158. package/templates/react-sdk-reference/.ai-common/mcp/claude-code.mcp.json +8 -0
  159. package/templates/react-sdk-reference/.ai-common/mcp/copilot.mcp.json +8 -0
  160. package/templates/react-sdk-reference/.ai-common/mcp/cursor.mcp.json +11 -0
  161. package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +45 -71
  162. package/templates/react-sdk-reference/.ai-common/prompts/component-manifest.json +98 -0
  163. package/templates/react-sdk-reference/.ai-common/prompts/embedded-component-manifest.md +155 -0
  164. package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +67 -237
  165. package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +26 -77
  166. package/templates/react-sdk-reference/.ai-common/prompts/generate-embedded-components.md +315 -0
  167. package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +31 -80
  168. package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +43 -99
  169. package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +33 -83
  170. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/AlertBanner.md +60 -74
  171. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +64 -84
  172. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +76 -109
  173. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/DetailsFields.md +84 -101
  174. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroup.md +62 -87
  175. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroupList.md +56 -76
  176. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldValueList.md +61 -85
  177. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Operator.md +84 -107
  178. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Pulse.md +36 -44
  179. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +125 -189
  180. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/WssQuickCreate.md +34 -50
  181. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension.md +57 -179
  182. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/analyze-customer-repo.md +130 -0
  183. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/authenticate.md +311 -0
  184. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/run-and-verify-integration.md +156 -0
  185. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/wire-integration.md +476 -0
  186. package/templates/react-sdk-reference/.ai-common/skills/field-components.md +120 -242
  187. package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +71 -212
  188. package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +47 -209
  189. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +90 -259
  190. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +75 -169
  191. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +65 -160
  192. package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +59 -157
  193. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +55 -134
  194. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +61 -185
  195. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +60 -138
  196. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Group.md +40 -99
  197. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +44 -111
  198. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +57 -165
  199. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Multiselect.md +41 -122
  200. package/templates/react-sdk-reference/.ai-common/skills/field-skills/ObjectReference.md +32 -130
  201. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +48 -112
  202. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +43 -153
  203. package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +76 -183
  204. package/templates/react-sdk-reference/.ai-common/skills/field-skills/RichText.md +59 -176
  205. package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +30 -123
  206. package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +47 -178
  207. package/templates/react-sdk-reference/.ai-common/skills/field-skills/SemanticLink.md +31 -117
  208. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +51 -106
  209. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextContent.md +22 -75
  210. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +54 -116
  211. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +46 -100
  212. package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +44 -93
  213. package/templates/react-sdk-reference/.ai-common/skills/field-skills/UserReference.md +40 -167
  214. package/templates/react-sdk-reference/.ai-common/skills/infra-components.md +165 -0
  215. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/ActionButtons.md +122 -0
  216. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/MultiStep.md +178 -0
  217. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/Stages.md +140 -0
  218. package/templates/react-sdk-reference/.ai-common/skills/template-components.md +74 -228
  219. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +66 -167
  220. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +57 -170
  221. package/templates/react-sdk-reference/.ai-common/skills/template-skills/BannerPage.md +41 -76
  222. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +53 -109
  223. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +86 -289
  224. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +60 -185
  225. package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +66 -115
  226. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DataReference.md +33 -68
  227. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +53 -133
  228. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultPage.md +39 -82
  229. package/templates/react-sdk-reference/.ai-common/skills/template-skills/Details.md +38 -91
  230. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsSubTabs.md +47 -101
  231. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md +27 -34
  232. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsTwoColumn.md +25 -40
  233. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DynamicTabs.md +34 -104
  234. package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +46 -147
  235. package/templates/react-sdk-reference/.ai-common/skills/template-skills/HierarchicalForm.md +139 -100
  236. package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboard.md +43 -82
  237. package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboardPage.md +47 -80
  238. package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListPage.md +16 -29
  239. package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +43 -228
  240. package/templates/react-sdk-reference/.ai-common/skills/template-skills/MultiReferenceReadOnly.md +20 -65
  241. package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +49 -97
  242. package/templates/react-sdk-reference/.ai-common/skills/template-skills/OneColumn.md +37 -71
  243. package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +58 -148
  244. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +82 -107
  245. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SimpleTable.md +21 -60
  246. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +43 -100
  247. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SubTabs.md +36 -76
  248. package/templates/react-sdk-reference/.ai-common/skills/template-skills/TwoColumn.md +41 -90
  249. package/templates/react-sdk-reference/.ai-common/skills/template-skills/WideNarrow.md +36 -43
  250. package/templates/react-sdk-reference/.ai-common/skills/template-skills/WssNavBar.md +25 -115
  251. package/templates/react-sdk-reference/.ai-common/skills/widget-components.md +38 -174
  252. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +30 -57
  253. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +55 -101
  254. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/CaseHistory.md +38 -121
  255. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/FileUtility.md +37 -98
  256. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Followers.md +18 -33
  257. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/QuickCreate.md +26 -91
  258. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/SummaryItem.md +28 -120
  259. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +41 -272
  260. package/templates/react-sdk-reference/package.json +1 -1
  261. package/templates/react-sdk-reference/pega-auth-0.2.44.tgz +0 -0
  262. package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  263. package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +13 -3
  264. package/templates/react-native-sdk-reference/.github/AGENTS.md +0 -23
  265. package/templates/react-native-sdk-reference/.github/copilot-instructions.md +0 -40
  266. package/templates/react-native-sdk-reference/.github/skills/pega-sdk-component.md +0 -48
  267. package/templates/react-native-sdk-reference/App.tsx +0 -49
  268. package/templates/react-native-sdk-reference/expo-env.d.ts +0 -3
  269. package/templates/react-sdk-reference/pega-auth-0.2.42.tgz +0 -0
@@ -8,112 +8,66 @@ Read-only single-column details template. Renders all child fields in DISPLAY_ON
8
8
 
9
9
  ## Component Purpose
10
10
 
11
- Renders a labeled group of read-only fields in a single-column vertical stack. Forces all children into `DISPLAY_ONLY` + `readOnly` mode via inherited props. Optionally renders a "highlighted data" banner row at the top (full-width, stacked-large-val display).
11
+ Renders a labeled group of read-only fields in a single-column vertical stack. Forces all children into `DISPLAY_ONLY` + `readOnly` mode via inherited configuration. Optionally renders a "highlighted data" banner row at the top (full-width, stacked-large-val display).
12
12
 
13
13
  ## Pega Metadata
14
14
 
15
- - **Registration key:** `Details` (in `component-map.ts`)
15
+ - **Registration key:** `Details` (in the project's component map)
16
16
  - **Category:** Display template
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
  | `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
24
24
  | `showLabel` | `boolean` | Yes | Whether to show the section label |
25
25
  | `showHighlightedData` | `boolean` | Yes | Whether to render highlighted fields above children |
26
26
  | `getPConnect` | `function` | Yes | PConnect getter |
27
27
 
28
- ## Component Skeleton
29
-
30
- ```typescript
31
- import { createElement } from 'react';
32
- import { getComponentFromRegistry, PConnectComponent } from '@pega/sdk-react';
33
- import type { PConnProps } from '@pega/sdk-react';
34
-
35
- interface DetailsProps extends PConnProps {
36
- label: string;
37
- showLabel: boolean;
38
- showHighlightedData: boolean;
39
- }
40
-
41
- export default function Details(props: DetailsProps) {
42
- const FieldGroup = getComponentFromRegistry('FieldGroup');
43
- const { label, showLabel, getPConnect, showHighlightedData } = props;
44
-
45
- // 1. Inherited props merge
46
- const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
47
-
48
- // 2. Force all children into display-only mode (side effect)
49
- getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY');
50
- getPConnect().setInheritedProp('readOnly', true);
51
-
52
- // 3. Create children from PConnect
53
- const children = (getPConnect().getChildren() as any[]).map((configObject, index) =>
54
- createElement(PConnectComponent, { ...configObject, key: index.toString() })
55
- );
56
-
57
- // 4. Highlighted data (optional)
58
- let highlightedDataArr = [];
59
- if (showHighlightedData) {
60
- const { highlightedData = [] } = (getPConnect().getRawMetadata() as any).config;
61
- highlightedDataArr = highlightedData.map((field) => {
62
- field.config.displayMode = 'STACKED_LARGE_VAL';
63
- if (field.config.value === '@P .pyStatusWork') {
64
- field.type = 'TextInput';
65
- field.config.displayAsStatus = true;
66
- }
67
- return getPConnect().createComponent(field, '', 0, {});
68
- });
69
- }
70
-
71
- // 5. Render: FieldGroup > highlighted grid (xs:12) + children grid (xs:12)
72
- return (
73
- <FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
74
- {showHighlightedData && highlightedDataArr.length > 0 && (
75
- <GridContainer spacing={1} style={{ padding: '0 0 1em' }}>
76
- {highlightedDataArr.map((child, i) => <GridItem xs={12} key={`hf-${i+1}`}>{child}</GridItem>)}
77
- </GridContainer>
78
- )}
79
- <GridContainer spacing={1}>
80
- {children.map((child, i) => <GridItem xs={12} key={`r-${i+1}`}>{child}</GridItem>)}
81
- </GridContainer>
82
- </FieldGroup>
83
- );
84
- }
85
- ```
28
+ ## Implementation Structure
29
+
30
+ **Module Setup:** Obtain the project's PConnect bridge utility (for rendering child PConnect nodes) and the project's component registry lookup function. The component accepts `label` (string), `showLabel` (boolean), `showHighlightedData` (boolean), and `getPConnect` (function) as its inputs.
31
+
32
+ **Main Component Logic** — steps in order:
33
+
34
+ 1. Retrieve `FieldGroup` from the project's component registry; receive `label`, `showLabel`, `getPConnect`, and `showHighlightedData` from inputs.
35
+ 2. Merge inherited configuration: `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }` (inherited values can override the direct inputs).
36
+ 3. Force all children into display-only mode as a side effect: call `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `getPConnect().setInheritedProp('readOnly', true)`.
37
+ 4. Build the children array: map each entry of `getPConnect().getChildren()` to a renderable PConnect bridge element using the config object and a unique key.
38
+ 5. If `showHighlightedData` is true, read `highlightedData` (default empty array) from `getPConnect().getRawMetadata().config`, and for each field: set `field.config.displayMode = 'STACKED_LARGE_VAL'`; if `field.config.value === '@P .pyStatusWork'`, set `field.type = 'TextInput'` and `field.config.displayAsStatus = true`; then create the component via `getPConnect().createComponent(field, '', 0, {})` and collect the results into `highlightedDataArr`.
39
+ 6. Render a FieldGroup named `propsToUse.showLabel ? propsToUse.label : ''`, containing (when `showHighlightedData` is true and non-empty) a single-column grid container with spacing and bottom padding holding one full-width grid item per highlighted field, followed by a second single-column grid container with spacing holding one full-width grid item per regular child.
86
40
 
87
41
  ## Behavioral Contract
88
42
 
89
- 1. **Inherited props merge:** `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }` — inherited props can override label/showLabel.
43
+ 1. **Inherited inputs merge:** `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }` — inherited values can override label/showLabel.
90
44
  2. **Force display mode:** Call `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `getPConnect().setInheritedProp('readOnly', true)` — ensures all child fields render in read-only display mode.
91
- 3. **Render children:** Map `getPConnect().getChildren()` → `createElement(PConnectComponent, { ...configObject, key: index.toString() })`.
45
+ 3. **Render children:** Map `getPConnect().getChildren()` → renderable content via the project's PConnect bridge utility, passing each config object with a unique key.
92
46
  4. **Highlighted data (when `showHighlightedData` is true):**
93
47
  a. Read `getPConnect().getRawMetadata().config.highlightedData` (defaults to `[]`).
94
48
  b. For each highlighted field, set `field.config.displayMode = 'STACKED_LARGE_VAL'`.
95
49
  c. For fields with `field.config.value === '@P .pyStatusWork'`: set `field.type = 'TextInput'` and `field.config.displayAsStatus = true`.
96
50
  d. Create each field via `getPConnect().createComponent(field, '', 0, {})`.
97
51
  5. **Layout:**
98
- - Wrap all content in `<FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>`.
99
- - Highlighted data: `<Grid container spacing={1} style={{ padding: '0 0 1em' }}>` with each child at `Grid size={{ xs: 12 }}`.
100
- - Regular children: `<Grid container spacing={1}>` with each child at `Grid size={{ xs: 12 }}`.
52
+ - Wrap all content in a FieldGroup with name set to `propsToUse.showLabel ? propsToUse.label : ''`.
53
+ - Highlighted data: single-column grid container with ~8px gap and bottom padding (~1rem below).
54
+ - Regular children: single-column grid container with ~8px gap.
101
55
 
102
56
  ## Visual Specifications
103
57
 
104
58
  ### Overall Layout
105
59
 
106
- | Property | Value |
107
- | ------------------------ | -------------------------------------------------------- |
108
- | Column structure | Single column (xs: 12 for each child) |
109
- | Inner spacing | Grid spacing 1 (≈ 8px between fields) |
110
- | Highlighted data padding | `padding: 0 0 1em` (space below before regular children) |
60
+ | Property | Value |
61
+ | ------------------------ | -------------------------------------------- |
62
+ | Column structure | Single column (full width for each child) |
63
+ | Inner spacing | ~8px between fields |
64
+ | Highlighted data padding | ~1rem bottom padding before regular children |
111
65
 
112
66
  **CSS-only implementation notes:**
113
67
 
114
68
  - Outer wrapper: `FieldGroup` component (see `FieldGroupDSE.md` for styles).
115
- - Children grid: `display: grid; grid-template-columns: 1fr; gap: 8px`.
116
- - Highlighted data row: `display: grid; grid-template-columns: 1fr; gap: 8px; padding-bottom: 1rem`.
69
+ - Children grid: single-column layout with ~8px gap between items.
70
+ - Highlighted data row: single-column layout with ~8px gap and ~1rem bottom padding.
117
71
  - Fields inside highlighted data use `STACKED_LARGE_VAL` display (larger value typography).
118
72
 
119
73
  ## Edge Cases & Special Logic
@@ -125,25 +79,18 @@ export default function Details(props: DetailsProps) {
125
79
 
126
80
  ## Dependencies
127
81
 
128
- - `createElement` from React
129
- - `PConnectComponent`, `getComponentFromRegistry('FieldGroup')` from `@pega/sdk-react`
82
+ - The project's PConnect bridge utility (for rendering child PConnect nodes)
83
+ - The project's component registry (to retrieve `FieldGroup`)
130
84
 
131
85
  ## Design System Mapping
132
86
 
133
87
  **UI control type:** Read-only labeled section with vertically stacked fields.
134
88
 
135
- Listed design systems are examples only.
136
-
137
- | Design System | Recommended Component |
138
- | ------------------ | ------------------------------------------------------------------------ |
139
- | Default (CSS only) | `<fieldset>/<legend>` wrapper with CSS grid single column |
140
- | MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 12 }}>` per field |
141
- | Ant Design | `<Card title={label}>` with `<Row><Col span={24}>` per field |
142
- | Chakra UI | `<Box>` with heading + `<Stack spacing={2}>` |
143
- | Shadcn/ui | `<Card><CardHeader><CardContent>` with stacked field items |
144
-
145
- When implementing in a specific design system:
89
+ When implementing in a specific design system, map the following:
146
90
 
147
- - All children must have `displayMode='DISPLAY_ONLY'` and `readOnly=true` inherited
148
- - Highlighted data uses `STACKED_LARGE_VAL` — larger/bolder value display
149
- - `showLabel=false` hides the section heading entirely
91
+ - The outer wrapper is a labeled group container (e.g., a fieldset/legend, a card with a title header, or a boxed section with a heading). Use whatever grouped-section primitive your design system provides.
92
+ - Each child occupies the full width of the container (single column). Use your design system's grid or stack primitive with a single column and ~8px spacing between items.
93
+ - Highlighted data renders in the same single-column layout with additional bottom padding (~1rem) separating it from regular children.
94
+ - All children must have `displayMode='DISPLAY_ONLY'` and `readOnly=true` inherited.
95
+ - Highlighted data uses `STACKED_LARGE_VAL` — larger/bolder value display.
96
+ - `showLabel=false` hides the section heading entirely.
@@ -8,96 +8,51 @@ Read-only tabbed details template. Renders sub-tabs with deferred-loaded tab con
8
8
 
9
9
  ## Component Purpose
10
10
 
11
- Renders a tabbed layout for a details region. Each tab contains display-only content loaded on demand. Uses the same `tabUtils` as `SubTabs` but is scoped to a details/display context. Optionally shows a section heading above the tabs.
11
+ Renders a tabbed layout for a details region. Each tab contains display-only content loaded on demand. Uses the same tab utilities as `SubTabs` but is scoped to a details/display context. Optionally shows a section heading above the tabs.
12
12
 
13
13
  ## Pega Metadata
14
14
 
15
- - **Registration key:** `DetailsSubTabs` (in `component-map.ts`)
15
+ - **Registration key:** `DetailsSubTabs` (in the project's component map)
16
16
  - **Category:** Navigation / Display template
17
- - **Extends:** `PConnProps`
18
-
19
- ## Props
20
-
21
- | Prop | Type | Required | Description |
22
- | ------------- | ------------- | -------- | ----------------------------------------------------------------- |
23
- | `children` | `ReactNode[]` | Yes | Tab content — `children[0]` is the deferred-loaded tabs container |
24
- | `label` | `string` | Yes | Section heading shown above tabs when `showLabel` is true |
25
- | `showLabel` | `boolean` | No | Whether to show the section heading. Default `true` |
26
- | `getPConnect` | `function` | Yes | PConnect getter |
27
-
28
- ## Component Skeleton
29
-
30
- ```typescript
31
- import { Children, type PropsWithChildren, useEffect, useState } from 'react';
32
- import { getTransientTabs, getVisibleTabs, tabClick } from '../../SubTabs/tabUtils';
33
- import type { PConnProps } from '@pega/sdk-react';
34
-
35
- interface DetailsSubTabsProps extends PConnProps {
36
- showLabel: boolean;
37
- label: string;
38
- }
39
-
40
- export default function DetailsSubTabs(props: PropsWithChildren<DetailsSubTabsProps>) {
41
- const { children = [], label, showLabel = true, getPConnect } = props;
42
- const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
43
-
44
- // 1. Extract deferred tabs from first child
45
- const deferLoadedTabs = Children.toArray(children)[0];
46
- let availableTabs = [];
47
-
48
- // 2. Compute visible tabs on mount
49
- useEffect(() => {
50
- availableTabs = getVisibleTabs(deferLoadedTabs, 'detailsSubTabs');
51
- }, [availableTabs]);
52
-
53
- // 3. Tab state
54
- const [currentTabId, setCurrentTabId] = useState('0');
55
- const [tabItems, setTabitem] = useState([]);
56
-
57
- // 4. Update tab items when currentTabId changes
58
- useEffect(() => {
59
- const tempTabItems = getTransientTabs(availableTabs, currentTabId, tabItems);
60
- setTabitem(tempTabItems);
61
- }, [currentTabId]);
62
-
63
- // 5. Tab click handler
64
- const handleTabClick = (id, index: string) => {
65
- setCurrentTabId(index);
66
- tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems);
67
- };
68
-
69
- // 6. Render: optional heading + TabContext + Tabs + TabPanels
70
- return (
71
- <>
72
- {propsToUse.showLabel && <h3>{propsToUse.label}</h3>}
73
- <TabContext value={currentTabId.toString()}>
74
- <TabBar onChange={handleTabClick} value={currentTabId}>
75
- {tabItems.map(tab => <Tab key={tab.id} label={tab.name} value={tab.id} />)}
76
- </TabBar>
77
- {tabItems.map(tab => (
78
- <TabPanel key={tab.id} value={tab.id} tabIndex={+tab.id}>
79
- {tab.content || 'No content exists'}
80
- </TabPanel>
81
- ))}
82
- </TabContext>
83
- </>
84
- );
85
- }
86
- ```
17
+ - **Extends:** the project's base component interface
18
+
19
+ ## Inputs
20
+
21
+ | Name | Type | Required | Description |
22
+ | ------------- | ------------------ | -------- | ----------------------------------------------------------------- |
23
+ | `children` | renderable content | Yes | Tab content — `children[0]` is the deferred-loaded tabs container |
24
+ | `label` | `string` | Yes | Section heading shown above tabs when `showLabel` is true |
25
+ | `showLabel` | `boolean` | No | Whether to show the section heading. Default `true` |
26
+ | `getPConnect` | `function` | Yes | PConnect getter |
27
+
28
+ ## Implementation Structure
29
+
30
+ **Module Setup:** Obtain the shared tab utilities (`getVisibleTabs`, `getTransientTabs`, `tabClick`) from the project's SubTabs tab-utility module. These helpers are framework-independent and work with any rendering approach.
31
+
32
+ **Main Component Logic** — steps in order:
33
+
34
+ 1. Receive inputs: `children` (default empty array), `label`, `showLabel` (default `true`), and `getPConnect`.
35
+ 2. Merge inherited display settings: `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
36
+ 3. Extract the deferred tabs container from the first child element; initialize `availableTabs` to an empty array.
37
+ 4. On mount (lifecycle effect), compute `availableTabs` via `getVisibleTabs(deferLoadedTabs, 'detailsSubTabs')`.
38
+ 5. Declare local state: `currentTabId` (string, initialized to `'0'`) and `tabItems` (array, initialized empty).
39
+ 6. In a lifecycle effect keyed on `currentTabId`, recompute `tabItems` via `getTransientTabs(availableTabs, currentTabId, tabItems)`.
40
+ 7. Define a tab-click handler that sets `currentTabId` to the clicked index and calls `tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems)`.
41
+ 8. Render: an optional heading (shown when `propsToUse.showLabel` is true, displaying `propsToUse.label`), followed by a tab context wrapping a tab bar (one tab per `tabItems` entry, labeled `tab.name`) and a set of tab panels (each showing `tab.content` or a "No content exists" fallback).
87
42
 
88
43
  ## Behavioral Contract
89
44
 
90
- 1. **Inherited props merge:** `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
91
- 2. **Extract deferred tabs:** `deferLoadedTabs = Children.toArray(children)[0]`.
45
+ 1. **Inherited settings merge:** `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
46
+ 2. **Extract deferred tabs:** `deferLoadedTabs` = first element from children array.
92
47
  3. **Compute visible tabs:** On mount and when `availableTabs` changes, call `getVisibleTabs(deferLoadedTabs, 'detailsSubTabs')` to get the filtered visible tab list.
93
- 4. **State:** `currentTabId` (string, default `'0'`), `tabItems` (array of `{ id, name, content }` objects).
48
+ 4. **Local state:** `currentTabId` (string, default `'0'`), `tabItems` (array of `{ id, name, content }` objects).
94
49
  5. **Transient tabs:** On `currentTabId` change, call `getTransientTabs(availableTabs, currentTabId, tabItems)` and update `tabItems` state.
95
- 6. **Tab click handler:** `handleTabClick(id, index)` → calls `setCurrentTabId(index)` and `tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems)` from `tabUtils`.
50
+ 6. **Tab click handler:** `handleTabClick(id, index)` → sets `currentTabId` to `index` and calls `tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems)` from the tab utilities.
96
51
  7. **Render:**
97
- - If `propsToUse.showLabel`, render `<h3>{propsToUse.label}</h3>`.
98
- - Render `<TabContext value={currentTabId}>`.
99
- - Render `<Tabs onChange={handleTabClick} value={currentTabId}>` with one `<Tab key={tab.id} label={tab.name} value={tab.id} />` per `tabItems` entry.
100
- - Render one `<TabPanel key={tab.id} value={tab.id} tabIndex={+tab.id}>` per `tabItems` entry containing `tab.content || 'No content exists'`.
52
+ - If `propsToUse.showLabel`, render a heading with `propsToUse.label`.
53
+ - Render a tab context bound to `currentTabId`.
54
+ - Render a tab bar with one tab per `tabItems` entry (keyed by `tab.id`, labeled `tab.name`, valued `tab.id`).
55
+ - Render one tab panel per `tabItems` entry containing `tab.content` or the fallback text "No content exists".
101
56
 
102
57
  ## Visual Specifications
103
58
 
@@ -105,7 +60,7 @@ export default function DetailsSubTabs(props: PropsWithChildren<DetailsSubTabsPr
105
60
 
106
61
  | Property | Value |
107
62
  | --------------- | ------------------------------- |
108
- | Tag | `<h3>` |
63
+ | Semantic level | Third-level heading (`<h3>`) |
109
64
  | Shown only when | `propsToUse.showLabel === true` |
110
65
 
111
66
  ### Tab Bar
@@ -125,33 +80,24 @@ export default function DetailsSubTabs(props: PropsWithChildren<DetailsSubTabsPr
125
80
 
126
81
  ## Edge Cases & Special Logic
127
82
 
128
- - `availableTabs` is computed inside `useEffect` (not via useState) — this means the initial render uses an empty array, and tabs populate after mount.
129
- - The `useEffect` on `[availableTabs]` has a stale closure issue in the reference implementation — use a `useRef` or `useMemo` for production implementations if needed.
130
- - `tabItems` starts as `[]` — the tab bar renders empty until the first `currentTabId` change triggers `getTransientTabs`.
131
- - `propsToUse` label/showLabel may be overridden by inherited props — always use `propsToUse` for the label, not raw `label`/`showLabel` props.
83
+ - `availableTabs` is computed inside a lifecycle effect (not immediately) — this means the initial render uses an empty array, and tabs populate after mount.
84
+ - The lifecycle effect watching `availableTabs` has a stale closure issue in the reference implementation — use an instance reference or memoized computation for production implementations if needed.
85
+ - `tabItems` starts as an empty array — the tab bar renders empty until the first `currentTabId` change triggers `getTransientTabs`.
86
+ - `propsToUse` label/showLabel may be overridden by inherited settings — always use `propsToUse` for the label, not the raw inputs.
132
87
 
133
88
  ## Dependencies
134
89
 
135
- - `getTransientTabs`, `getVisibleTabs`, `tabClick` from `../../SubTabs/tabUtils`
136
- - `TabContext`, `TabPanel` from `@mui/lab`
137
- - `Tab`, `Tabs` from `@mui/material`
90
+ - `getTransientTabs`, `getVisibleTabs`, `tabClick` from the project's SubTabs tab-utility module (framework-independent helpers)
138
91
 
139
92
  ## Design System Mapping
140
93
 
141
94
  **UI control type:** Tabbed section container for read-only details content.
142
95
 
143
- Listed design systems are examples only.
144
-
145
- | Design System | Recommended Component |
146
- | ------------------ | -------------------------------------------------------- |
147
- | Default (CSS only) | Custom tab bar with CSS underline indicator |
148
- | MUI | `<TabContext>` + `<Tabs>` + `<TabPanel>` from `@mui/lab` |
149
- | Ant Design | `<Tabs>` with `items` array |
150
- | Chakra UI | `<Tabs>` + `<TabList>` + `<TabPanels>` |
151
- | Shadcn/ui | `<Tabs>` + `<TabsList>` + `<TabsContent>` |
152
-
153
- When implementing in a specific design system:
96
+ When implementing in a specific design system, map the following:
154
97
 
155
- - `getVisibleTabs` and `getTransientTabs` are tabUtils helpers — use them regardless of UI library
98
+ - A tab context/wrapper that tracks the active tab
99
+ - A tab bar with clickable tab items
100
+ - Tab panels that show/hide based on active selection
101
+ - `getVisibleTabs` and `getTransientTabs` are tab-utility helpers — use them regardless of UI library
156
102
  - Tab content is lazily loaded via the transient tab pattern
157
- - Optional `<h3>` heading above the tab bar (controlled by `showLabel`)
103
+ - Optional heading above the tab bar (controlled by `showLabel`)
@@ -8,54 +8,55 @@ Read-only three-column details template. Renders child fields in DISPLAY_ONLY mo
8
8
 
9
9
  ## Component Purpose
10
10
 
11
- Identical to `Details` and `DetailsTwoColumn` in all behavior except children are distributed into a **three-column grid** (`xs: 4` per child). Used in wide details regions where the design calls for three equal columns of fields.
11
+ Identical to `Details` and `DetailsTwoColumn` in all behavior except children are distributed into a **three-column grid** (one-third width per child). Used in wide details regions where the design calls for three equal columns of fields.
12
12
 
13
13
  > The implementation is nearly identical to `Details`. See `Details.md` for full pattern descriptions. Only the column width differs.
14
14
 
15
15
  ## Pega Metadata
16
16
 
17
- - **Registration key:** `DetailsThreeColumn` (in `component-map.ts`)
17
+ - **Registration key:** `DetailsThreeColumn` (in the project's component map)
18
18
  - **Category:** Display template
19
- - **Extends:** `PConnProps`
19
+ - **Extends:** the project's base component interface
20
20
 
21
- ## Props
21
+ ## Inputs
22
22
 
23
- | Prop | Type | Required | Description |
23
+ | Name | Type | Required | Description |
24
24
  | --------------------- | ---------- | -------- | -------------------------------------------------------------------- |
25
25
  | `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
26
26
  | `showLabel` | `boolean` | No | Whether to show the section label. Default `true` |
27
27
  | `showHighlightedData` | `boolean` | No | Whether to render highlighted fields above children. Default `false` |
28
28
  | `getPConnect` | `function` | Yes | PConnect getter |
29
29
 
30
- ## Component Skeleton
30
+ ## Implementation Structure
31
31
 
32
- Identical to `Details` skeleton except grid items use `xs={4}` (three columns).
32
+ **Module Setup:** Obtain the FieldGroup component from the project's component registry. Access the project's bridge component for rendering child configuration objects as live components.
33
33
 
34
- ```typescript
35
- // Same as Details — only this line differs in the grid:
36
- // Highlighted data: <GridItem xs={4} key={...}>{child}</GridItem>
37
- // Regular children: <GridItem xs={4} key={...}>{child}</GridItem>
38
- ```
34
+ **Main Component Logic** — steps in order:
39
35
 
40
- See `Details.md` skeleton for the full pattern. The ONLY change is `xs: 12` → `xs: 4`.
36
+ 1. Receive inputs: `label`, `showLabel` (default `true`), `showHighlightedData` (default `false`), and `getPConnect`.
37
+ 2. Merge inherited display settings: `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
38
+ 3. Set display mode on the PConnect instance: `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `getPConnect().setInheritedProp('readOnly', true)`.
39
+ 4. Re-create children from `getPConnect().getChildren()` — map each config object into a live component via the bridge component, passing a unique key per child.
40
+ 5. If `showHighlightedData` is true, retrieve `highlightedData` from `getPConnect().getRawMetadata().config`, set each field's `displayMode` to `'STACKED_LARGE_VAL'`, mark any field whose value is `'@P .pyStatusWork'` with `type: 'TextInput'` and `displayAsStatus: true`, then call `getPConnect().createComponent(field, '', 0, {})` for each.
41
+ 6. Render: FieldGroup wrapper (showing `propsToUse.label` if `propsToUse.showLabel` is true), optional highlighted data row (3-column grid with bottom padding), then all children in a 3-column grid.
41
42
 
42
43
  ## Behavioral Contract
43
44
 
44
45
  All steps identical to `Details`, except:
45
46
 
46
- - **Regular children grid:** Each child renders at `Grid size={{ xs: 4 }}` (three per row).
47
- - **Highlighted data grid:** Each highlighted field also renders at `Grid size={{ xs: 4 }}`.
48
- - All other behaviors (inherited props merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
47
+ - **Regular children grid:** Each child renders at one-third width (three per row).
48
+ - **Highlighted data grid:** Each highlighted field also renders at one-third width.
49
+ - All other behaviors (inherited settings merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
49
50
 
50
51
  ## Visual Specifications
51
52
 
52
53
  ### Column Structure
53
54
 
54
- | | Details | DetailsTwoColumn | DetailsThreeColumn |
55
- | ----------------------- | ------- | ---------------- | ------------------ |
56
- | Column width per child | xs: 12 | xs: 6 | **xs: 4** |
57
- | Columns per row | 1 | 2 | **3** |
58
- | Highlighted data column | xs: 12 | xs: 6 | **xs: 4** |
55
+ | | Details | DetailsTwoColumn | DetailsThreeColumn |
56
+ | ----------------------- | ---------- | ---------------- | ------------------ |
57
+ | Column width per child | full-width | 1/2 | **1/3** |
58
+ | Columns per row | 1 | 2 | **3** |
59
+ | Highlighted data column | full-width | 1/2 | **1/3** |
59
60
 
60
61
  **CSS-only implementation notes:**
61
62
 
@@ -69,24 +70,16 @@ All edge cases identical to `Details`. See `Details.md`.
69
70
 
70
71
  ## Dependencies
71
72
 
72
- - `createElement` from React
73
- - `PConnectComponent`, `getComponentFromRegistry('FieldGroup')` from `@pega/sdk-react`
73
+ - The project's component registry — to resolve the `FieldGroup` component at runtime
74
+ - A bridge component for rendering PConnect child configuration objects as live components
74
75
 
75
76
  ## Design System Mapping
76
77
 
77
78
  **UI control type:** Read-only labeled section with fields in a three-column grid.
78
79
 
79
- Listed design systems are examples only.
80
-
81
- | Design System | Recommended Component |
82
- | ------------------ | ----------------------------------------------------------------------------- |
83
- | Default (CSS only) | `<fieldset>/<legend>` with CSS `grid-template-columns: 1fr 1fr 1fr; gap: 8px` |
84
- | MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 4 }}>` per field |
85
- | Ant Design | `<Descriptions column={3}>` or `<Row><Col span={8}>` per field |
86
- | Chakra UI | `<SimpleGrid columns={3} spacing={2}>` |
87
- | Shadcn/ui | Tailwind `grid grid-cols-3 gap-2` |
88
-
89
- When implementing in a specific design system:
80
+ When implementing in a specific design system, map the following:
90
81
 
91
82
  - 3-column layout — each field takes one-third of the available width
83
+ - Grid container with spacing/gap between items
84
+ - FieldGroup wrapper component for the labeled section (see `FieldGroup.md` DSE skill)
92
85
  - All other behaviors inherited from `Details` (DISPLAY_ONLY, readOnly, FieldGroup, highlighted data)
@@ -8,59 +8,51 @@ Read-only two-column details template. Renders child fields in DISPLAY_ONLY mode
8
8
 
9
9
  ## Component Purpose
10
10
 
11
- Identical to `Details` in all behavior except children are distributed into a **two-column grid** (`xs: 6` per child) instead of single-column. Used in details regions where the design calls for side-by-side field pairs.
11
+ Identical to `Details` in all behavior except children are distributed into a **two-column grid** (half width per child) instead of single-column. Used in details regions where the design calls for side-by-side field pairs.
12
12
 
13
13
  > The implementation is nearly identical to `Details`. See `Details.md` for full pattern descriptions. Only the column width differs.
14
14
 
15
15
  ## Pega Metadata
16
16
 
17
- - **Registration key:** `DetailsTwoColumn` (in `component-map.ts`)
17
+ - **Registration key:** `DetailsTwoColumn` (in the project's component map)
18
18
  - **Category:** Display template
19
- - **Extends:** `PConnProps`
19
+ - **Extends:** the project's base component interface
20
20
 
21
- ## Props
21
+ ## Inputs
22
22
 
23
- | Prop | Type | Required | Description |
23
+ | Input | Type | Required | Description |
24
24
  | --------------------- | ---------- | -------- | -------------------------------------------------------------------- |
25
25
  | `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
26
26
  | `showLabel` | `boolean` | No | Whether to show the section label. Default `true` |
27
27
  | `showHighlightedData` | `boolean` | No | Whether to render highlighted fields above children. Default `false` |
28
28
  | `getPConnect` | `function` | Yes | PConnect getter |
29
29
 
30
- ## Component Skeleton
30
+ ## Implementation Structure
31
31
 
32
- Identical to `Details` skeleton except grid items use `xs={6}` (two columns).
33
-
34
- ```typescript
35
- // Same as Details — only this line differs in the grid:
36
- // Highlighted data: <GridItem xs={6} key={...}>{child}</GridItem>
37
- // Regular children: <GridItem xs={6} key={...}>{child}</GridItem>
38
- ```
39
-
40
- See `Details.md` skeleton for the full pattern. The ONLY change is `xs: 12` → `xs: 6`.
32
+ Identical to the `Details` implementation structure except grid items use half width (two columns) instead of full width. Both the highlighted-data grid items and the regular-children grid items render at half width (two per row). See `Details.md`'s Implementation Structure for the full pattern description — the ONLY change is full-width → half-width per child.
41
33
 
42
34
  ## Behavioral Contract
43
35
 
44
36
  All steps identical to `Details`, except:
45
37
 
46
- - **Regular children grid:** Each child renders at `Grid size={{ xs: 6 }}` (two per row, side by side).
47
- - **Highlighted data grid:** Each highlighted field also renders at `Grid size={{ xs: 6 }}`.
48
- - All other behaviors (inherited props merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
38
+ - **Regular children grid:** Each child renders at half width (two per row, side by side).
39
+ - **Highlighted data grid:** Each highlighted field also renders at half width.
40
+ - All other behaviors (inherited inputs merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
49
41
 
50
42
  ## Visual Specifications
51
43
 
52
44
  ### Column Structure
53
45
 
54
- | | Details | DetailsTwoColumn |
55
- | ----------------------- | ------------------- | ---------------------- |
56
- | Column width per child | xs: 12 (full width) | **xs: 6 (half width)** |
57
- | Columns per row | 1 | **2** |
58
- | Highlighted data column | xs: 12 | **xs: 6** |
46
+ | | Details | DetailsTwoColumn |
47
+ | ----------------------- | ---------- | ---------------- |
48
+ | Column width per child | Full width | **Half width** |
49
+ | Columns per row | 1 | **2** |
50
+ | Highlighted data column | Full width | **Half width** |
59
51
 
60
52
  **CSS-only implementation notes:**
61
53
 
62
- - Children grid: `display: grid; grid-template-columns: 1fr 1fr; gap: 8px`.
63
- - Highlighted data row: `display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding-bottom: 1rem`.
54
+ - Children grid: two equal columns with ~8px gap between items.
55
+ - Highlighted data row: two equal columns with ~8px gap and ~1rem bottom padding.
64
56
  - Wrap in FieldGroup (see `FieldGroup.md` DSE skill).
65
57
 
66
58
  ## Edge Cases & Special Logic
@@ -69,24 +61,17 @@ All edge cases identical to `Details`. See `Details.md`.
69
61
 
70
62
  ## Dependencies
71
63
 
72
- - `createElement` from React
73
- - `PConnectComponent`, `getComponentFromRegistry('FieldGroup')` from `@pega/sdk-react`
64
+ - The project's PConnect bridge utility (for rendering child PConnect nodes)
65
+ - The project's component registry (to retrieve `FieldGroup`)
74
66
 
75
67
  ## Design System Mapping
76
68
 
77
69
  **UI control type:** Read-only labeled section with fields in a two-column grid.
78
70
 
79
- Listed design systems are examples only.
80
-
81
- | Design System | Recommended Component |
82
- | ------------------ | ------------------------------------------------------------------------- |
83
- | Default (CSS only) | `<fieldset>/<legend>` with CSS `grid-template-columns: 1fr 1fr; gap: 8px` |
84
- | MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 6 }}>` per field |
85
- | Ant Design | `<Descriptions column={2}>` or `<Row><Col span={12}>` per field |
86
- | Chakra UI | `<SimpleGrid columns={2} spacing={2}>` |
87
- | Shadcn/ui | Tailwind `grid grid-cols-2 gap-2` |
88
-
89
- When implementing in a specific design system:
71
+ When implementing in a specific design system, map the following:
90
72
 
91
- - 2-column layout — each field takes half the available width
92
- - All other behaviors inherited from `Details` (DISPLAY_ONLY, readOnly, FieldGroup, highlighted data)
73
+ - The outer wrapper is a labeled group container (same as Details — fieldset/legend, card, or boxed section). Use whatever grouped-section primitive your design system provides.
74
+ - Each child occupies half the container width (two columns per row). Use your design system's grid or multi-column layout primitive with two equal columns and ~8px spacing between items.
75
+ - Highlighted data renders in the same two-column layout with additional bottom padding (~1rem) separating it from regular children.
76
+ - 2-column layout — each field takes half the available width.
77
+ - All other behaviors inherited from `Details` (DISPLAY_ONLY, readOnly, FieldGroup, highlighted data).