@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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
ai-globs:
|
|
2
|
+
ai-globs: **/template/**/*
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# Template Component Rules
|
|
@@ -8,75 +8,23 @@ When creating or modifying template/layout components, follow these rules:
|
|
|
8
8
|
|
|
9
9
|
## Required Structure
|
|
10
10
|
|
|
11
|
-
1. **
|
|
11
|
+
1. **Extend the base template props interface** — the project's standard props type — when defining the component's prop interface.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
import type { PConnProps } from '@pega/sdk-react';
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
2. **Export as default function component**:
|
|
18
|
-
```typescript
|
|
19
|
-
export default function MyTemplate(props: MyTemplateProps) { ... }
|
|
20
|
-
```
|
|
13
|
+
2. **Export the component** using the project's standard export convention.
|
|
21
14
|
|
|
22
15
|
## Template Categories
|
|
23
16
|
|
|
24
17
|
### Layout Templates (TwoColumn, OneColumn, NarrowWide, WideNarrow)
|
|
25
18
|
|
|
26
|
-
Receive
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
import type { PropsWithChildren, ReactElement } from 'react';
|
|
30
|
-
|
|
31
|
-
interface TwoColumnProps extends PConnProps {
|
|
32
|
-
templateCol?: string; // e.g. "1fr 1fr", "2fr 1fr"
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export default function TwoColumn(props: PropsWithChildren<TwoColumnProps>) {
|
|
36
|
-
const { children, templateCol = '1fr 1fr' } = props;
|
|
37
|
-
const childrenToRender = children as ReactElement[];
|
|
38
|
-
// Render childrenToRender[0], childrenToRender[1], etc. in grid columns
|
|
39
|
-
}
|
|
40
|
-
```
|
|
19
|
+
Receive child components directly via the props. Parse the `templateCol` prop (e.g. `"1fr 1fr"`, `"2fr 1fr"`) to compute column ratios, then render each child in its corresponding column.
|
|
41
20
|
|
|
42
21
|
### Form/View Templates (DefaultForm, Details, CaseView)
|
|
43
22
|
|
|
44
|
-
Render children
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
export default function DefaultForm(props: DefaultFormProps) {
|
|
48
|
-
const { getPConnect } = props;
|
|
49
|
-
const pConn = getPConnect();
|
|
50
|
-
const children = pConn.getChildren() as any[];
|
|
51
|
-
|
|
52
|
-
return (
|
|
53
|
-
<div>
|
|
54
|
-
{children.map((child, i) => (
|
|
55
|
-
<PConnectComponent key={i} getPConnect={() => child.getPConnect()} />
|
|
56
|
-
))}
|
|
57
|
-
</div>
|
|
58
|
-
);
|
|
59
|
-
}
|
|
60
|
-
```
|
|
23
|
+
Render children by retrieving them from the PConnect accessor (`getPConnect().getChildren()`) and rendering each child through the project's PConnect-bridge component.
|
|
61
24
|
|
|
62
25
|
### Page Templates (OneColumnPage, TwoColumnPage)
|
|
63
26
|
|
|
64
|
-
Wrap a layout with page-level chrome (title, actions)
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
export default function OneColumnPage(props: PageProps) {
|
|
68
|
-
const { getPConnect, children } = props;
|
|
69
|
-
const pConn = getPConnect();
|
|
70
|
-
const title = pConn.getDataObject('')?.caseInfo?.name;
|
|
71
|
-
|
|
72
|
-
return (
|
|
73
|
-
<div>
|
|
74
|
-
<h1>{title}</h1>
|
|
75
|
-
{children}
|
|
76
|
-
</div>
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
```
|
|
27
|
+
Wrap a layout with page-level chrome (title, actions) — retrieve case/page metadata from the PConnect accessor and render it alongside the layout's children.
|
|
80
28
|
|
|
81
29
|
## Visual Preservation
|
|
82
30
|
|
|
@@ -84,12 +32,12 @@ The replacement must look the same as the original component:
|
|
|
84
32
|
|
|
85
33
|
1. **Read any `.css` file in the directory first.** Note every class's visual intent (spacing, sizing, colors, layout).
|
|
86
34
|
2. Replicate those styles via inline `style` props, the new design system's layout props, or by keeping the CSS import — whichever produces the closest match.
|
|
87
|
-
3. Do NOT silently drop
|
|
35
|
+
3. Do NOT silently drop legacy layout utility classes — map each one to an equivalent style.
|
|
88
36
|
|
|
89
37
|
## Key Rules
|
|
90
38
|
|
|
91
|
-
- Use
|
|
92
|
-
- Grid proportions come from `templateCol` prop — parse it to calculate column ratios
|
|
93
|
-
- Templates must not call
|
|
39
|
+
- Use the project's PConnect-bridge component to render PConnect children
|
|
40
|
+
- Grid proportions come from the `templateCol` prop — parse it to calculate column ratios
|
|
41
|
+
- Templates must not call the event handling helper or interact with field state
|
|
94
42
|
- Templates are layout-only — they arrange, not edit
|
|
95
|
-
- Do NOT drop column gap, padding, or alignment styles when removing
|
|
43
|
+
- Do NOT drop column gap, padding, or alignment styles when removing legacy layout primitives — replicate them in the replacement layout
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
ai-globs:
|
|
2
|
+
ai-globs: **/widget/**/*
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# Widget Component Rules
|
|
@@ -8,68 +8,23 @@ When creating or modifying widget components, follow these rules:
|
|
|
8
8
|
|
|
9
9
|
## Required Structure
|
|
10
10
|
|
|
11
|
-
1. **
|
|
11
|
+
1. **Extend the base widget props interface** — the project's standard props type, or the field props type if the widget behaves like a field (e.g. Attachment) — when defining the component's prop interface.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
import type { PConnProps } from '@pega/sdk-react';
|
|
15
|
-
// or PConnFieldProps if the widget behaves like a field (e.g., Attachment)
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
2. **Export as default function component**:
|
|
19
|
-
```typescript
|
|
20
|
-
export default function MyWidget(props: MyWidgetProps) { ... }
|
|
21
|
-
```
|
|
13
|
+
2. **Export the component** using the project's standard export convention.
|
|
22
14
|
|
|
23
15
|
## Widget Patterns
|
|
24
16
|
|
|
25
17
|
### Data-Fetching Widget (ToDo, CaseHistory, Followers)
|
|
26
18
|
|
|
27
|
-
Fetches data from
|
|
28
|
-
|
|
29
|
-
```typescript
|
|
30
|
-
export default function MyWidget(props: MyWidgetProps) {
|
|
31
|
-
const { getPConnect, datasource, headerText } = props;
|
|
32
|
-
const pConn = getPConnect();
|
|
33
|
-
const [data, setData] = useState<any[]>([]);
|
|
34
|
-
|
|
35
|
-
useEffect(() => {
|
|
36
|
-
const context = pConn.getContextName();
|
|
37
|
-
PCore.getDataPageUtils()
|
|
38
|
-
.getDataAsync(datasource?.source, context, {})
|
|
39
|
-
.then((response: any) => {
|
|
40
|
-
setData(response.data || []);
|
|
41
|
-
});
|
|
42
|
-
}, []);
|
|
43
|
-
|
|
44
|
-
return (
|
|
45
|
-
<Card>
|
|
46
|
-
<CardHeader title={headerText} />
|
|
47
|
-
<CardContent>{/* render data */}</CardContent>
|
|
48
|
-
</Card>
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
```
|
|
19
|
+
Fetches data from the platform's data pages on mount. Obtain the current context from the PConnect accessor, request the datasource via the platform's data page utility, and store the result in local state. Render the fetched data inside the widget's card/list presentation.
|
|
52
20
|
|
|
53
21
|
### Action Widget (ToDo)
|
|
54
22
|
|
|
55
|
-
Triggers case actions
|
|
56
|
-
|
|
57
|
-
```typescript
|
|
58
|
-
// Get assignments and trigger actions
|
|
59
|
-
import { getToDoAssignments } from '@pega/sdk-react';
|
|
60
|
-
|
|
61
|
-
const assignments = getToDoAssignments(getPConnect);
|
|
62
|
-
// Each assignment has: onClick callback, urgency, name, etc.
|
|
63
|
-
```
|
|
23
|
+
Triggers case actions. Retrieve the list of assignments using the platform's assignment helper (passing the PConnect accessor). Each assignment provides an `onClick` callback, urgency, name, and other display metadata.
|
|
64
24
|
|
|
65
25
|
### File Widget (Attachment, FileUtility)
|
|
66
26
|
|
|
67
|
-
Handles file upload/download via
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
PCore.getAttachmentUtils().uploadAttachment(file, onUploadProgress, errorHandler, context);
|
|
71
|
-
PCore.getAttachmentUtils().downloadAttachment(attachmentId, context);
|
|
72
|
-
```
|
|
27
|
+
Handles file upload/download via the platform's attachment utility APIs — upload with progress/error callbacks and context, download by attachment id and context.
|
|
73
28
|
|
|
74
29
|
## Visual Preservation
|
|
75
30
|
|
|
@@ -77,14 +32,14 @@ The replacement must look the same as the original component:
|
|
|
77
32
|
|
|
78
33
|
1. **Read any `.css` file in the directory first.** Note every class's visual intent (spacing, sizing, colors, layout).
|
|
79
34
|
2. Replicate those styles via inline `style` props, the new design system's component props/variants, or by keeping the CSS import — whichever produces the closest match.
|
|
80
|
-
3. Do NOT silently drop
|
|
35
|
+
3. Do NOT silently drop legacy styling utility classes — map each one to an equivalent style.
|
|
81
36
|
|
|
82
37
|
## Key Rules
|
|
83
38
|
|
|
84
39
|
- Widgets are self-contained — they manage their own data fetching
|
|
85
|
-
- Use
|
|
86
|
-
- Use
|
|
40
|
+
- Use the platform's data page utility for data page access
|
|
41
|
+
- Use the platform's attachment utility for file operations
|
|
87
42
|
- Always handle loading and error states
|
|
88
|
-
- Widgets may
|
|
89
|
-
- Clean up subscriptions
|
|
90
|
-
- Do NOT drop card padding, list item spacing, or avatar sizing when removing
|
|
43
|
+
- Widgets may subscribe to platform events via the platform's pub/sub utility
|
|
44
|
+
- Clean up subscriptions when the component unmounts
|
|
45
|
+
- Do NOT drop card padding, list item spacing, or avatar sizing when removing legacy presentation components — replicate them in the replacement
|
|
@@ -7,7 +7,7 @@ ai-description: Add a new component type to the registry
|
|
|
7
7
|
Read the user's message carefully. Extract:
|
|
8
8
|
|
|
9
9
|
- **Component name** — the exact name (e.g. `AutoComplete`, `DatePicker`)
|
|
10
|
-
- **Component type** — one of: `field` | `template` | `widget` | `designSystemExtension`
|
|
10
|
+
- **Component type** — one of: `field` | `template` | `widget` | `designSystemExtension` | `infra`
|
|
11
11
|
- **Design system** — the UI library to use (e.g. `Ant Design`, `Chakra UI`, `Carbon`, `Radix UI`)
|
|
12
12
|
- **Output path** — the exact or relative path where the component should be generated (e.g. `src/components/field/AutoComplete`)
|
|
13
13
|
|
|
@@ -19,12 +19,12 @@ Example questions to ask (only ask the ones that are actually missing):
|
|
|
19
19
|
|
|
20
20
|
1. Which design system should I use? (e.g. Ant Design, Chakra UI, Carbon, Radix UI)
|
|
21
21
|
2. What is the exact component name?
|
|
22
|
-
3. What type of component is this? (field / template / widget / designSystemExtension)
|
|
22
|
+
3. What type of component is this? (field / template / widget / designSystemExtension / infra)
|
|
23
23
|
4. What is the exact or relative path where the component should be generated? (e.g. `src/components/field/AutoComplete`)
|
|
24
24
|
|
|
25
25
|
### Case-insensitive component name matching
|
|
26
26
|
|
|
27
|
-
The user may enter the component name in any casing (e.g. `autocomplete`, `Autocomplete`, `autoComplete`). It is your responsibility to match it to the correct canonical name by checking the skill files in `{{SKILL_DIR}}/field-skills/`, `{{SKILL_DIR}}/template-skills/`, `{{SKILL_DIR}}/widget-skills/`,
|
|
27
|
+
The user may enter the component name in any casing (e.g. `autocomplete`, `Autocomplete`, `autoComplete`). It is your responsibility to match it to the correct canonical name by checking the skill files in `{{SKILL_DIR}}/field-skills/`, `{{SKILL_DIR}}/template-skills/`, `{{SKILL_DIR}}/widget-skills/`, `{{SKILL_DIR}}/design-system-extension-skills/`, and `{{SKILL_DIR}}/infra-skills/`. For example, if the user types `autocomplete`, match it to `AutoComplete`.
|
|
28
28
|
|
|
29
29
|
Once all four are known, continue to Step 1.
|
|
30
30
|
|
|
@@ -34,7 +34,7 @@ Once all four are known, continue to Step 1.
|
|
|
34
34
|
|
|
35
35
|
Before generating, check if a component already exists at the resolved output path:
|
|
36
36
|
|
|
37
|
-
1. Check if
|
|
37
|
+
1. Check if the component file or directory already exists at the resolved output path.
|
|
38
38
|
2. If it **does exist**, ask the user: _"A component named `<ComponentName>` already exists at `<outputPath>`. Do you want to overwrite it with the new implementation?"_
|
|
39
39
|
- If the user says **yes**, proceed to overwrite.
|
|
40
40
|
- If the user says **no**, stop and skip generation.
|
|
@@ -52,6 +52,9 @@ Always read the **general type skill** for the component type:
|
|
|
52
52
|
| `template` | `{{SKILL_DIR}}/template-components.md` |
|
|
53
53
|
| `widget` | `{{SKILL_DIR}}/widget-components.md` |
|
|
54
54
|
| `designSystemExtension` | `{{SKILL_DIR}}/design-system-extension.md` |
|
|
55
|
+
| `infra` | `{{SKILL_DIR}}/infra-components.md` |
|
|
56
|
+
|
|
57
|
+
Only three `infra` components may be added — `ActionButtons`, `Stages`, and `MultiStep`. Every other infrastructure component is SDK-provided; if the user names one, stop and tell them it is not generated.
|
|
55
58
|
|
|
56
59
|
Then look for a **component-specific skill** based on the component type:
|
|
57
60
|
|
|
@@ -61,6 +64,7 @@ Then look for a **component-specific skill** based on the component type:
|
|
|
61
64
|
| `template` | `{{SKILL_DIR}}/template-skills/<ComponentName>.md` |
|
|
62
65
|
| `widget` | `{{SKILL_DIR}}/widget-skills/<ComponentName>.md` |
|
|
63
66
|
| `designSystemExtension` | `{{SKILL_DIR}}/design-system-extension-skills/<ComponentName>.md` |
|
|
67
|
+
| `infra` | `{{SKILL_DIR}}/infra-skills/<ComponentName>.md` |
|
|
64
68
|
|
|
65
69
|
If the component-specific skill file exists, read it fully. Pay special attention to:
|
|
66
70
|
|
|
@@ -75,6 +79,7 @@ Examples:
|
|
|
75
79
|
- `AdvancedSearch` (template) → read `template-components.md` + `template-skills/AdvancedSearch.md`
|
|
76
80
|
- `AppAnnouncement` (widget) → read `widget-components.md` + `widget-skills/AppAnnouncement.md`
|
|
77
81
|
- `AlertBanner` (designSystemExtension) → read `design-system-extension.md` + `design-system-extension-skills/AlertBanner.md`
|
|
82
|
+
- `ActionButtons` (infra) → read `infra-components.md` + `infra-skills/ActionButtons.md`
|
|
78
83
|
|
|
79
84
|
If no component-specific skill file exists, continue using the general pattern from the type skill.
|
|
80
85
|
|
|
@@ -82,27 +87,31 @@ If no component-specific skill file exists, continue using the general pattern f
|
|
|
82
87
|
|
|
83
88
|
## Step 3 — Check and install dependencies
|
|
84
89
|
|
|
85
|
-
|
|
90
|
+
Check the project's dependency manifest to determine whether the design system package is already installed. If it is **not** listed in the project's dependencies, install it using the project's package manager. Report what was installed.
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
cat package.json | grep "<design-system-package>"
|
|
89
|
-
```
|
|
92
|
+
**Immediately after installation**, read `node_modules/<designSystem>/README.md` in full. From it, note the correct import paths, usage patterns, version-specific guidance, global CSS/styles import path, provider wrapper component name, and any peer dependency requirements. Store this information in your memory and use it for all subsequent steps — do not re-read the README later. If the README lists peer dependencies that are not already installed in the project, install them now — the design system will not function correctly without them.
|
|
90
93
|
|
|
91
|
-
|
|
94
|
+
You MUST also thoroughly inspect the installed design system package:
|
|
92
95
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
+
1. **Discover all available components** — browse the installed package's directory tree under `node_modules/<designSystem>/` to find every component it exports. Do not assume a specific folder structure (e.g. `dist/`) — packages vary widely in how they organize source, types, and entry points. Navigate through the package's folders, read its entry-point files and type definitions, and build a complete list of every component the package actually provides. Store all discovered component names and their import paths in your memory for reference during code generation.
|
|
97
|
+
2. **Map the requested component to the best available DS component** — the component name provided by the user (e.g. `AutoComplete`) may not have an exact name match in the installed design system. Using the complete component list you just discovered, identify which DS component best serves the same purpose. For example, `@carbon/react` does not export an `AutoComplete` component — but it does export `ComboBox`, which provides equivalent autocomplete/typeahead functionality. If no single DS component is a close match, compose the requested behavior from multiple available DS primitives. Never fabricate a component import that does not exist in the installed package.
|
|
98
|
+
3. **Read the props interface of every component you plan to use** — for each component you intend to use, locate and read its TypeScript type definitions (`.d.ts` files or inline types) to understand the exact prop names, types, required vs. optional status, and any relevant enums or union types. Store this information in your memory alongside the component names.
|
|
99
|
+
4. **Use ONLY confirmed component names and prop names** — when generating code, you must exclusively use the component names and prop names you discovered from the installed package. Do not rely on training knowledge of the design system's API, as it may be outdated, inaccurate, or refer to components/props that do not exist in the installed version.
|
|
96
100
|
|
|
97
|
-
Also
|
|
101
|
+
Also check:
|
|
102
|
+
|
|
103
|
+
- Whether the design system has a **form layout wrapper** (label + input + helper text) — use it instead of manual margins
|
|
104
|
+
- Whether it has **size/density/variant conventions** — use built-in props rather than custom padding
|
|
105
|
+
- Whether it has a **companion icons package** — read its exports before using any icon name; never guess icon names
|
|
106
|
+
- Whether it has a **tokens or CSS directory** — use design system CSS custom properties for spacing; never hardcode `px` values
|
|
98
107
|
|
|
99
108
|
### 3.1 — Install the DS styles package and configure global CSS (MANDATORY)
|
|
100
109
|
|
|
101
110
|
Design systems require their global stylesheet — without it, components render unstyled.
|
|
102
111
|
|
|
103
|
-
#### Known DS style requirements (examples — verify
|
|
112
|
+
#### Known DS style requirements (examples — verify against the README you already read):
|
|
104
113
|
|
|
105
|
-
| Design System | Styles Package (example) | CSS Import
|
|
114
|
+
| Design System | Styles Package (example) | CSS Import (example) | Provider Wrapper (example) |
|
|
106
115
|
| ------------- | ------------------------ | ---------------------------------------- | -------------------------- |
|
|
107
116
|
| Carbon | `@carbon/styles` | `import '@carbon/react/css/styles.css';` | `<Theme>` |
|
|
108
117
|
| Ant Design | (included) | `import 'antd/dist/reset.css';` | `<ConfigProvider>` |
|
|
@@ -111,29 +120,16 @@ Design systems require their global stylesheet — without it, components render
|
|
|
111
120
|
| Shadcn/ui | (Tailwind) | `import './globals.css';` | None |
|
|
112
121
|
| MUI | (included) | (none — CSS-in-JS) | `<ThemeProvider>` |
|
|
113
122
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
If in table and not already configured: install styles package (if separate), add CSS import as **first import** in `src/main.tsx`, add Provider in `src/AppProviders.tsx`.
|
|
117
|
-
If not in table: check README and `find node_modules/<ds> -name "*.css" -path "*/dist/*" | head -5`.
|
|
118
|
-
|
|
119
|
-
Verification: `grep -n "import.*css\|import.*styles" src/main.tsx` — if already present, report "already configured" and continue.
|
|
120
|
-
|
|
121
|
-
Report what was installed/configured (or "already configured").
|
|
123
|
+
Above mentioned are **examples** based on common versions. Use the import path and provider name you noted from the README — they take precedence over this table.
|
|
122
124
|
|
|
123
|
-
|
|
125
|
+
If in table and not already configured: install styles package (if separate), add the global CSS import as the **first import** in the application's entry file, and add the Provider wrapper in the application's providers file.
|
|
126
|
+
If not in table: browse the installed design system's folder in `node_modules` for a `styles/` or `dist/` directory containing CSS files, and use what you find there.
|
|
124
127
|
|
|
125
|
-
|
|
126
|
-
2. `grep "^export" node_modules/<designSystem>/dist/index.d.ts 2>/dev/null || grep -rl "^export" node_modules/<designSystem> --include="index.d.ts" | head -3 | xargs grep "^export"` — lists every component actually exported by the installed version.
|
|
127
|
-
3. For every component you plan to use, read its TypeScript prop interface from the installed `.d.ts`:
|
|
128
|
-
`find node_modules/<designSystem> -name "ComponentName.d.ts" | head -3`, then `grep -A 40 "interface.*Props"` on the result.
|
|
129
|
-
4. Only use component names and prop names confirmed in those files. Do not rely on training knowledge of the API.
|
|
128
|
+
Since you have already read the design system's README, install the styles package it specifies (if any). If you have already installed it, skip this step. If the README did not provide enough detail about design-system-specific styles, browse the `styles/` folder within the installed design system package to locate the correct stylesheet and understand how it should be applied. Ensure these design system styles are applied globally so that all generated components render correctly.
|
|
130
129
|
|
|
131
|
-
|
|
130
|
+
Before implementing any component, verify whether design-system-specific styles are already configured in the existing codebase — check the application's entry file for a matching CSS import. If the styles are already imported and configured, skip this step and report "already configured".
|
|
132
131
|
|
|
133
|
-
|
|
134
|
-
- Whether it has **size/density/variant conventions** — use built-in props rather than custom padding
|
|
135
|
-
- Whether it has a **companion icons package** — read its exports before using any icon name; never guess icon names
|
|
136
|
-
- Whether it has a **tokens or CSS directory** — use design system CSS custom properties for spacing; never hardcode `px` values
|
|
132
|
+
Report what was installed/configured (or "already configured").
|
|
137
133
|
|
|
138
134
|
---
|
|
139
135
|
|
|
@@ -141,60 +137,42 @@ Also check:
|
|
|
141
137
|
|
|
142
138
|
Create the component directory at the resolved output path (from Step 0).
|
|
143
139
|
|
|
144
|
-
Create
|
|
140
|
+
Create the component's main implementation file using the file naming convention and extension appropriate to the project's framework (determine this by examining existing components in the project).
|
|
145
141
|
|
|
146
142
|
### field
|
|
147
143
|
|
|
148
|
-
|
|
144
|
+
Follow the implementation structure described in `field-components.md` (read in Step 2). That file specifies the exact imports, interface, props destructuring, display mode guards, event handling, and render approach for this project's framework. Use the DS component you identified in Step 3 as the primary input element.
|
|
149
145
|
|
|
150
|
-
|
|
151
|
-
2. Interface extending `PConnFieldProps` with any extra props from the component skill file
|
|
152
|
-
3. Destructure: `getPConnect`, `label`, `required`, `disabled`, `value`, `validatemessage`, `status`, `readOnly`, `testId`, `helperText`, `displayMode`, `hideLabel`, `placeholder`
|
|
153
|
-
4. Display mode guards: if `DISPLAY_ONLY` or `STACKED_LARGE_VAL` → return `FieldValueList` (via `getComponentFromRegistry('FieldValueList')`)
|
|
154
|
-
5. Return → DS form input from Step 4, with `onBlur` calling `handleEvent(actions, 'changeNblur', propName, inputValue)`. Show `validatemessage` when `status === 'error'`. Pass `data-test-id={testId}` on the interactive element.
|
|
146
|
+
If a component-specific skill file exists, also incorporate its Behavioral Contract (validation rules, option loading, event sequences, edge cases).
|
|
155
147
|
|
|
156
148
|
### template
|
|
157
149
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
- **Layout**: `PropsWithChildren` + `templateCol` parsing + DS grid from Step 4 rendering children in column ratios. Mobile: stack to full width.
|
|
161
|
-
- **Form**: `createElement(createPConnectComponent(), ...)` for each child from `getPConnect().getChildren()[0].getPConnect().getChildren()`. No DS primitives.
|
|
162
|
-
- **Page**: `createElement(createPConnectComponent(), ...)` for each region from `getPConnect().getChildren()`. No DS primitives.
|
|
150
|
+
Follow the implementation structure described in `template-components.md` (read in Step 2). That file specifies the layout, form, and page patterns — including how to render child components — for this project's framework.
|
|
163
151
|
|
|
164
152
|
### widget
|
|
165
153
|
|
|
166
|
-
|
|
154
|
+
Follow the implementation structure described in `widget-components.md` (read in Step 2). That file specifies the imports, interface, data-fetching lifecycle, and render approach for this project's framework. Use the DS components you identified in Step 3 for presentation.
|
|
167
155
|
|
|
168
|
-
|
|
169
|
-
2. Interface extending `PConnProps` with props from the component skill file
|
|
170
|
-
3. Component function: destructure `getPConnect`, call `getPConnect()` to get `pConn`
|
|
171
|
-
4. `useEffect` → data fetch using exact PCore API from skill file's Behavioral Contract
|
|
172
|
-
5. Return → DS Card/List/Table from Step 4, rendering fetched data
|
|
156
|
+
If a component-specific skill file exists, follow its Behavioral Contract for data-fetching logic, state management, and interaction handling.
|
|
173
157
|
|
|
174
158
|
### designSystemExtension
|
|
175
159
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
- **Pattern B** (Pure display): variant mapping (urgent→error, etc.) + DS Alert/Card/Avatar from Step 4. No `getPConnect`.
|
|
179
|
-
- **Pattern A** (PConnect display): CSS classes + optional DS typography. No DS primitives.
|
|
180
|
-
- **Pattern C** (Complex display): `createElement(createPConnectComponent(), ...)` for PConnect children. No DS primitives.
|
|
160
|
+
Follow the implementation structure described in `design-system-extension.md` (read in Step 2). That file specifies the pattern variants (pure display, PConnect display, complex display) for this project's framework.
|
|
181
161
|
|
|
182
162
|
---
|
|
183
163
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
```typescript
|
|
187
|
-
export { default } from './<ComponentName>';
|
|
188
|
-
```
|
|
164
|
+
If the project uses barrel/re-export files (check existing component directories for the convention), create one in the same directory following the same pattern.
|
|
189
165
|
|
|
190
166
|
---
|
|
191
167
|
|
|
192
168
|
## Step 6 — Register in component-map.ts
|
|
193
169
|
|
|
194
|
-
|
|
170
|
+
Open the project's component map file (the file that maps component names to their implementations) and:
|
|
195
171
|
|
|
196
|
-
1. Add the import at the top of the file, in the correct section (Fields / Templates / Widgets / Design System Extension)
|
|
197
|
-
2. Add an entry in
|
|
172
|
+
1. Add the import at the top of the file, in the correct section (Fields / Templates / Widgets / Design System Extension / Infra)
|
|
173
|
+
2. Add an entry in the component map object under the matching category comment
|
|
174
|
+
|
|
175
|
+
An `infra` entry is an override of a component the SDK already contributes, so it must be listed **after** the SDK's built-in component spread. Listed before it, the spread replaces it and the override silently does nothing.
|
|
198
176
|
|
|
199
177
|
⚠️ **Key name exceptions** — verify after registration:
|
|
200
178
|
|
|
@@ -210,10 +188,6 @@ Do not restructure or reorder any existing entries.
|
|
|
210
188
|
|
|
211
189
|
## Step 7 — Verify the build
|
|
212
190
|
|
|
213
|
-
Run
|
|
214
|
-
|
|
215
|
-
```
|
|
216
|
-
npm run build
|
|
217
|
-
```
|
|
191
|
+
Run the project's build process to confirm everything compiles without errors.
|
|
218
192
|
|
|
219
|
-
If build errors occur, fix them before reporting completion. Report what files were created and what was
|
|
193
|
+
If build errors occur, diagnose and fix them before reporting completion. Report what files were created and what was registered in the component map.
|
|
@@ -148,6 +148,7 @@
|
|
|
148
148
|
"path": "src/components/infra/DashboardFilter"
|
|
149
149
|
},
|
|
150
150
|
{ "name": "DeferLoad", "path": "src/components/infra/DeferLoad" },
|
|
151
|
+
{ "name": "MultiStep", "path": "src/components/infra/MultiStep" },
|
|
151
152
|
{ "name": "NavBar", "path": "src/components/infra/NavBar" },
|
|
152
153
|
{ "name": "Stages", "path": "src/components/infra/Stages" },
|
|
153
154
|
{ "name": "VerticalTabs", "path": "src/components/infra/VerticalTabs" }
|
|
@@ -195,5 +196,102 @@
|
|
|
195
196
|
"path": "src/components/designSystemExtension/WssQuickCreate"
|
|
196
197
|
}
|
|
197
198
|
]
|
|
199
|
+
},
|
|
200
|
+
"aliases": {
|
|
201
|
+
"Combobox": "AutoComplete",
|
|
202
|
+
"ComboBox": "AutoComplete",
|
|
203
|
+
"Typeahead": "AutoComplete",
|
|
204
|
+
"Autosuggest": "AutoComplete",
|
|
205
|
+
"SearchSelect": "AutoComplete",
|
|
206
|
+
"Select": "Dropdown",
|
|
207
|
+
"Picklist": "Dropdown",
|
|
208
|
+
"SingleSelect": "Dropdown",
|
|
209
|
+
"Radio": "RadioButtons",
|
|
210
|
+
"RadioGroup": "RadioButtons",
|
|
211
|
+
"OptionGroup": "RadioButtons",
|
|
212
|
+
"Switch": "Checkbox",
|
|
213
|
+
"Toggle": "Checkbox",
|
|
214
|
+
"Boolean": "Checkbox",
|
|
215
|
+
"Textbox": "TextInput",
|
|
216
|
+
"StringInput": "TextInput",
|
|
217
|
+
"SingleLineText": "TextInput",
|
|
218
|
+
"Memo": "TextArea",
|
|
219
|
+
"MultilineText": "TextArea",
|
|
220
|
+
"Notes": "TextArea",
|
|
221
|
+
"WYSIWYG": "RichText",
|
|
222
|
+
"HtmlEditor": "RichText",
|
|
223
|
+
"FormattedText": "RichText",
|
|
224
|
+
"DatePicker": "Date",
|
|
225
|
+
"Calendar": "Date",
|
|
226
|
+
"TimePicker": "Time",
|
|
227
|
+
"DateTimePicker": "DateTime",
|
|
228
|
+
"Timestamp": "DateTime",
|
|
229
|
+
"Money": "Currency",
|
|
230
|
+
"Amount": "Currency",
|
|
231
|
+
"Percent": "Percentage",
|
|
232
|
+
"Ratio": "Percentage",
|
|
233
|
+
"Tags": "Multiselect",
|
|
234
|
+
"Chips": "Multiselect",
|
|
235
|
+
"TokenInput": "Multiselect",
|
|
236
|
+
"MultiSelectList": "Multiselect",
|
|
237
|
+
"Hyperlink": "SemanticLink",
|
|
238
|
+
"Anchor": "SemanticLink",
|
|
239
|
+
"FileUpload": "Attachment",
|
|
240
|
+
"Dropzone": "Attachment",
|
|
241
|
+
"Attachments": "Attachment",
|
|
242
|
+
"Grid": "SimpleTable",
|
|
243
|
+
"Table": "SimpleTable",
|
|
244
|
+
"DataTable": "SimpleTable",
|
|
245
|
+
"Repeater": "SimpleTable",
|
|
246
|
+
"Card": "SelectableCard",
|
|
247
|
+
"Tile": "SelectableCard",
|
|
248
|
+
"Address": "Location",
|
|
249
|
+
"Map": "Location",
|
|
250
|
+
"GeoPoint": "Location",
|
|
251
|
+
"Person": "UserReference",
|
|
252
|
+
"Assignee": "UserReference",
|
|
253
|
+
"Label": "TextContent",
|
|
254
|
+
"StaticText": "TextContent",
|
|
255
|
+
"Paragraph": "TextContent"
|
|
256
|
+
},
|
|
257
|
+
"behaviorClasses": {
|
|
258
|
+
"free text entry": ["TextInput"],
|
|
259
|
+
"long or multi-line text entry": ["TextArea"],
|
|
260
|
+
"text entry with suggestion list": ["AutoComplete"],
|
|
261
|
+
"single choice from a list": ["Dropdown"],
|
|
262
|
+
"single choice with all options visible": ["RadioButtons"],
|
|
263
|
+
"multiple choice from a list": ["Multiselect"],
|
|
264
|
+
"on/off value": ["Checkbox"],
|
|
265
|
+
"date value": ["Date"],
|
|
266
|
+
"time value": ["Time"],
|
|
267
|
+
"date and time value": ["DateTime"],
|
|
268
|
+
"whole number": ["Integer"],
|
|
269
|
+
"fractional number": ["Decimal"],
|
|
270
|
+
"monetary amount": ["Currency"],
|
|
271
|
+
"percentage": ["Percentage"],
|
|
272
|
+
"email address": ["Email"],
|
|
273
|
+
"phone number": ["Phone"],
|
|
274
|
+
"web address": ["URL"],
|
|
275
|
+
"formatted rich text entry": ["RichText", "RichTextEditor"],
|
|
276
|
+
"list of simple values": ["ScalarList"],
|
|
277
|
+
"reference to another record": ["ObjectReference"],
|
|
278
|
+
"reference to a person": ["UserReference", "Operator"],
|
|
279
|
+
"geographic location": ["Location"],
|
|
280
|
+
"file handling": ["Attachment", "FileUtility"],
|
|
281
|
+
"read-only text display": ["TextContent"],
|
|
282
|
+
"link display": ["SemanticLink"],
|
|
283
|
+
"grouped set of fields": ["Group", "FieldGroup", "FieldGroupList"],
|
|
284
|
+
"confirmation or alert message": ["CancelAlert", "AlertBanner", "Banner"],
|
|
285
|
+
"layout container": ["DefaultForm", "OneColumn", "TwoColumn", "NarrowWide", "WideNarrow"],
|
|
286
|
+
"tabular list": ["SimpleTable", "ListView"],
|
|
287
|
+
"selectable card": ["SelectableCard"],
|
|
288
|
+
"summary or display block": ["SummaryItem", "SummaryList", "Details", "DetailsFields", "CaseSummary"],
|
|
289
|
+
"label and value pair list": ["FieldValueList", "CaseSummaryFields"],
|
|
290
|
+
"task or work item list": ["ToDo"],
|
|
291
|
+
"activity or history feed": ["CaseHistory", "Pulse"],
|
|
292
|
+
"announcement or promotional block": ["AppAnnouncement"],
|
|
293
|
+
"record creation shortcut": ["QuickCreate", "WssQuickCreate"],
|
|
294
|
+
"people following a record": ["Followers"],
|
|
295
|
+
"search input form": ["SearchForm", "AdvancedSearch", "PromotedFilters"]
|
|
198
296
|
}
|
|
199
297
|
}
|