@pega/sdk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +183 -183
- package/README.md +6 -6
- package/SECURITY.md +2 -1
- package/dist/index.js +299 -56
- package/package.json +7 -6
- package/templates/angular-sdk-reference/package.json +15 -15
- package/templates/angular-sdk-reference/tsconfig.json +2 -2
- package/templates/react-native-sdk-reference/App.tsx +2 -4
- package/templates/react-native-sdk-reference/expo-env.d.ts +3 -0
- package/templates/react-native-sdk-reference/package.json +6 -6
- package/templates/react-native-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/.ai-common/agents/implementation-expert.md +132 -0
- package/templates/react-sdk-reference/{.github/copilot-instructions.md → .ai-common/global/ai-agent-instructions.md} +7 -7
- package/templates/react-sdk-reference/{.github/instructions/component-map.instructions.md → .ai-common/instructions/component-map.md} +9 -2
- package/templates/react-sdk-reference/{.github/instructions/dse-component.instructions.md → .ai-common/instructions/dse-component.md} +1 -1
- package/templates/react-sdk-reference/{.cursor/rules/field-component.mdrules → .ai-common/instructions/field-component.md} +6 -2
- package/templates/react-sdk-reference/{.github/instructions/template-component.instructions.md → .ai-common/instructions/template-component.md} +3 -2
- package/templates/react-sdk-reference/{.github/instructions/widget-component.instructions.md → .ai-common/instructions/widget-component.md} +2 -1
- package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +219 -0
- package/templates/react-sdk-reference/.ai-common/prompts/component-manifest.json +199 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +528 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +216 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +239 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +283 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +222 -0
- package/templates/react-sdk-reference/.ai-common/prompts/identify-components.md +109 -0
- package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/AlertBanner.md +187 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +196 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +213 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules → .ai-common/skills/design-system-extension-skills/DetailsFields.md} +81 -33
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules → .ai-common/skills/design-system-extension-skills/FieldGroup.md} +82 -40
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules → .ai-common/skills/design-system-extension-skills/FieldGroupList.md} +68 -28
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules → .ai-common/skills/design-system-extension-skills/FieldValueList.md} +75 -31
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/Operator.mdrules → .ai-common/skills/design-system-extension-skills/Operator.md} +99 -31
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules → .ai-common/skills/design-system-extension-skills/Pulse.md} +37 -20
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +290 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/WssQuickCreate.md +168 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension.mdrules → .ai-common/skills/design-system-extension.md} +14 -17
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-components.mdrules → .ai-common/skills/field-components.md} +27 -14
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +298 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +340 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +358 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +230 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +221 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +213 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +260 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +177 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/Group.mdrules → .ai-common/skills/field-skills/Group.md} +72 -20
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +169 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +250 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Multiselect.md +258 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/ObjectReference.mdrules → .ai-common/skills/field-skills/ObjectReference.md} +101 -23
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +177 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +210 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +260 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/RichText.mdrules → .ai-common/skills/field-skills/RichText.md} +108 -17
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +188 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +286 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/SemanticLink.mdrules → .ai-common/skills/field-skills/SemanticLink.md} +98 -32
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +164 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/TextContent.mdrules → .ai-common/skills/field-skills/TextContent.md} +66 -27
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +174 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +156 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +145 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/UserReference.md +293 -0
- package/templates/react-sdk-reference/.ai-common/skills/run-and-verify.md +70 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-components.mdrules → .ai-common/skills/template-components.md} +89 -64
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +227 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +273 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/BannerPage.mdrules → .ai-common/skills/template-skills/BannerPage.md} +58 -21
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +185 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +399 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +282 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DataReference.md +174 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +221 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultPage.md +161 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/Details.mdrules → .ai-common/skills/template-skills/Details.md} +78 -22
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules → .ai-common/skills/template-skills/DetailsSubTabs.md} +82 -25
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules → .ai-common/skills/template-skills/DetailsThreeColumn.md} +31 -22
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules → .ai-common/skills/template-skills/DetailsTwoColumn.md} +31 -22
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DynamicTabs.mdrules → .ai-common/skills/template-skills/DynamicTabs.md} +82 -15
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +231 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/HierarchicalForm.mdrules → .ai-common/skills/template-skills/HierarchicalForm.md} +63 -20
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/InlineDashboard.mdrules → .ai-common/skills/template-skills/InlineDashboard.md} +58 -18
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules → .ai-common/skills/template-skills/InlineDashboardPage.md} +66 -18
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/ListPage.mdrules → .ai-common/skills/template-skills/ListPage.md} +27 -12
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +419 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules → .ai-common/skills/template-skills/MultiReferenceReadOnly.md} +53 -16
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +209 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/OneColumn.mdrules → .ai-common/skills/template-skills/OneColumn.md} +59 -25
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +222 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SimpleTable.md +190 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +160 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/SubTabs.mdrules → .ai-common/skills/template-skills/SubTabs.md} +61 -16
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/TwoColumn.mdrules → .ai-common/skills/template-skills/TwoColumn.md} +83 -37
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +48 -46
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/WssNavBar.md +210 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-components.mdrules → .ai-common/skills/widget-components.md} +12 -28
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +121 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +209 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/CaseHistory.mdrules → .ai-common/skills/widget-skills/CaseHistory.md} +81 -20
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/FileUtility.md +273 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/Followers.mdrules → .ai-common/skills/widget-skills/Followers.md} +43 -24
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/QuickCreate.mdrules → .ai-common/skills/widget-skills/QuickCreate.md} +68 -21
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/SummaryItem.mdrules → .ai-common/skills/widget-skills/SummaryItem.md} +92 -29
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +492 -0
- package/templates/react-sdk-reference/index.html +1 -4
- package/templates/react-sdk-reference/package.json +15 -15
- package/templates/react-sdk-reference/package.minimal.json +29 -0
- package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
- package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
- package/templates/react-sdk-reference/src/AppSelector.tsx +6 -6
- package/templates/react-sdk-reference/src/FallbackComponent.tsx +2 -6
- package/templates/react-sdk-reference/src/MashupApp.styles.ts +269 -41
- package/templates/react-sdk-reference/src/MashupApp.tsx +194 -104
- package/templates/react-sdk-reference/src/PortalApp.tsx +15 -50
- package/templates/react-sdk-reference/src/components/component-map.ts +2 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/AlertBanner.tsx +7 -28
- package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/Banner.tsx +12 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +35 -33
- package/templates/react-sdk-reference/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx +6 -27
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroup/FieldGroup.tsx +15 -11
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx +7 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldValueList/FieldValueList.tsx +18 -12
- package/templates/react-sdk-reference/src/components/designSystemExtension/Operator/Operator.tsx +27 -25
- package/templates/react-sdk-reference/src/components/designSystemExtension/Pulse/Pulse.tsx +4 -4
- package/templates/react-sdk-reference/src/components/designSystemExtension/RichTextEditor/RichTextEditor.tsx +8 -40
- package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +9 -9
- package/templates/react-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +26 -20
- package/templates/react-sdk-reference/src/components/field/CancelAlert/CancelAlert.tsx +35 -17
- package/templates/react-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +27 -25
- package/templates/react-sdk-reference/src/components/field/Currency/Currency.tsx +10 -6
- package/templates/react-sdk-reference/src/components/field/Currency/currency-utils.ts +1 -1
- package/templates/react-sdk-reference/src/components/field/Date/Date.tsx +20 -7
- package/templates/react-sdk-reference/src/components/field/DateTime/DateTime.tsx +23 -8
- package/templates/react-sdk-reference/src/components/field/Decimal/Decimal.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +45 -25
- package/templates/react-sdk-reference/src/components/field/Email/Email.tsx +8 -8
- package/templates/react-sdk-reference/src/components/field/Group/Group.tsx +1 -1
- package/templates/react-sdk-reference/src/components/field/Integer/Integer.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/Location/Location.tsx +21 -16
- package/templates/react-sdk-reference/src/components/field/Multiselect/Multiselect.tsx +42 -27
- package/templates/react-sdk-reference/src/components/field/Multiselect/utils.ts +43 -29
- package/templates/react-sdk-reference/src/components/field/ObjectReference/ObjectReference.tsx +53 -30
- package/templates/react-sdk-reference/src/components/field/ObjectReference/utils.ts +12 -11
- package/templates/react-sdk-reference/src/components/field/Percentage/Percentage.tsx +6 -6
- package/templates/react-sdk-reference/src/components/field/Phone/Phone.tsx +12 -12
- package/templates/react-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +38 -16
- package/templates/react-sdk-reference/src/components/field/RichText/RichText.tsx +17 -4
- package/templates/react-sdk-reference/src/components/field/ScalarList/ScalarList.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/SelectableCard/SelectableCard.tsx +31 -18
- package/templates/react-sdk-reference/src/components/field/SelectableCard/utils.tsx +28 -20
- package/templates/react-sdk-reference/src/components/field/SemanticLink/SemanticLink.tsx +28 -19
- package/templates/react-sdk-reference/src/components/field/SemanticLink/utils.ts +3 -1
- package/templates/react-sdk-reference/src/components/field/TextArea/TextArea.tsx +4 -4
- package/templates/react-sdk-reference/src/components/field/TextInput/TextInput.tsx +4 -4
- package/templates/react-sdk-reference/src/components/field/Time/Time.tsx +20 -7
- package/templates/react-sdk-reference/src/components/field/URL/URL.tsx +7 -7
- package/templates/react-sdk-reference/src/components/field/UserReference/UserReference.tsx +14 -14
- package/templates/react-sdk-reference/src/components/field/UserReference/UserReferenceUtils.ts +2 -2
- package/templates/react-sdk-reference/src/components/helpers/case-utils.tsx +5 -5
- package/templates/react-sdk-reference/src/components/helpers/data_page.ts +3 -3
- package/templates/react-sdk-reference/src/components/helpers/date-format-utils.ts +5 -5
- package/templates/react-sdk-reference/src/components/helpers/field-group-utils.ts +2 -7
- package/templates/react-sdk-reference/src/components/helpers/formatters/Boolean.ts +9 -3
- package/templates/react-sdk-reference/src/components/helpers/formatters/Currency.ts +18 -6
- package/templates/react-sdk-reference/src/components/helpers/formatters/CurrencyMap.ts +168 -168
- package/templates/react-sdk-reference/src/components/helpers/formatters/Date.ts +5 -5
- package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +8 -5
- package/templates/react-sdk-reference/src/components/helpers/instructions-utils.ts +2 -2
- package/templates/react-sdk-reference/src/components/helpers/simpleTableHelpers.ts +54 -30
- package/templates/react-sdk-reference/src/components/helpers/state-utils.tsx +5 -2
- package/templates/react-sdk-reference/src/components/helpers/template-utils.ts +5 -4
- package/templates/react-sdk-reference/src/components/helpers/utils.ts +3 -3
- package/templates/react-sdk-reference/src/components/helpers/versionHelpers.ts +3 -1
- package/templates/react-sdk-reference/src/components/index.ts +1 -4
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/AdvancedSearch.tsx +18 -10
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroup/persistUtils.ts +3 -3
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +26 -90
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/hooks.ts +8 -5
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/utils.ts +8 -4
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/TemplateContext.ts +1 -1
- package/templates/react-sdk-reference/src/components/template/AppShell/AppShell.tsx +28 -19
- package/templates/react-sdk-reference/src/components/template/BannerPage/BannerPage.tsx +2 -2
- package/templates/react-sdk-reference/src/components/template/CaseSummary/CaseSummary.tsx +5 -5
- package/templates/react-sdk-reference/src/components/template/CaseView/CaseView.tsx +35 -16
- package/templates/react-sdk-reference/src/components/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +10 -10
- package/templates/react-sdk-reference/src/components/template/Confirmation/Confirmation.tsx +12 -26
- package/templates/react-sdk-reference/src/components/template/DataReference/DataReference.tsx +41 -124
- package/templates/react-sdk-reference/src/components/template/DataReference/DataReferenceAdvancedSearchContext.ts +2 -2
- package/templates/react-sdk-reference/src/components/template/DataReference/SearchForm.tsx +18 -78
- package/templates/react-sdk-reference/src/components/template/DataReference/utils.ts +18 -12
- package/templates/react-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +4 -12
- package/templates/react-sdk-reference/src/components/template/DefaultForm/utils/index.ts +3 -3
- package/templates/react-sdk-reference/src/components/template/DefaultPage/DefaultPage.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/Details/Details/Details.tsx +6 -8
- package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +7 -14
- package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +7 -14
- package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/DynamicTabs.tsx +16 -8
- package/templates/react-sdk-reference/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +7 -4
- package/templates/react-sdk-reference/src/components/template/HierarchicalForm/HierarchicalForm.tsx +20 -5
- package/templates/react-sdk-reference/src/components/template/HierarchicalForm/hooks.ts +35 -77
- package/templates/react-sdk-reference/src/components/template/InlineDashboard/InlineDashboard.tsx +10 -10
- package/templates/react-sdk-reference/src/components/template/ListView/DefaultViewMeta.ts +31 -31
- package/templates/react-sdk-reference/src/components/template/ListView/ListView.tsx +173 -133
- package/templates/react-sdk-reference/src/components/template/ListView/hooks.ts +17 -10
- package/templates/react-sdk-reference/src/components/template/ListView/utils.ts +64 -51
- package/templates/react-sdk-reference/src/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/NarrowWide.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +8 -18
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +7 -1
- package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/OneColumn.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/OneColumnTab.tsx +1 -1
- package/templates/react-sdk-reference/src/components/template/PromotedFilters/PromotedFilters.tsx +13 -40
- package/templates/react-sdk-reference/src/components/template/SelfServiceCaseView/SelfServiceCaseView.tsx +19 -16
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/SimpleTable.tsx +8 -7
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +84 -203
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +15 -5
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.tsx +15 -29
- package/templates/react-sdk-reference/src/components/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +7 -7
- package/templates/react-sdk-reference/src/components/template/SubTabs/SubTabs.tsx +1 -1
- package/templates/react-sdk-reference/src/components/template/SubTabs/tabUtils.ts +13 -11
- package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/TwoColumn.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/WideNarrow.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +13 -24
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +7 -1
- package/templates/react-sdk-reference/src/components/template/WssNavBar/WssNavBar.tsx +25 -25
- package/templates/react-sdk-reference/src/components/template/utils.tsx +6 -6
- package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/AppAnnouncement.tsx +9 -9
- package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.tsx +125 -79
- package/templates/react-sdk-reference/src/components/widget/Attachment/AttachmentUtils.ts +58 -33
- package/templates/react-sdk-reference/src/components/widget/CaseHistory/CaseHistory.tsx +14 -12
- package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +19 -7
- package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/FileUtility.tsx +137 -107
- package/templates/react-sdk-reference/src/components/widget/Followers/Followers.tsx +4 -4
- package/templates/react-sdk-reference/src/components/widget/QuickCreate/QuickCreate.tsx +15 -11
- package/templates/react-sdk-reference/src/components/widget/SummaryItem/SummaryItem.tsx +25 -18
- package/templates/react-sdk-reference/src/components/widget/SummaryList/SummaryList.tsx +7 -2
- package/templates/react-sdk-reference/src/components/widget/ToDo/ToDo.tsx +30 -116
- package/templates/react-sdk-reference/src/main.tsx +1 -1
- package/templates/react-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/vite.config.ts +51 -26
- package/templates/wc-sdk-reference/package.json +3 -3
- package/templates/wc-sdk-reference/src/index.ts +10 -10
- package/templates/wc-sdk-reference/tsconfig.json +1 -0
- package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
- package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
- package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -71
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -92
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -87
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -144
- package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +0 -111
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -149
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -126
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -139
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -151
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -124
- package/templates/react-sdk-reference/.claude/prompts/identify-components.md +0 -105
- package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
- package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +0 -154
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +0 -144
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +0 -111
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -115
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Operator.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -83
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -206
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -289
- package/templates/react-sdk-reference/.claude/skills/field-components.md +0 -294
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -112
- package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +0 -203
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -158
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -99
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -103
- package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +0 -98
- package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +0 -90
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -87
- package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +0 -136
- package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +0 -164
- package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +0 -164
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -92
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -110
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -146
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -138
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -216
- package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +0 -148
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +0 -96
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -104
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/field-skills/UserReference.md +0 -180
- package/templates/react-sdk-reference/.claude/skills/run-and-verify.md +0 -68
- package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -322
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -144
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -122
- package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +0 -83
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -100
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -126
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/template-skills/DataReference.md +0 -120
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +0 -102
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +0 -110
- package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -95
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +0 -78
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -78
- package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +0 -104
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +0 -68
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -139
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +0 -141
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +0 -127
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -103
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -79
- package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/widget-components.md +0 -271
- package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +0 -146
- package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -200
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Followers.md +0 -99
- package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/widget-skills/SummaryItem.md +0 -167
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -190
- package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
- package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
- package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
- package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +0 -111
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
- package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
- package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
- package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
- package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
- package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +0 -73
- package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +0 -149
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -111
- package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +0 -154
- package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +0 -131
- package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +0 -144
- package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +0 -156
- package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +0 -129
- package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
- package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
- package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/AlertBanner.md +0 -135
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -149
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -154
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -144
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +0 -131
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -111
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +0 -115
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -149
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +0 -83
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +0 -206
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +0 -135
- package/templates/react-sdk-reference/.github/skills/design-system-extension.md +0 -289
- package/templates/react-sdk-reference/.github/skills/field-components.md +0 -294
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -112
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -203
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -158
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -106
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -99
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -103
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -98
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -114
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -107
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -90
- package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +0 -87
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -136
- package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +0 -164
- package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +0 -164
- package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +0 -92
- package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +0 -110
- package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +0 -146
- package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +0 -138
- package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +0 -124
- package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +0 -216
- package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +0 -148
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -96
- package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +0 -101
- package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +0 -104
- package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +0 -88
- package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +0 -85
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -180
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -68
- package/templates/react-sdk-reference/.github/skills/template-components.md +0 -322
- package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +0 -144
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -122
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -83
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +0 -100
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -126
- package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +0 -107
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -120
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -102
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +0 -110
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -88
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +0 -95
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -78
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +0 -78
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -101
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -109
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -113
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -104
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -85
- package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +0 -68
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -139
- package/templates/react-sdk-reference/.github/skills/template-skills/MultiReferenceReadOnly.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -141
- package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +0 -109
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -135
- package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +0 -127
- package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +0 -103
- package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +0 -79
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -150
- package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +0 -135
- package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -271
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -82
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -146
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -107
- package/templates/react-sdk-reference/.github/skills/widget-skills/FileUtility.md +0 -200
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -99
- package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +0 -114
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -167
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -190
- package/templates/react-sdk-reference/AGENTS.md +0 -247
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# Skill: Phone
|
|
2
|
+
|
|
3
|
+
Telephone input field with country code selector, binds to a Pega case property.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, props interface, display modes, event handling, and registration patterns common to ALL field components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a telephone number input with an integrated country code selector (flag + dial code). Stores the phone number in E.164 format (e.g., `+15551234567`). Uses a specialized phone input library for the country picker. Separate handling for read-only mode (keeps country picker but sets input as read-only).
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `Phone`
|
|
16
|
+
- **Type / Subtype:** `Field` / `Text-Phone`
|
|
17
|
+
- **Registration key:** `Phone` (in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
No props beyond `PConnFieldProps`. Import type as:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Component Skeleton
|
|
28
|
+
|
|
29
|
+
Follow this exact structure. Replace `<PhoneInputWidget>` with equivalents from your chosen design system / phone library.
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { useEffect, useState } from 'react';
|
|
33
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
34
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
35
|
+
import handleEvent from '../../helpers/event-utils';
|
|
36
|
+
|
|
37
|
+
interface PhoneProps extends PConnFieldProps {}
|
|
38
|
+
|
|
39
|
+
export default function Phone(props: PhoneProps) {
|
|
40
|
+
// 1. Registry lookup
|
|
41
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
42
|
+
|
|
43
|
+
// 2. Destructure props — note: onChange is used in readOnly mode
|
|
44
|
+
const {
|
|
45
|
+
getPConnect, label, required, disabled, value = '',
|
|
46
|
+
validatemessage, status, onChange, readOnly, testId,
|
|
47
|
+
helperText, displayMode, hideLabel, placeholder,
|
|
48
|
+
} = props;
|
|
49
|
+
|
|
50
|
+
// 3. PConnect setup
|
|
51
|
+
const pConn = getPConnect();
|
|
52
|
+
const actions = pConn.getActionsApi();
|
|
53
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
54
|
+
|
|
55
|
+
// 4. State + sync
|
|
56
|
+
const [inputValue, setInputValue] = useState(value);
|
|
57
|
+
useEffect(() => setInputValue(value), [value]);
|
|
58
|
+
|
|
59
|
+
// 5. Derived values
|
|
60
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
61
|
+
let testProp = { 'data-test-id': testId };
|
|
62
|
+
|
|
63
|
+
// 6. Display mode returns
|
|
64
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
65
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} />;
|
|
66
|
+
}
|
|
67
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
68
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} variant="stacked" />;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// 7. Read-only return — keeps phone widget but disables dropdown + sets input readOnly
|
|
72
|
+
// Uses onChange from PROPS (not local handler), value from PROPS (not state)
|
|
73
|
+
if (readOnly) {
|
|
74
|
+
return (
|
|
75
|
+
<div>
|
|
76
|
+
<PhoneInputWidget
|
|
77
|
+
defaultCountry="US" value={value} onChange={onChange}
|
|
78
|
+
disableDropdown={true}
|
|
79
|
+
slotProps={{ input: { readOnly: true, ...testProp } }}
|
|
80
|
+
/* + label, helperText, required, disabled, error, size, placeholder */
|
|
81
|
+
/>
|
|
82
|
+
</div>
|
|
83
|
+
);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// 8. Editable handlers
|
|
87
|
+
const handleChange = (inputVal) => { setInputValue(inputVal); };
|
|
88
|
+
const handleBlur = (event) => {
|
|
89
|
+
const phoneValue = event?.target?.value;
|
|
90
|
+
let phoneNumber = phoneValue.split(' ').slice(1).join();
|
|
91
|
+
phoneNumber = phoneNumber ? `+${phoneValue.replace(/\\D+/g, '')}` : '';
|
|
92
|
+
handleEvent(actions, 'changeNblur', propName, phoneNumber);
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
// 9. Main render — phone input with country selector
|
|
96
|
+
// Key props:
|
|
97
|
+
// - fullWidth, variant: 'outlined', size: 'small'
|
|
98
|
+
// - defaultCountry: 'US'
|
|
99
|
+
// - value: inputValue, onChange: handleChange
|
|
100
|
+
// - onBlur: !readOnly ? handleBlur : undefined
|
|
101
|
+
// - label, helperText: helperTextToDisplay, placeholder: placeholder ?? ''
|
|
102
|
+
// - required, disabled, error: status === 'error'
|
|
103
|
+
// - slotProps: { input: { ...testProp } }
|
|
104
|
+
return <PhoneInputWidget ... />;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Behavioral Contract
|
|
109
|
+
|
|
110
|
+
1. **Local state:** Maintain `inputValue` (string). Initialize from `value` prop. `useEffect` watching `value` → `setInputValue(value)`.
|
|
111
|
+
2. **Default country:** `'US'` — the country code selector defaults to United States.
|
|
112
|
+
3. **On change (editable):** Update local `inputValue` state with the formatted phone string from the library callback.
|
|
113
|
+
4. **On blur (editable):** Extract and normalize the phone number to E.164 format:
|
|
114
|
+
```
|
|
115
|
+
const phoneValue = event?.target?.value
|
|
116
|
+
let phoneNumber = phoneValue.split(' ').slice(1).join() // remove country code prefix
|
|
117
|
+
phoneNumber = phoneNumber ? `+${phoneValue.replace(/\D+/g, '')}` : ''
|
|
118
|
+
handleEvent(actions, 'changeNblur', propName, phoneNumber)
|
|
119
|
+
```
|
|
120
|
+
5. **Read-only:** Render the phone input with `readOnly: true` on the input element and `disableDropdown: true` (country picker dropdown disabled). Keep the country flag/code visible but non-interactive. `onBlur` and `onChange` are NOT committed — use the `onChange` prop from the component itself but disable dropdown.
|
|
121
|
+
6. **testId:** Pass as attribute on the input element.
|
|
122
|
+
|
|
123
|
+
## Display Mode Rendering
|
|
124
|
+
|
|
125
|
+
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={value} />` — raw phone string.
|
|
126
|
+
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />`.
|
|
127
|
+
|
|
128
|
+
## Read-Only Rendering
|
|
129
|
+
|
|
130
|
+
Render phone input with `readOnly: true` and `disableDropdown: true` on the country picker. The `onChange` prop is `onChange` from `PConnFieldProps` (passed through). Wrapped in a `<div>`.
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
<div>
|
|
134
|
+
<PhoneInput
|
|
135
|
+
readOnly: true on input
|
|
136
|
+
disableDropdown={true}
|
|
137
|
+
onChange={onChange} // from props — not local handler
|
|
138
|
+
value={value}
|
|
139
|
+
defaultCountry='US'
|
|
140
|
+
/>
|
|
141
|
+
</div>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Visual Specifications
|
|
145
|
+
|
|
146
|
+
| Property | Editable | Read-only |
|
|
147
|
+
| ---------------- | ------------------------------ | ----------------------------------------- |
|
|
148
|
+
| Width | 100% | 100% |
|
|
149
|
+
| Size | Small | Small |
|
|
150
|
+
| Variant | Outlined | Outlined (same, with readOnly input) |
|
|
151
|
+
| Country selector | Dropdown with flag + dial code | Flag + dial code shown, dropdown disabled |
|
|
152
|
+
| Default country | US (`+1`) | US (`+1`) |
|
|
153
|
+
| Error state | Red border + red helper text | — |
|
|
154
|
+
| Helper text | Below input | Below input |
|
|
155
|
+
|
|
156
|
+
**CSS-only notes:**
|
|
157
|
+
For a CSS-only implementation, create a two-part input:
|
|
158
|
+
|
|
159
|
+
```css
|
|
160
|
+
.phone-input-wrapper {
|
|
161
|
+
display: flex;
|
|
162
|
+
border: 1px solid rgba(0, 0, 0, 0.23);
|
|
163
|
+
border-radius: 4px;
|
|
164
|
+
overflow: hidden;
|
|
165
|
+
}
|
|
166
|
+
.phone-country-select {
|
|
167
|
+
border: none;
|
|
168
|
+
border-right: 1px solid rgba(0, 0, 0, 0.23);
|
|
169
|
+
padding: 0 8px;
|
|
170
|
+
background: none;
|
|
171
|
+
}
|
|
172
|
+
.phone-number-input {
|
|
173
|
+
flex: 1;
|
|
174
|
+
border: none;
|
|
175
|
+
padding: 8px 12px;
|
|
176
|
+
font-size: 0.875rem;
|
|
177
|
+
outline: none;
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Edge Cases & Special Logic
|
|
182
|
+
|
|
183
|
+
- **E.164 normalization on blur:** Strip all non-digit chars from the full value (including country code), then prepend `+`. If the result after stripping the country part is empty, store `''`.
|
|
184
|
+
- **Read-only uses `onChange` from props** (not the local `handleChange`) — this is the platform-wired handler, not our local state updater. Do NOT call `handleEvent` in read-only mode.
|
|
185
|
+
- `disableDropdown: true` in read-only — prevents country switching.
|
|
186
|
+
- The library provides the formatted display value (e.g., `+1 (555) 123-4567`) in the callback; we normalize it to E.164 only on blur.
|
|
187
|
+
|
|
188
|
+
## Dependencies
|
|
189
|
+
|
|
190
|
+
- A phone input library with country code selector and E.164 formatting support (e.g., `mui-tel-input`).
|
|
191
|
+
- `handleEvent` from `../../helpers/event-utils`.
|
|
192
|
+
- `getComponentFromRegistry('FieldValueList')` for display modes.
|
|
193
|
+
|
|
194
|
+
**For CSS-only / non-library implementations:**
|
|
195
|
+
|
|
196
|
+
- Use a `<select>` for country code + a text `<input>` for the number.
|
|
197
|
+
- On blur, combine dial code + number and strip non-digits, then format as `+{digits}`.
|
|
198
|
+
|
|
199
|
+
## Design System Mapping
|
|
200
|
+
|
|
201
|
+
**UI control type:** Telephone input with integrated country code selector.
|
|
202
|
+
|
|
203
|
+
Listed design systems are examples only.
|
|
204
|
+
|
|
205
|
+
| Design System | Recommended Component |
|
|
206
|
+
| ------------------ | -------------------------------------------------- |
|
|
207
|
+
| Default (CSS only) | `<select>` (country) + `<input type="tel">` |
|
|
208
|
+
| MUI | `<MuiTelInput>` from `mui-tel-input` |
|
|
209
|
+
| Ant Design | `<Input addonBefore={countrySelect}>` |
|
|
210
|
+
| Chakra UI | `<InputGroup>` with `<InputLeftAddon>` for country |
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# Skill: RadioButtons
|
|
2
|
+
|
|
3
|
+
Radio button group field with optional card-style variant and localized option labels.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, props interface, display modes, event handling, and registration patterns common to ALL field components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a group of radio buttons for single-selection from a list of options. Supports standard radio button layout (inline or stacked) and a card-style visual variant. Option labels are localized. Commits value immediately on selection.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `RadioButtons`
|
|
16
|
+
- **Type / Subtype:** `Field` / `Picklist-Radio`
|
|
17
|
+
- **Registration key:** `RadioButtons` (in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Description |
|
|
22
|
+
| ---------------------- | -------------------- | ------------------------------------------------------------------------------- |
|
|
23
|
+
| `inline` | `boolean` | If `true`, render radio buttons in a horizontal row; if `false`, vertical stack |
|
|
24
|
+
| `fieldMetadata` | `any` (optional) | For localization context (tableType, datasource name, display text property) |
|
|
25
|
+
| `variant` | `string` (optional) | `'card'` — renders options as selectable cards instead of radio buttons |
|
|
26
|
+
| `hideFieldLabels` | `boolean` (optional) | Hide field labels inside card variant |
|
|
27
|
+
| `additionalProps` | `any` (optional) | Extra props passed to `SelectableCard` in card variant |
|
|
28
|
+
| `imagePosition` | `string` (optional) | Card image position: `'inline-start'`, `'inline-end'`, or block |
|
|
29
|
+
| `imageSize` | `string` (optional) | Card image size |
|
|
30
|
+
| `showImageDescription` | `boolean` (optional) | Whether to show image description in cards |
|
|
31
|
+
| `datasource` | `any` (optional) | Datasource for card variant |
|
|
32
|
+
|
|
33
|
+
## Component Skeleton
|
|
34
|
+
|
|
35
|
+
Follow this exact structure. Includes localization metadata derivation (same pattern as Dropdown).
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { useState, useEffect } from 'react';
|
|
39
|
+
import Utils from '../../helpers/utils';
|
|
40
|
+
import handleEvent from '../../helpers/event-utils';
|
|
41
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
42
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
43
|
+
|
|
44
|
+
interface RadioButtonsProps extends PConnFieldProps {
|
|
45
|
+
inline: boolean;
|
|
46
|
+
fieldMetadata?: any;
|
|
47
|
+
variant?: string;
|
|
48
|
+
hideFieldLabels?: boolean;
|
|
49
|
+
additionalProps?: any;
|
|
50
|
+
imagePosition?: string;
|
|
51
|
+
imageSize?: string;
|
|
52
|
+
showImageDescription?: boolean;
|
|
53
|
+
datasource?: any;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export default function RadioButtons(props: RadioButtonsProps) {
|
|
57
|
+
// 1. Registry lookups
|
|
58
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
59
|
+
const SelectableCard = getComponentFromRegistry('SelectableCard');
|
|
60
|
+
|
|
61
|
+
// 2. Destructure props
|
|
62
|
+
const {
|
|
63
|
+
getPConnect, label, value = '', readOnly, validatemessage,
|
|
64
|
+
helperText, status, required, inline, displayMode, hideLabel,
|
|
65
|
+
fieldMetadata, variant, hideFieldLabels, additionalProps,
|
|
66
|
+
datasource, imagePosition, imageSize, showImageDescription,
|
|
67
|
+
} = props;
|
|
68
|
+
|
|
69
|
+
// 3. State
|
|
70
|
+
const [theSelectedButton, setSelectedButton] = useState(value);
|
|
71
|
+
|
|
72
|
+
// 4. PConnect setup
|
|
73
|
+
const thePConn = getPConnect();
|
|
74
|
+
const theConfigProps = thePConn.getConfigProps();
|
|
75
|
+
const actionsApi = thePConn.getActionsApi();
|
|
76
|
+
const propName = (thePConn.getStateProps() as any).value;
|
|
77
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
78
|
+
const className = thePConn.getCaseInfo().getClassName();
|
|
79
|
+
|
|
80
|
+
// 5. Localization keys (same pattern as Dropdown)
|
|
81
|
+
let configProperty = (thePConn.getRawMetadata() as any)?.config?.value || '';
|
|
82
|
+
configProperty = configProperty.startsWith('@P') ? configProperty.substring(3) : configProperty;
|
|
83
|
+
configProperty = configProperty.startsWith('.') ? configProperty.substring(1) : configProperty;
|
|
84
|
+
const metaData = Array.isArray(fieldMetadata)
|
|
85
|
+
? fieldMetadata.filter(f => f?.classID === className)[0] : fieldMetadata;
|
|
86
|
+
let displayName = metaData?.datasource?.propertyForDisplayText;
|
|
87
|
+
displayName = displayName?.slice(displayName.lastIndexOf('.') + 1);
|
|
88
|
+
const localeContext = metaData?.datasource?.tableType === 'DataPage' ? 'datapage' : 'associated';
|
|
89
|
+
const localeClass = localeContext === 'datapage' ? '@baseclass' : className;
|
|
90
|
+
const localeName = localeContext === 'datapage' ? metaData?.datasource?.name : configProperty;
|
|
91
|
+
const localePath = localeContext === 'datapage' ? displayName : localeName;
|
|
92
|
+
|
|
93
|
+
// 6. Load options (synchronous)
|
|
94
|
+
const theOptions = Utils.getOptionList(theConfigProps, thePConn.getDataObject(''));
|
|
95
|
+
|
|
96
|
+
// 7. useEffect: sync selected from value — deps: [value]
|
|
97
|
+
useEffect(() => { setSelectedButton(value); }, [value]);
|
|
98
|
+
|
|
99
|
+
// 8. Display mode returns (with localization)
|
|
100
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
101
|
+
return <FieldValueList name={hideLabel ? '' : label}
|
|
102
|
+
value={thePConn.getLocalizedValue(value, localePath,
|
|
103
|
+
thePConn.getLocaleRuleNameFromKeys(localeClass, localeContext, localeName))} />;
|
|
104
|
+
}
|
|
105
|
+
if (displayMode === 'STACKED_LARGE_VAL') { /* same with variant="stacked" */ }
|
|
106
|
+
|
|
107
|
+
// 9. Event handlers
|
|
108
|
+
const handleChange = (event) => {
|
|
109
|
+
handleEvent(actionsApi, 'changeNblur', propName, event.target.value);
|
|
110
|
+
};
|
|
111
|
+
const handleBlur = (event) => {
|
|
112
|
+
thePConn.getValidationApi().validate(event.target.value, '');
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// 10. Card variant return (variant === 'card')
|
|
116
|
+
// → heading + grid + SelectableCard with type='radio'
|
|
117
|
+
|
|
118
|
+
// 11. Standard variant return
|
|
119
|
+
// FormControl > FormLabel > RadioGroup(row={inline}) >
|
|
120
|
+
// FormControlLabel per option (localized label) >
|
|
121
|
+
// FormHelperText
|
|
122
|
+
return <RadioGroupWidget ... />;
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Behavioral Contract
|
|
127
|
+
|
|
128
|
+
1. **Local state:** Maintain `theSelectedButton` (string). Initialize from `value` prop. `useEffect` watching `value` → `setSelectedButton(value)`.
|
|
129
|
+
2. **Options:** Load options from `Utils.getOptionList(theConfigProps, pConn.getDataObject(''))` — returns `Array<{key: string, value: string}>`.
|
|
130
|
+
3. **On change:** Commit via `handleEvent(actionsApi, 'changeNblur', propName, event.target.value)`.
|
|
131
|
+
4. **On blur:** Validate via `pConn.getValidationApi().validate(event.target.value, '')`. Second arg is empty string (optional parameter).
|
|
132
|
+
5. **Inline layout:** Use `row={inline}` on the radio group — horizontal when `inline=true`.
|
|
133
|
+
6. **Read-only:** Disable radio inputs (set `disabled` to `readOnly` value) — do NOT use a separate read-only component.
|
|
134
|
+
7. **Localization:** Option labels are localized via `pConn.getLocalizedValue(option.value, localePath, localeRuleName)`.
|
|
135
|
+
8. **Localization keys derivation:**
|
|
136
|
+
- Strip `@P ` prefix and leading `.` from `configProperty` (from `pConn.getRawMetadata()`).
|
|
137
|
+
- `localeContext`: `'datapage'` if `fieldMetadata.datasource.tableType === 'DataPage'`, else `'associated'`.
|
|
138
|
+
- `localeClass`: `'@baseclass'` for datapage, else `className`.
|
|
139
|
+
- `localeName`: datapage name or property name.
|
|
140
|
+
- `localePath`: display text property or localeName.
|
|
141
|
+
|
|
142
|
+
### Variant: Standard (default)
|
|
143
|
+
|
|
144
|
+
Render a radio group with `FormControl > FormLabel > RadioGroup > FormControlLabel (Radio)` pattern:
|
|
145
|
+
|
|
146
|
+
- `FormLabel`: the `label` prop
|
|
147
|
+
- `RadioGroup`: `value={theSelectedButton}`, `onChange={handleChange}`, `onBlur`, `row={inline}`
|
|
148
|
+
- Each `FormControlLabel`: `value={option.key}`, `label={localizedLabel}`, `control={<Radio color='primary' disabled={readOnly} />}`
|
|
149
|
+
- Wrap in `FormHelperText` for `helperTextToDisplay`
|
|
150
|
+
- `error={status === 'error'}` on `FormControl`
|
|
151
|
+
|
|
152
|
+
### Variant: Card (`variant === 'card'`)
|
|
153
|
+
|
|
154
|
+
Render a heading (`<h4>`) with the `label`, then delegate to `SelectableCard` component:
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
<div>
|
|
158
|
+
<h4 style={{ marginTop: 0, marginBottom: 0 }}>{label}</h4>
|
|
159
|
+
<div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(200px, 100%), 1fr))', gap: '1rem' }}>
|
|
160
|
+
<SelectableCard
|
|
161
|
+
type='radio'
|
|
162
|
+
dataSource={datasource}
|
|
163
|
+
recordKey={stateProps.value?.split('.').pop()}
|
|
164
|
+
cardLabel={stateProps.primaryField?.split('.').pop()}
|
|
165
|
+
radioBtnValue={value}
|
|
166
|
+
onChange={handleChange}
|
|
167
|
+
image={{ imagePosition, imageSize, showImageDescription, imageField, imageDescription }}
|
|
168
|
+
setIsRadioCardSelected={displayMode !== 'DISPLAY_ONLY' ? setSelectedButton : undefined}
|
|
169
|
+
hideFieldLabels={hideFieldLabels}
|
|
170
|
+
additionalProps={additionalProps}
|
|
171
|
+
getPConnect={getPConnect}
|
|
172
|
+
/>
|
|
173
|
+
</div>
|
|
174
|
+
</div>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
- `imageField`: `stateProps.image?.split('.').pop()`
|
|
178
|
+
- `imageDescription`: `stateProps.imageDescription?.split('.').pop()`
|
|
179
|
+
|
|
180
|
+
## Display Mode Rendering
|
|
181
|
+
|
|
182
|
+
Both modes render the localized display label of the selected option:
|
|
183
|
+
|
|
184
|
+
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={localizedValue} />`
|
|
185
|
+
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={localizedValue} variant='stacked' />`
|
|
186
|
+
|
|
187
|
+
Where `localizedValue = pConn.getLocalizedValue(value, localePath, localeRuleName)`.
|
|
188
|
+
|
|
189
|
+
## Visual Specifications
|
|
190
|
+
|
|
191
|
+
### Standard Variant
|
|
192
|
+
|
|
193
|
+
| Property | Value |
|
|
194
|
+
| ------------------- | -------------------------------------------------------------------- |
|
|
195
|
+
| Layout | Vertical stack (or horizontal row when `inline=true`) |
|
|
196
|
+
| Radio indicator | Circle button with filled inner circle when selected |
|
|
197
|
+
| Label | Label text to the right of the radio button (`labelPlacement='end'`) |
|
|
198
|
+
| Group label | `<legend>` / `<FormLabel>` above the group |
|
|
199
|
+
| Error state | Group border or text in red |
|
|
200
|
+
| Helper text | Below the group |
|
|
201
|
+
| Disabled (readOnly) | Greyed-out radio buttons, not-allowed cursor |
|
|
202
|
+
|
|
203
|
+
**CSS-only notes:**
|
|
204
|
+
|
|
205
|
+
```css
|
|
206
|
+
.radio-group {
|
|
207
|
+
display: flex;
|
|
208
|
+
flex-direction: column;
|
|
209
|
+
gap: 4px;
|
|
210
|
+
}
|
|
211
|
+
.radio-group.inline {
|
|
212
|
+
flex-direction: row;
|
|
213
|
+
flex-wrap: wrap;
|
|
214
|
+
gap: 8px;
|
|
215
|
+
}
|
|
216
|
+
.radio-label {
|
|
217
|
+
display: flex;
|
|
218
|
+
align-items: center;
|
|
219
|
+
gap: 8px;
|
|
220
|
+
cursor: pointer;
|
|
221
|
+
}
|
|
222
|
+
input[type='radio']:disabled {
|
|
223
|
+
opacity: 0.38;
|
|
224
|
+
cursor: default;
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Card Variant
|
|
229
|
+
|
|
230
|
+
| Property | Value |
|
|
231
|
+
| -------- | ----------------------------------------------------------------------- |
|
|
232
|
+
| Layout | CSS Grid: `repeat(auto-fit, minmax(min(200px, 100%), 1fr))`, gap `1rem` |
|
|
233
|
+
| Card | Elevated card with click handler that activates the radio |
|
|
234
|
+
| Heading | `<h4>` with `marginTop: 0, marginBottom: 0` above grid |
|
|
235
|
+
|
|
236
|
+
## Edge Cases & Special Logic
|
|
237
|
+
|
|
238
|
+
- `theOptions` is loaded synchronously from `Utils.getOptionList()` on every render — no async fetching.
|
|
239
|
+
- `theSelectedButton` tracks the selected key locally and syncs from `value` prop via `useEffect`.
|
|
240
|
+
- Card variant uses `setIsRadioCardSelected` callback to inform parent when a radio card is selected.
|
|
241
|
+
|
|
242
|
+
## Dependencies
|
|
243
|
+
|
|
244
|
+
- `Utils.getOptionList()` from `../../helpers/utils`.
|
|
245
|
+
- `handleEvent` from `../../helpers/event-utils`.
|
|
246
|
+
- `getComponentFromRegistry('FieldValueList')` for display modes.
|
|
247
|
+
- `getComponentFromRegistry('SelectableCard')` for card variant.
|
|
248
|
+
|
|
249
|
+
## Design System Mapping
|
|
250
|
+
|
|
251
|
+
**UI control type:** Radio button group (single selection).
|
|
252
|
+
|
|
253
|
+
Listed design systems are examples only.
|
|
254
|
+
|
|
255
|
+
| Design System | Recommended Component |
|
|
256
|
+
| ------------------ | ------------------------------------------------------------ |
|
|
257
|
+
| Default (CSS only) | `<input type="radio">` with `<label>` per option |
|
|
258
|
+
| MUI | `<RadioGroup>` with `<FormControlLabel control={<Radio />}>` |
|
|
259
|
+
| Ant Design | `<Radio.Group>` with `<Radio>` options |
|
|
260
|
+
| Chakra UI | `<RadioGroup>` with `<Radio>` items |
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Field component skill: RichText
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: RichText
|
|
7
2
|
|
|
8
3
|
Rich text editor field with HTML content support, binds to a Pega case property.
|
|
@@ -23,10 +18,95 @@ Renders a rich text (WYSIWYG) editor for HTML content. Uses a registry-resolved
|
|
|
23
18
|
|
|
24
19
|
## Props (component-specific)
|
|
25
20
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
21
|
+
| Prop | Type | Description |
|
|
22
|
+
| ----------------- | ------------------- | --------------------------------------------- |
|
|
28
23
|
| `additionalProps` | `object` (optional) | Extra props forwarded to the `RichTextEditor` |
|
|
29
24
|
|
|
25
|
+
## Component Skeleton
|
|
26
|
+
|
|
27
|
+
Follow this exact structure. The `RichTextEditor` is resolved from the registry — it wraps whatever WYSIWYG library you choose.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { useRef } from 'react';
|
|
31
|
+
import handleEvent from '../../helpers/event-utils';
|
|
32
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
33
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
34
|
+
import './RichText.css';
|
|
35
|
+
|
|
36
|
+
interface RichTextProps extends PConnFieldProps {
|
|
37
|
+
additionalProps?: object;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default function RichText(props: RichTextProps) {
|
|
41
|
+
// 1. Registry lookups
|
|
42
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
43
|
+
const RichTextEditor = getComponentFromRegistry('RichTextEditor');
|
|
44
|
+
|
|
45
|
+
// 2. Destructure props
|
|
46
|
+
const {
|
|
47
|
+
getPConnect, value, placeholder, validatemessage,
|
|
48
|
+
label, hideLabel, helperText, testId, displayMode, additionalProps,
|
|
49
|
+
} = props;
|
|
50
|
+
const pConn = getPConnect();
|
|
51
|
+
const editorRef: any = useRef(null);
|
|
52
|
+
|
|
53
|
+
// 3. Props coercion — Pega may pass 'true'/'false' strings
|
|
54
|
+
let { readOnly, required, disabled } = props;
|
|
55
|
+
[readOnly, required, disabled] = [readOnly, required, disabled].map(
|
|
56
|
+
(prop) => prop === true || (typeof prop === 'string' && prop === 'true'),
|
|
57
|
+
);
|
|
58
|
+
|
|
59
|
+
// 4. Derived
|
|
60
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
61
|
+
|
|
62
|
+
// 5. Display mode returns — note isHtml prop
|
|
63
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
64
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} isHtml />;
|
|
65
|
+
}
|
|
66
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
67
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} isHtml variant="stacked" />;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// 6. Read-only render — no onChange/onBlur
|
|
71
|
+
if (readOnly) {
|
|
72
|
+
return (
|
|
73
|
+
<RichTextEditor {...additionalProps}
|
|
74
|
+
label={label} labelHidden={hideLabel} defaultValue={value}
|
|
75
|
+
testId={testId} info={helperTextToDisplay} ref={editorRef} readOnly />
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// 7. Editable handlers
|
|
80
|
+
const actionsApi = pConn.getActionsApi();
|
|
81
|
+
let status = '';
|
|
82
|
+
if (validatemessage !== '') status = 'error';
|
|
83
|
+
|
|
84
|
+
const handleChange = () => {
|
|
85
|
+
if (status === 'error') {
|
|
86
|
+
const property = (pConn.getStateProps() as any).value;
|
|
87
|
+
pConn.clearErrorMessages({ property, category: '', context: '' });
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
const handleBlur = () => {
|
|
91
|
+
if (editorRef.current) {
|
|
92
|
+
const editorValue = editorRef.current.getContent({ format: 'html' });
|
|
93
|
+
const property = (pConn.getStateProps() as any).value;
|
|
94
|
+
handleEvent(actionsApi, 'changeNblur', property, editorValue);
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
// 8. Editable render
|
|
99
|
+
return (
|
|
100
|
+
<RichTextEditor {...additionalProps}
|
|
101
|
+
label={label} labelHidden={hideLabel} info={helperTextToDisplay}
|
|
102
|
+
defaultValue={value} placeholder={placeholder}
|
|
103
|
+
disabled={disabled} required={required} testId={testId}
|
|
104
|
+
ref={editorRef} error={status === 'error'}
|
|
105
|
+
onBlur={handleBlur} onChange={handleChange} />
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
30
110
|
## Behavioral Contract
|
|
31
111
|
|
|
32
112
|
1. **Editor ref:** Maintain an `editorRef` (via `useRef`) — the editor exposes its content via `editorRef.current.getContent({ format: 'html' })`.
|
|
@@ -34,8 +114,8 @@ Renders a rich text (WYSIWYG) editor for HTML content. Uses a registry-resolved
|
|
|
34
114
|
3. **Props coercion:** `readOnly`, `required`, `disabled` must be coerced to booleans:
|
|
35
115
|
```typescript
|
|
36
116
|
[readOnly, required, disabled] = [readOnly, required, disabled].map(
|
|
37
|
-
prop => prop === true || (typeof prop === 'string' && prop === 'true')
|
|
38
|
-
)
|
|
117
|
+
(prop) => prop === true || (typeof prop === 'string' && prop === 'true'),
|
|
118
|
+
);
|
|
39
119
|
```
|
|
40
120
|
4. **Editable mode:**
|
|
41
121
|
- Track `status` for error state.
|
|
@@ -52,6 +132,7 @@ Renders a rich text (WYSIWYG) editor for HTML content. Uses a registry-resolved
|
|
|
52
132
|
6. **`RichTextEditor` component:** Resolved via `getComponentFromRegistry('RichTextEditor')`. This is a design-system extension component that wraps the actual WYSIWYG library (e.g., TinyMCE).
|
|
53
133
|
|
|
54
134
|
### Editable RichTextEditor props
|
|
135
|
+
|
|
55
136
|
```
|
|
56
137
|
label, labelHidden={hideLabel}, info={helperTextToDisplay}, defaultValue={value},
|
|
57
138
|
placeholder, disabled, required, testId, ref={editorRef},
|
|
@@ -59,6 +140,7 @@ error={status === 'error'}, onBlur={handleBlur}, onChange={handleChange}
|
|
|
59
140
|
```
|
|
60
141
|
|
|
61
142
|
### Read-only RichTextEditor props
|
|
143
|
+
|
|
62
144
|
```
|
|
63
145
|
label, labelHidden={hideLabel}, defaultValue={value}, testId, info={helperTextToDisplay},
|
|
64
146
|
ref={editorRef}, readOnly
|
|
@@ -67,6 +149,7 @@ ref={editorRef}, readOnly
|
|
|
67
149
|
## Display Mode Rendering
|
|
68
150
|
|
|
69
151
|
Display modes pass `isHtml={true}` to render HTML content safely:
|
|
152
|
+
|
|
70
153
|
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={value} isHtml />`
|
|
71
154
|
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={value} isHtml variant='stacked' />`
|
|
72
155
|
|
|
@@ -80,9 +163,15 @@ The visual appearance of the rich text editor depends on the underlying `RichTex
|
|
|
80
163
|
|
|
81
164
|
```css
|
|
82
165
|
/* RichText.css — must be imported */
|
|
83
|
-
.tox .tox-toolbar {
|
|
84
|
-
|
|
85
|
-
|
|
166
|
+
.tox .tox-toolbar {
|
|
167
|
+
background-color: var(--app-background-color) !important;
|
|
168
|
+
}
|
|
169
|
+
.tox .tox-toolbar__primary {
|
|
170
|
+
background-color: var(--app-background-color) !important;
|
|
171
|
+
}
|
|
172
|
+
.tox .tox-toolbar__button {
|
|
173
|
+
color: var(--app-text-color) !important;
|
|
174
|
+
}
|
|
86
175
|
.tox .tox-toolbar__button--enabled {
|
|
87
176
|
background: var(--app-primary-color) !important;
|
|
88
177
|
color: #fff !important;
|
|
@@ -105,6 +194,7 @@ The visual appearance of the rich text editor depends on the underlying `RichTex
|
|
|
105
194
|
**Note:** Import `./RichText.css` in the component file. The CSS variables (`--app-background-color`, `--app-text-color`, etc.) are set by the application theme.
|
|
106
195
|
|
|
107
196
|
When implementing with a different design system:
|
|
197
|
+
|
|
108
198
|
- Custom CSS for toolbar theming may be needed
|
|
109
199
|
- The editor container should be full-width
|
|
110
200
|
- Minimum height: ~200px for a usable editing area
|
|
@@ -126,6 +216,7 @@ When implementing with a different design system:
|
|
|
126
216
|
- `useRef` from React.
|
|
127
217
|
|
|
128
218
|
**For other rich text editors:**
|
|
219
|
+
|
|
129
220
|
- Any WYSIWYG editor that exposes `ref.current.getContent()` or equivalent.
|
|
130
221
|
- Examples: Quill, Draft.js, Slate.js, CKEditor.
|
|
131
222
|
|
|
@@ -135,9 +226,9 @@ When implementing with a different design system:
|
|
|
135
226
|
|
|
136
227
|
Listed design systems are examples only.
|
|
137
228
|
|
|
138
|
-
| Design System
|
|
139
|
-
|
|
229
|
+
| Design System | Recommended Component |
|
|
230
|
+
| ------------------ | ------------------------------------------------- |
|
|
140
231
|
| Default (CSS only) | `contenteditable` div + custom toolbar OR TinyMCE |
|
|
141
|
-
| MUI
|
|
142
|
-
| Ant Design
|
|
143
|
-
| Chakra UI
|
|
232
|
+
| MUI | `RichTextEditor` custom extension (TinyMCE) |
|
|
233
|
+
| Ant Design | Quill or TinyMCE with Ant styling |
|
|
234
|
+
| Chakra UI | Quill or TipTap with Chakra styling |
|