@salesforce/templates 66.5.6 → 66.6.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 (352) hide show
  1. package/lib/generators/projectGenerator.d.ts +1 -1
  2. package/lib/generators/projectGenerator.js +3 -3
  3. package/lib/generators/projectGenerator.js.map +1 -1
  4. package/lib/templates/project/{reactb2e → reactexternalapp}/AGENT.md +6 -10
  5. package/lib/templates/project/{reactb2e → reactexternalapp}/CHANGELOG.md +59 -0
  6. package/lib/templates/project/{reactb2x → reactexternalapp}/README.md +14 -14
  7. package/lib/templates/project/{reactb2x/_p_/_m_/_d_/_s_/_a1_/appreacttemplateb2x1.digitalExperience-meta.xml → reactexternalapp/_p_/_m_/_d_/_s_/_a1_/reactexternalapp1.digitalExperience-meta.xml} +1 -1
  8. package/lib/templates/project/{reactb2x/_p_/_m_/_d_/_s_/_a1_/sfdc_cms__site/appreacttemplateb2x1 → reactexternalapp/_p_/_m_/_d_/_s_/_a1_/sfdc_cms__site/reactexternalapp1}/_meta.json +1 -1
  9. package/lib/templates/project/{reactb2x/_p_/_m_/_d_/_s_/_a1_/sfdc_cms__site/appreacttemplateb2x1 → reactexternalapp/_p_/_m_/_d_/_s_/_a1_/sfdc_cms__site/reactexternalapp1}/content.json +3 -3
  10. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/README.md +2 -2
  11. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/package.json +3 -3
  12. package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/appreacttemplateb2x.webapplication-meta.xml → reactexternalapp/_p_/_m_/_w_/_a_/reactexternalapp.webapplication-meta.xml} +1 -1
  13. package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/pages/AccountSearch.tsx +82 -54
  14. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/FilterContext.tsx +73 -0
  15. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/PaginationControls.tsx +109 -0
  16. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/BooleanFilter.tsx +16 -36
  17. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateFilter.tsx +121 -0
  18. package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateRangeFilter.tsx +14 -23
  19. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/MultiSelectFilter.tsx +18 -26
  20. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/NumericRangeFilter.tsx +22 -39
  21. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SearchFilter.tsx +37 -0
  22. package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SelectFilter.tsx +30 -34
  23. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/TextFilter.tsx +74 -0
  24. package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useAsyncData.ts +1 -0
  25. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useCachedAsyncData.ts +1 -0
  26. package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useObjectSearchParams.ts +22 -0
  27. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/api/graphqlClient.ts +25 -0
  28. package/lib/templates/project/{reactb2x/_p_/_m_/digitalExperienceConfigs/appreacttemplateb2x1.digitalExperienceConfig → reactexternalapp/_p_/_m_/digitalExperienceConfigs/reactexternalapp1.digitalExperienceConfig} +3 -3
  29. package/lib/templates/project/{reactb2x/_p_/_m_/networks/appreacttemplateb2x.network → reactexternalapp/_p_/_m_/networks/reactexternalapp.network} +4 -4
  30. package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/package.xml +4 -4
  31. package/lib/templates/project/{reactb2x/_p_/_m_/sites/appreacttemplateb2x.site → reactexternalapp/_p_/_m_/sites/reactexternalapp.site} +2 -2
  32. package/lib/templates/project/{reactb2e → reactexternalapp}/_r_/webapp-data.md +5 -5
  33. package/lib/templates/project/{reactb2x → reactexternalapp}/_r_/webapp-ui.md +2 -2
  34. package/lib/templates/project/{reactb2e → reactexternalapp}/package-lock.json +2 -2
  35. package/lib/templates/project/{reactb2e → reactexternalapp}/package.json +1 -1
  36. package/lib/templates/project/{reactb2x/_r_/skills/using-salesforce-data → reactexternalapp/scripts}/graphql-search.sh +73 -21
  37. package/lib/templates/project/{reactb2x → reactinternalapp}/AGENT.md +6 -10
  38. package/lib/templates/project/{reactb2x → reactinternalapp}/CHANGELOG.md +59 -0
  39. package/lib/templates/project/{reactb2e → reactinternalapp}/README.md +9 -9
  40. package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/README.md +2 -2
  41. package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/package.json +3 -3
  42. package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/appreacttemplateb2e.webapplication-meta.xml → reactinternalapp/_p_/_m_/_w_/_a_/reactinternalapp.webapplication-meta.xml} +1 -1
  43. package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/pages/AccountSearch.tsx +82 -54
  44. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/FilterContext.tsx +73 -0
  45. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/PaginationControls.tsx +109 -0
  46. package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/BooleanFilter.tsx +16 -36
  47. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateFilter.tsx +121 -0
  48. package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateRangeFilter.tsx +14 -23
  49. package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/MultiSelectFilter.tsx +18 -26
  50. package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/NumericRangeFilter.tsx +22 -39
  51. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SearchFilter.tsx +37 -0
  52. package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SelectFilter.tsx +30 -34
  53. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/TextFilter.tsx +74 -0
  54. package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useAsyncData.ts +1 -0
  55. package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useCachedAsyncData.ts +1 -0
  56. package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/hooks/useObjectSearchParams.ts +22 -0
  57. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/api/graphqlClient.ts +25 -0
  58. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/routes.tsx +21 -0
  59. package/lib/templates/project/{reactb2x → reactinternalapp}/_r_/webapp-data.md +5 -5
  60. package/lib/templates/project/{reactb2e → reactinternalapp}/_r_/webapp-ui.md +2 -2
  61. package/lib/templates/project/{reactb2x → reactinternalapp}/package-lock.json +2 -2
  62. package/lib/templates/project/{reactb2x → reactinternalapp}/package.json +1 -1
  63. package/lib/templates/project/{reactb2e/_r_/skills/using-salesforce-data → reactinternalapp/scripts}/graphql-search.sh +73 -21
  64. package/lib/templates/webapplication/reactbasic/package.json +3 -3
  65. package/lib/templates/webapplication/reactbasic/src/api/graphqlClient.ts +25 -0
  66. package/lib/utils/template-placeholders.js +8 -1
  67. package/lib/utils/template-placeholders.js.map +1 -1
  68. package/lib/utils/types.d.ts +1 -1
  69. package/lib/utils/webappTemplateUtils.d.ts +6 -4
  70. package/lib/utils/webappTemplateUtils.js +17 -11
  71. package/lib/utils/webappTemplateUtils.js.map +1 -1
  72. package/package.json +5 -5
  73. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/FilterPanel.tsx +0 -127
  74. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/PaginationControls.tsx +0 -151
  75. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateFilter.tsx +0 -165
  76. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SearchFilter.tsx +0 -40
  77. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/TextFilter.tsx +0 -77
  78. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/pages/TestAccPage.tsx +0 -19
  79. package/lib/templates/project/reactb2e/_p_/_m_/_w_/_a_/src/routes.tsx +0 -38
  80. package/lib/templates/project/reactb2e/_r_/skills/building-data-visualization/SKILL.md +0 -72
  81. package/lib/templates/project/reactb2e/_r_/skills/building-data-visualization/implementation/bar-line-chart.md +0 -316
  82. package/lib/templates/project/reactb2e/_r_/skills/building-data-visualization/implementation/dashboard-layout.md +0 -189
  83. package/lib/templates/project/reactb2e/_r_/skills/building-data-visualization/implementation/donut-chart.md +0 -181
  84. package/lib/templates/project/reactb2e/_r_/skills/building-data-visualization/implementation/stat-card.md +0 -150
  85. package/lib/templates/project/reactb2e/_r_/skills/building-react-components/SKILL.md +0 -96
  86. package/lib/templates/project/reactb2e/_r_/skills/building-react-components/implementation/component.md +0 -78
  87. package/lib/templates/project/reactb2e/_r_/skills/building-react-components/implementation/header-footer.md +0 -132
  88. package/lib/templates/project/reactb2e/_r_/skills/building-react-components/implementation/page.md +0 -93
  89. package/lib/templates/project/reactb2e/_r_/skills/configuring-csp-trusted-sites/SKILL.md +0 -90
  90. package/lib/templates/project/reactb2e/_r_/skills/configuring-csp-trusted-sites/implementation/metadata-format.md +0 -281
  91. package/lib/templates/project/reactb2e/_r_/skills/configuring-webapp-metadata/SKILL.md +0 -158
  92. package/lib/templates/project/reactb2e/_r_/skills/creating-webapp/SKILL.md +0 -140
  93. package/lib/templates/project/reactb2e/_r_/skills/deploying-to-salesforce/SKILL.md +0 -226
  94. package/lib/templates/project/reactb2e/_r_/skills/implementing-file-upload/SKILL.md +0 -396
  95. package/lib/templates/project/reactb2e/_r_/skills/installing-webapp-features/SKILL.md +0 -210
  96. package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/SKILL.md +0 -186
  97. package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/constraints.md +0 -134
  98. package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/examples.md +0 -132
  99. package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/style-tokens.md +0 -101
  100. package/lib/templates/project/reactb2e/_r_/skills/managing-agentforce-conversation-client/references/troubleshooting.md +0 -57
  101. package/lib/templates/project/reactb2e/_r_/skills/using-salesforce-data/SKILL.md +0 -363
  102. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/FilterPanel.tsx +0 -127
  103. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/PaginationControls.tsx +0 -151
  104. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/DateFilter.tsx +0 -165
  105. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/SearchFilter.tsx +0 -40
  106. package/lib/templates/project/reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/components/filters/TextFilter.tsx +0 -77
  107. package/lib/templates/project/reactb2x/_r_/skills/building-data-visualization/SKILL.md +0 -72
  108. package/lib/templates/project/reactb2x/_r_/skills/building-data-visualization/implementation/bar-line-chart.md +0 -316
  109. package/lib/templates/project/reactb2x/_r_/skills/building-data-visualization/implementation/dashboard-layout.md +0 -189
  110. package/lib/templates/project/reactb2x/_r_/skills/building-data-visualization/implementation/donut-chart.md +0 -181
  111. package/lib/templates/project/reactb2x/_r_/skills/building-data-visualization/implementation/stat-card.md +0 -150
  112. package/lib/templates/project/reactb2x/_r_/skills/building-react-components/SKILL.md +0 -96
  113. package/lib/templates/project/reactb2x/_r_/skills/building-react-components/implementation/component.md +0 -78
  114. package/lib/templates/project/reactb2x/_r_/skills/building-react-components/implementation/header-footer.md +0 -132
  115. package/lib/templates/project/reactb2x/_r_/skills/building-react-components/implementation/page.md +0 -93
  116. package/lib/templates/project/reactb2x/_r_/skills/configuring-csp-trusted-sites/SKILL.md +0 -90
  117. package/lib/templates/project/reactb2x/_r_/skills/configuring-csp-trusted-sites/implementation/metadata-format.md +0 -281
  118. package/lib/templates/project/reactb2x/_r_/skills/configuring-webapp-metadata/SKILL.md +0 -158
  119. package/lib/templates/project/reactb2x/_r_/skills/creating-webapp/SKILL.md +0 -140
  120. package/lib/templates/project/reactb2x/_r_/skills/deploying-to-salesforce/SKILL.md +0 -226
  121. package/lib/templates/project/reactb2x/_r_/skills/implementing-file-upload/SKILL.md +0 -396
  122. package/lib/templates/project/reactb2x/_r_/skills/installing-webapp-features/SKILL.md +0 -210
  123. package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/SKILL.md +0 -186
  124. package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/constraints.md +0 -134
  125. package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/examples.md +0 -132
  126. package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/style-tokens.md +0 -101
  127. package/lib/templates/project/reactb2x/_r_/skills/managing-agentforce-conversation-client/references/troubleshooting.md +0 -57
  128. package/lib/templates/project/reactb2x/_r_/skills/using-salesforce-data/SKILL.md +0 -363
  129. /package/lib/templates/project/{reactb2e → reactexternalapp}/.forceignore +0 -0
  130. /package/lib/templates/project/{reactb2e → reactexternalapp}/.husky/pre-commit +0 -0
  131. /package/lib/templates/project/{reactb2e → reactexternalapp}/.prettierignore +0 -0
  132. /package/lib/templates/project/{reactb2e → reactexternalapp}/.prettierrc +0 -0
  133. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/.forceignore +0 -0
  134. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/.graphqlrc.yml +0 -0
  135. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/.prettierignore +0 -0
  136. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/.prettierrc +0 -0
  137. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/CHANGELOG.md +0 -0
  138. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/codegen.yml +0 -0
  139. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/components.json +0 -0
  140. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/e2e/app.spec.ts +0 -0
  141. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/eslint.config.js +0 -0
  142. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/index.html +0 -0
  143. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/playwright.config.ts +0 -0
  144. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/scripts/get-graphql-schema.mjs +0 -0
  145. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/scripts/rewrite-e2e-assets.mjs +0 -0
  146. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/accountSearchService.ts +0 -0
  147. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/distinctAccountIndustries.graphql +0 -0
  148. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/distinctAccountTypes.graphql +0 -0
  149. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/getAccountDetail.graphql +0 -0
  150. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/searchAccounts.graphql +0 -0
  151. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/pages/AccountObjectDetailPage.tsx +0 -0
  152. /package/lib/templates/project/{reactb2e/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/pages/Home.tsx +0 -0
  153. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/api/objectSearchService.ts +0 -0
  154. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ActiveFilters.tsx +0 -0
  155. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ObjectBreadcrumb.tsx +0 -0
  156. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SearchBar.tsx +0 -0
  157. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SortControl.tsx +0 -0
  158. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/debounce.ts +0 -0
  159. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/fieldUtils.ts +0 -0
  160. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/filterUtils.ts +0 -0
  161. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/sortUtils.ts +0 -0
  162. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/api/userProfileApi.ts +0 -0
  163. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/authHelpers.ts +0 -0
  164. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/authenticationConfig.ts +0 -0
  165. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/context/AuthContext.tsx +0 -0
  166. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/footers/footer-link.tsx +0 -0
  167. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/forms/auth-form.tsx +0 -0
  168. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/forms/submit-button.tsx +0 -0
  169. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/hooks/form.tsx +0 -0
  170. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/hooks/useCountdownTimer.ts +0 -0
  171. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/hooks/useRetryWithBackoff.ts +0 -0
  172. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/layout/card-skeleton.tsx +0 -0
  173. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/layout/centered-page-layout.tsx +0 -0
  174. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/layouts/AuthAppLayout.tsx +0 -0
  175. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/layouts/authenticationRouteLayout.tsx +0 -0
  176. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/layouts/privateRouteLayout.tsx +0 -0
  177. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ChangePassword.tsx +0 -0
  178. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ForgotPassword.tsx +0 -0
  179. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Login.tsx +0 -0
  180. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Profile.tsx +0 -0
  181. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/Register.tsx +0 -0
  182. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/pages/ResetPassword.tsx +0 -0
  183. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/sessionTimeout/SessionTimeoutValidator.tsx +0 -0
  184. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/sessionTimeout/sessionTimeService.ts +0 -0
  185. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/sessionTimeout/sessionTimeoutConfig.ts +0 -0
  186. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/_f_/authentication/utils/helpers.ts +0 -0
  187. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/api/graphql-operations-types.ts +0 -0
  188. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/app.tsx +0 -0
  189. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/appLayout.tsx +0 -0
  190. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/book.svg +0 -0
  191. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/copy.svg +0 -0
  192. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/rocket.svg +0 -0
  193. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/star.svg +0 -0
  194. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/images/codey-1.png +0 -0
  195. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/images/codey-2.png +0 -0
  196. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/images/codey-3.png +0 -0
  197. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/assets/images/vibe-codey.svg +0 -0
  198. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/alerts/status-alert.tsx +0 -0
  199. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/layouts/card-layout.tsx +0 -0
  200. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/alert.tsx +0 -0
  201. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/badge.tsx +0 -0
  202. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/breadcrumb.tsx +0 -0
  203. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/button.tsx +0 -0
  204. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/calendar.tsx +0 -0
  205. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/card.tsx +0 -0
  206. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/checkbox.tsx +0 -0
  207. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/collapsible.tsx +0 -0
  208. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/datePicker.tsx +0 -0
  209. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/dialog.tsx +0 -0
  210. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/field.tsx +0 -0
  211. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/index.ts +0 -0
  212. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/input.tsx +0 -0
  213. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/label.tsx +0 -0
  214. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/pagination.tsx +0 -0
  215. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/popover.tsx +0 -0
  216. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/select.tsx +0 -0
  217. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/separator.tsx +0 -0
  218. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/skeleton.tsx +0 -0
  219. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/sonner.tsx +0 -0
  220. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/spinner.tsx +0 -0
  221. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/table.tsx +0 -0
  222. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/components/ui/tabs.tsx +0 -0
  223. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/lib/utils.ts +0 -0
  224. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/navigationMenu.tsx +0 -0
  225. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/pages/Home.tsx +0 -0
  226. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/pages/NotFound.tsx +0 -0
  227. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/router-utils.tsx +0 -0
  228. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/_w_/_a_/src/routes.tsx +0 -0
  229. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/src/styles/global.css +0 -0
  230. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/tsconfig.json +0 -0
  231. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/tsconfig.node.json +0 -0
  232. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/vite-env.d.ts +0 -0
  233. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/vite.config.ts +0 -0
  234. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/vitest-env.d.ts +0 -0
  235. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/vitest.config.ts +0 -0
  236. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/vitest.setup.ts +0 -0
  237. /package/lib/templates/project/{reactb2e → reactexternalapp}/_p_/_m_/_w_/_a_/webapplication.json +0 -0
  238. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppAuthUtils.cls +0 -0
  239. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppAuthUtils.cls-meta.xml +0 -0
  240. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppChangePassword.cls +0 -0
  241. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppChangePassword.cls-meta.xml +0 -0
  242. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppForgotPassword.cls +0 -0
  243. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppForgotPassword.cls-meta.xml +0 -0
  244. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppLogin.cls +0 -0
  245. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppLogin.cls-meta.xml +0 -0
  246. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppRegistration.cls +0 -0
  247. /package/lib/templates/project/{reactb2x → reactexternalapp}/_p_/_m_/classes/WebAppRegistration.cls-meta.xml +0 -0
  248. /package/lib/templates/project/{reactb2e → reactexternalapp}/config/project-scratch-def.json +0 -0
  249. /package/lib/templates/project/{reactb2e → reactexternalapp}/eslint.config.js +0 -0
  250. /package/lib/templates/project/{reactb2e → reactexternalapp}/jest.config.js +0 -0
  251. /package/lib/templates/project/{reactb2e → reactexternalapp}/scripts/apex/hello.apex +0 -0
  252. /package/lib/templates/project/{reactb2e → reactexternalapp}/scripts/prepare-import-unique-fields.js +0 -0
  253. /package/lib/templates/project/{reactb2e → reactexternalapp}/scripts/setup-cli.mjs +0 -0
  254. /package/lib/templates/project/{reactb2e → reactexternalapp}/scripts/sf-project-setup.mjs +0 -0
  255. /package/lib/templates/project/{reactb2e → reactexternalapp}/scripts/soql/account.soql +0 -0
  256. /package/lib/templates/project/{reactb2e → reactexternalapp}/sfdx-project.json +0 -0
  257. /package/lib/templates/project/{reactb2x → reactinternalapp}/.forceignore +0 -0
  258. /package/lib/templates/project/{reactb2x → reactinternalapp}/.husky/pre-commit +0 -0
  259. /package/lib/templates/project/{reactb2x → reactinternalapp}/.prettierignore +0 -0
  260. /package/lib/templates/project/{reactb2x → reactinternalapp}/.prettierrc +0 -0
  261. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/.forceignore +0 -0
  262. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/.graphqlrc.yml +0 -0
  263. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/.prettierignore +0 -0
  264. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/.prettierrc +0 -0
  265. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/CHANGELOG.md +0 -0
  266. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/codegen.yml +0 -0
  267. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/components.json +0 -0
  268. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/e2e/app.spec.ts +0 -0
  269. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/eslint.config.js +0 -0
  270. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/index.html +0 -0
  271. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/playwright.config.ts +0 -0
  272. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/scripts/get-graphql-schema.mjs +0 -0
  273. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/scripts/rewrite-e2e-assets.mjs +0 -0
  274. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/accountSearchService.ts +0 -0
  275. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/distinctAccountIndustries.graphql +0 -0
  276. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/distinctAccountTypes.graphql +0 -0
  277. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/getAccountDetail.graphql +0 -0
  278. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/api/query/searchAccounts.graphql +0 -0
  279. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/pages/AccountObjectDetailPage.tsx +0 -0
  280. /package/lib/templates/project/{reactb2x/_p_/_m_/_w_/_a_/src/_f_/_os_/__examples__ → reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/_os_/_ex_}/pages/Home.tsx +0 -0
  281. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/api/objectSearchService.ts +0 -0
  282. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ActiveFilters.tsx +0 -0
  283. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/ObjectBreadcrumb.tsx +0 -0
  284. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SearchBar.tsx +0 -0
  285. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/components/SortControl.tsx +0 -0
  286. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/debounce.ts +0 -0
  287. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/fieldUtils.ts +0 -0
  288. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/filterUtils.ts +0 -0
  289. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/_f_/_os_/utils/sortUtils.ts +0 -0
  290. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/api/graphql-operations-types.ts +0 -0
  291. /package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/app.tsx +0 -0
  292. /package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/appLayout.tsx +0 -0
  293. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/book.svg +0 -0
  294. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/copy.svg +0 -0
  295. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/rocket.svg +0 -0
  296. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/icons/star.svg +0 -0
  297. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/images/codey-1.png +0 -0
  298. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/images/codey-2.png +0 -0
  299. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/images/codey-3.png +0 -0
  300. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/assets/images/vibe-codey.svg +0 -0
  301. /package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/AgentforceConversationClient.tsx +0 -0
  302. /package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/__inherit_AgentforceConversationClient.tsx +0 -0
  303. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/alerts/status-alert.tsx +0 -0
  304. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/layouts/card-layout.tsx +0 -0
  305. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/alert.tsx +0 -0
  306. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/badge.tsx +0 -0
  307. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/breadcrumb.tsx +0 -0
  308. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/button.tsx +0 -0
  309. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/calendar.tsx +0 -0
  310. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/card.tsx +0 -0
  311. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/checkbox.tsx +0 -0
  312. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/collapsible.tsx +0 -0
  313. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/datePicker.tsx +0 -0
  314. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/dialog.tsx +0 -0
  315. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/field.tsx +0 -0
  316. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/index.ts +0 -0
  317. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/input.tsx +0 -0
  318. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/label.tsx +0 -0
  319. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/pagination.tsx +0 -0
  320. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/popover.tsx +0 -0
  321. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/select.tsx +0 -0
  322. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/separator.tsx +0 -0
  323. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/skeleton.tsx +0 -0
  324. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/sonner.tsx +0 -0
  325. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/spinner.tsx +0 -0
  326. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/table.tsx +0 -0
  327. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/components/ui/tabs.tsx +0 -0
  328. /package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/index.ts +0 -0
  329. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/lib/utils.ts +0 -0
  330. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/navigationMenu.tsx +0 -0
  331. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/pages/Home.tsx +0 -0
  332. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/pages/NotFound.tsx +0 -0
  333. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/router-utils.tsx +0 -0
  334. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/src/styles/global.css +0 -0
  335. /package/lib/templates/project/{reactb2e → reactinternalapp}/_p_/_m_/_w_/_a_/src/types/conversation.ts +0 -0
  336. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/tsconfig.json +0 -0
  337. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/tsconfig.node.json +0 -0
  338. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/vite-env.d.ts +0 -0
  339. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/vite.config.ts +0 -0
  340. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/vitest-env.d.ts +0 -0
  341. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/vitest.config.ts +0 -0
  342. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/vitest.setup.ts +0 -0
  343. /package/lib/templates/project/{reactb2x → reactinternalapp}/_p_/_m_/_w_/_a_/webapplication.json +0 -0
  344. /package/lib/templates/project/{reactb2x → reactinternalapp}/config/project-scratch-def.json +0 -0
  345. /package/lib/templates/project/{reactb2x → reactinternalapp}/eslint.config.js +0 -0
  346. /package/lib/templates/project/{reactb2x → reactinternalapp}/jest.config.js +0 -0
  347. /package/lib/templates/project/{reactb2x → reactinternalapp}/scripts/apex/hello.apex +0 -0
  348. /package/lib/templates/project/{reactb2x → reactinternalapp}/scripts/prepare-import-unique-fields.js +0 -0
  349. /package/lib/templates/project/{reactb2x → reactinternalapp}/scripts/setup-cli.mjs +0 -0
  350. /package/lib/templates/project/{reactb2x → reactinternalapp}/scripts/sf-project-setup.mjs +0 -0
  351. /package/lib/templates/project/{reactb2x → reactinternalapp}/scripts/soql/account.soql +0 -0
  352. /package/lib/templates/project/{reactb2x → reactinternalapp}/sfdx-project.json +0 -0
@@ -0,0 +1,109 @@
1
+ import {
2
+ Pagination,
3
+ PaginationContent,
4
+ PaginationItem,
5
+ PaginationPrevious,
6
+ PaginationNext,
7
+ } from "../../../components/ui/pagination";
8
+ import {
9
+ Select,
10
+ SelectContent,
11
+ SelectItem,
12
+ SelectTrigger,
13
+ SelectValue,
14
+ } from "../../../components/ui/select";
15
+ import { Label } from "../../../components/ui/label";
16
+
17
+ interface PaginationControlsProps {
18
+ pageIndex: number;
19
+ hasNextPage: boolean;
20
+ hasPreviousPage: boolean;
21
+ pageSize: number;
22
+ pageSizeOptions: readonly number[];
23
+ onNextPage: () => void;
24
+ onPreviousPage: () => void;
25
+ onPageSizeChange: (newPageSize: number) => void;
26
+ disabled?: boolean;
27
+ }
28
+
29
+ export default function PaginationControls({
30
+ pageIndex,
31
+ hasNextPage,
32
+ hasPreviousPage,
33
+ pageSize,
34
+ pageSizeOptions,
35
+ onNextPage,
36
+ onPreviousPage,
37
+ onPageSizeChange,
38
+ disabled = false,
39
+ }: PaginationControlsProps) {
40
+ const handlePageSizeChange = (newValue: string) => {
41
+ const newSize = parseInt(newValue, 10);
42
+ if (!isNaN(newSize) && newSize !== pageSize) {
43
+ onPageSizeChange(newSize);
44
+ }
45
+ };
46
+ const currentPage = pageIndex + 1;
47
+ const prevDisabled = disabled || !hasPreviousPage;
48
+ const nextDisabled = disabled || !hasNextPage;
49
+
50
+ return (
51
+ <div className="w-full grid grid-cols-1 sm:grid-cols-2 items-center justify-center gap-4 py-2">
52
+ <div
53
+ className="flex justify-center sm:justify-start items-center gap-2 shrink-0 row-2 sm:row-1"
54
+ role="group"
55
+ aria-label="Page size selector"
56
+ >
57
+ <Label htmlFor="page-size-select" className="text-sm font-normal whitespace-nowrap">
58
+ Results per page:
59
+ </Label>
60
+ <Select
61
+ value={pageSize.toString()}
62
+ onValueChange={handlePageSizeChange}
63
+ disabled={disabled}
64
+ >
65
+ <SelectTrigger
66
+ id="page-size-select"
67
+ className="w-16"
68
+ aria-label="Select number of results per page"
69
+ >
70
+ <SelectValue />
71
+ </SelectTrigger>
72
+ <SelectContent>
73
+ {pageSizeOptions.map((size) => (
74
+ <SelectItem key={size} value={size.toString()}>
75
+ {size}
76
+ </SelectItem>
77
+ ))}
78
+ </SelectContent>
79
+ </Select>
80
+ </div>
81
+ <Pagination className="w-full mx-0 sm:justify-end">
82
+ <PaginationContent>
83
+ <PaginationItem>
84
+ <PaginationPrevious
85
+ onClick={prevDisabled ? undefined : onPreviousPage}
86
+ aria-disabled={prevDisabled}
87
+ className={prevDisabled ? "pointer-events-none opacity-50" : "cursor-pointer"}
88
+ />
89
+ </PaginationItem>
90
+ <PaginationItem>
91
+ <span
92
+ className="min-w-16 text-center text-sm text-muted-foreground px-2"
93
+ aria-current="page"
94
+ >
95
+ Page {currentPage}
96
+ </span>
97
+ </PaginationItem>
98
+ <PaginationItem>
99
+ <PaginationNext
100
+ onClick={nextDisabled ? undefined : onNextPage}
101
+ aria-disabled={nextDisabled}
102
+ className={nextDisabled ? "pointer-events-none opacity-50" : "cursor-pointer"}
103
+ />
104
+ </PaginationItem>
105
+ </PaginationContent>
106
+ </Pagination>
107
+ </div>
108
+ );
109
+ }
@@ -7,52 +7,31 @@ import {
7
7
  } from "../../../../components/ui/select";
8
8
  import { Label } from "../../../../components/ui/label";
9
9
  import { cn } from "../../../../lib/utils";
10
- import type { FilterFieldConfig, ActiveFilterValue } from "../../utils/filterUtils";
10
+ import { useFilterField } from "../FilterContext";
11
+ import type { ActiveFilterValue } from "../../utils/filterUtils";
11
12
 
12
13
  const ALL_VALUE = "__all__";
13
14
 
14
15
  interface BooleanFilterProps extends Omit<React.ComponentProps<"div">, "onChange"> {
15
- config: FilterFieldConfig;
16
- value: ActiveFilterValue | undefined;
17
- onChange: (value: ActiveFilterValue | undefined) => void;
18
- labelProps?: React.ComponentProps<typeof Label>;
19
- controlProps?: Omit<
20
- React.ComponentProps<typeof BooleanFilterSelect>,
21
- "config" | "value" | "onChange"
22
- >;
23
- helpTextProps?: React.ComponentProps<"p">;
16
+ field: string;
17
+ label: string;
18
+ helpText?: string;
24
19
  }
25
20
 
26
- export function BooleanFilter({
27
- config,
28
- value,
29
- onChange,
30
- className,
31
- labelProps,
32
- controlProps,
33
- helpTextProps,
34
- ...props
35
- }: BooleanFilterProps) {
21
+ export function BooleanFilter({ field, label, helpText, className, ...props }: BooleanFilterProps) {
22
+ const { value, onChange } = useFilterField(field);
36
23
  return (
37
24
  <div className={cn("space-y-1.5", className)} {...props}>
38
- <Label htmlFor={`filter-${config.field}`} {...labelProps}>
39
- {labelProps?.children ?? config.label}
40
- </Label>
41
- <BooleanFilterSelect config={config} value={value} onChange={onChange} {...controlProps} />
42
- {config.helpText && (
43
- <p
44
- {...helpTextProps}
45
- className={cn("text-xs text-muted-foreground", helpTextProps?.className)}
46
- >
47
- {helpTextProps?.children ?? config.helpText}
48
- </p>
49
- )}
25
+ <Label htmlFor={`filter-${field}`}>{label}</Label>
26
+ <BooleanFilterSelect field={field} label={label} value={value} onChange={onChange} />
27
+ {helpText && <p className="text-xs text-muted-foreground">{helpText}</p>}
50
28
  </div>
51
29
  );
52
30
  }
53
31
 
54
32
  interface BooleanFilterSelectProps {
55
- config: FilterFieldConfig;
33
+ field: string;
34
+ label: string;
56
35
  value: ActiveFilterValue | undefined;
57
36
  onChange: (value: ActiveFilterValue | undefined) => void;
58
37
  triggerProps?: React.ComponentProps<typeof SelectTrigger>;
@@ -60,7 +39,8 @@ interface BooleanFilterSelectProps {
60
39
  }
61
40
 
62
41
  export function BooleanFilterSelect({
63
- config,
42
+ field,
43
+ label,
64
44
  value,
65
45
  onChange,
66
46
  triggerProps,
@@ -73,12 +53,12 @@ export function BooleanFilterSelect({
73
53
  if (v === ALL_VALUE) {
74
54
  onChange(undefined);
75
55
  } else {
76
- onChange({ field: config.field, label: config.label, type: "boolean", value: v });
56
+ onChange({ field, label, type: "boolean", value: v });
77
57
  }
78
58
  }}
79
59
  >
80
60
  <SelectTrigger
81
- id={`filter-${config.field}`}
61
+ id={`filter-${field}`}
82
62
  {...triggerProps}
83
63
  className={cn("w-full", triggerProps?.className)}
84
64
  >
@@ -0,0 +1,121 @@
1
+ import { useState } from "react";
2
+ import { parseISO } from "date-fns";
3
+ import { Label } from "../../../../components/ui/label";
4
+ import {
5
+ DatePicker,
6
+ DatePickerTrigger,
7
+ DatePickerContent,
8
+ DatePickerCalendar,
9
+ } from "../../../../components/ui/datePicker";
10
+ import { cn } from "../../../../lib/utils";
11
+ import { useFilterField } from "../FilterContext";
12
+ import {
13
+ Select,
14
+ SelectContent,
15
+ SelectItem,
16
+ SelectTrigger,
17
+ SelectValue,
18
+ } from "../../../../components/ui/select";
19
+
20
+ type DateOperator = "gt" | "lt";
21
+
22
+ const OPERATOR_OPTIONS: { value: DateOperator; label: string }[] = [
23
+ { value: "gt", label: "After" },
24
+ { value: "lt", label: "Before" },
25
+ ];
26
+
27
+ function operatorToField(op: DateOperator): "min" | "max" {
28
+ return op === "gt" ? "min" : "max";
29
+ }
30
+
31
+ interface DateFilterProps extends Omit<React.ComponentProps<"div">, "onChange"> {
32
+ field: string;
33
+ label: string;
34
+ helpText?: string;
35
+ }
36
+
37
+ export function DateFilter({ field, label, helpText, className, ...props }: DateFilterProps) {
38
+ const { value, onChange } = useFilterField(field);
39
+
40
+ const initialOp: DateOperator = value?.min ? "gt" : "lt";
41
+ const [operator, setOperator] = useState<DateOperator>(initialOp);
42
+
43
+ const currentDate = toDate(value?.min ?? value?.max);
44
+
45
+ function handleOperatorChange(op: DateOperator) {
46
+ setOperator(op);
47
+ if (currentDate) {
48
+ emitChange(op, currentDate);
49
+ }
50
+ }
51
+
52
+ function handleDateChange(date: Date | undefined) {
53
+ if (!date) {
54
+ onChange(undefined);
55
+ } else {
56
+ emitChange(operator, date);
57
+ }
58
+ }
59
+
60
+ function emitChange(op: DateOperator, date: Date) {
61
+ const dateStr = toDateString(date);
62
+ const f = operatorToField(op);
63
+ onChange({
64
+ field,
65
+ label,
66
+ type: "date",
67
+ value: op,
68
+ min: f === "min" ? dateStr : undefined,
69
+ max: f === "max" ? dateStr : undefined,
70
+ });
71
+ }
72
+
73
+ return (
74
+ <div className={cn("space-y-1.5", className)} {...props}>
75
+ <Label>{label}</Label>
76
+ <div className="flex gap-2">
77
+ <Select value={operator} onValueChange={(v) => handleOperatorChange(v as DateOperator)}>
78
+ <SelectTrigger className="w-full flex-1">
79
+ <SelectValue />
80
+ </SelectTrigger>
81
+ <SelectContent>
82
+ {OPERATOR_OPTIONS.map((opt) => (
83
+ <SelectItem key={opt.value} value={opt.value}>
84
+ {opt.label}
85
+ </SelectItem>
86
+ ))}
87
+ </SelectContent>
88
+ </Select>
89
+ <DatePicker>
90
+ <DatePickerTrigger
91
+ className="w-full flex-2"
92
+ date={currentDate}
93
+ dateFormat="MMM do, yyyy"
94
+ placeholder="Pick a date"
95
+ aria-label={label}
96
+ />
97
+ <DatePickerContent>
98
+ <DatePickerCalendar
99
+ mode="single"
100
+ captionLayout="dropdown"
101
+ selected={currentDate}
102
+ onSelect={handleDateChange}
103
+ />
104
+ </DatePickerContent>
105
+ </DatePicker>
106
+ </div>
107
+ {helpText && <p className="text-xs text-muted-foreground">{helpText}</p>}
108
+ </div>
109
+ );
110
+ }
111
+
112
+ export function toDate(value: string | undefined): Date | undefined {
113
+ if (!value) return undefined;
114
+ const parsed = parseISO(value);
115
+ return isNaN(parsed.getTime()) ? undefined : parsed;
116
+ }
117
+
118
+ export function toDateString(date: Date | undefined): string {
119
+ if (!date) return "";
120
+ return date.toISOString().split("T")[0];
121
+ }
@@ -7,26 +7,24 @@ import {
7
7
  DatePickerCalendar,
8
8
  } from "../../../../components/ui/datePicker";
9
9
  import { cn } from "../../../../lib/utils";
10
- import type { FilterFieldConfig, ActiveFilterValue } from "../../utils/filterUtils";
10
+ import { useFilterField } from "../FilterContext";
11
11
  import { toDate, toDateString } from "./DateFilter";
12
12
 
13
13
  interface DateRangeFilterProps extends Omit<React.ComponentProps<"div">, "onChange"> {
14
- config: FilterFieldConfig;
15
- value: ActiveFilterValue | undefined;
16
- onChange: (value: ActiveFilterValue | undefined) => void;
17
- labelProps?: React.ComponentProps<typeof Label>;
18
- helpTextProps?: React.ComponentProps<"p">;
14
+ field: string;
15
+ label: string;
16
+ helpText?: string;
19
17
  }
20
18
 
21
19
  export function DateRangeFilter({
22
- config,
23
- value,
24
- onChange,
20
+ field,
21
+ label,
22
+ helpText,
25
23
  className,
26
- labelProps,
27
- helpTextProps,
28
24
  ...props
29
25
  }: DateRangeFilterProps) {
26
+ const { value, onChange } = useFilterField(field);
27
+
30
28
  const dateRange: DateRange | undefined =
31
29
  value?.min || value?.max ? { from: toDate(value?.min), to: toDate(value?.max) } : undefined;
32
30
 
@@ -35,8 +33,8 @@ export function DateRangeFilter({
35
33
  onChange(undefined);
36
34
  } else {
37
35
  onChange({
38
- field: config.field,
39
- label: config.label,
36
+ field,
37
+ label,
40
38
  type: "daterange",
41
39
  min: toDateString(range?.from),
42
40
  max: toDateString(range?.to),
@@ -46,13 +44,13 @@ export function DateRangeFilter({
46
44
 
47
45
  return (
48
46
  <div className={cn("space-y-1.5", className)} {...props}>
49
- <Label {...labelProps}>{labelProps?.children ?? config.label}</Label>
47
+ <Label>{label}</Label>
50
48
  <DatePicker>
51
49
  <DatePickerRangeTrigger
52
50
  className="w-full"
53
51
  dateRange={dateRange}
54
52
  placeholder="Pick a date range"
55
- aria-label={config.label}
53
+ aria-label={label}
56
54
  />
57
55
  <DatePickerContent align="start">
58
56
  <DatePickerCalendar
@@ -65,14 +63,7 @@ export function DateRangeFilter({
65
63
  />
66
64
  </DatePickerContent>
67
65
  </DatePicker>
68
- {config.helpText && (
69
- <p
70
- {...helpTextProps}
71
- className={cn("text-xs text-muted-foreground", helpTextProps?.className)}
72
- >
73
- {helpTextProps?.children ?? config.helpText}
74
- </p>
75
- )}
66
+ {helpText && <p className="text-xs text-muted-foreground">{helpText}</p>}
76
67
  </div>
77
68
  );
78
69
  }
@@ -8,32 +8,31 @@ import { Label } from "../../../../components/ui/label";
8
8
  import { Button } from "../../../../components/ui/button";
9
9
  import { cn } from "../../../../lib/utils";
10
10
  import { ChevronDown } from "lucide-react";
11
- import type { FilterFieldConfig, ActiveFilterValue } from "../../utils/filterUtils";
11
+ import { useFilterField } from "../FilterContext";
12
12
 
13
13
  interface MultiSelectFilterProps extends Omit<React.ComponentProps<"div">, "onChange"> {
14
- config: FilterFieldConfig;
15
- value: ActiveFilterValue | undefined;
16
- onChange: (value: ActiveFilterValue | undefined) => void;
17
- labelProps?: React.ComponentProps<typeof Label>;
18
- helpTextProps?: React.ComponentProps<"p">;
14
+ field: string;
15
+ label: string;
16
+ options: Array<{ value: string; label: string }>;
17
+ helpText?: string;
19
18
  }
20
19
 
21
20
  export function MultiSelectFilter({
22
- config,
23
- value,
24
- onChange,
21
+ field,
22
+ label,
23
+ options,
24
+ helpText,
25
25
  className,
26
- labelProps,
27
- helpTextProps,
28
26
  ...props
29
27
  }: MultiSelectFilterProps) {
28
+ const { value, onChange } = useFilterField(field);
30
29
  const selected = value?.value ? value.value.split(",") : [];
31
30
 
32
31
  const triggerLabel =
33
32
  selected.length === 0
34
- ? `Select ${config.label.toLowerCase()}`
33
+ ? `Select ${label.toLowerCase()}`
35
34
  : selected.length === 1
36
- ? (config.options?.find((o) => o.value === selected[0])?.label ?? selected[0])
35
+ ? (options.find((o) => o.value === selected[0])?.label ?? selected[0])
37
36
  : `${selected.length} selected`;
38
37
 
39
38
  function handleToggle(optionValue: string) {
@@ -45,8 +44,8 @@ export function MultiSelectFilter({
45
44
  onChange(undefined);
46
45
  } else {
47
46
  onChange({
48
- field: config.field,
49
- label: config.label,
47
+ field,
48
+ label,
50
49
  type: "multipicklist",
51
50
  value: next.join(","),
52
51
  });
@@ -55,7 +54,7 @@ export function MultiSelectFilter({
55
54
 
56
55
  return (
57
56
  <div className={cn("space-y-1.5", className)} {...props}>
58
- <Label {...labelProps}>{labelProps?.children ?? config.label}</Label>
57
+ <Label>{label}</Label>
59
58
  <Popover>
60
59
  <PopoverTrigger asChild>
61
60
  <Button
@@ -72,8 +71,8 @@ export function MultiSelectFilter({
72
71
  </PopoverTrigger>
73
72
  <PopoverContent className="p-2" align="start">
74
73
  <div className="max-h-48 overflow-y-auto space-y-1">
75
- {config.options?.map((opt) => {
76
- const id = `filter-${config.field}-${opt.value}`;
74
+ {options.map((opt) => {
75
+ const id = `filter-${field}-${opt.value}`;
77
76
  return (
78
77
  <div
79
78
  key={opt.value}
@@ -93,14 +92,7 @@ export function MultiSelectFilter({
93
92
  </div>
94
93
  </PopoverContent>
95
94
  </Popover>
96
- {config.helpText && (
97
- <p
98
- {...helpTextProps}
99
- className={cn("text-xs text-muted-foreground", helpTextProps?.className)}
100
- >
101
- {helpTextProps?.children ?? config.helpText}
102
- </p>
103
- )}
95
+ {helpText && <p className="text-xs text-muted-foreground">{helpText}</p>}
104
96
  </div>
105
97
  );
106
98
  }
@@ -1,53 +1,35 @@
1
1
  import { Input } from "../../../../components/ui/input";
2
2
  import { Label } from "../../../../components/ui/label";
3
3
  import { cn } from "../../../../lib/utils";
4
- import type { FilterFieldConfig, ActiveFilterValue } from "../../utils/filterUtils";
4
+ import { useFilterField } from "../FilterContext";
5
+ import type { ActiveFilterValue } from "../../utils/filterUtils";
5
6
 
6
7
  interface NumericRangeFilterProps extends Omit<React.ComponentProps<"div">, "onChange"> {
7
- config: FilterFieldConfig;
8
- value: ActiveFilterValue | undefined;
9
- onChange: (value: ActiveFilterValue | undefined) => void;
10
- labelProps?: React.ComponentProps<typeof Label>;
11
- controlProps?: Omit<
12
- React.ComponentProps<typeof NumericRangeFilterInputs>,
13
- "config" | "value" | "onChange"
14
- >;
15
- helpTextProps?: React.ComponentProps<"p">;
8
+ field: string;
9
+ label: string;
10
+ helpText?: string;
16
11
  }
17
12
 
18
13
  export function NumericRangeFilter({
19
- config,
20
- value,
21
- onChange,
14
+ field,
15
+ label,
16
+ helpText,
22
17
  className,
23
- labelProps,
24
- controlProps,
25
- helpTextProps,
26
18
  ...props
27
19
  }: NumericRangeFilterProps) {
20
+ const { value, onChange } = useFilterField(field);
28
21
  return (
29
22
  <div className={cn("space-y-1.5", className)} {...props}>
30
- <Label {...labelProps}>{labelProps?.children ?? config.label}</Label>
31
- <NumericRangeFilterInputs
32
- config={config}
33
- value={value}
34
- onChange={onChange}
35
- {...controlProps}
36
- />
37
- {config.helpText && (
38
- <p
39
- {...helpTextProps}
40
- className={cn("text-xs text-muted-foreground", helpTextProps?.className)}
41
- >
42
- {helpTextProps?.children ?? config.helpText}
43
- </p>
44
- )}
23
+ <Label>{label}</Label>
24
+ <NumericRangeFilterInputs field={field} label={label} value={value} onChange={onChange} />
25
+ {helpText && <p className="text-xs text-muted-foreground">{helpText}</p>}
45
26
  </div>
46
27
  );
47
28
  }
48
29
 
49
30
  interface NumericRangeFilterInputsProps extends Omit<React.ComponentProps<"div">, "onChange"> {
50
- config: FilterFieldConfig;
31
+ field: string;
32
+ label: string;
51
33
  value: ActiveFilterValue | undefined;
52
34
  onChange: (value: ActiveFilterValue | undefined) => void;
53
35
  minInputProps?: React.ComponentProps<typeof Input>;
@@ -55,7 +37,8 @@ interface NumericRangeFilterInputsProps extends Omit<React.ComponentProps<"div">
55
37
  }
56
38
 
57
39
  export function NumericRangeFilterInputs({
58
- config,
40
+ field,
41
+ label,
59
42
  value,
60
43
  onChange,
61
44
  className,
@@ -63,14 +46,14 @@ export function NumericRangeFilterInputs({
63
46
  maxInputProps,
64
47
  ...props
65
48
  }: NumericRangeFilterInputsProps) {
66
- const handleChange = (field: "min" | "max", v: string) => {
49
+ const handleChange = (bound: "min" | "max", v: string) => {
67
50
  const next = {
68
- field: config.field,
69
- label: config.label,
51
+ field,
52
+ label,
70
53
  type: "numeric" as const,
71
54
  min: value?.min ?? "",
72
55
  max: value?.max ?? "",
73
- [field]: v,
56
+ [bound]: v,
74
57
  };
75
58
  if (!next.min && !next.max) {
76
59
  onChange(undefined);
@@ -86,7 +69,7 @@ export function NumericRangeFilterInputs({
86
69
  placeholder="Min"
87
70
  value={value?.min ?? ""}
88
71
  onChange={(e) => handleChange("min", e.target.value)}
89
- aria-label={`${config.label} minimum`}
72
+ aria-label={`${label} minimum`}
90
73
  {...minInputProps}
91
74
  />
92
75
  <Input
@@ -94,7 +77,7 @@ export function NumericRangeFilterInputs({
94
77
  placeholder="Max"
95
78
  value={value?.max ?? ""}
96
79
  onChange={(e) => handleChange("max", e.target.value)}
97
- aria-label={`${config.label} maximum`}
80
+ aria-label={`${label} maximum`}
98
81
  {...maxInputProps}
99
82
  />
100
83
  </div>
@@ -0,0 +1,37 @@
1
+ import { Label } from "../../../../components/ui/label";
2
+ import { cn } from "../../../../lib/utils";
3
+ import { SearchBar } from "../SearchBar";
4
+ import { useFilterField } from "../FilterContext";
5
+
6
+ interface SearchFilterProps extends Omit<React.ComponentProps<"div">, "onChange"> {
7
+ field: string;
8
+ label: string;
9
+ placeholder?: string;
10
+ }
11
+
12
+ export function SearchFilter({
13
+ field,
14
+ label,
15
+ placeholder,
16
+ className,
17
+ ...props
18
+ }: SearchFilterProps) {
19
+ const { value, onChange } = useFilterField(field);
20
+ return (
21
+ <div className={cn("space-y-1.5", className)} {...props}>
22
+ <Label htmlFor={`filter-${field}`}>{label}</Label>
23
+ <SearchBar
24
+ value={value?.value ?? ""}
25
+ handleChange={(v) => {
26
+ if (v) {
27
+ onChange({ field, label, type: "search", value: v });
28
+ } else {
29
+ onChange(undefined);
30
+ }
31
+ }}
32
+ placeholder={placeholder}
33
+ inputProps={{ id: `filter-${field}` }}
34
+ />
35
+ </div>
36
+ );
37
+ }