@salesforce/templates 66.11.1 → 66.12.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 (378) hide show
  1. package/lib/generators/projectGenerator.js +4 -1
  2. package/lib/generators/projectGenerator.js.map +1 -1
  3. package/lib/templates/project/angularextapp/.forceignore +15 -0
  4. package/lib/templates/project/angularextapp/.husky/pre-commit +4 -0
  5. package/lib/templates/project/angularextapp/.prettierignore +11 -0
  6. package/lib/templates/project/angularextapp/.prettierrc +17 -0
  7. package/lib/templates/project/angularextapp/CHANGELOG.md +4086 -0
  8. package/lib/templates/project/angularextapp/README.md +77 -0
  9. package/lib/templates/project/angularextapp/_p_/_m_/_d_/_s_/angularextapp1/angularextapp1.digitalExperience-meta.xml +11 -0
  10. package/lib/templates/project/angularextapp/_p_/_m_/_d_/_s_/angularextapp1/sfdc_cms__site/angularextapp1/_meta.json +5 -0
  11. package/lib/templates/project/angularextapp/_p_/_m_/_d_/_s_/angularextapp1/sfdc_cms__site/angularextapp1/content.json +10 -0
  12. package/lib/templates/project/angularextapp/_p_/_m_/_dc_/angularextapp1.digitalExperienceConfig-meta.xml +8 -0
  13. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/.forceignore +15 -0
  14. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/.postcssrc.json +5 -0
  15. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/.prettierignore +8 -0
  16. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/.prettierrc +12 -0
  17. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/CHANGELOG.md +4 -0
  18. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/README.md +85 -0
  19. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/angular.json +101 -0
  20. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/angularextapp.uibundle-meta.xml +8 -0
  21. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/e2e/app.spec.ts +15 -0
  22. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/esbuild/api-version.mjs +17 -0
  23. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/eslint.config.js +60 -0
  24. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/middleware/html.mjs +3 -0
  25. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/middleware/proxy.mjs +12 -0
  26. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package-lock.json +13600 -0
  27. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package.json +56 -0
  28. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/playwright.config.ts +25 -0
  29. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/public/favicon.ico +0 -0
  30. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/scripts/rewrite-e2e-assets.mjs +30 -0
  31. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/account/account-search.service.ts +196 -0
  32. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/account/distinctAccountIndustries.ts +26 -0
  33. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/account/distinctAccountTypes.ts +26 -0
  34. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/account/getAccountDetail.ts +128 -0
  35. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/account/searchAccounts.ts +58 -0
  36. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/data-client.service.spec.ts +184 -0
  37. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/data-client.service.ts +74 -0
  38. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/api/user-profile.service.ts +126 -0
  39. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.config.ts +22 -0
  40. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.html +1 -0
  41. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.routes.ts +77 -0
  42. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.spec.ts +18 -0
  43. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.ts +15 -0
  44. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/layout/app-layout/app-layout.html +53 -0
  45. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/layout/app-layout/app-layout.spec.ts +89 -0
  46. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/layout/app-layout/app-layout.ts +81 -0
  47. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/_field-size.scss +42 -0
  48. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.html +31 -0
  49. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.ts +53 -0
  50. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.html +18 -0
  51. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.scss +112 -0
  52. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.ts +57 -0
  53. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.scss +34 -0
  54. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.ts +110 -0
  55. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.html +10 -0
  56. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.ts +26 -0
  57. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.html +25 -0
  58. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.scss +36 -0
  59. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.ts +41 -0
  60. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.html +34 -0
  61. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.scss +33 -0
  62. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.ts +66 -0
  63. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.html +37 -0
  64. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.ts +55 -0
  65. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.html +21 -0
  66. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.ts +36 -0
  67. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/field-size.ts +8 -0
  68. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.html +19 -0
  69. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.scss +35 -0
  70. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.ts +36 -0
  71. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.html +3 -0
  72. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.ts +17 -0
  73. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.html +10 -0
  74. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.ts +37 -0
  75. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.html +41 -0
  76. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.ts +40 -0
  77. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.html +24 -0
  78. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.scss +35 -0
  79. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.ts +72 -0
  80. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.html +1 -0
  81. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.scss +23 -0
  82. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.ts +56 -0
  83. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.html +1 -0
  84. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.scss +28 -0
  85. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.ts +24 -0
  86. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/spinner/spinner.ts +35 -0
  87. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth/auth.guard.ts +50 -0
  88. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth/auth.service.ts +126 -0
  89. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth-form/auth-form.html +34 -0
  90. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth-form/auth-form.ts +94 -0
  91. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth-layout/auth-layout.html +2 -0
  92. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth-layout/auth-layout.ts +30 -0
  93. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/card-layout/card-layout.html +16 -0
  94. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/card-layout/card-layout.ts +40 -0
  95. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/config/authentication.config.ts +75 -0
  96. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/footer-link/footer-link.html +9 -0
  97. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/footer-link/footer-link.ts +26 -0
  98. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/menu/auth-menu/auth-menu.html +26 -0
  99. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/menu/auth-menu/auth-menu.ts +46 -0
  100. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/reactive-form-page.base.ts +50 -0
  101. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/session/session.html +55 -0
  102. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/session/session.ts +205 -0
  103. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/status-alert/status-alert.html +5 -0
  104. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/status-alert/status-alert.ts +52 -0
  105. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/submit-button/submit-button.html +5 -0
  106. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/submit-button/submit-button.scss +17 -0
  107. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/submit-button/submit-button.ts +35 -0
  108. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/utils/auth-helpers.ts +68 -0
  109. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/utils/auth-validators.ts +72 -0
  110. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/utils/helpers.ts +85 -0
  111. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/utils/session-time-servlet.ts +130 -0
  112. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/utils/session-timeout.config.ts +83 -0
  113. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/utils/session-timeout.service.ts +201 -0
  114. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.html +54 -0
  115. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.ts +40 -0
  116. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/active-filters.html +23 -0
  117. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/active-filters.ts +78 -0
  118. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-filter.html +18 -0
  119. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-filter.ts +137 -0
  120. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.html +11 -0
  121. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.ts +69 -0
  122. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.html +11 -0
  123. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.ts +36 -0
  124. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/multi-select-filter.html +10 -0
  125. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/multi-select-filter.ts +58 -0
  126. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/numeric-range-filter.html +22 -0
  127. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/numeric-range-filter.ts +146 -0
  128. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.html +8 -0
  129. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.ts +82 -0
  130. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.html +12 -0
  131. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.ts +65 -0
  132. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.html +12 -0
  133. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.ts +90 -0
  134. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/object-search-state.service.ts +232 -0
  135. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/pagination/pagination.html +8 -0
  136. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/pagination/pagination.ts +61 -0
  137. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.html +59 -0
  138. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.ts +108 -0
  139. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.html +50 -0
  140. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.ts +72 -0
  141. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/debounce.ts +31 -0
  142. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/field-utils.ts +54 -0
  143. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/filter-utils.ts +354 -0
  144. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/index.ts +12 -0
  145. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/sort-utils.ts +46 -0
  146. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.html +164 -0
  147. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.scss +7 -0
  148. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.ts +196 -0
  149. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.html +111 -0
  150. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.ts +217 -0
  151. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/change-password/change-password-page.html +68 -0
  152. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/change-password/change-password-page.ts +82 -0
  153. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/forgot-password/forgot-password-page.html +35 -0
  154. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/forgot-password/forgot-password-page.ts +87 -0
  155. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.html +18 -0
  156. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.ts +47 -0
  157. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.html +6 -0
  158. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.spec.ts +23 -0
  159. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.ts +13 -0
  160. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/login/login-page.html +47 -0
  161. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/login/login-page.ts +89 -0
  162. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/not-found/not-found.html +12 -0
  163. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/not-found/not-found.spec.ts +33 -0
  164. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/not-found/not-found.ts +15 -0
  165. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/profile/profile-page.html +116 -0
  166. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/profile/profile-page.ts +194 -0
  167. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/register/register-page.html +80 -0
  168. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/register/register-page.ts +93 -0
  169. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/reset-password/reset-password-page.html +60 -0
  170. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/reset-password/reset-password-page.ts +96 -0
  171. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/utils/async-data.ts +99 -0
  172. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/index.html +14 -0
  173. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/main.ts +5 -0
  174. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/styles.scss +170 -0
  175. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/theme.scss +39 -0
  176. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/types/sf-globals.d.ts +9 -0
  177. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/tsconfig.app.json +11 -0
  178. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/tsconfig.json +33 -0
  179. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/tsconfig.spec.json +10 -0
  180. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/ui-bundle.json +7 -0
  181. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleAuthUtils.cls +68 -0
  182. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleAuthUtils.cls-meta.xml +5 -0
  183. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleChangePassword.cls +77 -0
  184. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleChangePassword.cls-meta.xml +5 -0
  185. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleForgotPassword.cls +71 -0
  186. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleForgotPassword.cls-meta.xml +5 -0
  187. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleLogin.cls +105 -0
  188. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleLogin.cls-meta.xml +5 -0
  189. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleRegistration.cls +162 -0
  190. package/lib/templates/project/angularextapp/_p_/_m_/classes/UIBundleRegistration.cls-meta.xml +5 -0
  191. package/lib/templates/project/angularextapp/_p_/_m_/networks/angularextapp.network-meta.xml +60 -0
  192. package/lib/templates/project/angularextapp/_p_/_m_/package.xml +24 -0
  193. package/lib/templates/project/angularextapp/_p_/_m_/permissionsets/angularextapp_Guest_User_Api_Access.permissionset-meta.xml +9 -0
  194. package/lib/templates/project/angularextapp/_p_/_m_/sites/angularextapp.site-meta.xml +31 -0
  195. package/lib/templates/project/angularextapp/config/project-scratch-def.json +13 -0
  196. package/lib/templates/project/angularextapp/eslint.config.js +7 -0
  197. package/lib/templates/project/angularextapp/jest.config.js +6 -0
  198. package/lib/templates/project/angularextapp/package.json +46 -0
  199. package/lib/templates/project/angularextapp/scripts/apex/hello.apex +10 -0
  200. package/lib/templates/project/angularextapp/scripts/gitignore-templates.json +4 -0
  201. package/lib/templates/project/angularextapp/scripts/graphql-search.sh +191 -0
  202. package/lib/templates/project/angularextapp/scripts/org-setup-config-schema.mjs +103 -0
  203. package/lib/templates/project/angularextapp/scripts/org-setup-dev.mjs +87 -0
  204. package/lib/templates/project/angularextapp/scripts/org-setup-utils.mjs +369 -0
  205. package/lib/templates/project/angularextapp/scripts/org-setup-xml.mjs +182 -0
  206. package/lib/templates/project/angularextapp/scripts/org-setup.config.json +9 -0
  207. package/lib/templates/project/angularextapp/scripts/org-setup.mjs +1702 -0
  208. package/lib/templates/project/angularextapp/scripts/sf-project-setup.mjs +103 -0
  209. package/lib/templates/project/angularextapp/scripts/soql/account.soql +6 -0
  210. package/lib/templates/project/angularextapp/scripts/validate-org-setup-config.mjs +38 -0
  211. package/lib/templates/project/angularextapp/sfdx-project.json +12 -0
  212. package/lib/templates/project/angularintapp/.forceignore +15 -0
  213. package/lib/templates/project/angularintapp/.husky/pre-commit +4 -0
  214. package/lib/templates/project/angularintapp/.prettierignore +11 -0
  215. package/lib/templates/project/angularintapp/.prettierrc +17 -0
  216. package/lib/templates/project/angularintapp/CHANGELOG.md +4086 -0
  217. package/lib/templates/project/angularintapp/README.md +77 -0
  218. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/.forceignore +15 -0
  219. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/.postcssrc.json +5 -0
  220. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/.prettierignore +8 -0
  221. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/.prettierrc +12 -0
  222. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/CHANGELOG.md +4 -0
  223. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/README.md +85 -0
  224. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/angular.json +101 -0
  225. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/angularintapp.uibundle-meta.xml +8 -0
  226. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/e2e/app.spec.ts +15 -0
  227. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/esbuild/api-version.mjs +17 -0
  228. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/eslint.config.js +60 -0
  229. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/middleware/html.mjs +3 -0
  230. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/middleware/proxy.mjs +12 -0
  231. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package-lock.json +13619 -0
  232. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package.json +57 -0
  233. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/playwright.config.ts +25 -0
  234. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/public/favicon.ico +0 -0
  235. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/scripts/rewrite-e2e-assets.mjs +30 -0
  236. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/account/account-search.service.ts +196 -0
  237. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/account/distinctAccountIndustries.ts +26 -0
  238. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/account/distinctAccountTypes.ts +26 -0
  239. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/account/getAccountDetail.ts +128 -0
  240. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/account/searchAccounts.ts +58 -0
  241. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/data-client.service.spec.ts +184 -0
  242. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/api/data-client.service.ts +74 -0
  243. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.config.ts +22 -0
  244. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.html +1 -0
  245. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.routes.ts +31 -0
  246. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.spec.ts +18 -0
  247. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.ts +15 -0
  248. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/layout/app-layout/app-layout.html +52 -0
  249. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/layout/app-layout/app-layout.spec.ts +90 -0
  250. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/layout/app-layout/app-layout.ts +67 -0
  251. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/_field-size.scss +42 -0
  252. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.html +31 -0
  253. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.ts +53 -0
  254. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.html +18 -0
  255. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.scss +112 -0
  256. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.ts +57 -0
  257. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.scss +34 -0
  258. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.ts +110 -0
  259. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.html +10 -0
  260. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.ts +26 -0
  261. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.html +25 -0
  262. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.scss +36 -0
  263. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.ts +41 -0
  264. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.html +34 -0
  265. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.scss +33 -0
  266. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.ts +66 -0
  267. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.html +37 -0
  268. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.ts +55 -0
  269. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.html +21 -0
  270. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.ts +36 -0
  271. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/field-size.ts +8 -0
  272. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.html +19 -0
  273. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.scss +35 -0
  274. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.ts +36 -0
  275. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.html +3 -0
  276. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.ts +17 -0
  277. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.html +10 -0
  278. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.ts +37 -0
  279. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.html +41 -0
  280. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.ts +40 -0
  281. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.html +24 -0
  282. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.scss +35 -0
  283. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.ts +72 -0
  284. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.html +1 -0
  285. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.scss +23 -0
  286. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.ts +56 -0
  287. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.html +1 -0
  288. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.scss +28 -0
  289. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.ts +24 -0
  290. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/spinner/spinner.ts +35 -0
  291. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/agentforce/agentforce-embed.service.ts +177 -0
  292. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/agentforce/conversation.html +3 -0
  293. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/agentforce/conversation.ts +119 -0
  294. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.html +54 -0
  295. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.ts +40 -0
  296. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/active-filters.html +23 -0
  297. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/active-filters.ts +78 -0
  298. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-filter.html +18 -0
  299. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-filter.ts +137 -0
  300. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.html +11 -0
  301. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.ts +69 -0
  302. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.html +11 -0
  303. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.ts +36 -0
  304. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/multi-select-filter.html +10 -0
  305. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/multi-select-filter.ts +58 -0
  306. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/numeric-range-filter.html +22 -0
  307. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/numeric-range-filter.ts +146 -0
  308. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.html +8 -0
  309. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.ts +82 -0
  310. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.html +12 -0
  311. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.ts +65 -0
  312. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.html +12 -0
  313. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.ts +90 -0
  314. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/object-search-state.service.ts +232 -0
  315. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/pagination/pagination.html +8 -0
  316. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/pagination/pagination.ts +61 -0
  317. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.html +59 -0
  318. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.ts +108 -0
  319. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.html +50 -0
  320. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.ts +72 -0
  321. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/debounce.ts +31 -0
  322. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/field-utils.ts +54 -0
  323. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/filter-utils.ts +354 -0
  324. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/index.ts +12 -0
  325. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/utils/sort-utils.ts +46 -0
  326. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.html +164 -0
  327. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.scss +7 -0
  328. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.ts +196 -0
  329. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.html +111 -0
  330. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.ts +217 -0
  331. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.html +18 -0
  332. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.ts +47 -0
  333. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.html +6 -0
  334. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.spec.ts +23 -0
  335. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.ts +13 -0
  336. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/not-found/not-found.html +12 -0
  337. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/not-found/not-found.spec.ts +33 -0
  338. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/not-found/not-found.ts +15 -0
  339. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/types/conversation.ts +55 -0
  340. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/types/globals.d.ts +13 -0
  341. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/utils/async-data.ts +99 -0
  342. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/index.html +14 -0
  343. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/index.ts +15 -0
  344. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/main.ts +5 -0
  345. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/styles.scss +170 -0
  346. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/theme.scss +39 -0
  347. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/types/sf-globals.d.ts +9 -0
  348. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/tsconfig.app.json +11 -0
  349. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/tsconfig.json +33 -0
  350. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/tsconfig.spec.json +10 -0
  351. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/ui-bundle.json +7 -0
  352. package/lib/templates/project/angularintapp/_p_/_m_/applications/angularintapp.app-meta.xml +17 -0
  353. package/lib/templates/project/angularintapp/_p_/_m_/permissionsets/angularintapp_Access.permissionset-meta.xml +13 -0
  354. package/lib/templates/project/angularintapp/config/project-scratch-def.json +13 -0
  355. package/lib/templates/project/angularintapp/eslint.config.js +7 -0
  356. package/lib/templates/project/angularintapp/jest.config.js +6 -0
  357. package/lib/templates/project/angularintapp/package.json +46 -0
  358. package/lib/templates/project/angularintapp/scripts/apex/hello.apex +10 -0
  359. package/lib/templates/project/angularintapp/scripts/gitignore-templates.json +4 -0
  360. package/lib/templates/project/angularintapp/scripts/graphql-search.sh +191 -0
  361. package/lib/templates/project/angularintapp/scripts/org-setup-config-schema.mjs +103 -0
  362. package/lib/templates/project/angularintapp/scripts/org-setup-dev.mjs +87 -0
  363. package/lib/templates/project/angularintapp/scripts/org-setup-utils.mjs +369 -0
  364. package/lib/templates/project/angularintapp/scripts/org-setup-xml.mjs +182 -0
  365. package/lib/templates/project/angularintapp/scripts/org-setup.config.json +9 -0
  366. package/lib/templates/project/angularintapp/scripts/org-setup.mjs +1702 -0
  367. package/lib/templates/project/angularintapp/scripts/sf-project-setup.mjs +103 -0
  368. package/lib/templates/project/angularintapp/scripts/soql/account.soql +6 -0
  369. package/lib/templates/project/angularintapp/scripts/validate-org-setup-config.mjs +38 -0
  370. package/lib/templates/project/angularintapp/sfdx-project.json +12 -0
  371. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package-lock.json +589 -561
  372. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package-lock.json +589 -561
  373. package/lib/templates/uiBundles/angularbasic/package-lock.json +147 -168
  374. package/lib/templates/uiBundles/reactbasic/package-lock.json +589 -561
  375. package/lib/utils/types.d.ts +1 -1
  376. package/lib/utils/uiBundleTemplateUtils.js +10 -0
  377. package/lib/utils/uiBundleTemplateUtils.js.map +1 -1
  378. package/package.json +4 -2
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { MatDatepickerModule } from '@angular/material/datepicker';
9
+ import { MatFormFieldModule, type MatFormFieldAppearance } from '@angular/material/form-field';
10
+ import { MatInputModule } from '@angular/material/input';
11
+ import type { AppFieldSize } from '../field-size';
12
+
13
+ /**
14
+ * Thin wrapper over Material's `mat-form-field` + `matInput` + `mat-datepicker`.
15
+ * Relies on `provideNativeDateAdapter()`, so `value` is a plain `Date`.
16
+ */
17
+ @Component({
18
+ selector: 'app-date-picker',
19
+ changeDetection: ChangeDetectionStrategy.OnPush,
20
+ imports: [FormsModule, MatDatepickerModule, MatFormFieldModule, MatInputModule],
21
+ templateUrl: './date-picker.html',
22
+ styleUrl: './date-picker.scss',
23
+ })
24
+ export class DatePickerComponent {
25
+ /** Two-way bindable date value. `null` clears the field. Supports `[(value)]`. */
26
+ readonly value = model<Date | null>(null);
27
+
28
+ readonly label = input<string>('');
29
+ readonly placeholder = input<string>('');
30
+ readonly disabled = input<boolean>(false);
31
+ readonly appearance = input<MatFormFieldAppearance>('outline');
32
+ /** Field height: `sm` = 24px, `default` = 32px, `lg` = 40px. */
33
+ readonly size = input<AppFieldSize>('default');
34
+
35
+ /** Earliest / latest selectable date; `null` leaves that bound open. */
36
+ readonly min = input<Date | null>(null);
37
+ readonly max = input<Date | null>(null);
38
+
39
+ /** When `true`, calendar-only: typing is blocked, clicking opens the picker. */
40
+ readonly readonly = input<boolean>(false);
41
+ }
@@ -0,0 +1,34 @@
1
+ <mat-form-field
2
+ class="w-full"
3
+ [class]="'size-' + size()"
4
+ [appearance]="appearance()"
5
+ subscriptSizing="dynamic"
6
+ >
7
+ @if (label()) {
8
+ <mat-label>{{ label() }}</mat-label>
9
+ }
10
+ <mat-date-range-input [rangePicker]="picker" [min]="min()" [max]="max()" [disabled]="disabled()">
11
+ <input
12
+ matStartDate
13
+ [placeholder]="startPlaceholder()"
14
+ [value]="value()?.start ?? null"
15
+ [readonly]="readonly()"
16
+ (dateChange)="onStartChange($event.value)"
17
+ (click)="readonly() && picker.open()"
18
+ (keydown.enter)="readonly() && picker.open()"
19
+ (keydown.space)="readonly() && picker.open()"
20
+ />
21
+ <input
22
+ matEndDate
23
+ [placeholder]="endPlaceholder()"
24
+ [value]="value()?.end ?? null"
25
+ [readonly]="readonly()"
26
+ (dateChange)="onEndChange($event.value)"
27
+ (click)="readonly() && picker.open()"
28
+ (keydown.enter)="readonly() && picker.open()"
29
+ (keydown.space)="readonly() && picker.open()"
30
+ />
31
+ </mat-date-range-input>
32
+ <mat-datepicker-toggle matIconSuffix [for]="picker" />
33
+ <mat-date-range-picker #picker />
34
+ </mat-form-field>
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ @use '../field-size' as field-size;
8
+
9
+ /*
10
+ * Form-field-specific structural styling. Height comes from the `size` input
11
+ * (see field-size.scss); colour comes from the --mat-sys-* remap (styles.css).
12
+ * Here we only: give the outline our design-token radius, emit the size
13
+ * classes, and collapse the empty hint/error subscript row.
14
+ */
15
+ @include field-size.sizes;
16
+
17
+ :host {
18
+ display: block;
19
+ /*
20
+ * Allow the host to shrink below the mat-form-field's intrinsic width when
21
+ * used as a flex item, so the row doesn't overflow its container.
22
+ */
23
+ min-width: 0;
24
+ }
25
+
26
+ .mat-mdc-form-field {
27
+ --mdc-outlined-text-field-container-shape: var(--radius-md);
28
+ font-size: 0.875rem; /* text-sm, matches the React inputs */
29
+ }
30
+
31
+ .mat-mdc-form-field-subscript-wrapper {
32
+ display: none;
33
+ }
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { DateRange, MatDatepickerModule } from '@angular/material/datepicker';
9
+ import { MatFormFieldModule, type MatFormFieldAppearance } from '@angular/material/form-field';
10
+ import { MatInputModule } from '@angular/material/input';
11
+ import type { AppFieldSize } from '../field-size';
12
+
13
+ export { DateRange } from '@angular/material/datepicker';
14
+
15
+ /**
16
+ * Thin wrapper over Material's `mat-form-field` + `mat-date-range-input` +
17
+ * `mat-date-range-picker`. Relies on `provideNativeDateAdapter()`, so the value
18
+ * is Material's `DateRange<Date>` (`{ start, end }`) of plain `Date`s.
19
+ */
20
+ @Component({
21
+ selector: 'app-date-range-picker',
22
+ changeDetection: ChangeDetectionStrategy.OnPush,
23
+ imports: [FormsModule, MatDatepickerModule, MatFormFieldModule, MatInputModule],
24
+ templateUrl: './date-range-picker.html',
25
+ styleUrl: './date-range-picker.scss',
26
+ })
27
+ export class DateRangePickerComponent {
28
+ /** Two-way bindable range value. `null` clears the field. Supports `[(value)]`. */
29
+ readonly value = model<DateRange<Date> | null>(null);
30
+
31
+ readonly label = input<string>('');
32
+ readonly startPlaceholder = input<string>('Start');
33
+ readonly endPlaceholder = input<string>('End');
34
+ readonly disabled = input<boolean>(false);
35
+ readonly appearance = input<MatFormFieldAppearance>('outline');
36
+ /** Field height: `sm` = 24px, `default` = 32px, `lg` = 40px. */
37
+ readonly size = input<AppFieldSize>('default');
38
+
39
+ /** Earliest / latest selectable date; `null` leaves that bound open. */
40
+ readonly min = input<Date | null>(null);
41
+ readonly max = input<Date | null>(null);
42
+
43
+ /** When `true`, calendar-only: typing is blocked, clicking opens the picker. */
44
+ readonly readonly = input<boolean>(false);
45
+
46
+ /** Start/end come off the range input's `(dateChange)` events as a pair. */
47
+ protected onStartChange(start: Date | null): void {
48
+ this.setRange(start, this.value()?.end ?? null);
49
+ }
50
+
51
+ protected onEndChange(end: Date | null): void {
52
+ this.setRange(this.value()?.start ?? null, end);
53
+ }
54
+
55
+ /**
56
+ * Commit a range, guarding against an inverted `start > end` that the two
57
+ * independent `(dateChange)` events can otherwise produce mid-selection.
58
+ */
59
+ private setRange(start: Date | null, end: Date | null): void {
60
+ if (start && end && start.getTime() > end.getTime()) {
61
+ this.value.set(new DateRange(end, start));
62
+ return;
63
+ }
64
+ this.value.set(new DateRange(start, end));
65
+ }
66
+ }
@@ -0,0 +1,37 @@
1
+ <ng-template
2
+ cdkConnectedOverlay
3
+ [cdkConnectedOverlayOpen]="open()"
4
+ [cdkConnectedOverlayHasBackdrop]="true"
5
+ cdkConnectedOverlayBackdropClass="cdk-overlay-dark-backdrop"
6
+ [cdkConnectedOverlayPositions]="[
7
+ {
8
+ originX: 'center',
9
+ originY: 'center',
10
+ overlayX: 'center',
11
+ overlayY: 'center',
12
+ },
13
+ ]"
14
+ (backdropClick)="onBackdropClick()"
15
+ (overlayKeydown)="$event.key === 'Escape' && close()"
16
+ (detach)="close()"
17
+ >
18
+ <div
19
+ role="dialog"
20
+ aria-modal="true"
21
+ [attr.aria-label]="ariaLabel()"
22
+ [attr.aria-labelledby]="ariaLabelledby()"
23
+ cdkTrapFocus
24
+ [cdkTrapFocusAutoCapture]="true"
25
+ class="bg-card text-card-foreground flex w-full max-w-md flex-col gap-4 rounded-xl p-6 shadow-lg ring-1 ring-black/10 outline-none"
26
+ >
27
+ <div data-slot="dialog-header" class="flex flex-col gap-1">
28
+ <ng-content select="[header]" />
29
+ </div>
30
+ <div data-slot="dialog-body" class="text-sm">
31
+ <ng-content />
32
+ </div>
33
+ <div data-slot="dialog-footer" class="flex items-center justify-end gap-2">
34
+ <ng-content select="[footer]" />
35
+ </div>
36
+ </div>
37
+ </ng-template>
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { CdkTrapFocus } from '@angular/cdk/a11y';
7
+ import { CdkConnectedOverlay } from '@angular/cdk/overlay';
8
+ import { ChangeDetectionStrategy, Component, input, model, output } from '@angular/core';
9
+
10
+ /**
11
+ * Modal dialog backed by CDK Overlay. Slots: `[header]`, default (body),
12
+ * `[footer]`. `open` is a two-way model; a backdrop click or Escape closes it
13
+ * and emits `(closed)`. `cdkTrapFocus` keeps focus inside the panel while open.
14
+ */
15
+ @Component({
16
+ selector: 'app-dialog',
17
+ changeDetection: ChangeDetectionStrategy.OnPush,
18
+ imports: [CdkConnectedOverlay, CdkTrapFocus],
19
+ templateUrl: './dialog.html',
20
+ })
21
+ export class DialogComponent {
22
+ /** Two-way bindable open state. Supports `[(open)]`. */
23
+ readonly open = model<boolean>(false);
24
+
25
+ /** When true a backdrop click closes the dialog. */
26
+ readonly closeOnBackdrop = input<boolean>(true);
27
+
28
+ /** Accessible name for the dialog (or use `ariaLabelledby`). */
29
+ readonly ariaLabel = input<string | null>(null, { alias: 'aria-label' });
30
+
31
+ /** `id` of an element (e.g. the projected header) that names the dialog. */
32
+ readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });
33
+
34
+ /** Emitted whenever the dialog transitions to closed. */
35
+ readonly closed = output<void>();
36
+
37
+ /** Imperatively open the dialog. */
38
+ show(): void {
39
+ this.open.set(true);
40
+ }
41
+
42
+ /** Imperatively close the dialog and notify listeners. */
43
+ close(): void {
44
+ if (this.open()) {
45
+ this.open.set(false);
46
+ this.closed.emit();
47
+ }
48
+ }
49
+
50
+ protected onBackdropClick(): void {
51
+ if (this.closeOnBackdrop()) {
52
+ this.close();
53
+ }
54
+ }
55
+ }
@@ -0,0 +1,21 @@
1
+ @if (label()) {
2
+ <label [attr.for]="htmlFor()" class="text-sm leading-none font-medium select-none">
3
+ {{ label() }}
4
+ @if (required()) {
5
+ <span aria-hidden="true" class="text-destructive">*</span>
6
+ }
7
+ </label>
8
+ }
9
+
10
+ <ng-content />
11
+
12
+ @if (error()) {
13
+ <p
14
+ [id]="htmlFor() ? htmlFor() + '-error' : null"
15
+ data-slot="field-error"
16
+ role="alert"
17
+ class="text-destructive text-sm"
18
+ >
19
+ {{ error() }}
20
+ </p>
21
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
7
+
8
+ /**
9
+ * Form-field wrapper: renders a `<label>`, the projected control, and an error
10
+ * message when present. Composes around `app-input` and other controls.
11
+ */
12
+ @Component({
13
+ selector: 'app-field',
14
+ changeDetection: ChangeDetectionStrategy.OnPush,
15
+ templateUrl: './field.html',
16
+ host: {
17
+ 'data-slot': 'field',
18
+ class: 'flex flex-col gap-1.5',
19
+ },
20
+ })
21
+ export class FieldComponent {
22
+ /** Optional label text rendered above the control. */
23
+ readonly label = input<string>('');
24
+
25
+ /**
26
+ * Error message; renders in a `role="alert"` region. When `htmlFor` is set
27
+ * the region gets id `<htmlFor>-error` for the control's `aria-describedby`.
28
+ */
29
+ readonly error = input<string | null>(null);
30
+
31
+ /** Marks the field required and renders an asterisk next to the label. */
32
+ readonly required = input<boolean>(false);
33
+
34
+ /** `id` of the projected control; forwarded to the label's `for`. */
35
+ readonly htmlFor = input<string | null>(null);
36
+ }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ /** Form-field height scale: `sm` = 24px, `default` = 32px, `lg` = 40px. */
8
+ export type AppFieldSize = 'sm' | 'default' | 'lg';
@@ -0,0 +1,19 @@
1
+ <mat-form-field
2
+ class="w-full"
3
+ [class]="'size-' + size()"
4
+ [appearance]="appearance()"
5
+ subscriptSizing="dynamic"
6
+ >
7
+ @if (label()) {
8
+ <mat-label>{{ label() }}</mat-label>
9
+ }
10
+ <input
11
+ matInput
12
+ [type]="type()"
13
+ [placeholder]="placeholder()"
14
+ [disabled]="disabled()"
15
+ [attr.id]="id() || null"
16
+ [attr.aria-describedby]="ariaDescribedby() || null"
17
+ [(ngModel)]="value"
18
+ />
19
+ </mat-form-field>
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ @use '../field-size' as field-size;
8
+
9
+ /*
10
+ * Form-field-specific structural styling. Height comes from the `size` input
11
+ * (see field-size.scss); colour comes from the --mat-sys-* remap (styles.css).
12
+ * Here we only: give the outline our design-token radius, emit the size
13
+ * classes, and collapse the empty hint/error subscript row.
14
+ */
15
+ @include field-size.sizes;
16
+
17
+ :host {
18
+ display: block;
19
+ /*
20
+ * Allow the host to shrink below the mat-form-field's intrinsic width when
21
+ * used as a flex item (e.g. two side-by-side inputs in a numeric/date
22
+ * range). Without this, the default `min-width: auto` on a flex item keeps
23
+ * each field at its content width and the row overflows its container.
24
+ */
25
+ min-width: 0;
26
+ }
27
+
28
+ .mat-mdc-form-field {
29
+ --mdc-outlined-text-field-container-shape: var(--radius-md);
30
+ font-size: 0.875rem; /* text-sm, matches the React inputs */
31
+ }
32
+
33
+ .mat-mdc-form-field-subscript-wrapper {
34
+ display: none;
35
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';
7
+ import { FormsModule } from '@angular/forms';
8
+ import { MatFormFieldModule, type MatFormFieldAppearance } from '@angular/material/form-field';
9
+ import { MatInputModule } from '@angular/material/input';
10
+ import type { AppFieldSize } from '../field-size';
11
+
12
+ /** Thin wrapper over Material's `mat-form-field` + `matInput`. */
13
+ @Component({
14
+ selector: 'app-input',
15
+ changeDetection: ChangeDetectionStrategy.OnPush,
16
+ imports: [FormsModule, MatFormFieldModule, MatInputModule],
17
+ templateUrl: './input.html',
18
+ styleUrl: './input.scss',
19
+ })
20
+ export class InputComponent {
21
+ /** Two-way bindable value. Supports `[(value)]`. */
22
+ readonly value = model<string>('');
23
+
24
+ readonly placeholder = input<string>('');
25
+ readonly label = input<string>('');
26
+ readonly type = input<string>('text');
27
+ readonly disabled = input<boolean>(false);
28
+ readonly appearance = input<MatFormFieldAppearance>('outline');
29
+ /** Field height: `sm` = 24px, `default` = 32px, `lg` = 40px. */
30
+ readonly size = input<AppFieldSize>('default');
31
+
32
+ /** `id` on the inner control, so an outer `app-field` label's `for` resolves. */
33
+ readonly id = input<string>('');
34
+
35
+ readonly ariaDescribedby = input<string>('');
36
+ }
@@ -0,0 +1,3 @@
1
+ <label [attr.for]="for()" class="text-sm leading-none font-medium select-none">
2
+ <ng-content />
3
+ </label>
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { ChangeDetectionStrategy, Component, input } from '@angular/core';
7
+
8
+ /** Thin wrapper over the native `<label>` element. */
9
+ @Component({
10
+ selector: 'app-label',
11
+ changeDetection: ChangeDetectionStrategy.OnPush,
12
+ templateUrl: './label.html',
13
+ })
14
+ export class LabelComponent {
15
+ /** Optional `for` attribute forwarded to the underlying `<label>`. */
16
+ readonly for = input<string | null>(null);
17
+ }
@@ -0,0 +1,10 @@
1
+ <mat-paginator
2
+ [length]="length()"
3
+ [pageIndex]="pageIndex()"
4
+ [pageSize]="pageSize()"
5
+ [pageSizeOptions]="pageSizeOptions()"
6
+ [hidePageSize]="hidePageSize()"
7
+ [showFirstLastButtons]="showFirstLastButtons()"
8
+ [disabled]="disabled()"
9
+ (page)="page.emit($event)"
10
+ />
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { booleanAttribute, ChangeDetectionStrategy, Component, input, output } from '@angular/core';
7
+ import { MatPaginator, type PageEvent } from '@angular/material/paginator';
8
+
9
+ /**
10
+ * Thin wrapper over Material's `mat-paginator`. Presentation only — the host
11
+ * decides what each page change means by listening to `(page)`.
12
+ */
13
+ @Component({
14
+ selector: 'app-paginator',
15
+ changeDetection: ChangeDetectionStrategy.OnPush,
16
+ imports: [MatPaginator],
17
+ templateUrl: './paginator.html',
18
+ })
19
+ export class PaginatorComponent {
20
+ /** Total item count; Material derives the page count as `ceil(length / pageSize)`. */
21
+ readonly length = input<number>(0);
22
+ /** Zero-based index of the current page. */
23
+ readonly pageIndex = input<number>(0);
24
+ /** Items shown per page. */
25
+ readonly pageSize = input<number>(10);
26
+ /** Selectable page sizes; omit/empty to hide the size selector. */
27
+ readonly pageSizeOptions = input<readonly number[]>([]);
28
+ /** Disable navigation buttons and the size select (e.g. while loading). */
29
+ readonly disabled = input(false, { transform: booleanAttribute });
30
+ /** Hide the "Items per page" selector. */
31
+ readonly hidePageSize = input(false, { transform: booleanAttribute });
32
+ /** Show the first / last page jump buttons. */
33
+ readonly showFirstLastButtons = input(false, { transform: booleanAttribute });
34
+
35
+ /** Emitted when the user changes page or page size. */
36
+ readonly page = output<PageEvent>();
37
+ }
@@ -0,0 +1,41 @@
1
+ <span
2
+ cdkOverlayOrigin
3
+ #origin="cdkOverlayOrigin"
4
+ role="button"
5
+ tabindex="0"
6
+ [attr.aria-expanded]="open()"
7
+ (click)="toggle()"
8
+ (keydown.enter)="toggle()"
9
+ (keydown.space)="$event.preventDefault(); toggle()"
10
+ >
11
+ <ng-content select="[trigger]" />
12
+ </span>
13
+
14
+ <ng-template
15
+ cdkConnectedOverlay
16
+ [cdkConnectedOverlayOrigin]="origin"
17
+ [cdkConnectedOverlayOpen]="open()"
18
+ [cdkConnectedOverlayHasBackdrop]="true"
19
+ cdkConnectedOverlayBackdropClass="cdk-overlay-transparent-backdrop"
20
+ [cdkConnectedOverlayOffsetY]="sideOffset()"
21
+ [cdkConnectedOverlayPositions]="[
22
+ {
23
+ originX: align(),
24
+ originY: 'bottom',
25
+ overlayX: align(),
26
+ overlayY: 'top',
27
+ },
28
+ {
29
+ originX: align(),
30
+ originY: 'top',
31
+ overlayX: align(),
32
+ overlayY: 'bottom',
33
+ },
34
+ ]"
35
+ (backdropClick)="close()"
36
+ (detach)="close()"
37
+ >
38
+ <div class="bg-white text-sm rounded-lg shadow-md ring-1 ring-black/10 outline-none">
39
+ <ng-content />
40
+ </div>
41
+ </ng-template>
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';
7
+ import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';
8
+
9
+ /**
10
+ * Popover backed by CDK Overlay. Slots: `[trigger]` (anchor, toggles the
11
+ * popover) and default (body). `open` is a two-way model; a backdrop click
12
+ * closes it.
13
+ */
14
+ @Component({
15
+ selector: 'app-popover',
16
+ changeDetection: ChangeDetectionStrategy.OnPush,
17
+ imports: [CdkConnectedOverlay, CdkOverlayOrigin],
18
+ templateUrl: './popover.html',
19
+ })
20
+ export class PopoverComponent {
21
+ /**
22
+ * Two-way bindable open state. Supports `[(open)]`, a plain `[open]`
23
+ * input, or listening to the auto-generated `(openChange)` event.
24
+ */
25
+ readonly open = model<boolean>(false);
26
+
27
+ /** Panel alignment relative to the trigger. Defaults to below-start. */
28
+ readonly align = input<'start' | 'center' | 'end'>('start');
29
+
30
+ /** Vertical gap between the trigger and the panel, in px. */
31
+ readonly sideOffset = input<number>(4);
32
+
33
+ toggle(): void {
34
+ this.open.set(!this.open());
35
+ }
36
+
37
+ close(): void {
38
+ this.open.set(false);
39
+ }
40
+ }
@@ -0,0 +1,24 @@
1
+ <mat-form-field
2
+ class="w-full"
3
+ [class]="'size-' + size()"
4
+ [appearance]="appearance()"
5
+ subscriptSizing="dynamic"
6
+ >
7
+ @if (label()) {
8
+ <mat-label>{{ label() }}</mat-label>
9
+ }
10
+ <mat-select
11
+ [multiple]="multiple()"
12
+ [placeholder]="placeholder()"
13
+ [disabled]="disabled()"
14
+ [ngModel]="selection()"
15
+ (ngModelChange)="onSelectionChange($event)"
16
+ >
17
+ @if (multiple()) {
18
+ <mat-select-trigger>{{ multiTriggerLabel() }}</mat-select-trigger>
19
+ }
20
+ @for (option of options(); track option.value) {
21
+ <mat-option [value]="option.value">{{ option.label }}</mat-option>
22
+ }
23
+ </mat-select>
24
+ </mat-form-field>
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ @use '../field-size' as field-size;
8
+
9
+ /*
10
+ * Form-field-specific structural styling. Height comes from the `size` input
11
+ * (see field-size.scss); colour comes from the --mat-sys-* remap (styles.css).
12
+ * Here we only: give the outline our design-token radius, emit the size
13
+ * classes, and collapse the empty hint/error subscript row.
14
+ */
15
+ @include field-size.sizes;
16
+
17
+ :host {
18
+ display: block;
19
+ /*
20
+ * Allow the host to shrink below the mat-form-field's intrinsic width when
21
+ * used as a flex item (e.g. the operator select beside a date picker in a
22
+ * date filter row). Without this, the default `min-width: auto` on a flex
23
+ * item keeps each field at its content width and the row overflows.
24
+ */
25
+ min-width: 0;
26
+ }
27
+
28
+ .mat-mdc-form-field {
29
+ --mdc-outlined-text-field-container-shape: var(--radius-md);
30
+ font-size: 0.875rem; /* text-sm, matches the React inputs */
31
+ }
32
+
33
+ .mat-mdc-form-field-subscript-wrapper {
34
+ display: none;
35
+ }