@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,273 @@
|
|
|
1
|
+
# Skill: AppShell
|
|
2
|
+
|
|
3
|
+
Top-level application shell template. Renders the outer portal/WSS portal frame: navigation bar, alert banners, operator avatar, portal logo, and case types. Provides NavContext to child components.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
> ⚠️ **CRITICAL — DO NOT SIMPLIFY THIS COMPONENT**
|
|
10
|
+
>
|
|
11
|
+
> **NavBar requires `pConn` prop.** Without it, `pConn.resolveConfigProps()` throws `TypeError: Cannot read properties of undefined`. ALWAYS pass `pConn={pConn}` where `const pConn = getPConnect()`.
|
|
12
|
+
>
|
|
13
|
+
> This component has **mandatory side effects** (portal logo loading, case type fetching from data page, WSS vs standard portal detection). Do NOT collapse to a single-line return statement.
|
|
14
|
+
>
|
|
15
|
+
> **Minimum Viable Implementation must include:**
|
|
16
|
+
>
|
|
17
|
+
> 1. `const pConn = getPConnect()` — and pass `pConn` to NavBar
|
|
18
|
+
> 2. WSS vs standard portal detection (`portalTemplate === 'wss'`)
|
|
19
|
+
> 3. `NavContext.Provider` wrapping the standard portal layout
|
|
20
|
+
> 4. NavBar receiving: `getPConnect`, `pConn`, `appName`, `pages`, `caseTypes`
|
|
21
|
+
> 5. AlertBanner rendering messages from `httpMessages` + `pageMessages`
|
|
22
|
+
>
|
|
23
|
+
> **Post-Generation Checklist:**
|
|
24
|
+
>
|
|
25
|
+
> - [ ] `pConn` passed to NavBar
|
|
26
|
+
> - [ ] `NavContext.Provider` wrapping standard portal
|
|
27
|
+
> - [ ] WSS vs standard portal detection
|
|
28
|
+
> - [ ] AlertBanner with combined messages
|
|
29
|
+
> - [ ] Operator info from `PCore.getEnvironmentInfo()`
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## Component Purpose
|
|
34
|
+
|
|
35
|
+
The outermost container for the Pega SDK React app. Determines whether the app is running in WSS portal or standard portal mode, renders the appropriate navigation bar, handles HTTP and page-level alert messages, loads the portal logo asynchronously, and passes navigation links and case types to the nav bar.
|
|
36
|
+
|
|
37
|
+
## Pega Metadata
|
|
38
|
+
|
|
39
|
+
- **Registration key:** `AppShell` (in `component-map.ts`)
|
|
40
|
+
- **Category:** Page template — application shell
|
|
41
|
+
- **Extends:** `PConnProps`
|
|
42
|
+
|
|
43
|
+
## Props
|
|
44
|
+
|
|
45
|
+
| Prop | Type | Required | Description |
|
|
46
|
+
| ------------- | ----------- | -------- | ------------------------------------------------------------ |
|
|
47
|
+
| `pages` | `array` | Yes | Array of portal page objects `{ name, pyLabel, linkUrl }` |
|
|
48
|
+
| `caseTypes` | `array` | No | Fallback case types (overridden by data page fetch if empty) |
|
|
49
|
+
| `portalName` | `string` | Yes | Portal identifier — determines WSS vs standard rendering |
|
|
50
|
+
| `displayName` | `string` | No | Operator display name for avatar |
|
|
51
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
52
|
+
| `children` | `ReactNode` | Yes | Main content area |
|
|
53
|
+
|
|
54
|
+
## Component Skeleton
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import { type PropsWithChildren, useEffect, useState } from 'react';
|
|
58
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
59
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
60
|
+
import { Utils } from '../../helpers/utils';
|
|
61
|
+
import { NavContext } from '../../helpers/reactContextHelpers';
|
|
62
|
+
import './AppShell.css';
|
|
63
|
+
|
|
64
|
+
interface AppShellProps extends PConnProps {
|
|
65
|
+
showAppName: boolean;
|
|
66
|
+
pages: { pxPageViewIcon: string; pyClassName: string; pyLabel: string; pyRuleName: string; pyURLContent: string }[];
|
|
67
|
+
caseTypes?: object[];
|
|
68
|
+
portalTemplate: string;
|
|
69
|
+
portalName: string;
|
|
70
|
+
portalLogo: string;
|
|
71
|
+
navDisplayOptions: { alignment: string; position: string };
|
|
72
|
+
httpMessages: string[];
|
|
73
|
+
pageMessages: string[];
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export default function AppShell(props: PropsWithChildren<AppShellProps>) {
|
|
77
|
+
// 1. Registry lookups
|
|
78
|
+
const NavBar = getComponentFromRegistry('NavBar');
|
|
79
|
+
const WssNavBar = getComponentFromRegistry('WssNavBar');
|
|
80
|
+
const AlertBanner = getComponentFromRegistry('AlertBanner');
|
|
81
|
+
|
|
82
|
+
// 2. Destructure props
|
|
83
|
+
const {
|
|
84
|
+
pages = [], caseTypes = [], showAppName, children = [],
|
|
85
|
+
getPConnect, httpMessages = [], pageMessages = [],
|
|
86
|
+
portalTemplate, portalName, portalLogo, navDisplayOptions,
|
|
87
|
+
} = props;
|
|
88
|
+
|
|
89
|
+
// 3. State + PConnect setup
|
|
90
|
+
const [open, setOpen] = useState(true);
|
|
91
|
+
const pConn = getPConnect();
|
|
92
|
+
const envInfo = PCore.getEnvironmentInfo();
|
|
93
|
+
const userName = envInfo.getOperatorName() || '';
|
|
94
|
+
const currentUserInitials = Utils.getInitials(userName);
|
|
95
|
+
const appNameToDisplay = showAppName ? envInfo.getApplicationLabel() : '';
|
|
96
|
+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
97
|
+
const [iconURL, setIconURL] = useState('');
|
|
98
|
+
|
|
99
|
+
// 4. Messages/banners
|
|
100
|
+
const messages = [...httpMessages, ...pageMessages];
|
|
101
|
+
const hasBanner = messages.length > 0;
|
|
102
|
+
|
|
103
|
+
// 5. useEffect: load portal logo async
|
|
104
|
+
// 6. useEffect: fetch case types from data page
|
|
105
|
+
// 7. useEffect: set pyPortalTemplate for WSS
|
|
106
|
+
|
|
107
|
+
// 8. Build nav links from pages
|
|
108
|
+
const links = pages.map(page => ({
|
|
109
|
+
text: localizedVal(page.pyLabel, '', ''),
|
|
110
|
+
onClick: () => !page.pyURLContent
|
|
111
|
+
? pConn.getActionsApi().showPage(page.pyRuleName, page.pyClassName)
|
|
112
|
+
: window.open(page.pyURLContent, '_blank'),
|
|
113
|
+
}));
|
|
114
|
+
|
|
115
|
+
// 9. Render: WSS portal vs standard portal
|
|
116
|
+
if (portalTemplate === 'wss') {
|
|
117
|
+
return (
|
|
118
|
+
<div id="AppShell">
|
|
119
|
+
<WssNavBar portalName={portalName} imageSrc={iconURL} navLinks={links}
|
|
120
|
+
operator={{ name: userName, currentUserInitials }} navDisplayOptions={navDisplayOptions} />
|
|
121
|
+
<div>{hasBanner && <AlertBanner messages={messages} />}{children}</div>
|
|
122
|
+
</div>
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
return (
|
|
126
|
+
<NavContext.Provider value={{ open, setOpen }}>
|
|
127
|
+
<div id="AppShell" style={{ display: 'flex' }}>
|
|
128
|
+
<NavBar getPConnect={getPConnect} pConn={pConn}
|
|
129
|
+
appName={appNameToDisplay} pages={pages} caseTypes={caseTypes} />
|
|
130
|
+
<div>{hasBanner && <AlertBanner messages={messages} />}{children}</div>
|
|
131
|
+
</div>
|
|
132
|
+
</NavContext.Provider>
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## Behavioral Contract
|
|
138
|
+
|
|
139
|
+
### Portal Type Detection
|
|
140
|
+
|
|
141
|
+
- Check `portalName` (or metadata flag) against WSS portal identifier.
|
|
142
|
+
- WSS portal → render `<WssNavBar>` component.
|
|
143
|
+
- Standard portal → render `<NavBar>` component.
|
|
144
|
+
|
|
145
|
+
### Alert Banners
|
|
146
|
+
|
|
147
|
+
1. Subscribe to `getPConnect()` for `httpMessages` and `pageMessages` updates.
|
|
148
|
+
2. If either array is non-empty, render `<AlertBanner>` DSE component above the main content.
|
|
149
|
+
3. `AlertBanner` receives the combined message array and a dismiss handler.
|
|
150
|
+
|
|
151
|
+
### Portal Logo
|
|
152
|
+
|
|
153
|
+
1. On mount, call `PCore.getAssetLoader().getSvcImageUrl(logoAssetName)` asynchronously.
|
|
154
|
+
2. Store the resolved URL in `portalLogoUrl` state.
|
|
155
|
+
3. Pass `portalLogoUrl` to the nav bar as the `logo` prop.
|
|
156
|
+
|
|
157
|
+
### Operator Avatar
|
|
158
|
+
|
|
159
|
+
- Read `displayName` from `getPConnect().getValue('.pyUserName')` or the `displayName` prop.
|
|
160
|
+
- Render operator avatar (initials) in the nav bar via the `operatorInfo` prop.
|
|
161
|
+
|
|
162
|
+
### Case Types
|
|
163
|
+
|
|
164
|
+
> ⚠️ **DO NOT hardcode `'D_pyPortalTypeList'`** — this data page does not exist in most environments and will 404.
|
|
165
|
+
|
|
166
|
+
The correct pattern reads the data page name dynamically from the environment:
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
useEffect(() => {
|
|
170
|
+
// @ts-expect-error - environmentInfoObject may not be in typedefs
|
|
171
|
+
const caseTypesDP = PCore.getEnvironmentInfo().environmentInfoObject?.pxApplication?.pyCaseTypesAvailableToCreateDP;
|
|
172
|
+
if (caseTypesDP) {
|
|
173
|
+
const portalID = pConn.getValue('.pyOwner', '');
|
|
174
|
+
PCore.getDataPageUtils()
|
|
175
|
+
.getPageDataAsync(caseTypesDP, pConn.getContextName(), { PortalName: portalID })
|
|
176
|
+
.then((response) => {
|
|
177
|
+
if (response?.pyCaseTypesAvailableToCreate) {
|
|
178
|
+
pConn.replaceState('.pyCaseTypesAvailableToCreate', response.pyCaseTypesAvailableToCreate, {
|
|
179
|
+
skipDirtyValidation: true,
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
})
|
|
183
|
+
.catch(() => undefined);
|
|
184
|
+
}
|
|
185
|
+
}, []);
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
Key points:
|
|
189
|
+
|
|
190
|
+
1. Data page name comes from `environmentInfoObject.pxApplication.pyCaseTypesAvailableToCreateDP` (dynamic)
|
|
191
|
+
2. Context is `pConn.getContextName()` (NOT `'root'`)
|
|
192
|
+
3. Parameter `{ PortalName: portalID }` is required
|
|
193
|
+
4. Result is stored via `pConn.replaceState('.pyCaseTypesAvailableToCreate', ...)` — this populates PConnect state for other consumers
|
|
194
|
+
|
|
195
|
+
> ⚠️ **NavBar reads `caseTypes` from its PROP, not from PConnect state.** Do NOT shadow the `caseTypes` prop with `useState`. Pass the prop directly to NavBar:
|
|
196
|
+
>
|
|
197
|
+
> ```typescript
|
|
198
|
+
> const { caseTypes = [] } = props; // direct from props, NO useState
|
|
199
|
+
> <NavBar caseTypes={caseTypes} /> // pass the prop through
|
|
200
|
+
> ```
|
|
201
|
+
>
|
|
202
|
+
> If you use `useState(caseTypes)`, NavBar will receive an empty array because the React state is never updated by `replaceState`.
|
|
203
|
+
|
|
204
|
+
### NavContext
|
|
205
|
+
|
|
206
|
+
- Wrap children in `<NavContext.Provider value={{ open, setOpen }}>`.
|
|
207
|
+
|
|
208
|
+
### Render Structure
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
<NavContext.Provider value={{ open, setOpen }}>
|
|
212
|
+
<div id="AppShell" style={{ display: 'flex' }}>
|
|
213
|
+
<NavBar caseTypes={caseTypes} ... />
|
|
214
|
+
<main style={{ flexGrow: 1, height: '100vh', overflow: 'auto', margin: '0 1rem' }}>
|
|
215
|
+
<AlertBanner (if messages) />
|
|
216
|
+
{children}
|
|
217
|
+
</main>
|
|
218
|
+
</div>
|
|
219
|
+
</NavContext.Provider>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
> ⚠️ The `<main>` element MUST have:
|
|
223
|
+
>
|
|
224
|
+
> - `flexGrow: 1` — fill remaining viewport width beside NavBar
|
|
225
|
+
> - `height: 100vh` — full viewport height
|
|
226
|
+
> - `overflow: auto` — scroll when content exceeds viewport
|
|
227
|
+
> - `margin: '0 1rem'` — horizontal spacing between NavBar and content (matches reference's `theme.spacing(2)` = 16px)
|
|
228
|
+
|
|
229
|
+
## Visual Specifications
|
|
230
|
+
|
|
231
|
+
**CSS-only implementation notes:**
|
|
232
|
+
|
|
233
|
+
- Shell wrapper: `display: flex; flex-direction: column; height: 100vh`.
|
|
234
|
+
- Nav bar: `flex: 0 0 auto` (fixed height).
|
|
235
|
+
- Alert banner: `flex: 0 0 auto` (shown below nav, pushes content down).
|
|
236
|
+
- Content area: `flex: 1 1 auto; overflow-y: auto`.
|
|
237
|
+
|
|
238
|
+
## Edge Cases & Special Logic
|
|
239
|
+
|
|
240
|
+
- Logo loading is async — show fallback (app name or blank) until URL resolves.
|
|
241
|
+
- Case types fetch may fail — catch errors and fall back to the `caseTypes` prop.
|
|
242
|
+
- `httpMessages` are transient (from API errors) — clear them after display or on next navigation.
|
|
243
|
+
- `pageMessages` are persistent until explicitly dismissed.
|
|
244
|
+
- If `pages` is empty, `links` array is empty — nav bar may render without page links.
|
|
245
|
+
|
|
246
|
+
## Dependencies
|
|
247
|
+
|
|
248
|
+
- `NavBar` DSE component — standard portal navigation
|
|
249
|
+
- `WssNavBar` template component — WSS portal navigation (see `WssNavBar.md`)
|
|
250
|
+
- `AlertBanner` DSE component — message display
|
|
251
|
+
- `NavContext` from `../../context/nav-context`
|
|
252
|
+
- `PCore.getAssetLoader().getSvcImageUrl()` — logo URL resolution
|
|
253
|
+
- `PCore.getDataPageUtils().getPageDataAsync()` — case types data page
|
|
254
|
+
|
|
255
|
+
## Design System Mapping
|
|
256
|
+
|
|
257
|
+
**UI control type:** Application shell layout — fixed nav + scrollable content area.
|
|
258
|
+
|
|
259
|
+
Listed design systems are examples only.
|
|
260
|
+
|
|
261
|
+
| Design System | Nav Bar | Alert Banner | Shell Layout |
|
|
262
|
+
| ------------------ | ------------------------ | -------------------- | --------------------------------------------- |
|
|
263
|
+
| Default (CSS only) | `<header>` + custom nav | `<div role='alert'>` | CSS flexbox column |
|
|
264
|
+
| MUI | `<AppBar>` + `<Toolbar>` | `<Alert>` | `<Box display='flex' flexDirection='column'>` |
|
|
265
|
+
| Ant Design | `<Layout.Header>` | `<Alert>` | `<Layout>` |
|
|
266
|
+
| Chakra UI | `<Box as='header'>` | `<Alert>` | `<Flex direction='column'>` |
|
|
267
|
+
| Shadcn/ui | Custom header | `<Alert>` | Tailwind `flex flex-col h-screen` |
|
|
268
|
+
|
|
269
|
+
When implementing in a specific design system:
|
|
270
|
+
|
|
271
|
+
- WSS vs portal detection must remain — the nav bar component differs for each
|
|
272
|
+
- Logo URL must be loaded asynchronously from `PCore.getAssetLoader()`
|
|
273
|
+
- `NavContext.Provider` must wrap children so descendant nav-aware components can access links
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Template component skill: BannerPage
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: BannerPage
|
|
7
2
|
|
|
8
3
|
Page template that wraps the `Banner` DSE component, rendering a hero image section with a configurable two-column content area below.
|
|
@@ -23,16 +18,55 @@ A thin template wrapper that delegates entirely to the `Banner` DSE component. T
|
|
|
23
18
|
|
|
24
19
|
## Props
|
|
25
20
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
28
|
-
| `children`
|
|
29
|
-
| `layout`
|
|
30
|
-
| `heading`
|
|
31
|
-
| `message`
|
|
32
|
-
| `imageTheme`
|
|
33
|
-
| `backgroundImage` | `string`
|
|
34
|
-
| `backgroundColor` | `string`
|
|
35
|
-
| `tintImage`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ----------------- | ------------- | -------- | ---------------------------------------------------------------------------------------------- |
|
|
23
|
+
| `children` | `ReactNode[]` | Yes | At least 2 children — `[0]` → left (`a`) slot, `[1]` → right (`b`) slot |
|
|
24
|
+
| `layout` | `string` | No | Column layout variant for `Banner`: `'two-column'` (default), `'narrow-wide'`, `'wide-narrow'` |
|
|
25
|
+
| `heading` | `string` | No | Hero section heading text. Default `''` |
|
|
26
|
+
| `message` | `string` | No | Hero section message/subtitle. Default `''` |
|
|
27
|
+
| `imageTheme` | `string` | No | Banner image theme (e.g., `'light'`). Default `'light'` |
|
|
28
|
+
| `backgroundImage` | `string` | No | URL of the background image for the hero. Default `''` |
|
|
29
|
+
| `backgroundColor` | `string` | No | Background color for the hero. Default `''` |
|
|
30
|
+
| `tintImage` | `boolean` | No | Whether to tint the background image. Default `false` |
|
|
31
|
+
|
|
32
|
+
## Component Skeleton
|
|
33
|
+
|
|
34
|
+
Simplest template — pure pass-through to `Banner` DSE component.
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { Children, type PropsWithChildren, useMemo } from 'react';
|
|
38
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
39
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
40
|
+
|
|
41
|
+
interface BannerPageProps extends PConnProps {
|
|
42
|
+
layout?: string;
|
|
43
|
+
heading?: string;
|
|
44
|
+
message?: string;
|
|
45
|
+
imageTheme?: string;
|
|
46
|
+
backgroundImage?: string;
|
|
47
|
+
backgroundColor?: string;
|
|
48
|
+
tintImage?: boolean;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export default function BannerPage(props: PropsWithChildren<BannerPageProps>) {
|
|
52
|
+
const Banner = getComponentFromRegistry('Banner');
|
|
53
|
+
const {
|
|
54
|
+
children, layout = 'two-column', heading = '', message = '',
|
|
55
|
+
imageTheme = 'light', backgroundImage = '', backgroundColor = '', tintImage = false,
|
|
56
|
+
} = props;
|
|
57
|
+
|
|
58
|
+
const childArray = useMemo(() => Children.toArray(children), [children]);
|
|
59
|
+
|
|
60
|
+
return (
|
|
61
|
+
<Banner
|
|
62
|
+
variant={layout}
|
|
63
|
+
a={childArray[0]}
|
|
64
|
+
b={childArray[1]}
|
|
65
|
+
banner={{ variant: imageTheme, backgroundColor, title: heading, message, backgroundImage, tintImage }}
|
|
66
|
+
/>
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
```
|
|
36
70
|
|
|
37
71
|
## Behavioral Contract
|
|
38
72
|
|
|
@@ -50,10 +84,12 @@ A thin template wrapper that delegates entirely to the `Banner` DSE component. T
|
|
|
50
84
|
This component has no independent visual output — all visual behavior is defined by the `Banner` DSE component. See [`design-system-extension-skills/Banner.md`](../design-system-extension-skills/Banner.md) for full visual specs.
|
|
51
85
|
|
|
52
86
|
Key visual behaviors inherited from `Banner`:
|
|
87
|
+
|
|
53
88
|
- Hero: full-width background image section, height `19rem`, centered title and message overlay
|
|
54
89
|
- Content area: two-column grid below the hero, column widths driven by `variant`/`layout`
|
|
55
90
|
|
|
56
91
|
**CSS-only implementation notes:**
|
|
92
|
+
|
|
57
93
|
- This template creates no CSS of its own — implement it as a pure pass-through to `Banner`.
|
|
58
94
|
- The `layout` prop maps directly to `Banner`'s `variant` prop.
|
|
59
95
|
- `heading` → `Banner.banner.title`, `message` → `Banner.banner.message`.
|
|
@@ -75,14 +111,15 @@ Key visual behaviors inherited from `Banner`:
|
|
|
75
111
|
|
|
76
112
|
Listed design systems are examples only.
|
|
77
113
|
|
|
78
|
-
| Design System
|
|
79
|
-
|
|
114
|
+
| Design System | Recommended Component |
|
|
115
|
+
| ------------------ | -------------------------------------------------------------------- |
|
|
80
116
|
| Default (CSS only) | Pass-through to `Banner` — implement Banner's CSS hero + grid layout |
|
|
81
|
-
| MUI
|
|
82
|
-
| Ant Design
|
|
83
|
-
| Chakra UI
|
|
84
|
-
| Shadcn/ui
|
|
117
|
+
| MUI | Pass-through to `Banner` (MUI-based) |
|
|
118
|
+
| Ant Design | Pass-through to `Banner` (Ant-based) |
|
|
119
|
+
| Chakra UI | Pass-through to `Banner` (Chakra-based) |
|
|
120
|
+
| Shadcn/ui | Pass-through to `Banner` (Shadcn-based) |
|
|
85
121
|
|
|
86
122
|
When implementing in a specific design system:
|
|
123
|
+
|
|
87
124
|
- `BannerPage` is always a thin wrapper — implement `Banner` first, then `BannerPage` simply delegates to it
|
|
88
125
|
- Prop mapping: `layout` → `variant`, `heading` → `banner.title`, `message` → `banner.message`, `backgroundImage` → `banner.backgroundImage`
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
# Skill: CaseSummary
|
|
2
|
+
|
|
3
|
+
Case summary template. Renders a summary panel with primary and secondary case fields, derived from either props or child region extraction.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
> ⚠️ **CRITICAL — Children extraction is MANDATORY**
|
|
10
|
+
>
|
|
11
|
+
> The `arPrimaryFields` and `arSecondaryFields` props are almost always EMPTY at runtime. The Pega engine passes field data as **React children** (regions named "primary fields" and "secondary fields"), not as pre-computed array props.
|
|
12
|
+
>
|
|
13
|
+
> You MUST include the children-extraction block:
|
|
14
|
+
>
|
|
15
|
+
> ```typescript
|
|
16
|
+
> if (arPrimaryFields.length === 0 && arSecondaryFields.length === 0) {
|
|
17
|
+
> for (const child of childArr) {
|
|
18
|
+
> const childPConn = child.props.getPConnect();
|
|
19
|
+
> const childPConnData = childPConn.resolveConfigProps(childPConn.getRawMetadata());
|
|
20
|
+
> if (childPConnData.name.toLowerCase() === 'primary fields') {
|
|
21
|
+
> arPrimaryFields = childPConnData.children;
|
|
22
|
+
> } else if (childPConnData.name.toLowerCase() === 'secondary fields') {
|
|
23
|
+
> arSecondaryFields = childPConnData.children;
|
|
24
|
+
> }
|
|
25
|
+
> }
|
|
26
|
+
> }
|
|
27
|
+
> ```
|
|
28
|
+
>
|
|
29
|
+
> Without this, the summary will render completely empty.
|
|
30
|
+
|
|
31
|
+
## Component Purpose
|
|
32
|
+
|
|
33
|
+
Displays a case's key summary data in a structured summary panel. Primary fields are shown prominently; secondary fields are shown with labels. Data is sourced either directly from props or by extracting child regions. All field values are localized before display.
|
|
34
|
+
|
|
35
|
+
## Pega Metadata
|
|
36
|
+
|
|
37
|
+
- **Registration key:** `CaseSummary` (in `component-map.ts`)
|
|
38
|
+
- **Category:** Page template — summary
|
|
39
|
+
- **Extends:** `PConnProps`
|
|
40
|
+
|
|
41
|
+
## Props
|
|
42
|
+
|
|
43
|
+
| Prop | Type | Required | Description |
|
|
44
|
+
| ------------------- | ------------- | -------- | ------------------------------------------------------- |
|
|
45
|
+
| `children` | `ReactNode[]` | No | Region children when fields come from PConnect metadata |
|
|
46
|
+
| `arPrimaryFields` | `array` | No | Array of primary field objects (direct prop) |
|
|
47
|
+
| `arSecondaryFields` | `array` | No | Array of secondary field objects (direct prop) |
|
|
48
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
49
|
+
|
|
50
|
+
## Component Skeleton
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import type { PropsWithChildren, ReactElement } from 'react';
|
|
54
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
55
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
56
|
+
|
|
57
|
+
interface CaseSummaryProps extends PConnProps {
|
|
58
|
+
arPrimaryFields: any[];
|
|
59
|
+
arSecondaryFields: any[];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export default function CaseSummary(props: PropsWithChildren<CaseSummaryProps>) {
|
|
63
|
+
const CaseSummaryFields = getComponentFromRegistry('CaseSummaryFields');
|
|
64
|
+
const { children } = props;
|
|
65
|
+
let { arPrimaryFields = [], arSecondaryFields = [] } = props;
|
|
66
|
+
|
|
67
|
+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
68
|
+
const localeCategory = 'ModalContainer';
|
|
69
|
+
|
|
70
|
+
// 1. Helper: create component from metadata and return { value: createdComponent }
|
|
71
|
+
function prepareComponentInCaseSummary(pConnectMeta, getPConnect) { /* ... */ }
|
|
72
|
+
|
|
73
|
+
// 2. Helper: convert children to summary data array
|
|
74
|
+
function prepareCaseSummaryData(summaryFieldChildren) { /* ... */ }
|
|
75
|
+
|
|
76
|
+
// 3. If direct props empty, extract from children regions
|
|
77
|
+
if (arPrimaryFields.length === 0 && arSecondaryFields.length === 0) {
|
|
78
|
+
for (const child of children as ReactElement[]) {
|
|
79
|
+
const childPConn = (child as ReactElement).props.getPConnect();
|
|
80
|
+
const childPConnData = childPConn.resolveConfigProps(childPConn.getRawMetadata());
|
|
81
|
+
if (childPConnData.name.toLowerCase() === 'primary fields') {
|
|
82
|
+
arPrimaryFields = childPConnData.children;
|
|
83
|
+
arPrimaryFields.forEach(field => {
|
|
84
|
+
if (field.config?.value && typeof field.config?.value === 'string')
|
|
85
|
+
field.config.value = localizedVal(field.config.value, localeCategory);
|
|
86
|
+
});
|
|
87
|
+
} else if (childPConnData.name.toLowerCase() === 'secondary fields') {
|
|
88
|
+
const secondarySummaryFields = prepareCaseSummaryData(childPConn);
|
|
89
|
+
arSecondaryFields = childPConnData.children;
|
|
90
|
+
arSecondaryFields.forEach((field, index) => {
|
|
91
|
+
field.config.displayLabel = secondarySummaryFields[index]?.value?.props?.label;
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// 4. Render
|
|
98
|
+
return (
|
|
99
|
+
<div id="CaseSummary">
|
|
100
|
+
<CaseSummaryFields theFields={arPrimaryFields} />
|
|
101
|
+
<CaseSummaryFields theFields={arSecondaryFields} />
|
|
102
|
+
</div>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Behavioral Contract
|
|
108
|
+
|
|
109
|
+
### Field Sourcing
|
|
110
|
+
|
|
111
|
+
Two modes — prefer direct props if provided:
|
|
112
|
+
|
|
113
|
+
**Mode A — Direct props:**
|
|
114
|
+
|
|
115
|
+
- `arPrimaryFields` and `arSecondaryFields` are passed directly.
|
|
116
|
+
- Call `prepareCaseSummaryData(primaryFields, secondaryFields, getPConnect)` to localize values.
|
|
117
|
+
|
|
118
|
+
**Mode B — Child extraction:**
|
|
119
|
+
|
|
120
|
+
- Extract primary and secondary regions from `children` by type/name matching.
|
|
121
|
+
- Primary region: first region child (or `type === 'Region' && name === 'Primary'`).
|
|
122
|
+
- Secondary region: second region child (or `type === 'Region' && name === 'Secondary'`).
|
|
123
|
+
- Build field arrays from the extracted region children metadata.
|
|
124
|
+
- Then call `prepareCaseSummaryData(...)` as in Mode A.
|
|
125
|
+
|
|
126
|
+
### `prepareCaseSummaryData(primaryFields, secondaryFields, getPConnect)`
|
|
127
|
+
|
|
128
|
+
Helper that:
|
|
129
|
+
|
|
130
|
+
1. Iterates each field in both arrays.
|
|
131
|
+
2. Localizes the field value via `PCore.getLocaleUtils().getLocaleValue(value, classID, value)`.
|
|
132
|
+
3. Returns `{ arPrimaryFields: localizedPrimary, arSecondaryFields: localizedSecondary }`.
|
|
133
|
+
|
|
134
|
+
### Render
|
|
135
|
+
|
|
136
|
+
Delegates entirely to `<CaseSummaryFields>` DSE component, passing:
|
|
137
|
+
|
|
138
|
+
- `arPrimaryFields` — array of `{ name, value }` objects for primary display
|
|
139
|
+
- `arSecondaryFields` — array of `{ name, value, displayLabel }` objects for secondary display
|
|
140
|
+
|
|
141
|
+
## Visual Specifications
|
|
142
|
+
|
|
143
|
+
- `<CaseSummaryFields>` handles all rendering — see the DSE component skill for details.
|
|
144
|
+
- Primary fields: large text, no label.
|
|
145
|
+
- Secondary fields: label + value pairs.
|
|
146
|
+
|
|
147
|
+
**CSS-only implementation notes (for `CaseSummaryFields` wrapper):**
|
|
148
|
+
|
|
149
|
+
- Container: `display: flex; flex-direction: column; gap: 8px`.
|
|
150
|
+
- Primary field value: `font-size: 1rem; font-weight: 600`.
|
|
151
|
+
- Secondary field row: `display: flex; gap: 4px; font-size: 0.875rem`.
|
|
152
|
+
- Secondary label: `color: var(--secondary-text-color)`.
|
|
153
|
+
|
|
154
|
+
## Edge Cases & Special Logic
|
|
155
|
+
|
|
156
|
+
- If both `arPrimaryFields` prop and children are present, the direct prop takes priority.
|
|
157
|
+
- `prepareCaseSummaryData` — guard against undefined/null field values before passing to `getLocaleValue`.
|
|
158
|
+
- `displayLabel` on secondary fields controls whether the field label is shown alongside the value.
|
|
159
|
+
- If `arSecondaryFields` is empty, the secondary section is not rendered.
|
|
160
|
+
|
|
161
|
+
## Dependencies
|
|
162
|
+
|
|
163
|
+
- `prepareCaseSummaryData` from `./utils` (local helper)
|
|
164
|
+
- `CaseSummaryFields` — DSE component registered in the component registry
|
|
165
|
+
- `PCore.getLocaleUtils().getLocaleValue()` — value localization
|
|
166
|
+
|
|
167
|
+
## Design System Mapping
|
|
168
|
+
|
|
169
|
+
**UI control type:** Read-only case summary panel with primary and secondary field groups.
|
|
170
|
+
|
|
171
|
+
Listed design systems are examples only.
|
|
172
|
+
|
|
173
|
+
| Design System | Recommended Approach |
|
|
174
|
+
| ------------------ | -------------------------------------------------- |
|
|
175
|
+
| Default (CSS only) | Flexbox column with CSS-styled field rows |
|
|
176
|
+
| MUI | `<Typography>` variants for primary/secondary text |
|
|
177
|
+
| Ant Design | `<Descriptions>` with `bordered={false}` |
|
|
178
|
+
| Chakra UI | `<VStack>` with `<Text>` variants |
|
|
179
|
+
| Shadcn/ui | Custom `<dl>/<dt>/<dd>` or card |
|
|
180
|
+
|
|
181
|
+
When implementing in a specific design system:
|
|
182
|
+
|
|
183
|
+
- Always localize field values before display — use `PCore.getLocaleUtils().getLocaleValue()`
|
|
184
|
+
- `CaseSummaryFields` is a DSE component — implement it separately and call it from here
|
|
185
|
+
- Primary fields have no labels; secondary fields have labels
|