@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,57 +1,37 @@
|
|
|
1
1
|
# Skill: Design System Extension (DSE) Components
|
|
2
2
|
|
|
3
|
-
Create or replace Design System Extension components in the
|
|
3
|
+
Create or replace Design System Extension components in the project. DSE components are display-focused presentational components that render structured data without direct PConnect binding. Some receive `getPConnect`, others receive only display inputs.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
## Architecture Overview
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
9
|
+
Each DSE component lives in its own folder under the project's design-system-extension components directory, named after the component. The folder contains:
|
|
10
|
+
|
|
11
|
+
| File | Purpose |
|
|
12
|
+
| ----------------------------- | ------------------------------------------------------- |
|
|
13
|
+
| Component implementation file | The component's logic and markup |
|
|
14
|
+
| Re-export module (if present) | Re-exports the component as the folder's default export |
|
|
15
|
+
| Companion styles (optional) | Styles scoped to the component |
|
|
16
|
+
| Metadata (optional) | Registration metadata (name, label, description, type) |
|
|
16
17
|
|
|
17
18
|
---
|
|
18
19
|
|
|
19
|
-
##
|
|
20
|
+
## Input Contract
|
|
20
21
|
|
|
21
|
-
DSE components have varying
|
|
22
|
+
DSE components have varying input patterns:
|
|
22
23
|
|
|
23
24
|
### Pattern A: With PConnect (data-aware display)
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
import type { PConnProps } from '../../../types/PConnProps';
|
|
27
|
-
|
|
28
|
-
interface FieldValueListProps extends PConnProps {
|
|
29
|
-
name?: string;
|
|
30
|
-
value?: string;
|
|
31
|
-
variant?: 'stacked' | 'inline';
|
|
32
|
-
}
|
|
33
|
-
```
|
|
26
|
+
The component's input contract extends the project's base component interface, which provides `getPConnect()` — a function returning the PConnect API object — in addition to its own custom inputs. Example: a field-value display component extending the base interface with additional fields like `name`, `value`, and `variant`.
|
|
34
27
|
|
|
35
28
|
### Pattern B: Without PConnect (pure presentation)
|
|
36
29
|
|
|
37
|
-
|
|
38
|
-
interface AlertBannerProps {
|
|
39
|
-
variant: 'urgent' | 'warning' | 'info' | 'success';
|
|
40
|
-
heading?: string;
|
|
41
|
-
messages: Array<string | { label?: string; description?: string }>;
|
|
42
|
-
onClose?: () => void;
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### Pattern C: Extended field props (display-only fields)
|
|
30
|
+
The component's input contract is standalone — it does NOT extend the base component interface. All rendering data arrives via direct inputs. Example: an alert-banner component with fields like `variant`, `heading`, `messages`, and `onClose`.
|
|
47
31
|
|
|
48
|
-
|
|
49
|
-
import type { PConnFieldProps } from '../../../types/PConnProps';
|
|
32
|
+
### Pattern C: Extended field input contract (display-only fields)
|
|
50
33
|
|
|
51
|
-
|
|
52
|
-
content?: string;
|
|
53
|
-
}
|
|
54
|
-
```
|
|
34
|
+
The component's input contract extends the project's field input contract, which provides standard field-level inputs (`label`, `value`, `displayMode`, `required`, `disabled`, `readOnly`, `status`, `validatemessage`, `helperText`, `hideLabel`, `placeholder`, `testId`) plus `getPConnect()`. The component adds its own domain-specific inputs on top. Example: a rich-text-editor component extending the field input contract with an additional `content` field.
|
|
55
35
|
|
|
56
36
|
---
|
|
57
37
|
|
|
@@ -61,115 +41,38 @@ interface RichTextEditorProps extends PConnFieldProps {
|
|
|
61
41
|
|
|
62
42
|
Used for: AlertBanner, Banner, Operator
|
|
63
43
|
|
|
64
|
-
This pattern is design-system agnostic. The variant-mapping logic and message normalisation are always the same
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
heading?: string;
|
|
74
|
-
messages: Array<string | { label?: string; description?: string }>;
|
|
75
|
-
onClose?: () => void;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export default function AlertBanner(props: AlertBannerProps) {
|
|
79
|
-
const { variant, heading, messages = [], onClose } = props;
|
|
80
|
-
|
|
81
|
-
// Map Pega variant names to your DS equivalent
|
|
82
|
-
// e.g. MUI: urgent → 'error' | Ant Design: urgent → 'error' | Chakra: urgent → 'error'
|
|
83
|
-
const variantMap: Record<string, string> = {
|
|
84
|
-
urgent: 'error',
|
|
85
|
-
warning: 'warning',
|
|
86
|
-
info: 'info',
|
|
87
|
-
success: 'success'
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
// Normalise messages — Pega may send a plain string or an object
|
|
91
|
-
function renderMessage(msg: string | { label?: string; description?: string }) {
|
|
92
|
-
if (typeof msg === 'string') return msg;
|
|
93
|
-
return `${msg.label ?? ''} ${msg.description ?? ''}`.trim();
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// [DS RENDER] — replace with your design system's alert/notification primitive
|
|
97
|
-
// The variantMap value above should be passed as the DS severity/type/status prop
|
|
98
|
-
return (
|
|
99
|
-
<YourDesignSystemAlert
|
|
100
|
-
type={variantMap[variant] ?? 'info'}
|
|
101
|
-
message={heading}
|
|
102
|
-
description={messages.map(renderMessage).join(' ')}
|
|
103
|
-
closable={!!onClose}
|
|
104
|
-
onClose={onClose}
|
|
105
|
-
/>
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
```
|
|
44
|
+
This pattern is design-system agnostic. The variant-mapping logic and message normalisation are always the same — only the final rendered output changes based on the chosen design system (see "Design System Adaptation" below).
|
|
45
|
+
|
|
46
|
+
**Structure:**
|
|
47
|
+
|
|
48
|
+
1. **Use** the design system's alert/notification primitive as the visual foundation.
|
|
49
|
+
2. **Define the input contract** (Pattern B — no PConnect). Include the Pega-facing inputs: `variant`, `heading`/`messages`, and an optional close/dismiss handler.
|
|
50
|
+
3. **Define a variant map** at module level — a plain lookup mapping Pega variant strings (`urgent`, `warning`, `info`, `success`) to the design system's equivalent severity/type value. Unknown variants fall back to `info`.
|
|
51
|
+
4. **Define a message normaliser** — a helper function that accepts either a plain string or an object (`{ label?, description? }`) and returns formatted content. Pega may send either format.
|
|
52
|
+
5. **Render** using the design system's alert primitive. Pass the mapped severity as the type/severity/status input. Wire the dismiss handler to the design system's close input only if provided. Render message content inside the alert body.
|
|
109
53
|
|
|
110
54
|
### Field Value Display Component
|
|
111
55
|
|
|
112
56
|
Used for: FieldValueList, CaseSummaryFields, DetailsFields
|
|
113
57
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
variant?: 'stacked' | 'inline';
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
export default function FieldValueList(props: FieldValueListProps) {
|
|
124
|
-
const { name, value, variant = 'inline' } = props;
|
|
125
|
-
|
|
126
|
-
if (variant === 'stacked') {
|
|
127
|
-
return (
|
|
128
|
-
<div className='field-value-stacked'>
|
|
129
|
-
<span className='field-label'>{name}</span>
|
|
130
|
-
<span className='field-value-large'>{value}</span>
|
|
131
|
-
</div>
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
return (
|
|
136
|
-
<div className='field-value-inline'>
|
|
137
|
-
{name && <span className='field-label'>{name}: </span>}
|
|
138
|
-
<span className='field-value'>{value}</span>
|
|
139
|
-
</div>
|
|
140
|
-
);
|
|
141
|
-
}
|
|
142
|
-
```
|
|
58
|
+
**Structure:**
|
|
59
|
+
|
|
60
|
+
1. **Define the input contract** (Pattern A — extends the project's base component interface) with fields for `name` (optional string), `value` (any), and `variant` (optional — `'stacked'` or `'inline'`, defaulting to `'inline'`).
|
|
61
|
+
2. **Stacked variant** — when `variant` is `'stacked'`, render the label on its own line above the value. The value should use a larger/emphasized typography style.
|
|
62
|
+
3. **Inline variant** (default) — render the label and value side by side. The label occupies roughly 1/3 width, value occupies 2/3. If `name` is not provided, render only the value at full width.
|
|
63
|
+
4. **Empty value handling** — if `value` is undefined or an empty string, display a placeholder (`'---'`).
|
|
143
64
|
|
|
144
65
|
### Complex Display Component (with PConnect for data)
|
|
145
66
|
|
|
146
67
|
Used for: FieldGroup, FieldGroupList, Pulse
|
|
147
68
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
showLabel?: boolean;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
export default function FieldGroup(props: FieldGroupProps) {
|
|
159
|
-
const { getPConnect, label, showLabel = true } = props;
|
|
160
|
-
const pConn = getPConnect();
|
|
161
|
-
const children = pConn.getChildren();
|
|
162
|
-
|
|
163
|
-
return (
|
|
164
|
-
<fieldset>
|
|
165
|
-
{showLabel && label && <legend>{label}</legend>}
|
|
166
|
-
{children.map((child, i) =>
|
|
167
|
-
createElement(createPConnectComponent(), { ...child, key: `fg-${i}` })
|
|
168
|
-
)}
|
|
169
|
-
</fieldset>
|
|
170
|
-
);
|
|
171
|
-
}
|
|
172
|
-
```
|
|
69
|
+
**Structure:**
|
|
70
|
+
|
|
71
|
+
1. **Define the input contract** (Pattern A — extends the project's base component interface) with component-specific fields (e.g., `label`, `showLabel`).
|
|
72
|
+
2. **Obtain the PConnect instance** by calling `getPConnect()` from the component's inputs.
|
|
73
|
+
3. **Retrieve children** via `pConn.getChildren()` — this returns an array of child component configurations from the Pega engine.
|
|
74
|
+
4. **Render children dynamically** — iterate over the children array and render each child configuration using the project's PConnect bridge utility, keyed uniquely. This bridges the Pega component tree into the chosen framework's rendering model.
|
|
75
|
+
5. **Wrap in semantic HTML** — use appropriate semantic elements (e.g., `<fieldset>` with `<legend>` for grouped fields). Conditionally show labels based on the `showLabel` input.
|
|
173
76
|
|
|
174
77
|
---
|
|
175
78
|
|
|
@@ -179,33 +82,22 @@ DSE components use one of three approaches depending on the component and design
|
|
|
179
82
|
|
|
180
83
|
### CSS File Pattern (DS-agnostic, preferred for Field Value components)
|
|
181
84
|
|
|
182
|
-
|
|
183
|
-
/* FieldValueList.css */
|
|
184
|
-
.field-value-inline {
|
|
185
|
-
display: flex;
|
|
186
|
-
gap: 0.5rem;
|
|
187
|
-
align-items: baseline;
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
.field-label {
|
|
191
|
-
font-weight: 600;
|
|
192
|
-
color: var(--text-secondary);
|
|
193
|
-
}
|
|
85
|
+
Create a co-located `.css` file named after the component. Typical CSS conventions for DSE components:
|
|
194
86
|
|
|
195
|
-
.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
87
|
+
- **Inline layout** — use `display: flex` with a small gap (`0.5rem`) and `align-items: baseline` for label/value pairs.
|
|
88
|
+
- **Labels** — `font-weight: 600` with a secondary text color (use a CSS custom property like `var(--text-secondary)`).
|
|
89
|
+
- **Large values (stacked variant)** — `font-size: 1.25rem`, `font-weight: 500`.
|
|
90
|
+
- Use CSS custom properties (design tokens) for colors and spacing — never hardcode pixel values for spacing.
|
|
91
|
+
- Class names follow the pattern `.component-name-element` (e.g., `.field-value-inline`, `.field-label`).
|
|
200
92
|
|
|
201
|
-
### Design System Style
|
|
93
|
+
### Design System Style Inputs (use if your DS provides them)
|
|
202
94
|
|
|
203
|
-
If the chosen design system provides built-in spacing, typography, or layout
|
|
95
|
+
If the chosen design system provides built-in spacing, typography, or layout inputs, prefer them over plain CSS:
|
|
204
96
|
|
|
205
|
-
- Use the DS's layout
|
|
206
|
-
- Use DS typography
|
|
97
|
+
- Use the DS's layout primitives (e.g., a stack, flex, or grid wrapper component) instead of manual flex CSS
|
|
98
|
+
- Use the DS's typography primitives (e.g., a text or heading component) instead of raw `<span>`/`<div>`
|
|
207
99
|
- Use DS CSS custom properties or tokens for spacing — never hardcode `px` values
|
|
208
|
-
- Discover which style
|
|
100
|
+
- Discover which style inputs are available from the design system's type declarations before using them
|
|
209
101
|
|
|
210
102
|
---
|
|
211
103
|
|
|
@@ -225,12 +117,7 @@ The component-specific skill file specifies which pattern applies.
|
|
|
225
117
|
|
|
226
118
|
**2. If the chosen design system is not listed** — use the component purpose and pattern category above to pick the closest DS primitive.
|
|
227
119
|
|
|
228
|
-
**3. Discover the API from installed packages** — confirm component names and
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
find node_modules/<ds-package> -name "*.d.ts" | xargs grep -l "Alert\|Badge\|Avatar" | head -5
|
|
232
|
-
grep -A 30 "interface.*Props" <path-to-file>
|
|
233
|
-
```
|
|
120
|
+
**3. Discover the API from installed packages** — confirm component names and inputs from the design system's type declarations before writing the component's markup. Search the design system package's type declarations for relevant component interfaces (e.g., look for files mentioning `Alert`, `Badge`, or `Avatar` and read the exported input interface to confirm available input names and types).
|
|
234
121
|
|
|
235
122
|
**4. Variant mapping** — always map Pega's variant names to your DS equivalent before passing to DS components:
|
|
236
123
|
|
|
@@ -245,19 +132,10 @@ grep -A 30 "interface.*Props" <path-to-file>
|
|
|
245
132
|
|
|
246
133
|
## Registration
|
|
247
134
|
|
|
248
|
-
Register DSE components in
|
|
249
|
-
|
|
250
|
-
```typescript
|
|
251
|
-
import AlertBanner from './designSystemExtension/AlertBanner';
|
|
252
|
-
import FieldValueList from './designSystemExtension/FieldValueList';
|
|
135
|
+
Register DSE components in the project's component map:
|
|
253
136
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
...sdkComponents,
|
|
257
|
-
AlertBanner,
|
|
258
|
-
FieldValueList,
|
|
259
|
-
}
|
|
260
|
-
```
|
|
137
|
+
1. **Import** the component's default export from its folder under the design-system-extension components directory.
|
|
138
|
+
2. **Add the component** to the object returned by the project's component registration function, using the component name as the key (must match the Pega registration key exactly). The component is spread alongside the base component map.
|
|
261
139
|
|
|
262
140
|
---
|
|
263
141
|
|
|
@@ -281,11 +159,11 @@ import FieldValueList from './designSystemExtension/FieldValueList';
|
|
|
281
159
|
|
|
282
160
|
## Key Conventions
|
|
283
161
|
|
|
284
|
-
1. **Default export** —
|
|
285
|
-
2. **Flexible messages** — Always handle both `string` and `object` formats for text
|
|
162
|
+
1. **Default export** — export the component as the module's default export.
|
|
163
|
+
2. **Flexible messages** — Always handle both `string` and `object` formats for text inputs (Pega may send either).
|
|
286
164
|
3. **No side effects** — DSE components should be pure renderers. No data fetching or mutations.
|
|
287
|
-
4. **Variant mapping** — Map Pega variant names (urgent, warning, etc.) to
|
|
165
|
+
4. **Variant mapping** — Map Pega variant names (urgent, warning, etc.) to the design system's equivalents.
|
|
288
166
|
5. **Display modes** — If a DSE component is also used as a display mode by field components (e.g., FieldValueList), it should be simple and fast to render.
|
|
289
|
-
6. **Graceful fallbacks** — Handle missing/undefined
|
|
290
|
-
7. **
|
|
167
|
+
6. **Graceful fallbacks** — Handle missing/undefined inputs gracefully with defaults.
|
|
168
|
+
7. **Prefer plain CSS or the design system's built-in styling mechanism** over CSS-in-JS libraries, unless the project's conventions dictate otherwise.
|
|
291
169
|
8. **Accessible markup** — Use semantic HTML (fieldset/legend for groups, proper heading levels, ARIA labels).
|
package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/analyze-customer-repo.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Skill: Analyze Customer Repository
|
|
2
|
+
|
|
3
|
+
Scan a customer's application codebase and produce a structured **Design Profile** document that captures their design system, coding conventions, and component patterns. This profile is consumed by the component generation workflow to produce Pega components that blend seamlessly with the customer's existing application.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
When Pega case flows are embedded into a customer's existing application, the generated Pega components must visually and structurally match the host application. This skill extracts the information needed to achieve that match.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## What to Extract
|
|
14
|
+
|
|
15
|
+
| Aspect | Discovery approach | Output |
|
|
16
|
+
| -------------------------------- | ---------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
17
|
+
| **Framework & language** | Read project configuration and dependency manifest | Framework name + version, primary language, module system |
|
|
18
|
+
| **UI component library** | Identify UI/component packages in dependencies | Library name + version (or "custom" if no third-party library) |
|
|
19
|
+
| **Theme & design tokens** | Search for theme configuration files, token/variable definitions, style constants | Token inventory: colors (primary, secondary, error, background, text), spacing scale, typography (font families, sizes, weights), border radii, shadows, breakpoints |
|
|
20
|
+
| **Component structure patterns** | Read 3–5 representative form-like components (text inputs, selects, buttons, checkboxes) | How they define their input interface, internal state, event handling, and output/rendering |
|
|
21
|
+
| **Styling approach** | Detect the styling mechanism used across components | Identifier (utility classes, CSS modules, CSS-in-JS, scoped styles, inline, etc.) + import/usage pattern |
|
|
22
|
+
| **File & folder conventions** | Analyze the project's component directory structure | Naming convention (casing, separators), folder-per-component vs flat, barrel/re-export pattern, test co-location |
|
|
23
|
+
| **Form & state management** | Identify form-handling libraries or patterns in dependencies and source | Library or pattern name + how values, validation, and submission are handled |
|
|
24
|
+
| **Import & module conventions** | Analyze import statements across multiple files | Path aliasing, barrel imports, relative vs absolute, grouping order |
|
|
25
|
+
| **Validation & error display** | Observe how existing components show validation feedback | Pattern: inline message, tooltip, border color change, icon, combination |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Steps
|
|
30
|
+
|
|
31
|
+
### Step 1 — Identify project fundamentals
|
|
32
|
+
|
|
33
|
+
Read the project's dependency manifest (the file that lists packages and their versions). From it, determine:
|
|
34
|
+
|
|
35
|
+
- The application framework and its version
|
|
36
|
+
- The primary language and its configuration
|
|
37
|
+
- The UI component library (if any) and version
|
|
38
|
+
- Any form-handling, state management, or validation libraries
|
|
39
|
+
- The styling library (if separate from the UI library)
|
|
40
|
+
|
|
41
|
+
### Step 2 — Locate theme and design token configuration
|
|
42
|
+
|
|
43
|
+
Search the project for theme/token definitions. Look for:
|
|
44
|
+
|
|
45
|
+
- Files with "theme", "tokens", "variables", "palette", "colors", or "design" in their name or path
|
|
46
|
+
- Style variable definition files (custom properties, constants, exported objects)
|
|
47
|
+
- Configuration files for utility-class frameworks (if applicable)
|
|
48
|
+
|
|
49
|
+
Read the discovered files and extract:
|
|
50
|
+
|
|
51
|
+
- **Color palette** — primary, secondary, accent, error/danger, warning, success, neutral/background, text colors
|
|
52
|
+
- **Spacing scale** — the progression of spacing values used
|
|
53
|
+
- **Typography** — font families, size scale, weight scale, line heights
|
|
54
|
+
- **Border radii** — small, medium, large, full/rounded values
|
|
55
|
+
- **Shadows** — elevation levels used
|
|
56
|
+
- **Breakpoints** — responsive design boundaries (if defined)
|
|
57
|
+
|
|
58
|
+
### Step 3 — Analyze representative components
|
|
59
|
+
|
|
60
|
+
Find 3–5 components that handle user input (text fields, selects/dropdowns, checkboxes, date pickers, buttons). Prioritize components that:
|
|
61
|
+
|
|
62
|
+
- Accept user input and emit value changes
|
|
63
|
+
- Show validation feedback
|
|
64
|
+
- Support disabled/read-only states
|
|
65
|
+
|
|
66
|
+
For each component, note:
|
|
67
|
+
|
|
68
|
+
1. **Input interface** — how the component defines what it accepts (typed props, attributes, inputs, parameters)
|
|
69
|
+
2. **Internal state** — how it manages transient state (controlled vs uncontrolled, local vs lifted)
|
|
70
|
+
3. **Event handling** — how it reports value changes and blur/commit events to the parent
|
|
71
|
+
4. **Validation display** — how it shows error messages, styling changes, or icons on invalid state
|
|
72
|
+
5. **Styling mechanism** — how it applies visual styles (class names, style objects, utility classes, scoped selectors)
|
|
73
|
+
6. **Accessibility** — labels, ARIA attributes, focus management
|
|
74
|
+
|
|
75
|
+
### Step 4 — Determine file and folder conventions
|
|
76
|
+
|
|
77
|
+
List the project's component directory and observe:
|
|
78
|
+
|
|
79
|
+
- **Folder structure** — flat list, folder-per-component, grouped by type/feature, or nested
|
|
80
|
+
- **Naming convention** — PascalCase, camelCase, kebab-case, snake_case for files and folders
|
|
81
|
+
- **Module boundaries** — barrel files (index re-exports), direct imports, or path-based resolution
|
|
82
|
+
- **Co-located files** — whether tests, styles, and types live alongside the component or separately
|
|
83
|
+
|
|
84
|
+
### Step 5 — Analyze import conventions
|
|
85
|
+
|
|
86
|
+
Read 5–10 import sections across different files and determine:
|
|
87
|
+
|
|
88
|
+
- **Path resolution** — aliases (e.g., `@/`, `~/`, `#`) vs relative paths
|
|
89
|
+
- **Grouping order** — external packages first, then internal modules, then relative imports (or other order)
|
|
90
|
+
- **Named vs default imports** — which pattern dominates
|
|
91
|
+
- **Style imports** — how stylesheets or style modules are imported
|
|
92
|
+
|
|
93
|
+
### Step 5.1 — Analyze navigation and presentation surfaces
|
|
94
|
+
|
|
95
|
+
The embedded flow has to appear somewhere, and that surface should be one the application already uses. Capture how this application presents a self-contained task:
|
|
96
|
+
|
|
97
|
+
- **Routing approach** — how routes are declared and navigated (file-based, configuration-based, or a router API), and how a route change is triggered from a control
|
|
98
|
+
- **Overlay primitives** — which of dialog, modal, drawer, sheet or popover the project actually uses, where those primitives come from, and how one is opened and dismissed
|
|
99
|
+
- **Existing task entry points** — find 2–3 places where a control starts a multi-step or form-based task, and record for each: the control's visible label, the file it lives in, and what it does — opens an overlay, navigates to a route, or reveals a region in place
|
|
100
|
+
- **Layout shell** — what wraps a routed page (navigation, header, sidebar), so a flow mounted at a route keeps the surroundings the customer expects
|
|
101
|
+
|
|
102
|
+
This is what makes it possible to offer the user real choices in their own vocabulary instead of a generic list of surfaces, and to infer the right surface when a launch control already has behaviour. Record what exists; do not recommend a surface here.
|
|
103
|
+
|
|
104
|
+
### Step 6 — Synthesize into Design Profile
|
|
105
|
+
|
|
106
|
+
Produce a structured markdown document with the following sections. Use heading levels for organization and bullet lists for values. Do not include source code — describe patterns in prose and reference file paths for the AI to read during generation.
|
|
107
|
+
|
|
108
|
+
**Section 1: Project Fundamentals** — list the framework name and version, language and configuration, UI library name and version (or "Custom"), styling approach, form handling library or pattern, and module system.
|
|
109
|
+
|
|
110
|
+
**Section 2: Design Tokens** — organize by sub-sections: Colors (primary, secondary, accent, error, warning, success, background, text, border with their semantic names and values), Spacing (scale), Typography (font families, sizes, weights), Borders and Radii (values), Shadows (elevation values), Breakpoints (if defined).
|
|
111
|
+
|
|
112
|
+
**Section 3: Component Patterns** — describe each convention as a sub-section: Input Interface Convention (how components define what they accept), State Management Convention (how local state is handled), Event Handling Convention (how value changes are reported — immediate, on blur, debounced), Validation Display Convention (where errors appear, how error styling is applied), Styling Convention (how styles are applied to elements, how conditional styles work).
|
|
113
|
+
|
|
114
|
+
**Section 4: File Conventions** — list the folder structure type, naming convention (casing), re-export/barrel pattern, test file location, and style file location.
|
|
115
|
+
|
|
116
|
+
**Section 5: Import Conventions** — list path resolution approach (aliases or relative), grouping order, default vs named import preference, and style import pattern.
|
|
117
|
+
|
|
118
|
+
**Section 6: Representative Component Examples** — list the 3–5 components analyzed with their file paths and why each was selected (e.g., "text input with validation", "select with async options"). These serve as reference points the generation workflow can re-read for detailed implementation guidance.
|
|
119
|
+
|
|
120
|
+
**Section 7: Navigation and Surfaces** — list the routing approach and how navigation is triggered, the overlay primitives the project uses and where they come from, the layout shell that wraps a routed page, and a table of existing task entry points giving each control's visible label, its file, and what it does today. The wiring workflow reads this section to decide where the embedded flow renders.
|
|
121
|
+
|
|
122
|
+
Save this document to `pega-components/.design-profile.md` in the customer's project.
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## Notes
|
|
127
|
+
|
|
128
|
+
- If the project uses no third-party UI library (fully custom components), the "UI Library" field should be "Custom" and the representative component analysis becomes especially important — the generated Pega components will directly replicate the customer's custom primitives.
|
|
129
|
+
- If multiple styling approaches are mixed (e.g., utility classes for layout + component library for inputs), document both and specify which is used where.
|
|
130
|
+
- Do not include actual source code in the Design Profile. Describe patterns in prose. Reference file paths for the AI to read during generation.
|