@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,258 @@
1
+ # Weather Hook — Implementation Guide
2
+
3
+ ## Recommended API: Open-Meteo
4
+
5
+ | Property | Value |
6
+ |----------|-------|
7
+ | Endpoint | `https://api.open-meteo.com/v1/forecast` |
8
+ | Cost | Free for non-commercial use; no signup |
9
+ | API key | **None required** |
10
+ | Rate limit | 10,000 requests/day |
11
+ | Data | Current conditions, hourly, daily, historical |
12
+ | Weather codes | WMO standard codes |
13
+
14
+ ### Why Open-Meteo over alternatives
15
+
16
+ | Provider | API key | Free tier | Notes |
17
+ |----------|---------|-----------|-------|
18
+ | **Open-Meteo** | No | 10K/day | Best for prototypes and low-traffic; no auth required |
19
+ | OpenWeatherMap | Yes | 1K calls/day | Popular but requires signup and API key |
20
+ | WeatherAPI.com | Yes | 1M calls/month | Good free tier but requires key management |
21
+ | Visual Crossing | Yes | 1K calls/day | Historical data strength |
22
+
23
+ Open-Meteo is the default choice because it requires zero configuration.
24
+
25
+ ---
26
+
27
+ ## WMO weather codes
28
+
29
+ Open-Meteo returns standard WMO weather codes. Map them to human-readable labels:
30
+
31
+ ```ts
32
+ const WEATHER_LABELS: Record<number, string> = {
33
+ 0: "Clear",
34
+ 1: "Mainly clear",
35
+ 2: "Partly cloudy",
36
+ 3: "Overcast",
37
+ 45: "Foggy",
38
+ 48: "Depositing rime fog",
39
+ 51: "Light drizzle",
40
+ 53: "Drizzle",
41
+ 55: "Dense drizzle",
42
+ 61: "Slight rain",
43
+ 63: "Rain",
44
+ 65: "Heavy rain",
45
+ 71: "Slight snow",
46
+ 73: "Snow",
47
+ 75: "Heavy snow",
48
+ 77: "Snow grains",
49
+ 80: "Slight rain showers",
50
+ 81: "Rain showers",
51
+ 82: "Heavy rain showers",
52
+ 85: "Slight snow showers",
53
+ 86: "Heavy snow showers",
54
+ 95: "Thunderstorm",
55
+ 96: "Thunderstorm + hail",
56
+ 99: "Thunderstorm + heavy hail",
57
+ };
58
+
59
+ function weatherLabel(code: number): string {
60
+ return WEATHER_LABELS[code] ?? "Unknown";
61
+ }
62
+ ```
63
+
64
+ ---
65
+
66
+ ## Temperature conversion
67
+
68
+ Open-Meteo returns Celsius by default. Convert to Fahrenheit when needed:
69
+
70
+ ```ts
71
+ function celsiusToFahrenheit(c: number): number {
72
+ return Math.round((c * 9) / 5 + 32);
73
+ }
74
+ ```
75
+
76
+ Alternatively, request Fahrenheit directly via `&temperature_unit=fahrenheit` in the query string.
77
+
78
+ ---
79
+
80
+ ## TypeScript interfaces
81
+
82
+ ```ts
83
+ export interface WeatherCurrent {
84
+ description: string;
85
+ tempF: number;
86
+ humidity: number;
87
+ windSpeedKmh: number;
88
+ windSpeedMph: number;
89
+ }
90
+
91
+ export interface WeatherHour {
92
+ time: string;
93
+ tempF: number;
94
+ }
95
+
96
+ export interface WeatherData {
97
+ current: WeatherCurrent;
98
+ hourly: WeatherHour[];
99
+ timezone: string;
100
+ }
101
+ ```
102
+
103
+ ---
104
+
105
+ ## The useWeather hook
106
+
107
+ Create at `hooks/useWeather.ts`:
108
+
109
+ ```ts
110
+ import { useState, useEffect } from "react";
111
+
112
+ const DEFAULT_LAT = 37.7749;
113
+ const DEFAULT_LNG = -122.4194;
114
+
115
+ async function fetchWeather(lat: number, lng: number): Promise<WeatherData> {
116
+ const url = new URL("https://api.open-meteo.com/v1/forecast");
117
+ url.searchParams.set("latitude", String(lat));
118
+ url.searchParams.set("longitude", String(lng));
119
+ url.searchParams.set("current", "temperature_2m,relative_humidity_2m,weather_code,wind_speed_10m");
120
+ url.searchParams.set("hourly", "temperature_2m");
121
+ url.searchParams.set("timezone", "auto");
122
+ url.searchParams.set("forecast_days", "1");
123
+
124
+ const res = await fetch(url.toString());
125
+ if (!res.ok) throw new Error(`Weather API error: ${res.status}`);
126
+ const data = await res.json();
127
+
128
+ const cur = data.current ?? {};
129
+ const tempC = cur.temperature_2m ?? 0;
130
+ const humidity = cur.relative_humidity_2m ?? 0;
131
+ const windKmh = cur.wind_speed_10m ?? 0;
132
+ const windMph = Math.round(windKmh * 0.621371 * 10) / 10;
133
+ const code = cur.weather_code ?? 0;
134
+
135
+ const hourly: WeatherHour[] = [];
136
+ const times: string[] = data.hourly?.time ?? [];
137
+ const temps: (number | null)[] = data.hourly?.temperature_2m ?? [];
138
+ const now = new Date();
139
+
140
+ for (let i = 0; i < times.length; i++) {
141
+ const t = times[i];
142
+ const temp = temps[i];
143
+ if (t && temp != null) {
144
+ const d = new Date(t);
145
+ if (d >= now) {
146
+ hourly.push({
147
+ time: d.toLocaleTimeString("en-US", { hour: "numeric", minute: "2-digit", hour12: true }),
148
+ tempF: celsiusToFahrenheit(temp),
149
+ });
150
+ }
151
+ }
152
+ if (hourly.length >= 6) break;
153
+ }
154
+
155
+ return {
156
+ current: {
157
+ description: weatherLabel(code),
158
+ tempF: celsiusToFahrenheit(tempC),
159
+ humidity,
160
+ windSpeedKmh: windKmh,
161
+ windSpeedMph: windMph,
162
+ },
163
+ hourly,
164
+ timezone: data.timezone ?? "auto",
165
+ };
166
+ }
167
+
168
+ export function useWeather(lat?: number | null, lng?: number | null) {
169
+ const latitude = lat ?? DEFAULT_LAT;
170
+ const longitude = lng ?? DEFAULT_LNG;
171
+
172
+ const [data, setData] = useState<WeatherData | null>(null);
173
+ const [loading, setLoading] = useState(true);
174
+ const [error, setError] = useState<string | null>(null);
175
+
176
+ useEffect(() => {
177
+ let cancelled = false;
178
+ setLoading(true);
179
+ setError(null);
180
+ fetchWeather(latitude, longitude)
181
+ .then((d) => {
182
+ if (!cancelled) setData(d);
183
+ })
184
+ .catch((e) => {
185
+ if (!cancelled) setError(e instanceof Error ? e.message : "Failed to load weather");
186
+ })
187
+ .finally(() => {
188
+ if (!cancelled) setLoading(false);
189
+ });
190
+ return () => {
191
+ cancelled = true;
192
+ };
193
+ }, [latitude, longitude]);
194
+
195
+ return { data, loading, error };
196
+ }
197
+ ```
198
+
199
+ ### Hook design patterns
200
+
201
+ | Pattern | Why |
202
+ |---------|-----|
203
+ | Cancellation flag (`cancelled`) | Prevents state updates on unmounted components |
204
+ | Default coordinates | Widget works immediately without user location |
205
+ | Dependency array `[latitude, longitude]` | Re-fetches only when location changes |
206
+ | Separate `loading` and `error` states | Enables distinct UI for each state |
207
+
208
+ ---
209
+
210
+ ## Open-Meteo API parameters reference
211
+
212
+ ### Current weather variables
213
+
214
+ | Variable | Description |
215
+ |----------|-------------|
216
+ | `temperature_2m` | Air temperature at 2m height (°C) |
217
+ | `relative_humidity_2m` | Relative humidity (%) |
218
+ | `weather_code` | WMO weather code |
219
+ | `wind_speed_10m` | Wind speed at 10m height (km/h) |
220
+ | `apparent_temperature` | Feels-like temperature (°C) |
221
+ | `precipitation` | Precipitation sum (mm) |
222
+
223
+ ### Hourly variables
224
+
225
+ | Variable | Description |
226
+ |----------|-------------|
227
+ | `temperature_2m` | Temperature each hour |
228
+ | `precipitation_probability` | Chance of rain (%) |
229
+ | `weather_code` | Condition each hour |
230
+
231
+ ### Daily variables
232
+
233
+ | Variable | Description |
234
+ |----------|-------------|
235
+ | `temperature_2m_max` | Daily high |
236
+ | `temperature_2m_min` | Daily low |
237
+ | `weather_code` | Dominant condition |
238
+ | `sunrise` | Sunrise time (ISO) |
239
+ | `sunset` | Sunset time (ISO) |
240
+
241
+ ### Useful query parameters
242
+
243
+ | Param | Example | Purpose |
244
+ |-------|---------|---------|
245
+ | `timezone` | `auto` or `America/Los_Angeles` | Localizes times |
246
+ | `forecast_days` | `1`–`16` | Number of days |
247
+ | `temperature_unit` | `fahrenheit` | Direct °F responses |
248
+ | `wind_speed_unit` | `mph` | Direct mph responses |
249
+
250
+ ---
251
+
252
+ ## CSP considerations
253
+
254
+ If CSP is enforced, add Open-Meteo to `connect-src`:
255
+
256
+ ```
257
+ connect-src 'self' https://api.open-meteo.com;
258
+ ```
@@ -0,0 +1,216 @@
1
+ # Weather UI — Implementation Guide
2
+
3
+ ## Weather card component
4
+
5
+ Render the weather data inside a Card component:
6
+
7
+ ```tsx
8
+ import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card";
9
+ import { useWeather } from "@/hooks/useWeather";
10
+
11
+ interface WeatherCardProps {
12
+ lat?: number;
13
+ lng?: number;
14
+ }
15
+
16
+ export default function WeatherCard({ lat, lng }: WeatherCardProps) {
17
+ const { data: weather, loading, error } = useWeather(lat, lng);
18
+
19
+ return (
20
+ <Card className="rounded-2xl shadow-md">
21
+ <CardHeader>
22
+ <CardTitle className="text-primary">Weather</CardTitle>
23
+ <p className="text-sm text-muted-foreground">
24
+ {new Date().toLocaleDateString("en-US", {
25
+ weekday: "short",
26
+ month: "short",
27
+ day: "numeric",
28
+ year: "numeric",
29
+ })}
30
+ </p>
31
+ </CardHeader>
32
+ <CardContent className="space-y-4">
33
+ {loading && <p className="text-sm text-muted-foreground">Loading weather…</p>}
34
+ {error && (
35
+ <p className="text-sm text-destructive" role="alert">
36
+ {error}
37
+ </p>
38
+ )}
39
+ {!loading && !error && weather && (
40
+ <>
41
+ {/* Current conditions */}
42
+ <p className="text-base text-foreground">{weather.current.description}</p>
43
+ <p className="text-4xl font-bold text-foreground">{weather.current.tempF}°F</p>
44
+ <div className="flex flex-wrap gap-4 text-sm text-muted-foreground">
45
+ <span>{weather.current.windSpeedMph} mph Wind</span>
46
+ <span>{weather.current.humidity}% Humidity</span>
47
+ </div>
48
+
49
+ {/* Tab indicator */}
50
+ <div className="flex gap-2 border-b border-border pb-2">
51
+ <span className="border-b-2 border-primary pb-1 text-sm font-semibold text-primary">
52
+ Today
53
+ </span>
54
+ </div>
55
+
56
+ {/* Hourly forecast */}
57
+ {weather.hourly.length > 0 && (
58
+ <div className="flex flex-wrap gap-4">
59
+ {weather.hourly.map((h) => (
60
+ <div key={h.time} className="min-w-[60px] rounded-xl bg-muted/50 p-2 text-center">
61
+ <p className="text-xs text-muted-foreground">{h.time}</p>
62
+ <p className="text-base font-semibold text-foreground">{h.tempF}°</p>
63
+ </div>
64
+ ))}
65
+ </div>
66
+ )}
67
+ </>
68
+ )}
69
+ </CardContent>
70
+ </Card>
71
+ );
72
+ }
73
+ ```
74
+
75
+ ---
76
+
77
+ ## Layout placement
78
+
79
+ ### Dashboard sidebar
80
+
81
+ Place the weather card in a two-column grid alongside other dashboard content:
82
+
83
+ ```tsx
84
+ <div className="grid grid-cols-1 gap-6 md:grid-cols-2">
85
+ <div className="space-y-6">
86
+ {/* Primary dashboard content */}
87
+ </div>
88
+ <div>
89
+ <WeatherCard />
90
+ </div>
91
+ </div>
92
+ ```
93
+
94
+ ### Full-width widget
95
+
96
+ For a standalone weather section:
97
+
98
+ ```tsx
99
+ <section className="mx-auto max-w-md">
100
+ <WeatherCard />
101
+ </section>
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Loading state
107
+
108
+ Show a text indicator while data is fetching:
109
+
110
+ ```tsx
111
+ {loading && <p className="text-sm text-muted-foreground">Loading weather…</p>}
112
+ ```
113
+
114
+ For a richer skeleton:
115
+
116
+ ```tsx
117
+ {loading && (
118
+ <div className="space-y-3">
119
+ <div className="h-4 w-24 animate-pulse rounded bg-muted" />
120
+ <div className="h-10 w-16 animate-pulse rounded bg-muted" />
121
+ <div className="flex gap-4">
122
+ <div className="h-4 w-20 animate-pulse rounded bg-muted" />
123
+ <div className="h-4 w-20 animate-pulse rounded bg-muted" />
124
+ </div>
125
+ </div>
126
+ )}
127
+ ```
128
+
129
+ ---
130
+
131
+ ## Error state
132
+
133
+ Show error messages with proper ARIA:
134
+
135
+ ```tsx
136
+ {error && (
137
+ <p className="text-sm text-destructive" role="alert">
138
+ {error}
139
+ </p>
140
+ )}
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Extending to daily forecast
146
+
147
+ To show a multi-day forecast, update the `fetchWeather` function to request daily data:
148
+
149
+ ```ts
150
+ url.searchParams.set("daily", "weather_code,temperature_2m_max,temperature_2m_min");
151
+ url.searchParams.set("forecast_days", "7");
152
+ ```
153
+
154
+ Then render each day:
155
+
156
+ ```tsx
157
+ {weather.daily.map((day) => (
158
+ <div key={day.date} className="flex items-center justify-between rounded-lg bg-muted/50 px-3 py-2">
159
+ <span className="text-sm text-muted-foreground">{day.dayName}</span>
160
+ <span className="text-sm font-medium">{day.highF}° / {day.lowF}°</span>
161
+ <span className="text-xs text-muted-foreground">{day.description}</span>
162
+ </div>
163
+ ))}
164
+ ```
165
+
166
+ ---
167
+
168
+ ## Using browser geolocation
169
+
170
+ To auto-detect the user's location:
171
+
172
+ ```ts
173
+ import { useState, useEffect } from "react";
174
+
175
+ export function useUserLocation(): { lat: number | null; lng: number | null; error: string | null } {
176
+ const [lat, setLat] = useState<number | null>(null);
177
+ const [lng, setLng] = useState<number | null>(null);
178
+ const [error, setError] = useState<string | null>(null);
179
+
180
+ useEffect(() => {
181
+ if (!navigator.geolocation) {
182
+ setError("Geolocation not supported");
183
+ return;
184
+ }
185
+ navigator.geolocation.getCurrentPosition(
186
+ (pos) => {
187
+ setLat(pos.coords.latitude);
188
+ setLng(pos.coords.longitude);
189
+ },
190
+ (err) => {
191
+ setError(err.message);
192
+ }
193
+ );
194
+ }, []);
195
+
196
+ return { lat, lng, error };
197
+ }
198
+ ```
199
+
200
+ Combine with the weather hook:
201
+
202
+ ```tsx
203
+ const { lat, lng } = useUserLocation();
204
+ const { data: weather } = useWeather(lat, lng);
205
+ ```
206
+
207
+ Falls back to the default location if geolocation is denied or unavailable.
208
+
209
+ ---
210
+
211
+ ## Accessibility
212
+
213
+ - Error messages use `role="alert"` for screen reader announcement.
214
+ - Temperature values include the unit symbol (`°F` or `°C`) in the text.
215
+ - Hourly forecast items are visually distinct with background color and spacing.
216
+ - Loading state provides text feedback, not just spinners.