@salesforce/templates 66.5.4 → 66.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/templates/project/.forceignore +3 -1
- package/lib/templates/project/reactb2e/AGENT.md +12 -2
- package/lib/templates/project/reactb2e/CHANGELOG.md +401 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/.forceignore +15 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/codegen.yml +1 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/eslint.config.js +44 -27
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/index.html +0 -1
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/package.json +7 -11
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/accountSearchService.ts +46 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/distinctAccountIndustries.graphql +19 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/distinctAccountTypes.graphql +19 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/getAccountDetail.graphql +121 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/searchAccounts.graphql +51 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/pages/AccountObjectDetailPage.tsx +357 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/pages/AccountSearch.tsx +275 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/pages/Home.tsx +34 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/api/objectSearchService.ts +84 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ActiveFilters.tsx +89 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/FilterPanel.tsx +127 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ObjectBreadcrumb.tsx +66 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/PaginationControls.tsx +151 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SearchBar.tsx +41 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SortControl.tsx +143 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/BooleanFilter.tsx +94 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateFilter.tsx +165 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateRangeFilter.tsx +78 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/MultiSelectFilter.tsx +106 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/NumericRangeFilter.tsx +102 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SearchFilter.tsx +40 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SelectFilter.tsx +97 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/TextFilter.tsx +77 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useAsyncData.ts +53 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useCachedAsyncData.ts +183 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useObjectSearchParams.ts +225 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/debounce.ts +22 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/fieldUtils.ts +29 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/filterUtils.ts +372 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/sortUtils.ts +38 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/api/graphql-operations-types.ts +11260 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/app.tsx +4 -1
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/appLayout.tsx +1 -1
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/AgentforceConversationClient.tsx +33 -5
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/alerts/status-alert.tsx +1 -1
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/badge.tsx +48 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/breadcrumb.tsx +109 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/calendar.tsx +232 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/checkbox.tsx +32 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/collapsible.tsx +33 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/datePicker.tsx +127 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/popover.tsx +89 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/components/ui/sonner.tsx +20 -0
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/index.ts +3 -117
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/pages/Home.tsx +10 -11
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/pages/TestAccPage.tsx +1 -1
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/routes.tsx +8 -20
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/types/conversation.ts +14 -4
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/tsconfig.json +7 -1
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/vite.config.ts +17 -13
- package/lib/templates/project/reactb2e/_r_/skills/{webapp-react-data-visualization → building-data-visualization}/SKILL.md +3 -3
- package/lib/templates/project/reactb2e/_r_/skills/building-data-visualization/implementation/bar-line-chart.md +316 -0
- package/lib/templates/project/{reactb2x/_r_/skills/webapp-react-data-visualization → reactb2e/_r_/skills/building-data-visualization}/implementation/donut-chart.md +1 -1
- package/lib/templates/project/{reactb2x/_r_/skills/webapp-react → reactb2e/_r_/skills/building-react-components}/SKILL.md +21 -5
- package/lib/templates/project/reactb2e/_r_/skills/{webapp-csp-trusted-sites → configuring-csp-trusted-sites}/SKILL.md +1 -1
- package/lib/templates/project/{reactb2x/_r_/webapp-webapplication.md → reactb2e/_r_/skills/configuring-webapp-metadata/SKILL.md} +2 -3
- package/lib/templates/project/reactb2e/_r_/{webapp.md → skills/creating-webapp/SKILL.md} +46 -4
- package/lib/templates/project/reactb2e/_r_/skills/deploying-to-salesforce/SKILL.md +226 -0
- package/lib/templates/project/reactb2e/_r_/skills/{feature-react-file-upload-file-upload → implementing-file-upload}/SKILL.md +1 -1
- package/lib/templates/project/{reactb2x/_r_/skills/webapp-features → reactb2e/_r_/skills/installing-webapp-features}/SKILL.md +3 -3
- package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/SKILL.md +186 -0
- package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/constraints.md +134 -0
- package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/examples.md +132 -0
- package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/style-tokens.md +101 -0
- package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/troubleshooting.md +57 -0
- package/lib/templates/project/reactb2e/_r_/skills/using-salesforce-data/SKILL.md +363 -0
- package/lib/templates/project/reactb2e/_r_/skills/using-salesforce-data/graphql-search.sh +139 -0
- package/lib/templates/project/reactb2e/_r_/webapp-data.md +353 -0
- package/lib/templates/project/reactb2e/_r_/webapp-ui.md +16 -0
- package/lib/templates/project/reactb2e/eslint.config.js +7 -0
- package/lib/templates/project/reactb2e/package-lock.json +9995 -0
- package/lib/templates/project/reactb2e/package.json +12 -11
- package/lib/templates/project/reactb2e/scripts/setup-cli.mjs +61 -31
- package/lib/templates/project/reactb2e/scripts/sf-project-setup.mjs +66 -0
- package/lib/templates/project/reactb2x/AGENT.md +12 -2
- package/lib/templates/project/reactb2x/CHANGELOG.md +401 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/.forceignore +15 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/codegen.yml +1 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/eslint.config.js +44 -27
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/index.html +0 -1
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/package.json +8 -11
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/accountSearchService.ts +46 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/distinctAccountIndustries.graphql +19 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/distinctAccountTypes.graphql +19 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/getAccountDetail.graphql +121 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/api/query/searchAccounts.graphql +51 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/pages/AccountObjectDetailPage.tsx +357 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/pages/AccountSearch.tsx +275 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__/pages/Home.tsx +34 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/api/objectSearchService.ts +84 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ActiveFilters.tsx +89 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/FilterPanel.tsx +127 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ObjectBreadcrumb.tsx +66 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/PaginationControls.tsx +151 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SearchBar.tsx +41 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SortControl.tsx +143 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/BooleanFilter.tsx +94 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateFilter.tsx +165 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateRangeFilter.tsx +78 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/MultiSelectFilter.tsx +106 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/NumericRangeFilter.tsx +102 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SearchFilter.tsx +40 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SelectFilter.tsx +97 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/TextFilter.tsx +77 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useAsyncData.ts +53 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useCachedAsyncData.ts +183 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useObjectSearchParams.ts +225 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/debounce.ts +22 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/fieldUtils.ts +29 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/filterUtils.ts +372 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/sortUtils.ts +38 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/api/userProfileApi.ts +13 -13
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/layouts/privateRouteLayout.tsx +10 -2
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ChangePassword.tsx +2 -2
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ForgotPassword.tsx +2 -2
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Login.tsx +2 -2
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Profile.tsx +26 -4
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Register.tsx +2 -2
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ResetPassword.tsx +2 -2
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/sessionTimeout/SessionTimeoutValidator.tsx +8 -16
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/sessionTimeout/sessionTimeService.ts +30 -42
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/api/graphql-operations-types.ts +11260 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/app.tsx +3 -1
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/alerts/status-alert.tsx +1 -1
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/badge.tsx +48 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/breadcrumb.tsx +109 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/calendar.tsx +232 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/checkbox.tsx +32 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/collapsible.tsx +33 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/datePicker.tsx +127 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/popover.tsx +89 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/components/ui/sonner.tsx +20 -0
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/pages/Home.tsx +10 -11
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/routes.tsx +9 -21
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/tsconfig.json +7 -1
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/vite.config.ts +17 -13
- package/lib/templates/project/reactb2x/_p_/_m_/networks/appreacttemplateb2x.network +1 -1
- package/lib/templates/project/reactb2x/_r_/skills/{webapp-react-data-visualization → building-data-visualization}/SKILL.md +3 -3
- package/lib/templates/project/reactb2x/_r_/skills/building-data-visualization/implementation/bar-line-chart.md +316 -0
- package/lib/templates/project/{reactb2e/_r_/skills/webapp-react-data-visualization → reactb2x/_r_/skills/building-data-visualization}/implementation/donut-chart.md +1 -1
- package/lib/templates/project/{reactb2e/_r_/skills/webapp-react → reactb2x/_r_/skills/building-react-components}/SKILL.md +21 -5
- package/lib/templates/project/reactb2x/_r_/skills/{webapp-csp-trusted-sites → configuring-csp-trusted-sites}/SKILL.md +1 -1
- package/lib/templates/project/{reactb2e/_r_/webapp-webapplication.md → reactb2x/_r_/skills/configuring-webapp-metadata/SKILL.md} +2 -3
- package/lib/templates/project/reactb2x/_r_/{webapp.md → skills/creating-webapp/SKILL.md} +46 -4
- package/lib/templates/project/reactb2x/_r_/skills/deploying-to-salesforce/SKILL.md +226 -0
- package/lib/templates/project/reactb2x/_r_/skills/{feature-react-file-upload-file-upload → implementing-file-upload}/SKILL.md +1 -1
- package/lib/templates/project/{reactb2e/_r_/skills/webapp-features → reactb2x/_r_/skills/installing-webapp-features}/SKILL.md +3 -3
- package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/SKILL.md +186 -0
- package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/constraints.md +134 -0
- package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/examples.md +132 -0
- package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/style-tokens.md +101 -0
- package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/troubleshooting.md +57 -0
- package/lib/templates/project/reactb2x/_r_/skills/using-salesforce-data/SKILL.md +363 -0
- package/lib/templates/project/reactb2x/_r_/skills/using-salesforce-data/graphql-search.sh +139 -0
- package/lib/templates/project/reactb2x/_r_/webapp-data.md +353 -0
- package/lib/templates/project/reactb2x/_r_/webapp-ui.md +16 -0
- package/lib/templates/project/reactb2x/eslint.config.js +7 -0
- package/lib/templates/project/reactb2x/package-lock.json +9995 -0
- package/lib/templates/project/reactb2x/package.json +12 -11
- package/lib/templates/project/reactb2x/scripts/setup-cli.mjs +61 -31
- package/lib/templates/project/reactb2x/scripts/sf-project-setup.mjs +66 -0
- package/lib/templates/webapplication/reactbasic/.forceignore +15 -0
- package/lib/templates/webapplication/reactbasic/codegen.yml +1 -0
- package/lib/templates/webapplication/reactbasic/eslint.config.js +44 -27
- package/lib/templates/webapplication/reactbasic/index.html +0 -1
- package/lib/templates/webapplication/reactbasic/package.json +6 -3
- package/lib/templates/webapplication/reactbasic/src/app.tsx +4 -1
- package/lib/templates/webapplication/reactbasic/src/components/alerts/status-alert.tsx +1 -1
- package/lib/templates/webapplication/reactbasic/src/components/ui/badge.tsx +48 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/breadcrumb.tsx +109 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/calendar.tsx +232 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/checkbox.tsx +32 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/collapsible.tsx +33 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/datePicker.tsx +127 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/popover.tsx +89 -0
- package/lib/templates/webapplication/reactbasic/src/components/ui/sonner.tsx +20 -0
- package/lib/templates/webapplication/reactbasic/tsconfig.json +7 -1
- package/lib/templates/webapplication/reactbasic/vite.config.ts +17 -13
- package/lib/utils/template-placeholders.js +7 -0
- package/lib/utils/template-placeholders.js.map +1 -1
- package/lib/utils/webappTemplateUtils.d.ts +3 -1
- package/lib/utils/webappTemplateUtils.js +4 -1
- package/lib/utils/webappTemplateUtils.js.map +1 -1
- package/package.json +6 -6
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailFields.tsx +0 -55
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailForm.tsx +0 -146
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailHeader.tsx +0 -34
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailLayoutSections.tsx +0 -80
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/Section.tsx +0 -108
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/SectionRow.tsx +0 -20
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/UiApiDetailForm.tsx +0 -140
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FieldValueDisplay.tsx +0 -73
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedAddress.tsx +0 -29
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedEmail.tsx +0 -17
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedPhone.tsx +0 -24
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedText.tsx +0 -11
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedUrl.tsx +0 -29
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FilterField.tsx +0 -54
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FilterInput.tsx +0 -55
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FilterSelect.tsx +0 -72
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FiltersPanel.tsx +0 -380
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/forms/filters-form.tsx +0 -114
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/forms/submit-button.tsx +0 -47
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/GlobalSearchInput.tsx +0 -114
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/ResultCardFields.tsx +0 -71
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchHeader.tsx +0 -31
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchPagination.tsx +0 -144
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchResultCard.tsx +0 -136
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchResultsPanel.tsx +0 -197
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/shared/LoadingFallback.tsx +0 -61
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectDetailService.ts +0 -102
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoGraphQLService.ts +0 -137
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoService.ts +0 -95
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/recordListGraphQLService.ts +0 -364
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/constants.ts +0 -39
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/filters/FilterInput.tsx +0 -55
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/filters/FilterSelect.tsx +0 -72
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/form.tsx +0 -209
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useObjectInfoBatch.ts +0 -65
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useObjectSearchData.ts +0 -174
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useRecordDetailLayout.ts +0 -137
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useRecordListGraphQL.ts +0 -135
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/pages/DetailPage.tsx +0 -109
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/pages/GlobalSearch.tsx +0 -229
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/filters/filters.ts +0 -121
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/filters/picklist.ts +0 -6
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/objectInfo/objectInfo.ts +0 -49
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/recordDetail/recordDetail.ts +0 -61
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/schema.d.ts +0 -200
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/search/searchResults.ts +0 -229
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/apiUtils.ts +0 -59
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/cacheUtils.ts +0 -76
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/debounce.ts +0 -89
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/fieldUtils.ts +0 -354
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/fieldValueExtractor.ts +0 -67
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/filterUtils.ts +0 -32
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/formDataTransformUtils.ts +0 -260
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/formUtils.ts +0 -142
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLNodeFieldUtils.ts +0 -186
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLObjectInfoAdapter.ts +0 -77
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLRecordAdapter.ts +0 -90
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/layoutTransformUtils.ts +0 -236
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/linkUtils.ts +0 -14
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/paginationUtils.ts +0 -49
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/recordUtils.ts +0 -159
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/sanitizationUtils.ts +0 -49
- package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/tsconfig.tsbuildinfo +0 -1
- package/lib/templates/project/reactb2e/_r_/features/feature-graphql-graphql-data-access-rule.md +0 -470
- package/lib/templates/project/reactb2e/_r_/features/feature-react-agentforce-conversation-client-embedded-agent-rule.md +0 -18
- package/lib/templates/project/reactb2e/_r_/features/feature-react-chart-analytics-charts-rule.md +0 -27
- package/lib/templates/project/reactb2e/_r_/skills/_k_/SKILL.md +0 -148
- package/lib/templates/project/reactb2e/_r_/skills/_k_/docs/embed-examples.md +0 -192
- package/lib/templates/project/reactb2e/_r_/skills/_k_/docs/troubleshooting.md +0 -51
- package/lib/templates/project/reactb2e/_r_/skills/feature-graphql-graphql-data-access/SKILL.md +0 -155
- package/lib/templates/project/reactb2e/_r_/skills/feature-graphql-graphql-data-access/docs/explore-schema.md +0 -256
- package/lib/templates/project/reactb2e/_r_/skills/feature-graphql-graphql-data-access/docs/generate-mutation-query.md +0 -228
- package/lib/templates/project/reactb2e/_r_/skills/feature-graphql-graphql-data-access/docs/generate-read-query.md +0 -202
- package/lib/templates/project/reactb2e/_r_/skills/feature-graphql-graphql-data-access/docs/shared-schema.graphqls +0 -1150
- package/lib/templates/project/reactb2e/_r_/skills/feature-micro-frontend-micro-frontend/SKILL.md +0 -137
- package/lib/templates/project/reactb2e/_r_/skills/feature-react-chart-analytics-charts/SKILL.md +0 -41
- package/lib/templates/project/reactb2e/_r_/skills/feature-react-chart-analytics-charts/docs/schema-mapping.md +0 -4
- package/lib/templates/project/reactb2e/_r_/skills/webapp-react-interactive-map/SKILL.md +0 -92
- package/lib/templates/project/reactb2e/_r_/skills/webapp-react-interactive-map/implementation/geocoding.md +0 -245
- package/lib/templates/project/reactb2e/_r_/skills/webapp-react-interactive-map/implementation/leaflet-map.md +0 -279
- package/lib/templates/project/reactb2e/_r_/skills/webapp-react-weather-widget/SKILL.md +0 -65
- package/lib/templates/project/reactb2e/_r_/skills/webapp-react-weather-widget/implementation/weather-hook.md +0 -258
- package/lib/templates/project/reactb2e/_r_/skills/webapp-react-weather-widget/implementation/weather-ui.md +0 -216
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/SKILL.md +0 -271
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/charts.csv +0 -26
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/colors.csv +0 -97
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/icons.csv +0 -101
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/landing.csv +0 -31
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/products.csv +0 -97
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/react-performance.csv +0 -45
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/stacks/html-tailwind.csv +0 -56
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/stacks/react.csv +0 -54
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/stacks/shadcn.csv +0 -61
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/styles.csv +0 -68
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/typography.csv +0 -58
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/ui-reasoning.csv +0 -101
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/ux-guidelines.csv +0 -100
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/web-interface.csv +0 -31
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/scripts/core.js +0 -255
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/scripts/design_system.js +0 -861
- package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/scripts/search.js +0 -98
- package/lib/templates/project/reactb2e/_r_/skills/webapp-unsplash-images/SKILL.md +0 -71
- package/lib/templates/project/reactb2e/_r_/skills/webapp-unsplash-images/implementation/usage.md +0 -159
- package/lib/templates/project/reactb2e/_r_/webapp-cli-commands.md +0 -88
- package/lib/templates/project/reactb2e/_r_/webapp-react-code-quality.md +0 -136
- package/lib/templates/project/reactb2e/_r_/webapp-react-typescript.md +0 -205
- package/lib/templates/project/reactb2e/_r_/webapp-react.md +0 -202
- package/lib/templates/project/reactb2e/_r_/webapp-skills-first.md +0 -26
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailFields.tsx +0 -55
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailForm.tsx +0 -146
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailHeader.tsx +0 -34
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/DetailLayoutSections.tsx +0 -80
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/Section.tsx +0 -108
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/SectionRow.tsx +0 -20
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/UiApiDetailForm.tsx +0 -140
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FieldValueDisplay.tsx +0 -73
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedAddress.tsx +0 -29
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedEmail.tsx +0 -17
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedPhone.tsx +0 -24
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedText.tsx +0 -11
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_/FormattedUrl.tsx +0 -29
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FilterField.tsx +0 -54
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FilterInput.tsx +0 -55
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FilterSelect.tsx +0 -72
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/filters/FiltersPanel.tsx +0 -380
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/forms/filters-form.tsx +0 -114
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/forms/submit-button.tsx +0 -47
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/GlobalSearchInput.tsx +0 -114
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/ResultCardFields.tsx +0 -71
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchHeader.tsx +0 -31
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchPagination.tsx +0 -144
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchResultCard.tsx +0 -136
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/search/SearchResultsPanel.tsx +0 -197
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/shared/LoadingFallback.tsx +0 -61
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectDetailService.ts +0 -102
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoGraphQLService.ts +0 -137
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoService.ts +0 -95
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/recordListGraphQLService.ts +0 -364
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/constants.ts +0 -39
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/filters/FilterInput.tsx +0 -55
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/filters/FilterSelect.tsx +0 -72
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/form.tsx +0 -209
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useObjectInfoBatch.ts +0 -65
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useObjectSearchData.ts +0 -174
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useRecordDetailLayout.ts +0 -137
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useRecordListGraphQL.ts +0 -135
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/pages/DetailPage.tsx +0 -109
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/pages/GlobalSearch.tsx +0 -229
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/filters/filters.ts +0 -121
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/filters/picklist.ts +0 -6
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/objectInfo/objectInfo.ts +0 -49
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/recordDetail/recordDetail.ts +0 -61
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/schema.d.ts +0 -200
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/search/searchResults.ts +0 -229
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/apiUtils.ts +0 -59
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/cacheUtils.ts +0 -76
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/debounce.ts +0 -89
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/fieldUtils.ts +0 -354
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/fieldValueExtractor.ts +0 -67
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/filterUtils.ts +0 -32
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/formDataTransformUtils.ts +0 -260
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/formUtils.ts +0 -142
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLNodeFieldUtils.ts +0 -186
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLObjectInfoAdapter.ts +0 -77
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLRecordAdapter.ts +0 -90
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/layoutTransformUtils.ts +0 -236
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/linkUtils.ts +0 -14
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/paginationUtils.ts +0 -49
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/recordUtils.ts +0 -159
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/sanitizationUtils.ts +0 -49
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/index.ts +0 -120
- package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/tsconfig.tsbuildinfo +0 -1
- package/lib/templates/project/reactb2x/_r_/features/feature-graphql-graphql-data-access-rule.md +0 -470
- package/lib/templates/project/reactb2x/_r_/features/feature-react-agentforce-conversation-client-embedded-agent-rule.md +0 -18
- package/lib/templates/project/reactb2x/_r_/features/feature-react-chart-analytics-charts-rule.md +0 -27
- package/lib/templates/project/reactb2x/_r_/skills/_k_/SKILL.md +0 -148
- package/lib/templates/project/reactb2x/_r_/skills/_k_/docs/embed-examples.md +0 -192
- package/lib/templates/project/reactb2x/_r_/skills/_k_/docs/troubleshooting.md +0 -51
- package/lib/templates/project/reactb2x/_r_/skills/feature-graphql-graphql-data-access/SKILL.md +0 -155
- package/lib/templates/project/reactb2x/_r_/skills/feature-graphql-graphql-data-access/docs/explore-schema.md +0 -256
- package/lib/templates/project/reactb2x/_r_/skills/feature-graphql-graphql-data-access/docs/generate-mutation-query.md +0 -228
- package/lib/templates/project/reactb2x/_r_/skills/feature-graphql-graphql-data-access/docs/generate-read-query.md +0 -202
- package/lib/templates/project/reactb2x/_r_/skills/feature-graphql-graphql-data-access/docs/shared-schema.graphqls +0 -1150
- package/lib/templates/project/reactb2x/_r_/skills/feature-micro-frontend-micro-frontend/SKILL.md +0 -137
- package/lib/templates/project/reactb2x/_r_/skills/feature-react-chart-analytics-charts/SKILL.md +0 -41
- package/lib/templates/project/reactb2x/_r_/skills/feature-react-chart-analytics-charts/docs/schema-mapping.md +0 -4
- package/lib/templates/project/reactb2x/_r_/skills/webapp-react-interactive-map/SKILL.md +0 -92
- package/lib/templates/project/reactb2x/_r_/skills/webapp-react-interactive-map/implementation/geocoding.md +0 -245
- package/lib/templates/project/reactb2x/_r_/skills/webapp-react-interactive-map/implementation/leaflet-map.md +0 -279
- package/lib/templates/project/reactb2x/_r_/skills/webapp-react-weather-widget/SKILL.md +0 -65
- package/lib/templates/project/reactb2x/_r_/skills/webapp-react-weather-widget/implementation/weather-hook.md +0 -258
- package/lib/templates/project/reactb2x/_r_/skills/webapp-react-weather-widget/implementation/weather-ui.md +0 -216
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/SKILL.md +0 -271
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/charts.csv +0 -26
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/colors.csv +0 -97
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/icons.csv +0 -101
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/landing.csv +0 -31
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/products.csv +0 -97
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/react-performance.csv +0 -45
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/stacks/html-tailwind.csv +0 -56
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/stacks/react.csv +0 -54
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/stacks/shadcn.csv +0 -61
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/styles.csv +0 -68
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/typography.csv +0 -58
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/ui-reasoning.csv +0 -101
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/ux-guidelines.csv +0 -100
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/web-interface.csv +0 -31
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/scripts/core.js +0 -255
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/scripts/design_system.js +0 -861
- package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/scripts/search.js +0 -98
- package/lib/templates/project/reactb2x/_r_/skills/webapp-unsplash-images/SKILL.md +0 -71
- package/lib/templates/project/reactb2x/_r_/skills/webapp-unsplash-images/implementation/usage.md +0 -159
- package/lib/templates/project/reactb2x/_r_/webapp-cli-commands.md +0 -88
- package/lib/templates/project/reactb2x/_r_/webapp-react-code-quality.md +0 -136
- package/lib/templates/project/reactb2x/_r_/webapp-react-typescript.md +0 -205
- package/lib/templates/project/reactb2x/_r_/webapp-react.md +0 -202
- package/lib/templates/project/reactb2x/_r_/webapp-skills-first.md +0 -26
- /package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/{src/components.json → components.json} +0 -0
- /package/lib/templates/project/reactb2e/_r_/skills/{webapp-react-data-visualization → building-data-visualization}/implementation/dashboard-layout.md +0 -0
- /package/lib/templates/project/reactb2e/_r_/skills/{webapp-react-data-visualization → building-data-visualization}/implementation/stat-card.md +0 -0
- /package/lib/templates/project/reactb2e/_r_/skills/{webapp-react → building-react-components}/implementation/component.md +0 -0
- /package/lib/templates/project/reactb2e/_r_/skills/{webapp-react → building-react-components}/implementation/header-footer.md +0 -0
- /package/lib/templates/project/reactb2e/_r_/skills/{webapp-react → building-react-components}/implementation/page.md +0 -0
- /package/lib/templates/project/reactb2e/_r_/skills/{webapp-csp-trusted-sites → configuring-csp-trusted-sites}/implementation/metadata-format.md +0 -0
- /package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/{src/components.json → components.json} +0 -0
- /package/lib/templates/project/reactb2x/_r_/skills/{webapp-react-data-visualization → building-data-visualization}/implementation/dashboard-layout.md +0 -0
- /package/lib/templates/project/reactb2x/_r_/skills/{webapp-react-data-visualization → building-data-visualization}/implementation/stat-card.md +0 -0
- /package/lib/templates/project/reactb2x/_r_/skills/{webapp-react → building-react-components}/implementation/component.md +0 -0
- /package/lib/templates/project/reactb2x/_r_/skills/{webapp-react → building-react-components}/implementation/header-footer.md +0 -0
- /package/lib/templates/project/reactb2x/_r_/skills/{webapp-react → building-react-components}/implementation/page.md +0 -0
- /package/lib/templates/project/reactb2x/_r_/skills/{webapp-csp-trusted-sites → configuring-csp-trusted-sites}/implementation/metadata-format.md +0 -0
- /package/lib/templates/webapplication/reactbasic/{src/components.json → components.json} +0 -0
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Strict TypeScript standards for type-safe React applications
|
|
3
|
-
paths:
|
|
4
|
-
- "**/webapplications/**/*"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# TypeScript Standards
|
|
8
|
-
|
|
9
|
-
## MANDATORY Configuration
|
|
10
|
-
- `strict: true` - Enable all strict type checking
|
|
11
|
-
- `noUncheckedIndexedAccess: true` - Prevent unsafe array/object access
|
|
12
|
-
- `noUnusedLocals: true` - Report unused variables
|
|
13
|
-
- `noUnusedParameters: true` - Report unused parameters
|
|
14
|
-
|
|
15
|
-
## Function Return Types (REQUIRED)
|
|
16
|
-
```typescript
|
|
17
|
-
// Always specify return types
|
|
18
|
-
function fetchUserData(id: string): Promise<User> {
|
|
19
|
-
return api.get(`/users/${id}`);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const calculateTotal = (items: Item[]): number => {
|
|
23
|
-
return items.reduce((sum, item) => sum + item.price, 0);
|
|
24
|
-
};
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Interface Definitions (REQUIRED)
|
|
28
|
-
```typescript
|
|
29
|
-
// Data structures
|
|
30
|
-
interface User {
|
|
31
|
-
id: string;
|
|
32
|
-
name: string;
|
|
33
|
-
email: string;
|
|
34
|
-
createdAt: Date;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// React component props
|
|
38
|
-
interface ButtonProps {
|
|
39
|
-
variant: 'primary' | 'secondary';
|
|
40
|
-
onClick: () => void;
|
|
41
|
-
disabled?: boolean;
|
|
42
|
-
children: React.ReactNode;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export const Button: React.FC<ButtonProps> = ({ variant, onClick, disabled, children }) => {
|
|
46
|
-
// Implementation
|
|
47
|
-
};
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
## Type Safety Rules
|
|
51
|
-
|
|
52
|
-
### Never Use `any`
|
|
53
|
-
```typescript
|
|
54
|
-
// FORBIDDEN
|
|
55
|
-
const data: any = await fetchData();
|
|
56
|
-
|
|
57
|
-
// REQUIRED: Proper typing
|
|
58
|
-
interface ApiResponse {
|
|
59
|
-
data: User[];
|
|
60
|
-
status: 'success' | 'error';
|
|
61
|
-
}
|
|
62
|
-
const response: ApiResponse = await fetchData();
|
|
63
|
-
|
|
64
|
-
// ACCEPTABLE: Unknown when type is truly unknown
|
|
65
|
-
const parseJson = (input: string): unknown => JSON.parse(input);
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Null Safety
|
|
69
|
-
```typescript
|
|
70
|
-
// Handle null/undefined explicitly
|
|
71
|
-
interface UserProfile {
|
|
72
|
-
user: User | null;
|
|
73
|
-
loading: boolean;
|
|
74
|
-
error: string | null;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
// Use optional chaining and nullish coalescing
|
|
78
|
-
const displayName = user?.name ?? 'Anonymous';
|
|
79
|
-
const avatarUrl = user?.profile?.avatar ?? '/default-avatar.png';
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## React TypeScript Patterns
|
|
83
|
-
|
|
84
|
-
### Event Handlers
|
|
85
|
-
```typescript
|
|
86
|
-
const handleSubmit = (event: React.FormEvent<HTMLFormElement>): void => {
|
|
87
|
-
event.preventDefault();
|
|
88
|
-
};
|
|
89
|
-
|
|
90
|
-
const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {
|
|
91
|
-
setInputValue(event.target.value);
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
const handleClick = (event: React.MouseEvent<HTMLButtonElement>): void => {
|
|
95
|
-
console.log('Button clicked');
|
|
96
|
-
};
|
|
97
|
-
```
|
|
98
|
-
|
|
99
|
-
### State and Hooks
|
|
100
|
-
```typescript
|
|
101
|
-
// Type useState properly
|
|
102
|
-
const [user, setUser] = useState<User | null>(null);
|
|
103
|
-
const [loading, setLoading] = useState<boolean>(false);
|
|
104
|
-
const [errors, setErrors] = useState<string[]>([]);
|
|
105
|
-
|
|
106
|
-
// Type custom hooks
|
|
107
|
-
interface UseApiResult<T> {
|
|
108
|
-
data: T | null;
|
|
109
|
-
loading: boolean;
|
|
110
|
-
error: string | null;
|
|
111
|
-
refetch: () => Promise<void>;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
function useApi<T>(url: string): UseApiResult<T> {
|
|
115
|
-
const [data, setData] = useState<T | null>(null);
|
|
116
|
-
const [loading, setLoading] = useState<boolean>(false);
|
|
117
|
-
const [error, setError] = useState<string | null>(null);
|
|
118
|
-
|
|
119
|
-
return { data, loading, error, refetch };
|
|
120
|
-
}
|
|
121
|
-
```
|
|
122
|
-
|
|
123
|
-
## API Types
|
|
124
|
-
|
|
125
|
-
### Salesforce Records
|
|
126
|
-
```typescript
|
|
127
|
-
interface SalesforceRecord {
|
|
128
|
-
Id: string;
|
|
129
|
-
attributes: { type: string; url: string };
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
interface Account extends SalesforceRecord {
|
|
133
|
-
Name: { value: string };
|
|
134
|
-
Industry?: { value: string | null };
|
|
135
|
-
}
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### GraphQL via DataSDK
|
|
139
|
-
|
|
140
|
-
See **webapp-react.md** for DataSDK usage patterns. Type your GraphQL responses:
|
|
141
|
-
|
|
142
|
-
```typescript
|
|
143
|
-
const response = await sdk.graphql?.<GetAccountsQuery>(QUERY, variables);
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## Error Handling Types
|
|
147
|
-
```typescript
|
|
148
|
-
interface ApiError {
|
|
149
|
-
message: string;
|
|
150
|
-
status: number;
|
|
151
|
-
code?: string;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
class CustomError extends Error {
|
|
155
|
-
constructor(message: string, public readonly status: number, public readonly code?: string) {
|
|
156
|
-
super(message);
|
|
157
|
-
this.name = 'CustomError';
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
## Anti-Patterns (FORBIDDEN)
|
|
163
|
-
|
|
164
|
-
### Type Assertions
|
|
165
|
-
```typescript
|
|
166
|
-
// FORBIDDEN: Unsafe assertions
|
|
167
|
-
const user = data as User;
|
|
168
|
-
|
|
169
|
-
// REQUIRED: Type guards
|
|
170
|
-
function isUser(obj: unknown): obj is User {
|
|
171
|
-
return typeof obj === 'object' && obj !== null && typeof (obj as User).id === 'string';
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
if (isUser(data)) {
|
|
175
|
-
console.log(data.name); // Now safely typed
|
|
176
|
-
}
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Missing Return Types
|
|
180
|
-
```typescript
|
|
181
|
-
// FORBIDDEN: No return type
|
|
182
|
-
const fetchData = async (id: string) => {
|
|
183
|
-
return await api.get(`/data/${id}`);
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
// REQUIRED: Explicit return type
|
|
187
|
-
const fetchData = async (id: string): Promise<ApiResponse> => {
|
|
188
|
-
return await api.get(`/data/${id}`);
|
|
189
|
-
};
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
## Quality Checklist
|
|
193
|
-
Before completing TypeScript code:
|
|
194
|
-
1. All functions have explicit return types
|
|
195
|
-
2. All interfaces are properly defined
|
|
196
|
-
3. No `any` types used (use `unknown` if necessary)
|
|
197
|
-
4. Null/undefined handling is explicit
|
|
198
|
-
5. React components are properly typed
|
|
199
|
-
6. API calls have proper type definitions
|
|
200
|
-
7. `tsc -b` compiles without errors
|
|
201
|
-
|
|
202
|
-
## Enforcement
|
|
203
|
-
- TypeScript errors MUST be fixed before any commit
|
|
204
|
-
- NEVER disable TypeScript strict mode
|
|
205
|
-
- Code reviews MUST check for proper typing
|
|
@@ -1,202 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: React-specific patterns and Salesforce data access for SFDX web apps
|
|
3
|
-
paths:
|
|
4
|
-
- "**/webapplications/**/*"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# React Web App (SFDX)
|
|
8
|
-
|
|
9
|
-
React-specific guidelines for data access, component library, and Salesforce integration.
|
|
10
|
-
|
|
11
|
-
For layout, navigation, and generation rules, see **webapp.md**.
|
|
12
|
-
|
|
13
|
-
## Project Structure
|
|
14
|
-
|
|
15
|
-
- Web app root: `force-app/main/default/webapplications/<appName>/`
|
|
16
|
-
- Entry: `src/app.tsx`
|
|
17
|
-
- Layout shell: `src/appLayout.tsx`
|
|
18
|
-
- Dev server: `npm run dev`
|
|
19
|
-
- Build: `npm run build`
|
|
20
|
-
|
|
21
|
-
## Routing (React Router)
|
|
22
|
-
|
|
23
|
-
Use a **single** router package for the app. When using `createBrowserRouter` and `RouterProvider` from `react-router`, all routing imports must come from **`react-router`** — not from `react-router-dom`.
|
|
24
|
-
|
|
25
|
-
- ✅ `import { createBrowserRouter, RouterProvider, Link, useNavigate, useLocation, Outlet } from 'react-router';`
|
|
26
|
-
- ❌ `import { Link } from 'react-router-dom';` when the app uses `RouterProvider` from `react-router`
|
|
27
|
-
|
|
28
|
-
Mixing packages causes "Cannot destructure property 'basename' of ... as it is null" because `Link`/hooks from `react-router-dom` read a different context than the one provided by `RouterProvider` from `react-router`.
|
|
29
|
-
|
|
30
|
-
## Component Library (MANDATORY)
|
|
31
|
-
|
|
32
|
-
Use **shadcn/ui** for UI components:
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
import { Button } from '@/components/ui/button';
|
|
36
|
-
import { Card, CardHeader, CardContent } from '@/components/ui/card';
|
|
37
|
-
import { Input } from '@/components/ui/input';
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## Icons & No Emojis (MANDATORY)
|
|
41
|
-
|
|
42
|
-
- **Icons:** Use **lucide-react** only. Do not use Heroicons, Simple Icons, or other icon libraries in the web app.
|
|
43
|
-
- ✅ `import { Menu, Settings, Bell } from 'lucide-react';` then `<Menu className="w-5 h-5" />`
|
|
44
|
-
- ❌ Any emoji character as an icon or visual element (e.g. 🎨 🚀 ⚙️ 🔔)
|
|
45
|
-
- ❌ Other icon libraries (e.g. `@heroicons/react`, `react-icons`, custom SVG icon sets)
|
|
46
|
-
- **No emojis ever:** Do not use emojis anywhere in the app: no emojis in UI labels, buttons, headings, empty states, tooltips, or any user-facing text. Use words and lucide-react icons instead.
|
|
47
|
-
- ✅ "Settings" with `<Settings />` icon
|
|
48
|
-
- ❌ "⚙️ Settings" or "Settings 🔧"
|
|
49
|
-
- For icon usage patterns and naming, see the **webapp-ui-ux** skill (`.a4drules/skills/webapp-ui-ux/`, especially `data/icons.csv`).
|
|
50
|
-
|
|
51
|
-
## Editing UI — Source Files Only (CRITICAL)
|
|
52
|
-
|
|
53
|
-
When asked to edit the home page, a section, or any on-screen UI:
|
|
54
|
-
|
|
55
|
-
- **Always edit the actual React/TSX source files.** Never output, paste, or generate raw HTML. The UI is built from components; the agent must locate the component file(s) that render the target area and change **JSX in those files**.
|
|
56
|
-
- **Do not** replace JSX with HTML strings, and do not copy browser-rendered DOM (e.g. expanded `<div>`, `data-slot`, long class strings) into the codebase. That is the output of React + shadcn; the source is `.tsx` with `<Card>`, `<Input>`, etc.
|
|
57
|
-
- **Edit inside the component that owns the UI.** If the element to change is rendered by a **child component** (e.g. `<GlobalSearchInput />` in `Home.tsx`), make the edit **inside that component's file** (e.g. `GlobalSearchInput.tsx`). Do **not** only wrap the component with extra elements in the parent (e.g. adding a `<section>` or `<div>` around `<GlobalSearchInput />`). The parent composes components; the visual/content change belongs in the component that actually renders that part of the UI.
|
|
58
|
-
- **Where to edit:**
|
|
59
|
-
- **Home page content:** `src/pages/Home.tsx` — but if the target is inside a child (e.g. `<GlobalSearchInput />`), edit the child's file, not the parent.
|
|
60
|
-
- **Layout, header, nav:** `src/appLayout.tsx`.
|
|
61
|
-
- **Feature-specific UI (e.g. search, list):** open the **specific component file** that renders the target (e.g. `GlobalSearchInput.tsx` for the search input UI).
|
|
62
|
-
- **Steps:** (1) Identify which **component** owns the section (follow the import: e.g. `GlobalSearchInput` → its file). (2) Open that component's file and modify the JSX there. (3) Only change the parent (e.g. `Home.tsx`) if the change is layout/ordering of components, not the internals of a child. Do not emit a standalone HTML snippet as the “edit.”
|
|
63
|
-
|
|
64
|
-
## Mobile Nav / Hamburger — Must Be Functional
|
|
65
|
-
|
|
66
|
-
When adding a navigation menu that includes a hamburger (or Menu icon) for mobile:
|
|
67
|
-
|
|
68
|
-
- **Do not** add a hamburger/Menu icon that does nothing. The icon must **toggle a visible mobile menu**.
|
|
69
|
-
- **Required implementation:**
|
|
70
|
-
1. **State:** e.g. `const [isOpen, setIsOpen] = useState(false);`
|
|
71
|
-
2. **Toggle button:** The hamburger/Menu button must have `onClick={() => setIsOpen(!isOpen)}` and `aria-label="Toggle menu"` (or equivalent).
|
|
72
|
-
3. **Conditional panel:** A mobile-only menu panel that renders when `isOpen` is true, e.g. `{isOpen && ( <div className="..."> ... nav links ... </div> )}`. Use responsive classes (e.g. `md:hidden`) so the panel is shown only on small screens if the desktop nav is separate.
|
|
73
|
-
4. **Close on navigation:** Each nav link in the mobile panel should call `onClick={() => setIsOpen(false)}` (or similar) so the menu closes when the user navigates.
|
|
74
|
-
- Implement this in `appLayout.tsx` (or the component that owns the header/nav). See existing apps for the full pattern (state + button + conditional panel + link onClick).
|
|
75
|
-
|
|
76
|
-
## Styling
|
|
77
|
-
|
|
78
|
-
- Use **Tailwind CSS** utility classes
|
|
79
|
-
- Follow consistent spacing, color, and typography conventions
|
|
80
|
-
|
|
81
|
-
## Module & Platform Restrictions
|
|
82
|
-
|
|
83
|
-
React apps must NOT import Salesforce platform modules:
|
|
84
|
-
|
|
85
|
-
- ❌ `@salesforce/*` (except `@salesforce/sdk-data`)
|
|
86
|
-
- ❌ `lightning/*`
|
|
87
|
-
- ❌ `@wire` (LWC-only)
|
|
88
|
-
|
|
89
|
-
Use standard web APIs and npm packages only.
|
|
90
|
-
|
|
91
|
-
## Data Access (CRITICAL)
|
|
92
|
-
|
|
93
|
-
All Salesforce API calls **must** go through the DataSDK (`@salesforce/sdk-data`). Do NOT use `axios` or raw `fetch` — the SDK handles authentication and CSRF.
|
|
94
|
-
|
|
95
|
-
### GraphQL (Preferred)
|
|
96
|
-
|
|
97
|
-
For queries and mutations, follow the **`graphql-data-access`** skill in `feature-graphql`. It covers schema exploration, query patterns, codegen, type generation, and guardrails.
|
|
98
|
-
|
|
99
|
-
### UI API (Fallback)
|
|
100
|
-
|
|
101
|
-
When GraphQL cannot cover the use case, use `sdk.fetch!()` for UI API endpoints:
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
const sdk = await getDataSDK();
|
|
105
|
-
const resp = await sdk.fetch!('/services/data/v62.0/ui-api/records/{recordId}');
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
### Apex REST is NOT Available
|
|
109
|
-
|
|
110
|
-
Apex REST cannot be called from React applications. If Apex seems required:
|
|
111
|
-
1. Evaluate if GraphQL can accomplish the task
|
|
112
|
-
2. If not, inform the user the feature is not supported in React
|
|
113
|
-
|
|
114
|
-
### MCP Tool Integration
|
|
115
|
-
|
|
116
|
-
Before implementing data access:
|
|
117
|
-
1. Check if `orchestrate_lds_data_requirements` tool is available
|
|
118
|
-
2. Use it to get guidance on the appropriate pattern (GraphQL or UI API)
|
|
119
|
-
3. If it recommends Apex REST, ignore and use GraphQL instead
|
|
120
|
-
|
|
121
|
-
## Einstein LLM Gateway (AI Features)
|
|
122
|
-
|
|
123
|
-
```typescript
|
|
124
|
-
import { getDataSDK } from '@salesforce/sdk-data';
|
|
125
|
-
|
|
126
|
-
async function callEinsteinGenerations(prompt: string): Promise<string> {
|
|
127
|
-
const sdk = await getDataSDK();
|
|
128
|
-
const resp = await sdk.fetch!('/services/data/v62.0/einstein/llm/prompt/generations', {
|
|
129
|
-
method: 'POST',
|
|
130
|
-
headers: { 'Content-Type': 'application/json' },
|
|
131
|
-
body: JSON.stringify({
|
|
132
|
-
additionalConfig: { applicationName: 'PromptTemplateGenerationsInvocable' },
|
|
133
|
-
promptTextorId: prompt,
|
|
134
|
-
}),
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
if (!resp.ok) throw new Error(`Einstein LLM failed (${resp.status})`);
|
|
138
|
-
const data = await resp.json();
|
|
139
|
-
return data?.generations?.[0]?.text || '';
|
|
140
|
-
}
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
## Error Handling
|
|
144
|
-
|
|
145
|
-
```typescript
|
|
146
|
-
async function safeFetch<T>(fn: () => Promise<T>): Promise<T> {
|
|
147
|
-
try {
|
|
148
|
-
return await fn();
|
|
149
|
-
} catch (err) {
|
|
150
|
-
console.error('API Error:', err);
|
|
151
|
-
throw err;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
### Authentication Errors
|
|
157
|
-
|
|
158
|
-
On 401/403 response, trigger page refresh to redirect to login:
|
|
159
|
-
```typescript
|
|
160
|
-
window.location.reload();
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
## Security Standards
|
|
164
|
-
|
|
165
|
-
- Validate user permissions before data operations
|
|
166
|
-
- Respect record sharing rules and field-level security
|
|
167
|
-
- Never hardcode credentials or secrets
|
|
168
|
-
- Sanitize all user inputs
|
|
169
|
-
- Use HTTPS for all API calls
|
|
170
|
-
|
|
171
|
-
## Performance
|
|
172
|
-
|
|
173
|
-
- Use React Query or RTK Query for caching API data
|
|
174
|
-
- Use `React.memo`, `useMemo`, `useCallback` where appropriate
|
|
175
|
-
- Implement loading and error states
|
|
176
|
-
|
|
177
|
-
## Anti-Patterns (FORBIDDEN)
|
|
178
|
-
|
|
179
|
-
- ❌ Calling Apex REST from React
|
|
180
|
-
- ❌ Using `axios` or raw `fetch` for Salesforce APIs
|
|
181
|
-
- ❌ Direct DOM manipulation in React
|
|
182
|
-
- ❌ Using LWC patterns (`@wire`, LDS) in React
|
|
183
|
-
- ❌ Hardcoded Salesforce IDs or URLs
|
|
184
|
-
- ❌ Missing error handling for async operations
|
|
185
|
-
- ❌ Mixing `react-router` and `react-router-dom` (e.g. `RouterProvider` from `react-router` but `Link` from `react-router-dom`) — use one package for all routing imports
|
|
186
|
-
- ❌ Using emojis anywhere in the app (labels, icons, empty states, headings, tooltips)
|
|
187
|
-
- ❌ Using any icon library other than **lucide-react** (no Heroicons, react-icons, or emoji-as-icon)
|
|
188
|
-
- ❌ Outputting or pasting raw HTML when editing UI — always edit the React/TSX source files (e.g. `Home.tsx`, `appLayout.tsx`, feature components)
|
|
189
|
-
- ❌ Adding a hamburger or Menu icon for mobile nav without implementing toggle state, conditional menu panel, and close-on-navigate
|
|
190
|
-
|
|
191
|
-
## Quality Checklist
|
|
192
|
-
|
|
193
|
-
- [ ] Entry point maintained (`app.tsx`)
|
|
194
|
-
- [ ] Uses shadcn/ui and Tailwind
|
|
195
|
-
- [ ] Icons from **lucide-react** only; no emojis anywhere in UI or user-facing text
|
|
196
|
-
- [ ] UI changes made by editing .tsx source files (never by pasting raw HTML)
|
|
197
|
-
- [ ] If mobile hamburger exists: it has toggle state, conditional menu panel, and close on link click
|
|
198
|
-
- [ ] All routing imports from same package as router (e.g. `react-router` only)
|
|
199
|
-
- [ ] DataSDK used for all Salesforce API calls
|
|
200
|
-
- [ ] Proper error handling with try/catch
|
|
201
|
-
- [ ] Loading and error states implemented
|
|
202
|
-
- [ ] No hardcoded credentials or IDs
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Always search for and read relevant skills before starting any task
|
|
3
|
-
paths:
|
|
4
|
-
- "**/webapplications/**/*"
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Skills-First Protocol (MUST FOLLOW)
|
|
8
|
-
|
|
9
|
-
**Before writing any code or executing any command**, search for relevant skills that may already provide guidance, patterns, or step-by-step instructions for the task at hand.
|
|
10
|
-
|
|
11
|
-
## Core Directive
|
|
12
|
-
Before planning, executing a task, generating code, or running terminal commands, you MUST explicitly check if an existing Skill is available to handle the request. Do not default to manual implementation if a specialized domain Skill exists.
|
|
13
|
-
|
|
14
|
-
## Pre-Task Sequence
|
|
15
|
-
1. **Skill Discovery:** Review the names and descriptions of all available/loaded Skills in your current context.
|
|
16
|
-
2. **Match Analysis:** Evaluate if the user's current task aligns with any Skill's described use case (e.g., code reviews, PR generation, database migrations, specific framework debugging).
|
|
17
|
-
3. **Explicit Declaration:** If a matching Skill is found, your first output MUST be:
|
|
18
|
-
> "Skill identified: [Skill Name]. Executing via Skill instructions..."
|
|
19
|
-
You must then strictly adhere to the instructions defined in that specific Skill.
|
|
20
|
-
|
|
21
|
-
## Prohibited Actions
|
|
22
|
-
* Do not write custom utility scripts or complex bash commands for a workflow that is already covered by a loaded Skill.
|
|
23
|
-
* Do not bypass or ignore the loaded `SKILL.md` instructions if a relevant Skill is triggered.
|
|
24
|
-
|
|
25
|
-
## Manual Fallback
|
|
26
|
-
Only proceed with standard/manual execution if you have actively evaluated your available Skills and confirmed that no relevant Skill exists for the current prompt.
|
/package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/{src/components.json → components.json}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/{src/components.json → components.json}
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|