@pega/sdk 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/README.md +10 -3
  2. package/dist/index.js +977 -92
  3. package/package.json +1 -1
  4. package/templates/angular-sdk-reference/package.json +12 -12
  5. package/templates/angular-sdk-reference/tsconfig.json +1 -1
  6. package/templates/react-native-sdk-reference/.claude/settings.json +5 -0
  7. package/templates/react-native-sdk-reference/.prettierignore +17 -0
  8. package/templates/react-native-sdk-reference/.vscode/extensions.json +1 -0
  9. package/templates/react-native-sdk-reference/.vscode/settings.json +7 -0
  10. package/templates/react-native-sdk-reference/AGENTS.md +3 -0
  11. package/templates/react-native-sdk-reference/CLAUDE.md +1 -0
  12. package/templates/react-native-sdk-reference/README.md +56 -0
  13. package/templates/react-native-sdk-reference/app.json +40 -5
  14. package/templates/react-native-sdk-reference/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
  15. package/templates/react-native-sdk-reference/assets/expo.icon/Assets/grid.png +0 -0
  16. package/templates/react-native-sdk-reference/assets/expo.icon/icon.json +35 -0
  17. package/templates/react-native-sdk-reference/assets/icons/bell.png +0 -0
  18. package/templates/react-native-sdk-reference/assets/icons/clock.png +0 -0
  19. package/templates/react-native-sdk-reference/assets/icons/cross.png +0 -0
  20. package/templates/react-native-sdk-reference/assets/icons/donut.png +0 -0
  21. package/templates/react-native-sdk-reference/assets/icons/gear.png +0 -0
  22. package/templates/react-native-sdk-reference/assets/icons/globe.png +0 -0
  23. package/templates/react-native-sdk-reference/assets/icons/internet.png +0 -0
  24. package/templates/react-native-sdk-reference/assets/icons/music.png +0 -0
  25. package/templates/react-native-sdk-reference/assets/icons/right-arrow.png +0 -0
  26. package/templates/react-native-sdk-reference/assets/icons/speed.png +0 -0
  27. package/templates/react-native-sdk-reference/assets/images/MediaCo.png +0 -0
  28. package/templates/react-native-sdk-reference/assets/images/adaptive-icon.png +0 -0
  29. package/templates/react-native-sdk-reference/assets/images/android-icon-background.png +0 -0
  30. package/templates/react-native-sdk-reference/assets/images/android-icon-foreground.png +0 -0
  31. package/templates/react-native-sdk-reference/assets/images/android-icon-monochrome.png +0 -0
  32. package/templates/react-native-sdk-reference/assets/images/expo-badge-white.png +0 -0
  33. package/templates/react-native-sdk-reference/assets/images/expo-badge.png +0 -0
  34. package/templates/react-native-sdk-reference/assets/images/expo-logo.png +0 -0
  35. package/templates/react-native-sdk-reference/assets/images/favicon.png +0 -0
  36. package/templates/react-native-sdk-reference/assets/images/icon.png +0 -0
  37. package/templates/react-native-sdk-reference/assets/images/logo-glow.png +0 -0
  38. package/templates/react-native-sdk-reference/assets/images/partial-react-logo.png +0 -0
  39. package/templates/react-native-sdk-reference/assets/images/react-logo.png +0 -0
  40. package/templates/react-native-sdk-reference/assets/images/react-logo@2x.png +0 -0
  41. package/templates/react-native-sdk-reference/assets/images/react-logo@3x.png +0 -0
  42. package/templates/react-native-sdk-reference/assets/images/splash-icon.png +0 -0
  43. package/templates/react-native-sdk-reference/assets/images/tutorial-web.png +0 -0
  44. package/templates/react-native-sdk-reference/eslint.config.mjs +68 -0
  45. package/templates/react-native-sdk-reference/package.json +59 -14
  46. package/templates/react-native-sdk-reference/pega-constellationjs-0.26.3.tgz +0 -0
  47. package/templates/react-native-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  48. package/templates/react-native-sdk-reference/pega-sdk-types-0.1.0.tgz +0 -0
  49. package/templates/react-native-sdk-reference/sdk-config.json +31 -9
  50. package/templates/react-native-sdk-reference/src/app/_layout.tsx +38 -0
  51. package/templates/react-native-sdk-reference/src/app/home/_layout.tsx +39 -0
  52. package/templates/react-native-sdk-reference/src/app/home/contact.tsx +11 -0
  53. package/templates/react-native-sdk-reference/src/app/home/index.tsx +36 -0
  54. package/templates/react-native-sdk-reference/src/app/home/shop.tsx +11 -0
  55. package/templates/react-native-sdk-reference/src/app/home/your-services.tsx +11 -0
  56. package/templates/react-native-sdk-reference/src/app/index.tsx +72 -0
  57. package/templates/react-native-sdk-reference/src/app/workarea.tsx +135 -0
  58. package/templates/react-native-sdk-reference/src/bridge/Context/StoreContext.ts +4 -0
  59. package/templates/react-native-sdk-reference/src/bridge/RootComponent.tsx +12 -0
  60. package/templates/react-native-sdk-reference/src/bridge/react_pconnect.jsx +334 -0
  61. package/templates/react-native-sdk-reference/src/components/common/DisplayField.tsx +29 -0
  62. package/templates/react-native-sdk-reference/src/components/common/FormFieldWrapper.tsx +5 -0
  63. package/templates/react-native-sdk-reference/src/components/common/HelperText.tsx +11 -0
  64. package/templates/react-native-sdk-reference/src/components/common/LabelText.tsx +22 -0
  65. package/templates/react-native-sdk-reference/src/components/common/inputTheme.ts +17 -0
  66. package/templates/react-native-sdk-reference/src/components/design-system/AutoComplete.tsx +126 -0
  67. package/templates/react-native-sdk-reference/src/components/design-system/FieldGroup.tsx +72 -0
  68. package/templates/react-native-sdk-reference/src/components/design-system/Radio.tsx +61 -0
  69. package/templates/react-native-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +196 -0
  70. package/templates/react-native-sdk-reference/src/components/field/AutoComplete/index.tsx +1 -0
  71. package/templates/react-native-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +89 -0
  72. package/templates/react-native-sdk-reference/src/components/field/Checkbox/index.tsx +1 -0
  73. package/templates/react-native-sdk-reference/src/components/field/Currency/Currency.tsx +84 -0
  74. package/templates/react-native-sdk-reference/src/components/field/Currency/index.tsx +1 -0
  75. package/templates/react-native-sdk-reference/src/components/field/Date/Date.tsx +94 -0
  76. package/templates/react-native-sdk-reference/src/components/field/Date/index.tsx +1 -0
  77. package/templates/react-native-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +211 -0
  78. package/templates/react-native-sdk-reference/src/components/field/Dropdown/index.tsx +1 -0
  79. package/templates/react-native-sdk-reference/src/components/field/Email/Email.tsx +81 -0
  80. package/templates/react-native-sdk-reference/src/components/field/Email/index.tsx +1 -0
  81. package/templates/react-native-sdk-reference/src/components/field/Group/Group.tsx +47 -0
  82. package/templates/react-native-sdk-reference/src/components/field/Group/index.tsx +1 -0
  83. package/templates/react-native-sdk-reference/src/components/field/Integer/Integer.tsx +84 -0
  84. package/templates/react-native-sdk-reference/src/components/field/Integer/index.tsx +1 -0
  85. package/templates/react-native-sdk-reference/src/components/field/Phone/Phone.tsx +85 -0
  86. package/templates/react-native-sdk-reference/src/components/field/Phone/index.ts +1 -0
  87. package/templates/react-native-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +118 -0
  88. package/templates/react-native-sdk-reference/src/components/field/RadioButtons/index.ts +1 -0
  89. package/templates/react-native-sdk-reference/src/components/field/TextArea/TextArea.tsx +86 -0
  90. package/templates/react-native-sdk-reference/src/components/field/TextArea/index.tsx +1 -0
  91. package/templates/react-native-sdk-reference/src/components/field/TextInput/TextInput.tsx +84 -0
  92. package/templates/react-native-sdk-reference/src/components/field/TextInput/index.tsx +1 -0
  93. package/templates/react-native-sdk-reference/src/components/field/URL/URL.tsx +86 -0
  94. package/templates/react-native-sdk-reference/src/components/field/URL/index.tsx +1 -0
  95. package/templates/react-native-sdk-reference/src/components/helpers/data_page.ts +20 -0
  96. package/templates/react-native-sdk-reference/src/components/helpers/event-utils.ts +20 -0
  97. package/templates/react-native-sdk-reference/src/components/helpers/instructions-utils.ts +57 -0
  98. package/templates/react-native-sdk-reference/src/components/helpers/state-utils.tsx +46 -0
  99. package/templates/react-native-sdk-reference/src/components/helpers/template-utils.ts +75 -0
  100. package/templates/react-native-sdk-reference/src/components/helpers/utils.ts +339 -0
  101. package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/ActionButtons.tsx +63 -0
  102. package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/index.tsx +1 -0
  103. package/templates/react-native-sdk-reference/src/components/infra/Assignment/Assignment.tsx +348 -0
  104. package/templates/react-native-sdk-reference/src/components/infra/Assignment/index.tsx +1 -0
  105. package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/AssignmentCard.tsx +56 -0
  106. package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/index.tsx +1 -0
  107. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/FlowContainer.tsx +57 -0
  108. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/helpers.ts +137 -0
  109. package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/index.tsx +1 -0
  110. package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/RootContainer.tsx +52 -0
  111. package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/index.tsx +1 -0
  112. package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/helper.ts +128 -0
  113. package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/index.tsx +59 -0
  114. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/ViewContainer.tsx +31 -0
  115. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/helper.ts +39 -0
  116. package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/index.ts +1 -0
  117. package/templates/react-native-sdk-reference/src/components/infra/Containers/helper.ts +9 -0
  118. package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/ErrorBoundary.tsx +53 -0
  119. package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/index.tsx +1 -0
  120. package/templates/react-native-sdk-reference/src/components/infra/MultiStep/MultiStep.tsx +24 -0
  121. package/templates/react-native-sdk-reference/src/components/infra/MultiStep/index.ts +1 -0
  122. package/templates/react-native-sdk-reference/src/components/infra/Reference/Reference.tsx +68 -0
  123. package/templates/react-native-sdk-reference/src/components/infra/Reference/index.tsx +1 -0
  124. package/templates/react-native-sdk-reference/src/components/infra/Reference/utils.ts +16 -0
  125. package/templates/react-native-sdk-reference/src/components/infra/Region/Region.tsx +10 -0
  126. package/templates/react-native-sdk-reference/src/components/infra/Region/index.tsx +1 -0
  127. package/templates/react-native-sdk-reference/src/components/infra/View/View.tsx +49 -0
  128. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +38 -0
  129. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/index.tsx +1 -0
  130. package/templates/react-native-sdk-reference/src/components/template/DefaultForm/utils/index.ts +28 -0
  131. package/templates/react-native-sdk-reference/src/components/template/Details/Details.tsx +82 -0
  132. package/templates/react-native-sdk-reference/src/components/template/Details/index.tsx +1 -0
  133. package/templates/react-native-sdk-reference/src/components/template/OneColumn/OneColumn.tsx +29 -0
  134. package/templates/react-native-sdk-reference/src/components/template/OneColumn/index.tsx +1 -0
  135. package/templates/react-native-sdk-reference/src/context/LoaderContext.tsx +42 -0
  136. package/templates/react-native-sdk-reference/src/mediaco/AdvBanner.tsx +62 -0
  137. package/templates/react-native-sdk-reference/src/mediaco/Header.tsx +60 -0
  138. package/templates/react-native-sdk-reference/src/mediaco/HomeScreen.tsx +78 -0
  139. package/templates/react-native-sdk-reference/src/mediaco/QuickActions.tsx +68 -0
  140. package/templates/react-native-sdk-reference/src/mediaco/ResolutionScreen.tsx +48 -0
  141. package/templates/react-native-sdk-reference/src/mediaco/SafeArea.tsx +11 -0
  142. package/templates/react-native-sdk-reference/src/mediaco/TabBar.tsx +102 -0
  143. package/templates/react-native-sdk-reference/src/mediaco/YourServices.tsx +90 -0
  144. package/templates/react-native-sdk-reference/src/sdk-pega-component-map.ts +64 -0
  145. package/templates/react-native-sdk-reference/src/types/PConnProps.d.ts +41 -0
  146. package/templates/react-native-sdk-reference/src/utils/auth.ts +62 -0
  147. package/templates/react-native-sdk-reference/src/utils/init-pcore.ts +37 -0
  148. package/templates/react-native-sdk-reference/src/utils/pcore-polyfills.ts +66 -0
  149. package/templates/react-native-sdk-reference/tsconfig.json +9 -8
  150. package/templates/react-sdk-reference/.ai-common/agents/embedded-flow-expert.md +171 -0
  151. package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +44 -48
  152. package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions-embedded.md +119 -0
  153. package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions.md +192 -0
  154. package/templates/react-sdk-reference/.ai-common/instructions/component-map.md +35 -0
  155. package/templates/react-sdk-reference/.ai-common/instructions/dse-component.md +47 -0
  156. package/templates/react-sdk-reference/.ai-common/instructions/embedded-component.md +134 -0
  157. package/templates/react-sdk-reference/.ai-common/instructions/field-component.md +50 -0
  158. package/templates/react-sdk-reference/.ai-common/instructions/template-component.md +43 -0
  159. package/templates/react-sdk-reference/.ai-common/instructions/widget-component.md +45 -0
  160. package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +193 -0
  161. package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/component-manifest.json +106 -2
  162. package/templates/react-sdk-reference/.ai-common/prompts/embedded-component-manifest.md +155 -0
  163. package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +358 -0
  164. package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +165 -0
  165. package/templates/react-sdk-reference/.ai-common/prompts/generate-embedded-components.md +315 -0
  166. package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +190 -0
  167. package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +227 -0
  168. package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +172 -0
  169. package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -0
  170. package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
  171. package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +61 -25
  172. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +176 -0
  173. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +180 -0
  174. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/DetailsFields.md +180 -0
  175. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroup.md +153 -0
  176. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroupList.md +136 -0
  177. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldValueList.md +140 -0
  178. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +85 -41
  179. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Pulse.md +97 -0
  180. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +226 -0
  181. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +35 -20
  182. package/templates/react-sdk-reference/.ai-common/skills/design-system-extension.md +169 -0
  183. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/analyze-customer-repo.md +130 -0
  184. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/authenticate.md +311 -0
  185. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/run-and-verify-integration.md +156 -0
  186. package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/wire-integration.md +476 -0
  187. package/templates/react-sdk-reference/.ai-common/skills/field-components.md +190 -0
  188. package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +157 -0
  189. package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +178 -0
  190. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +189 -0
  191. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +136 -0
  192. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +126 -0
  193. package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +115 -0
  194. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +119 -0
  195. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +136 -0
  196. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +99 -0
  197. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Group.md +88 -0
  198. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +102 -0
  199. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +142 -0
  200. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Multiselect.md +42 -53
  201. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/ObjectReference.md +36 -60
  202. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +113 -0
  203. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +100 -0
  204. package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +153 -0
  205. package/templates/react-sdk-reference/.ai-common/skills/field-skills/RichText.md +117 -0
  206. package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +95 -0
  207. package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +155 -0
  208. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/SemanticLink.md +35 -57
  209. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +109 -0
  210. package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextContent.md +27 -52
  211. package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +112 -0
  212. package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +102 -0
  213. package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +96 -0
  214. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +41 -78
  215. package/templates/react-sdk-reference/.ai-common/skills/infra-components.md +165 -0
  216. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/ActionButtons.md +122 -0
  217. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/MultiStep.md +178 -0
  218. package/templates/react-sdk-reference/.ai-common/skills/infra-skills/Stages.md +140 -0
  219. package/templates/react-sdk-reference/.ai-common/skills/template-components.md +198 -0
  220. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +126 -0
  221. package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +160 -0
  222. package/templates/react-sdk-reference/.ai-common/skills/template-skills/BannerPage.md +90 -0
  223. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +129 -0
  224. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +196 -0
  225. package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +157 -0
  226. package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +149 -0
  227. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +46 -31
  228. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +141 -0
  229. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DefaultPage.md +40 -34
  230. package/templates/react-sdk-reference/.ai-common/skills/template-skills/Details.md +96 -0
  231. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsSubTabs.md +103 -0
  232. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md +85 -0
  233. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsTwoColumn.md +77 -0
  234. package/templates/react-sdk-reference/.ai-common/skills/template-skills/DynamicTabs.md +103 -0
  235. package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +130 -0
  236. package/templates/react-sdk-reference/.ai-common/skills/template-skills/HierarchicalForm.md +200 -0
  237. package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboard.md +110 -0
  238. package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboardPage.md +105 -0
  239. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/ListPage.md +21 -16
  240. package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +234 -0
  241. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +18 -23
  242. package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +161 -0
  243. package/templates/react-sdk-reference/.ai-common/skills/template-skills/OneColumn.md +114 -0
  244. package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +132 -0
  245. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +173 -0
  246. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SimpleTable.md +44 -24
  247. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +103 -0
  248. package/templates/react-sdk-reference/.ai-common/skills/template-skills/SubTabs.md +89 -0
  249. package/templates/react-sdk-reference/.ai-common/skills/template-skills/TwoColumn.md +133 -0
  250. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +36 -43
  251. package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/WssNavBar.md +26 -45
  252. package/templates/react-sdk-reference/.ai-common/skills/widget-components.md +124 -0
  253. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +94 -0
  254. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +163 -0
  255. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/CaseHistory.md +90 -0
  256. package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +68 -62
  257. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +24 -19
  258. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/QuickCreate.md +27 -44
  259. package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +35 -61
  260. package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +261 -0
  261. package/templates/react-sdk-reference/package.json +1 -1
  262. package/templates/react-sdk-reference/package.minimal.json +29 -0
  263. package/templates/react-sdk-reference/pega-auth-0.2.44.tgz +0 -0
  264. package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
  265. package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
  266. package/templates/react-sdk-reference/src/MashupApp.tsx +8 -19
  267. package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
  268. package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +13 -3
  269. package/templates/react-native-sdk-reference/.github/AGENTS.md +0 -23
  270. package/templates/react-native-sdk-reference/.github/copilot-instructions.md +0 -40
  271. package/templates/react-native-sdk-reference/.github/skills/pega-sdk-component.md +0 -48
  272. package/templates/react-native-sdk-reference/App.tsx +0 -49
  273. package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
  274. package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
  275. package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -75
  276. package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
  277. package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
  278. package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
  279. package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
  280. package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
  281. package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
  282. package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
  283. package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
  284. package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
  285. package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
  286. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -137
  287. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +0 -152
  288. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
  289. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +0 -148
  290. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
  291. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +0 -113
  292. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
  293. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
  294. package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
  295. package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
  296. package/templates/react-sdk-reference/.claude/skills/field-components.md +0 -295
  297. package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
  298. package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +0 -211
  299. package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
  300. package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
  301. package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
  302. package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
  303. package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +0 -99
  304. package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +0 -134
  305. package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +0 -109
  306. package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +0 -96
  307. package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
  308. package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +0 -145
  309. package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
  310. package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
  311. package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
  312. package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
  313. package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
  314. package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
  315. package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +0 -98
  316. package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +0 -117
  317. package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
  318. package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
  319. package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
  320. package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
  321. package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
  322. package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
  323. package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +0 -86
  324. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
  325. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
  326. package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
  327. package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
  328. package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +0 -104
  329. package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +0 -112
  330. package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +0 -90
  331. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
  332. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +0 -80
  333. package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
  334. package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +0 -106
  335. package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +0 -112
  336. package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +0 -116
  337. package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +0 -108
  338. package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +0 -82
  339. package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
  340. package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
  341. package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +0 -143
  342. package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
  343. package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +0 -130
  344. package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +0 -142
  345. package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
  346. package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
  347. package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +0 -133
  348. package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +0 -139
  349. package/templates/react-sdk-reference/.claude/skills/widget-components.md +0 -260
  350. package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +0 -84
  351. package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +0 -151
  352. package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +0 -110
  353. package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
  354. package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
  355. package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
  356. package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
  357. package/templates/react-sdk-reference/.cursor/rules/field-component.mdrules +0 -74
  358. package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
  359. package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
  360. package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +0 -193
  361. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
  362. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
  363. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
  364. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
  365. package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
  366. package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
  367. package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
  368. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
  369. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
  370. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
  371. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules +0 -149
  372. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
  373. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
  374. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
  375. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
  376. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
  377. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
  378. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
  379. package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension.mdrules +0 -294
  380. package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
  381. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
  382. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
  383. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
  384. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
  385. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
  386. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
  387. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
  388. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
  389. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
  390. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Group.mdrules +0 -95
  391. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
  392. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
  393. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
  394. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ObjectReference.mdrules +0 -169
  395. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
  396. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
  397. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
  398. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RichText.mdrules +0 -143
  399. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
  400. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
  401. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SemanticLink.mdrules +0 -153
  402. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
  403. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
  404. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
  405. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
  406. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
  407. package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
  408. package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
  409. package/templates/react-sdk-reference/.cursor/rules/skills/template-components.mdrules +0 -327
  410. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
  411. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
  412. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/BannerPage.mdrules +0 -88
  413. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
  414. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
  415. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
  416. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
  417. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
  418. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
  419. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
  420. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Details.mdrules +0 -93
  421. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
  422. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
  423. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
  424. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
  425. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
  426. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
  427. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
  428. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
  429. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
  430. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
  431. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
  432. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
  433. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
  434. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
  435. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
  436. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
  437. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
  438. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SubTabs.mdrules +0 -84
  439. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
  440. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
  441. package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
  442. package/templates/react-sdk-reference/.cursor/rules/skills/widget-components.mdrules +0 -276
  443. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
  444. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
  445. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/CaseHistory.mdrules +0 -112
  446. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
  447. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
  448. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
  449. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
  450. package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
  451. package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
  452. package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
  453. package/templates/react-sdk-reference/.github/copilot-instructions.md +0 -243
  454. package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +0 -40
  455. package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +0 -77
  456. package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +0 -77
  457. package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +0 -95
  458. package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +0 -90
  459. package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +0 -192
  460. package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
  461. package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +0 -411
  462. package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +0 -205
  463. package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +0 -223
  464. package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +0 -229
  465. package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +0 -208
  466. package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
  467. package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
  468. package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
  469. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -152
  470. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
  471. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
  472. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +0 -134
  473. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
  474. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +0 -118
  475. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
  476. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +0 -85
  477. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +0 -232
  478. package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
  479. package/templates/react-sdk-reference/.github/skills/design-system-extension.md +0 -291
  480. package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
  481. package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
  482. package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
  483. package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
  484. package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
  485. package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
  486. package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
  487. package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
  488. package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
  489. package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
  490. package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
  491. package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +0 -88
  492. package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
  493. package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +0 -188
  494. package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +0 -173
  495. package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +0 -93
  496. package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +0 -129
  497. package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +0 -167
  498. package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +0 -149
  499. package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +0 -134
  500. package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +0 -231
  501. package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +0 -155
  502. package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
  503. package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +0 -107
  504. package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +0 -89
  505. package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +0 -86
  506. package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
  507. package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
  508. package/templates/react-sdk-reference/.github/skills/template-components.md +0 -321
  509. package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +0 -150
  510. package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
  511. package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
  512. package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +0 -106
  513. package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
  514. package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
  515. package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +0 -109
  516. package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
  517. package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
  518. package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
  519. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +0 -97
  520. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
  521. package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +0 -80
  522. package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
  523. package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
  524. package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
  525. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
  526. package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
  527. package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +0 -70
  528. package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
  529. package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
  530. package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +0 -114
  531. package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
  532. package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
  533. package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +0 -131
  534. package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +0 -108
  535. package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +0 -82
  536. package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
  537. package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
  538. package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
  539. package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
  540. package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
  541. package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
  542. package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
  543. package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +0 -118
  544. package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
  545. package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
  546. package/templates/react-sdk-reference/AGENTS.md +0 -246
  547. package/templates/react-sdk-reference/pega-auth-0.2.42.tgz +0 -0
  548. /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
@@ -0,0 +1,189 @@
1
+ # Skill: Checkbox
2
+
3
+ Checkbox field supporting single boolean toggle, multi-selection mode, and optional card-style variant.
4
+
5
+ > **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, input contract, display modes, event handling, and registration patterns common to ALL field components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders one or more checkboxes. Supports three usage modes: (1) a single boolean checkbox, (2) a multi-select list of checkboxes bound to a reference list, and (3) a card-style selectable grid. Display mode shows the true/false label rather than the raw boolean.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Pega Name:** `Checkbox`
16
+ - **Type / Subtype:** `Field` / `Boolean`
17
+ - **Registration key:** `Checkbox` (in the project's component map)
18
+
19
+ > **Important naming note:** The component's export name should avoid conflicts with the design system's checkbox widget (e.g., use `CheckboxComponent` as the export name). Register it under the key `Checkbox` in the project's component map.
20
+
21
+ ## Inputs (component-specific)
22
+
23
+ > Note: The Checkbox input contract overrides `value` to be a boolean (not a string), while inheriting all other fields from the project's field input contract.
24
+
25
+ | Name | Type | Description |
26
+ | ---------------------- | -------------------- | -------------------------------------------------------------------- |
27
+ | `value` | `boolean` (optional) | Checked state for single-mode checkbox |
28
+ | `caption` | `string` (optional) | Label shown next to the single checkbox (not the group label) |
29
+ | `trueLabel` | `string` (optional) | Display text when `value` is `true` (used in display modes) |
30
+ | `falseLabel` | `string` (optional) | Display text when `value` is `false` (used in display modes) |
31
+ | `selectionMode` | `string` (optional) | `'multi'` — enables multi-selection mode from a datasource list |
32
+ | `datasource` | `any` (optional) | Options source for multi/card modes |
33
+ | `selectionKey` | `string` (optional) | The property path used as the key in selection list |
34
+ | `selectionList` | `any` (optional) | Property path for the reference list (multi mode) |
35
+ | `primaryField` | `string` | Primary display field for multi/card mode |
36
+ | `readonlyContextList` | `any` | Array of currently selected items (for multi/card read-only display) |
37
+ | `referenceList` | `string` | Reference list property path |
38
+ | `variant` | `string` (optional) | `'card'` — renders options as selectable card grid |
39
+ | `hideFieldLabels` | `boolean` | Hide field labels inside card variant |
40
+ | `additionalProps` | `any` | Extra inputs passed to card or checkbox |
41
+ | `imagePosition` | `string` | Card image position |
42
+ | `imageSize` | `string` | Card image size |
43
+ | `showImageDescription` | `string` | Whether to show image description |
44
+ | `renderMode` | `string` | `'ReadOnly'` — sets read-only mode alongside `readOnly` input |
45
+ | `image` | `string` | Image field path for card variant |
46
+
47
+ ## Implementation Structure
48
+
49
+ Follow this exact structure. The export name should avoid collision with the design system's checkbox widget.
50
+
51
+ **Module Setup:** The component depends on the project's component registry (to resolve `FieldValueList` and `SelectableCard`), the project's event-commit utility, and the project's instruction helpers (`insertInstruction`, `deleteInstruction`, `updateNewInstuctions`) for multi-selection reference list management. Define the input contract by overriding `value` to be an optional boolean (rather than the string from the base field input contract) and adding all the component-specific fields listed in the inputs table above.
52
+
53
+ **Styling notes (design-system agnostic):** a vertical checkbox column layout (flex, column direction), and for the card variant a CSS grid layout (`repeat(auto-fit, minmax(min(100%, 40ch), 1fr))`, equal row heights, small gap).
54
+
55
+ **Main Component Logic** — steps in order:
56
+
57
+ 1. **Registry lookups** — resolve `FieldValueList` and `SelectableCard` via the project's component registry.
58
+ 2. **Receive inputs** — all the standard field inputs plus the component-specific ones; notably alias `readonlyContextList` to `selectedvalues` for readability.
59
+ 3. **Derived flags** — `readOnlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY' || readOnly` and `helperTextToDisplay = validatemessage || helperText`.
60
+ 4. **PConnect setup** — obtain the PConnect instance, its actions API, and the bound property name.
61
+ 5. **Local state** — `checked` initialized to `false`.
62
+ 6. **Sync from store** — a lifecycle effect watching `value` updates `checked` whenever it changes.
63
+ 7. **Reference list init** — a lifecycle effect watching the PConnect instance: when `referenceList?.length > 0 && !readOnlyMode`, call `thePConn.setReferenceList(selectionList)` followed by `updateNewInstuctions(thePConn, selectionList)`.
64
+ 8. **Display mode returns** — note these use `caption` (not `label`) as the display name: `DISPLAY_ONLY` and `STACKED_LARGE_VAL` both return `FieldValueList` with value set to `trueLabel` when `value` is true, `falseLabel` otherwise, the latter with a stacked variant.
65
+ 9. **Event handlers** — see the Behavioral Contract below for the exact logic of each variant's change/blur handlers.
66
+ 10. **Branch: card variant** (`variant === 'card'`) — return early with a heading, a CSS grid wrapper, and a `SelectableCard`; see the Behavioral Contract "Card" section for full input wiring.
67
+ 11. **Branch: multi-select** (`selectionMode === 'multi'`) — build a list of checkbox controls from `datasource.source`; see the Behavioral Contract "Multi-select" section.
68
+ 12. **Branch: single checkbox** (default) — a single checkbox control with `checked` state; see the Behavioral Contract "Single checkbox" section.
69
+ 13. **Main return** — a wrapper containing (in order): the group label (`label`, hidden when `hideLabel`), the checkbox group content built in step 11 or 12, and the helper text (`helperTextToDisplay`); the wrapper carries `required` and an error state driven by `status === 'error'`.
70
+
71
+ ## Behavioral Contract
72
+
73
+ ### Common
74
+
75
+ 1. **Read-only determination:** `readOnlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY' || readOnly`.
76
+ 2. **Helper text:** `helperTextToDisplay = validatemessage || helperText`.
77
+ 3. **Local state:** Maintain `checked` (boolean) initialized to `false`. A lifecycle effect watching `value` updates `checked`.
78
+ 4. **Reference list init:** A lifecycle effect watching the PConnect instance — if `referenceList?.length > 0 && !readOnlyMode`, call `thePConn.setReferenceList(selectionList)` and `updateNewInstuctions(thePConn, selectionList)`.
79
+ 5. **`handleCheckboxChange(event, item)`** — shared by card and internal usage: when the checkbox is checked, call `insertInstruction(thePConn, selectionList, selectionKey, primaryField, item)`; otherwise call `deleteInstruction(thePConn, selectionList, selectionKey, item)`. Either way, finish by calling `thePConn.clearErrorMessages({ property: selectionList })`.
80
+
81
+ ### Variant: Single checkbox (default)
82
+
83
+ Render a single checkbox with:
84
+
85
+ - Checked state bound to `checked`
86
+ - Change handler wired only when not read-only
87
+ - Blur handler wired only when not read-only
88
+ - Label = `caption` (next to checkbox)
89
+ - Group label = `label` (above, hidden if `hideLabel`)
90
+ - **On change:** Commit via the project's event-commit utility with event type `'changeNblur'`, the property name, and the checked boolean.
91
+ - **On blur:** Validate via `pConn.getValidationApi().validate(event.target.checked)`.
92
+
93
+ ### Variant: Multi-select (`selectionMode === 'multi'`)
94
+
95
+ Render a list of checkboxes from `datasource.source`:
96
+
97
+ - Extract the data field key: the second segment of `selectionKey` split by `.`.
98
+ - For each element in `datasource.source`:
99
+ - Checked: `selectedvalues?.some?.(data => data[dataField] === element.key)`
100
+ - Label: `element.text ?? element.value`
101
+ - **On change:** When the checkbox is checked, call `insertInstruction(thePConn, selectionList, selectionKey, primaryField, { id: element.key, primary: element.text ?? element.value })`; otherwise call `deleteInstruction(thePConn, selectionList, selectionKey, { id: element.key, primary: element.text ?? element.value })`. Either way, finish by calling `thePConn.clearErrorMessages({ property: selectionList, category: '', context: '' })`.
102
+ - **On blur:** `thePConn.getValidationApi().validate(selectedvalues, selectionList)`
103
+ - Test id: `${testId}:${element.value}`
104
+ - Layout: vertical column (flex, column direction).
105
+
106
+ ### Variant: Card (`variant === 'card'`)
107
+
108
+ Return early (before multi/single logic) with heading + CSS Grid + `SelectableCard`:
109
+
110
+ - Build common configuration by spreading `additionalProps` and adding `className: 'standard'`, `disabled`, `readOnly`, and `onClick` taken from the PConnect actions API.
111
+ - Grid: `repeat(auto-fit, minmax(min(100%, 40ch), 1fr))`, equal row heights, gap `0.5rem`.
112
+ - `SelectableCard` inputs:
113
+ - Common configuration spread, `testId`, `displayMode`, `getPConnect`
114
+ - `type='checkbox'`
115
+ - `dataSource` set to `datasource`
116
+ - `readOnly` set to `renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY' || readOnly`
117
+ - `recordKey` set to the last segment of `selectionKey`
118
+ - `cardLabel` set to the last segment of `primaryField`
119
+ - `readOnlyList` set to `selectedvalues`
120
+ - `hideFieldLabels`
121
+ - `showNoValue` set to true when read-only mode is active and `selectedvalues.length === 0`
122
+ - `image` config object bundling `imagePosition`, `imageSize`, `showImageDescription`, an `imageField` derived by taking the last segment of the `image` input path, and an `imageDescription` derived by taking the last segment of the `imageDescription` path found on `thePConn.getRawMetadata().config`.
123
+ - `onChange`: stop event propagation, resolve the record key by taking the last segment of `selectionKey`, find the matching item in `datasource.source` whose field at that key equals the event target's `id` (defaulting to an empty object if not found), then call `handleCheckboxChange` with an item shaped as `{ id: selectedItem[recordKey], primary: selectedItem[recordKey] }`.
124
+ - `onBlur`: `() => thePConn.getValidationApi().validate(selectedvalues, selectionList)`
125
+
126
+ ## Display Mode Rendering
127
+
128
+ Display mode uses `caption` (not `label`) and shows the true/false label:
129
+
130
+ - **`DISPLAY_ONLY`:** Render `FieldValueList` with `name` set to `caption` (or empty when `hideLabel` is true) and `value` set to `trueLabel` when `value` is true, `falseLabel` otherwise.
131
+ - **`STACKED_LARGE_VAL`:** Render `FieldValueList` the same way, with a stacked variant.
132
+
133
+ ## Read-Only Rendering
134
+
135
+ Single mode: Set the read-only attribute on the checkbox element; disable the change/blur handlers.
136
+ Multi/Card mode: The `readOnlyMode` flag prevents `insertInstruction`/`deleteInstruction`; cards show `readOnlyList`.
137
+
138
+ ## Visual Specifications
139
+
140
+ ### Standard / Multi-select
141
+
142
+ | Property | Value |
143
+ | ----------------- | ----------------------------------------------- |
144
+ | Checkbox size | Default (24px) |
145
+ | Label placement | End (right of checkbox) |
146
+ | Group label | Legend/label above group, hidden if `hideLabel` |
147
+ | Layout | Single: single row. Multi: vertical column |
148
+ | Helper text | Below group |
149
+ | Error state | Red text/border on helper |
150
+ | Disabled/readOnly | Greyed out, pointer-events none |
151
+
152
+ **Visual-only styling notes:** The checkbox group uses a vertical flex column with a small gap between items; each checkbox label row is a flex container with center-aligned items, a small gap between the input and text, and a pointer cursor. Disabled checkbox inputs are shown at reduced opacity.
153
+
154
+ ### Card Variant
155
+
156
+ | Property | Value |
157
+ | -------- | ------------------------------------------------------------------------------------------------- |
158
+ | Layout | CSS Grid `repeat(auto-fit, minmax(min(100%, 40ch), 1fr))`, row height equal (`1fr`), gap `0.5rem` |
159
+ | Heading | Heading element with no top/bottom margin |
160
+
161
+ ## Edge Cases & Special Logic
162
+
163
+ - **Export name should avoid collision** with the design system's checkbox widget.
164
+ - **Display mode uses `caption`** (not `label`) for the field name. This is unique to Checkbox.
165
+ - **`readonlyContextList`** is aliased to `selectedvalues` — use `selectedvalues` everywhere in the component body.
166
+ - **`handleCheckboxChange`** (card mode): Stops event propagation before processing. Finds the selected item from `datasource.source` by matching `item[recordKey] === e.target.id`.
167
+ - `updateNewInstuctions` is called on mount to sync reference list state.
168
+ - `clearErrorMessages` is called after every multi-select change.
169
+ - Card variant returns early (before multi/single branch logic).
170
+ - Multi-select blur handler validates with both `selectedvalues` and `selectionList` as arguments.
171
+
172
+ ## Dependencies
173
+
174
+ - The project's instruction helpers (`insertInstruction`, `deleteInstruction`, `updateNewInstuctions`) — for multi-selection reference list management.
175
+ - The project's event-commit utility.
176
+ - The project's component registry, resolving `FieldValueList` — for display modes.
177
+ - The project's component registry, resolving `SelectableCard` — for card variant.
178
+
179
+ ## Design System Mapping
180
+
181
+ **UI control type:** Single or multi-select checkbox (boolean or list).
182
+
183
+ When implementing in a specific design system, map the following:
184
+
185
+ - **Single checkbox** → use the DS's checkbox component with a label to the right
186
+ - **Multi-select** → render a list of checkboxes in a vertical flex column
187
+ - **Card variant** → delegate to the `SelectableCard` component in a CSS grid
188
+ - **Group wrapper** → use the DS's form control/form group with legend/label, error state, and helper text
189
+ - **Read-only** → disable the checkbox inputs; for cards, show the read-only list
@@ -0,0 +1,136 @@
1
+ # Skill: Currency
2
+
3
+ Currency input field with locale-aware symbol, decimal separator, and thousands separator. Supports ISO currency codes.
4
+
5
+ > **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, input contract, display modes, event handling, and registration patterns common to ALL field components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a numeric input formatted as a currency value. Displays the correct currency symbol, decimal separator, and thousands separator for the given ISO currency code. Uses a numeric formatting library to handle locale-aware input. Shows formatted read-only values in display modes.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Pega Name:** `Currency`
16
+ - **Type / Subtype:** `Field` / `Decimal-Currency`
17
+ - **Registration key:** `Currency` (in the project's component map)
18
+
19
+ ## Inputs (component-specific)
20
+
21
+ | Name | Type | Default | Description |
22
+ | ----------------- | ------------------- | ------- | -------------------------------------------------------------------------------------------------------- |
23
+ | `currencyISOCode` | `string` (optional) | `'USD'` | ISO 4217 currency code (e.g., `'USD'`, `'EUR'`, `'GBP'`) |
24
+ | `allowDecimals` | `boolean` | — | Whether to allow decimal input. If `false`, decimal scale is 0. If `true`, fixed 2 decimal places shown. |
25
+
26
+ All other inputs come from the project's field input contract (see prerequisite skill).
27
+
28
+ ## Implementation Structure
29
+
30
+ Follow this exact structure. Replace the numeric-format input with an equivalent from your chosen design system / numeric format library.
31
+
32
+ **Module Setup:** The component depends on the project's component registry (to resolve `FieldValueList`), the project's event-commit utility, the project's currency utility helpers (for symbol/separator lookup), and the project's formatting helpers (for display-mode value formatting). It also uses a numeric-format masking library for locale-aware input display. Define the input contract as an extension of the project's field input contract, adding an optional `currencyISOCode` and a required `allowDecimals` boolean.
33
+
34
+ **Main Component Logic** — steps in order:
35
+
36
+ 1. **Registry lookup** — resolve `FieldValueList` via the project's component registry.
37
+ 2. **Receive inputs** — `getPConnect`, `label`, `required`, `disabled`, `value` (default `''`), `validatemessage`, `status`, `readOnly`, `testId`, `helperText`, `displayMode`, `hideLabel`, `currencyISOCode` (default `'USD'`), `placeholder`, `allowDecimals`.
38
+ 3. **PConnect setup** — obtain the PConnect instance, its actions API, and the bound property name.
39
+ 4. **Derived values** — `helperTextToDisplay = validatemessage || helperText` and a test-id attribute built from `testId`.
40
+ 5. **Local state** — `values` initialized from `value.toString()`.
41
+ 6. **Sync from store** — a lifecycle effect watching `value` updates `values` (as a string) whenever it changes.
42
+ 7. **Currency symbol lookup** — derive the currency symbol, decimal indicator, and digit group separator via the project's currency utility helpers using `currencyISOCode`.
43
+ 8. **Formatted value for display modes** — computed eagerly, before the display-mode check: obtain the currency formatting options via the project's currency options helper, then compute the formatted value using the project's formatting helper with the component's type name (from `pConn.getComponentName()?.toLowerCase()`) as the format key and the currency options.
44
+ 9. **Read-only flag** — build a read-only configuration, set to mark the input read-only only when `readOnly` is true.
45
+ 10. **Currency format configuration** — build a configuration object bundling the currency symbol as prefix, the decimal indicator as decimal separator, and the digit group separator as thousands separator.
46
+ 11. **Display mode returns** — `DISPLAY_ONLY` and `STACKED_LARGE_VAL` both return `FieldValueList` using the formatted value, the latter with a stacked variant.
47
+ 12. **Event handlers** — the blur handler commits via the project's event-commit utility with event type `'changeNblur'`, the property name, and `values`; the value-change handler updates `values` with the raw numeric string from the masking library's callback.
48
+ 13. **Render** — a numeric-format input configured with: value-is-numeric-string flag, current `values`, the currency format configuration spread (prefix, decimal separator, thousands separator), decimal scale set to `2` when `allowDecimals !== false` else `0`, fixed decimal scale set to `allowDecimals`, the value-change handler, the blur handler wired only when not read-only, an outlined style when editable or flat/borderless style when read-only, `label`, `helperText: helperTextToDisplay`, `placeholder: placeholder ?? ''`, `required`, `disabled`, an error state when `status === 'error'`, and the read-only/test-id attributes applied to the underlying input element.
49
+
50
+ ## Behavioral Contract
51
+
52
+ 1. **Local state:** Maintain `values` (string). Initialize from `value.toString()`.
53
+ 2. **Sync from store:** A lifecycle effect watching `value` updates `values` (converted to string).
54
+ 3. **Helper text:** `helperTextToDisplay = validatemessage || helperText`.
55
+ 4. **Test ID:** Build a test-id attribute from `testId` — passed on the inner input element.
56
+ 5. **Currency symbols:** Derive from the project's currency utility helpers using `currencyISOCode`:
57
+ - Returns the currency symbol, decimal indicator, and digit group separator.
58
+ - Default (USD): `$`, `.`, `,`.
59
+ 6. **Formatted value:** Computed eagerly (before display mode check) using the project's formatting helper with the component's type name as the format key and the currency options.
60
+ 7. **Read-only flag:** Mark the input read-only only when `readOnly` is true.
61
+ 8. **Currency format configuration:** Bundle the currency symbol as prefix, decimal indicator as decimal separator, and digit group separator as thousands separator.
62
+ 9. **Numeric format configuration (merged at render):**
63
+ - Value-is-numeric-string: true
64
+ - Value: `values` (local state string)
65
+ - Currency format configuration spread (prefix + separators)
66
+ - Decimal scale: `allowDecimals !== false ? 2 : 0`
67
+ - Fixed decimal scale: `allowDecimals`
68
+ - Value-change handler: updates `values` with the raw numeric string
69
+ - Blur handler: wired only when not read-only
70
+ - Visual style: outlined when editable, flat/borderless when read-only
71
+ 10. **On value change:** Update `values` with the raw numeric string from the format library's callback object.
72
+ 11. **On blur:** Commit local state to store via the project's event-commit utility with event type `'changeNblur'`, the property name, and `values`.
73
+
74
+ ## Display Mode Rendering
75
+
76
+ Format the value before display using the project's formatting helper with the currency options derived from `currencyISOCode`:
77
+
78
+ - **`DISPLAY_ONLY`:** Render `FieldValueList` with `name` set to `label` (or empty when `hideLabel` is true) and `value` set to the formatted value.
79
+ - **`STACKED_LARGE_VAL`:** Render `FieldValueList` the same way, with a stacked layout variant.
80
+
81
+ The formatted value uses the locale and currency from `currencyISOCode` to produce a localized string (e.g., `$1,234.56`).
82
+
83
+ ## Read-Only Rendering
84
+
85
+ Keep the numeric format input but set the read-only attribute on the input element. Switch the visual style to flat/borderless. The blur handler is omitted.
86
+
87
+ ## Visual Specifications
88
+
89
+ | Property | Standard (editable) | Read-only |
90
+ | -------------- | ---------------------------- | --------------- |
91
+ | Width | 100% | 100% |
92
+ | Size | Small | Small |
93
+ | Variant | Outlined | Flat/borderless |
94
+ | Prefix | Currency symbol (e.g., `$`) | Currency symbol |
95
+ | Alignment | Left-aligned text | Left-aligned |
96
+ | Decimal places | 2 (when `allowDecimals`) | 2 |
97
+ | Error state | Red border + red helper text | — |
98
+ | Placeholder | From the `placeholder` input | — |
99
+
100
+ ## Edge Cases & Special Logic
101
+
102
+ - **EUR uses `nl-NL` locale:** When `currencyISOCode === 'EUR'`, use NL locale for symbol/separator lookup.
103
+ - **Fallback:** If `currencyISOCode` lookup fails, fall back to USD (`$`, `.`, `,`).
104
+ - **`allowDecimals` vs fixed decimal scale:** The fixed decimal scale flag is set directly to `allowDecimals` (boolean). Decimal scale uses `allowDecimals !== false ? 2 : 0` (note: `!== false` means undefined/missing also gives 2 decimals).
105
+ - The input stores the raw numeric string (e.g., `'1234.56'`) in state and in the Pega store — not the formatted display string.
106
+ - The formatted value is computed eagerly (before display mode check) using `pConn.getComponentName()?.toLowerCase()` as the format type — this resolves to `'currency'`.
107
+ - The test-id attribute is passed on the inner input element, not on the outer wrapper.
108
+ - `placeholder` defaults to `''` if undefined: `placeholder ?? ''`.
109
+ - Visual style switches between outlined (editable) and flat/borderless (read-only) — this is design-system specific but the visual intent is: bordered input vs flat/borderless.
110
+
111
+ ## Dependencies
112
+
113
+ - A numeric formatting library — handles locale-aware separators, prefix, and decimal scale.
114
+ - The project's formatting helpers — specifically the named `format` export (not a method on the default export). Use it as a standalone function, not as a property of the default-exported object.
115
+ - The project's currency utility helpers — for currency symbol, decimal indicator, and digit group separator lookup.
116
+ - The project's currency options helper — for formatting options based on ISO code.
117
+ - The project's event-commit utility.
118
+ - The project's component registry, resolving `FieldValueList` — for display modes.
119
+
120
+ **For CSS-only / design-system-agnostic implementations:**
121
+
122
+ - The numeric format library handles the input masking. Use any numeric format library that supports prefix, decimal separator, and thousands separator configuration.
123
+ - Alternatively, implement manually: on change, strip non-numeric chars, insert separators, prepend symbol.
124
+
125
+ ## Design System Mapping
126
+
127
+ **UI control type:** Currency / numeric formatted input with prefix symbol.
128
+
129
+ When implementing in a specific design system, map the following:
130
+
131
+ - **Numeric format input** → use a numeric masking library compatible with the project's framework, or implement custom input masking
132
+ - **Currency prefix** → the currency symbol derived from the ISO code
133
+ - **Decimal/thousands separators** → derive from the currency utility helpers
134
+ - **Decimal scale** → 2 when decimals allowed, 0 otherwise
135
+ - **Read-only** → flat/borderless style with read-only attribute
136
+ - **Error state** → the DS's error/danger visual state
@@ -0,0 +1,126 @@
1
+ # Skill: Date
2
+
3
+ Date picker field with locale-aware date format string, binds to a Pega case property.
4
+
5
+ > **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, input contract, display modes, event handling, and registration patterns common to ALL field components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a date picker input. Stores dates as `YYYY-MM-DD` strings. Displays dates according to locale-aware format (e.g., `MM/DD/YYYY` for en-US). Uses a date picker library for the calendar UI. Delegates read-only rendering to `TextInput`.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Pega Name:** `Date`
16
+ - **Type / Subtype:** `Field` / `Date`
17
+ - **Registration key:** `Date` (in the project's component map)
18
+
19
+ > **Important naming note:** The component's export name should avoid conflicts with the platform's built-in `Date` global (e.g., use `DateField` as the import alias). Register it under the key `Date` in the project's component map.
20
+
21
+ ## Inputs (component-specific)
22
+
23
+ No inputs beyond the project's field input contract (see prerequisite skill).
24
+
25
+ ## Implementation Structure
26
+
27
+ Follow this exact structure. Replace the date-picker widget with an equivalent from your chosen design system.
28
+
29
+ **Module Setup:** The component depends on the project's component registry (to resolve `TextInput` and `FieldValueList`), the project's event-commit utility, the project's formatting helpers (for display-mode value formatting), and the project's date-format utility (for locale-aware format strings). It also uses a date manipulation library (for parsing/formatting/validation) and a date picker UI component (for the calendar popup). Define the input contract as the project's field input contract with no additional fields.
30
+
31
+ **Helper function (top-level, outside the component):** `getFormattedDate(date)` returns the date as a `YYYY-MM-DD` string suitable for posting to the server, built from the date object's year, month (converted from 0-indexed to 1-indexed and zero-padded), and day (zero-padded).
32
+
33
+ **Main Component Logic** — steps in order:
34
+
35
+ 1. **Registry lookups** — resolve `TextInput` and `FieldValueList` via the project's component registry.
36
+ 2. **Receive inputs** — `getPConnect`, `label`, `required`, `disabled`, `value`, `validatemessage`, `status`, `readOnly`, `testId`, `helperText`, `displayMode`, `hideLabel`.
37
+ 3. **Local state** — `dateValue` typed as a date object or null, initialized from `value` (parsed via the date library) or `null` when `value` is empty.
38
+ 4. **PConnect setup** — obtain the PConnect instance, its actions API, and the bound property name; compute `helperTextToDisplay = validatemessage || helperText`.
39
+ 5. **Date format info** — start from the project's default date-format info and mutate its `dateFormatString`, `dateFormatStringLC`, and `dateFormatMask` properties with the locale-specific values returned by the project's date-format utility.
40
+ 6. **Sync from store** — a lifecycle effect watching `value` updates `dateValue` (parsed via the date library) whenever it changes.
41
+ 7. **Display mode returns** — for both `DISPLAY_ONLY` and `STACKED_LARGE_VAL`, compute the formatted date using the project's formatting helper with format type `'date'` and options `{ format: dateFormatInfo.dateFormatString }`, then return `FieldValueList` with that value (the latter with a stacked variant).
42
+ 8. **Read-only return (before event handlers)** — when `readOnly` is true, render the `TextInput` component with all inputs passed through directly (full delegation).
43
+ 9. **Test ID** — build a test-id attribute from `testId`.
44
+ 10. **Change handler — only commits valid dates** — given a selected date: if it is valid, update local state and immediately commit via the project's event-commit utility with event type `'changeNblur'`, the property name, and the formatted `YYYY-MM-DD` string from `getFormattedDate(date)`; invalid or incomplete dates are ignored entirely (no state update, no commit).
45
+ 11. **Render** — a date picker configured with: `label`, `disabled`, current `dateValue`, display format set to the locale-aware date format string, the change handler, and a nested text-field slot configured with `required`, an outlined style, small size, placeholder set to the lowercase format string (e.g., `mm/dd/yyyy`), an error state when `status === 'error'`, `helperText: helperTextToDisplay`, and the test-id attribute applied to the input element.
46
+
47
+ ## Behavioral Contract
48
+
49
+ 1. **Local state:** Maintain `dateValue` as a date object or null. Initialize: `value ? parse(value) : null`.
50
+ 2. **Sync from store:** A lifecycle effect watching `value` updates `dateValue` (parsed via the date library).
51
+ 3. **Helper text:** `helperTextToDisplay = validatemessage || helperText`.
52
+ 4. **Date format info:** Start from the project's default date-format info, then **mutate** its properties with locale-specific values from the project's date-format utility — specifically, copy the fresh `dateFormatString`, `dateFormatStringLC`, and `dateFormatMask` from the freshly-computed locale info onto the shared default object.
53
+ 5. **On change (valid date selected):**
54
+ - Guard: only proceed if the date is valid — skip invalid/incomplete dates.
55
+ - Update state with the selected date.
56
+ - Format to `YYYY-MM-DD` using `getFormattedDate(date)` (see Helper Function below).
57
+ - Commit immediately via the project's event-commit utility with event type `'changeNblur'`, the property name, and the formatted date.
58
+ 6. **Read-only:** Return early by delegating to the `TextInput` component.
59
+ 7. **Placeholder:** Use the lowercase format string from the date-format info (e.g., `'mm/dd/yyyy'`).
60
+ 8. **Test ID:** Build a test-id attribute from `testId` and pass via the text field slot's input element.
61
+
62
+ ## Helper Function
63
+
64
+ Top-level pure function (outside the component), named `getFormattedDate(date)`. It builds a `YYYY-MM-DD` string using the date object's internal properties: the year as-is, the month incremented by one (since it's 0-indexed) and zero-padded to two digits, and the day zero-padded to two digits, joined with hyphens.
65
+
66
+ **Note:** If using a different date library, replace with equivalent accessors for year, month (0-indexed), and day.
67
+
68
+ ## Display Mode Rendering
69
+
70
+ Format the value before display using the project's formatting helper with format type `'date'` and options `{ format: dateFormatInfo.dateFormatString }`:
71
+
72
+ - **`DISPLAY_ONLY`:** Render `FieldValueList` with `name` set to `label` (or empty when `hideLabel` is true) and `value` set to the formatted date.
73
+ - **`STACKED_LARGE_VAL`:** Render `FieldValueList` the same way, with a stacked layout variant.
74
+ - Both modes compute the formatted date from the raw `value` input (not local state).
75
+
76
+ ## Read-Only Rendering
77
+
78
+ Delegate to `TextInput`, passing all inputs through. The raw `YYYY-MM-DD` string is displayed as-is (or formatted by `TextInput`'s read-only rendering).
79
+
80
+ ## Visual Specifications
81
+
82
+ | Property | Value |
83
+ | ------------------ | ----------------------------------------------- |
84
+ | Width | Auto (date picker natural width) |
85
+ | Size | Small |
86
+ | Variant | Outlined |
87
+ | Placeholder | Lowercase format string (e.g., `mm/dd/yyyy`) |
88
+ | Calendar popup | Opens below the input |
89
+ | Error state | Red border + red helper text |
90
+ | Required indicator | `*` on label |
91
+ | Format display | Locale-aware (e.g., `MM/DD/YYYY`, `DD/MM/YYYY`) |
92
+
93
+ **CSS-only notes:** For a CSS-only date input, use `<input type="date">` — note that the display format is browser-controlled. A custom date picker component is needed for locale-aware format strings.
94
+
95
+ ## Edge Cases & Special Logic
96
+
97
+ - Commit on **change** (when a valid date is selected), not on blur — this differs from text inputs.
98
+ - Always store value as `YYYY-MM-DD` regardless of display format.
99
+ - Invalid/incomplete dates (e.g., partially typed) are ignored — only commit when the date is valid.
100
+ - Locale format info is derived at render time from the project's date-format utility — this reads the Pega environment locale.
101
+ - **Render ordering:** display modes → readOnly return → test-id → change handler → main render. The readOnly check comes BEFORE handler definitions.
102
+ - The default date-format info object is mutated in place (not spread-copied) — this is the existing pattern, maintain it.
103
+ - `getFormattedDate` accesses date library internals for year, month (0-indexed), day — if using a different date library, adapt the accessors.
104
+
105
+ ## Dependencies
106
+
107
+ - A date manipulation library (for parsing, formatting, validity checking).
108
+ - A date picker UI component (for the calendar popup).
109
+ - The project's date-format utility — for locale-aware format string.
110
+ - The project's default date-format info — default fallback.
111
+ - The project's formatting helpers — specifically the named `format` export (not a method on the default export). Use it as a standalone function, not as a property of the default-exported object.
112
+ - The project's event-commit utility.
113
+ - The project's component registry, resolving `TextInput` — for read-only delegation.
114
+ - The project's component registry, resolving `FieldValueList` — for display modes.
115
+
116
+ ## Design System Mapping
117
+
118
+ **UI control type:** Date picker with calendar popup.
119
+
120
+ When implementing in a specific design system, map the following:
121
+
122
+ - **Date picker** → use the DS's date picker component or a compatible third-party date picker
123
+ - **Date format** → pass the locale-aware format string from the project's date-format utility
124
+ - **Placeholder** → the lowercase version of the format string
125
+ - **Read-only mode** → delegate to the `TextInput` component
126
+ - **Commit behavior** → commit on valid date selection (not on blur)
@@ -0,0 +1,115 @@
1
+ # Skill: DateTime
2
+
3
+ Date and time picker with timezone conversion, binds to a Pega case property.
4
+
5
+ > **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, input contract, display modes, event handling, and registration patterns common to ALL field components.
6
+
7
+ ---
8
+
9
+ ## Component Purpose
10
+
11
+ Renders a combined date and time picker. Stores values as ISO 8601 UTC strings. Converts to/from the Pega environment's configured timezone for display. Shows formatted date-time in display modes. Delegates read-only rendering to `TextInput` with a formatted string.
12
+
13
+ ## Pega Metadata
14
+
15
+ - **Pega Name:** `DateTime`
16
+ - **Type / Subtype:** `Field` / `DateTime`
17
+ - **Registration key:** `DateTime` (in the project's component map)
18
+
19
+ ## Inputs (component-specific)
20
+
21
+ No inputs beyond the project's field input contract (see prerequisite skill).
22
+
23
+ ## Implementation Structure
24
+
25
+ Follow this exact structure. Replace the date-time picker widget with an equivalent from your chosen design system.
26
+
27
+ **Module Setup:** The component depends on the project's component registry (to resolve `TextInput` and `FieldValueList`), the project's event-commit utility, a date-to-timezone conversion helper from the project's date formatter module, the project's formatting helpers, and the project's date-format utility (for locale-aware format strings). It also uses a date manipulation library with timezone support and a date-time picker UI component. Define the input contract as the project's field input contract with no additional fields.
28
+
29
+ **Main Component Logic** — steps in order:
30
+
31
+ 1. **Registry lookups** — resolve `TextInput` and `FieldValueList` via the project's component registry.
32
+ 2. **Receive inputs** — `getPConnect`, `label`, `required`, `disabled`, `value` (default `''`), `validatemessage`, `status`, `readOnly`, `testId`, `helperText`, `displayMode`, `hideLabel`.
33
+ 3. **Timezone** — read the environment timezone at render time via `PCore.getEnvironmentInfo().getTimeZone()`.
34
+ 4. **Local state** — `dateValue` typed as a date object or null, initialized by converting `value` to the environment timezone via the project's date-to-timezone conversion helper and wrapping in the date library's parser (or `null` when `value` is empty).
35
+ 5. **PConnect setup** — obtain the PConnect instance, its actions API, and the bound property name; compute `helperTextToDisplay = validatemessage || helperText`.
36
+ 6. **Date format info** — start from the project's default date-format info and mutate its `dateFormatString`, `dateFormatStringLC`, and `dateFormatMask` properties with locale-specific values from the project's date-format utility (same pattern as the Date component).
37
+ 7. **Sync from store** — a lifecycle effect watching `value` re-runs the same timezone conversion and updates `dateValue`.
38
+ 8. **Display mode returns** — for both `DISPLAY_ONLY` and `STACKED_LARGE_VAL`, compute the formatted date-time using the project's formatting helper with format type `'datetime'` and options `{ format: '<dateFormatString> hh:mm a' }`, then return `FieldValueList` with that value (the latter with a stacked variant).
39
+ 9. **Read-only return** — compute the formatted date-time using the project's formatting helper with format type `'datetime'` (no format option) and render the `TextInput` component with all inputs passed through, overriding `value` with the formatted string.
40
+ 10. **Test ID** — build a test-id attribute from `testId`.
41
+ 11. **Change handler — convert to timezone-aware ISO, commit immediately** — build a timezone-aware date instance from the selected date's `'YYYY-MM-DDTHH:mm:ss'` string and the environment timezone; if that instance is valid, convert it to an ISO string, otherwise use an empty string; update local state with the timezone-aware instance and immediately commit via the project's event-commit utility with event type `'changeNblur'`, the property name, and the ISO string.
42
+ 12. **Render** — a datetime picker configured with: `disabled`, `label`, current `dateValue`, a combined format of the locale-aware date format string plus `' hh:mm a'`, minutes step of `5`, the change handler, and a nested text-field slot configured with an outlined style, `required`, small size, a combined placeholder of the lowercase date format plus `' hh:mm a'`, an error state when `status === 'error'`, `helperText: helperTextToDisplay`, and the test-id attribute applied to the input element.
43
+
44
+ ## Behavioral Contract
45
+
46
+ 1. **Timezone:** Read the environment timezone at render time via `PCore.getEnvironmentInfo()` and its `getTimeZone()` accessor (guard against a missing environment info object).
47
+ 2. **Local state:** Maintain `dateValue` as a date object or null. Initialize: convert `value` from UTC to the environment timezone using the project's date-to-timezone conversion helper, then parse with the date library (or `null` when `value` is empty).
48
+ 3. **Helper text:** `helperTextToDisplay = validatemessage || helperText`.
49
+ 4. **Sync from store:** A lifecycle effect watching `value` re-runs the timezone conversion and updates `dateValue`.
50
+ 5. **Date/time format:** Mutate the default date-format info with locale values from the project's date-format utility (same pattern as Date component). Combined format: the date format string plus `' hh:mm a'`.
51
+ 6. **Minutes step:** `5` — time picker snaps to 5-minute increments.
52
+ 7. **On change:**
53
+ - Convert the selected date to a timezone-aware ISO string: build a timezone-aware date instance from the date formatted as `'YYYY-MM-DDTHH:mm:ss'` and the environment timezone; if that instance is valid, convert to an ISO string, otherwise use an empty string.
54
+ - Update state with the timezone-aware date instance.
55
+ - Commit immediately via the project's event-commit utility with event type `'changeNblur'`, the property name, and the ISO string.
56
+ 8. **Read-only:** Format with the project's formatting helper using format type `'datetime'` (no format option), then delegate to `TextInput` with the formatted string as the `value` override.
57
+ 9. **Test ID:** Build a test-id attribute from `testId` and pass via the text field slot's input element.
58
+ 10. **Render ordering:** display modes → readOnly → test-id → change handler → main render.
59
+
60
+ ## Display Mode Rendering
61
+
62
+ Format using the project's formatting helper with format type `'datetime'` and options `{ format: '<dateFormatString> hh:mm a' }`:
63
+
64
+ - **`DISPLAY_ONLY`:** Render `FieldValueList` with `name` set to `label` (or empty when `hideLabel` is true) and `value` set to the formatted date-time.
65
+ - **`STACKED_LARGE_VAL`:** Render `FieldValueList` the same way, with a stacked layout variant.
66
+
67
+ ## Read-Only Rendering
68
+
69
+ Format value using the project's formatting helper with format type `'datetime'` (no format option), then pass it as the `value` override to `TextInput`, along with all other inputs.
70
+
71
+ ## Visual Specifications
72
+
73
+ | Property | Value |
74
+ | ------------ | --------------------------------------------------- |
75
+ | Width | Auto |
76
+ | Size | Small |
77
+ | Variant | Outlined |
78
+ | Format | `MM/DD/YYYY hh:mm a` (locale-aware date + 12h time) |
79
+ | Placeholder | Lowercase format, e.g., `mm/dd/yyyy hh:mm a` |
80
+ | Minutes step | 5 minutes |
81
+ | Error state | Red border + red helper text |
82
+
83
+ **Note on known issue:** Keyboard input in the minute field may jump to the am/pm field after one digit — this is a known quirk of some date-time picker library versions.
84
+
85
+ ## Edge Cases & Special Logic
86
+
87
+ - All stored values are **UTC ISO 8601 strings** (e.g., `'2024-03-15T14:30:00.000Z'`).
88
+ - **Timezone conversion** is critical: always convert from UTC → environment timezone for display, and from environment timezone → UTC when committing.
89
+ - If the timezone-aware date instance is invalid, commit an empty string `''`.
90
+ - Commits on **change** (picker selection), not on blur.
91
+ - The date library's timezone plugin is required for timezone-aware conversions.
92
+
93
+ ## Dependencies
94
+
95
+ - A date manipulation library with timezone support (e.g., the date library plus its timezone plugin).
96
+ - The project's date-to-timezone conversion helper — converts stored UTC value to display timezone.
97
+ - The project's formatting helpers — specifically the named `format` export (not a method on the default export). Use it as a standalone function, not as a property of the default-exported object.
98
+ - The project's date-format utility — for locale date format string.
99
+ - A date-time picker UI component (for the combined calendar + time popup).
100
+ - The project's event-commit utility.
101
+ - The project's component registry, resolving `TextInput` — for read-only delegation.
102
+ - The project's component registry, resolving `FieldValueList` — for display modes.
103
+
104
+ ## Design System Mapping
105
+
106
+ **UI control type:** Combined date and time picker with timezone awareness.
107
+
108
+ When implementing in a specific design system, map the following:
109
+
110
+ - **Date-time picker** → use the DS's combined date-time picker component or a compatible third-party picker
111
+ - **Date format** → pass the combined locale-aware format string (date portion plus `' hh:mm a'`)
112
+ - **Timezone conversion** → convert UTC ↔ environment timezone on read/write using the project's date-to-timezone helper
113
+ - **Minutes step** → configure the time picker to snap to 5-minute increments
114
+ - **Read-only mode** → format the value and delegate to `TextInput`
115
+ - **Commit behavior** → commit on valid selection (not on blur)