@pega/sdk 0.0.4 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -3
- package/dist/index.js +977 -92
- package/package.json +1 -1
- package/templates/angular-sdk-reference/package.json +12 -12
- package/templates/angular-sdk-reference/tsconfig.json +1 -1
- package/templates/react-native-sdk-reference/.claude/settings.json +5 -0
- package/templates/react-native-sdk-reference/.prettierignore +17 -0
- package/templates/react-native-sdk-reference/.vscode/extensions.json +1 -0
- package/templates/react-native-sdk-reference/.vscode/settings.json +7 -0
- package/templates/react-native-sdk-reference/AGENTS.md +3 -0
- package/templates/react-native-sdk-reference/CLAUDE.md +1 -0
- package/templates/react-native-sdk-reference/README.md +56 -0
- package/templates/react-native-sdk-reference/app.json +40 -5
- package/templates/react-native-sdk-reference/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
- package/templates/react-native-sdk-reference/assets/expo.icon/Assets/grid.png +0 -0
- package/templates/react-native-sdk-reference/assets/expo.icon/icon.json +35 -0
- package/templates/react-native-sdk-reference/assets/icons/bell.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/clock.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/cross.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/donut.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/gear.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/globe.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/internet.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/music.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/right-arrow.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/speed.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/MediaCo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/adaptive-icon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/android-icon-background.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/android-icon-foreground.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/android-icon-monochrome.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/expo-badge-white.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/expo-badge.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/expo-logo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/favicon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/icon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/logo-glow.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/partial-react-logo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/react-logo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/react-logo@2x.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/react-logo@3x.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/splash-icon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/tutorial-web.png +0 -0
- package/templates/react-native-sdk-reference/eslint.config.mjs +68 -0
- package/templates/react-native-sdk-reference/package.json +59 -14
- package/templates/react-native-sdk-reference/pega-constellationjs-0.26.3.tgz +0 -0
- package/templates/react-native-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
- package/templates/react-native-sdk-reference/pega-sdk-types-0.1.0.tgz +0 -0
- package/templates/react-native-sdk-reference/sdk-config.json +31 -9
- package/templates/react-native-sdk-reference/src/app/_layout.tsx +38 -0
- package/templates/react-native-sdk-reference/src/app/home/_layout.tsx +39 -0
- package/templates/react-native-sdk-reference/src/app/home/contact.tsx +11 -0
- package/templates/react-native-sdk-reference/src/app/home/index.tsx +36 -0
- package/templates/react-native-sdk-reference/src/app/home/shop.tsx +11 -0
- package/templates/react-native-sdk-reference/src/app/home/your-services.tsx +11 -0
- package/templates/react-native-sdk-reference/src/app/index.tsx +72 -0
- package/templates/react-native-sdk-reference/src/app/workarea.tsx +135 -0
- package/templates/react-native-sdk-reference/src/bridge/Context/StoreContext.ts +4 -0
- package/templates/react-native-sdk-reference/src/bridge/RootComponent.tsx +12 -0
- package/templates/react-native-sdk-reference/src/bridge/react_pconnect.jsx +334 -0
- package/templates/react-native-sdk-reference/src/components/common/DisplayField.tsx +29 -0
- package/templates/react-native-sdk-reference/src/components/common/FormFieldWrapper.tsx +5 -0
- package/templates/react-native-sdk-reference/src/components/common/HelperText.tsx +11 -0
- package/templates/react-native-sdk-reference/src/components/common/LabelText.tsx +22 -0
- package/templates/react-native-sdk-reference/src/components/common/inputTheme.ts +17 -0
- package/templates/react-native-sdk-reference/src/components/design-system/AutoComplete.tsx +126 -0
- package/templates/react-native-sdk-reference/src/components/design-system/FieldGroup.tsx +72 -0
- package/templates/react-native-sdk-reference/src/components/design-system/Radio.tsx +61 -0
- package/templates/react-native-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +196 -0
- package/templates/react-native-sdk-reference/src/components/field/AutoComplete/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +89 -0
- package/templates/react-native-sdk-reference/src/components/field/Checkbox/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Currency/Currency.tsx +84 -0
- package/templates/react-native-sdk-reference/src/components/field/Currency/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Date/Date.tsx +94 -0
- package/templates/react-native-sdk-reference/src/components/field/Date/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +211 -0
- package/templates/react-native-sdk-reference/src/components/field/Dropdown/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Email/Email.tsx +81 -0
- package/templates/react-native-sdk-reference/src/components/field/Email/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Group/Group.tsx +47 -0
- package/templates/react-native-sdk-reference/src/components/field/Group/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Integer/Integer.tsx +84 -0
- package/templates/react-native-sdk-reference/src/components/field/Integer/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Phone/Phone.tsx +85 -0
- package/templates/react-native-sdk-reference/src/components/field/Phone/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +118 -0
- package/templates/react-native-sdk-reference/src/components/field/RadioButtons/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/field/TextArea/TextArea.tsx +86 -0
- package/templates/react-native-sdk-reference/src/components/field/TextArea/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/TextInput/TextInput.tsx +84 -0
- package/templates/react-native-sdk-reference/src/components/field/TextInput/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/URL/URL.tsx +86 -0
- package/templates/react-native-sdk-reference/src/components/field/URL/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/helpers/data_page.ts +20 -0
- package/templates/react-native-sdk-reference/src/components/helpers/event-utils.ts +20 -0
- package/templates/react-native-sdk-reference/src/components/helpers/instructions-utils.ts +57 -0
- package/templates/react-native-sdk-reference/src/components/helpers/state-utils.tsx +46 -0
- package/templates/react-native-sdk-reference/src/components/helpers/template-utils.ts +75 -0
- package/templates/react-native-sdk-reference/src/components/helpers/utils.ts +339 -0
- package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/ActionButtons.tsx +63 -0
- package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Assignment/Assignment.tsx +348 -0
- package/templates/react-native-sdk-reference/src/components/infra/Assignment/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/AssignmentCard.tsx +56 -0
- package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/FlowContainer.tsx +57 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/helpers.ts +137 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/RootContainer.tsx +52 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/helper.ts +128 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/index.tsx +59 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/ViewContainer.tsx +31 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/helper.ts +39 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/helper.ts +9 -0
- package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/ErrorBoundary.tsx +53 -0
- package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/MultiStep/MultiStep.tsx +24 -0
- package/templates/react-native-sdk-reference/src/components/infra/MultiStep/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Reference/Reference.tsx +68 -0
- package/templates/react-native-sdk-reference/src/components/infra/Reference/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Reference/utils.ts +16 -0
- package/templates/react-native-sdk-reference/src/components/infra/Region/Region.tsx +10 -0
- package/templates/react-native-sdk-reference/src/components/infra/Region/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/View/View.tsx +49 -0
- package/templates/react-native-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +38 -0
- package/templates/react-native-sdk-reference/src/components/template/DefaultForm/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/template/DefaultForm/utils/index.ts +28 -0
- package/templates/react-native-sdk-reference/src/components/template/Details/Details.tsx +82 -0
- package/templates/react-native-sdk-reference/src/components/template/Details/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/template/OneColumn/OneColumn.tsx +29 -0
- package/templates/react-native-sdk-reference/src/components/template/OneColumn/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/context/LoaderContext.tsx +42 -0
- package/templates/react-native-sdk-reference/src/mediaco/AdvBanner.tsx +62 -0
- package/templates/react-native-sdk-reference/src/mediaco/Header.tsx +60 -0
- package/templates/react-native-sdk-reference/src/mediaco/HomeScreen.tsx +78 -0
- package/templates/react-native-sdk-reference/src/mediaco/QuickActions.tsx +68 -0
- package/templates/react-native-sdk-reference/src/mediaco/ResolutionScreen.tsx +48 -0
- package/templates/react-native-sdk-reference/src/mediaco/SafeArea.tsx +11 -0
- package/templates/react-native-sdk-reference/src/mediaco/TabBar.tsx +102 -0
- package/templates/react-native-sdk-reference/src/mediaco/YourServices.tsx +90 -0
- package/templates/react-native-sdk-reference/src/sdk-pega-component-map.ts +64 -0
- package/templates/react-native-sdk-reference/src/types/PConnProps.d.ts +41 -0
- package/templates/react-native-sdk-reference/src/utils/auth.ts +62 -0
- package/templates/react-native-sdk-reference/src/utils/init-pcore.ts +37 -0
- package/templates/react-native-sdk-reference/src/utils/pcore-polyfills.ts +66 -0
- package/templates/react-native-sdk-reference/tsconfig.json +9 -8
- package/templates/react-sdk-reference/.ai-common/agents/embedded-flow-expert.md +171 -0
- package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +44 -48
- package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions-embedded.md +119 -0
- package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions.md +192 -0
- package/templates/react-sdk-reference/.ai-common/instructions/component-map.md +35 -0
- package/templates/react-sdk-reference/.ai-common/instructions/dse-component.md +47 -0
- package/templates/react-sdk-reference/.ai-common/instructions/embedded-component.md +134 -0
- package/templates/react-sdk-reference/.ai-common/instructions/field-component.md +50 -0
- package/templates/react-sdk-reference/.ai-common/instructions/template-component.md +43 -0
- package/templates/react-sdk-reference/.ai-common/instructions/widget-component.md +45 -0
- package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +193 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/component-manifest.json +106 -2
- package/templates/react-sdk-reference/.ai-common/prompts/embedded-component-manifest.md +155 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +358 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +165 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-embedded-components.md +315 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +190 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +227 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +172 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -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/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +61 -25
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +176 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +180 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/DetailsFields.md +180 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroup.md +153 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroupList.md +136 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldValueList.md +140 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +85 -41
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Pulse.md +97 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +226 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +35 -20
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension.md +169 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/analyze-customer-repo.md +130 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/authenticate.md +311 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/run-and-verify-integration.md +156 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/wire-integration.md +476 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-components.md +190 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +157 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +178 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +189 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +136 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +126 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +115 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +119 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +136 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +99 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Group.md +88 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +102 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +142 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Multiselect.md +42 -53
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/ObjectReference.md +36 -60
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +113 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +100 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +153 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RichText.md +117 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +95 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +155 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/SemanticLink.md +35 -57
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +109 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextContent.md +27 -52
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +112 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +102 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +96 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +41 -78
- package/templates/react-sdk-reference/.ai-common/skills/infra-components.md +165 -0
- package/templates/react-sdk-reference/.ai-common/skills/infra-skills/ActionButtons.md +122 -0
- package/templates/react-sdk-reference/.ai-common/skills/infra-skills/MultiStep.md +178 -0
- package/templates/react-sdk-reference/.ai-common/skills/infra-skills/Stages.md +140 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-components.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +126 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +160 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/BannerPage.md +90 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +129 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +196 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +157 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +149 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +46 -31
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +141 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DefaultPage.md +40 -34
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Details.md +96 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsSubTabs.md +103 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md +85 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsTwoColumn.md +77 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DynamicTabs.md +103 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +130 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/HierarchicalForm.md +200 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboard.md +110 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboardPage.md +105 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/ListPage.md +21 -16
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +234 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +18 -23
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +161 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/OneColumn.md +114 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +132 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +173 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SimpleTable.md +44 -24
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +103 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SubTabs.md +89 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/TwoColumn.md +133 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +36 -43
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/WssNavBar.md +26 -45
- package/templates/react-sdk-reference/.ai-common/skills/widget-components.md +124 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +94 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +163 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/CaseHistory.md +90 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +68 -62
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +24 -19
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/QuickCreate.md +27 -44
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +35 -61
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +261 -0
- package/templates/react-sdk-reference/package.json +1 -1
- package/templates/react-sdk-reference/package.minimal.json +29 -0
- package/templates/react-sdk-reference/pega-auth-0.2.44.tgz +0 -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/MashupApp.tsx +8 -19
- package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
- package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +13 -3
- package/templates/react-native-sdk-reference/.github/AGENTS.md +0 -23
- package/templates/react-native-sdk-reference/.github/copilot-instructions.md +0 -40
- package/templates/react-native-sdk-reference/.github/skills/pega-sdk-component.md +0 -48
- package/templates/react-native-sdk-reference/App.tsx +0 -49
- 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 -75
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
- 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 -137
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +0 -152
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +0 -148
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
- package/templates/react-sdk-reference/.claude/skills/field-components.md +0 -295
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +0 -211
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +0 -99
- package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +0 -96
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +0 -145
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +0 -98
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +0 -117
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
- package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +0 -86
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +0 -104
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +0 -112
- package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +0 -90
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +0 -112
- package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +0 -116
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +0 -108
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +0 -143
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +0 -130
- package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +0 -142
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +0 -133
- package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +0 -139
- package/templates/react-sdk-reference/.claude/skills/widget-components.md +0 -260
- package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +0 -84
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +0 -151
- package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +0 -110
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
- 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/field-component.mdrules +0 -74
- 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 -193
- 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/DetailsFields.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
- 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/design-system-extension.mdrules +0 -294
- package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
- 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/Group.mdrules +0 -95
- 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/ObjectReference.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/RichText.mdrules +0 -143
- 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/SemanticLink.mdrules +0 -153
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
- 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-components.mdrules +0 -327
- 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/BannerPage.mdrules +0 -88
- 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/Details.mdrules +0 -93
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
- 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/SubTabs.mdrules +0 -84
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
- 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-components.mdrules +0 -276
- 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/CaseHistory.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
- 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/copilot-instructions.md +0 -243
- package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +0 -40
- package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +0 -77
- package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +0 -77
- package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +0 -95
- package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +0 -90
- package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +0 -192
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
- package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +0 -411
- package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +0 -205
- package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +0 -223
- package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +0 -229
- package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +0 -208
- 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/Banner.md +0 -152
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +0 -134
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +0 -118
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +0 -85
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +0 -232
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
- package/templates/react-sdk-reference/.github/skills/design-system-extension.md +0 -291
- package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
- package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +0 -88
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
- package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +0 -188
- package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +0 -173
- package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +0 -93
- package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +0 -129
- package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +0 -167
- package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +0 -149
- package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +0 -134
- package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +0 -231
- package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +0 -155
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
- package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +0 -107
- package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +0 -89
- package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +0 -86
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
- package/templates/react-sdk-reference/.github/skills/template-components.md +0 -321
- package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +0 -150
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +0 -106
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +0 -109
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +0 -97
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
- package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +0 -70
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
- package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +0 -114
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
- package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +0 -108
- package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +0 -82
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
- package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
- package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +0 -118
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
- package/templates/react-sdk-reference/AGENTS.md +0 -246
- package/templates/react-sdk-reference/pega-auth-0.2.42.tgz +0 -0
- /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
# Skill: Infrastructure (Chrome) Components
|
|
2
|
+
|
|
3
|
+
Create or replace infrastructure components in the project. Infrastructure components are the chrome the Pega runtime draws _around_ a case or an assignment — the action button row, the stage progress indicator, the step navigation — rather than the fields inside it. Most of them ship from the SDK adapter package and are never generated. Three are overridable, because they render inline with the form where SDK styling is the most visible mismatch.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Architecture Overview
|
|
8
|
+
|
|
9
|
+
Each infrastructure component lives in its own folder under the project's infrastructure components directory, named after the component. The folder typically contains: the component implementation file; optionally a re-export module; and optionally a companion stylesheet.
|
|
10
|
+
|
|
11
|
+
Infrastructure components differ from every other category in one important way: **they already exist**. Generating one produces an override that replaces the SDK's implementation. The Pega runtime keeps calling it with the contract it already uses, so the contract is not yours to design — only the markup and the styling are.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## What May Be Generated
|
|
16
|
+
|
|
17
|
+
| Component | Role | Generate? |
|
|
18
|
+
| ----------------- | ---------------------------------------------------- | --------- |
|
|
19
|
+
| `ActionButtons` | The Cancel / Save / Submit row beneath an assignment | Yes |
|
|
20
|
+
| `Stages` | The case stage progress indicator | Yes |
|
|
21
|
+
| `MultiStep` | Step navigation within a multi-step assignment | Yes |
|
|
22
|
+
| `NavBar` | Portal navigation shell | No |
|
|
23
|
+
| `DeferLoad` | Deferred content loader | No |
|
|
24
|
+
| `VerticalTabs` | Case view tab rail | No |
|
|
25
|
+
| `DashboardFilter` | Dashboard filtering controls | No |
|
|
26
|
+
|
|
27
|
+
The four marked "No" are structural plumbing tied to the SDK's own internals. Leave them to the SDK. If a request names one of them, skip it and say why.
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## Input Contract
|
|
32
|
+
|
|
33
|
+
**The three overridable components do not share an input shape.** This is the only category where that is true, so there is no single base contract to extend. Take each one's inputs from its own skill file.
|
|
34
|
+
|
|
35
|
+
| Component | Receives the PConnect accessor? | Other inputs |
|
|
36
|
+
| --------------- | ------------------------------- | -------------------------------------------------------------------- |
|
|
37
|
+
| `ActionButtons` | No | Two button-definition arrays and a press callback |
|
|
38
|
+
| `Stages` | Yes | The raw stage list |
|
|
39
|
+
| `MultiStep` | Yes | Child content, an item key, button definitions, and a press callback |
|
|
40
|
+
|
|
41
|
+
`ActionButtons` is the exception to the rule that every Pega component receives the PConnect accessor. It is handed plain display props by its parent and must not attempt to reach the runtime for its own data.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Implementation Patterns
|
|
46
|
+
|
|
47
|
+
### Display-Only Chrome (no PConnect accessor)
|
|
48
|
+
|
|
49
|
+
The component receives everything it needs as inputs and reports interaction back through a callback. It holds no local state and reads nothing from the store.
|
|
50
|
+
|
|
51
|
+
**Module Setup:** The component depends only on the design system's presentation primitives and the Pega locale utilities. Define the input contract as a plain input shape — it does not extend the project's base component interface, because no PConnect accessor is supplied.
|
|
52
|
+
|
|
53
|
+
**Main Component Logic** — steps in order:
|
|
54
|
+
|
|
55
|
+
1. Receive the input arrays and the callback. Treat every array input as optional and default it to empty.
|
|
56
|
+
2. Localize every label through the Pega locale utilities using the locale category the SDK component uses. Never render a raw input string as a label, and never hardcode label text.
|
|
57
|
+
3. Render the design system's primitives for each entry.
|
|
58
|
+
4. On interaction, invoke the supplied callback with exactly the arguments the SDK component passes. The callback signature is fixed by the runtime.
|
|
59
|
+
|
|
60
|
+
### Case-Aware Chrome (PConnect accessor, read-only)
|
|
61
|
+
|
|
62
|
+
The component receives the accessor so it can read case state and localize, but it never writes. It renders a derived view of data the runtime supplies.
|
|
63
|
+
|
|
64
|
+
**Module Setup:** The component depends on the design system's presentation primitives. Define the input contract as an extension of the project's base component interface.
|
|
65
|
+
|
|
66
|
+
**Main Component Logic** — steps in order:
|
|
67
|
+
|
|
68
|
+
1. Receive `getPConnect` plus the component's own inputs; call `getPConnect()` into `pConn`.
|
|
69
|
+
2. Normalize the raw input through the SDK utility the component is documented to use. The runtime supplies unfiltered data; the utility decides what is displayable.
|
|
70
|
+
3. Read any case-level state the component needs from `pConn`, using the runtime's constants rather than literal property names.
|
|
71
|
+
4. Derive a display model — one entry per item, carrying its localized label and its state flags — before rendering. Keep derivation separate from markup so the same logic survives a design system change.
|
|
72
|
+
5. Render the derived model. Do not commit anything to the store; this component is display-only.
|
|
73
|
+
|
|
74
|
+
### Container Chrome (renders children and resolves sub-components)
|
|
75
|
+
|
|
76
|
+
The component wraps the form content the runtime hands it and arranges other Pega components around it.
|
|
77
|
+
|
|
78
|
+
**Module Setup:** The component depends on the design system's presentation primitives and the project's component registry. Define the input contract as an extension of the project's base component interface.
|
|
79
|
+
|
|
80
|
+
**Main Component Logic** — steps in order:
|
|
81
|
+
|
|
82
|
+
1. Resolve every Pega sub-component from the project's component registry, never by direct import. The registry is what lets a customer's own version win.
|
|
83
|
+
2. Receive `getPConnect`, the child content, and the component's own inputs.
|
|
84
|
+
3. Derive which part of the structure is active from the state flags the runtime supplies, applying the documented fallback when nothing is marked active.
|
|
85
|
+
4. Render the surrounding structure, and render the child content only inside the active part.
|
|
86
|
+
5. Forward the accessor, the item key, the button definitions and the press callback to the resolved sub-component unchanged. Do not reshape them.
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## Localization
|
|
91
|
+
|
|
92
|
+
Every label an infrastructure component renders comes from Pega, not from the component.
|
|
93
|
+
|
|
94
|
+
- Button and action labels use `PCore.getLocaleUtils().getLocaleValue(name, category)` with the locale category the SDK component uses.
|
|
95
|
+
- Case and stage names use `pConn.getLocalizationService().getLocalizedText(name)`.
|
|
96
|
+
|
|
97
|
+
The value arriving in the input is a key, not display text. Rendering it directly will look correct in an English environment and break in every other one.
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Resolving Other Components
|
|
102
|
+
|
|
103
|
+
When an infrastructure component renders another Pega component, resolve it through the project's component registry rather than importing it. An override only takes effect if the components that render it look it up by name — importing a sub-component directly pins it to the SDK's version and silently discards the customer's.
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## Design System Adaptation
|
|
108
|
+
|
|
109
|
+
The runtime contract — inputs, callback signatures, derivation logic, and localization — is identical regardless of design system. Only the rendered markup changes.
|
|
110
|
+
|
|
111
|
+
**1. Check the component-specific skill file** — `{{SKILL_DIR}}/infra-skills/<ComponentName>.md` contains a **Design System Mapping** section. Use it as a starting point.
|
|
112
|
+
|
|
113
|
+
**2. If the chosen design system is not covered** — use the component purpose description to identify the appropriate primitives (button, stepper, breadcrumb, divider, list).
|
|
114
|
+
|
|
115
|
+
**3. Discover the API from installed packages** — confirm component names and inputs from the design system's type declaration files before writing the render markup.
|
|
116
|
+
|
|
117
|
+
**4. Common chrome UI primitive mapping:**
|
|
118
|
+
|
|
119
|
+
| Chrome pattern | Typical DS equivalent |
|
|
120
|
+
| ----------------------------- | -------------------------------------------------------------------------- |
|
|
121
|
+
| Action row | Button group, Toolbar, or a flex row of Buttons |
|
|
122
|
+
| Primary / secondary buttons | The DS's emphasis or variant inputs |
|
|
123
|
+
| Separator above an action row | Divider, Separator, or a bordered container |
|
|
124
|
+
| Stage progression | Breadcrumbs, Steps, or Stepper |
|
|
125
|
+
| Step navigation | Stepper (horizontal and vertical variants) |
|
|
126
|
+
| Step state indicator | The stepper's own completed / active / pending states, or a numbered badge |
|
|
127
|
+
|
|
128
|
+
**5. Icons** — if the DS has a companion icon package, check its exports before using any icon name. Never guess icon names. Decorative icons must be hidden from assistive technology.
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Registration
|
|
133
|
+
|
|
134
|
+
Register infrastructure overrides in the project's component map under the component's Pega name. Because the SDK's own components are contributed as a spread of built-in entries, **an override must appear after that spread** — an entry listed before it is replaced by the SDK's version and the override silently does nothing.
|
|
135
|
+
|
|
136
|
+
Never remove the spread. It supplies the infrastructure components that are not overridable, and removing it breaks rendering entirely.
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Existing Infrastructure Components
|
|
141
|
+
|
|
142
|
+
| Component | Description | Key APIs |
|
|
143
|
+
| --------------- | ----------------------------- | ------------------------------------------------------- |
|
|
144
|
+
| ActionButtons | Assignment action button row | `PCore.getLocaleUtils()` |
|
|
145
|
+
| Stages | Case stage progress indicator | `PCore.getSDKUtils()`, `PCore.getConstants().CASE_INFO` |
|
|
146
|
+
| MultiStep | Assignment step navigation | `PCore.getSDKUtils()`, the project's component registry |
|
|
147
|
+
| NavBar | Portal navigation shell | SDK-provided — not generated |
|
|
148
|
+
| DeferLoad | Deferred content loader | SDK-provided — not generated |
|
|
149
|
+
| VerticalTabs | Case view tab rail | SDK-provided — not generated |
|
|
150
|
+
| DashboardFilter | Dashboard filter controls | SDK-provided — not generated |
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Key Conventions
|
|
155
|
+
|
|
156
|
+
1. **Default export** — Each component is exported as the module's default export, except where the component's own skill file documents otherwise.
|
|
157
|
+
2. **The contract is fixed** — Inputs, callback signatures and localization come from the SDK component being replaced. Only markup and styling are yours to change.
|
|
158
|
+
3. **Not every chrome component gets the accessor** — `ActionButtons` receives plain display props. Do not add a PConnect accessor to it.
|
|
159
|
+
4. **Chrome is display-only** — These components report interaction through the callback they were given. None of them writes to the store directly.
|
|
160
|
+
5. **Localize everything** — Labels arrive as keys. Resolve them through the Pega locale utilities or the localization service.
|
|
161
|
+
6. **Resolve sub-components from the registry** — never by direct import, or customer overrides are discarded.
|
|
162
|
+
7. **Register after the SDK spread** — an override listed before the spread has no effect.
|
|
163
|
+
8. **Derive before rendering** — compute the display model from the runtime's raw inputs first, then render it. This is what keeps the component portable across design systems.
|
|
164
|
+
9. **Keep repeated elements stable** — every item in a rendered collection needs a stable identity so the runtime can update the list without reordering the wrong entries.
|
|
165
|
+
10. **Case chrome is not assignment chrome** — `Stages` belongs to the case view and never appears inside an embedded assignment. `ActionButtons` and `MultiStep` do.
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Skill: ActionButtons
|
|
2
|
+
|
|
3
|
+
Assignment action button row. Renders the secondary and primary actions available on the current assignment — typically Cancel, Save for later, and Submit — beneath the form content.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`infra-components.md`](../infra-components.md) — covers architecture, the override contract, localization, and registration conventions common to ALL infrastructure components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Displays the actions the Pega runtime has determined are available on the current assignment, split into a secondary group and a primary group, and reports the chosen action back to its parent. It is a pure display component: it decides nothing about which actions exist, what they do, or whether they are permitted.
|
|
12
|
+
|
|
13
|
+
It renders wherever an assignment renders, which includes an embedded assignment. In an embedded flow it is the most visible piece of chrome, and therefore the one most worth generating in the customer's design system.
|
|
14
|
+
|
|
15
|
+
## Pega Metadata
|
|
16
|
+
|
|
17
|
+
- **Registration key:** `ActionButtons` (in the project's component map)
|
|
18
|
+
- **Category:** Infrastructure — case chrome, overridable
|
|
19
|
+
- **Extends:** Nothing. This component does **not** extend the project's base component interface and receives **no** PConnect accessor.
|
|
20
|
+
- **Rendered by:** The SDK's assignment card, which resolves it from the component registry and supplies every input.
|
|
21
|
+
|
|
22
|
+
> ⚠️ **CRITICAL — THIS COMPONENT RECEIVES NO PCONNECT ACCESSOR**
|
|
23
|
+
>
|
|
24
|
+
> Every other Pega component is handed `getPConnect`. This one is not. Do not add it to the input contract, do not attempt to read case state, and do not call the actions API. Everything the component needs arrives as a plain input, and the only thing it does with a user interaction is invoke the callback it was given.
|
|
25
|
+
|
|
26
|
+
## Inputs
|
|
27
|
+
|
|
28
|
+
| Prop | Type | Required | Description |
|
|
29
|
+
| -------------------- | ---------------------------------------------- | -------- | --------------------------------------------------------------------- |
|
|
30
|
+
| `arMainButtons` | `ActionButtonEntry[]` | No | Primary actions (e.g. Submit). Default empty array |
|
|
31
|
+
| `arSecondaryButtons` | `ActionButtonEntry[]` | No | Secondary actions (e.g. Cancel, Save for later). Default empty array |
|
|
32
|
+
| `onButtonPress` | `(action: string, buttonType: string) => void` | Yes | Invoked when any button is activated. See the callback contract below |
|
|
33
|
+
|
|
34
|
+
Each `ActionButtonEntry` carries:
|
|
35
|
+
|
|
36
|
+
| Field | Type | Required | Description |
|
|
37
|
+
| ---------- | -------- | -------- | -------------------------------------------------------------------------------------- |
|
|
38
|
+
| `name` | `string` | Yes | The label **key**, to be localized before display. Also serves as the entry's identity |
|
|
39
|
+
| `jsAction` | `string` | Yes | The action identifier passed back through the callback |
|
|
40
|
+
| `actionID` | `string` | No | Additional runtime identifier. Not needed for rendering |
|
|
41
|
+
|
|
42
|
+
## Implementation Structure
|
|
43
|
+
|
|
44
|
+
**Module Setup:** The component depends only on the design system's button and separator primitives. Define the input contract as a plain input shape with the two arrays and the callback — it does not extend the project's base component interface.
|
|
45
|
+
|
|
46
|
+
**Main Component Logic** — steps in order:
|
|
47
|
+
|
|
48
|
+
1. Receive `arMainButtons` (default empty array), `arSecondaryButtons` (default empty array), and `onButtonPress` from inputs.
|
|
49
|
+
2. Resolve the localization helper once: `PCore.getLocaleUtils().getLocaleValue`, to be called with the button's `name` and the locale category `'Assignment'`.
|
|
50
|
+
3. Render a horizontal separator above the button row.
|
|
51
|
+
4. Render the button row as two groups: the **secondary group first**, then the **primary group**. Within each group, render one button per entry in the order supplied, keyed by the entry's `name`.
|
|
52
|
+
5. Render each secondary entry using the design system's low-emphasis button treatment, and each primary entry using its high-emphasis treatment. The label is the localized value of the entry's `name`.
|
|
53
|
+
6. On activation, invoke `onButtonPress` with the entry's `jsAction` and the literal group discriminator — `'secondary'` for a secondary entry, `'primary'` for a main entry.
|
|
54
|
+
|
|
55
|
+
## Behavioral Contract
|
|
56
|
+
|
|
57
|
+
### Callback Contract
|
|
58
|
+
|
|
59
|
+
`onButtonPress(jsAction, buttonType)` — two positional string arguments, in this order:
|
|
60
|
+
|
|
61
|
+
1. The activated entry's `jsAction` value, passed through unchanged.
|
|
62
|
+
2. The group the entry belongs to: the literal `'primary'` for entries from `arMainButtons`, the literal `'secondary'` for entries from `arSecondaryButtons`.
|
|
63
|
+
|
|
64
|
+
Both arguments are fixed by the runtime. Do not pass the entry object, the event, the index, or the localized label. Do not substitute the entry's `actionID` for its `jsAction`.
|
|
65
|
+
|
|
66
|
+
### Localization
|
|
67
|
+
|
|
68
|
+
Every label is resolved through `PCore.getLocaleUtils().getLocaleValue(name, 'Assignment')`. The `name` field is a key, not display text — rendering it directly produces untranslated labels in any non-default locale. The locale category is the literal `'Assignment'`; it is not derived from the case or the assignment.
|
|
69
|
+
|
|
70
|
+
### Ordering
|
|
71
|
+
|
|
72
|
+
The secondary group renders before the primary group. Within each group, entries render in the order the runtime supplied them. Do not sort, deduplicate, or re-prioritize.
|
|
73
|
+
|
|
74
|
+
### Interaction Scope
|
|
75
|
+
|
|
76
|
+
The component performs no action itself. It does not submit, cancel, validate, confirm, or navigate. It reports the interaction and stops. Any confirmation dialog, disabled state during submission, or navigation belongs to the parent.
|
|
77
|
+
|
|
78
|
+
## Visual Specifications
|
|
79
|
+
|
|
80
|
+
| Element | Description |
|
|
81
|
+
| ---------------- | ------------------------------------------------------------------------------- |
|
|
82
|
+
| Separator | A full-width horizontal rule above the button row |
|
|
83
|
+
| Row | Secondary group aligned to the leading edge, primary group to the trailing edge |
|
|
84
|
+
| Secondary button | Low-emphasis treatment — text or ghost button, no fill |
|
|
85
|
+
| Primary button | High-emphasis treatment — filled, with the design system's accent colour |
|
|
86
|
+
|
|
87
|
+
**CSS-only implementation notes (if implementing without design system button components):**
|
|
88
|
+
|
|
89
|
+
- Separator: `border: none; border-top: 1px solid <divider colour>; margin-top: 1rem`.
|
|
90
|
+
- Row: `display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; margin-top: 0.5rem`.
|
|
91
|
+
- Group: `display: flex; flex-direction: row; gap: 0.5rem`.
|
|
92
|
+
- Secondary button: transparent background, no border, accent-coloured text, subtle tinted background on hover.
|
|
93
|
+
- Primary button: accent-coloured fill, contrasting text, raised surface treatment, darker fill on hover.
|
|
94
|
+
- Both buttons: `display: inline-flex; align-items: center; justify-content: center; border-radius: 4px; cursor: pointer`, with a transition on background colour.
|
|
95
|
+
|
|
96
|
+
## Edge Cases & Special Logic
|
|
97
|
+
|
|
98
|
+
- **Both arrays empty.** The parent already suppresses the component when there are no buttons at all, but the component must still tolerate empty or absent arrays and render nothing but its own container.
|
|
99
|
+
- **One array empty.** Render the other group and leave the empty group's slot in place, so the remaining group keeps its edge alignment rather than sliding across the row.
|
|
100
|
+
- **A single group with many entries.** Do not wrap, truncate, or collapse into an overflow menu. The runtime decides how many actions exist.
|
|
101
|
+
- **Duplicate `name` values.** The `name` doubles as the entry's identity in the rendered list. If the runtime supplies duplicates, fall back to combining the name with its position so the two entries stay distinct.
|
|
102
|
+
- **Missing `jsAction`.** Pass through whatever the entry carries. Do not substitute a default — a silently wrong action identifier is worse than a failed call the runtime can report.
|
|
103
|
+
- **Rapid repeated activation.** The component does not debounce or disable. If the parent needs that, the parent applies it.
|
|
104
|
+
|
|
105
|
+
## Dependencies
|
|
106
|
+
|
|
107
|
+
- `PCore.getLocaleUtils().getLocaleValue(name, 'Assignment')` — resolves every button label.
|
|
108
|
+
- The design system's button primitive, in two emphasis levels.
|
|
109
|
+
- The design system's separator or divider primitive.
|
|
110
|
+
|
|
111
|
+
No component registry lookups, no data page calls, no case info access.
|
|
112
|
+
|
|
113
|
+
## Design System Mapping
|
|
114
|
+
|
|
115
|
+
**UI control type:** An action bar — a divider followed by two opposed groups of buttons.
|
|
116
|
+
|
|
117
|
+
- **Primary button** → the DS's filled, contained, or solid button variant
|
|
118
|
+
- **Secondary button** → the DS's text, ghost, subtle, or tertiary variant
|
|
119
|
+
- **Row** → the DS's button group, toolbar, or a flex container with space between the two groups
|
|
120
|
+
- **Separator** → the DS's divider or separator component
|
|
121
|
+
|
|
122
|
+
Use native button semantics so the row is reachable and operable by keyboard. Buttons carry no explicit role or label attributes beyond their localized text content — the text is the accessible name, which is another reason the label must be localized rather than rendered from the raw key.
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
# Skill: MultiStep
|
|
2
|
+
|
|
3
|
+
Assignment step navigation. Renders the ordered steps of a multi-step assignment as a stepper, and hosts the current step's form content inside it.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`infra-components.md`](../infra-components.md) — covers architecture, the override contract, localization, and registration conventions common to ALL infrastructure components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Wraps the form content of a multi-step assignment with a progress indicator showing every step, which are done, which is active, and which are ahead. Unlike `Stages`, this is **assignment** chrome: it describes progress through the work item currently being completed, so it does render inside an embedded assignment.
|
|
12
|
+
|
|
13
|
+
The runtime supplies the step model and the form content. This component decides only how to arrange them.
|
|
14
|
+
|
|
15
|
+
> ⚠️ **CRITICAL — DO NOT SIMPLIFY THIS COMPONENT**
|
|
16
|
+
>
|
|
17
|
+
> A stepper that only renders a row of labels is not this component. All of the following are part of the contract and are frequently dropped:
|
|
18
|
+
>
|
|
19
|
+
> - [ ] **Two layouts.** A vertical layout and a horizontal layout, selected by an input. Both must be implemented
|
|
20
|
+
> - [ ] **Sub-steps.** A step may contain nested steps. When it does, the nested list renders and the form content goes inside the active nested step, not the parent
|
|
21
|
+
> - [ ] **The active-step fallback.** When no step is marked active, a documented two-level fallback decides which one is
|
|
22
|
+
> - [ ] **Child content placement.** The form content renders inside the active step only — never above the stepper, never in every step
|
|
23
|
+
> - [ ] **Registry resolution.** The assignment card is resolved from the component registry, never imported
|
|
24
|
+
> - [ ] **Unchanged forwarding.** The accessor, item key, button definitions and press callback pass through to the assignment card exactly as received
|
|
25
|
+
|
|
26
|
+
## Pega Metadata
|
|
27
|
+
|
|
28
|
+
- **Registration key:** `MultiStep` (in the project's component map)
|
|
29
|
+
- **Category:** Infrastructure — case chrome, overridable
|
|
30
|
+
- **Extends:** The project's base component interface
|
|
31
|
+
- **Rendered by:** The SDK's assignment component, when the assignment has navigation steps
|
|
32
|
+
- **Renders:** `AssignmentCard`, resolved from the component registry
|
|
33
|
+
|
|
34
|
+
## Inputs
|
|
35
|
+
|
|
36
|
+
| Prop | Type | Required | Description |
|
|
37
|
+
| ----------------------- | ---------------------------------------------- | -------- | -------------------------------------------------------------------------------------- |
|
|
38
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
39
|
+
| `children` | renderable content | No | The current step's form content, supplied by the runtime |
|
|
40
|
+
| `itemKey` | `string` | Yes | Work item identifier. Forwarded to the assignment card. Default empty string |
|
|
41
|
+
| `actionButtons` | `any[]` | Yes | Action button definitions. Forwarded to the assignment card unchanged, not parsed here |
|
|
42
|
+
| `onButtonPress` | `(action: string, buttonType: string) => void` | Yes | Action press callback. Forwarded to the assignment card |
|
|
43
|
+
| `bIsVertical` | `boolean` | Yes | Selects the vertical layout when true, the horizontal layout when false |
|
|
44
|
+
| `arNavigationSteps` | `any[]` | Yes | The ordered step model |
|
|
45
|
+
| `arCurrentStepIndicies` | `number[]` | No | Supplied by the runtime but not used. Accept it; do not rely on it |
|
|
46
|
+
|
|
47
|
+
Each navigation step entry carries:
|
|
48
|
+
|
|
49
|
+
| Field | Type | Description |
|
|
50
|
+
| ---------------- | -------- | ---------------------------------------------------------------------------------------- |
|
|
51
|
+
| `name` | `string` | The step label |
|
|
52
|
+
| `ID` | `string` | The step identifier, used to match the active step |
|
|
53
|
+
| `actionID` | `string` | A stable identifier suitable for identifying the step in a rendered list |
|
|
54
|
+
| `visited_status` | `string` | The step's progress state — `'current'`, `'success'`, or a value meaning not yet reached |
|
|
55
|
+
| `steps` | `any[]` | Optional nested sub-steps, each with the same shape |
|
|
56
|
+
|
|
57
|
+
## Implementation Structure
|
|
58
|
+
|
|
59
|
+
**Module Setup:** The component depends on the design system's stepper primitives in both orientations, and on the project's component registry to resolve the assignment card. Define the input contract as an extension of the project's base component interface with the step model, the layout flag, the item key, the action button definitions, and the press callback.
|
|
60
|
+
|
|
61
|
+
**Main Component Logic** — steps in order:
|
|
62
|
+
|
|
63
|
+
1. Resolve `AssignmentCard` from the project's component registry. Do not import it.
|
|
64
|
+
2. Receive `getPConnect`, `children`, `itemKey` (default empty string), `actionButtons`, `onButtonPress`, `bIsVertical`, and `arNavigationSteps` from inputs.
|
|
65
|
+
3. Resolve the layout utilities from `PCore.getSDKUtils()`: `getVBodyClass`, `getAutoFlexClass`, and `isLastStep`. Record the total step count from the length of `arNavigationSteps`.
|
|
66
|
+
4. Resolve the active step. Take the first entry whose `visited_status` is `'current'`. If there is none, take the **last** entry whose `visited_status` is `'success'`. If there is none of those either, take the first entry.
|
|
67
|
+
5. Define a press handler that forwards its two arguments to `onButtonPress` unchanged.
|
|
68
|
+
6. Branch on `bIsVertical` and render the corresponding layout, described below. Both layouts render the same step model and place the child content in the same place; only the arrangement differs.
|
|
69
|
+
7. Wherever the child content is placed, render it inside the resolved assignment card, passing `getPConnect`, `itemKey`, `actionButtons` and the press handler, with the child content as the card's own content.
|
|
70
|
+
|
|
71
|
+
### Vertical Layout
|
|
72
|
+
|
|
73
|
+
Render a vertical stepper. For each step in order, keyed by its `actionID`, render a step block containing:
|
|
74
|
+
|
|
75
|
+
- A header carrying the step's progress state, holding a circular indicator with the step's position number (one-based) and, when the step is active, its label
|
|
76
|
+
- A body whose styling class comes from `getVBodyClass(index, totalSteps)`
|
|
77
|
+
|
|
78
|
+
Inside the body: when the step has sub-steps, render them as a list — one item per sub-step, each keyed by its own identifier, showing a state indicator icon and the sub-step label, and hosting the assignment card when that sub-step is the active one. When the step has no sub-steps and is the active step, host the assignment card directly in the body.
|
|
79
|
+
|
|
80
|
+
### Horizontal Layout
|
|
81
|
+
|
|
82
|
+
Render a horizontal stepper in two parts.
|
|
83
|
+
|
|
84
|
+
First, a header strip: for each step in order, keyed by its `actionID`, a header carrying the step's progress state, holding a circular indicator with the step's position number and the step's label when active. Between consecutive headers, render a connector line whose flex behaviour comes from `getAutoFlexClass(step, arNavigationSteps)`. Suppress the connector after the final step, determined by `isLastStep(index, totalSteps)`.
|
|
85
|
+
|
|
86
|
+
Then, below the strip: for each step, when it has sub-steps, render them as a list with the same shape as the vertical layout; when it has no sub-steps and its `ID` matches the active step's `ID`, host the assignment card.
|
|
87
|
+
|
|
88
|
+
## Behavioral Contract
|
|
89
|
+
|
|
90
|
+
### Active Step Resolution
|
|
91
|
+
|
|
92
|
+
Three levels, in order:
|
|
93
|
+
|
|
94
|
+
1. The first step whose `visited_status` is `'current'`
|
|
95
|
+
2. Otherwise, the **last** step whose `visited_status` is `'success'` — the furthest point reached, not the first
|
|
96
|
+
3. Otherwise, the first step
|
|
97
|
+
|
|
98
|
+
The fallback is not defensive padding. A step model with nothing marked current is a normal state, and skipping the fallback means the form content renders nowhere and the assignment appears blank.
|
|
99
|
+
|
|
100
|
+
### Child Content Placement
|
|
101
|
+
|
|
102
|
+
The child content is the current step's form. It renders **once**, inside the active step, wrapped by the assignment card. Rendering it outside the stepper, above it, or in every step are all wrong — the first two lose the association between the step and its form, the third renders the form repeatedly.
|
|
103
|
+
|
|
104
|
+
When the active step has sub-steps, the content belongs to the active **sub**-step, not the parent step.
|
|
105
|
+
|
|
106
|
+
### Assignment Card Delegation
|
|
107
|
+
|
|
108
|
+
The assignment card is resolved from the project's component registry so that a customer's own override wins. It receives `getPConnect`, `itemKey`, `actionButtons` and the press callback, and the form content as its content.
|
|
109
|
+
|
|
110
|
+
`actionButtons` is forwarded **as received**. This component does not split it into primary and secondary groups, does not localize button labels, and does not render buttons itself — the assignment card does all of that.
|
|
111
|
+
|
|
112
|
+
### Step State
|
|
113
|
+
|
|
114
|
+
Each step's `visited_status` drives its visual state: active, completed, or not yet reached. Apply the state to the step's header so the indicator and the label pick it up together. Step labels are shown for the active step; the position number identifies the others.
|
|
115
|
+
|
|
116
|
+
### Sub-Steps
|
|
117
|
+
|
|
118
|
+
A step's `steps` field is optional. When present, the parent step contributes only its header and the nested list — the form content belongs to whichever sub-step is active. When absent, the parent step itself may host the content. A step must never render both its own content and a sub-step list.
|
|
119
|
+
|
|
120
|
+
## Visual Specifications
|
|
121
|
+
|
|
122
|
+
| Element | Description |
|
|
123
|
+
| -------------------- | --------------------------------------------------------------------------------------------------- |
|
|
124
|
+
| Step indicator | A circle containing the step's one-based position number |
|
|
125
|
+
| Active indicator | Accent-coloured fill with contrasting text |
|
|
126
|
+
| Completed indicator | Completed-state fill with contrasting text |
|
|
127
|
+
| Future indicator | No fill, outlined, muted text |
|
|
128
|
+
| Step label | Shown for the active step; truncated with an ellipsis rather than wrapped |
|
|
129
|
+
| Vertical body | Indented to align beneath the step label, with a connector line running through the indented gutter |
|
|
130
|
+
| Horizontal connector | A line between consecutive step headers, absent after the final step |
|
|
131
|
+
| Sub-step item | An indicator icon and a label; the active sub-step is emphasized |
|
|
132
|
+
|
|
133
|
+
**CSS-only implementation notes (if implementing without design system stepper components):**
|
|
134
|
+
|
|
135
|
+
- Step indicator: `border-radius: 50%; height: 24px; width: 24px; position: relative`, with the number centred inside it.
|
|
136
|
+
- Step label: `display: inline-block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 50px`.
|
|
137
|
+
- Vertical stepper: `display: block; text-align: left`; each header `display: flex; align-items: center`; body indented by roughly the indicator width plus its gutter.
|
|
138
|
+
- Vertical connector: a left border drawn on the indented body, extending above and below it so consecutive steps join.
|
|
139
|
+
- Horizontal header strip: `display: flex; align-items: center; white-space: nowrap`; connectors flex to fill the space between headers.
|
|
140
|
+
- Sub-step list: `list-style: none`, indented from the parent step, with spacing between items.
|
|
141
|
+
- Active sub-step label: bold, full-strength text; inactive sub-step label: muted.
|
|
142
|
+
|
|
143
|
+
The active, completed and not-yet-reached states must be distinguishable by more than colour alone.
|
|
144
|
+
|
|
145
|
+
## Edge Cases & Special Logic
|
|
146
|
+
|
|
147
|
+
- **No step marked current.** Covered by the fallback. Do not render a blank assignment.
|
|
148
|
+
- **Every step marked complete.** The fallback selects the last successful step, which is correct — the assignment is finished but still displayed.
|
|
149
|
+
- **A single step.** Render the stepper with one entry and no connectors. Some assignments legitimately have one navigation step.
|
|
150
|
+
- **Sub-steps present but none active.** The parent step contributes its header and nested list, and no content renders beneath it. Do not fall back to hosting the content on the parent.
|
|
151
|
+
- **`arCurrentStepIndicies` supplied.** Accept it as an input for contract compatibility, but derive nothing from it. The active step comes from the resolution above.
|
|
152
|
+
- **Missing `actionID`.** It is the identity used for the rendered step list. If it is absent, fall back to the step's `ID`, then to its position, so repeated steps stay distinct as the model updates.
|
|
153
|
+
- **Long step labels.** Labels truncate with an ellipsis rather than wrapping, so the horizontal strip keeps a single line.
|
|
154
|
+
- **Many steps in the horizontal layout.** The strip does not wrap. Let the connectors absorb the available space and allow the strip to be scrollable if the design system supports it, rather than reflowing into multiple rows.
|
|
155
|
+
- **Absent child content.** The runtime may render the stepper before content is available. Render the stepper and the assignment card without content; do not suppress the stepper.
|
|
156
|
+
|
|
157
|
+
## Dependencies
|
|
158
|
+
|
|
159
|
+
- The project's component registry, resolving `AssignmentCard` — hosts the form content and the action buttons.
|
|
160
|
+
- `PCore.getSDKUtils().getVBodyClass(index, totalSteps)` — the styling class for a vertical step's body, which decides whether the connector continues past it.
|
|
161
|
+
- `PCore.getSDKUtils().getAutoFlexClass(step, arNavigationSteps)` — the flex behaviour of a horizontal connector, which decides how the strip distributes space.
|
|
162
|
+
- `PCore.getSDKUtils().isLastStep(index, totalSteps)` — whether the connector after a horizontal step is suppressed.
|
|
163
|
+
- The design system's stepper primitives, in both orientations.
|
|
164
|
+
|
|
165
|
+
## Design System Mapping
|
|
166
|
+
|
|
167
|
+
**UI control type:** A stepper with two orientations, hosting content inside the active step.
|
|
168
|
+
|
|
169
|
+
- **Vertical layout** → the DS's vertical stepper, or a list of step blocks with an indented body per step
|
|
170
|
+
- **Horizontal layout** → the DS's horizontal stepper, with a header strip and content below
|
|
171
|
+
- **Step indicator** → the DS's step icon or numbered badge, using its completed / active / pending states
|
|
172
|
+
- **Connector** → the DS's step connector, or a flexible rule between headers
|
|
173
|
+
- **Sub-step list** → a nested list; most design systems have no nested-step primitive, so build it from list and icon primitives
|
|
174
|
+
- **Content host** → always the registry-resolved assignment card, never the DS's own step content slot rendering the children directly
|
|
175
|
+
|
|
176
|
+
If the design system's stepper is interactive, disable step selection. Steps are advanced by the runtime through the action buttons, not by clicking the stepper.
|
|
177
|
+
|
|
178
|
+
Mark the active step so assistive technology can announce it, give each step's position number a textual equivalent, and hide decorative connectors and state icons from assistive technology. Sub-step labels are text, not form labels — do not bind them to controls.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
# Skill: Stages
|
|
2
|
+
|
|
3
|
+
Case stage progress indicator. Renders the case's lifecycle stages as a horizontal progression, marking which are complete, which is current, and which are still ahead.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`infra-components.md`](../infra-components.md) — covers architecture, the override contract, localization, and registration conventions common to ALL infrastructure components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Shows where a case sits in its lifecycle. It is display-only: it has no callbacks, triggers no actions, and is not interactive. Stages are not selectable — the runtime advances the case, not the user.
|
|
12
|
+
|
|
13
|
+
> ⚠️ **CRITICAL — THIS IS CASE CHROME, NOT ASSIGNMENT CHROME**
|
|
14
|
+
>
|
|
15
|
+
> `Stages` renders as a named region of the **case view**. It is a property of the case, not of the assignment being worked. It therefore does **not** appear inside an embedded assignment, and must never be wired into one.
|
|
16
|
+
>
|
|
17
|
+
> If an embedded flow is showing a stage indicator, the flow launched the full case view instead of the assignment — fix the case-creation call, do not add this component. If a component list for an embedded flow includes `Stages`, question the list rather than generating it. Generate this component for a portal or full case view experience only.
|
|
18
|
+
|
|
19
|
+
## Pega Metadata
|
|
20
|
+
|
|
21
|
+
- **Registration key:** `Stages` (in the project's component map)
|
|
22
|
+
- **Category:** Infrastructure — case chrome, overridable
|
|
23
|
+
- **Extends:** The project's base component interface
|
|
24
|
+
- **Rendered by:** The case view template, as the `stages` named region
|
|
25
|
+
|
|
26
|
+
## Inputs
|
|
27
|
+
|
|
28
|
+
| Prop | Type | Required | Description |
|
|
29
|
+
| ------------- | ---------- | -------- | ---------------------------------------------------------------------------------- |
|
|
30
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
31
|
+
| `stages` | `any[]` | Yes | The raw, unfiltered stage list from the runtime. Must be filtered before rendering |
|
|
32
|
+
|
|
33
|
+
Each raw stage entry carries at least:
|
|
34
|
+
|
|
35
|
+
| Field | Type | Description |
|
|
36
|
+
| ---------------- | -------- | -------------------------------------------------------------------------- |
|
|
37
|
+
| `name` | `string` | The stage label **key**, to be localized before display |
|
|
38
|
+
| `ID` or `id` | `string` | The stage identifier. **Either casing may be present** — accept both |
|
|
39
|
+
| `visited_status` | `string` | The stage's progress state. The value `'completed'` marks a finished stage |
|
|
40
|
+
|
|
41
|
+
## Implementation Structure
|
|
42
|
+
|
|
43
|
+
**Module Setup:** The component depends on the design system's breadcrumb, step, or list primitives and an indicator icon for completed stages. Define the input contract as an extension of the project's base component interface with a `stages` field.
|
|
44
|
+
|
|
45
|
+
**Main Component Logic** — steps in order:
|
|
46
|
+
|
|
47
|
+
1. Receive `getPConnect` and `stages` from inputs; call `getPConnect()` into `pConn`. Resolve the localization service via `pConn.getLocalizationService()`.
|
|
48
|
+
2. Filter the raw list through `PCore.getSDKUtils().getFilteredStages(stages)`. The runtime supplies every stage including ones that must not be shown; this utility decides what is displayable. Render the filtered list, never the raw input.
|
|
49
|
+
3. Read the active stage identifier from case info: `pConn.getValue(PCore.getConstants().CASE_INFO.STAGEID, '')`. Use the runtime constant, not a literal property name, and supply an empty string as the fallback.
|
|
50
|
+
4. Derive a display model from the filtered list — one entry per stage, carrying: the localized `name`; the identifier resolved as `ID` or `id`, whichever is present; a `complete` flag set when `visited_status` equals `'completed'`; a `current` flag set when the identifier matches the active stage identifier; and a `last` flag set when the entry is the final one in the filtered list.
|
|
51
|
+
5. Render the derived model as a labelled navigation landmark containing an ordered list. Between consecutive entries, render a decorative separator hidden from assistive technology.
|
|
52
|
+
6. Render each entry's label with the visual treatment its state calls for, and render a completion indicator ahead of the label for completed entries.
|
|
53
|
+
|
|
54
|
+
## Behavioral Contract
|
|
55
|
+
|
|
56
|
+
### Stage Filtering
|
|
57
|
+
|
|
58
|
+
Always filter through `PCore.getSDKUtils().getFilteredStages(stages)` before doing anything else. Deriving state from, counting, or rendering the raw `stages` input produces stages the case is not meant to show, and makes the `last` flag wrong.
|
|
59
|
+
|
|
60
|
+
### Current Stage Resolution
|
|
61
|
+
|
|
62
|
+
The current stage is determined by comparing each stage's identifier against the case's active stage identifier read from case info. It is **not** derived from `visited_status`. A stage may carry a status that suggests it is in progress while the case has already moved on; case info is authoritative.
|
|
63
|
+
|
|
64
|
+
### Identifier Casing
|
|
65
|
+
|
|
66
|
+
Stage entries may expose their identifier as `ID` or as `id` depending on the source. Resolve it as the first of the two that is present. Reading only one casing silently breaks current-stage matching for the other.
|
|
67
|
+
|
|
68
|
+
### State Precedence
|
|
69
|
+
|
|
70
|
+
A stage is exactly one of three states, resolved in this order:
|
|
71
|
+
|
|
72
|
+
1. **Current** — the identifier matches the active stage identifier
|
|
73
|
+
2. **Completed** — not current, and `visited_status` equals `'completed'`
|
|
74
|
+
3. **Future** — everything else
|
|
75
|
+
|
|
76
|
+
**Current wins over completed.** A stage that is both marked completed and currently active renders as current. Testing `complete` first is the common mistake and makes the active stage look finished.
|
|
77
|
+
|
|
78
|
+
### Localization
|
|
79
|
+
|
|
80
|
+
Each stage label is resolved through `pConn.getLocalizationService().getLocalizedText(name)`. The `name` field is a key, not display text.
|
|
81
|
+
|
|
82
|
+
### Display Only
|
|
83
|
+
|
|
84
|
+
The component reads state and renders. It has no callbacks, no click handlers, and never writes to the store. Stages must not be selectable, focusable as controls, or navigable — the user cannot move a case by clicking its stage indicator.
|
|
85
|
+
|
|
86
|
+
## Visual Specifications
|
|
87
|
+
|
|
88
|
+
| Element | Description |
|
|
89
|
+
| -------------------- | -------------------------------------------------------------------- |
|
|
90
|
+
| Container | A raised surface with a light background, holding the progression |
|
|
91
|
+
| Progression | A horizontal list that wraps when it exceeds the available width |
|
|
92
|
+
| Separator | A directional indicator between consecutive stages, decorative only |
|
|
93
|
+
| Completed label | Neutral, full-strength text, preceded by a completion indicator |
|
|
94
|
+
| Current label | Accent-coloured and emphasized, visually the most prominent entry |
|
|
95
|
+
| Future label | Muted, lower-contrast text |
|
|
96
|
+
| Completion indicator | A small check-style icon rendered before completed stage labels only |
|
|
97
|
+
|
|
98
|
+
The three states must be distinguishable by more than colour alone — weight, an icon, or both — so the progression is readable without colour perception.
|
|
99
|
+
|
|
100
|
+
**CSS-only implementation notes (if implementing without design system step components):**
|
|
101
|
+
|
|
102
|
+
- Container: `padding: 8px 16px; border-radius: 4px; background: <surface colour>` with a subtle raised shadow.
|
|
103
|
+
- Progression: `display: flex; flex-wrap: wrap; align-items: center; gap: 4px; list-style: none; padding: 0; margin: 0`.
|
|
104
|
+
- Each list item: `display: flex; align-items: center`.
|
|
105
|
+
- Separator: muted colour, icon sized around `20px`, filled with the current text colour.
|
|
106
|
+
- Completed label: full-strength body colour, normal weight.
|
|
107
|
+
- Current label: accent colour, `font-weight: 600`.
|
|
108
|
+
- Future label: muted colour, normal weight.
|
|
109
|
+
- Completion indicator: `display: inline-flex; align-items: center; margin-right: 4px`, icon sized around `18px`.
|
|
110
|
+
|
|
111
|
+
## Edge Cases & Special Logic
|
|
112
|
+
|
|
113
|
+
- **Empty stage list.** If filtering yields nothing, render nothing rather than an empty container with padding and a shadow.
|
|
114
|
+
- **Single stage.** Render the one entry with no separators. The `last` flag is true for it.
|
|
115
|
+
- **No matching current stage.** If the active stage identifier is empty or matches nothing in the filtered list, no entry is current. Every entry falls through to completed or future; do not force the first or last entry to be current.
|
|
116
|
+
- **Long stage names.** Names come from the case type and can be long. The progression wraps; it does not truncate or scroll horizontally, so a long name must not force the container to overflow.
|
|
117
|
+
- **Raw list longer than the filtered list.** Expected and normal. All indexing, counting, and the `last` flag operate on the filtered list.
|
|
118
|
+
- **Repeated stage names.** Stage names are not unique — identity comes from the identifier and the position, not the label.
|
|
119
|
+
|
|
120
|
+
## Dependencies
|
|
121
|
+
|
|
122
|
+
- `PCore.getSDKUtils().getFilteredStages(stages)` — reduces the raw list to the displayable stages.
|
|
123
|
+
- `PCore.getConstants().CASE_INFO.STAGEID` — the case info key for the active stage identifier.
|
|
124
|
+
- `pConn.getValue(key, fallback)` — reads the active stage identifier from case info.
|
|
125
|
+
- `pConn.getLocalizationService().getLocalizedText(name)` — localizes each stage label.
|
|
126
|
+
- The design system's breadcrumb, step, or inline list primitive, plus a completion icon.
|
|
127
|
+
|
|
128
|
+
## Design System Mapping
|
|
129
|
+
|
|
130
|
+
**UI control type:** A non-interactive horizontal progression — a breadcrumb trail or a read-only stepper.
|
|
131
|
+
|
|
132
|
+
- **Progression** → the DS's breadcrumb or stepper component, in its non-interactive form
|
|
133
|
+
- **Stage entry** → a breadcrumb item or step label
|
|
134
|
+
- **Separator** → the DS's breadcrumb separator, or a directional icon
|
|
135
|
+
- **Completion indicator** → the DS's check or success icon
|
|
136
|
+
- **Container** → the DS's card, surface, or panel primitive
|
|
137
|
+
|
|
138
|
+
If the design system's stepper is interactive by default, disable its interactivity rather than leaving stages clickable. If it renders its own numbering, prefer the completion indicator over numbers — stages are named lifecycle phases, not numbered steps.
|
|
139
|
+
|
|
140
|
+
Use an ordered list inside a labelled navigation landmark so the progression is announced as a sequence. Mark separators as decorative and hide them from assistive technology; they carry no meaning beyond the ordering the list already conveys.
|