@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
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
# Skill: HierarchicalForm
|
|
2
|
-
|
|
3
|
-
Multi-step tabbed form template. Renders form sections as horizontal tabs with per-tab validation error badges and persisted active tab navigation.
|
|
4
|
-
|
|
5
|
-
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Component Purpose
|
|
10
|
-
|
|
11
|
-
Renders a multi-step form where each section is a tab. Tabs display error badges when their content has validation errors. The active tab index is persisted to navigation state so it survives renders. Optional instruction HTML is displayed above the tab bar.
|
|
12
|
-
|
|
13
|
-
## Pega Metadata
|
|
14
|
-
|
|
15
|
-
- **Registration key:** `HierarchicalForm` (in `component-map.ts`)
|
|
16
|
-
- **Category:** Form template
|
|
17
|
-
- **Extends:** `PConnProps`
|
|
18
|
-
|
|
19
|
-
## Props
|
|
20
|
-
|
|
21
|
-
| Prop | Type | Required | Description |
|
|
22
|
-
| -------------- | ------------- | -------- | --------------------------------------------- |
|
|
23
|
-
| `children` | `ReactNode[]` | Yes | One child per tab section |
|
|
24
|
-
| `instructions` | `string` | No | HTML instruction text shown above the tab bar |
|
|
25
|
-
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
26
|
-
|
|
27
|
-
## Behavioral Contract
|
|
28
|
-
|
|
29
|
-
### Hook: `useHierarchicalForm`
|
|
30
|
-
|
|
31
|
-
`useHierarchicalForm(getPConnect, numTabs)` returns:
|
|
32
|
-
|
|
33
|
-
- `activeTabId`: currently selected tab index (string, e.g. `'0'`)
|
|
34
|
-
- `setActiveTabId`: setter for `activeTabId`
|
|
35
|
-
- `tabErrorCounts`: `Record<string, number>` — error count per tab index key
|
|
36
|
-
|
|
37
|
-
Internally it calls `useGetTabsCount(getPConnect)` to compute `tabErrorCounts`.
|
|
38
|
-
|
|
39
|
-
### Active Tab Persistence
|
|
40
|
-
|
|
41
|
-
- On mount, read persisted tab from `PCore.getNavigationUtils().getComponentState(navigationKey)` — use `getActiveTabId(componentState)` to extract the stored tab index, or fall back to `getFirstVisibleTabId(tabItems)`.
|
|
42
|
-
- On tab change, persist via `PCore.getNavigationUtils().setComponentState(navigationKey, { activeTabId: newId })`.
|
|
43
|
-
- `navigationKey` is derived from the component's fully-qualified context path.
|
|
44
|
-
|
|
45
|
-
### Instructions
|
|
46
|
-
|
|
47
|
-
- Call `getInstructions(getPConnect(), props.instructions)` to get sanitized HTML.
|
|
48
|
-
- If non-empty, render `<div className='psdk-default-form-instruction-text' dangerouslySetInnerHTML={{ __html: instructions }} />` above the tabs.
|
|
49
|
-
|
|
50
|
-
### Tab Items
|
|
51
|
-
|
|
52
|
-
- Build `tabItems` from `children` — each entry has `{ id: index.toString(), name: child.label }`.
|
|
53
|
-
- Filter to visible tabs via `getFirstVisibleTabId(tabItems)`.
|
|
54
|
-
|
|
55
|
-
### Error Badge
|
|
56
|
-
|
|
57
|
-
- For each tab, read `tabErrorCounts[tabIndex]`.
|
|
58
|
-
- If `> 0`: wrap the tab label with `<Tooltip title={errorCountMsg}><Badge badgeContent={count} color='error'>{label}</Badge></Tooltip>`.
|
|
59
|
-
- Else: render the label plain.
|
|
60
|
-
|
|
61
|
-
### Render
|
|
62
|
-
|
|
63
|
-
1. Optional instruction block (above tabs).
|
|
64
|
-
2. `<TabContext value={activeTabId}>` wrapper.
|
|
65
|
-
3. `<Tabs onChange={handleTabChange} value={activeTabId}>` containing `<Tab>` per visible tab (with error badge label if applicable).
|
|
66
|
-
4. `<TabPanel value={tabId}>` per tab containing the corresponding child.
|
|
67
|
-
|
|
68
|
-
## Visual Specifications
|
|
69
|
-
|
|
70
|
-
### Tab Bar
|
|
71
|
-
|
|
72
|
-
| Property | Value |
|
|
73
|
-
| ----------- | ------------------------------------------------------ |
|
|
74
|
-
| Orientation | Horizontal |
|
|
75
|
-
| Error badge | Red MUI Badge with tooltip showing error count message |
|
|
76
|
-
|
|
77
|
-
**CSS-only implementation notes:**
|
|
78
|
-
|
|
79
|
-
- Tab bar: same as `DetailsSubTabs` — `display: flex; border-bottom: 2px solid var(--divider)`.
|
|
80
|
-
- Error badge: red circle badge overlaid top-right of the tab label text.
|
|
81
|
-
- Instruction text: `padding: 0.5rem 0; margin-bottom: 0.5rem; font-size: 0.875rem`.
|
|
82
|
-
|
|
83
|
-
## Edge Cases & Special Logic
|
|
84
|
-
|
|
85
|
-
- `useGetTabsCount` is a custom hook specific to `HierarchicalForm` — it tracks validation errors per tab section.
|
|
86
|
-
- `getActiveTabId` / `getFirstVisibleTabId` are helpers from `tabUtils` — they handle the case where the persisted tab is no longer visible.
|
|
87
|
-
- `navigationKey` must be stable across re-renders — derive it once in `useMemo` from `getPConnect().getStateProps()` or equivalent.
|
|
88
|
-
- If no visible tabs, render nothing (null).
|
|
89
|
-
|
|
90
|
-
## Dependencies
|
|
91
|
-
|
|
92
|
-
- `useHierarchicalForm`, `useGetTabsCount` from `./hooks`
|
|
93
|
-
- `getActiveTabId`, `getFirstVisibleTabId`, `tabClick` from `../SubTabs/tabUtils`
|
|
94
|
-
- `getInstructions` from `../../helpers/template-utils`
|
|
95
|
-
- `TabContext`, `TabPanel` from `@mui/lab`
|
|
96
|
-
- `Tab`, `Tabs`, `Badge`, `Tooltip` from `@mui/material`
|
|
97
|
-
|
|
98
|
-
## Design System Mapping
|
|
99
|
-
|
|
100
|
-
**UI control type:** Multi-step tabbed form with per-tab error indicators and persistent active tab.
|
|
101
|
-
|
|
102
|
-
Listed design systems are examples only.
|
|
103
|
-
|
|
104
|
-
| Design System | Recommended Component |
|
|
105
|
-
| ------------------ | -------------------------------------------------------------- |
|
|
106
|
-
| Default (CSS only) | Custom tab bar + CSS badge (red circle via pseudo-element) |
|
|
107
|
-
| MUI | `<Tabs>` + `<Badge>` + `<Tooltip>` + `<TabContext>/<TabPanel>` |
|
|
108
|
-
| Ant Design | `<Tabs>` with custom `tabBarExtraContent` for error badges |
|
|
109
|
-
| Chakra UI | `<Tabs>` + `<Badge colorScheme='red'>` inside tab label |
|
|
110
|
-
| Shadcn/ui | `<Tabs>` + custom badge overlay on tab trigger |
|
|
111
|
-
|
|
112
|
-
When implementing in a specific design system:
|
|
113
|
-
|
|
114
|
-
- Error badge is mandatory — always show error counts when `tabErrorCounts[id] > 0`
|
|
115
|
-
- Active tab must be persisted via `PCore.getNavigationUtils()` for correct navigation behavior
|
|
116
|
-
- Instructions HTML renders above the entire tab bar, not per-tab
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
# Skill: InlineDashboard
|
|
2
|
-
|
|
3
|
-
Inline dashboard template. Renders a dashboard with a title, a main content area, and an optional filter panel whose position is configurable.
|
|
4
|
-
|
|
5
|
-
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Component Purpose
|
|
10
|
-
|
|
11
|
-
Renders an inline dashboard layout consisting of a title heading, a main content panel, and an optional filter panel. The filter panel position is configurable: `block-start` places filters above the content in a stacked layout; any other position places filters to the side using a 9/3 column split.
|
|
12
|
-
|
|
13
|
-
## Pega Metadata
|
|
14
|
-
|
|
15
|
-
- **Registration key:** `InlineDashboard` (in `component-map.ts`)
|
|
16
|
-
- **Category:** Page template — dashboard
|
|
17
|
-
- **Extends:** `PConnProps`
|
|
18
|
-
|
|
19
|
-
## Props
|
|
20
|
-
|
|
21
|
-
| Prop | Type | Required | Description |
|
|
22
|
-
| ---------------- | ------------- | -------- | ----------------------------------------------------------------------------- |
|
|
23
|
-
| `title` | `string` | No | Dashboard title displayed above the content area |
|
|
24
|
-
| `filterPosition` | `string` | No | Filter panel position: `'block-start'` (above) or other (side). Default: side |
|
|
25
|
-
| `children` | `ReactNode[]` | Yes | `children[0]` = main content, `children[1]` = filter panel |
|
|
26
|
-
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
27
|
-
|
|
28
|
-
## Behavioral Contract
|
|
29
|
-
|
|
30
|
-
### Title
|
|
31
|
-
|
|
32
|
-
- If `title` is non-empty, render `<Typography variant='h4'>{title}</Typography>` above the grid.
|
|
33
|
-
|
|
34
|
-
### Filter Position: `'block-start'`
|
|
35
|
-
|
|
36
|
-
Stacked layout — filter panel above main content:
|
|
37
|
-
|
|
38
|
-
- `<Grid container direction='column-reverse'>` (reverse so filter renders visually above content).
|
|
39
|
-
- Filter panel: `<Grid id='filters' size={{ xs: 12 }}>`.
|
|
40
|
-
- Main content: `<Grid size={{ xs: 12 }}>`.
|
|
41
|
-
|
|
42
|
-
### Filter Position: Other (side)
|
|
43
|
-
|
|
44
|
-
Side-by-side layout — main content left, filters right:
|
|
45
|
-
|
|
46
|
-
- `<Grid container direction={...}>` (optionally `row-reverse` based on position value).
|
|
47
|
-
- Main content: `<Grid size={{ xs: 9 }}>`.
|
|
48
|
-
- Filter panel: `<Grid id='filters' size={{ xs: 3 }}>`.
|
|
49
|
-
|
|
50
|
-
### Children Assignment
|
|
51
|
-
|
|
52
|
-
- `children[0]` = main content panel.
|
|
53
|
-
- `children[1]` = filter panel (may be absent if no filters configured).
|
|
54
|
-
|
|
55
|
-
## Visual Specifications
|
|
56
|
-
|
|
57
|
-
### Block-Start Layout (filter above content)
|
|
58
|
-
|
|
59
|
-
```
|
|
60
|
-
[Filter panel — xs:12]
|
|
61
|
-
[Main content — xs:12]
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
### Side Layout (filter to side)
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
[Main content — xs:9] [Filters — xs:3]
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**CSS-only implementation notes:**
|
|
71
|
-
|
|
72
|
-
- Title: `font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem`.
|
|
73
|
-
- Block-start: `display: flex; flex-direction: column; gap: 1rem` (filter div first in DOM but ordered last visually with `order: -1`).
|
|
74
|
-
- Side: `display: grid; grid-template-columns: 3fr 1fr; gap: 1rem`.
|
|
75
|
-
- Filter panel: `id='filters'` — required for accessibility/selector targeting.
|
|
76
|
-
- Responsive: collapse side layout to stacked on mobile.
|
|
77
|
-
|
|
78
|
-
## Edge Cases & Special Logic
|
|
79
|
-
|
|
80
|
-
- If `children[1]` is absent (no filters), render only the main content without the grid.
|
|
81
|
-
- `direction='column-reverse'` in block-start mode — this is the MUI Grid direction prop; in plain CSS, use flexbox `column` direction with `order` property.
|
|
82
|
-
- `title` is optional — if absent, skip the `<Typography h4>` entirely (no empty heading).
|
|
83
|
-
- Filter grid always gets `id='filters'` — this is used by `PromotedFilters` for integration.
|
|
84
|
-
|
|
85
|
-
## Dependencies
|
|
86
|
-
|
|
87
|
-
- MUI: `<Typography variant='h4'>`, `<Grid container>`, `<Grid>` (child)
|
|
88
|
-
- `PConnectComponent` from `@pega/sdk-react`
|
|
89
|
-
|
|
90
|
-
## Design System Mapping
|
|
91
|
-
|
|
92
|
-
**UI control type:** Dashboard layout with configurable title and filter panel position.
|
|
93
|
-
|
|
94
|
-
Listed design systems are examples only.
|
|
95
|
-
|
|
96
|
-
| Design System | Title | Content/Filter Grid |
|
|
97
|
-
| ------------------ | ------------------------------ | ---------------------- |
|
|
98
|
-
| Default (CSS only) | `<h2>` | CSS grid or flexbox |
|
|
99
|
-
| MUI | `<Typography variant='h4'>` | `<Grid container>` |
|
|
100
|
-
| Ant Design | `<Typography.Title level={2}>` | `<Row>/<Col>` |
|
|
101
|
-
| Chakra UI | `<Heading>` | `<Grid>` or `<HStack>` |
|
|
102
|
-
| Shadcn/ui | `<h2>` | Tailwind grid |
|
|
103
|
-
|
|
104
|
-
When implementing in a specific design system:
|
|
105
|
-
|
|
106
|
-
- `filterPosition === 'block-start'` requires stacked layout (12/12) — not side layout (9/3)
|
|
107
|
-
- Filter panel must always have `id='filters'`
|
|
108
|
-
- Title heading (`h4` level) is optional — only render when `title` is provided
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# Skill: InlineDashboardPage
|
|
2
|
-
|
|
3
|
-
Inline dashboard page template. Builds filter components from promoted filters metadata and delegates rendering to `InlineDashboard`.
|
|
4
|
-
|
|
5
|
-
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Component Purpose
|
|
10
|
-
|
|
11
|
-
Page-level wrapper for the inline dashboard. Extracts promoted filter definitions from the PConnect metadata, builds React filter components from them, and passes them to `InlineDashboard` as the second child (filter panel). The first child (main content) is passed through unchanged.
|
|
12
|
-
|
|
13
|
-
> See `InlineDashboard.md` for the layout and rendering behavior. This component only handles filter component construction.
|
|
14
|
-
|
|
15
|
-
## Pega Metadata
|
|
16
|
-
|
|
17
|
-
- **Registration key:** `InlineDashboardPage` (in `component-map.ts`)
|
|
18
|
-
- **Category:** Page template — dashboard page
|
|
19
|
-
- **Extends:** `PConnProps`
|
|
20
|
-
|
|
21
|
-
## Props
|
|
22
|
-
|
|
23
|
-
| Prop | Type | Required | Description |
|
|
24
|
-
| ---------------- | ------------- | -------- | ----------------------------------------------- |
|
|
25
|
-
| `children` | `ReactNode[]` | Yes | Main content children passed to InlineDashboard |
|
|
26
|
-
| `title` | `string` | No | Dashboard title |
|
|
27
|
-
| `filterPosition` | `string` | No | Filter position: `'block-start'` or side |
|
|
28
|
-
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
29
|
-
|
|
30
|
-
## Behavioral Contract
|
|
31
|
-
|
|
32
|
-
### Filter Component Construction
|
|
33
|
-
|
|
34
|
-
In `useEffect([])` (on mount):
|
|
35
|
-
|
|
36
|
-
1. Get promoted filters: `allFilters = getPConnect().getRawMetadata().config.promotedFilters || []`.
|
|
37
|
-
2. Call `buildFilterComponents(getPConnect, allFilters)`:
|
|
38
|
-
- For each filter in `allFilters`, creates a PConnect-based filter field component.
|
|
39
|
-
- Returns an array of React elements ready to render.
|
|
40
|
-
3. Store result in `filterComponents` state.
|
|
41
|
-
|
|
42
|
-
### Render
|
|
43
|
-
|
|
44
|
-
```tsx
|
|
45
|
-
<InlineDashboard title={title} filterPosition={filterPosition} getPConnect={getPConnect}>
|
|
46
|
-
{children[0]} {/* main content */}
|
|
47
|
-
{filterComponents} {/* built filter components */}
|
|
48
|
-
</InlineDashboard>
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
- `children[0]` = main content region.
|
|
52
|
-
- `filterComponents` = built filter elements (replaces raw `children[1]`).
|
|
53
|
-
|
|
54
|
-
## Visual Specifications
|
|
55
|
-
|
|
56
|
-
Identical to `InlineDashboard` — see `InlineDashboard.md`. The only difference is that the filter panel children are programmatically built, not passed directly.
|
|
57
|
-
|
|
58
|
-
## Edge Cases & Special Logic
|
|
59
|
-
|
|
60
|
-
- `allFilters` may be empty — if no promoted filters exist, `filterComponents` is an empty array, and `InlineDashboard` renders without a filter panel.
|
|
61
|
-
- `buildFilterComponents` is async in some implementations — show a loading state if needed until filters are ready.
|
|
62
|
-
- `children[0]` is always the main content — index is stable.
|
|
63
|
-
- `filterComponents` replaces `children[1]` entirely — do not render both.
|
|
64
|
-
|
|
65
|
-
## Dependencies
|
|
66
|
-
|
|
67
|
-
- `buildFilterComponents` from `./utils` — constructs filter field components from promoted filter config
|
|
68
|
-
- `InlineDashboard` — the layout template this component wraps
|
|
69
|
-
|
|
70
|
-
## Design System Mapping
|
|
71
|
-
|
|
72
|
-
**UI control type:** Dashboard page — programmatic filter construction + InlineDashboard delegation.
|
|
73
|
-
|
|
74
|
-
Listed design systems are examples only.
|
|
75
|
-
|
|
76
|
-
This component is a thin orchestration layer. All visual implementation is in `InlineDashboard`. The only implementation detail is `buildFilterComponents` — which creates filter field components from metadata definitions.
|
|
77
|
-
|
|
78
|
-
When implementing in a specific design system:
|
|
79
|
-
|
|
80
|
-
- `buildFilterComponents` must create proper PConnect-backed filter field components
|
|
81
|
-
- If `promotedFilters` is empty, skip the filter panel entirely
|
|
82
|
-
- All layout and styling is delegated to `InlineDashboard`
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
# Skill: ListView
|
|
2
|
-
|
|
3
|
-
Full-featured list view template. Renders a data table with sorting, pagination, global search, single/multi selection, column menu, and filter dialog.
|
|
4
|
-
|
|
5
|
-
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Component Purpose
|
|
10
|
-
|
|
11
|
-
The primary data table component. Renders a sortable, paginated, filterable, and selectable table from a PConnect data source. Supports both standalone page use (`bInForm: false`) and embedded form use (`bInForm: true`). Columns are configurable, and the table supports row-level selection with callback.
|
|
12
|
-
|
|
13
|
-
## Pega Metadata
|
|
14
|
-
|
|
15
|
-
- **Registration key:** `ListView` (in `component-map.ts`)
|
|
16
|
-
- **Category:** Data display template
|
|
17
|
-
- **Extends:** `PConnProps`
|
|
18
|
-
|
|
19
|
-
## Props
|
|
20
|
-
|
|
21
|
-
| Prop | Type | Required | Description |
|
|
22
|
-
| ----------------------- | ---------- | -------- | ----------------------------------------------------------------------------- |
|
|
23
|
-
| `bInForm` | `boolean` | No | Whether rendered inside a form (affects toolbar and padding). Default `false` |
|
|
24
|
-
| `selectionMode` | `string` | No | `'single'` (radio) or `'multi'` (checkbox) or absent (no selection) |
|
|
25
|
-
| `dataPageName` | `string` | No | Name of data page to fetch records from |
|
|
26
|
-
| `referenceList` | `array` | No | In-memory data array (used when data is already available) |
|
|
27
|
-
| `compositeKeys` | `object` | No | Key fields for unique row identification |
|
|
28
|
-
| `columns` | `array` | No | Column definition objects `{ fieldName, label, sortable, filterable }` |
|
|
29
|
-
| `additionalTableConfig` | `object` | No | Extra config merged with column/sort/filter settings |
|
|
30
|
-
| `isSearchable` | `boolean` | No | Whether global search input is shown |
|
|
31
|
-
| `payload` | `object` | No | Query payload for data page requests |
|
|
32
|
-
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
33
|
-
|
|
34
|
-
## Behavioral Contract
|
|
35
|
-
|
|
36
|
-
### Initialization
|
|
37
|
-
|
|
38
|
-
`useInit(getPConnect, columns, dataPageName, payload)` hook:
|
|
39
|
-
|
|
40
|
-
1. Calls `initializeColumns(getPConnect, columns)` to build `configFields`.
|
|
41
|
-
2. Calls `buildFieldsForTable(configFields)` to produce display column definitions.
|
|
42
|
-
3. Calls `getConfigFields(configFields)` for sort/filter metadata.
|
|
43
|
-
4. Fetches initial data via `PCore.getDataApiUtils().getDataAsync(dataPageName, payload)`.
|
|
44
|
-
5. Returns `{ tableDataRows, configFields, totalCount }`.
|
|
45
|
-
|
|
46
|
-
### Sorting
|
|
47
|
-
|
|
48
|
-
- `<TableSortLabel>` in each sortable column header.
|
|
49
|
-
- On click: call `PCore.getDataApiUtils().getDataAsync(dataPageName, { ...payload, sortBy, sortOrder })`.
|
|
50
|
-
- `sortBy` = column field name, `sortOrder` = `'ASC'` or `'DESC'`.
|
|
51
|
-
|
|
52
|
-
### Pagination
|
|
53
|
-
|
|
54
|
-
- `<TablePagination>` component below the table.
|
|
55
|
-
- `rowsPerPageOptions`: `[5, 10, 25]`.
|
|
56
|
-
- On page/rows change: re-fetch with `startIndex` and `maxResults` params.
|
|
57
|
-
|
|
58
|
-
### Global Search
|
|
59
|
-
|
|
60
|
-
- Shown when `isSearchable === true`.
|
|
61
|
-
- `<TextField>` input above the table (toolbar area).
|
|
62
|
-
- On submit/debounce: re-fetch with `searchText` param.
|
|
63
|
-
|
|
64
|
-
### Selection
|
|
65
|
-
|
|
66
|
-
| `selectionMode` | Control per row | Callback |
|
|
67
|
-
| --------------- | --------------- | ---------------------------- |
|
|
68
|
-
| `'single'` | `<Radio>` | `onRowSelect(rowData)` |
|
|
69
|
-
| `'multi'` | `<Checkbox>` | `onRowsSelect(selectedRows)` |
|
|
70
|
-
| absent | None | None |
|
|
71
|
-
|
|
72
|
-
- Select-all checkbox in the header for multi-selection.
|
|
73
|
-
- Selected rows highlighted with `selected` row class.
|
|
74
|
-
|
|
75
|
-
### Column Menu
|
|
76
|
-
|
|
77
|
-
- `<MoreVertIcon>` button in each column header.
|
|
78
|
-
- Opens `<Menu>` with options: Show/Hide column, Pin column.
|
|
79
|
-
- Column visibility stored in local state `columnVisibility`.
|
|
80
|
-
|
|
81
|
-
### Filter Dialog
|
|
82
|
-
|
|
83
|
-
- Filter icon in toolbar or column header.
|
|
84
|
-
- Opens `<Dialog>` with filter form fields for each filterable column.
|
|
85
|
-
- On apply: re-fetch with filter params.
|
|
86
|
-
- `filterData(filters, configFields)` formats filter objects for the API.
|
|
87
|
-
|
|
88
|
-
### Snackbar Toast
|
|
89
|
-
|
|
90
|
-
- Shown on fetch errors or action feedback.
|
|
91
|
-
- Auto-hides after 3000ms.
|
|
92
|
-
|
|
93
|
-
## Visual Specifications
|
|
94
|
-
|
|
95
|
-
| Element | Description |
|
|
96
|
-
| -------------- | -------------------------------------------------------- |
|
|
97
|
-
| Toolbar | Search input + filter button + (optional) action buttons |
|
|
98
|
-
| Table head | Sticky header with sort labels and column menu |
|
|
99
|
-
| Table body | Striped rows, hover state, selected state |
|
|
100
|
-
| Pagination bar | Below table, page size selector + page nav |
|
|
101
|
-
|
|
102
|
-
**CSS-only implementation notes:**
|
|
103
|
-
|
|
104
|
-
- Table container: `overflow-x: auto`.
|
|
105
|
-
- Header row: `background: var(--table-header-bg); font-weight: 600`.
|
|
106
|
-
- Selected row: `background: var(--selection-highlight-bg)`.
|
|
107
|
-
- Hover row: `background: var(--hover-bg)`.
|
|
108
|
-
- Sticky header: `position: sticky; top: 0; z-index: 1`.
|
|
109
|
-
|
|
110
|
-
## Edge Cases & Special Logic
|
|
111
|
-
|
|
112
|
-
- `bInForm: true` — remove outer padding, hide some toolbar elements.
|
|
113
|
-
- Empty result set — show empty state message `"No records found"`.
|
|
114
|
-
- `compositeKeys` — used for unique row key generation when no single ID field exists.
|
|
115
|
-
- Column visibility changes are local state only — not persisted by default.
|
|
116
|
-
- Large datasets — pagination is mandatory; do not load all rows at once.
|
|
117
|
-
|
|
118
|
-
## Dependencies
|
|
119
|
-
|
|
120
|
-
- `useInit`, `filterData`, `buildFieldsForTable`, `getConfigFields`, `initializeColumns` from `./utils`
|
|
121
|
-
- `PCore.getDataApiUtils().getDataAsync()` — data fetching
|
|
122
|
-
- MUI: `<Table>`, `<TableHead>`, `<TableBody>`, `<TableRow>`, `<TableCell>`, `<TableSortLabel>`, `<TablePagination>`, `<Checkbox>`, `<Radio>`, `<Dialog>`, `<TextField>`, `<Menu>`, `<MenuItem>`, `<Snackbar>`
|
|
123
|
-
|
|
124
|
-
## Design System Mapping
|
|
125
|
-
|
|
126
|
-
**UI control type:** Full-featured data table with sorting, pagination, search, selection, and filtering.
|
|
127
|
-
|
|
128
|
-
Listed design systems are examples only.
|
|
129
|
-
|
|
130
|
-
| Design System | Table | Pagination | Dialog |
|
|
131
|
-
| ------------------ | -------------------------- | -------------------------- | ------------------ |
|
|
132
|
-
| Default (CSS only) | `<table>/<thead>/<tbody>` | Custom pagination controls | `<dialog>` element |
|
|
133
|
-
| MUI | `<Table>` + sub-components | `<TablePagination>` | `<Dialog>` |
|
|
134
|
-
| Ant Design | `<Table>` | Built-in pagination prop | `<Modal>` |
|
|
135
|
-
| Chakra UI | `<Table>` | Custom or `react-table` | `<Modal>` |
|
|
136
|
-
| Shadcn/ui | `<Table>` + TanStack Table | Custom pagination | `<Dialog>` |
|
|
137
|
-
|
|
138
|
-
When implementing in a specific design system:
|
|
139
|
-
|
|
140
|
-
- `bInForm` prop affects layout — tighten spacing and remove outer chrome when `true`
|
|
141
|
-
- Sorting, pagination, and search all trigger data re-fetches — do not filter client-side for server-paged data
|
|
142
|
-
- Selection mode (`single`/`multi`) requires different controls and callbacks
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
# Skill: NarrowWide
|
|
2
|
-
|
|
3
|
-
Asymmetric two-column layout with a narrow left column (~33%) and a wide right column (~67%). Includes four sub-variants for different contexts.
|
|
4
|
-
|
|
5
|
-
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Component Purpose
|
|
10
|
-
|
|
11
|
-
Renders two children side by side with the left column narrower than the right. Used for case layouts where a sidebar panel sits beside a main content area. Four sub-variants:
|
|
12
|
-
|
|
13
|
-
- **`NarrowWide`** — core CSS-based layout, accepts either `a`/`b` slot props or React `children[0]`/`children[1]`
|
|
14
|
-
- **`NarrowWidePage`** — wrapper that passes React children as `a` and `b` slot props to `NarrowWide`
|
|
15
|
-
- **`NarrowWideForm`** — simplified wrapper using only `children` (no `a`/`b` slots, no title/icon)
|
|
16
|
-
- **`NarrowWideDetails`** — details read-only variant; sets children to DISPLAY_ONLY mode and supports highlighted data
|
|
17
|
-
|
|
18
|
-
## Pega Metadata
|
|
19
|
-
|
|
20
|
-
| Variant | Registration Key |
|
|
21
|
-
| ----------------- | ------------------- |
|
|
22
|
-
| NarrowWide | `NarrowWide` |
|
|
23
|
-
| NarrowWidePage | `NarrowWidePage` |
|
|
24
|
-
| NarrowWideForm | `NarrowWideForm` |
|
|
25
|
-
| NarrowWideDetails | `NarrowWideDetails` |
|
|
26
|
-
|
|
27
|
-
All extend `PConnProps`.
|
|
28
|
-
|
|
29
|
-
## Props
|
|
30
|
-
|
|
31
|
-
### NarrowWide
|
|
32
|
-
|
|
33
|
-
| Prop | Type | Required | Description |
|
|
34
|
-
| ---------- | ------------- | -------- | ---------------------------------------------------------- |
|
|
35
|
-
| `children` | `ReactNode[]` | No | Two children rendered in narrow/wide slots |
|
|
36
|
-
| `a` | `any` | No | Narrow (left) column content |
|
|
37
|
-
| `b` | `any` | No | Wide (right) column content |
|
|
38
|
-
| `title` | `string` | No | Optional title (not rendered in reference implementation) |
|
|
39
|
-
| `cols` | `string` | No | Column template (not rendered in reference implementation) |
|
|
40
|
-
| `icon` | `string` | No | Optional icon (not rendered in reference implementation) |
|
|
41
|
-
|
|
42
|
-
### NarrowWidePage
|
|
43
|
-
|
|
44
|
-
| Prop | Type | Required | Description |
|
|
45
|
-
| ------------- | ------------- | -------- | ----------------------------------------------------- |
|
|
46
|
-
| `children` | `ReactNode[]` | Yes | Two children — `[0]` → narrow slot, `[1]` → wide slot |
|
|
47
|
-
| `title` | `string` | Yes | Page title (passed to NarrowWide) |
|
|
48
|
-
| `templateCol` | `string` | No | Column ratio (default `'1fr 1fr'`) |
|
|
49
|
-
| `icon` | `string` | No | Icon name (strips `'pi pi-'` prefix) |
|
|
50
|
-
|
|
51
|
-
### NarrowWideForm
|
|
52
|
-
|
|
53
|
-
| Prop | Type | Required | Description |
|
|
54
|
-
| ---------- | ------------- | -------- | ----------------------------------------------------- |
|
|
55
|
-
| `children` | `ReactNode[]` | Yes | Two children — `[0]` → narrow slot, `[1]` → wide slot |
|
|
56
|
-
|
|
57
|
-
### NarrowWideDetails
|
|
58
|
-
|
|
59
|
-
| Prop | Type | Required | Description |
|
|
60
|
-
| --------------------- | ---------- | -------- | ------------------------------------------------------------------------- |
|
|
61
|
-
| `label` | `string` | Yes | Section label for FieldGroup |
|
|
62
|
-
| `showLabel` | `boolean` | No | Whether to show the label. Default `true` |
|
|
63
|
-
| `showHighlightedData` | `boolean` | No | Whether to render highlighted data fields above children. Default `false` |
|
|
64
|
-
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
65
|
-
|
|
66
|
-
## Behavioral Contract
|
|
67
|
-
|
|
68
|
-
### NarrowWide
|
|
69
|
-
|
|
70
|
-
1. If `children` is provided and has exactly 2 items, render `children[0]` in `.psdk-narrow-column-column` and `children[1]` in `.psdk-wide-column-column` (both wrapped in `.psdk-narrow-wide-column`).
|
|
71
|
-
2. If `a` and `b` are provided (and children is empty/not 2 items), render `a` in the narrow slot and `b` in the wide slot.
|
|
72
|
-
3. The two render paths are independent — priority is `children` if length === 2, otherwise `a`/`b`.
|
|
73
|
-
|
|
74
|
-
### NarrowWidePage
|
|
75
|
-
|
|
76
|
-
1. Extract `childrenToRender = children as ReactElement[]`.
|
|
77
|
-
2. Retrieve `NarrowWide` from the component registry.
|
|
78
|
-
3. Render `<NarrowWide a={childrenToRender[0]} b={childrenToRender[1]} title={title} cols={templateCol} icon={icon?.replace('pi pi-', '')} />`.
|
|
79
|
-
|
|
80
|
-
### NarrowWideForm
|
|
81
|
-
|
|
82
|
-
1. Render exactly as `NarrowWide` with `children` path — checks `children.length === 2`, renders narrow/wide slots.
|
|
83
|
-
2. Does not support `a`/`b` props.
|
|
84
|
-
|
|
85
|
-
### NarrowWideDetails
|
|
86
|
-
|
|
87
|
-
1. Call `getPConnect().getInheritedProps()` and merge with `{ label, showLabel }` for `propsToUse`.
|
|
88
|
-
2. Set `getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY')` and `setInheritedProp('readOnly', true)`.
|
|
89
|
-
3. Map `getPConnect().getChildren()` → `createElement(PConnectComponent, { ...configObject, key: index })`.
|
|
90
|
-
4. If `showHighlightedData` is true, read `getRawMetadata().config.highlightedData`, set each field's `displayMode = 'STACKED_LARGE_VAL'`, mark `pyStatusWork` fields as `type='TextInput', displayAsStatus=true`, and create components via `getPConnect().createComponent(field, '', 0, {})`.
|
|
91
|
-
5. Wrap everything in `<FieldGroup name={theName}>` where `theName = propsToUse.showLabel && propsToUse.label ? propsToUse.label : ''`.
|
|
92
|
-
6. Layout: highlighted data in `Grid size={{ xs: COLUMN_WIDTHS[i] }}` where `COLUMN_WIDTHS = [4, 8]`, then children in `Grid size={{ xs: 12 }}` rows.
|
|
93
|
-
|
|
94
|
-
## Visual Specifications
|
|
95
|
-
|
|
96
|
-
Derived from `NarrowWide.css`:
|
|
97
|
-
|
|
98
|
-
### Container
|
|
99
|
-
|
|
100
|
-
| CSS Class | Property | Value |
|
|
101
|
-
| ---------------------------- | -------- | ----------------------------- |
|
|
102
|
-
| `.psdk-narrow-wide-column` | Display | flex or grid (two-column row) |
|
|
103
|
-
| `.psdk-narrow-column-column` | Width | ~33% (1 of 3 parts) |
|
|
104
|
-
| `.psdk-wide-column-column` | Width | ~67% (2 of 3 parts) |
|
|
105
|
-
|
|
106
|
-
**CSS-only implementation notes:**
|
|
107
|
-
|
|
108
|
-
- `.psdk-narrow-wide-column`: `display: grid; grid-template-columns: 1fr 2fr; gap: 1rem`.
|
|
109
|
-
- `.psdk-narrow-column-column`: takes the first (narrower) grid column.
|
|
110
|
-
- `.psdk-wide-column-column`: takes the second (wider) grid column.
|
|
111
|
-
- On mobile: `grid-template-columns: 1fr` (stacks vertically).
|
|
112
|
-
|
|
113
|
-
## Edge Cases & Special Logic
|
|
114
|
-
|
|
115
|
-
- `NarrowWide` supports both `children` and `a`/`b` slot patterns — check `children` length first.
|
|
116
|
-
- `NarrowWideDetails` highlighted data grid uses `[4, 8]` column widths (narrow left, wide right for STACKED_LARGE_VAL fields).
|
|
117
|
-
- `NarrowWideDetails` reads `theName` from `propsToUse` (which merges inherited props) — the `label` prop alone may be overridden by inherited props.
|
|
118
|
-
- Icon cleanup in `NarrowWidePage`: strip `'pi pi-'` prefix from the icon string before passing to `NarrowWide`.
|
|
119
|
-
|
|
120
|
-
## Dependencies
|
|
121
|
-
|
|
122
|
-
- `NarrowWidePage`: `getComponentFromRegistry` from `@pega/sdk-react`
|
|
123
|
-
- `NarrowWideDetails`: `getComponentFromRegistry('FieldGroup')`, `PConnectComponent` from `@pega/sdk-react`
|
|
124
|
-
|
|
125
|
-
## Design System Mapping
|
|
126
|
-
|
|
127
|
-
**UI control type:** Asymmetric two-column layout (sidebar + main content).
|
|
128
|
-
|
|
129
|
-
Listed design systems are examples only.
|
|
130
|
-
|
|
131
|
-
| Design System | Recommended Component |
|
|
132
|
-
| ------------------ | -------------------------------------------------------------------------------- |
|
|
133
|
-
| Default (CSS only) | CSS Grid `grid-template-columns: 1fr 2fr; gap: 1rem` |
|
|
134
|
-
| MUI | `<Grid container><Grid size={{ xs: 12, md: 4 }}><Grid size={{ xs: 12, md: 8 }}>` |
|
|
135
|
-
| Ant Design | `<Row gutter={16}><Col xs={24} md={8}><Col xs={24} md={16}>` |
|
|
136
|
-
| Chakra UI | `<Grid templateColumns={{ base: '1fr', md: '1fr 2fr' }} gap={4}>` |
|
|
137
|
-
| Shadcn/ui | Tailwind `grid grid-cols-1 md:grid-cols-[1fr_2fr] gap-4` |
|
|
138
|
-
|
|
139
|
-
When implementing in a specific design system:
|
|
140
|
-
|
|
141
|
-
- Narrow column ≈ 33% width (1fr of 3fr total)
|
|
142
|
-
- Wide column ≈ 67% width (2fr of 3fr total)
|
|
143
|
-
- `NarrowWideDetails` always forces DISPLAY_ONLY + readOnly on children
|