@pega/sdk 0.0.1

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 (465) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +111 -0
  3. package/SECURITY.md +10 -0
  4. package/dist/index.js +753 -0
  5. package/package.json +41 -0
  6. package/templates/angular-sdk-reference/.github/AGENTS.md +23 -0
  7. package/templates/angular-sdk-reference/.github/copilot-instructions.md +40 -0
  8. package/templates/angular-sdk-reference/.github/skills/pega-sdk-component.md +48 -0
  9. package/templates/angular-sdk-reference/angular.json +34 -0
  10. package/templates/angular-sdk-reference/package.json +31 -0
  11. package/templates/angular-sdk-reference/sdk-config.json +26 -0
  12. package/templates/angular-sdk-reference/src/app/app.component.ts +54 -0
  13. package/templates/angular-sdk-reference/src/index.html +12 -0
  14. package/templates/angular-sdk-reference/src/main.ts +4 -0
  15. package/templates/angular-sdk-reference/src/styles.css +19 -0
  16. package/templates/angular-sdk-reference/tsconfig.json +32 -0
  17. package/templates/react-native-sdk-reference/.github/AGENTS.md +23 -0
  18. package/templates/react-native-sdk-reference/.github/copilot-instructions.md +40 -0
  19. package/templates/react-native-sdk-reference/.github/skills/pega-sdk-component.md +48 -0
  20. package/templates/react-native-sdk-reference/App.tsx +51 -0
  21. package/templates/react-native-sdk-reference/app.json +11 -0
  22. package/templates/react-native-sdk-reference/package.json +22 -0
  23. package/templates/react-native-sdk-reference/sdk-config.json +14 -0
  24. package/templates/react-native-sdk-reference/tsconfig.json +12 -0
  25. package/templates/react-sdk-reference/.github/copilot-instructions.md +185 -0
  26. package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +40 -0
  27. package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +77 -0
  28. package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +73 -0
  29. package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +94 -0
  30. package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +89 -0
  31. package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +21 -0
  32. package/templates/react-sdk-reference/.github/prompts/component-manifest.json +111 -0
  33. package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +110 -0
  34. package/templates/react-sdk-reference/.github/prompts/replace-all-fields.prompt.md +48 -0
  35. package/templates/react-sdk-reference/.github/prompts/replace-component.prompt.md +81 -0
  36. package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +524 -0
  37. package/templates/react-sdk-reference/.github/prompts/replace-field.prompt.md +41 -0
  38. package/templates/react-sdk-reference/.github/prompts/swap-design-system.prompt.md +49 -0
  39. package/templates/react-sdk-reference/.github/skills/component-contracts.md +140 -0
  40. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/AlertBanner.md +135 -0
  41. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +149 -0
  42. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +154 -0
  43. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +144 -0
  44. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +131 -0
  45. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +111 -0
  46. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +115 -0
  47. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +149 -0
  48. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +83 -0
  49. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +206 -0
  50. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +135 -0
  51. package/templates/react-sdk-reference/.github/skills/design-system-extension.md +249 -0
  52. package/templates/react-sdk-reference/.github/skills/field-components.md +262 -0
  53. package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +112 -0
  54. package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +203 -0
  55. package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +158 -0
  56. package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +106 -0
  57. package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +99 -0
  58. package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +103 -0
  59. package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +98 -0
  60. package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +114 -0
  61. package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +107 -0
  62. package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +90 -0
  63. package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +87 -0
  64. package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +136 -0
  65. package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +164 -0
  66. package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +164 -0
  67. package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +92 -0
  68. package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +110 -0
  69. package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +146 -0
  70. package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +138 -0
  71. package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +124 -0
  72. package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +216 -0
  73. package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +148 -0
  74. package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +96 -0
  75. package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +101 -0
  76. package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +104 -0
  77. package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +88 -0
  78. package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +85 -0
  79. package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +180 -0
  80. package/templates/react-sdk-reference/.github/skills/run-and-verify.md +68 -0
  81. package/templates/react-sdk-reference/.github/skills/swap-design-system.md +105 -0
  82. package/templates/react-sdk-reference/.github/skills/template-components.md +285 -0
  83. package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +144 -0
  84. package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +122 -0
  85. package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +83 -0
  86. package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +100 -0
  87. package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +131 -0
  88. package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +126 -0
  89. package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +107 -0
  90. package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +120 -0
  91. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +102 -0
  92. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +110 -0
  93. package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +88 -0
  94. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +95 -0
  95. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +78 -0
  96. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +78 -0
  97. package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +101 -0
  98. package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +109 -0
  99. package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +113 -0
  100. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +104 -0
  101. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +85 -0
  102. package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +68 -0
  103. package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +139 -0
  104. package/templates/react-sdk-reference/.github/skills/template-skills/MultiReferenceReadOnly.md +80 -0
  105. package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +141 -0
  106. package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +109 -0
  107. package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +124 -0
  108. package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +135 -0
  109. package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +127 -0
  110. package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +103 -0
  111. package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +79 -0
  112. package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +131 -0
  113. package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +150 -0
  114. package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +135 -0
  115. package/templates/react-sdk-reference/.github/skills/widget-components.md +234 -0
  116. package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +82 -0
  117. package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +146 -0
  118. package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +107 -0
  119. package/templates/react-sdk-reference/.github/skills/widget-skills/FileUtility.md +200 -0
  120. package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +99 -0
  121. package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +114 -0
  122. package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +167 -0
  123. package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +190 -0
  124. package/templates/react-sdk-reference/AGENTS.md +59 -0
  125. package/templates/react-sdk-reference/assets/icons/analytics-good-solid.svg +3 -0
  126. package/templates/react-sdk-reference/assets/icons/cart-solid.svg +3 -0
  127. package/templates/react-sdk-reference/assets/icons/headset.svg +3 -0
  128. package/templates/react-sdk-reference/assets/icons/mobile-phone-solid.svg +3 -0
  129. package/templates/react-sdk-reference/assets/icons/money-solid.svg +3 -0
  130. package/templates/react-sdk-reference/assets/icons/multi-device-solid.svg +3 -0
  131. package/templates/react-sdk-reference/index.html +36 -0
  132. package/templates/react-sdk-reference/package.json +52 -0
  133. package/templates/react-sdk-reference/sdk-config.json +26 -0
  134. package/templates/react-sdk-reference/src/AppSelector.tsx +18 -0
  135. package/templates/react-sdk-reference/src/FallbackComponent.tsx +40 -0
  136. package/templates/react-sdk-reference/src/MashupApp.styles.ts +105 -0
  137. package/templates/react-sdk-reference/src/MashupApp.tsx +254 -0
  138. package/templates/react-sdk-reference/src/PortalApp.tsx +175 -0
  139. package/templates/react-sdk-reference/src/components/component-map.ts +255 -0
  140. package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/AlertBanner.css +46 -0
  141. package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/AlertBanner.tsx +91 -0
  142. package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/index.tsx +1 -0
  143. package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/Banner.css +39 -0
  144. package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/Banner.tsx +53 -0
  145. package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/index.tsx +1 -0
  146. package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.css +16 -0
  147. package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +270 -0
  148. package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/index.tsx +1 -0
  149. package/templates/react-sdk-reference/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx +164 -0
  150. package/templates/react-sdk-reference/src/components/designSystemExtension/DetailsFields/index.tsx +1 -0
  151. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroup/FieldGroup.tsx +79 -0
  152. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroup/index.tsx +1 -0
  153. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx +58 -0
  154. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroupList/index.tsx +1 -0
  155. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldValueList/FieldValueList.tsx +84 -0
  156. package/templates/react-sdk-reference/src/components/designSystemExtension/FieldValueList/index.tsx +1 -0
  157. package/templates/react-sdk-reference/src/components/designSystemExtension/Operator/Operator.tsx +220 -0
  158. package/templates/react-sdk-reference/src/components/designSystemExtension/Operator/index.tsx +1 -0
  159. package/templates/react-sdk-reference/src/components/designSystemExtension/Pulse/Pulse.tsx +33 -0
  160. package/templates/react-sdk-reference/src/components/designSystemExtension/Pulse/index.tsx +1 -0
  161. package/templates/react-sdk-reference/src/components/designSystemExtension/RichTextEditor/RichTextEditor.tsx +201 -0
  162. package/templates/react-sdk-reference/src/components/designSystemExtension/RichTextEditor/index.tsx +1 -0
  163. package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/WssQuickCreate.css +33 -0
  164. package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +48 -0
  165. package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/index.tsx +1 -0
  166. package/templates/react-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +218 -0
  167. package/templates/react-sdk-reference/src/components/field/AutoComplete/config-ext.json +10 -0
  168. package/templates/react-sdk-reference/src/components/field/AutoComplete/index.tsx +1 -0
  169. package/templates/react-sdk-reference/src/components/field/CancelAlert/CancelAlert.css +24 -0
  170. package/templates/react-sdk-reference/src/components/field/CancelAlert/CancelAlert.tsx +148 -0
  171. package/templates/react-sdk-reference/src/components/field/CancelAlert/index.tsx +1 -0
  172. package/templates/react-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +263 -0
  173. package/templates/react-sdk-reference/src/components/field/Checkbox/config-ext.json +9 -0
  174. package/templates/react-sdk-reference/src/components/field/Checkbox/index.tsx +1 -0
  175. package/templates/react-sdk-reference/src/components/field/Currency/Currency.tsx +111 -0
  176. package/templates/react-sdk-reference/src/components/field/Currency/config-ext.json +9 -0
  177. package/templates/react-sdk-reference/src/components/field/Currency/currency-utils.ts +67 -0
  178. package/templates/react-sdk-reference/src/components/field/Currency/index.tsx +1 -0
  179. package/templates/react-sdk-reference/src/components/field/Date/Date.tsx +94 -0
  180. package/templates/react-sdk-reference/src/components/field/Date/config-ext.json +9 -0
  181. package/templates/react-sdk-reference/src/components/field/Date/index.tsx +1 -0
  182. package/templates/react-sdk-reference/src/components/field/DateTime/DateTime.tsx +101 -0
  183. package/templates/react-sdk-reference/src/components/field/DateTime/config-ext.json +8 -0
  184. package/templates/react-sdk-reference/src/components/field/DateTime/index.tsx +1 -0
  185. package/templates/react-sdk-reference/src/components/field/Decimal/Decimal.tsx +122 -0
  186. package/templates/react-sdk-reference/src/components/field/Decimal/config-ext.json +8 -0
  187. package/templates/react-sdk-reference/src/components/field/Decimal/index.tsx +1 -0
  188. package/templates/react-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +238 -0
  189. package/templates/react-sdk-reference/src/components/field/Dropdown/config-ext.json +8 -0
  190. package/templates/react-sdk-reference/src/components/field/Dropdown/index.tsx +1 -0
  191. package/templates/react-sdk-reference/src/components/field/Email/Email.tsx +96 -0
  192. package/templates/react-sdk-reference/src/components/field/Email/config-ext.json +8 -0
  193. package/templates/react-sdk-reference/src/components/field/Email/index.tsx +1 -0
  194. package/templates/react-sdk-reference/src/components/field/Group/Group.tsx +41 -0
  195. package/templates/react-sdk-reference/src/components/field/Group/config-ext.json +7 -0
  196. package/templates/react-sdk-reference/src/components/field/Group/index.tsx +1 -0
  197. package/templates/react-sdk-reference/src/components/field/Integer/Integer.tsx +100 -0
  198. package/templates/react-sdk-reference/src/components/field/Integer/config-ext.json +8 -0
  199. package/templates/react-sdk-reference/src/components/field/Integer/index.tsx +1 -0
  200. package/templates/react-sdk-reference/src/components/field/Location/Location.css +4 -0
  201. package/templates/react-sdk-reference/src/components/field/Location/Location.tsx +258 -0
  202. package/templates/react-sdk-reference/src/components/field/Location/config-ext.json +8 -0
  203. package/templates/react-sdk-reference/src/components/field/Location/index.tsx +1 -0
  204. package/templates/react-sdk-reference/src/components/field/Multiselect/Multiselect.tsx +238 -0
  205. package/templates/react-sdk-reference/src/components/field/Multiselect/index.tsx +1 -0
  206. package/templates/react-sdk-reference/src/components/field/Multiselect/utils.ts +230 -0
  207. package/templates/react-sdk-reference/src/components/field/ObjectReference/ObjectReference.tsx +235 -0
  208. package/templates/react-sdk-reference/src/components/field/ObjectReference/index.tsx +1 -0
  209. package/templates/react-sdk-reference/src/components/field/ObjectReference/utils.ts +111 -0
  210. package/templates/react-sdk-reference/src/components/field/Percentage/Percentage.tsx +112 -0
  211. package/templates/react-sdk-reference/src/components/field/Percentage/config-ext.json +8 -0
  212. package/templates/react-sdk-reference/src/components/field/Percentage/index.tsx +1 -0
  213. package/templates/react-sdk-reference/src/components/field/Phone/Phone.tsx +113 -0
  214. package/templates/react-sdk-reference/src/components/field/Phone/config-ext.json +8 -0
  215. package/templates/react-sdk-reference/src/components/field/Phone/index.tsx +1 -0
  216. package/templates/react-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +158 -0
  217. package/templates/react-sdk-reference/src/components/field/RadioButtons/config-ext.json +8 -0
  218. package/templates/react-sdk-reference/src/components/field/RadioButtons/index.tsx +1 -0
  219. package/templates/react-sdk-reference/src/components/field/RichText/RichText.css +79 -0
  220. package/templates/react-sdk-reference/src/components/field/RichText/RichText.tsx +98 -0
  221. package/templates/react-sdk-reference/src/components/field/RichText/config-ext.json +10 -0
  222. package/templates/react-sdk-reference/src/components/field/RichText/index.tsx +1 -0
  223. package/templates/react-sdk-reference/src/components/field/ScalarList/ScalarList.tsx +63 -0
  224. package/templates/react-sdk-reference/src/components/field/ScalarList/config-ext.json +7 -0
  225. package/templates/react-sdk-reference/src/components/field/ScalarList/index.tsx +1 -0
  226. package/templates/react-sdk-reference/src/components/field/SelectableCard/SelectableCard.tsx +189 -0
  227. package/templates/react-sdk-reference/src/components/field/SelectableCard/index.tsx +1 -0
  228. package/templates/react-sdk-reference/src/components/field/SelectableCard/utils.tsx +223 -0
  229. package/templates/react-sdk-reference/src/components/field/SemanticLink/SemanticLink.tsx +208 -0
  230. package/templates/react-sdk-reference/src/components/field/SemanticLink/config-ext.json +7 -0
  231. package/templates/react-sdk-reference/src/components/field/SemanticLink/index.tsx +1 -0
  232. package/templates/react-sdk-reference/src/components/field/SemanticLink/utils.ts +49 -0
  233. package/templates/react-sdk-reference/src/components/field/TextArea/TextArea.tsx +94 -0
  234. package/templates/react-sdk-reference/src/components/field/TextArea/config-ext.json +8 -0
  235. package/templates/react-sdk-reference/src/components/field/TextArea/index.tsx +1 -0
  236. package/templates/react-sdk-reference/src/components/field/TextContent/TextContent.tsx +46 -0
  237. package/templates/react-sdk-reference/src/components/field/TextContent/config-ext.json +7 -0
  238. package/templates/react-sdk-reference/src/components/field/TextContent/index.tsx +1 -0
  239. package/templates/react-sdk-reference/src/components/field/TextInput/TextInput.tsx +92 -0
  240. package/templates/react-sdk-reference/src/components/field/TextInput/config-ext.json +8 -0
  241. package/templates/react-sdk-reference/src/components/field/TextInput/index.tsx +1 -0
  242. package/templates/react-sdk-reference/src/components/field/Time/Time.tsx +79 -0
  243. package/templates/react-sdk-reference/src/components/field/Time/config-ext.json +8 -0
  244. package/templates/react-sdk-reference/src/components/field/Time/index.tsx +1 -0
  245. package/templates/react-sdk-reference/src/components/field/URL/URL.tsx +89 -0
  246. package/templates/react-sdk-reference/src/components/field/URL/config-ext.json +8 -0
  247. package/templates/react-sdk-reference/src/components/field/URL/index.tsx +1 -0
  248. package/templates/react-sdk-reference/src/components/field/UserReference/UserReference.tsx +198 -0
  249. package/templates/react-sdk-reference/src/components/field/UserReference/UserReferenceUtils.ts +13 -0
  250. package/templates/react-sdk-reference/src/components/field/UserReference/config-ext.json +7 -0
  251. package/templates/react-sdk-reference/src/components/field/UserReference/index.tsx +1 -0
  252. package/templates/react-sdk-reference/src/components/helpers/attachmentShared.ts +6 -0
  253. package/templates/react-sdk-reference/src/components/helpers/case-utils.tsx +99 -0
  254. package/templates/react-sdk-reference/src/components/helpers/common-utils.ts +26 -0
  255. package/templates/react-sdk-reference/src/components/helpers/data_page.ts +20 -0
  256. package/templates/react-sdk-reference/src/components/helpers/date-format-utils.ts +76 -0
  257. package/templates/react-sdk-reference/src/components/helpers/event-utils.ts +20 -0
  258. package/templates/react-sdk-reference/src/components/helpers/field-group-utils.ts +63 -0
  259. package/templates/react-sdk-reference/src/components/helpers/formatters/Boolean.ts +21 -0
  260. package/templates/react-sdk-reference/src/components/helpers/formatters/Currency.ts +77 -0
  261. package/templates/react-sdk-reference/src/components/helpers/formatters/CurrencyMap.ts +913 -0
  262. package/templates/react-sdk-reference/src/components/helpers/formatters/Date.ts +71 -0
  263. package/templates/react-sdk-reference/src/components/helpers/formatters/common.ts +14 -0
  264. package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +130 -0
  265. package/templates/react-sdk-reference/src/components/helpers/instructions-utils.ts +38 -0
  266. package/templates/react-sdk-reference/src/components/helpers/object-utils.ts +10 -0
  267. package/templates/react-sdk-reference/src/components/helpers/reactContextHelpers.ts +3 -0
  268. package/templates/react-sdk-reference/src/components/helpers/simpleTableHelpers.ts +452 -0
  269. package/templates/react-sdk-reference/src/components/helpers/state-utils.tsx +43 -0
  270. package/templates/react-sdk-reference/src/components/helpers/template-utils.ts +76 -0
  271. package/templates/react-sdk-reference/src/components/helpers/utils.ts +349 -0
  272. package/templates/react-sdk-reference/src/components/helpers/versionHelpers.ts +14 -0
  273. package/templates/react-sdk-reference/src/components/index.ts +8 -0
  274. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/AdvancedSearch.tsx +86 -0
  275. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroup/persistUtils.ts +52 -0
  276. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +329 -0
  277. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/hooks.ts +37 -0
  278. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/index.tsx +1 -0
  279. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/utils.ts +29 -0
  280. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/TemplateContext.ts +11 -0
  281. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/config-ext.json +9 -0
  282. package/templates/react-sdk-reference/src/components/template/AdvancedSearch/index.tsx +1 -0
  283. package/templates/react-sdk-reference/src/components/template/AppShell/AppShell.css +35 -0
  284. package/templates/react-sdk-reference/src/components/template/AppShell/AppShell.tsx +259 -0
  285. package/templates/react-sdk-reference/src/components/template/AppShell/index.tsx +1 -0
  286. package/templates/react-sdk-reference/src/components/template/BannerPage/BannerPage.tsx +54 -0
  287. package/templates/react-sdk-reference/src/components/template/BannerPage/config-ext.json +9 -0
  288. package/templates/react-sdk-reference/src/components/template/BannerPage/index.tsx +1 -0
  289. package/templates/react-sdk-reference/src/components/template/CaseSummary/CaseSummary.tsx +79 -0
  290. package/templates/react-sdk-reference/src/components/template/CaseSummary/config-ext.json +8 -0
  291. package/templates/react-sdk-reference/src/components/template/CaseSummary/index.tsx +1 -0
  292. package/templates/react-sdk-reference/src/components/template/CaseView/CaseView.tsx +261 -0
  293. package/templates/react-sdk-reference/src/components/template/CaseView/config-ext.json +8 -0
  294. package/templates/react-sdk-reference/src/components/template/CaseView/index.tsx +1 -0
  295. package/templates/react-sdk-reference/src/components/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +117 -0
  296. package/templates/react-sdk-reference/src/components/template/CaseViewActionsMenu/index.tsx +1 -0
  297. package/templates/react-sdk-reference/src/components/template/Confirmation/Confirmation.tsx +102 -0
  298. package/templates/react-sdk-reference/src/components/template/Confirmation/config-ext.json +11 -0
  299. package/templates/react-sdk-reference/src/components/template/Confirmation/index.tsx +1 -0
  300. package/templates/react-sdk-reference/src/components/template/DataReference/DataReference.tsx +590 -0
  301. package/templates/react-sdk-reference/src/components/template/DataReference/DataReferenceAdvancedSearchContext.ts +10 -0
  302. package/templates/react-sdk-reference/src/components/template/DataReference/SearchForm.tsx +213 -0
  303. package/templates/react-sdk-reference/src/components/template/DataReference/config-ext.json +8 -0
  304. package/templates/react-sdk-reference/src/components/template/DataReference/index.tsx +1 -0
  305. package/templates/react-sdk-reference/src/components/template/DataReference/utils.ts +90 -0
  306. package/templates/react-sdk-reference/src/components/template/DefaultForm/DefaultForm.css +34 -0
  307. package/templates/react-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +74 -0
  308. package/templates/react-sdk-reference/src/components/template/DefaultForm/config-ext.json +8 -0
  309. package/templates/react-sdk-reference/src/components/template/DefaultForm/index.tsx +1 -0
  310. package/templates/react-sdk-reference/src/components/template/DefaultForm/utils/index.ts +26 -0
  311. package/templates/react-sdk-reference/src/components/template/DefaultPage/DefaultPage.tsx +108 -0
  312. package/templates/react-sdk-reference/src/components/template/DefaultPage/index.tsx +1 -0
  313. package/templates/react-sdk-reference/src/components/template/Details/Details/Details.tsx +74 -0
  314. package/templates/react-sdk-reference/src/components/template/Details/Details/index.tsx +1 -0
  315. package/templates/react-sdk-reference/src/components/template/Details/DetailsSubTabs/DetailsSubTabs.tsx +58 -0
  316. package/templates/react-sdk-reference/src/components/template/Details/DetailsSubTabs/config-ext.json +8 -0
  317. package/templates/react-sdk-reference/src/components/template/Details/DetailsSubTabs/index.tsx +1 -0
  318. package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +79 -0
  319. package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/config-ext.json +8 -0
  320. package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/index.tsx +1 -0
  321. package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +79 -0
  322. package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/config-ext.json +8 -0
  323. package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/index.tsx +1 -0
  324. package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/DynamicTabs.tsx +79 -0
  325. package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/config.json +36 -0
  326. package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/index.tsx +1 -0
  327. package/templates/react-sdk-reference/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +116 -0
  328. package/templates/react-sdk-reference/src/components/template/FieldGroupTemplate/index.tsx +1 -0
  329. package/templates/react-sdk-reference/src/components/template/HierarchicalForm/HierarchicalForm.tsx +58 -0
  330. package/templates/react-sdk-reference/src/components/template/HierarchicalForm/hooks.ts +293 -0
  331. package/templates/react-sdk-reference/src/components/template/HierarchicalForm/index.tsx +1 -0
  332. package/templates/react-sdk-reference/src/components/template/InlineDashboard/InlineDashboard.tsx +72 -0
  333. package/templates/react-sdk-reference/src/components/template/InlineDashboard/index.tsx +1 -0
  334. package/templates/react-sdk-reference/src/components/template/InlineDashboardPage/InlineDashboardPage.tsx +39 -0
  335. package/templates/react-sdk-reference/src/components/template/InlineDashboardPage/config-ext.json +9 -0
  336. package/templates/react-sdk-reference/src/components/template/InlineDashboardPage/index.tsx +1 -0
  337. package/templates/react-sdk-reference/src/components/template/ListPage/ListPage.tsx +16 -0
  338. package/templates/react-sdk-reference/src/components/template/ListPage/config-ext.json +7 -0
  339. package/templates/react-sdk-reference/src/components/template/ListPage/index.tsx +1 -0
  340. package/templates/react-sdk-reference/src/components/template/ListView/DefaultViewMeta.ts +220 -0
  341. package/templates/react-sdk-reference/src/components/template/ListView/ListView.css +10 -0
  342. package/templates/react-sdk-reference/src/components/template/ListView/ListView.tsx +1391 -0
  343. package/templates/react-sdk-reference/src/components/template/ListView/config-ext.json +8 -0
  344. package/templates/react-sdk-reference/src/components/template/ListView/hooks.ts +93 -0
  345. package/templates/react-sdk-reference/src/components/template/ListView/index.tsx +1 -0
  346. package/templates/react-sdk-reference/src/components/template/ListView/utils.ts +781 -0
  347. package/templates/react-sdk-reference/src/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +52 -0
  348. package/templates/react-sdk-reference/src/components/template/MultiReferenceReadOnly/index.tsx +1 -0
  349. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/NarrowWide.css +19 -0
  350. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/NarrowWide.tsx +37 -0
  351. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/index.tsx +1 -0
  352. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +85 -0
  353. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/config-ext.json +8 -0
  354. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/index.tsx +1 -0
  355. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/NarrowWideForm.css +19 -0
  356. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +22 -0
  357. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/config-ext.json +8 -0
  358. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/index.tsx +1 -0
  359. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +28 -0
  360. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/config-ext.json +8 -0
  361. package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/index.tsx +1 -0
  362. package/templates/react-sdk-reference/src/components/template/ObjectPage/index.tsx +1 -0
  363. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/OneColumn.tsx +32 -0
  364. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/config-ext.json +8 -0
  365. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/index.tsx +1 -0
  366. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnPage/OneColumnPage.tsx +17 -0
  367. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnPage/config-ext.json +8 -0
  368. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnPage/index.tsx +1 -0
  369. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/OneColumnTab.tsx +11 -0
  370. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/config-ext.json +8 -0
  371. package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/index.tsx +1 -0
  372. package/templates/react-sdk-reference/src/components/template/PromotedFilters/PromotedFilters.css +7 -0
  373. package/templates/react-sdk-reference/src/components/template/PromotedFilters/PromotedFilters.tsx +204 -0
  374. package/templates/react-sdk-reference/src/components/template/PromotedFilters/index.tsx +1 -0
  375. package/templates/react-sdk-reference/src/components/template/SelfServiceCaseView/SelfServiceCaseView.tsx +153 -0
  376. package/templates/react-sdk-reference/src/components/template/SelfServiceCaseView/index.tsx +1 -0
  377. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/SimpleTable.tsx +126 -0
  378. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/config-ext.json +7 -0
  379. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/index.tsx +1 -0
  380. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +985 -0
  381. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableManual/index.tsx +1 -0
  382. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +122 -0
  383. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelect/index.tsx +1 -0
  384. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.tsx +207 -0
  385. package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelectReadonly/index.tsx +1 -0
  386. package/templates/react-sdk-reference/src/components/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +71 -0
  387. package/templates/react-sdk-reference/src/components/template/SingleReferenceReadOnly/index.tsx +1 -0
  388. package/templates/react-sdk-reference/src/components/template/SubTabs/SubTabs.tsx +46 -0
  389. package/templates/react-sdk-reference/src/components/template/SubTabs/config-ext.json +8 -0
  390. package/templates/react-sdk-reference/src/components/template/SubTabs/index.tsx +1 -0
  391. package/templates/react-sdk-reference/src/components/template/SubTabs/tabUtils.ts +185 -0
  392. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/TwoColumn.css +12 -0
  393. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/TwoColumn.tsx +54 -0
  394. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/config-ext.json +8 -0
  395. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/index.tsx +1 -0
  396. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnPage/TwoColumnPage.tsx +17 -0
  397. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnPage/config-ext.json +8 -0
  398. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnPage/index.tsx +1 -0
  399. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/TwoColumnTab.css +12 -0
  400. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +54 -0
  401. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/config-ext.json +8 -0
  402. package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/index.tsx +1 -0
  403. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/WideNarrow.css +19 -0
  404. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/WideNarrow.tsx +37 -0
  405. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/index.tsx +1 -0
  406. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +96 -0
  407. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/config-ext.json +8 -0
  408. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/index.tsx +1 -0
  409. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/WideNarrowForm.css +19 -0
  410. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +22 -0
  411. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/config-ext.json +8 -0
  412. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/index.tsx +1 -0
  413. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +28 -0
  414. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/config-ext.json +8 -0
  415. package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/index.tsx +1 -0
  416. package/templates/react-sdk-reference/src/components/template/WssNavBar/WssNavBar.css +11 -0
  417. package/templates/react-sdk-reference/src/components/template/WssNavBar/WssNavBar.tsx +160 -0
  418. package/templates/react-sdk-reference/src/components/template/WssNavBar/index.tsx +1 -0
  419. package/templates/react-sdk-reference/src/components/template/utils.tsx +58 -0
  420. package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/AppAnnouncement.tsx +60 -0
  421. package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/config-ext.json +8 -0
  422. package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/index.tsx +1 -0
  423. package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.css +95 -0
  424. package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.tsx +541 -0
  425. package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.types.ts +96 -0
  426. package/templates/react-sdk-reference/src/components/widget/Attachment/AttachmentUtils.ts +316 -0
  427. package/templates/react-sdk-reference/src/components/widget/Attachment/index.tsx +1 -0
  428. package/templates/react-sdk-reference/src/components/widget/CaseHistory/CaseHistory.tsx +171 -0
  429. package/templates/react-sdk-reference/src/components/widget/CaseHistory/config-ext.json +8 -0
  430. package/templates/react-sdk-reference/src/components/widget/CaseHistory/index.tsx +1 -0
  431. package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.css +13 -0
  432. package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +32 -0
  433. package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/index.tsx +1 -0
  434. package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/FileUtility.css +118 -0
  435. package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/FileUtility.tsx +653 -0
  436. package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/config-ext.json +8 -0
  437. package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/index.tsx +1 -0
  438. package/templates/react-sdk-reference/src/components/widget/Followers/Followers.tsx +43 -0
  439. package/templates/react-sdk-reference/src/components/widget/Followers/config-ext.json +8 -0
  440. package/templates/react-sdk-reference/src/components/widget/Followers/index.tsx +1 -0
  441. package/templates/react-sdk-reference/src/components/widget/QuickCreate/QuickCreate.tsx +88 -0
  442. package/templates/react-sdk-reference/src/components/widget/QuickCreate/config-ext.json +9 -0
  443. package/templates/react-sdk-reference/src/components/widget/QuickCreate/index.tsx +1 -0
  444. package/templates/react-sdk-reference/src/components/widget/SummaryItem/SummaryItem.css +76 -0
  445. package/templates/react-sdk-reference/src/components/widget/SummaryItem/SummaryItem.tsx +89 -0
  446. package/templates/react-sdk-reference/src/components/widget/SummaryItem/index.tsx +1 -0
  447. package/templates/react-sdk-reference/src/components/widget/SummaryList/SummaryList.tsx +23 -0
  448. package/templates/react-sdk-reference/src/components/widget/SummaryList/index.tsx +1 -0
  449. package/templates/react-sdk-reference/src/components/widget/ToDo/ToDo.css +81 -0
  450. package/templates/react-sdk-reference/src/components/widget/ToDo/ToDo.tsx +507 -0
  451. package/templates/react-sdk-reference/src/components/widget/ToDo/config-ext.json +8 -0
  452. package/templates/react-sdk-reference/src/components/widget/ToDo/index.tsx +1 -0
  453. package/templates/react-sdk-reference/src/main.tsx +13 -0
  454. package/templates/react-sdk-reference/src/mui-theme-augmentation.d.ts +6 -0
  455. package/templates/react-sdk-reference/tsconfig.json +24 -0
  456. package/templates/react-sdk-reference/vite.config.ts +65 -0
  457. package/templates/wc-sdk-reference/.github/AGENTS.md +23 -0
  458. package/templates/wc-sdk-reference/.github/copilot-instructions.md +40 -0
  459. package/templates/wc-sdk-reference/.github/skills/pega-sdk-component.md +48 -0
  460. package/templates/wc-sdk-reference/index.html +21 -0
  461. package/templates/wc-sdk-reference/package.json +19 -0
  462. package/templates/wc-sdk-reference/sdk-config.json +19 -0
  463. package/templates/wc-sdk-reference/src/index.ts +98 -0
  464. package/templates/wc-sdk-reference/tsconfig.json +21 -0
  465. package/templates/wc-sdk-reference/vite.config.ts +8 -0
@@ -0,0 +1,78 @@
1
+ # Skill: DetailsTwoColumn
2
+
3
+ Read-only two-column details template. Renders child fields in DISPLAY_ONLY mode in a 2-column grid inside a FieldGroup, with optional highlighted data.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
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.
12
+
13
+ > The implementation is nearly identical to `Details`. See `Details.md` for full pattern descriptions. Only the column width differs.
14
+
15
+ ## Pega Metadata
16
+
17
+ - **Registration key:** `DetailsTwoColumn` (in `component-map.ts`)
18
+ - **Category:** Display template
19
+ - **Extends:** `PConnProps`
20
+
21
+ ## Props
22
+
23
+ | Prop | Type | Required | Description |
24
+ |------|------|----------|-------------|
25
+ | `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
26
+ | `showLabel` | `boolean` | No | Whether to show the section label. Default `true` |
27
+ | `showHighlightedData` | `boolean` | No | Whether to render highlighted fields above children. Default `false` |
28
+ | `getPConnect` | `function` | Yes | PConnect getter |
29
+
30
+ ## Behavioral Contract
31
+
32
+ All steps identical to `Details`, except:
33
+
34
+ - **Regular children grid:** Each child renders at `Grid size={{ xs: 6 }}` (two per row, side by side).
35
+ - **Highlighted data grid:** Each highlighted field also renders at `Grid size={{ xs: 6 }}`.
36
+ - All other behaviors (inherited props merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
37
+
38
+ ## Visual Specifications
39
+
40
+ ### Column Structure
41
+
42
+ | | Details | DetailsTwoColumn |
43
+ |-|---------|-----------------|
44
+ | Column width per child | xs: 12 (full width) | **xs: 6 (half width)** |
45
+ | Columns per row | 1 | **2** |
46
+ | Highlighted data column | xs: 12 | **xs: 6** |
47
+
48
+ **CSS-only implementation notes:**
49
+ - Children grid: `display: grid; grid-template-columns: 1fr 1fr; gap: 8px`.
50
+ - Highlighted data row: `display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding-bottom: 1rem`.
51
+ - Wrap in FieldGroup (see `FieldGroup.md` DSE skill).
52
+
53
+ ## Edge Cases & Special Logic
54
+
55
+ All edge cases identical to `Details`. See `Details.md`.
56
+
57
+ ## Dependencies
58
+
59
+ - `createElement` from React
60
+ - `PConnectComponent`, `getComponentFromRegistry('FieldGroup')` from `@pega/sdk-react`
61
+
62
+ ## Design System Mapping
63
+
64
+ **UI control type:** Read-only labeled section with fields in a two-column grid.
65
+
66
+ Listed design systems are examples only.
67
+
68
+ | Design System | Recommended Component |
69
+ |---|---|
70
+ | Default (CSS only) | `<fieldset>/<legend>` with CSS `grid-template-columns: 1fr 1fr; gap: 8px` |
71
+ | MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 6 }}>` per field |
72
+ | Ant Design | `<Descriptions column={2}>` or `<Row><Col span={12}>` per field |
73
+ | Chakra UI | `<SimpleGrid columns={2} spacing={2}>` |
74
+ | Shadcn/ui | Tailwind `grid grid-cols-2 gap-2` |
75
+
76
+ When implementing in a specific design system:
77
+ - 2-column layout — each field takes half the available width
78
+ - All other behaviors inherited from `Details` (DISPLAY_ONLY, readOnly, FieldGroup, highlighted data)
@@ -0,0 +1,101 @@
1
+ # Skill: DynamicTabs
2
+
3
+ Data-driven tab template. Renders tabs dynamically from a `referenceList` data source — one tab per row in the list, with tab labels derived from a configurable property.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Unlike `SubTabs` or `DetailsSubTabs` where tabs are defined statically in metadata, `DynamicTabs` generates tabs at runtime from a reference list. The number and labels of tabs depend on the data in the reference list. Each tab's content is built via `buildView`.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `DynamicTabs` (in `component-map.ts`)
16
+ - **Category:** Navigation template — data-driven
17
+ - **Extends:** `PConnProps`
18
+
19
+ ## Props
20
+
21
+ | Prop | Type | Required | Description |
22
+ |------|------|----------|-------------|
23
+ | `referenceList` | `string` | Yes | Property path to the reference list (e.g. `'.pxResults'`) |
24
+ | `getPConnect` | `function` | Yes | PConnect getter |
25
+
26
+ ## Behavioral Contract
27
+
28
+ ### Tab Label Resolution
29
+
30
+ 1. Get component config: `tablabel = getPConnect().getComponentConfig().tablabel`.
31
+ 2. Get property name: `tablabelProp = PCore.getAnnotationUtils().getPropertyName(tablabel)`.
32
+ 3. For each row `i` in `referenceListData`:
33
+ - Tab label = `pConnect.getValue(referenceList + '[' + i + '].' + tablabelProp)`.
34
+
35
+ ### Reference List Data
36
+
37
+ ```
38
+ referenceListData = pConnect.getValue(referenceList + '.pxResults')
39
+ ```
40
+ Returns an array of row objects.
41
+
42
+ ### Tab Views
43
+
44
+ For each row index `i`:
45
+ ```
46
+ tabView = buildView(pConnect, i, '')
47
+ ```
48
+ Memoized — recalculate only when `referenceListData` changes.
49
+
50
+ ### State
51
+
52
+ - `currentPanel`: index of active tab (number, default `0`).
53
+ - `changePanel(index)`: `setCurrentPanel(index)`.
54
+
55
+ ### Render
56
+
57
+ - `<TabContext value={currentPanel.toString()}>`.
58
+ - `<Tabs onChange={changePanel}>` — one `<Tab label={tabLabel[i]} value={i.toString()}>` per row.
59
+ - `<TabPanel value={i.toString()}>` containing `tabView[i]`.
60
+
61
+ ## Visual Specifications
62
+
63
+ Identical tab bar appearance to `SubTabs`.
64
+
65
+ **CSS-only implementation notes:**
66
+ - Same tab bar and panel styles as `SubTabs.md`.
67
+ - Tab count is dynamic — do not hard-code tab widths.
68
+
69
+ ## Edge Cases & Special Logic
70
+
71
+ - `referenceListData` may be undefined on first render — default to empty array, render no tabs.
72
+ - `tablabel` may be a reference annotation like `@[FIELD/.pyLabel]` — `getPropertyName` resolves it to the raw field path.
73
+ - `buildView` is memoized on `referenceListData` — if the list changes, tab views must be regenerated.
74
+ - `changePanel` receives the raw index (number) but `TabContext` value is a string — always `toString()` the index.
75
+ - Empty reference list — show a "No items" empty state instead of an empty tab bar.
76
+
77
+ ## Dependencies
78
+
79
+ - `buildView` from `../../helpers/field-group-utils`
80
+ - `PCore.getAnnotationUtils().getPropertyName()` — resolves annotation to property path
81
+ - `TabContext`, `TabPanel` from `@mui/lab`
82
+ - `Tab`, `Tabs` from `@mui/material`
83
+
84
+ ## Design System Mapping
85
+
86
+ **UI control type:** Data-driven tab navigation — tab count and labels from a reference list.
87
+
88
+ Listed design systems are examples only.
89
+
90
+ | Design System | Recommended Component |
91
+ |---|---|
92
+ | Default (CSS only) | Custom tab bar, dynamically generated from array |
93
+ | MUI | `<TabContext>` + `<Tabs>` + `<TabPanel>` |
94
+ | Ant Design | `<Tabs items={dynamicItems}>` |
95
+ | Chakra UI | `<Tabs>` with dynamic `<TabList>/<TabPanels>` |
96
+ | Shadcn/ui | `<Tabs>` with mapped triggers and content |
97
+
98
+ When implementing in a specific design system:
99
+ - `tablabelProp` resolution via `PCore.getAnnotationUtils().getPropertyName()` is required — do not hardcode the label field
100
+ - `buildView(pConnect, rowIndex, '')` generates the content for each tab — the empty string third arg means no specific child config lookup
101
+ - Tab count is entirely data-driven — handle 0, 1, and many tab cases
@@ -0,0 +1,109 @@
1
+ # Skill: FieldGroupTemplate
2
+
3
+ Repeating field group template. Renders a list of field group rows from a reference list, supporting add/delete row actions and a read-only display mode.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a repeating list of field group rows sourced from a PConnect reference list. In edit mode, rows can be added and deleted via list actions. In read-only mode (DISPLAY_ONLY), delegates to a read-only `FieldGroup` renderer. Each row is built via `buildView`.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `FieldGroupTemplate` (in `component-map.ts`)
16
+ - **Category:** Form template — repeating
17
+ - **Extends:** `PConnProps`
18
+
19
+ ## Props
20
+
21
+ | Prop | Type | Required | Description |
22
+ |------|------|----------|-------------|
23
+ | `label` | `string` | Yes | Section heading |
24
+ | `showLabel` | `boolean` | No | Whether to show the heading. Default `true` |
25
+ | `fieldHeader` | `string` | No | Property ref for the dynamic row heading. E.g. `'.pyStatusWork'` |
26
+ | `allowTableEdit` | `boolean` | No | Whether to show add/delete row controls. Default `true` |
27
+ | `displayMode` | `string` | No | `'DISPLAY_ONLY'` triggers read-only rendering |
28
+ | `readOnly` | `boolean` | No | Alternative read-only flag |
29
+ | `getPConnect` | `function` | Yes | PConnect getter |
30
+
31
+ ## Behavioral Contract
32
+
33
+ ### Read-Only Mode
34
+
35
+ If `displayMode === 'DISPLAY_ONLY'` or `readOnly === true`:
36
+ 1. Set `setInheritedProp('DISPLAY_ONLY', true)` on the pConn.
37
+ 2. Render `<FieldGroup>` — the DSE component that shows data in a read-only layout.
38
+
39
+ ### Edit Mode
40
+
41
+ 1. **Get reference list:** `resolvedList = getReferenceList(pConn)` — extracts the array of row data objects.
42
+ 2. **Set reference list:** `pConn.setReferenceList(resolvedList)` — ensures the pConn has the resolved list.
43
+ 3. **Build row views:** For each row index `i`, call `buildView(pConn, i, true)` to get the PConnect view for that row.
44
+ 4. **Render `<FieldGroupList>`** — the DSE component for edit mode, receiving:
45
+ - `resolvedList` for row count
46
+ - Row views as children
47
+ - `onAdd`: calls `pConn.getListActions().insert({})`
48
+ - `onDelete(index)`: calls `pConn.getListActions().deleteEntry(index)`
49
+ - `fieldHeader`: evaluated property ref for dynamic row heading
50
+ - `allowActions`: from `allowTableEdit` prop (controls visibility of add/delete buttons)
51
+
52
+ ### `allowActions` Override
53
+
54
+ If the field group is inside a read-only context (parent has set `readOnly` or `DISPLAY_ONLY`), `allowActions` is forced to `false` regardless of `allowTableEdit`.
55
+
56
+ ## Visual Specifications
57
+
58
+ ### Edit Mode
59
+
60
+ - Section heading (`label`) at top (if `showLabel`).
61
+ - List of row sections, each with:
62
+ - Dynamic heading from `fieldHeader` property value (e.g. `"Active"`, `"Pending"`).
63
+ - Row fields in a grid layout.
64
+ - Delete button (trash icon) per row.
65
+ - Add row button at the bottom (e.g. `"+ Add row"`).
66
+
67
+ ### Read-Only Mode
68
+
69
+ - Section heading at top (if `showLabel`).
70
+ - Flat list of rows — no add/delete controls.
71
+
72
+ **CSS-only implementation notes:**
73
+ - Row section: `border: 1px solid var(--border-color); border-radius: 4px; padding: 1rem; margin-bottom: 0.5rem`.
74
+ - Add button: text button, below the last row.
75
+ - Delete button: icon button, top-right of each row section.
76
+
77
+ ## Edge Cases & Special Logic
78
+
79
+ - `getReferenceList(pConn)` returns `undefined` if the reference list is not yet loaded — guard and render empty list.
80
+ - `buildView(pConn, index, true)` — third argument `lookForChildInConfig=true` — required for embedded field groups.
81
+ - Row index must be passed to `deleteEntry` as a number (not string).
82
+ - `fieldHeader` is a property ref like `'.pyStatusWork'` — evaluate it per-row via `pConn.getValue(fieldHeader, index)` to get the display label for each row heading.
83
+ - `FieldGroupList` and `FieldGroup` are DSE (design system extension) components registered in the component registry.
84
+
85
+ ## Dependencies
86
+
87
+ - `getReferenceList`, `buildView` from `../../helpers/field-group-utils`
88
+ - `getComponentFromRegistry('FieldGroupList')` — edit mode renderer
89
+ - `getComponentFromRegistry('FieldGroup')` — read-only renderer
90
+ - `PConnectComponent` from `@pega/sdk-react` — used inside `buildView`
91
+
92
+ ## Design System Mapping
93
+
94
+ **UI control type:** Repeating list of grouped form sections with add/delete row management.
95
+
96
+ Listed design systems are examples only.
97
+
98
+ | Design System | Recommended Component |
99
+ |---|---|
100
+ | Default (CSS only) | Custom row card list with add/delete buttons |
101
+ | MUI | `<Paper>` per row + `<IconButton>` for delete + `<Button>` for add |
102
+ | Ant Design | `<Form.List>` with `<Card>` per row |
103
+ | Chakra UI | Custom repeating section with `<Box>` rows |
104
+ | Shadcn/ui | Custom list with `<Card>` per row + `<Button variant='ghost'>` |
105
+
106
+ When implementing in a specific design system:
107
+ - The add/delete controls must be hidden when `allowActions` is false
108
+ - Row heading is dynamic — evaluate `fieldHeader` property ref per row
109
+ - `buildView` generates child PConnect views — render them inside each row section
@@ -0,0 +1,113 @@
1
+ # Skill: HierarchicalForm
2
+
3
+ Multi-step tabbed form template. Renders form sections as horizontal tabs with per-tab validation error badges and persisted active tab navigation.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a multi-step form where each section is a tab. Tabs display error badges when their content has validation errors. The active tab index is persisted to navigation state so it survives renders. Optional instruction HTML is displayed above the tab bar.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `HierarchicalForm` (in `component-map.ts`)
16
+ - **Category:** Form template
17
+ - **Extends:** `PConnProps`
18
+
19
+ ## Props
20
+
21
+ | Prop | Type | Required | Description |
22
+ |------|------|----------|-------------|
23
+ | `children` | `ReactNode[]` | Yes | One child per tab section |
24
+ | `instructions` | `string` | No | HTML instruction text shown above the tab bar |
25
+ | `getPConnect` | `function` | Yes | PConnect getter |
26
+
27
+ ## Behavioral Contract
28
+
29
+ ### Hook: `useHierarchicalForm`
30
+
31
+ `useHierarchicalForm(getPConnect, numTabs)` returns:
32
+ - `activeTabId`: currently selected tab index (string, e.g. `'0'`)
33
+ - `setActiveTabId`: setter for `activeTabId`
34
+ - `tabErrorCounts`: `Record<string, number>` — error count per tab index key
35
+
36
+ Internally it calls `useGetTabsCount(getPConnect)` to compute `tabErrorCounts`.
37
+
38
+ ### Active Tab Persistence
39
+
40
+ - On mount, read persisted tab from `PCore.getNavigationUtils().getComponentState(navigationKey)` — use `getActiveTabId(componentState)` to extract the stored tab index, or fall back to `getFirstVisibleTabId(tabItems)`.
41
+ - On tab change, persist via `PCore.getNavigationUtils().setComponentState(navigationKey, { activeTabId: newId })`.
42
+ - `navigationKey` is derived from the component's fully-qualified context path.
43
+
44
+ ### Instructions
45
+
46
+ - Call `getInstructions(getPConnect(), props.instructions)` to get sanitized HTML.
47
+ - If non-empty, render `<div className='psdk-default-form-instruction-text' dangerouslySetInnerHTML={{ __html: instructions }} />` above the tabs.
48
+
49
+ ### Tab Items
50
+
51
+ - Build `tabItems` from `children` — each entry has `{ id: index.toString(), name: child.label }`.
52
+ - Filter to visible tabs via `getFirstVisibleTabId(tabItems)`.
53
+
54
+ ### Error Badge
55
+
56
+ - For each tab, read `tabErrorCounts[tabIndex]`.
57
+ - If `> 0`: wrap the tab label with `<Tooltip title={errorCountMsg}><Badge badgeContent={count} color='error'>{label}</Badge></Tooltip>`.
58
+ - Else: render the label plain.
59
+
60
+ ### Render
61
+
62
+ 1. Optional instruction block (above tabs).
63
+ 2. `<TabContext value={activeTabId}>` wrapper.
64
+ 3. `<Tabs onChange={handleTabChange} value={activeTabId}>` containing `<Tab>` per visible tab (with error badge label if applicable).
65
+ 4. `<TabPanel value={tabId}>` per tab containing the corresponding child.
66
+
67
+ ## Visual Specifications
68
+
69
+ ### Tab Bar
70
+
71
+ | Property | Value |
72
+ |----------|-------|
73
+ | Orientation | Horizontal |
74
+ | Error badge | Red MUI Badge with tooltip showing error count message |
75
+
76
+ **CSS-only implementation notes:**
77
+ - Tab bar: same as `DetailsSubTabs` — `display: flex; border-bottom: 2px solid var(--divider)`.
78
+ - Error badge: red circle badge overlaid top-right of the tab label text.
79
+ - Instruction text: `padding: 0.5rem 0; margin-bottom: 0.5rem; font-size: 0.875rem`.
80
+
81
+ ## Edge Cases & Special Logic
82
+
83
+ - `useGetTabsCount` is a custom hook specific to `HierarchicalForm` — it tracks validation errors per tab section.
84
+ - `getActiveTabId` / `getFirstVisibleTabId` are helpers from `tabUtils` — they handle the case where the persisted tab is no longer visible.
85
+ - `navigationKey` must be stable across re-renders — derive it once in `useMemo` from `getPConnect().getStateProps()` or equivalent.
86
+ - If no visible tabs, render nothing (null).
87
+
88
+ ## Dependencies
89
+
90
+ - `useHierarchicalForm`, `useGetTabsCount` from `./hooks`
91
+ - `getActiveTabId`, `getFirstVisibleTabId`, `tabClick` from `../SubTabs/tabUtils`
92
+ - `getInstructions` from `../../helpers/template-utils`
93
+ - `TabContext`, `TabPanel` from `@mui/lab`
94
+ - `Tab`, `Tabs`, `Badge`, `Tooltip` from `@mui/material`
95
+
96
+ ## Design System Mapping
97
+
98
+ **UI control type:** Multi-step tabbed form with per-tab error indicators and persistent active tab.
99
+
100
+ Listed design systems are examples only.
101
+
102
+ | Design System | Recommended Component |
103
+ |---|---|
104
+ | Default (CSS only) | Custom tab bar + CSS badge (red circle via pseudo-element) |
105
+ | MUI | `<Tabs>` + `<Badge>` + `<Tooltip>` + `<TabContext>/<TabPanel>` |
106
+ | Ant Design | `<Tabs>` with custom `tabBarExtraContent` for error badges |
107
+ | Chakra UI | `<Tabs>` + `<Badge colorScheme='red'>` inside tab label |
108
+ | Shadcn/ui | `<Tabs>` + custom badge overlay on tab trigger |
109
+
110
+ When implementing in a specific design system:
111
+ - Error badge is mandatory — always show error counts when `tabErrorCounts[id] > 0`
112
+ - Active tab must be persisted via `PCore.getNavigationUtils()` for correct navigation behavior
113
+ - Instructions HTML renders above the entire tab bar, not per-tab
@@ -0,0 +1,104 @@
1
+ # Skill: InlineDashboard
2
+
3
+ Inline dashboard template. Renders a dashboard with a title, a main content area, and an optional filter panel whose position is configurable.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders an inline dashboard layout consisting of a title heading, a main content panel, and an optional filter panel. The filter panel position is configurable: `block-start` places filters above the content in a stacked layout; any other position places filters to the side using a 9/3 column split.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Registration key:** `InlineDashboard` (in `component-map.ts`)
16
+ - **Category:** Page template — dashboard
17
+ - **Extends:** `PConnProps`
18
+
19
+ ## Props
20
+
21
+ | Prop | Type | Required | Description |
22
+ |------|------|----------|-------------|
23
+ | `title` | `string` | No | Dashboard title displayed above the content area |
24
+ | `filterPosition` | `string` | No | Filter panel position: `'block-start'` (above) or other (side). Default: side |
25
+ | `children` | `ReactNode[]` | Yes | `children[0]` = main content, `children[1]` = filter panel |
26
+ | `getPConnect` | `function` | Yes | PConnect getter |
27
+
28
+ ## Behavioral Contract
29
+
30
+ ### Title
31
+
32
+ - If `title` is non-empty, render `<Typography variant='h4'>{title}</Typography>` above the grid.
33
+
34
+ ### Filter Position: `'block-start'`
35
+
36
+ Stacked layout — filter panel above main content:
37
+ - `<Grid container direction='column-reverse'>` (reverse so filter renders visually above content).
38
+ - Filter panel: `<Grid id='filters' size={{ xs: 12 }}>`.
39
+ - Main content: `<Grid size={{ xs: 12 }}>`.
40
+
41
+ ### Filter Position: Other (side)
42
+
43
+ Side-by-side layout — main content left, filters right:
44
+ - `<Grid container direction={...}>` (optionally `row-reverse` based on position value).
45
+ - Main content: `<Grid size={{ xs: 9 }}>`.
46
+ - Filter panel: `<Grid id='filters' size={{ xs: 3 }}>`.
47
+
48
+ ### Children Assignment
49
+
50
+ - `children[0]` = main content panel.
51
+ - `children[1]` = filter panel (may be absent if no filters configured).
52
+
53
+ ## Visual Specifications
54
+
55
+ ### Block-Start Layout (filter above content)
56
+
57
+ ```
58
+ [Filter panel — xs:12]
59
+ [Main content — xs:12]
60
+ ```
61
+
62
+ ### Side Layout (filter to side)
63
+
64
+ ```
65
+ [Main content — xs:9] [Filters — xs:3]
66
+ ```
67
+
68
+ **CSS-only implementation notes:**
69
+ - Title: `font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem`.
70
+ - Block-start: `display: flex; flex-direction: column; gap: 1rem` (filter div first in DOM but ordered last visually with `order: -1`).
71
+ - Side: `display: grid; grid-template-columns: 3fr 1fr; gap: 1rem`.
72
+ - Filter panel: `id='filters'` — required for accessibility/selector targeting.
73
+ - Responsive: collapse side layout to stacked on mobile.
74
+
75
+ ## Edge Cases & Special Logic
76
+
77
+ - If `children[1]` is absent (no filters), render only the main content without the grid.
78
+ - `direction='column-reverse'` in block-start mode — this is the MUI Grid direction prop; in plain CSS, use flexbox `column` direction with `order` property.
79
+ - `title` is optional — if absent, skip the `<Typography h4>` entirely (no empty heading).
80
+ - Filter grid always gets `id='filters'` — this is used by `PromotedFilters` for integration.
81
+
82
+ ## Dependencies
83
+
84
+ - MUI: `<Typography variant='h4'>`, `<Grid container>`, `<Grid>` (child)
85
+ - `PConnectComponent` from `@pega/sdk-react`
86
+
87
+ ## Design System Mapping
88
+
89
+ **UI control type:** Dashboard layout with configurable title and filter panel position.
90
+
91
+ Listed design systems are examples only.
92
+
93
+ | Design System | Title | Content/Filter Grid |
94
+ |---|---|---|
95
+ | Default (CSS only) | `<h2>` | CSS grid or flexbox |
96
+ | MUI | `<Typography variant='h4'>` | `<Grid container>` |
97
+ | Ant Design | `<Typography.Title level={2}>` | `<Row>/<Col>` |
98
+ | Chakra UI | `<Heading>` | `<Grid>` or `<HStack>` |
99
+ | Shadcn/ui | `<h2>` | Tailwind grid |
100
+
101
+ When implementing in a specific design system:
102
+ - `filterPosition === 'block-start'` requires stacked layout (12/12) — not side layout (9/3)
103
+ - Filter panel must always have `id='filters'`
104
+ - Title heading (`h4` level) is optional — only render when `title` is provided
@@ -0,0 +1,85 @@
1
+ # Skill: InlineDashboardPage
2
+
3
+ Inline dashboard page template. Builds filter components from promoted filters metadata and delegates rendering to `InlineDashboard`.
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Page-level wrapper for the inline dashboard. Extracts promoted filter definitions from the PConnect metadata, builds React filter components from them, and passes them to `InlineDashboard` as the second child (filter panel). The first child (main content) is passed through unchanged.
12
+
13
+ > See `InlineDashboard.md` for the layout and rendering behavior. This component only handles filter component construction.
14
+
15
+ ## Pega Metadata
16
+
17
+ - **Registration key:** `InlineDashboardPage` (in `component-map.ts`)
18
+ - **Category:** Page template — dashboard page
19
+ - **Extends:** `PConnProps`
20
+
21
+ ## Props
22
+
23
+ | Prop | Type | Required | Description |
24
+ |------|------|----------|-------------|
25
+ | `children` | `ReactNode[]` | Yes | Main content children passed to InlineDashboard |
26
+ | `title` | `string` | No | Dashboard title |
27
+ | `filterPosition` | `string` | No | Filter position: `'block-start'` or side |
28
+ | `getPConnect` | `function` | Yes | PConnect getter |
29
+
30
+ ## Behavioral Contract
31
+
32
+ ### Filter Component Construction
33
+
34
+ In `useEffect([])` (on mount):
35
+
36
+ 1. Get promoted filters: `allFilters = getPConnect().getRawMetadata().config.promotedFilters || []`.
37
+ 2. Call `buildFilterComponents(getPConnect, allFilters)`:
38
+ - For each filter in `allFilters`, creates a PConnect-based filter field component.
39
+ - Returns an array of React elements ready to render.
40
+ 3. Store result in `filterComponents` state.
41
+
42
+ ### Render
43
+
44
+ ```tsx
45
+ <InlineDashboard
46
+ title={title}
47
+ filterPosition={filterPosition}
48
+ getPConnect={getPConnect}
49
+ >
50
+ {children[0]} {/* main content */}
51
+ {filterComponents} {/* built filter components */}
52
+ </InlineDashboard>
53
+ ```
54
+
55
+ - `children[0]` = main content region.
56
+ - `filterComponents` = built filter elements (replaces raw `children[1]`).
57
+
58
+ ## Visual Specifications
59
+
60
+ Identical to `InlineDashboard` — see `InlineDashboard.md`. The only difference is that the filter panel children are programmatically built, not passed directly.
61
+
62
+ ## Edge Cases & Special Logic
63
+
64
+ - `allFilters` may be empty — if no promoted filters exist, `filterComponents` is an empty array, and `InlineDashboard` renders without a filter panel.
65
+ - `buildFilterComponents` is async in some implementations — show a loading state if needed until filters are ready.
66
+ - `children[0]` is always the main content — index is stable.
67
+ - `filterComponents` replaces `children[1]` entirely — do not render both.
68
+
69
+ ## Dependencies
70
+
71
+ - `buildFilterComponents` from `./utils` — constructs filter field components from promoted filter config
72
+ - `InlineDashboard` — the layout template this component wraps
73
+
74
+ ## Design System Mapping
75
+
76
+ **UI control type:** Dashboard page — programmatic filter construction + InlineDashboard delegation.
77
+
78
+ Listed design systems are examples only.
79
+
80
+ This component is a thin orchestration layer. All visual implementation is in `InlineDashboard`. The only implementation detail is `buildFilterComponents` — which creates filter field components from metadata definitions.
81
+
82
+ When implementing in a specific design system:
83
+ - `buildFilterComponents` must create proper PConnect-backed filter field components
84
+ - If `promotedFilters` is empty, skip the filter panel entirely
85
+ - All layout and styling is delegated to `InlineDashboard`
@@ -0,0 +1,68 @@
1
+ # Skill: ListPage
2
+
3
+ List page template. Thin wrapper that renders `ListView` in standalone page mode (`bInForm: false`).
4
+
5
+ > **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a full-page list view by forwarding all props to `ListView` with `bInForm: false`. There is no additional logic — this component exists solely to provide a registration key that signals "this is a page, not an inline table."
12
+
13
+ > See `ListView.md` for full documentation of all capabilities.
14
+
15
+ ## Pega Metadata
16
+
17
+ - **Registration key:** `ListPage` (in `component-map.ts`)
18
+ - **Category:** Page template — list page
19
+ - **Extends:** `PConnProps`
20
+
21
+ ## Props
22
+
23
+ All props are forwarded to `ListView`. Key props:
24
+
25
+ | Prop | Type | Required | Description |
26
+ |------|------|----------|-------------|
27
+ | `dataPageName` | `string` | Yes | Data page to load records from |
28
+ | `columns` | `array` | No | Column definitions |
29
+ | `isSearchable` | `boolean` | No | Whether global search is shown |
30
+ | `payload` | `object` | No | Query payload |
31
+ | `getPConnect` | `function` | Yes | PConnect getter |
32
+
33
+ ## Behavioral Contract
34
+
35
+ ```tsx
36
+ <ListView {...props} bInForm={false} />
37
+ ```
38
+
39
+ That is the complete implementation. `bInForm: false` ensures ListView renders with full page chrome (outer padding, page-level toolbar layout).
40
+
41
+ ## Visual Specifications
42
+
43
+ Identical to `ListView` with `bInForm: false`:
44
+ - Full outer padding applied.
45
+ - Toolbar occupies full width.
46
+ - Table stretches to fill page width.
47
+
48
+ See `ListView.md` for all visual details.
49
+
50
+ ## Edge Cases & Special Logic
51
+
52
+ None beyond `ListView`. The only constraint is that `bInForm` is always `false` for `ListPage`.
53
+
54
+ ## Dependencies
55
+
56
+ - `ListView` — the primary list template component
57
+
58
+ ## Design System Mapping
59
+
60
+ **UI control type:** Full-page data list — pass-through to `ListView` with page-mode flag.
61
+
62
+ Listed design systems are examples only.
63
+
64
+ Implement identically to `ListView` — `ListPage` adds no new UI. The distinction is purely in the `bInForm` prop which controls spacing/chrome.
65
+
66
+ When implementing in a specific design system:
67
+ - `bInForm: false` signals that the list should have page-level layout (more padding, full-width toolbar)
68
+ - No additional logic beyond `ListView` is required