@salesforce/templates 66.3.2 → 66.4.0

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.
Files changed (453) hide show
  1. package/README.md +10 -0
  2. package/lib/templates/project/reactb2e/AGENT.md +2 -0
  3. package/lib/templates/project/reactb2e/CHANGELOG.md +169 -0
  4. package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/package.json +5 -5
  5. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailForm.tsx +1 -1
  6. package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/UiApiDetailForm.tsx +2 -2
  7. package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/GlobalSearchInput.tsx +1 -1
  8. package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchResultCard.tsx +1 -1
  9. package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/api/objectDetailService.ts +3 -26
  10. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoGraphQLService.ts +137 -0
  11. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoService.ts +95 -0
  12. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_}/api/recordListGraphQLService.ts +1 -2
  13. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/useObjectInfoBatch.ts +1 -1
  14. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useObjectSearchData.ts +174 -0
  15. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/useRecordDetailLayout.ts +1 -20
  16. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_}/pages/DetailPage.tsx +1 -1
  17. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_}/pages/GlobalSearch.tsx +1 -1
  18. package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/types/filters/filters.ts +1 -0
  19. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/filters/picklist.ts +6 -0
  20. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/objectInfo/objectInfo.ts +49 -0
  21. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/schema.d.ts +200 -0
  22. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/apiUtils.ts +59 -0
  23. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLObjectInfoAdapter.ts +77 -0
  24. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → reactb2e/_p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/recordUtils.ts +4 -4
  25. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/index.ts +120 -0
  26. package/lib/templates/project/{reactb2x/force-app/main/default/webapplications/appreacttemplateb2x → reactb2e/_p_/_m_/_w_/_a_}/webapplication.json +1 -1
  27. package/lib/templates/project/reactb2e/_r_/features/feature-react-agentforce-conversation-client-embedded-agent-rule.md +18 -0
  28. package/lib/templates/project/reactb2e/_r_/skills/_k_/SKILL.md +148 -0
  29. package/lib/templates/project/{reactb2x/.a4drules/skills/feature-react-agentforce-conversation-client-embedded-agent → reactb2e/_r_/skills/_k_}/docs/embed-examples.md +42 -32
  30. package/lib/templates/project/reactb2e/_r_/skills/_k_/docs/troubleshooting.md +51 -0
  31. package/lib/templates/project/reactb2e/_r_/skills/webapp-csp-trusted-sites/SKILL.md +90 -0
  32. package/lib/templates/project/reactb2e/_r_/skills/webapp-csp-trusted-sites/implementation/metadata-format.md +281 -0
  33. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-add-component/SKILL.md +78 -0
  34. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-add-component/implementation/component.md +78 -0
  35. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-add-component/implementation/header-footer.md +124 -0
  36. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-add-component/implementation/page.md +92 -0
  37. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-data-visualization/SKILL.md +72 -0
  38. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-data-visualization/implementation/dashboard-layout.md +189 -0
  39. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-data-visualization/implementation/donut-chart.md +181 -0
  40. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-data-visualization/implementation/stat-card.md +150 -0
  41. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-interactive-map/SKILL.md +92 -0
  42. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-interactive-map/implementation/geocoding.md +245 -0
  43. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-interactive-map/implementation/leaflet-map.md +279 -0
  44. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-weather-widget/SKILL.md +65 -0
  45. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-weather-widget/implementation/weather-hook.md +258 -0
  46. package/lib/templates/project/reactb2e/_r_/skills/webapp-react-weather-widget/implementation/weather-ui.md +216 -0
  47. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/SKILL.md +268 -0
  48. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/charts.csv +26 -0
  49. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/colors.csv +97 -0
  50. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/icons.csv +101 -0
  51. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/landing.csv +31 -0
  52. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/products.csv +97 -0
  53. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/react-performance.csv +45 -0
  54. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/stacks/html-tailwind.csv +56 -0
  55. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/stacks/react.csv +54 -0
  56. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/stacks/shadcn.csv +61 -0
  57. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/styles.csv +68 -0
  58. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/typography.csv +58 -0
  59. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/ui-reasoning.csv +101 -0
  60. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/ux-guidelines.csv +100 -0
  61. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/data/web-interface.csv +31 -0
  62. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/scripts/core.js +255 -0
  63. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/scripts/design_system.js +861 -0
  64. package/lib/templates/project/reactb2e/_r_/skills/webapp-ui-ux/scripts/search.js +98 -0
  65. package/lib/templates/project/reactb2e/_r_/skills/webapp-unsplash-images/SKILL.md +71 -0
  66. package/lib/templates/project/reactb2e/_r_/skills/webapp-unsplash-images/implementation/usage.md +159 -0
  67. package/lib/templates/project/reactb2e/_r_/webapp-no-node-e.md +65 -0
  68. package/lib/templates/project/reactb2e/{.a4drules → _r_}/webapp-react.md +9 -10
  69. package/lib/templates/project/reactb2e/_r_/webapp-skills-first.md +26 -0
  70. package/lib/templates/project/reactb2e/{.a4drules → _r_}/webapp.md +8 -0
  71. package/lib/templates/project/reactb2e/package.json +3 -2
  72. package/lib/templates/project/reactb2e/scripts/prepare-import-unique-fields.js +108 -0
  73. package/lib/templates/project/reactb2e/scripts/setup-cli.mjs +282 -0
  74. package/lib/templates/project/reactb2x/AGENT.md +2 -0
  75. package/lib/templates/project/reactb2x/CHANGELOG.md +169 -0
  76. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/package.json +4 -4
  77. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailForm.tsx +1 -1
  78. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/UiApiDetailForm.tsx +2 -2
  79. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/GlobalSearchInput.tsx +1 -1
  80. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchResultCard.tsx +1 -1
  81. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/api/objectDetailService.ts +3 -26
  82. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoGraphQLService.ts +137 -0
  83. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/api/objectInfoService.ts +95 -0
  84. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_}/api/recordListGraphQLService.ts +1 -2
  85. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/useObjectInfoBatch.ts +1 -1
  86. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/hooks/useObjectSearchData.ts +174 -0
  87. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/useRecordDetailLayout.ts +1 -20
  88. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_}/pages/DetailPage.tsx +1 -1
  89. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_}/pages/GlobalSearch.tsx +1 -1
  90. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/types/filters/filters.ts +1 -0
  91. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/filters/picklist.ts +6 -0
  92. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/objectInfo/objectInfo.ts +49 -0
  93. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/types/schema.d.ts +200 -0
  94. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/apiUtils.ts +59 -0
  95. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_/utils/graphQLObjectInfoAdapter.ts +77 -0
  96. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → reactb2x/_p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/recordUtils.ts +4 -4
  97. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/authentication/api/userProfileApi.ts +81 -0
  98. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/layout/centered-page-layout.tsx +17 -2
  99. package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/pages/Profile.tsx +7 -55
  100. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/index.ts +120 -0
  101. package/lib/templates/project/{reactb2e/force-app/main/default/webapplications/appreacttemplateb2e → reactb2x/_p_/_m_/_w_/_a_}/webapplication.json +1 -1
  102. package/lib/templates/project/reactb2x/_r_/features/feature-react-agentforce-conversation-client-embedded-agent-rule.md +18 -0
  103. package/lib/templates/project/reactb2x/_r_/skills/_k_/SKILL.md +148 -0
  104. package/lib/templates/project/{reactb2e/.a4drules/skills/feature-react-agentforce-conversation-client-embedded-agent → reactb2x/_r_/skills/_k_}/docs/embed-examples.md +42 -32
  105. package/lib/templates/project/reactb2x/_r_/skills/_k_/docs/troubleshooting.md +51 -0
  106. package/lib/templates/project/reactb2x/_r_/skills/webapp-csp-trusted-sites/SKILL.md +90 -0
  107. package/lib/templates/project/reactb2x/_r_/skills/webapp-csp-trusted-sites/implementation/metadata-format.md +281 -0
  108. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-add-component/SKILL.md +78 -0
  109. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-add-component/implementation/component.md +78 -0
  110. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-add-component/implementation/header-footer.md +124 -0
  111. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-add-component/implementation/page.md +92 -0
  112. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-data-visualization/SKILL.md +72 -0
  113. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-data-visualization/implementation/dashboard-layout.md +189 -0
  114. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-data-visualization/implementation/donut-chart.md +181 -0
  115. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-data-visualization/implementation/stat-card.md +150 -0
  116. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-interactive-map/SKILL.md +92 -0
  117. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-interactive-map/implementation/geocoding.md +245 -0
  118. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-interactive-map/implementation/leaflet-map.md +279 -0
  119. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-weather-widget/SKILL.md +65 -0
  120. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-weather-widget/implementation/weather-hook.md +258 -0
  121. package/lib/templates/project/reactb2x/_r_/skills/webapp-react-weather-widget/implementation/weather-ui.md +216 -0
  122. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/SKILL.md +268 -0
  123. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/charts.csv +26 -0
  124. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/colors.csv +97 -0
  125. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/icons.csv +101 -0
  126. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/landing.csv +31 -0
  127. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/products.csv +97 -0
  128. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/react-performance.csv +45 -0
  129. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/stacks/html-tailwind.csv +56 -0
  130. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/stacks/react.csv +54 -0
  131. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/stacks/shadcn.csv +61 -0
  132. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/styles.csv +68 -0
  133. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/typography.csv +58 -0
  134. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/ui-reasoning.csv +101 -0
  135. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/ux-guidelines.csv +100 -0
  136. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/data/web-interface.csv +31 -0
  137. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/scripts/core.js +255 -0
  138. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/scripts/design_system.js +861 -0
  139. package/lib/templates/project/reactb2x/_r_/skills/webapp-ui-ux/scripts/search.js +98 -0
  140. package/lib/templates/project/reactb2x/_r_/skills/webapp-unsplash-images/SKILL.md +71 -0
  141. package/lib/templates/project/reactb2x/_r_/skills/webapp-unsplash-images/implementation/usage.md +159 -0
  142. package/lib/templates/project/reactb2x/_r_/webapp-no-node-e.md +65 -0
  143. package/lib/templates/project/reactb2x/{.a4drules → _r_}/webapp-react.md +9 -10
  144. package/lib/templates/project/reactb2x/_r_/webapp-skills-first.md +26 -0
  145. package/lib/templates/project/reactb2x/{.a4drules → _r_}/webapp.md +8 -0
  146. package/lib/templates/project/reactb2x/package.json +3 -2
  147. package/lib/templates/project/reactb2x/scripts/prepare-import-unique-fields.js +108 -0
  148. package/lib/templates/project/reactb2x/scripts/setup-cli.mjs +282 -0
  149. package/lib/templates/webapplication/reactbasic/package.json +8 -8
  150. package/lib/templates/webapplication/reactbasic/webapplication.json +1 -1
  151. package/lib/templates/webapplication/webappbasic/webapplication.json +1 -1
  152. package/lib/tsconfig.tsbuildinfo +1 -1
  153. package/lib/utils/template-placeholders.d.ts +42 -0
  154. package/lib/utils/template-placeholders.js +103 -0
  155. package/lib/utils/template-placeholders.js.map +1 -0
  156. package/lib/utils/webappTemplateUtils.d.ts +42 -0
  157. package/lib/utils/webappTemplateUtils.js +84 -7
  158. package/lib/utils/webappTemplateUtils.js.map +1 -1
  159. package/package.json +6 -6
  160. package/lib/templates/project/reactb2e/.a4drules/features/feature-react-agentforce-conversation-client-embedded-agent-rule.md +0 -32
  161. package/lib/templates/project/reactb2e/.a4drules/skills/feature-react-agentforce-conversation-client-embedded-agent/SKILL.md +0 -108
  162. package/lib/templates/project/reactb2e/.a4drules/webapp-images.md +0 -15
  163. package/lib/templates/project/reactb2e/.a4drules/webapp-no-node-e.md +0 -26
  164. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/api/index.ts +0 -19
  165. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/api/objectInfoGraphQLService.ts +0 -194
  166. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/api/objectInfoService.ts +0 -199
  167. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted/index.ts +0 -6
  168. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/hooks/index.ts +0 -22
  169. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/hooks/useObjectSearchData.ts +0 -395
  170. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/types/filters/picklist.ts +0 -32
  171. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/types/index.ts +0 -4
  172. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/types/objectInfo/objectInfo.ts +0 -166
  173. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/utils/apiUtils.ts +0 -125
  174. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/utils/graphQLObjectInfoAdapter.ts +0 -319
  175. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/utils/index.ts +0 -59
  176. package/lib/templates/project/reactb2e/force-app/main/default/webapplications/appreacttemplateb2e/src/index.ts +0 -6
  177. package/lib/templates/project/reactb2x/.a4drules/features/feature-react-agentforce-conversation-client-embedded-agent-rule.md +0 -32
  178. package/lib/templates/project/reactb2x/.a4drules/skills/feature-react-agentforce-conversation-client-embedded-agent/SKILL.md +0 -108
  179. package/lib/templates/project/reactb2x/.a4drules/webapp-images.md +0 -15
  180. package/lib/templates/project/reactb2x/.a4drules/webapp-no-node-e.md +0 -26
  181. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/api/index.ts +0 -19
  182. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/api/objectInfoGraphQLService.ts +0 -194
  183. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/api/objectInfoService.ts +0 -199
  184. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted/index.ts +0 -6
  185. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/hooks/index.ts +0 -22
  186. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/hooks/useObjectSearchData.ts +0 -395
  187. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/types/filters/picklist.ts +0 -32
  188. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/types/index.ts +0 -4
  189. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/types/objectInfo/objectInfo.ts +0 -166
  190. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/utils/apiUtils.ts +0 -125
  191. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/utils/graphQLObjectInfoAdapter.ts +0 -319
  192. package/lib/templates/project/reactb2x/force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/utils/index.ts +0 -59
  193. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/.graphqlrc.yml +0 -0
  194. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/.prettierignore +0 -0
  195. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/.prettierrc +0 -0
  196. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/CHANGELOG.md +0 -0
  197. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/README.md +0 -0
  198. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/appreacttemplateb2e.webapplication-meta.xml +0 -0
  199. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/codegen.yml +0 -0
  200. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/e2e/app.spec.ts +0 -0
  201. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/eslint.config.js +0 -0
  202. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/index.html +0 -0
  203. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/playwright.config.ts +0 -0
  204. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/scripts/get-graphql-schema.mjs +0 -0
  205. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/scripts/rewrite-e2e-assets.mjs +0 -0
  206. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailFields.tsx +0 -0
  207. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailHeader.tsx +0 -0
  208. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailLayoutSections.tsx +0 -0
  209. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/Section.tsx +0 -0
  210. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/SectionRow.tsx +0 -0
  211. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FieldValueDisplay.tsx +0 -0
  212. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedAddress.tsx +0 -0
  213. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedEmail.tsx +0 -0
  214. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedPhone.tsx +0 -0
  215. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedText.tsx +0 -0
  216. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedUrl.tsx +0 -0
  217. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FilterField.tsx +0 -0
  218. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FilterInput.tsx +0 -0
  219. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FilterSelect.tsx +0 -0
  220. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FiltersPanel.tsx +0 -0
  221. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/forms/filters-form.tsx +0 -0
  222. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/forms/submit-button.tsx +0 -0
  223. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/ResultCardFields.tsx +0 -0
  224. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchHeader.tsx +0 -0
  225. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchPagination.tsx +0 -0
  226. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchResultsPanel.tsx +0 -0
  227. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/shared/LoadingFallback.tsx +0 -0
  228. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src → _p_/_m_/_w_/_a_/src/_f_/_gs_}/constants.ts +0 -0
  229. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/filters/FilterInput.tsx +0 -0
  230. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/filters/FilterSelect.tsx +0 -0
  231. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/form.tsx +0 -0
  232. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/useRecordListGraphQL.ts +0 -0
  233. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/types/recordDetail/recordDetail.ts +0 -0
  234. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/types/search/searchResults.ts +0 -0
  235. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/cacheUtils.ts +0 -0
  236. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/debounce.ts +0 -0
  237. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/fieldUtils.ts +0 -0
  238. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/fieldValueExtractor.ts +0 -0
  239. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/filterUtils.ts +0 -0
  240. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/formDataTransformUtils.ts +0 -0
  241. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/formUtils.ts +0 -0
  242. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/graphQLNodeFieldUtils.ts +0 -0
  243. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/graphQLRecordAdapter.ts +0 -0
  244. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/layoutTransformUtils.ts +0 -0
  245. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/linkUtils.ts +0 -0
  246. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/paginationUtils.ts +0 -0
  247. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/sanitizationUtils.ts +0 -0
  248. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/app.tsx +0 -0
  249. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/appLayout.tsx +0 -0
  250. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/icons/book.svg +0 -0
  251. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/icons/copy.svg +0 -0
  252. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/icons/rocket.svg +0 -0
  253. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/icons/star.svg +0 -0
  254. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/images/codey-1.png +0 -0
  255. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/images/codey-2.png +0 -0
  256. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/images/codey-3.png +0 -0
  257. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/assets/images/vibe-codey.svg +0 -0
  258. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/AgentforceConversationClient.tsx +0 -0
  259. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/__inherit_AgentforceConversationClient.tsx +0 -0
  260. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/alerts/status-alert.tsx +0 -0
  261. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/layouts/card-layout.tsx +0 -0
  262. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/alert.tsx +0 -0
  263. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/button.tsx +0 -0
  264. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/card.tsx +0 -0
  265. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/dialog.tsx +0 -0
  266. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/field.tsx +0 -0
  267. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/index.ts +0 -0
  268. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/input.tsx +0 -0
  269. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/label.tsx +0 -0
  270. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/pagination.tsx +0 -0
  271. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/select.tsx +0 -0
  272. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/separator.tsx +0 -0
  273. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/skeleton.tsx +0 -0
  274. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/spinner.tsx +0 -0
  275. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/table.tsx +0 -0
  276. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components/ui/tabs.tsx +0 -0
  277. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/components.json +0 -0
  278. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/lib/utils.ts +0 -0
  279. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/navigationMenu.tsx +0 -0
  280. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/pages/Home.tsx +0 -0
  281. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/pages/NotFound.tsx +0 -0
  282. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/pages/TestAccPage.tsx +0 -0
  283. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/router-utils.tsx +0 -0
  284. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/routes.tsx +0 -0
  285. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/styles/global.css +0 -0
  286. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/src/types/conversation.ts +0 -0
  287. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/tsconfig.json +0 -0
  288. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/tsconfig.node.json +0 -0
  289. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/vite-env.d.ts +0 -0
  290. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/vite.config.ts +0 -0
  291. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/vitest-env.d.ts +0 -0
  292. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/vitest.config.ts +0 -0
  293. /package/lib/templates/project/reactb2e/{force-app/main/default/webapplications/appreacttemplateb2e → _p_/_m_/_w_/_a_}/vitest.setup.ts +0 -0
  294. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/features/feature-graphql-graphql-data-access-rule.md +0 -0
  295. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/features/feature-react-chart-analytics-charts-rule.md +0 -0
  296. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/SKILL.md +0 -0
  297. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/explore-schema.md +0 -0
  298. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/generate-mutation-query.md +0 -0
  299. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/generate-read-query.md +0 -0
  300. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/shared-schema.graphqls +0 -0
  301. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-micro-frontend-micro-frontend/SKILL.md +0 -0
  302. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-react-chart-analytics-charts/SKILL.md +0 -0
  303. /package/lib/templates/project/reactb2e/{.a4drules → _r_}/skills/feature-react-chart-analytics-charts/docs/schema-mapping.md +0 -0
  304. /package/lib/templates/project/reactb2e/{.a4drules/webapp-code-quality.md → _r_/webapp-react-code-quality.md} +0 -0
  305. /package/lib/templates/project/reactb2e/{.a4drules/webapp-typescript.md → _r_/webapp-react-typescript.md} +0 -0
  306. /package/lib/templates/project/reactb2x/{force-app/main/default/digitalExperiences/site/appreacttemplateb2x1 → _p_/_m_/_d_/_s_/_a1_}/appreacttemplateb2x1.digitalExperience-meta.xml +0 -0
  307. /package/lib/templates/project/reactb2x/{force-app/main/default/digitalExperiences/site/appreacttemplateb2x1 → _p_/_m_/_d_/_s_/_a1_}/sfdc_cms__site/appreacttemplateb2x1/_meta.json +0 -0
  308. /package/lib/templates/project/reactb2x/{force-app/main/default/digitalExperiences/site/appreacttemplateb2x1 → _p_/_m_/_d_/_s_/_a1_}/sfdc_cms__site/appreacttemplateb2x1/content.json +0 -0
  309. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/.graphqlrc.yml +0 -0
  310. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/.prettierignore +0 -0
  311. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/.prettierrc +0 -0
  312. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/CHANGELOG.md +0 -0
  313. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/README.md +0 -0
  314. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/appreacttemplateb2x.webapplication-meta.xml +0 -0
  315. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/codegen.yml +0 -0
  316. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/e2e/app.spec.ts +0 -0
  317. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/eslint.config.js +0 -0
  318. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/index.html +0 -0
  319. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/playwright.config.ts +0 -0
  320. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/scripts/get-graphql-schema.mjs +0 -0
  321. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/scripts/rewrite-e2e-assets.mjs +0 -0
  322. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailFields.tsx +0 -0
  323. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailHeader.tsx +0 -0
  324. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/DetailLayoutSections.tsx +0 -0
  325. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/Section.tsx +0 -0
  326. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_}/SectionRow.tsx +0 -0
  327. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FieldValueDisplay.tsx +0 -0
  328. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedAddress.tsx +0 -0
  329. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedEmail.tsx +0 -0
  330. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedPhone.tsx +0 -0
  331. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedText.tsx +0 -0
  332. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components/detail/formatted → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_/_det_/_fmt_}/FormattedUrl.tsx +0 -0
  333. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FilterField.tsx +0 -0
  334. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FilterInput.tsx +0 -0
  335. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FilterSelect.tsx +0 -0
  336. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/filters/FiltersPanel.tsx +0 -0
  337. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/forms/filters-form.tsx +0 -0
  338. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/forms/submit-button.tsx +0 -0
  339. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/ResultCardFields.tsx +0 -0
  340. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchHeader.tsx +0 -0
  341. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchPagination.tsx +0 -0
  342. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/search/SearchResultsPanel.tsx +0 -0
  343. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search/components → _p_/_m_/_w_/_a_/src/_f_/_gs_/_c_}/shared/LoadingFallback.tsx +0 -0
  344. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src → _p_/_m_/_w_/_a_/src/_f_/_gs_}/constants.ts +0 -0
  345. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/filters/FilterInput.tsx +0 -0
  346. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/filters/FilterSelect.tsx +0 -0
  347. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/form.tsx +0 -0
  348. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/hooks/useRecordListGraphQL.ts +0 -0
  349. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/types/recordDetail/recordDetail.ts +0 -0
  350. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/types/search/searchResults.ts +0 -0
  351. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/cacheUtils.ts +0 -0
  352. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/debounce.ts +0 -0
  353. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/fieldUtils.ts +0 -0
  354. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/fieldValueExtractor.ts +0 -0
  355. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/filterUtils.ts +0 -0
  356. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/formDataTransformUtils.ts +0 -0
  357. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/formUtils.ts +0 -0
  358. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/graphQLNodeFieldUtils.ts +0 -0
  359. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/graphQLRecordAdapter.ts +0 -0
  360. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/layoutTransformUtils.ts +0 -0
  361. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/linkUtils.ts +0 -0
  362. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/paginationUtils.ts +0 -0
  363. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features/global-search → _p_/_m_/_w_/_a_/src/_f_/_gs_}/utils/sanitizationUtils.ts +0 -0
  364. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/authHelpers.ts +0 -0
  365. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/authenticationConfig.ts +0 -0
  366. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/context/AuthContext.tsx +0 -0
  367. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/footers/footer-link.tsx +0 -0
  368. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/forms/auth-form.tsx +0 -0
  369. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/forms/submit-button.tsx +0 -0
  370. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/hooks/form.tsx +0 -0
  371. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/hooks/useCountdownTimer.ts +0 -0
  372. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/hooks/useRetryWithBackoff.ts +0 -0
  373. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/layout/card-skeleton.tsx +0 -0
  374. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/layouts/AuthAppLayout.tsx +0 -0
  375. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/layouts/authenticationRouteLayout.tsx +0 -0
  376. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/layouts/privateRouteLayout.tsx +0 -0
  377. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/pages/ChangePassword.tsx +0 -0
  378. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/pages/ForgotPassword.tsx +0 -0
  379. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/pages/Login.tsx +0 -0
  380. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/pages/Register.tsx +0 -0
  381. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/pages/ResetPassword.tsx +0 -0
  382. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/sessionTimeout/SessionTimeoutValidator.tsx +0 -0
  383. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/sessionTimeout/sessionTimeService.ts +0 -0
  384. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/sessionTimeout/sessionTimeoutConfig.ts +0 -0
  385. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x/src/features → _p_/_m_/_w_/_a_/src/_f_}/authentication/utils/helpers.ts +0 -0
  386. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/app.tsx +0 -0
  387. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/appLayout.tsx +0 -0
  388. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/icons/book.svg +0 -0
  389. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/icons/copy.svg +0 -0
  390. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/icons/rocket.svg +0 -0
  391. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/icons/star.svg +0 -0
  392. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/images/codey-1.png +0 -0
  393. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/images/codey-2.png +0 -0
  394. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/images/codey-3.png +0 -0
  395. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/assets/images/vibe-codey.svg +0 -0
  396. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/alerts/status-alert.tsx +0 -0
  397. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/layouts/card-layout.tsx +0 -0
  398. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/alert.tsx +0 -0
  399. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/button.tsx +0 -0
  400. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/card.tsx +0 -0
  401. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/dialog.tsx +0 -0
  402. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/field.tsx +0 -0
  403. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/index.ts +0 -0
  404. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/input.tsx +0 -0
  405. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/label.tsx +0 -0
  406. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/pagination.tsx +0 -0
  407. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/select.tsx +0 -0
  408. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/separator.tsx +0 -0
  409. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/skeleton.tsx +0 -0
  410. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/spinner.tsx +0 -0
  411. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/table.tsx +0 -0
  412. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components/ui/tabs.tsx +0 -0
  413. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/components.json +0 -0
  414. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/lib/utils.ts +0 -0
  415. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/navigationMenu.tsx +0 -0
  416. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/pages/Home.tsx +0 -0
  417. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/pages/NotFound.tsx +0 -0
  418. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/router-utils.tsx +0 -0
  419. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/routes.tsx +0 -0
  420. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/src/styles/global.css +0 -0
  421. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/tsconfig.json +0 -0
  422. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/tsconfig.node.json +0 -0
  423. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/vite-env.d.ts +0 -0
  424. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/vite.config.ts +0 -0
  425. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/vitest-env.d.ts +0 -0
  426. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/vitest.config.ts +0 -0
  427. /package/lib/templates/project/reactb2x/{force-app/main/default/webapplications/appreacttemplateb2x → _p_/_m_/_w_/_a_}/vitest.setup.ts +0 -0
  428. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppAuthUtils.cls +0 -0
  429. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppAuthUtils.cls-meta.xml +0 -0
  430. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppChangePassword.cls +0 -0
  431. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppChangePassword.cls-meta.xml +0 -0
  432. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppForgotPassword.cls +0 -0
  433. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppForgotPassword.cls-meta.xml +0 -0
  434. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppLogin.cls +0 -0
  435. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppLogin.cls-meta.xml +0 -0
  436. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppRegistration.cls +0 -0
  437. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/classes/WebAppRegistration.cls-meta.xml +0 -0
  438. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/digitalExperienceConfigs/appreacttemplateb2x1.digitalExperienceConfig +0 -0
  439. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/networks/appreacttemplateb2x.network +0 -0
  440. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/package.xml +0 -0
  441. /package/lib/templates/project/reactb2x/{force-app/main/default → _p_/_m_}/sites/appreacttemplateb2x.site +0 -0
  442. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/features/feature-graphql-graphql-data-access-rule.md +0 -0
  443. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/features/feature-react-chart-analytics-charts-rule.md +0 -0
  444. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/SKILL.md +0 -0
  445. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/explore-schema.md +0 -0
  446. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/generate-mutation-query.md +0 -0
  447. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/generate-read-query.md +0 -0
  448. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-graphql-graphql-data-access/docs/shared-schema.graphqls +0 -0
  449. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-micro-frontend-micro-frontend/SKILL.md +0 -0
  450. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-react-chart-analytics-charts/SKILL.md +0 -0
  451. /package/lib/templates/project/reactb2x/{.a4drules → _r_}/skills/feature-react-chart-analytics-charts/docs/schema-mapping.md +0 -0
  452. /package/lib/templates/project/reactb2x/{.a4drules/webapp-code-quality.md → _r_/webapp-react-code-quality.md} +0 -0
  453. /package/lib/templates/project/reactb2x/{.a4drules/webapp-typescript.md → _r_/webapp-react-typescript.md} +0 -0
@@ -0,0 +1,245 @@
1
+ # Geocoding — Implementation Guide
2
+
3
+ ## What is geocoding
4
+
5
+ Geocoding converts a human-readable address (e.g. "123 Main St, San Francisco, CA") into latitude/longitude coordinates for map display.
6
+
7
+ ---
8
+
9
+ ## Recommended service: OpenStreetMap Nominatim
10
+
11
+ | Property | Value |
12
+ |----------|-------|
13
+ | Endpoint | `https://nominatim.openstreetmap.org/search` |
14
+ | Cost | Free |
15
+ | API key | None |
16
+ | Rate limit | 1 request/second (enforced by Nominatim usage policy) |
17
+ | Terms | Must set a meaningful `User-Agent` header |
18
+
19
+ ---
20
+
21
+ ## Geocode utility with caching and concurrency control
22
+
23
+ Create at `utils/geocode.ts`:
24
+
25
+ ```ts
26
+ const CACHE = new Map<string, { lat: number; lng: number }>();
27
+ const MAX_CONCURRENT = 6;
28
+ let inFlight = 0;
29
+ const queue: Array<() => void> = [];
30
+
31
+ function acquire(): Promise<void> {
32
+ if (inFlight < MAX_CONCURRENT) {
33
+ inFlight += 1;
34
+ return Promise.resolve();
35
+ }
36
+ return new Promise<void>((resolve) => {
37
+ queue.push(() => {
38
+ inFlight += 1;
39
+ resolve();
40
+ });
41
+ });
42
+ }
43
+
44
+ function release(): void {
45
+ inFlight -= 1;
46
+ const next = queue.shift();
47
+ if (next) next();
48
+ }
49
+
50
+ export interface GeocodeResult {
51
+ lat: number;
52
+ lng: number;
53
+ }
54
+
55
+ export async function geocodeAddress(address: string): Promise<GeocodeResult | null> {
56
+ const key = address.trim().replace(/\s+/g, " ").toLowerCase();
57
+ if (!key) return null;
58
+ const cached = CACHE.get(key);
59
+ if (cached) return cached;
60
+
61
+ await acquire();
62
+ try {
63
+ const url = new URL("https://nominatim.openstreetmap.org/search");
64
+ url.searchParams.set("q", address.trim());
65
+ url.searchParams.set("format", "json");
66
+ url.searchParams.set("limit", "1");
67
+ const res = await fetch(url.toString(), {
68
+ headers: { "User-Agent": "MyApp/1.0 (contact@example.com)" },
69
+ });
70
+ if (!res.ok) return null;
71
+ const data = (await res.json()) as Array<{ lat?: string; lon?: string }>;
72
+ const first = data?.[0];
73
+ if (!first?.lat || !first?.lon) return null;
74
+ const lat = Number(first.lat);
75
+ const lng = Number(first.lon);
76
+ if (Number.isNaN(lat) || Number.isNaN(lng)) return null;
77
+ const result = { lat, lng };
78
+ CACHE.set(key, result);
79
+ return result;
80
+ } catch {
81
+ return null;
82
+ } finally {
83
+ release();
84
+ }
85
+ }
86
+ ```
87
+
88
+ ### Design decisions
89
+
90
+ | Decision | Rationale |
91
+ |----------|-----------|
92
+ | In-memory cache | Avoids repeated API calls for the same address within a session |
93
+ | Concurrency limiter (6) | Prevents flooding Nominatim when geocoding many addresses in parallel |
94
+ | Semaphore queue | Requests beyond the limit wait in FIFO order |
95
+ | Null return on failure | Callers decide how to handle missing coordinates (skip marker, show fallback) |
96
+ | `User-Agent` header | Required by Nominatim usage policy; set to your app name and contact |
97
+
98
+ ---
99
+
100
+ ## React hook: useGeocode
101
+
102
+ For single-address geocoding (e.g. detail pages):
103
+
104
+ ```ts
105
+ import { useState, useEffect } from "react";
106
+ import { geocodeAddress, type GeocodeResult } from "@/utils/geocode";
107
+
108
+ export function useGeocode(address: string | null | undefined): {
109
+ coords: GeocodeResult | null;
110
+ loading: boolean;
111
+ } {
112
+ const [coords, setCoords] = useState<GeocodeResult | null>(null);
113
+ const [loading, setLoading] = useState(false);
114
+
115
+ useEffect(() => {
116
+ if (!address?.trim()) {
117
+ setCoords(null);
118
+ setLoading(false);
119
+ return;
120
+ }
121
+ let cancelled = false;
122
+ setLoading(true);
123
+ geocodeAddress(address)
124
+ .then((result) => {
125
+ if (!cancelled) setCoords(result);
126
+ })
127
+ .catch(() => {
128
+ if (!cancelled) setCoords(null);
129
+ })
130
+ .finally(() => {
131
+ if (!cancelled) setLoading(false);
132
+ });
133
+ return () => {
134
+ cancelled = true;
135
+ };
136
+ }, [address?.trim() ?? ""]);
137
+
138
+ return { coords, loading };
139
+ }
140
+ ```
141
+
142
+ ### Usage in a component
143
+
144
+ ```tsx
145
+ const { coords } = useGeocode("123 Main St, San Francisco, CA");
146
+
147
+ {coords && (
148
+ <MapView
149
+ center={[coords.lat, coords.lng]}
150
+ zoom={15}
151
+ markers={[{ lat: coords.lat, lng: coords.lng, label: "Location" }]}
152
+ />
153
+ )}
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Batch geocoding for lists
159
+
160
+ When geocoding multiple addresses (e.g. search results → map markers), use `Promise.all` with the built-in concurrency limiter:
161
+
162
+ ```ts
163
+ const results = await Promise.all(
164
+ addresses.map(({ id, address }) =>
165
+ geocodeAddress(address).then((coords) =>
166
+ coords ? { id, lat: coords.lat, lng: coords.lng } : null
167
+ )
168
+ )
169
+ );
170
+ const markers = results.filter(Boolean);
171
+ ```
172
+
173
+ The `MAX_CONCURRENT` semaphore in the utility ensures no more than 6 requests are in flight, even if you pass 50 addresses.
174
+
175
+ ---
176
+
177
+ ## Hook for multi-marker geocoding
178
+
179
+ ```ts
180
+ import { useState, useEffect } from "react";
181
+ import { geocodeAddress } from "@/utils/geocode";
182
+ import type { MapMarker } from "@/components/MapView";
183
+
184
+ export function useMapMarkers(
185
+ items: Array<{ id: string; address: string; label?: string }>
186
+ ): { markers: MapMarker[]; loading: boolean } {
187
+ const [markers, setMarkers] = useState<MapMarker[]>([]);
188
+ const [loading, setLoading] = useState(false);
189
+
190
+ const key = items.map((i) => i.id).join(",");
191
+
192
+ useEffect(() => {
193
+ if (items.length === 0) {
194
+ setMarkers([]);
195
+ return;
196
+ }
197
+ let cancelled = false;
198
+ setLoading(true);
199
+ Promise.all(
200
+ items.map((item) =>
201
+ geocodeAddress(item.address).then((coords) =>
202
+ coords ? { lat: coords.lat, lng: coords.lng, label: item.label ?? item.address } : null
203
+ )
204
+ )
205
+ )
206
+ .then((results) => {
207
+ if (!cancelled) setMarkers(results.filter(Boolean) as MapMarker[]);
208
+ })
209
+ .catch(() => {
210
+ if (!cancelled) setMarkers([]);
211
+ })
212
+ .finally(() => {
213
+ if (!cancelled) setLoading(false);
214
+ });
215
+ return () => {
216
+ cancelled = true;
217
+ };
218
+ }, [key]);
219
+
220
+ return { markers, loading };
221
+ }
222
+ ```
223
+
224
+ ---
225
+
226
+ ## CSP considerations
227
+
228
+ If CSP is enforced, add Nominatim to `connect-src`:
229
+
230
+ ```
231
+ connect-src 'self' https://nominatim.openstreetmap.org;
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Alternative geocoding providers
237
+
238
+ | Provider | Free tier | API key | Notes |
239
+ |----------|-----------|---------|-------|
240
+ | Nominatim (OSM) | Unlimited (rate-limited) | No | Best for prototypes and low-traffic apps |
241
+ | Google Geocoding API | 200 USD/month credit | Yes | Most accurate; requires billing account |
242
+ | Mapbox Geocoding | 100K req/month | Yes | Good accuracy; JS SDK available |
243
+ | LocationIQ | 5K req/day | Yes | Nominatim-compatible API |
244
+
245
+ For production apps with high traffic, consider Google or Mapbox with an API key and server-side geocoding.
@@ -0,0 +1,279 @@
1
+ # Leaflet Map — Implementation Guide
2
+
3
+ ## Dependencies
4
+
5
+ Add to the project:
6
+
7
+ ```bash
8
+ npm install leaflet react-leaflet
9
+ npm install -D @types/leaflet
10
+ ```
11
+
12
+ Import the Leaflet CSS in the component file (not in global CSS — keeps it co-located):
13
+
14
+ ```tsx
15
+ import "leaflet/dist/leaflet.css";
16
+ ```
17
+
18
+ ---
19
+
20
+ ## TypeScript declaration (if @types/leaflet is unavailable)
21
+
22
+ If the project cannot install `@types/leaflet`, create a declaration file:
23
+
24
+ ```ts
25
+ // types/leaflet.d.ts
26
+ declare module "leaflet" {
27
+ const L: unknown;
28
+ export default L;
29
+ }
30
+ declare module "leaflet/dist/leaflet.css";
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Reusable map component
36
+
37
+ Create a generic map component at `components/MapView.tsx` (or similar):
38
+
39
+ ```tsx
40
+ import { useMemo, useState, useEffect } from "react";
41
+ import { MapContainer, TileLayer, Marker, Popup, useMap } from "react-leaflet";
42
+ import L from "leaflet";
43
+ import "leaflet/dist/leaflet.css";
44
+
45
+ const Leaflet = L as {
46
+ divIcon: (opts: {
47
+ className?: string;
48
+ html?: string;
49
+ iconSize?: [number, number];
50
+ iconAnchor?: [number, number];
51
+ popupAnchor?: [number, number];
52
+ }) => unknown;
53
+ };
54
+
55
+ const pinIcon = Leaflet.divIcon({
56
+ className: "map-pin",
57
+ html: `<span class="map-pin-shape" aria-hidden="true"></span>`,
58
+ iconSize: [28, 40],
59
+ iconAnchor: [14, 40],
60
+ popupAnchor: [0, -40],
61
+ });
62
+
63
+ export interface MapMarker {
64
+ lat: number;
65
+ lng: number;
66
+ label?: string;
67
+ }
68
+
69
+ interface MapViewProps {
70
+ center: [number, number];
71
+ zoom?: number;
72
+ markers?: MapMarker[];
73
+ className?: string;
74
+ }
75
+
76
+ function MapCenterUpdater({ center, zoom = 13 }: { center: [number, number]; zoom?: number }) {
77
+ const map = useMap() as { setView: (center: [number, number], zoom: number) => void };
78
+ useEffect(() => {
79
+ map.setView(center, zoom);
80
+ }, [map, center[0], center[1], zoom]);
81
+ return null;
82
+ }
83
+
84
+ export default function MapView({
85
+ center,
86
+ zoom = 13,
87
+ markers = [],
88
+ className = "h-[400px] w-full rounded-xl overflow-hidden",
89
+ }: MapViewProps) {
90
+ const [mounted, setMounted] = useState(false);
91
+ useEffect(() => {
92
+ setMounted(true);
93
+ }, []);
94
+
95
+ const effectiveCenter = useMemo((): [number, number] => {
96
+ if (markers.length > 0) {
97
+ const sum = markers.reduce((acc, m) => [acc[0] + m.lat, acc[1] + m.lng], [0, 0]);
98
+ return [sum[0] / markers.length, sum[1] / markers.length];
99
+ }
100
+ return center;
101
+ }, [center, markers]);
102
+
103
+ if (!mounted || typeof window === "undefined") {
104
+ return (
105
+ <div
106
+ className={className + " bg-muted flex items-center justify-center text-muted-foreground text-sm"}
107
+ aria-hidden
108
+ >
109
+ Loading map…
110
+ </div>
111
+ );
112
+ }
113
+
114
+ return (
115
+ <div className={className} aria-label="Map">
116
+ <MapContainer
117
+ center={effectiveCenter}
118
+ zoom={zoom}
119
+ scrollWheelZoom
120
+ className="h-full w-full"
121
+ style={{ minHeight: 200 }}
122
+ >
123
+ <MapCenterUpdater center={effectiveCenter} zoom={zoom} />
124
+ <TileLayer
125
+ attribution='Data by &copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
126
+ url="https://tile.openstreetmap.org/{z}/{x}/{y}.png"
127
+ maxZoom={19}
128
+ />
129
+ {markers.map((m, i) => (
130
+ <Marker key={`${m.lat}-${m.lng}-${i}`} position={[m.lat, m.lng]} icon={pinIcon}>
131
+ <Popup>{m.label ?? "Location"}</Popup>
132
+ </Marker>
133
+ ))}
134
+ </MapContainer>
135
+ </div>
136
+ );
137
+ }
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Tile provider: OpenStreetMap
143
+
144
+ The default tile URL is free and requires no API key:
145
+
146
+ ```
147
+ https://tile.openstreetmap.org/{z}/{x}/{y}.png
148
+ ```
149
+
150
+ | Property | Value |
151
+ |----------|-------|
152
+ | Cost | Free |
153
+ | API key | None |
154
+ | Max zoom | 19 |
155
+ | Attribution | Required — `© OpenStreetMap` |
156
+
157
+ CSP `img-src` must include `https://tile.openstreetmap.org` if CSP is enforced.
158
+
159
+ ---
160
+
161
+ ## Custom pin icon via CSS
162
+
163
+ The `divIcon` approach avoids external marker image dependencies. Add these styles to your global CSS or a co-located CSS file:
164
+
165
+ ```css
166
+ .map-pin {
167
+ background: transparent !important;
168
+ border: none !important;
169
+ }
170
+
171
+ .map-pin-shape {
172
+ display: block;
173
+ width: 28px;
174
+ height: 40px;
175
+ background: hsl(var(--primary));
176
+ border-radius: 50% 50% 50% 0;
177
+ transform: rotate(-45deg);
178
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.3);
179
+ }
180
+
181
+ .map-pin-shape::after {
182
+ content: "";
183
+ display: block;
184
+ width: 12px;
185
+ height: 12px;
186
+ background: white;
187
+ border-radius: 50%;
188
+ position: absolute;
189
+ top: 50%;
190
+ left: 50%;
191
+ transform: translate(-50%, -50%);
192
+ }
193
+ ```
194
+
195
+ ---
196
+
197
+ ## SSR safety
198
+
199
+ Leaflet requires `window` and `document`. The component guards against SSR with:
200
+
201
+ 1. A `mounted` state that only becomes `true` in `useEffect` (client-side).
202
+ 2. A `typeof window === "undefined"` check.
203
+ 3. A loading placeholder rendered during SSR / before mount.
204
+
205
+ This prevents "window is not defined" errors in SSR or static builds.
206
+
207
+ ---
208
+
209
+ ## MapCenterUpdater pattern
210
+
211
+ `react-leaflet`'s `MapContainer` does not re-center when the `center` prop changes after initial render. The `MapCenterUpdater` child component uses `useMap()` to call `map.setView()` reactively:
212
+
213
+ ```tsx
214
+ function MapCenterUpdater({ center, zoom = 13 }: { center: [number, number]; zoom?: number }) {
215
+ const map = useMap();
216
+ useEffect(() => {
217
+ map.setView(center, zoom);
218
+ }, [map, center[0], center[1], zoom]);
219
+ return null;
220
+ }
221
+ ```
222
+
223
+ Place it as a direct child of `<MapContainer>`.
224
+
225
+ ---
226
+
227
+ ## Multi-marker center calculation
228
+
229
+ When rendering multiple markers, auto-center the map on their centroid:
230
+
231
+ ```tsx
232
+ const effectiveCenter = useMemo((): [number, number] => {
233
+ if (markers.length > 0) {
234
+ const sum = markers.reduce((acc, m) => [acc[0] + m.lat, acc[1] + m.lng], [0, 0]);
235
+ return [sum[0] / markers.length, sum[1] / markers.length];
236
+ }
237
+ return fallbackCenter;
238
+ }, [markers, fallbackCenter]);
239
+ ```
240
+
241
+ ---
242
+
243
+ ## Split-panel layout (map + list)
244
+
245
+ For a search page with map on the left and scrollable results on the right:
246
+
247
+ ```tsx
248
+ <div className="flex h-[calc(100vh-4rem)] min-h-[500px] flex-col">
249
+ {/* Search bar */}
250
+ <div className="shrink-0 border-b bg-background px-4 py-3">
251
+ {/* search input */}
252
+ </div>
253
+ {/* Map + List */}
254
+ <div className="flex min-h-0 flex-1 flex-col lg:flex-row">
255
+ <div className="h-64 shrink-0 lg:h-full lg:min-h-0 lg:w-2/3" aria-label="Map">
256
+ <MapView center={center} markers={markers} className="h-full w-full" />
257
+ </div>
258
+ <aside className="flex w-full flex-col border-t lg:w-1/3 lg:border-l lg:border-t-0">
259
+ <div className="flex-1 overflow-y-auto p-4">
260
+ {/* list items */}
261
+ </div>
262
+ </aside>
263
+ </div>
264
+ </div>
265
+ ```
266
+
267
+ Key points:
268
+ - `h-[calc(100vh-4rem)]` fills viewport minus header.
269
+ - `lg:flex-row` stacks vertically on mobile, side-by-side on desktop.
270
+ - List panel uses `overflow-y-auto` for independent scrolling.
271
+
272
+ ---
273
+
274
+ ## Accessibility
275
+
276
+ - Wrap the map `<div>` with `aria-label="Map"` or a descriptive label.
277
+ - Pin icon inner HTML uses `aria-hidden="true"`.
278
+ - Popups contain text labels for each marker.
279
+ - Provide a text-based alternative (address list) for screen readers.
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: webapp-react-weather-widget
3
+ description: Adds a weather widget to React pages using the free Open-Meteo API. Use when the user asks to add weather, show a forecast, display current conditions, add a weather card, or integrate weather data into the web application.
4
+ ---
5
+
6
+ # Weather Widget
7
+
8
+ ## When to Use
9
+
10
+ Use this skill when:
11
+ - Adding current weather conditions to a dashboard or sidebar
12
+ - Displaying an hourly or daily forecast
13
+ - Showing location-based weather for a property, event, or destination
14
+
15
+ ---
16
+
17
+ ## Step 1 — Determine widget scope
18
+
19
+ Identify what weather data the user needs:
20
+
21
+ - **Current conditions only** — temperature, description, wind, humidity
22
+ - **Current + hourly forecast** — conditions + next 6–12 hours
23
+ - **Current + daily forecast** — conditions + multi-day outlook
24
+
25
+ If unclear, ask:
26
+
27
+ > "Should the weather widget show just current conditions, or include an hourly/daily forecast too?"
28
+
29
+ ---
30
+
31
+ ## Step 2 — Determine location source
32
+
33
+ The widget needs a latitude/longitude. Identify where this comes from:
34
+
35
+ - **Fixed default** — hardcoded city (e.g. San Francisco: `37.7749, -122.4194`)
36
+ - **User's location** — browser Geolocation API
37
+ - **Address-based** — geocode an address to lat/lng (see the `webapp-react-interactive-map` skill for geocoding)
38
+ - **Prop-driven** — parent component passes lat/lng
39
+
40
+ ---
41
+
42
+ ## Step 3 — Implementation
43
+
44
+ Read the corresponding guides:
45
+
46
+ - **Weather data hook** — read `implementation/weather-hook.md` for the `useWeather` custom hook and Open-Meteo API integration.
47
+ - **Weather UI component** — read `implementation/weather-ui.md` for rendering weather data in a card.
48
+
49
+ ---
50
+
51
+ ## Verification
52
+
53
+ Before completing:
54
+
55
+ 1. Widget shows real weather data (not mocked).
56
+ 2. Loading and error states are handled gracefully.
57
+ 3. Temperature displays in the correct unit (°F or °C).
58
+ 4. Run from the web app directory:
59
+
60
+ ```bash
61
+ cd force-app/main/default/webapplications/<appName> && npm run lint && npm run build
62
+ ```
63
+
64
+ - **Lint:** MUST result in 0 errors.
65
+ - **Build:** MUST succeed.