@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
|
@@ -8,112 +8,66 @@ Read-only single-column details template. Renders all child fields in DISPLAY_ON
|
|
|
8
8
|
|
|
9
9
|
## Component Purpose
|
|
10
10
|
|
|
11
|
-
Renders a labeled group of read-only fields in a single-column vertical stack. Forces all children into `DISPLAY_ONLY` + `readOnly` mode via inherited
|
|
11
|
+
Renders a labeled group of read-only fields in a single-column vertical stack. Forces all children into `DISPLAY_ONLY` + `readOnly` mode via inherited configuration. Optionally renders a "highlighted data" banner row at the top (full-width, stacked-large-val display).
|
|
12
12
|
|
|
13
13
|
## Pega Metadata
|
|
14
14
|
|
|
15
|
-
- **Registration key:** `Details` (in
|
|
15
|
+
- **Registration key:** `Details` (in the project's component map)
|
|
16
16
|
- **Category:** Display template
|
|
17
|
-
- **Extends:**
|
|
17
|
+
- **Extends:** the project's base component interface
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Inputs
|
|
20
20
|
|
|
21
|
-
|
|
|
21
|
+
| Input | Type | Required | Description |
|
|
22
22
|
| --------------------- | ---------- | -------- | --------------------------------------------------- |
|
|
23
23
|
| `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
|
|
24
24
|
| `showLabel` | `boolean` | Yes | Whether to show the section label |
|
|
25
25
|
| `showHighlightedData` | `boolean` | Yes | Whether to render highlighted fields above children |
|
|
26
26
|
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
27
27
|
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
export default function Details(props: DetailsProps) {
|
|
42
|
-
const FieldGroup = getComponentFromRegistry('FieldGroup');
|
|
43
|
-
const { label, showLabel, getPConnect, showHighlightedData } = props;
|
|
44
|
-
|
|
45
|
-
// 1. Inherited props merge
|
|
46
|
-
const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
|
|
47
|
-
|
|
48
|
-
// 2. Force all children into display-only mode (side effect)
|
|
49
|
-
getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY');
|
|
50
|
-
getPConnect().setInheritedProp('readOnly', true);
|
|
51
|
-
|
|
52
|
-
// 3. Create children from PConnect
|
|
53
|
-
const children = (getPConnect().getChildren() as any[]).map((configObject, index) =>
|
|
54
|
-
createElement(PConnectComponent, { ...configObject, key: index.toString() })
|
|
55
|
-
);
|
|
56
|
-
|
|
57
|
-
// 4. Highlighted data (optional)
|
|
58
|
-
let highlightedDataArr = [];
|
|
59
|
-
if (showHighlightedData) {
|
|
60
|
-
const { highlightedData = [] } = (getPConnect().getRawMetadata() as any).config;
|
|
61
|
-
highlightedDataArr = highlightedData.map((field) => {
|
|
62
|
-
field.config.displayMode = 'STACKED_LARGE_VAL';
|
|
63
|
-
if (field.config.value === '@P .pyStatusWork') {
|
|
64
|
-
field.type = 'TextInput';
|
|
65
|
-
field.config.displayAsStatus = true;
|
|
66
|
-
}
|
|
67
|
-
return getPConnect().createComponent(field, '', 0, {});
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// 5. Render: FieldGroup > highlighted grid (xs:12) + children grid (xs:12)
|
|
72
|
-
return (
|
|
73
|
-
<FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
|
|
74
|
-
{showHighlightedData && highlightedDataArr.length > 0 && (
|
|
75
|
-
<GridContainer spacing={1} style={{ padding: '0 0 1em' }}>
|
|
76
|
-
{highlightedDataArr.map((child, i) => <GridItem xs={12} key={`hf-${i+1}`}>{child}</GridItem>)}
|
|
77
|
-
</GridContainer>
|
|
78
|
-
)}
|
|
79
|
-
<GridContainer spacing={1}>
|
|
80
|
-
{children.map((child, i) => <GridItem xs={12} key={`r-${i+1}`}>{child}</GridItem>)}
|
|
81
|
-
</GridContainer>
|
|
82
|
-
</FieldGroup>
|
|
83
|
-
);
|
|
84
|
-
}
|
|
85
|
-
```
|
|
28
|
+
## Implementation Structure
|
|
29
|
+
|
|
30
|
+
**Module Setup:** Obtain the project's PConnect bridge utility (for rendering child PConnect nodes) and the project's component registry lookup function. The component accepts `label` (string), `showLabel` (boolean), `showHighlightedData` (boolean), and `getPConnect` (function) as its inputs.
|
|
31
|
+
|
|
32
|
+
**Main Component Logic** — steps in order:
|
|
33
|
+
|
|
34
|
+
1. Retrieve `FieldGroup` from the project's component registry; receive `label`, `showLabel`, `getPConnect`, and `showHighlightedData` from inputs.
|
|
35
|
+
2. Merge inherited configuration: `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }` (inherited values can override the direct inputs).
|
|
36
|
+
3. Force all children into display-only mode as a side effect: call `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `getPConnect().setInheritedProp('readOnly', true)`.
|
|
37
|
+
4. Build the children array: map each entry of `getPConnect().getChildren()` to a renderable PConnect bridge element using the config object and a unique key.
|
|
38
|
+
5. If `showHighlightedData` is true, read `highlightedData` (default empty array) from `getPConnect().getRawMetadata().config`, and for each field: set `field.config.displayMode = 'STACKED_LARGE_VAL'`; if `field.config.value === '@P .pyStatusWork'`, set `field.type = 'TextInput'` and `field.config.displayAsStatus = true`; then create the component via `getPConnect().createComponent(field, '', 0, {})` and collect the results into `highlightedDataArr`.
|
|
39
|
+
6. Render a FieldGroup named `propsToUse.showLabel ? propsToUse.label : ''`, containing (when `showHighlightedData` is true and non-empty) a single-column grid container with spacing and bottom padding holding one full-width grid item per highlighted field, followed by a second single-column grid container with spacing holding one full-width grid item per regular child.
|
|
86
40
|
|
|
87
41
|
## Behavioral Contract
|
|
88
42
|
|
|
89
|
-
1. **Inherited
|
|
43
|
+
1. **Inherited inputs merge:** `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }` — inherited values can override label/showLabel.
|
|
90
44
|
2. **Force display mode:** Call `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `getPConnect().setInheritedProp('readOnly', true)` — ensures all child fields render in read-only display mode.
|
|
91
|
-
3. **Render children:** Map `getPConnect().getChildren()` →
|
|
45
|
+
3. **Render children:** Map `getPConnect().getChildren()` → renderable content via the project's PConnect bridge utility, passing each config object with a unique key.
|
|
92
46
|
4. **Highlighted data (when `showHighlightedData` is true):**
|
|
93
47
|
a. Read `getPConnect().getRawMetadata().config.highlightedData` (defaults to `[]`).
|
|
94
48
|
b. For each highlighted field, set `field.config.displayMode = 'STACKED_LARGE_VAL'`.
|
|
95
49
|
c. For fields with `field.config.value === '@P .pyStatusWork'`: set `field.type = 'TextInput'` and `field.config.displayAsStatus = true`.
|
|
96
50
|
d. Create each field via `getPConnect().createComponent(field, '', 0, {})`.
|
|
97
51
|
5. **Layout:**
|
|
98
|
-
- Wrap all content in
|
|
99
|
-
- Highlighted data:
|
|
100
|
-
- Regular children:
|
|
52
|
+
- Wrap all content in a FieldGroup with name set to `propsToUse.showLabel ? propsToUse.label : ''`.
|
|
53
|
+
- Highlighted data: single-column grid container with ~8px gap and bottom padding (~1rem below).
|
|
54
|
+
- Regular children: single-column grid container with ~8px gap.
|
|
101
55
|
|
|
102
56
|
## Visual Specifications
|
|
103
57
|
|
|
104
58
|
### Overall Layout
|
|
105
59
|
|
|
106
|
-
| Property | Value
|
|
107
|
-
| ------------------------ |
|
|
108
|
-
| Column structure | Single column (
|
|
109
|
-
| Inner spacing |
|
|
110
|
-
| Highlighted data padding |
|
|
60
|
+
| Property | Value |
|
|
61
|
+
| ------------------------ | -------------------------------------------- |
|
|
62
|
+
| Column structure | Single column (full width for each child) |
|
|
63
|
+
| Inner spacing | ~8px between fields |
|
|
64
|
+
| Highlighted data padding | ~1rem bottom padding before regular children |
|
|
111
65
|
|
|
112
66
|
**CSS-only implementation notes:**
|
|
113
67
|
|
|
114
68
|
- Outer wrapper: `FieldGroup` component (see `FieldGroupDSE.md` for styles).
|
|
115
|
-
- Children grid:
|
|
116
|
-
- Highlighted data row:
|
|
69
|
+
- Children grid: single-column layout with ~8px gap between items.
|
|
70
|
+
- Highlighted data row: single-column layout with ~8px gap and ~1rem bottom padding.
|
|
117
71
|
- Fields inside highlighted data use `STACKED_LARGE_VAL` display (larger value typography).
|
|
118
72
|
|
|
119
73
|
## Edge Cases & Special Logic
|
|
@@ -125,25 +79,18 @@ export default function Details(props: DetailsProps) {
|
|
|
125
79
|
|
|
126
80
|
## Dependencies
|
|
127
81
|
|
|
128
|
-
-
|
|
129
|
-
-
|
|
82
|
+
- The project's PConnect bridge utility (for rendering child PConnect nodes)
|
|
83
|
+
- The project's component registry (to retrieve `FieldGroup`)
|
|
130
84
|
|
|
131
85
|
## Design System Mapping
|
|
132
86
|
|
|
133
87
|
**UI control type:** Read-only labeled section with vertically stacked fields.
|
|
134
88
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
| Design System | Recommended Component |
|
|
138
|
-
| ------------------ | ------------------------------------------------------------------------ |
|
|
139
|
-
| Default (CSS only) | `<fieldset>/<legend>` wrapper with CSS grid single column |
|
|
140
|
-
| MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 12 }}>` per field |
|
|
141
|
-
| Ant Design | `<Card title={label}>` with `<Row><Col span={24}>` per field |
|
|
142
|
-
| Chakra UI | `<Box>` with heading + `<Stack spacing={2}>` |
|
|
143
|
-
| Shadcn/ui | `<Card><CardHeader><CardContent>` with stacked field items |
|
|
144
|
-
|
|
145
|
-
When implementing in a specific design system:
|
|
89
|
+
When implementing in a specific design system, map the following:
|
|
146
90
|
|
|
147
|
-
-
|
|
148
|
-
-
|
|
149
|
-
-
|
|
91
|
+
- The outer wrapper is a labeled group container (e.g., a fieldset/legend, a card with a title header, or a boxed section with a heading). Use whatever grouped-section primitive your design system provides.
|
|
92
|
+
- Each child occupies the full width of the container (single column). Use your design system's grid or stack primitive with a single column and ~8px spacing between items.
|
|
93
|
+
- Highlighted data renders in the same single-column layout with additional bottom padding (~1rem) separating it from regular children.
|
|
94
|
+
- All children must have `displayMode='DISPLAY_ONLY'` and `readOnly=true` inherited.
|
|
95
|
+
- Highlighted data uses `STACKED_LARGE_VAL` — larger/bolder value display.
|
|
96
|
+
- `showLabel=false` hides the section heading entirely.
|
|
@@ -8,96 +8,51 @@ Read-only tabbed details template. Renders sub-tabs with deferred-loaded tab con
|
|
|
8
8
|
|
|
9
9
|
## Component Purpose
|
|
10
10
|
|
|
11
|
-
Renders a tabbed layout for a details region. Each tab contains display-only content loaded on demand. Uses the same
|
|
11
|
+
Renders a tabbed layout for a details region. Each tab contains display-only content loaded on demand. Uses the same tab utilities as `SubTabs` but is scoped to a details/display context. Optionally shows a section heading above the tabs.
|
|
12
12
|
|
|
13
13
|
## Pega Metadata
|
|
14
14
|
|
|
15
|
-
- **Registration key:** `DetailsSubTabs` (in
|
|
15
|
+
- **Registration key:** `DetailsSubTabs` (in the project's component map)
|
|
16
16
|
- **Category:** Navigation / Display template
|
|
17
|
-
- **Extends:**
|
|
18
|
-
|
|
19
|
-
##
|
|
20
|
-
|
|
21
|
-
|
|
|
22
|
-
| ------------- |
|
|
23
|
-
| `children` |
|
|
24
|
-
| `label` | `string`
|
|
25
|
-
| `showLabel` | `boolean`
|
|
26
|
-
| `getPConnect` | `function`
|
|
27
|
-
|
|
28
|
-
##
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
|
|
43
|
-
|
|
44
|
-
// 1. Extract deferred tabs from first child
|
|
45
|
-
const deferLoadedTabs = Children.toArray(children)[0];
|
|
46
|
-
let availableTabs = [];
|
|
47
|
-
|
|
48
|
-
// 2. Compute visible tabs on mount
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
availableTabs = getVisibleTabs(deferLoadedTabs, 'detailsSubTabs');
|
|
51
|
-
}, [availableTabs]);
|
|
52
|
-
|
|
53
|
-
// 3. Tab state
|
|
54
|
-
const [currentTabId, setCurrentTabId] = useState('0');
|
|
55
|
-
const [tabItems, setTabitem] = useState([]);
|
|
56
|
-
|
|
57
|
-
// 4. Update tab items when currentTabId changes
|
|
58
|
-
useEffect(() => {
|
|
59
|
-
const tempTabItems = getTransientTabs(availableTabs, currentTabId, tabItems);
|
|
60
|
-
setTabitem(tempTabItems);
|
|
61
|
-
}, [currentTabId]);
|
|
62
|
-
|
|
63
|
-
// 5. Tab click handler
|
|
64
|
-
const handleTabClick = (id, index: string) => {
|
|
65
|
-
setCurrentTabId(index);
|
|
66
|
-
tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems);
|
|
67
|
-
};
|
|
68
|
-
|
|
69
|
-
// 6. Render: optional heading + TabContext + Tabs + TabPanels
|
|
70
|
-
return (
|
|
71
|
-
<>
|
|
72
|
-
{propsToUse.showLabel && <h3>{propsToUse.label}</h3>}
|
|
73
|
-
<TabContext value={currentTabId.toString()}>
|
|
74
|
-
<TabBar onChange={handleTabClick} value={currentTabId}>
|
|
75
|
-
{tabItems.map(tab => <Tab key={tab.id} label={tab.name} value={tab.id} />)}
|
|
76
|
-
</TabBar>
|
|
77
|
-
{tabItems.map(tab => (
|
|
78
|
-
<TabPanel key={tab.id} value={tab.id} tabIndex={+tab.id}>
|
|
79
|
-
{tab.content || 'No content exists'}
|
|
80
|
-
</TabPanel>
|
|
81
|
-
))}
|
|
82
|
-
</TabContext>
|
|
83
|
-
</>
|
|
84
|
-
);
|
|
85
|
-
}
|
|
86
|
-
```
|
|
17
|
+
- **Extends:** the project's base component interface
|
|
18
|
+
|
|
19
|
+
## Inputs
|
|
20
|
+
|
|
21
|
+
| Name | Type | Required | Description |
|
|
22
|
+
| ------------- | ------------------ | -------- | ----------------------------------------------------------------- |
|
|
23
|
+
| `children` | renderable content | Yes | Tab content — `children[0]` is the deferred-loaded tabs container |
|
|
24
|
+
| `label` | `string` | Yes | Section heading shown above tabs when `showLabel` is true |
|
|
25
|
+
| `showLabel` | `boolean` | No | Whether to show the section heading. Default `true` |
|
|
26
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
27
|
+
|
|
28
|
+
## Implementation Structure
|
|
29
|
+
|
|
30
|
+
**Module Setup:** Obtain the shared tab utilities (`getVisibleTabs`, `getTransientTabs`, `tabClick`) from the project's SubTabs tab-utility module. These helpers are framework-independent and work with any rendering approach.
|
|
31
|
+
|
|
32
|
+
**Main Component Logic** — steps in order:
|
|
33
|
+
|
|
34
|
+
1. Receive inputs: `children` (default empty array), `label`, `showLabel` (default `true`), and `getPConnect`.
|
|
35
|
+
2. Merge inherited display settings: `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
|
|
36
|
+
3. Extract the deferred tabs container from the first child element; initialize `availableTabs` to an empty array.
|
|
37
|
+
4. On mount (lifecycle effect), compute `availableTabs` via `getVisibleTabs(deferLoadedTabs, 'detailsSubTabs')`.
|
|
38
|
+
5. Declare local state: `currentTabId` (string, initialized to `'0'`) and `tabItems` (array, initialized empty).
|
|
39
|
+
6. In a lifecycle effect keyed on `currentTabId`, recompute `tabItems` via `getTransientTabs(availableTabs, currentTabId, tabItems)`.
|
|
40
|
+
7. Define a tab-click handler that sets `currentTabId` to the clicked index and calls `tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems)`.
|
|
41
|
+
8. Render: an optional heading (shown when `propsToUse.showLabel` is true, displaying `propsToUse.label`), followed by a tab context wrapping a tab bar (one tab per `tabItems` entry, labeled `tab.name`) and a set of tab panels (each showing `tab.content` or a "No content exists" fallback).
|
|
87
42
|
|
|
88
43
|
## Behavioral Contract
|
|
89
44
|
|
|
90
|
-
1. **Inherited
|
|
91
|
-
2. **Extract deferred tabs:** `deferLoadedTabs =
|
|
45
|
+
1. **Inherited settings merge:** `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
|
|
46
|
+
2. **Extract deferred tabs:** `deferLoadedTabs` = first element from children array.
|
|
92
47
|
3. **Compute visible tabs:** On mount and when `availableTabs` changes, call `getVisibleTabs(deferLoadedTabs, 'detailsSubTabs')` to get the filtered visible tab list.
|
|
93
|
-
4. **
|
|
48
|
+
4. **Local state:** `currentTabId` (string, default `'0'`), `tabItems` (array of `{ id, name, content }` objects).
|
|
94
49
|
5. **Transient tabs:** On `currentTabId` change, call `getTransientTabs(availableTabs, currentTabId, tabItems)` and update `tabItems` state.
|
|
95
|
-
6. **Tab click handler:** `handleTabClick(id, index)` →
|
|
50
|
+
6. **Tab click handler:** `handleTabClick(id, index)` → sets `currentTabId` to `index` and calls `tabClick(index, availableTabs, currentTabId, setCurrentTabId, tabItems)` from the tab utilities.
|
|
96
51
|
7. **Render:**
|
|
97
|
-
- If `propsToUse.showLabel`, render
|
|
98
|
-
- Render
|
|
99
|
-
- Render
|
|
100
|
-
- Render one
|
|
52
|
+
- If `propsToUse.showLabel`, render a heading with `propsToUse.label`.
|
|
53
|
+
- Render a tab context bound to `currentTabId`.
|
|
54
|
+
- Render a tab bar with one tab per `tabItems` entry (keyed by `tab.id`, labeled `tab.name`, valued `tab.id`).
|
|
55
|
+
- Render one tab panel per `tabItems` entry containing `tab.content` or the fallback text "No content exists".
|
|
101
56
|
|
|
102
57
|
## Visual Specifications
|
|
103
58
|
|
|
@@ -105,7 +60,7 @@ export default function DetailsSubTabs(props: PropsWithChildren<DetailsSubTabsPr
|
|
|
105
60
|
|
|
106
61
|
| Property | Value |
|
|
107
62
|
| --------------- | ------------------------------- |
|
|
108
|
-
|
|
|
63
|
+
| Semantic level | Third-level heading (`<h3>`) |
|
|
109
64
|
| Shown only when | `propsToUse.showLabel === true` |
|
|
110
65
|
|
|
111
66
|
### Tab Bar
|
|
@@ -125,33 +80,24 @@ export default function DetailsSubTabs(props: PropsWithChildren<DetailsSubTabsPr
|
|
|
125
80
|
|
|
126
81
|
## Edge Cases & Special Logic
|
|
127
82
|
|
|
128
|
-
- `availableTabs` is computed inside
|
|
129
|
-
- The
|
|
130
|
-
- `tabItems` starts as
|
|
131
|
-
- `propsToUse` label/showLabel may be overridden by inherited
|
|
83
|
+
- `availableTabs` is computed inside a lifecycle effect (not immediately) — this means the initial render uses an empty array, and tabs populate after mount.
|
|
84
|
+
- The lifecycle effect watching `availableTabs` has a stale closure issue in the reference implementation — use an instance reference or memoized computation for production implementations if needed.
|
|
85
|
+
- `tabItems` starts as an empty array — the tab bar renders empty until the first `currentTabId` change triggers `getTransientTabs`.
|
|
86
|
+
- `propsToUse` label/showLabel may be overridden by inherited settings — always use `propsToUse` for the label, not the raw inputs.
|
|
132
87
|
|
|
133
88
|
## Dependencies
|
|
134
89
|
|
|
135
|
-
- `getTransientTabs`, `getVisibleTabs`, `tabClick` from
|
|
136
|
-
- `TabContext`, `TabPanel` from `@mui/lab`
|
|
137
|
-
- `Tab`, `Tabs` from `@mui/material`
|
|
90
|
+
- `getTransientTabs`, `getVisibleTabs`, `tabClick` from the project's SubTabs tab-utility module (framework-independent helpers)
|
|
138
91
|
|
|
139
92
|
## Design System Mapping
|
|
140
93
|
|
|
141
94
|
**UI control type:** Tabbed section container for read-only details content.
|
|
142
95
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
| Design System | Recommended Component |
|
|
146
|
-
| ------------------ | -------------------------------------------------------- |
|
|
147
|
-
| Default (CSS only) | Custom tab bar with CSS underline indicator |
|
|
148
|
-
| MUI | `<TabContext>` + `<Tabs>` + `<TabPanel>` from `@mui/lab` |
|
|
149
|
-
| Ant Design | `<Tabs>` with `items` array |
|
|
150
|
-
| Chakra UI | `<Tabs>` + `<TabList>` + `<TabPanels>` |
|
|
151
|
-
| Shadcn/ui | `<Tabs>` + `<TabsList>` + `<TabsContent>` |
|
|
152
|
-
|
|
153
|
-
When implementing in a specific design system:
|
|
96
|
+
When implementing in a specific design system, map the following:
|
|
154
97
|
|
|
155
|
-
-
|
|
98
|
+
- A tab context/wrapper that tracks the active tab
|
|
99
|
+
- A tab bar with clickable tab items
|
|
100
|
+
- Tab panels that show/hide based on active selection
|
|
101
|
+
- `getVisibleTabs` and `getTransientTabs` are tab-utility helpers — use them regardless of UI library
|
|
156
102
|
- Tab content is lazily loaded via the transient tab pattern
|
|
157
|
-
- Optional
|
|
103
|
+
- Optional heading above the tab bar (controlled by `showLabel`)
|
package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md
CHANGED
|
@@ -8,54 +8,55 @@ Read-only three-column details template. Renders child fields in DISPLAY_ONLY mo
|
|
|
8
8
|
|
|
9
9
|
## Component Purpose
|
|
10
10
|
|
|
11
|
-
Identical to `Details` and `DetailsTwoColumn` in all behavior except children are distributed into a **three-column grid** (
|
|
11
|
+
Identical to `Details` and `DetailsTwoColumn` in all behavior except children are distributed into a **three-column grid** (one-third width per child). Used in wide details regions where the design calls for three equal columns of fields.
|
|
12
12
|
|
|
13
13
|
> The implementation is nearly identical to `Details`. See `Details.md` for full pattern descriptions. Only the column width differs.
|
|
14
14
|
|
|
15
15
|
## Pega Metadata
|
|
16
16
|
|
|
17
|
-
- **Registration key:** `DetailsThreeColumn` (in
|
|
17
|
+
- **Registration key:** `DetailsThreeColumn` (in the project's component map)
|
|
18
18
|
- **Category:** Display template
|
|
19
|
-
- **Extends:**
|
|
19
|
+
- **Extends:** the project's base component interface
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Inputs
|
|
22
22
|
|
|
23
|
-
|
|
|
23
|
+
| Name | Type | Required | Description |
|
|
24
24
|
| --------------------- | ---------- | -------- | -------------------------------------------------------------------- |
|
|
25
25
|
| `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
|
|
26
26
|
| `showLabel` | `boolean` | No | Whether to show the section label. Default `true` |
|
|
27
27
|
| `showHighlightedData` | `boolean` | No | Whether to render highlighted fields above children. Default `false` |
|
|
28
28
|
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Implementation Structure
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
**Module Setup:** Obtain the FieldGroup component from the project's component registry. Access the project's bridge component for rendering child configuration objects as live components.
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
// Same as Details — only this line differs in the grid:
|
|
36
|
-
// Highlighted data: <GridItem xs={4} key={...}>{child}</GridItem>
|
|
37
|
-
// Regular children: <GridItem xs={4} key={...}>{child}</GridItem>
|
|
38
|
-
```
|
|
34
|
+
**Main Component Logic** — steps in order:
|
|
39
35
|
|
|
40
|
-
|
|
36
|
+
1. Receive inputs: `label`, `showLabel` (default `true`), `showHighlightedData` (default `false`), and `getPConnect`.
|
|
37
|
+
2. Merge inherited display settings: `propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() }`.
|
|
38
|
+
3. Set display mode on the PConnect instance: `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `getPConnect().setInheritedProp('readOnly', true)`.
|
|
39
|
+
4. Re-create children from `getPConnect().getChildren()` — map each config object into a live component via the bridge component, passing a unique key per child.
|
|
40
|
+
5. If `showHighlightedData` is true, retrieve `highlightedData` from `getPConnect().getRawMetadata().config`, set each field's `displayMode` to `'STACKED_LARGE_VAL'`, mark any field whose value is `'@P .pyStatusWork'` with `type: 'TextInput'` and `displayAsStatus: true`, then call `getPConnect().createComponent(field, '', 0, {})` for each.
|
|
41
|
+
6. Render: FieldGroup wrapper (showing `propsToUse.label` if `propsToUse.showLabel` is true), optional highlighted data row (3-column grid with bottom padding), then all children in a 3-column grid.
|
|
41
42
|
|
|
42
43
|
## Behavioral Contract
|
|
43
44
|
|
|
44
45
|
All steps identical to `Details`, except:
|
|
45
46
|
|
|
46
|
-
- **Regular children grid:** Each child renders at
|
|
47
|
-
- **Highlighted data grid:** Each highlighted field also renders at
|
|
48
|
-
- All other behaviors (inherited
|
|
47
|
+
- **Regular children grid:** Each child renders at one-third width (three per row).
|
|
48
|
+
- **Highlighted data grid:** Each highlighted field also renders at one-third width.
|
|
49
|
+
- All other behaviors (inherited settings merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
|
|
49
50
|
|
|
50
51
|
## Visual Specifications
|
|
51
52
|
|
|
52
53
|
### Column Structure
|
|
53
54
|
|
|
54
|
-
| | Details
|
|
55
|
-
| ----------------------- |
|
|
56
|
-
| Column width per child |
|
|
57
|
-
| Columns per row | 1
|
|
58
|
-
| Highlighted data column |
|
|
55
|
+
| | Details | DetailsTwoColumn | DetailsThreeColumn |
|
|
56
|
+
| ----------------------- | ---------- | ---------------- | ------------------ |
|
|
57
|
+
| Column width per child | full-width | 1/2 | **1/3** |
|
|
58
|
+
| Columns per row | 1 | 2 | **3** |
|
|
59
|
+
| Highlighted data column | full-width | 1/2 | **1/3** |
|
|
59
60
|
|
|
60
61
|
**CSS-only implementation notes:**
|
|
61
62
|
|
|
@@ -69,24 +70,16 @@ All edge cases identical to `Details`. See `Details.md`.
|
|
|
69
70
|
|
|
70
71
|
## Dependencies
|
|
71
72
|
|
|
72
|
-
- `
|
|
73
|
-
-
|
|
73
|
+
- The project's component registry — to resolve the `FieldGroup` component at runtime
|
|
74
|
+
- A bridge component for rendering PConnect child configuration objects as live components
|
|
74
75
|
|
|
75
76
|
## Design System Mapping
|
|
76
77
|
|
|
77
78
|
**UI control type:** Read-only labeled section with fields in a three-column grid.
|
|
78
79
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
| Design System | Recommended Component |
|
|
82
|
-
| ------------------ | ----------------------------------------------------------------------------- |
|
|
83
|
-
| Default (CSS only) | `<fieldset>/<legend>` with CSS `grid-template-columns: 1fr 1fr 1fr; gap: 8px` |
|
|
84
|
-
| MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 4 }}>` per field |
|
|
85
|
-
| Ant Design | `<Descriptions column={3}>` or `<Row><Col span={8}>` per field |
|
|
86
|
-
| Chakra UI | `<SimpleGrid columns={3} spacing={2}>` |
|
|
87
|
-
| Shadcn/ui | Tailwind `grid grid-cols-3 gap-2` |
|
|
88
|
-
|
|
89
|
-
When implementing in a specific design system:
|
|
80
|
+
When implementing in a specific design system, map the following:
|
|
90
81
|
|
|
91
82
|
- 3-column layout — each field takes one-third of the available width
|
|
83
|
+
- Grid container with spacing/gap between items
|
|
84
|
+
- FieldGroup wrapper component for the labeled section (see `FieldGroup.md` DSE skill)
|
|
92
85
|
- All other behaviors inherited from `Details` (DISPLAY_ONLY, readOnly, FieldGroup, highlighted data)
|
|
@@ -8,59 +8,51 @@ Read-only two-column details template. Renders child fields in DISPLAY_ONLY mode
|
|
|
8
8
|
|
|
9
9
|
## Component Purpose
|
|
10
10
|
|
|
11
|
-
Identical to `Details` in all behavior except children are distributed into a **two-column grid** (
|
|
11
|
+
Identical to `Details` in all behavior except children are distributed into a **two-column grid** (half width per child) instead of single-column. Used in details regions where the design calls for side-by-side field pairs.
|
|
12
12
|
|
|
13
13
|
> The implementation is nearly identical to `Details`. See `Details.md` for full pattern descriptions. Only the column width differs.
|
|
14
14
|
|
|
15
15
|
## Pega Metadata
|
|
16
16
|
|
|
17
|
-
- **Registration key:** `DetailsTwoColumn` (in
|
|
17
|
+
- **Registration key:** `DetailsTwoColumn` (in the project's component map)
|
|
18
18
|
- **Category:** Display template
|
|
19
|
-
- **Extends:**
|
|
19
|
+
- **Extends:** the project's base component interface
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## Inputs
|
|
22
22
|
|
|
23
|
-
|
|
|
23
|
+
| Input | Type | Required | Description |
|
|
24
24
|
| --------------------- | ---------- | -------- | -------------------------------------------------------------------- |
|
|
25
25
|
| `label` | `string` | Yes | Section heading for the FieldGroup wrapper |
|
|
26
26
|
| `showLabel` | `boolean` | No | Whether to show the section label. Default `true` |
|
|
27
27
|
| `showHighlightedData` | `boolean` | No | Whether to render highlighted fields above children. Default `false` |
|
|
28
28
|
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Implementation Structure
|
|
31
31
|
|
|
32
|
-
Identical to `Details`
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
// Same as Details — only this line differs in the grid:
|
|
36
|
-
// Highlighted data: <GridItem xs={6} key={...}>{child}</GridItem>
|
|
37
|
-
// Regular children: <GridItem xs={6} key={...}>{child}</GridItem>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
See `Details.md` skeleton for the full pattern. The ONLY change is `xs: 12` → `xs: 6`.
|
|
32
|
+
Identical to the `Details` implementation structure except grid items use half width (two columns) instead of full width. Both the highlighted-data grid items and the regular-children grid items render at half width (two per row). See `Details.md`'s Implementation Structure for the full pattern description — the ONLY change is full-width → half-width per child.
|
|
41
33
|
|
|
42
34
|
## Behavioral Contract
|
|
43
35
|
|
|
44
36
|
All steps identical to `Details`, except:
|
|
45
37
|
|
|
46
|
-
- **Regular children grid:** Each child renders at
|
|
47
|
-
- **Highlighted data grid:** Each highlighted field also renders at
|
|
48
|
-
- All other behaviors (inherited
|
|
38
|
+
- **Regular children grid:** Each child renders at half width (two per row, side by side).
|
|
39
|
+
- **Highlighted data grid:** Each highlighted field also renders at half width.
|
|
40
|
+
- All other behaviors (inherited inputs merge, `setInheritedProp('displayMode', 'DISPLAY_ONLY')`, `setInheritedProp('readOnly', true)`, FieldGroup wrapper, pyStatusWork handling) are identical to `Details`.
|
|
49
41
|
|
|
50
42
|
## Visual Specifications
|
|
51
43
|
|
|
52
44
|
### Column Structure
|
|
53
45
|
|
|
54
|
-
| | Details
|
|
55
|
-
| ----------------------- |
|
|
56
|
-
| Column width per child |
|
|
57
|
-
| Columns per row | 1
|
|
58
|
-
| Highlighted data column |
|
|
46
|
+
| | Details | DetailsTwoColumn |
|
|
47
|
+
| ----------------------- | ---------- | ---------------- |
|
|
48
|
+
| Column width per child | Full width | **Half width** |
|
|
49
|
+
| Columns per row | 1 | **2** |
|
|
50
|
+
| Highlighted data column | Full width | **Half width** |
|
|
59
51
|
|
|
60
52
|
**CSS-only implementation notes:**
|
|
61
53
|
|
|
62
|
-
- Children grid:
|
|
63
|
-
- Highlighted data row:
|
|
54
|
+
- Children grid: two equal columns with ~8px gap between items.
|
|
55
|
+
- Highlighted data row: two equal columns with ~8px gap and ~1rem bottom padding.
|
|
64
56
|
- Wrap in FieldGroup (see `FieldGroup.md` DSE skill).
|
|
65
57
|
|
|
66
58
|
## Edge Cases & Special Logic
|
|
@@ -69,24 +61,17 @@ All edge cases identical to `Details`. See `Details.md`.
|
|
|
69
61
|
|
|
70
62
|
## Dependencies
|
|
71
63
|
|
|
72
|
-
-
|
|
73
|
-
-
|
|
64
|
+
- The project's PConnect bridge utility (for rendering child PConnect nodes)
|
|
65
|
+
- The project's component registry (to retrieve `FieldGroup`)
|
|
74
66
|
|
|
75
67
|
## Design System Mapping
|
|
76
68
|
|
|
77
69
|
**UI control type:** Read-only labeled section with fields in a two-column grid.
|
|
78
70
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
| Design System | Recommended Component |
|
|
82
|
-
| ------------------ | ------------------------------------------------------------------------- |
|
|
83
|
-
| Default (CSS only) | `<fieldset>/<legend>` with CSS `grid-template-columns: 1fr 1fr; gap: 8px` |
|
|
84
|
-
| MUI | `<Grid container spacing={1}>` with `<Grid size={{ xs: 6 }}>` per field |
|
|
85
|
-
| Ant Design | `<Descriptions column={2}>` or `<Row><Col span={12}>` per field |
|
|
86
|
-
| Chakra UI | `<SimpleGrid columns={2} spacing={2}>` |
|
|
87
|
-
| Shadcn/ui | Tailwind `grid grid-cols-2 gap-2` |
|
|
88
|
-
|
|
89
|
-
When implementing in a specific design system:
|
|
71
|
+
When implementing in a specific design system, map the following:
|
|
90
72
|
|
|
91
|
-
-
|
|
92
|
-
-
|
|
73
|
+
- The outer wrapper is a labeled group container (same as Details — fieldset/legend, card, or boxed section). Use whatever grouped-section primitive your design system provides.
|
|
74
|
+
- Each child occupies half the container width (two columns per row). Use your design system's grid or multi-column layout primitive with two equal columns and ~8px spacing between items.
|
|
75
|
+
- Highlighted data renders in the same two-column layout with additional bottom padding (~1rem) separating it from regular children.
|
|
76
|
+
- 2-column layout — each field takes half the available width.
|
|
77
|
+
- All other behaviors inherited from `Details` (DISPLAY_ONLY, readOnly, FieldGroup, highlighted data).
|