@pega/sdk 0.0.4 → 0.0.5
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/dist/index.js +287 -1
- package/package.json +1 -1
- package/templates/angular-sdk-reference/package.json +12 -12
- package/templates/angular-sdk-reference/tsconfig.json +1 -1
- package/templates/react-native-sdk-reference/expo-env.d.ts +3 -0
- package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +23 -26
- package/templates/react-sdk-reference/{.github/copilot-instructions.md → .ai-common/global/ai-agent-instructions.md} +7 -7
- package/templates/react-sdk-reference/{.github/instructions/component-map.instructions.md → .ai-common/instructions/component-map.md} +8 -1
- package/templates/react-sdk-reference/{.github/instructions/dse-component.instructions.md → .ai-common/instructions/dse-component.md} +1 -1
- package/templates/react-sdk-reference/{.github/instructions/field-component.instructions.md → .ai-common/instructions/field-component.md} +2 -1
- package/templates/react-sdk-reference/{.github/instructions/template-component.instructions.md → .ai-common/instructions/template-component.md} +1 -1
- package/templates/react-sdk-reference/{.github/instructions/widget-component.instructions.md → .ai-common/instructions/widget-component.md} +1 -1
- package/templates/react-sdk-reference/{.github/prompts/add-component.prompt.md → .ai-common/prompts/add-component.md} +45 -18
- package/templates/react-sdk-reference/{.cursor/rules → .ai-common}/prompts/component-manifest.json +8 -2
- package/templates/react-sdk-reference/{.github/prompts/generate-all-components.prompt.md → .ai-common/prompts/generate-all-components.md} +195 -78
- package/templates/react-sdk-reference/{.github/prompts/generate-dse-components.prompt.md → .ai-common/prompts/generate-dse-components.md} +28 -17
- package/templates/react-sdk-reference/{.github/prompts/generate-field-components.prompt.md → .ai-common/prompts/generate-field-components.md} +32 -16
- package/templates/react-sdk-reference/{.github/prompts/generate-template-components.prompt.md → .ai-common/prompts/generate-template-components.md} +76 -22
- package/templates/react-sdk-reference/{.github/prompts/generate-widget-components.prompt.md → .ai-common/prompts/generate-widget-components.md} +44 -30
- package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -0
- package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +50 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Banner.md +44 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/CaseSummaryFields.md +54 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/DetailsFields.md +49 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/FieldGroup.md +44 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/FieldGroupList.md +43 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/FieldValueList.md +46 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +67 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/Pulse.md +20 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/RichTextEditor.md +58 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +31 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension.md +1 -1
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-components.md +18 -1
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +298 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/CancelAlert.md +132 -3
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +358 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +230 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +221 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +213 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Decimal.md +112 -13
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Dropdown.md +127 -1
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Email.md +68 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Group.md +51 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Integer.md +81 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Location.md +105 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Multiselect.md +70 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/ObjectReference.md +74 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Percentage.md +84 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Phone.md +81 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/RadioButtons.md +93 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/RichText.md +85 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/ScalarList.md +54 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/SelectableCard.md +55 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/SemanticLink.md +64 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/TextArea.md +66 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/TextContent.md +28 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextInput.md +67 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/Time.md +67 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/URL.md +59 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +90 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-components.md +83 -52
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/AdvancedSearch.md +77 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +273 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/BannerPage.md +39 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/CaseSummary.md +79 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +399 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +282 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/Confirmation.md +89 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +50 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DefaultForm.md +117 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DefaultPage.md +49 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/Details.md +59 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DetailsSubTabs.md +60 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DetailsThreeColumn.md +12 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DetailsTwoColumn.md +12 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DynamicTabs.md +67 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/FieldGroupTemplate.md +119 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/HierarchicalForm.md +45 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/InlineDashboard.md +41 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/InlineDashboardPage.md +56 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/ListPage.md +18 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +419 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +40 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/NarrowWide.md +66 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/OneColumn.md +34 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/PromotedFilters.md +92 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SelfServiceCaseView.md +56 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SimpleTable.md +59 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SingleReferenceReadOnly.md +52 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/SubTabs.md +47 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/TwoColumn.md +49 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WssNavBar.md +71 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-components.md +1 -1
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/AppAnnouncement.md +38 -1
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Attachment.md +58 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/CaseHistory.md +63 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +81 -14
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +20 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/QuickCreate.md +48 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +66 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +492 -0
- package/templates/react-sdk-reference/package.minimal.json +29 -0
- package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
- package/templates/react-sdk-reference/src/MashupApp.tsx +8 -19
- package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
- package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
- package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
- package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -75
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
- package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +0 -193
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
- package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
- package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -137
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +0 -188
- package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +0 -173
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
- package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +0 -155
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
- package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +0 -70
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
- package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +0 -118
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
- package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
- package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
- package/templates/react-sdk-reference/.cursor/rules/field-component.mdrules +0 -74
- package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
- package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
- package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension.mdrules +0 -294
- package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Group.mdrules +0 -95
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ObjectReference.mdrules +0 -169
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RichText.mdrules +0 -143
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SemanticLink.mdrules +0 -153
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
- package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
- package/templates/react-sdk-reference/.cursor/rules/skills/template-components.mdrules +0 -327
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/BannerPage.mdrules +0 -88
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Details.mdrules +0 -93
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SubTabs.mdrules +0 -84
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-components.mdrules +0 -276
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/CaseHistory.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
- package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
- package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
- package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
- package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
- package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -152
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
- package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
- package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +0 -117
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +0 -112
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
- package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +0 -139
- package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
- package/templates/react-sdk-reference/AGENTS.md +0 -246
- /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
- /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +0 -0
|
@@ -31,6 +31,50 @@ Children are rendered inside a full-width inner container.
|
|
|
31
31
|
| `collapsible` | `boolean` | No | If `true`, the header acts as a collapse/expand toggle. Default `false` |
|
|
32
32
|
| `instructions` | `string` | No | HTML string of instruction text shown between header and fields |
|
|
33
33
|
|
|
34
|
+
## Component Skeleton
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { type PropsWithChildren, useState } from 'react';
|
|
38
|
+
|
|
39
|
+
interface FieldGroupProps {
|
|
40
|
+
name?: string;
|
|
41
|
+
collapsible?: boolean;
|
|
42
|
+
instructions?: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default function FieldGroup(props: PropsWithChildren<FieldGroupProps>) {
|
|
46
|
+
const { children, name, collapsible = false, instructions } = props;
|
|
47
|
+
const [collapsed, setCollapsed] = useState(false);
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<OuterContainer spacing={4}>
|
|
51
|
+
<InnerFullWidth>
|
|
52
|
+
{/* Header */}
|
|
53
|
+
{name && (
|
|
54
|
+
<div className="field-margin">
|
|
55
|
+
{collapsible ? (
|
|
56
|
+
<span id="field-group-header" className="header-clickable"
|
|
57
|
+
style={{ cursor: 'pointer' }} onClick={() => setCollapsed(c => !c)}>
|
|
58
|
+
{collapsed ? <ArrowRightIcon /> : <ArrowDownIcon />}
|
|
59
|
+
<b>{name}</b>
|
|
60
|
+
</span>
|
|
61
|
+
) : (
|
|
62
|
+
<b>{name}</b>
|
|
63
|
+
)}
|
|
64
|
+
</div>
|
|
65
|
+
)}
|
|
66
|
+
{/* Instructions (skip if === 'none') */}
|
|
67
|
+
{instructions && instructions !== 'none' && (
|
|
68
|
+
<div className="instruction-text" dangerouslySetInnerHTML={{ __html: instructions }} />
|
|
69
|
+
)}
|
|
70
|
+
{/* Children (hidden when collapsed) */}
|
|
71
|
+
{!collapsed && <div style={{ width: '100%' }}>{children}</div>}
|
|
72
|
+
</InnerFullWidth>
|
|
73
|
+
</OuterContainer>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
34
78
|
## Behavioral Contract
|
|
35
79
|
|
|
36
80
|
1. **State:** Maintain a `collapsed` boolean in local state, initialized to `false` (expanded).
|
|
@@ -24,6 +24,49 @@ Renders a vertical list of field group items. Each item has a bold name header,
|
|
|
24
24
|
| `onDelete` | `(id: string) => void` | No | Called with the item's `id` when the delete button is clicked. If not provided, no delete button is shown |
|
|
25
25
|
| `onAdd` | `() => void` | No | Called when the "+Add" link is clicked. If not provided, no add link or dividers are shown |
|
|
26
26
|
|
|
27
|
+
## Component Skeleton
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { Utils } from '../../helpers/utils';
|
|
31
|
+
|
|
32
|
+
interface FieldGroupListProps {
|
|
33
|
+
items: Array<{ name: string; id: string; children: any }>;
|
|
34
|
+
onDelete?: (id: string) => void;
|
|
35
|
+
onAdd?: () => void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export default function FieldGroupList(props: FieldGroupListProps) {
|
|
39
|
+
const trashIcon = Utils.getImageSrc('trash', Utils.getSDKStaticConentUrl());
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<OuterContainer spacing={4}>
|
|
43
|
+
<InnerFullWidth>
|
|
44
|
+
<InnerGrid spacing={1}>
|
|
45
|
+
{props.items.map(item => (
|
|
46
|
+
<FullWidthItem key={item.name}>
|
|
47
|
+
<b>{item.name}</b>
|
|
48
|
+
{props.onDelete && (
|
|
49
|
+
<button type="button" style={{ float: 'right' }} className="psdk-utility-button"
|
|
50
|
+
id={`delete-row-${item.id}`} aria-label="Delete Row"
|
|
51
|
+
onClick={() => props.onDelete(item.id)}>
|
|
52
|
+
<img className="psdk-utility-card-action-svg-icon" src={trashIcon} />
|
|
53
|
+
</button>
|
|
54
|
+
)}
|
|
55
|
+
{item.children}
|
|
56
|
+
<br />
|
|
57
|
+
{props.onAdd && <><Divider /><br /></>}
|
|
58
|
+
</FullWidthItem>
|
|
59
|
+
))}
|
|
60
|
+
{props.onAdd && (
|
|
61
|
+
<LinkButton onClick={props.onAdd} style={{ cursor: 'pointer' }}>+Add</LinkButton>
|
|
62
|
+
)}
|
|
63
|
+
</InnerGrid>
|
|
64
|
+
</InnerFullWidth>
|
|
65
|
+
</OuterContainer>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
27
70
|
## Behavioral Contract
|
|
28
71
|
|
|
29
72
|
1. Render a `Grid container` with `spacing={4}` and `justifyContent='space-between'` as the outer wrapper.
|
|
@@ -30,6 +30,52 @@ When no name is provided, only the value is rendered at full width. Used directl
|
|
|
30
30
|
| `variant` | `string` | No | Layout: `'inline'` (default) or `'stacked'` |
|
|
31
31
|
| `isHtml` | `boolean` | No | If `true`, render value as raw HTML (default `false`) |
|
|
32
32
|
|
|
33
|
+
## Component Skeleton
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
interface FieldValueListProps {
|
|
37
|
+
name?: string;
|
|
38
|
+
value: any;
|
|
39
|
+
variant?: string;
|
|
40
|
+
isHtml?: boolean;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export default function FieldValueList({ name, value, variant, isHtml = false }: FieldValueListProps) {
|
|
44
|
+
// 1. Fallback for empty value
|
|
45
|
+
const formattedValue = (value === undefined || value === '') ? '---' : value;
|
|
46
|
+
|
|
47
|
+
// 2. No-name case: render value only at full width
|
|
48
|
+
if (!name) {
|
|
49
|
+
const typography = variant === 'stacked' ? 'h6' : 'body2';
|
|
50
|
+
return isHtml
|
|
51
|
+
? <ValueContainer typography={typography} dangerouslySetInnerHTML={{ __html: formattedValue }} />
|
|
52
|
+
: <ValueContainer typography={typography}>{formattedValue}</ValueContainer>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// 3. Stacked variant: label on top, larger value below
|
|
56
|
+
if (variant === 'stacked') {
|
|
57
|
+
return (
|
|
58
|
+
<Row direction="column">
|
|
59
|
+
<Label style={{ paddingBottom: 0 }}>{name}</Label>
|
|
60
|
+
{isHtml
|
|
61
|
+
? <Value typography="h6" style={{ paddingTop: 0 }} dangerouslySetInnerHTML={{ __html: formattedValue }} />
|
|
62
|
+
: <Value typography="h6" style={{ paddingTop: 0 }}>{formattedValue}</Value>}
|
|
63
|
+
</Row>
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// 4. Inline variant (default): label 4 cols, value 8 cols
|
|
68
|
+
return (
|
|
69
|
+
<Row>
|
|
70
|
+
<Label xs={4}>{name}</Label>
|
|
71
|
+
{isHtml
|
|
72
|
+
? <Value xs={8} dangerouslySetInnerHTML={{ __html: formattedValue }} />
|
|
73
|
+
: <Value xs={8}>{formattedValue}</Value>}
|
|
74
|
+
</Row>
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
33
79
|
## Behavioral Contract
|
|
34
80
|
|
|
35
81
|
1. **Empty value fallback:** If `value` is `undefined` or an empty string (`''`), display `'---'` instead.
|
|
@@ -31,6 +31,73 @@ The component interface extends `PConnProps` but all rendering data is passed as
|
|
|
31
31
|
| `updateLabel` | `string` | Yes | Display label for the update operator field |
|
|
32
32
|
| `updateOperator` | `{ userName: string; userId: string }` | Yes | Updater's name and ID |
|
|
33
33
|
|
|
34
|
+
## Component Skeleton
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { useState } from 'react';
|
|
38
|
+
import { Utils } from '../../helpers/utils';
|
|
39
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
40
|
+
|
|
41
|
+
interface OperatorProps extends PConnProps {
|
|
42
|
+
label: string; displayLabel?: any;
|
|
43
|
+
createDateTime: string; createLabel: string; createOperator: { userName: string; userId: string };
|
|
44
|
+
updateDateTime: string; updateLabel: string; updateOperator: { userName: string; userId: string };
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default function Operator(props: OperatorProps) {
|
|
48
|
+
const { label, displayLabel, createDateTime, createLabel, createOperator,
|
|
49
|
+
updateDateTime, updateLabel, updateOperator } = props;
|
|
50
|
+
const [popoverAnchorEl, setPopoverAnchorEl] = useState(null);
|
|
51
|
+
const [popoverFields, setPopoverFields] = useState([]);
|
|
52
|
+
|
|
53
|
+
// 1. Operator selection based on label/displayLabel
|
|
54
|
+
let caseOpLabel = '---', caseOpName = '---', caseOpId = '', caseTime = '';
|
|
55
|
+
const labelLower = (label || displayLabel || '').toLowerCase();
|
|
56
|
+
if (labelLower === 'create operator') {
|
|
57
|
+
caseOpLabel = createLabel; caseOpName = createOperator.userName;
|
|
58
|
+
caseOpId = createOperator.userId; caseTime = createDateTime;
|
|
59
|
+
} else if (labelLower === 'update operator') {
|
|
60
|
+
caseOpLabel = updateLabel; caseOpName = updateOperator.userName;
|
|
61
|
+
caseOpId = updateOperator.userId; caseTime = updateDateTime;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// 2. Click handler: fetch operator details + open popover
|
|
65
|
+
const showOperatorDetails = (event) => {
|
|
66
|
+
if (!caseOpId) return;
|
|
67
|
+
PCore.getUserApi().getOperatorDetails(caseOpId).then(res => {
|
|
68
|
+
const info = res.data?.pyOperatorInfo || {};
|
|
69
|
+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
70
|
+
setPopoverFields([
|
|
71
|
+
{ label: localizedVal('Position', 'Operator'), value: info.pyPosition || '---' },
|
|
72
|
+
{ label: localizedVal('Organization', 'Operator'), value: info.pyOrganization || '---' },
|
|
73
|
+
{ label: localizedVal('Reports to', 'Operator'), value: info.pyReportToUserName || '---' },
|
|
74
|
+
{ label: localizedVal('Telephone', 'Operator'), value: info.pyTelephone || '---', href: `tel:${info.pyTelephone}` },
|
|
75
|
+
{ label: localizedVal('Email address', 'Operator'), value: info.pyEmailAddress || '---', href: `mailto:${info.pyEmailAddress}` },
|
|
76
|
+
]);
|
|
77
|
+
setPopoverAnchorEl(event.currentTarget);
|
|
78
|
+
});
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// 3. Render: read-only clickable field + relative time + popover
|
|
82
|
+
return (
|
|
83
|
+
<div>
|
|
84
|
+
<ReadOnlyField label={caseOpLabel} value={caseOpName}
|
|
85
|
+
onClick={showOperatorDetails} style={{ cursor: 'pointer' }} />
|
|
86
|
+
<RelativeTime>{Utils.generateDateTime(caseTime, 'DateTime-Since')}</RelativeTime>
|
|
87
|
+
<Popover anchorEl={popoverAnchorEl} onClose={() => setPopoverAnchorEl(null)}>
|
|
88
|
+
<h6>{caseOpName}</h6>
|
|
89
|
+
{popoverFields.map(f => (
|
|
90
|
+
<Row key={f.label}>
|
|
91
|
+
<Caption>{f.label}</Caption>
|
|
92
|
+
<Value>{f.href ? <a href={f.href}>{f.value}</a> : f.value}</Value>
|
|
93
|
+
</Row>
|
|
94
|
+
))}
|
|
95
|
+
</Popover>
|
|
96
|
+
</div>
|
|
97
|
+
);
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
34
101
|
## Behavioral Contract
|
|
35
102
|
|
|
36
103
|
### 1. Operator Selection
|
|
@@ -22,6 +22,26 @@ Renders a card container intended to display an activity feed or comments stream
|
|
|
22
22
|
| ---------- | ----------- | -------- | ------------------------------------------------------------------------- |
|
|
23
23
|
| `children` | `ReactNode` | No | Child components (activity stream content) — currently unused in the stub |
|
|
24
24
|
|
|
25
|
+
## Component Skeleton
|
|
26
|
+
|
|
27
|
+
Stub implementation — placeholder only.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import type { PropsWithChildren } from 'react';
|
|
31
|
+
|
|
32
|
+
export default function Pulse(props: PropsWithChildren<{}>) {
|
|
33
|
+
// Stub: renders a card with left accent border and placeholder content
|
|
34
|
+
return (
|
|
35
|
+
<Card style={{ marginTop: '8px', marginBottom: '8px', borderLeft: '6px solid var(--app-primary-light-color)' }}>
|
|
36
|
+
<CardHeader><h6>Pulse</h6></CardHeader>
|
|
37
|
+
<CardContent>Pulse</CardContent>
|
|
38
|
+
</Card>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
> A production implementation would render `props.children` (the activity stream) inside the card body.
|
|
44
|
+
|
|
25
45
|
> **Note:** The current reference implementation ignores `children` and renders placeholder content. A full implementation would render `children` inside the card body.
|
|
26
46
|
|
|
27
47
|
## Behavioral Contract
|
|
@@ -38,6 +38,64 @@ The editor is a `forwardRef` component — the ref is connected to the underlyin
|
|
|
38
38
|
| `onBlur` | `React.EventHandler<any>` | Yes | Called when the editor loses focus |
|
|
39
39
|
| `onChange` | `React.EventHandler<any>` | Yes | Called when the editor content changes |
|
|
40
40
|
|
|
41
|
+
## Component Skeleton
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { forwardRef } from 'react';
|
|
45
|
+
import { useAfterInitialEffect, useConsolidatedRef, useUID } from '@pega/sdk-react';
|
|
46
|
+
|
|
47
|
+
interface RichTextEditorProps {
|
|
48
|
+
id?: string; defaultValue: string; label: string; labelHidden: boolean;
|
|
49
|
+
info?: string; testId?: string; placeholder?: string;
|
|
50
|
+
disabled: boolean; required: boolean; readOnly: boolean;
|
|
51
|
+
error: boolean; onBlur: any; onChange: any;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const RichTextEditor = forwardRef((props: RichTextEditorProps, ref) => {
|
|
55
|
+
const { defaultValue, label, labelHidden, info, testId, placeholder,
|
|
56
|
+
disabled, required, readOnly, error, onBlur, onChange } = props;
|
|
57
|
+
const editorRef = useConsolidatedRef(ref);
|
|
58
|
+
const id = props.id || useUID();
|
|
59
|
+
|
|
60
|
+
// 1. Mode transitions after initial mount
|
|
61
|
+
useAfterInitialEffect([readOnly, disabled], () => {
|
|
62
|
+
editorRef?.current?.mode?.set(readOnly || disabled ? 'readonly' : 'design');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// 2. Read-only mode: static HTML display
|
|
66
|
+
if (readOnly) {
|
|
67
|
+
return (
|
|
68
|
+
<FormWrapper testId={testId} error={error} required={required}>
|
|
69
|
+
{!labelHidden && <Label>{label}</Label>}
|
|
70
|
+
<div className="readonly-richtext-editor"
|
|
71
|
+
dangerouslySetInnerHTML={{ __html: defaultValue || '--' }} />
|
|
72
|
+
{info && <HelperText>{info}</HelperText>}
|
|
73
|
+
</FormWrapper>
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// 3. Edit mode: TinyMCE (or equivalent) editor
|
|
78
|
+
// Key init config: skin (theme-aware), menubar: false, statusbar: false,
|
|
79
|
+
// toolbar_location: 'bottom', min_height: 130, plugins: [lists, advlist, autolink, image, link, autoresize]
|
|
80
|
+
// toolbar: 'blocks | bold italic strikethrough | bullist numlist outdent indent | link image' (or false if disabled)
|
|
81
|
+
// file_picker_callback: creates <input type='file' accept='image/*'>, reads as DataURL, caches blob
|
|
82
|
+
// content_style: theme-aware CSS string
|
|
83
|
+
// onInit: store editor instance in editorRef.current
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<FormWrapper testId={testId} error={error} required={required}>
|
|
87
|
+
{!labelHidden && <Label>{label}</Label>}
|
|
88
|
+
<RichTextEditorWidget id={id} initialValue={defaultValue}
|
|
89
|
+
disabled={disabled} onBlur={onBlur} onEditorChange={onChange}
|
|
90
|
+
placeholder={placeholder} onInit={(evt, editor) => { editorRef.current = editor; }} />
|
|
91
|
+
{info && <HelperText>{info}</HelperText>}
|
|
92
|
+
</FormWrapper>
|
|
93
|
+
);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
export default RichTextEditor;
|
|
97
|
+
```
|
|
98
|
+
|
|
41
99
|
## Behavioral Contract
|
|
42
100
|
|
|
43
101
|
### 1. Ref Forwarding
|
|
@@ -23,6 +23,37 @@ Renders a titled section of clickable action cards arranged in a responsive CSS
|
|
|
23
23
|
| `heading` | `string` | Yes | Section title rendered as an `<h1>` |
|
|
24
24
|
| `actions` | `Array<{ label: string; onClick: () => void; icon?: string }>` | No | List of action items; each has a label, click handler, and optional icon URL |
|
|
25
25
|
|
|
26
|
+
## Component Skeleton
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import './WssQuickCreate.css';
|
|
30
|
+
|
|
31
|
+
interface WssQuickCreateProps {
|
|
32
|
+
heading: string;
|
|
33
|
+
actions?: Array<{ label: string; onClick: () => void; icon?: string }>;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export default function WssQuickCreate({ heading, actions }: WssQuickCreateProps) {
|
|
37
|
+
return (
|
|
38
|
+
<>
|
|
39
|
+
<h1 id="quick-links-heading" className="quick-links-heading">{heading}</h1>
|
|
40
|
+
<ul id="quick-links" className="quick-link-ul-list">
|
|
41
|
+
{actions?.map((action, index) => (
|
|
42
|
+
<li key={index} className="quickLinkList">
|
|
43
|
+
<button type="button" className="quick-link-button" onClick={action.onClick}>
|
|
44
|
+
<span className="quick-link-button-span">
|
|
45
|
+
{action.icon && <img className="quick-link-icon" src={action.icon} />}
|
|
46
|
+
<span>{action.label}</span>
|
|
47
|
+
</span>
|
|
48
|
+
</button>
|
|
49
|
+
</li>
|
|
50
|
+
))}
|
|
51
|
+
</ul>
|
|
52
|
+
</>
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
26
57
|
## Behavioral Contract
|
|
27
58
|
|
|
28
59
|
1. Render the `heading` in an `<h1>` element with `id='quick-links-heading'` and class `quick-links-heading`.
|
package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension.md
RENAMED
|
@@ -221,7 +221,7 @@ DSE components fall into three patterns with different DS dependencies:
|
|
|
221
221
|
|
|
222
222
|
The component-specific skill file specifies which pattern applies.
|
|
223
223
|
|
|
224
|
-
**1. Check the component-specific skill file** —
|
|
224
|
+
**1. Check the component-specific skill file** — `{{SKILL_DIR}}/design-system-extension-skills/<ComponentName>.md` contains a **Design System Mapping** table where available.
|
|
225
225
|
|
|
226
226
|
**2. If the chosen design system is not listed** — use the component purpose and pattern category above to pick the closest DS primitive.
|
|
227
227
|
|
|
@@ -153,7 +153,7 @@ export default function MyField(props: MyFieldProps) {
|
|
|
153
153
|
|
|
154
154
|
When filling in the `// [DS RENDER]` section with a specific design system:
|
|
155
155
|
|
|
156
|
-
**1. Check the component-specific skill file** —
|
|
156
|
+
**1. Check the component-specific skill file** — `{{SKILL_DIR}}/field-skills/<ComponentName>.md` contains a **Design System Mapping** table that lists the recommended DS component for common design systems. Use it as a starting point.
|
|
157
157
|
|
|
158
158
|
**2. If the chosen design system is not in the mapping table** — use the **UI control type** field in the same skill file (e.g., `"Combobox / typeahead autocomplete input"`) to identify the closest DS primitive.
|
|
159
159
|
|
|
@@ -181,6 +181,23 @@ grep -A 40 "interface.*Props" <path-to-file>
|
|
|
181
181
|
|
|
182
182
|
## Event Handling
|
|
183
183
|
|
|
184
|
+
> ⚠️ **CRITICAL — DO NOT DUPLICATE IMPORTS FROM `field-utils`**
|
|
185
|
+
>
|
|
186
|
+
> If the project has a `field-utils.ts` or `field-utils.tsx` file that exports utility functions AND types (e.g., `DynamicFieldProps`, `commitField`, `FieldValue`, `getFieldContext`, `useFieldValue`, `helperText`, `getOptions`), import everything you need in a **single import statement**.
|
|
187
|
+
>
|
|
188
|
+
> ```typescript
|
|
189
|
+
> // ✅ CORRECT — one import for both types and functions
|
|
190
|
+
> import { commitField, DynamicFieldProps, FieldValue, getFieldContext, helperText } from '../field-utils';
|
|
191
|
+
>
|
|
192
|
+
> // ❌ WRONG — duplicate identifier error!
|
|
193
|
+
> import type { DynamicFieldProps } from '../field-utils';
|
|
194
|
+
> import { commitField, DynamicFieldProps, FieldValue, getFieldContext } from '../field-utils';
|
|
195
|
+
> ```
|
|
196
|
+
>
|
|
197
|
+
> TypeScript allows mixing type and value exports in a single import. NEVER add a separate `import type` line for a symbol that is already imported in another import from the same module.
|
|
198
|
+
>
|
|
199
|
+
> **Before writing imports:** Check what `field-utils` exports. If it exports `DynamicFieldProps` as a `type`, you can import it alongside value exports in one statement.
|
|
200
|
+
|
|
184
201
|
Use `src/components/helpers/event-utils.ts` to commit values to the Pega store:
|
|
185
202
|
|
|
186
203
|
```typescript
|