@pega/sdk 0.0.5 → 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 +764 -165
- package/package.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/.ai-common/agents/implementation-expert.md +25 -26
- 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 +70 -121
- package/templates/react-sdk-reference/.ai-common/instructions/component-map.md +7 -19
- package/templates/react-sdk-reference/.ai-common/instructions/dse-component.md +10 -40
- package/templates/react-sdk-reference/.ai-common/instructions/embedded-component.md +134 -0
- package/templates/react-sdk-reference/.ai-common/instructions/field-component.md +15 -43
- package/templates/react-sdk-reference/.ai-common/instructions/template-component.md +11 -63
- package/templates/react-sdk-reference/.ai-common/instructions/widget-component.md +12 -57
- package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +45 -71
- package/templates/react-sdk-reference/.ai-common/prompts/component-manifest.json +98 -0
- 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 +67 -237
- package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +26 -77
- 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 +31 -80
- package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +43 -99
- package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +33 -83
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/AlertBanner.md +60 -74
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +64 -84
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +76 -109
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/DetailsFields.md +84 -101
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroup.md +62 -87
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroupList.md +56 -76
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldValueList.md +61 -85
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Operator.md +84 -107
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Pulse.md +36 -44
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +125 -189
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/WssQuickCreate.md +34 -50
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension.md +57 -179
- 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 +120 -242
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +71 -212
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +47 -209
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +90 -259
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +75 -169
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +65 -160
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +59 -157
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +55 -134
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +61 -185
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +60 -138
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Group.md +40 -99
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +44 -111
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +57 -165
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Multiselect.md +41 -122
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/ObjectReference.md +32 -130
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +48 -112
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +43 -153
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +76 -183
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RichText.md +59 -176
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +30 -123
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +47 -178
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/SemanticLink.md +31 -117
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +51 -106
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextContent.md +22 -75
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +54 -116
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +46 -100
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +44 -93
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/UserReference.md +40 -167
- 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 +74 -228
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +66 -167
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +57 -170
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/BannerPage.md +41 -76
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +53 -109
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +86 -289
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +60 -185
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +66 -115
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DataReference.md +33 -68
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +53 -133
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultPage.md +39 -82
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Details.md +38 -91
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsSubTabs.md +47 -101
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md +27 -34
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsTwoColumn.md +25 -40
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DynamicTabs.md +34 -104
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +46 -147
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/HierarchicalForm.md +139 -100
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboard.md +43 -82
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboardPage.md +47 -80
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListPage.md +16 -29
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +43 -228
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/MultiReferenceReadOnly.md +20 -65
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +49 -97
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/OneColumn.md +37 -71
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +58 -148
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +82 -107
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SimpleTable.md +21 -60
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +43 -100
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SubTabs.md +36 -76
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/TwoColumn.md +41 -90
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/WideNarrow.md +36 -43
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/WssNavBar.md +25 -115
- package/templates/react-sdk-reference/.ai-common/skills/widget-components.md +38 -174
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +30 -57
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +55 -101
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/CaseHistory.md +38 -121
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/FileUtility.md +37 -98
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Followers.md +18 -33
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/QuickCreate.md +26 -91
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/SummaryItem.md +28 -120
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +41 -272
- package/templates/react-sdk-reference/package.json +1 -1
- 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/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-native-sdk-reference/expo-env.d.ts +0 -3
- package/templates/react-sdk-reference/pega-auth-0.2.42.tgz +0 -0
|
@@ -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.
|