@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,168 @@
|
|
|
1
|
+
# Skill: WssQuickCreate
|
|
2
|
+
|
|
3
|
+
Quick-launch action grid that displays a heading and a set of labeled buttons, each optionally with an icon, for creating WSS cases.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`design-system-extension.md`](../design-system-extension.md) — covers architecture, props interface, styling patterns, and registration patterns common to ALL DSE components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a titled section of clickable action cards arranged in a responsive CSS grid. Each card contains an optional icon image and a label. Used in workspace/portal contexts to provide quick access to case creation actions.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `WssQuickCreate`
|
|
16
|
+
- **Registration key:** `WssQuickCreate` (in `component-map.ts`)
|
|
17
|
+
- **Does NOT use `getPConnect`** — receives all data as direct props
|
|
18
|
+
|
|
19
|
+
## Props
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| --------- | -------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------- |
|
|
23
|
+
| `heading` | `string` | Yes | Section title rendered as an `<h1>` |
|
|
24
|
+
| `actions` | `Array<{ label: string; onClick: () => void; icon?: string }>` | No | List of action items; each has a label, click handler, and optional icon URL |
|
|
25
|
+
|
|
26
|
+
## Component Skeleton
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import './WssQuickCreate.css';
|
|
30
|
+
|
|
31
|
+
interface WssQuickCreateProps {
|
|
32
|
+
heading: string;
|
|
33
|
+
actions?: Array<{ label: string; onClick: () => void; icon?: string }>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default function WssQuickCreate({ heading, actions }: WssQuickCreateProps) {
|
|
37
|
+
return (
|
|
38
|
+
<>
|
|
39
|
+
<h1 id="quick-links-heading" className="quick-links-heading">{heading}</h1>
|
|
40
|
+
<ul id="quick-links" className="quick-link-ul-list">
|
|
41
|
+
{actions?.map((action, index) => (
|
|
42
|
+
<li key={index} className="quickLinkList">
|
|
43
|
+
<button type="button" className="quick-link-button" onClick={action.onClick}>
|
|
44
|
+
<span className="quick-link-button-span">
|
|
45
|
+
{action.icon && <img className="quick-link-icon" src={action.icon} />}
|
|
46
|
+
<span>{action.label}</span>
|
|
47
|
+
</span>
|
|
48
|
+
</button>
|
|
49
|
+
</li>
|
|
50
|
+
))}
|
|
51
|
+
</ul>
|
|
52
|
+
</>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Behavioral Contract
|
|
58
|
+
|
|
59
|
+
1. Render the `heading` in an `<h1>` element with `id='quick-links-heading'` and class `quick-links-heading`.
|
|
60
|
+
2. Render a `<ul>` with `id='quick-links'` and class `quick-link-ul-list`.
|
|
61
|
+
3. If `actions` is provided, iterate and render one `<li>` per action.
|
|
62
|
+
4. Each `<li>` has the `quickLinkList` style class (styled card with border, rounded corners, and background color).
|
|
63
|
+
5. Inside each `<li>`, render a `<button>` with class `quick-link-button` and the action's `onClick` handler.
|
|
64
|
+
6. Button content is a `<span class='quick-link-button-span'>` (column flex layout) containing:
|
|
65
|
+
- If `action.icon` is provided: `<img class='quick-link-icon' src={action.icon} />`
|
|
66
|
+
- `<span>{action.label}</span>`
|
|
67
|
+
7. If `actions` is not provided or is empty, render only the heading with an empty list.
|
|
68
|
+
|
|
69
|
+
## Visual Specifications
|
|
70
|
+
|
|
71
|
+
Derived from `WssQuickCreate.css` and component makeStyles:
|
|
72
|
+
|
|
73
|
+
### Section Heading
|
|
74
|
+
|
|
75
|
+
| Property | Value |
|
|
76
|
+
| ---------- | ------ |
|
|
77
|
+
| Tag | `<h1>` |
|
|
78
|
+
| Margin top | 8px |
|
|
79
|
+
|
|
80
|
+
### Action List
|
|
81
|
+
|
|
82
|
+
| Property | Value |
|
|
83
|
+
| --------------------- | --------------------------------------------------------------------- |
|
|
84
|
+
| List style | none |
|
|
85
|
+
| Padding | 0 |
|
|
86
|
+
| Display | grid |
|
|
87
|
+
| Grid template columns | `repeat(auto-fit, minmax(min(20ch, 100%), 1fr))` (responsive columns) |
|
|
88
|
+
| Gap | 1rem |
|
|
89
|
+
|
|
90
|
+
### Action Card (`<li>`)
|
|
91
|
+
|
|
92
|
+
| Property | Value |
|
|
93
|
+
| ----------------------- | ------------------------------------ |
|
|
94
|
+
| Background (light mode) | `var(--link-button-color)` |
|
|
95
|
+
| Background (dark mode) | `var(--app-background-color)` |
|
|
96
|
+
| Text color | `var(--app-text-color)` |
|
|
97
|
+
| Border radius | 16px |
|
|
98
|
+
| Border | `1px solid var(--app-primary-color)` |
|
|
99
|
+
|
|
100
|
+
### Action Button
|
|
101
|
+
|
|
102
|
+
| Property | Value |
|
|
103
|
+
| -------------- | --------------------------- |
|
|
104
|
+
| Text transform | capitalize |
|
|
105
|
+
| Font size | 16px |
|
|
106
|
+
| Color | `var(--app-text-color)` |
|
|
107
|
+
| Height | 10rem |
|
|
108
|
+
| Width | 100% |
|
|
109
|
+
| Background | transparent (inherits card) |
|
|
110
|
+
|
|
111
|
+
### Button Inner Span
|
|
112
|
+
|
|
113
|
+
| Property | Value |
|
|
114
|
+
| -------------- | ------ |
|
|
115
|
+
| Display | flex |
|
|
116
|
+
| Flex direction | column |
|
|
117
|
+
| Align items | center |
|
|
118
|
+
| Gap | 0.5rem |
|
|
119
|
+
|
|
120
|
+
### Icon
|
|
121
|
+
|
|
122
|
+
| Property | Value |
|
|
123
|
+
| ----------- | ------- |
|
|
124
|
+
| Flex shrink | 0 |
|
|
125
|
+
| Object fit | contain |
|
|
126
|
+
| Width | 3rem |
|
|
127
|
+
| Height | 3rem |
|
|
128
|
+
|
|
129
|
+
**CSS-only implementation notes:**
|
|
130
|
+
|
|
131
|
+
- Action list: `list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(20ch, 100%), 1fr)); gap: 1rem`.
|
|
132
|
+
- Action card: `background: var(--link-button-color); border-radius: 16px; border: 1px solid var(--app-primary-color); color: var(--app-text-color)`.
|
|
133
|
+
- Button: `width: 100%; height: 10rem; background: transparent; border: none; cursor: pointer; text-transform: capitalize; font-size: 16px; color: inherit`.
|
|
134
|
+
- Button content: `display: flex; flex-direction: column; align-items: center; gap: 0.5rem`.
|
|
135
|
+
- Icon: `width: 3rem; height: 3rem; object-fit: contain; flex-shrink: 0`.
|
|
136
|
+
|
|
137
|
+
## Edge Cases & Special Logic
|
|
138
|
+
|
|
139
|
+
- If `actions` is `undefined` or empty, render the heading and empty `<ul>` without errors.
|
|
140
|
+
- If `action.icon` is `undefined` or an empty string, render only the label span (no `<img>` element).
|
|
141
|
+
- Labels are displayed as-is (no truncation); the grid layout handles responsive sizing naturally.
|
|
142
|
+
|
|
143
|
+
## Dependencies
|
|
144
|
+
|
|
145
|
+
- No Pega SDK imports required (no `getPConnect`)
|
|
146
|
+
- No helper utilities required
|
|
147
|
+
- Icon images are passed as URLs (strings) via `action.icon` — no internal icon system used
|
|
148
|
+
|
|
149
|
+
## Design System Mapping
|
|
150
|
+
|
|
151
|
+
**UI control type:** Responsive grid of action cards / quick-launch buttons.
|
|
152
|
+
|
|
153
|
+
Listed design systems are examples only.
|
|
154
|
+
|
|
155
|
+
| Design System | Recommended Component |
|
|
156
|
+
| ------------------ | ----------------------------------------------------------------------- |
|
|
157
|
+
| Default (CSS only) | CSS grid `<ul>` + `<button>` cards with flex icon/label layout |
|
|
158
|
+
| MUI | `<Button>` inside Grid items; use `makeStyles` or `sx` for card styling |
|
|
159
|
+
| Ant Design | `<List>` with `<Card>` items or `<Button>` blocks inside a CSS grid |
|
|
160
|
+
| Chakra UI | `<SimpleGrid>` with `<Button>` children; `flexDir='column'` |
|
|
161
|
+
| Shadcn/ui | Grid of custom `<Button variant='outline'>` cards |
|
|
162
|
+
|
|
163
|
+
When implementing in a specific design system, map the following:
|
|
164
|
+
|
|
165
|
+
- Card border/background → design system's card or outlined button variant
|
|
166
|
+
- Button `onClick` → standard click handler prop
|
|
167
|
+
- Icon + label stacked layout → `flexDirection: 'column'` button content
|
|
168
|
+
- Responsive grid → design system's grid or `SimpleGrid` equivalent
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: design-system-extension
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: Design System Extension (DSE) Components
|
|
7
2
|
|
|
8
3
|
Create or replace Design System Extension components in the react-sdk-reference application. DSE components are display-focused presentational components that render structured data without direct PConnect binding. Some receive `getPConnect`, others receive only display props.
|
|
@@ -206,6 +201,7 @@ DSE components use one of three approaches depending on the component and design
|
|
|
206
201
|
### Design System Style Props (use if your DS provides them)
|
|
207
202
|
|
|
208
203
|
If the chosen design system provides built-in spacing, typography, or layout props, prefer them over plain CSS:
|
|
204
|
+
|
|
209
205
|
- Use the DS's layout wrapper (e.g., `<Stack>`, `<Flex>`, `<HStack>`) instead of manual flex CSS
|
|
210
206
|
- Use DS typography components (e.g., `<Text>`, `<Heading>`) instead of raw `<span>`/`<div>`
|
|
211
207
|
- Use DS CSS custom properties or tokens for spacing — never hardcode `px` values
|
|
@@ -217,19 +213,20 @@ If the chosen design system provides built-in spacing, typography, or layout pro
|
|
|
217
213
|
|
|
218
214
|
DSE components fall into three patterns with different DS dependencies:
|
|
219
215
|
|
|
220
|
-
| Pattern
|
|
221
|
-
|
|
222
|
-
| **B — Pure display** (no PConnect)
|
|
223
|
-
| **A — PConnect display**
|
|
224
|
-
| **C — Complex display** (PConnect bridge) | FieldGroup, FieldGroupList, Pulse
|
|
216
|
+
| Pattern | Examples | DS needed? |
|
|
217
|
+
| ----------------------------------------- | ------------------------------------------------ | -------------------------------------------------- |
|
|
218
|
+
| **B — Pure display** (no PConnect) | AlertBanner, Banner, Operator, WssQuickCreate | Yes — DS provides alert/card/avatar primitives |
|
|
219
|
+
| **A — PConnect display** | CaseSummaryFields, DetailsFields, FieldValueList | Minimal — CSS-based layout; DS typography optional |
|
|
220
|
+
| **C — Complex display** (PConnect bridge) | FieldGroup, FieldGroupList, Pulse | No — PConnect bridge is DS-agnostic; semantic HTML |
|
|
225
221
|
|
|
226
222
|
The component-specific skill file specifies which pattern applies.
|
|
227
223
|
|
|
228
|
-
**1. Check the component-specific skill file** —
|
|
224
|
+
**1. Check the component-specific skill file** — `{{SKILL_DIR}}/design-system-extension-skills/<ComponentName>.md` contains a **Design System Mapping** table where available.
|
|
229
225
|
|
|
230
226
|
**2. If the chosen design system is not listed** — use the component purpose and pattern category above to pick the closest DS primitive.
|
|
231
227
|
|
|
232
228
|
**3. Discover the API from installed packages** — confirm component names and props from `.d.ts` before writing JSX:
|
|
229
|
+
|
|
233
230
|
```bash
|
|
234
231
|
find node_modules/<ds-package> -name "*.d.ts" | xargs grep -l "Alert\|Badge\|Avatar" | head -5
|
|
235
232
|
grep -A 30 "interface.*Props" <path-to-file>
|
|
@@ -237,12 +234,12 @@ grep -A 30 "interface.*Props" <path-to-file>
|
|
|
237
234
|
|
|
238
235
|
**4. Variant mapping** — always map Pega's variant names to your DS equivalent before passing to DS components:
|
|
239
236
|
|
|
240
|
-
| Pega variant | Meaning
|
|
241
|
-
|
|
242
|
-
| `urgent`
|
|
243
|
-
| `warning`
|
|
244
|
-
| `info`
|
|
245
|
-
| `success`
|
|
237
|
+
| Pega variant | Meaning | Typical DS equivalent |
|
|
238
|
+
| ------------ | ---------------- | ----------------------------- |
|
|
239
|
+
| `urgent` | Critical / error | `error`, `danger`, `critical` |
|
|
240
|
+
| `warning` | Warning | `warning` |
|
|
241
|
+
| `info` | Informational | `info` |
|
|
242
|
+
| `success` | Success | `success` |
|
|
246
243
|
|
|
247
244
|
---
|
|
248
245
|
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: field-components
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: Field Components
|
|
7
2
|
|
|
8
3
|
Create or replace field components (form inputs) in the react-sdk-reference application. Field components render individual form controls that bind to Pega case properties.
|
|
@@ -158,11 +153,12 @@ export default function MyField(props: MyFieldProps) {
|
|
|
158
153
|
|
|
159
154
|
When filling in the `// [DS RENDER]` section with a specific design system:
|
|
160
155
|
|
|
161
|
-
**1. Check the component-specific skill file** —
|
|
156
|
+
**1. Check the component-specific skill file** — `{{SKILL_DIR}}/field-skills/<ComponentName>.md` contains a **Design System Mapping** table that lists the recommended DS component for common design systems. Use it as a starting point.
|
|
162
157
|
|
|
163
158
|
**2. If the chosen design system is not in the mapping table** — use the **UI control type** field in the same skill file (e.g., `"Combobox / typeahead autocomplete input"`) to identify the closest DS primitive.
|
|
164
159
|
|
|
165
160
|
**3. Discover the API from installed packages** — before writing any render JSX, confirm all prop names from `.d.ts` files. Never rely on training-knowledge of a DS API:
|
|
161
|
+
|
|
166
162
|
```bash
|
|
167
163
|
find node_modules/<ds-package> -name "ComponentName.d.ts" | head -3
|
|
168
164
|
grep -A 40 "interface.*Props" <path-to-file>
|
|
@@ -170,14 +166,14 @@ grep -A 40 "interface.*Props" <path-to-file>
|
|
|
170
166
|
|
|
171
167
|
**4. Prop mapping conventions** — adapt these Pega/SDK props to whatever your DS component calls them:
|
|
172
168
|
|
|
173
|
-
| Pega/SDK prop
|
|
174
|
-
|
|
175
|
-
| `status === 'error'`
|
|
176
|
-
| `validatemessage \|\| helperText` | Helper/error text below field | `helperText`, `description`, `hint`, `extra`
|
|
177
|
-
| `readOnly`
|
|
178
|
-
| `testId`
|
|
179
|
-
| `required`
|
|
180
|
-
| `hideLabel`
|
|
169
|
+
| Pega/SDK prop | Meaning | Typical DS equivalent |
|
|
170
|
+
| --------------------------------- | ----------------------------- | -------------------------------------------------- |
|
|
171
|
+
| `status === 'error'` | Validation error state | `error`, `status="error"`, `invalid`, `isInvalid` |
|
|
172
|
+
| `validatemessage \|\| helperText` | Helper/error text below field | `helperText`, `description`, `hint`, `extra` |
|
|
173
|
+
| `readOnly` | Non-editable, still visible | `readOnly`, `isReadOnly`, `variant="borderless"` |
|
|
174
|
+
| `testId` | Automation selector | `data-test-id` on the underlying `<input>` element |
|
|
175
|
+
| `required` | Required field marker | `required`, `isRequired` |
|
|
176
|
+
| `hideLabel` | Suppress label display | Pass empty string `''` as label |
|
|
181
177
|
|
|
182
178
|
**5. Use a form layout wrapper** — if the DS provides a wrapper that combines label + input + helper text (e.g., `<Form.Item>` in Ant Design, `<FormControl>` in Chakra UI), use it rather than composing them manually.
|
|
183
179
|
|
|
@@ -185,6 +181,23 @@ grep -A 40 "interface.*Props" <path-to-file>
|
|
|
185
181
|
|
|
186
182
|
## Event Handling
|
|
187
183
|
|
|
184
|
+
> ⚠️ **CRITICAL — DO NOT DUPLICATE IMPORTS FROM `field-utils`**
|
|
185
|
+
>
|
|
186
|
+
> If the project has a `field-utils.ts` or `field-utils.tsx` file that exports utility functions AND types (e.g., `DynamicFieldProps`, `commitField`, `FieldValue`, `getFieldContext`, `useFieldValue`, `helperText`, `getOptions`), import everything you need in a **single import statement**.
|
|
187
|
+
>
|
|
188
|
+
> ```typescript
|
|
189
|
+
> // ✅ CORRECT — one import for both types and functions
|
|
190
|
+
> import { commitField, DynamicFieldProps, FieldValue, getFieldContext, helperText } from '../field-utils';
|
|
191
|
+
>
|
|
192
|
+
> // ❌ WRONG — duplicate identifier error!
|
|
193
|
+
> import type { DynamicFieldProps } from '../field-utils';
|
|
194
|
+
> import { commitField, DynamicFieldProps, FieldValue, getFieldContext } from '../field-utils';
|
|
195
|
+
> ```
|
|
196
|
+
>
|
|
197
|
+
> TypeScript allows mixing type and value exports in a single import. NEVER add a separate `import type` line for a symbol that is already imported in another import from the same module.
|
|
198
|
+
>
|
|
199
|
+
> **Before writing imports:** Check what `field-utils` exports. If it exports `DynamicFieldProps` as a `type`, you can import it alongside value exports in one statement.
|
|
200
|
+
|
|
188
201
|
Use `src/components/helpers/event-utils.ts` to commit values to the Pega store:
|
|
189
202
|
|
|
190
203
|
```typescript
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
# Skill: AutoComplete
|
|
2
|
+
|
|
3
|
+
Typeahead / autocomplete search field that fetches options from a data page or associated list, 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 typeahead input that shows a dropdown of matching options as the user types. Options are loaded from a Pega data page or associated list. The stored value is always the **key** of the selected option, while the displayed text is the resolved **value** (label). Delegates read-only to `TextInput` with the resolved label.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `AutoComplete`
|
|
16
|
+
- **Type / Subtype:** `Field` / `Picklist`
|
|
17
|
+
- **Registration key:** `AutoComplete` (in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Description |
|
|
22
|
+
| -------------------- | -------------------- | -------------------------------------------------------------- |
|
|
23
|
+
| `listType` | `string` | `'associated'` or `'datapage'` |
|
|
24
|
+
| `datasource` | `any` | Datasource (array for associated, string name for datapage) |
|
|
25
|
+
| `columns` | `any[]` | Column config for extracting key/value from datasource records |
|
|
26
|
+
| `parameters` | `any` (optional) | Query parameters for data page calls |
|
|
27
|
+
| `deferDatasource` | `boolean` (optional) | If true, transform `datasourceMetadata` into datapage config |
|
|
28
|
+
| `datasourceMetadata` | `any` (optional) | Metadata for deferred datasource |
|
|
29
|
+
| `onRecordChange` | `any` (optional) | Callback fired on selection change |
|
|
30
|
+
| `additionalProps` | `object` (optional) | Extra props passed through to the autocomplete |
|
|
31
|
+
|
|
32
|
+
## Component Skeleton
|
|
33
|
+
|
|
34
|
+
Follow this exact structure when implementing. Replace `<AutocompleteWidget>` with the equivalent from your chosen design system.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { useEffect, useState } from 'react';
|
|
38
|
+
import isDeepEqual from 'fast-deep-equal/react';
|
|
39
|
+
|
|
40
|
+
import Utils from '../../helpers/utils';
|
|
41
|
+
import { getDataPage } from '../../helpers/data_page';
|
|
42
|
+
import handleEvent from '../../helpers/event-utils';
|
|
43
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
44
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
45
|
+
|
|
46
|
+
// ── Option type ──────────────────────────────────────────────
|
|
47
|
+
interface IOption {
|
|
48
|
+
key: string;
|
|
49
|
+
value: string;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// ── Helper functions (top-level, outside component) ──────────
|
|
53
|
+
// preProcessColumns → see Helper Functions section
|
|
54
|
+
// getDisplayFieldsMetaData → see Helper Functions section
|
|
55
|
+
// flattenParameters → see Helper Functions section
|
|
56
|
+
|
|
57
|
+
// ── Props interface ──────────────────────────────────────────
|
|
58
|
+
interface AutoCompleteProps extends PConnFieldProps {
|
|
59
|
+
displayMode?: string;
|
|
60
|
+
deferDatasource?: boolean;
|
|
61
|
+
datasourceMetadata?: any;
|
|
62
|
+
status?: string;
|
|
63
|
+
onRecordChange?: any;
|
|
64
|
+
additionalProps?: object;
|
|
65
|
+
listType: string;
|
|
66
|
+
parameters?: any;
|
|
67
|
+
datasource: any;
|
|
68
|
+
columns: any[];
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// ── Component ────────────────────────────────────────────────
|
|
72
|
+
export default function AutoComplete(props: AutoCompleteProps) {
|
|
73
|
+
// 1. Registry lookups
|
|
74
|
+
const TextInput = getComponentFromRegistry('TextInput');
|
|
75
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
76
|
+
|
|
77
|
+
// 2. Destructure props
|
|
78
|
+
const {
|
|
79
|
+
getPConnect, label, required, placeholder, value = '',
|
|
80
|
+
validatemessage, readOnly, testId, displayMode,
|
|
81
|
+
deferDatasource, datasourceMetadata, status,
|
|
82
|
+
helperText, hideLabel, onRecordChange,
|
|
83
|
+
} = props;
|
|
84
|
+
|
|
85
|
+
// 3. PConnect setup
|
|
86
|
+
const pConn = getPConnect();
|
|
87
|
+
const context = pConn.getContextName();
|
|
88
|
+
const actionsApi = pConn.getActionsApi();
|
|
89
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
90
|
+
|
|
91
|
+
// 4. Props that may be reassigned (use let)
|
|
92
|
+
let { listType, parameters, datasource = [], columns = [] } = props;
|
|
93
|
+
|
|
94
|
+
// 5. State
|
|
95
|
+
const [inputValue, setInputValue] = useState('');
|
|
96
|
+
const [options, setOptions] = useState<IOption[]>([]);
|
|
97
|
+
const [theDatasource, setDatasource] = useState(null);
|
|
98
|
+
|
|
99
|
+
// 6. Derived values
|
|
100
|
+
let selectedValue: any = '';
|
|
101
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
102
|
+
|
|
103
|
+
// 7. Render-time datasource comparison (NOT in useEffect)
|
|
104
|
+
if (!isDeepEqual(datasource, theDatasource)) {
|
|
105
|
+
setDatasource(datasource);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// 8. Deferred datasource transformation (reassigns let vars)
|
|
109
|
+
// → see Behavioral Contract #5
|
|
110
|
+
|
|
111
|
+
// 9. Column preprocessing
|
|
112
|
+
columns = preProcessColumns(columns);
|
|
113
|
+
|
|
114
|
+
// 10. useEffect: load associated options — deps: [theDatasource]
|
|
115
|
+
// → see Behavioral Contract #7
|
|
116
|
+
|
|
117
|
+
// 11. useEffect: load datapage options — deps: [] (mount only)
|
|
118
|
+
// Guard: skip if displayMode is set OR listType === 'associated'
|
|
119
|
+
// → see Behavioral Contract #8
|
|
120
|
+
|
|
121
|
+
// 12. Display mode returns (MUST come before main render)
|
|
122
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
123
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} />;
|
|
124
|
+
}
|
|
125
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
126
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} variant="stacked" />;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// 13. Resolve selectedValue from options
|
|
130
|
+
// → see Behavioral Contract #9
|
|
131
|
+
|
|
132
|
+
// 14. Event handlers: handleChange, handleInputValue
|
|
133
|
+
// → see Behavioral Contract #10, #11
|
|
134
|
+
|
|
135
|
+
// 15. Read-only return
|
|
136
|
+
if (readOnly) {
|
|
137
|
+
const theValAsString = options?.find(opt => opt.key === value)?.value;
|
|
138
|
+
return <TextInput {...props} value={theValAsString} />;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// 16. Main editable render — use your design system's autocomplete widget
|
|
142
|
+
// Pass: options, getOptionLabel, value, inputValue, onChange, onInputChange,
|
|
143
|
+
// label, placeholder, required, error state, helperTextToDisplay, testId
|
|
144
|
+
return <AutocompleteWidget ... />;
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Behavioral Contract
|
|
149
|
+
|
|
150
|
+
1. **Options state:** Maintain `options` as `Array<{key: string, value: string}>`.
|
|
151
|
+
2. **Input value state:** Maintain `inputValue` (string) — the typed text in the input box. `selectedValue` is a **local variable** (not React state) recalculated on every render from `options` and `value`.
|
|
152
|
+
3. **Helper text:** Compute `helperTextToDisplay = validatemessage || helperText` — use this wherever helper/error text is rendered.
|
|
153
|
+
4. **Datasource change detection:** During render (not in an effect), use `isDeepEqual` to compare incoming `datasource` with cached `theDatasource`. If different, call `setDatasource(datasource)` to trigger the associated-list `useEffect`.
|
|
154
|
+
5. **Deferred datasource transformation:** If `deferDatasource && datasourceMetadata?.datasource?.name`:
|
|
155
|
+
- `listType`, `parameters`, `datasource`, `columns` must be declared with **`let`** (not `const`) because this block reassigns them.
|
|
156
|
+
- Set `listType = 'datapage'`, `datasource = datasourceMetadata.datasource.name`.
|
|
157
|
+
- Flatten `parameters` using `flattenParameters()` (see Helper Functions).
|
|
158
|
+
- Strip the `@P` prefix from property paths: `propertyForDisplayText.startsWith('@P') ? propertyForDisplayText.substring(3) : propertyForDisplayText` (same for `propertyForValue`).
|
|
159
|
+
- Build `columns` as:
|
|
160
|
+
```
|
|
161
|
+
[
|
|
162
|
+
{ key: 'true', setProperty: 'Associated property', value: valueProp },
|
|
163
|
+
{ display: 'true', primary: 'true', useForSearch: true, value: displayProp }
|
|
164
|
+
]
|
|
165
|
+
```
|
|
166
|
+
6. **Column preprocessing:** Apply `preProcessColumns(columns)` (see Helper Functions) — strips leading `.` from each column's `value` field.
|
|
167
|
+
7. **Loading options (`associated`):** `useEffect` with dependency array **`[theDatasource]`** — call `Utils.getOptionList(props, pConn.getDataObject(''))` and `setOptions(result)`.
|
|
168
|
+
8. **Loading options (`datapage`):** `useEffect` with dependency array **`[]`** (mount only, skipped when `displayMode` is set OR `listType === 'associated'`) — call `getDataPage(datasource, parameters, context)`. Map results:
|
|
169
|
+
```
|
|
170
|
+
const displayColumn = getDisplayFieldsMetaData(columns);
|
|
171
|
+
results.forEach(element => {
|
|
172
|
+
optionsData.push({
|
|
173
|
+
key: element[displayColumn.key] || element.pyGUID,
|
|
174
|
+
value: element[displayColumn.primary]?.toString()
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
setOptions(optionsData);
|
|
178
|
+
```
|
|
179
|
+
9. **Selected value resolution:** On render, find `selectedValue` by matching `value` (stored key) against `options`:
|
|
180
|
+
```
|
|
181
|
+
index = options.findIndex(el => el.key === value)
|
|
182
|
+
selectedValue = index > -1 ? options[index].value : value
|
|
183
|
+
```
|
|
184
|
+
10. **On selection change:**
|
|
185
|
+
|
|
186
|
+
- `val = newValue ? newValue.key : ''`
|
|
187
|
+
- Commit via `handleEvent(actionsApi, 'changeNblur', propName, val)`.
|
|
188
|
+
- If `onRecordChange`, call it with the event.
|
|
189
|
+
|
|
190
|
+
11. **On input change:** Update `inputValue` state (typed text, does NOT commit to store).
|
|
191
|
+
12. **Read-only:** Resolve the option label (`options.find(opt => opt.key === value)?.value`), delegate to `TextInput` with resolved label: `return <TextInput {...props} value={theValAsString} />`.
|
|
192
|
+
|
|
193
|
+
## Helper Functions
|
|
194
|
+
|
|
195
|
+
These are **top-level pure functions** defined outside the component (design-system independent).
|
|
196
|
+
|
|
197
|
+
### `preProcessColumns(columnList)`
|
|
198
|
+
|
|
199
|
+
Returns a new array where each column object's `.value` has a leading `.` stripped:
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
columnList.map(col => {
|
|
203
|
+
const temp = { ...col };
|
|
204
|
+
temp.value = col.value?.startsWith('.') ? col.value.substring(1) : col.value;
|
|
205
|
+
return temp;
|
|
206
|
+
});
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### `getDisplayFieldsMetaData(columnList)`
|
|
210
|
+
|
|
211
|
+
Extracts key, primary display, and secondary display field names from column config:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
const displayColumns = columnList.filter(col => col.display === 'true');
|
|
215
|
+
const keyCol = columnList.filter(col => col.key === 'true');
|
|
216
|
+
const metaData = { key: '', primary: '', secondary: [] };
|
|
217
|
+
metaData.key = keyCol.length > 0 ? keyCol[0].value : 'auto';
|
|
218
|
+
for (const dc of displayColumns) {
|
|
219
|
+
if (dc.primary === 'true') metaData.primary = dc.value;
|
|
220
|
+
else metaData.secondary.push(dc.value);
|
|
221
|
+
}
|
|
222
|
+
return metaData;
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Return type: `{ key: string, primary: string, secondary: string[] }`.
|
|
226
|
+
|
|
227
|
+
### `flattenParameters(params)`
|
|
228
|
+
|
|
229
|
+
Converts Pega's nested parameter format to a flat key-value map:
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
const flat = {};
|
|
233
|
+
Object.keys(params).forEach(key => {
|
|
234
|
+
const { name, value } = params[key];
|
|
235
|
+
flat[name] = value;
|
|
236
|
+
});
|
|
237
|
+
return flat;
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
## Display Mode Rendering
|
|
241
|
+
|
|
242
|
+
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={value} />` — raw stored value (key string).
|
|
243
|
+
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />`.
|
|
244
|
+
|
|
245
|
+
## Read-Only Rendering
|
|
246
|
+
|
|
247
|
+
Resolve the display label from options and delegate: `return <TextInput {...props} value={theValAsString} />`.
|
|
248
|
+
|
|
249
|
+
## Visual Specifications
|
|
250
|
+
|
|
251
|
+
| Property | Value |
|
|
252
|
+
| -------------- | ----------------------------------------------------------- |
|
|
253
|
+
| Width | 100% |
|
|
254
|
+
| Size | Small |
|
|
255
|
+
| Variant | Outlined |
|
|
256
|
+
| Dropdown popup | Opens below input, shows filtered options |
|
|
257
|
+
| Input | Combobox pattern — types to filter, click arrow to open all |
|
|
258
|
+
| Error state | Red border + red helper text |
|
|
259
|
+
| Label | Floating label |
|
|
260
|
+
| Placeholder | From `placeholder` prop |
|
|
261
|
+
|
|
262
|
+
**Autocomplete behavior:**
|
|
263
|
+
|
|
264
|
+
- The controlled `value` is the selected option object (or `selectedValue` string).
|
|
265
|
+
- The controlled `inputValue` is the typed text.
|
|
266
|
+
- `getOptionLabel` returns `option.value` (the display label).
|
|
267
|
+
- `isOptionEqualToValue` returns `option.value` (used for selection matching).
|
|
268
|
+
|
|
269
|
+
## Edge Cases & Special Logic
|
|
270
|
+
|
|
271
|
+
- `inputValue || selectedValue` — the input displays `inputValue` when typing, `selectedValue` when a selection has been made and nothing is typed.
|
|
272
|
+
- When `value` is a key that does not yet exist in `options` (e.g., options still loading), display `value` directly as `selectedValue`.
|
|
273
|
+
- Options array uses `{key, value}` — `key` = stored value, `value` = display label.
|
|
274
|
+
- `context` is obtained from `pConn.getContextName()` and passed to `getDataPage`.
|
|
275
|
+
- **Render ordering matters:** display mode checks → `selectedValue` resolution → define event handlers → readOnly check → main editable render. Do not reorder.
|
|
276
|
+
|
|
277
|
+
## Dependencies
|
|
278
|
+
|
|
279
|
+
- `isDeepEqual` from `fast-deep-equal/react`.
|
|
280
|
+
- `Utils.getOptionList()` from `../../helpers/utils`.
|
|
281
|
+
- `getDataPage()` from `../../helpers/data_page`.
|
|
282
|
+
- `handleEvent` from `../../helpers/event-utils`.
|
|
283
|
+
- `getComponentFromRegistry('TextInput')` for read-only.
|
|
284
|
+
- `getComponentFromRegistry('FieldValueList')` for display modes.
|
|
285
|
+
- Typeahead/autocomplete UI widget.
|
|
286
|
+
|
|
287
|
+
## Design System Mapping
|
|
288
|
+
|
|
289
|
+
**UI control type:** Combobox / typeahead autocomplete input.
|
|
290
|
+
|
|
291
|
+
Listed design systems are examples only.
|
|
292
|
+
|
|
293
|
+
| Design System | Recommended Component |
|
|
294
|
+
| ------------------ | ------------------------------------------------------- |
|
|
295
|
+
| Default (CSS only) | `<input>` + custom dropdown list with filtering |
|
|
296
|
+
| MUI | `<Autocomplete>` with `renderInput` using `<TextField>` |
|
|
297
|
+
| Ant Design | `<AutoComplete>` or `<Select showSearch>` |
|
|
298
|
+
| Chakra UI | `<Combobox>` (Downshift) or third-party |
|