@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,81 @@
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, computed, inject, signal } from "@angular/core";
7
+ import { Router, RouterLink, RouterLinkActive, RouterOutlet, type Route } from "@angular/router";
8
+ import { AuthMenuComponent } from "../../../features/authentication/menu/auth-menu/auth-menu";
9
+
10
+ interface NavItem {
11
+ path: string;
12
+ label: string;
13
+ }
14
+
15
+ /**
16
+ * App-owned layout — overrides the base `app-layout` at compose (the app package
17
+ * ships its own copy, so patches-cli's "app wins" rule selects this one over the
18
+ * base-angular-app version). This is the Angular analogue of the React external
19
+ * app's own `appLayout.tsx`: the layout belongs to the PROJECT, not the base app
20
+ * or a feature. The auth feature's `AuthAppLayout` wrapper renders `<app-layout />`
21
+ * (via its `__inherit__app-layout` stub), which resolves to this component.
22
+ *
23
+ * Adds two things over the base layout:
24
+ * - `<app-auth-menu />` in the header (the auth feature's account dropdown),
25
+ * the parallel of the React app rendering `<AuthMenu />`.
26
+ * - Dynamic navigation derived from the router config at runtime — the Angular
27
+ * analogue of React's `getAllRoutes()` reading route `handle` metadata. Post
28
+ * compose the router config IS the merged base + feature routes, so nav items
29
+ * surface automatically for any route whose `data.showInNavigation` is true.
30
+ */
31
+ @Component({
32
+ selector: "app-layout",
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ imports: [RouterOutlet, RouterLink, RouterLinkActive, AuthMenuComponent],
35
+ templateUrl: "./app-layout.html",
36
+ })
37
+ export class AppLayoutComponent {
38
+ private readonly router = inject(Router);
39
+
40
+ readonly isOpen = signal(false);
41
+
42
+ /**
43
+ * Flatten the router config and keep routes explicitly marked for navigation
44
+ * (`data.showInNavigation === true` with a `data.label`). Mirrors the React
45
+ * `getAllRoutes().filter(r => r.handle?.showInNavigation)` selection.
46
+ */
47
+ readonly navigationItems = computed<NavItem[]>(() =>
48
+ this.collectNavItems(this.router.config, ""),
49
+ );
50
+
51
+ private collectNavItems(routes: Route[], parentPath: string): NavItem[] {
52
+ const items: NavItem[] = [];
53
+ for (const route of routes) {
54
+ const segment = route.path ?? "";
55
+ const fullPath =
56
+ segment === ""
57
+ ? parentPath || "/"
58
+ : parentPath === "/" || parentPath === ""
59
+ ? `/${segment}`
60
+ : `${parentPath}/${segment}`;
61
+
62
+ const data = route.data as { showInNavigation?: boolean; label?: string } | undefined;
63
+ if (data?.showInNavigation === true && data.label) {
64
+ items.push({ path: fullPath, label: data.label });
65
+ }
66
+
67
+ if (route.children?.length) {
68
+ items.push(...this.collectNavItems(route.children, fullPath));
69
+ }
70
+ }
71
+ return items;
72
+ }
73
+
74
+ toggleMenu(): void {
75
+ this.isOpen.update((v) => !v);
76
+ }
77
+
78
+ closeMenu(): void {
79
+ this.isOpen.set(false);
80
+ }
81
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ /*
8
+ * Shared height scale for the form-field wrappers (app-input, app-select,
9
+ * app-date-picker): sm = 24px, default = 32px, lg = 40px.
10
+ *
11
+ * Material's density scale only reaches 36px at its -5 floor, so these compact
12
+ * heights can't come from `mat.form-field-density`. Instead we set the two M3
13
+ * tokens that drive the height directly:
14
+ * --mat-form-field-container-height -> `.mat-mdc-form-field-flex` min-height
15
+ * --mat-form-field-container-vertical-padding -> infix padding-top / -bottom
16
+ *
17
+ * These are CSS custom properties, so setting them on the wrapper's own
18
+ * `mat-form-field` (an in-view element that matches under emulated
19
+ * encapsulation) is enough — they INHERIT down to Material's internal flex /
20
+ * infix elements. No `::ng-deep` and no global classes needed. This mirrors how
21
+ * `app-button` sizes work (it sets `--mat-button-*-container-height` tokens).
22
+ */
23
+ @mixin apply($height, $vertical-padding) {
24
+ --mat-form-field-container-height: #{$height};
25
+ --mat-form-field-container-vertical-padding: #{$vertical-padding};
26
+ }
27
+
28
+ /*
29
+ * Emit the three size classes. Consumers opt in via `size` on the wrapper,
30
+ * which renders `size-sm | size-default | size-lg` on the mat-form-field.
31
+ */
32
+ @mixin sizes {
33
+ .size-sm {
34
+ @include apply(1.5rem, 0.25rem); // 24px, 4px
35
+ }
36
+ .size-default {
37
+ @include apply(2rem, 0.5rem); // 32px, 8px
38
+ }
39
+ .size-lg {
40
+ @include apply(2.5rem, 0.75rem); // 40px, 12px
41
+ }
42
+ }
@@ -0,0 +1,31 @@
1
+ @if (icon()) {
2
+ <mat-icon class="row-span-2 translate-y-0.5 !size-4 !text-base leading-4" aria-hidden="true">{{
3
+ icon()
4
+ }}</mat-icon>
5
+ }
6
+
7
+ @if (title()) {
8
+ <div data-slot="alert-title" class="col-start-2 font-medium">{{ title() }}</div>
9
+ }
10
+ @if (description()) {
11
+ <div
12
+ data-slot="alert-description"
13
+ class="col-start-2 text-sm"
14
+ [class.text-muted-foreground]="variant() === 'default'"
15
+ [class.text-destructive]="variant() === 'destructive'"
16
+ >
17
+ {{ description() }}
18
+ </div>
19
+ }
20
+
21
+ <!--
22
+ Default slot for callers that project body content (e.g. app-status-alert
23
+ composing a message with a link) instead of the `description` input. Sits in
24
+ the second grid column to align with the icon. Inert when only inputs are used.
25
+ -->
26
+ <div class="col-start-2 text-sm">
27
+ <ng-content />
28
+ </div>
29
+
30
+ <!-- Optional caller-owned trailing control, pinned top-right. -->
31
+ <ng-content select="app-alert-action" />
@@ -0,0 +1,53 @@
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, computed, input } from '@angular/core';
7
+ import { MatIconModule } from '@angular/material/icon';
8
+
9
+ /** Visual variant. */
10
+ export type AppAlertVariant = 'default' | 'destructive';
11
+
12
+ const BASE_CLASSES =
13
+ 'relative w-full grid grid-cols-[auto_1fr] items-start gap-x-2 gap-y-0.5 rounded-lg border px-2.5 py-2 text-left text-sm has-[app-alert-action]:pr-18';
14
+ const VARIANT_CLASSES: Record<AppAlertVariant, string> = {
15
+ default: 'bg-card text-card-foreground',
16
+ destructive: 'bg-card text-destructive',
17
+ };
18
+
19
+ /** Alert banner. Optional trailing control via the `app-alert-action` slot. */
20
+ @Component({
21
+ selector: 'app-alert',
22
+ changeDetection: ChangeDetectionStrategy.OnPush,
23
+ imports: [MatIconModule],
24
+ templateUrl: './alert.html',
25
+ host: {
26
+ 'data-slot': 'alert',
27
+ role: 'alert',
28
+ '[class]': 'hostClass()',
29
+ },
30
+ })
31
+ export class AlertComponent {
32
+ readonly variant = input<AppAlertVariant>('default');
33
+ readonly title = input<string>('');
34
+ readonly description = input<string>('');
35
+ /** Material icon ligature name, e.g. `info`, `error`, `warning`. */
36
+ readonly icon = input<string>('');
37
+
38
+ protected readonly hostClass = computed(
39
+ () => `${BASE_CLASSES} ${VARIANT_CLASSES[this.variant()]}`,
40
+ );
41
+ }
42
+
43
+ /** Trailing action slot for `app-alert`, pinned to the top-right. */
44
+ @Component({
45
+ selector: 'app-alert-action',
46
+ changeDetection: ChangeDetectionStrategy.OnPush,
47
+ template: '<ng-content />',
48
+ host: {
49
+ 'data-slot': 'alert-action',
50
+ class: 'absolute top-2 right-2',
51
+ },
52
+ })
53
+ export class AlertActionComponent {}
@@ -0,0 +1,18 @@
1
+ <button
2
+ [matButton]="matAppearance()"
3
+ [class]="buttonClass()"
4
+ [class.destructive]="isDestructive()"
5
+ [type]="type()"
6
+ [disabled]="disabled()"
7
+ [attr.aria-label]="ariaLabel()"
8
+ [attr.aria-expanded]="ariaExpanded()"
9
+ (click)="clicked.emit($event)"
10
+ >
11
+ @if (icon()) {
12
+ <mat-icon aria-hidden="true">{{ icon() }}</mat-icon>
13
+ }
14
+ <ng-content />
15
+ @if (iconEnd()) {
16
+ <mat-icon aria-hidden="true" iconPositionEnd>{{ iconEnd() }}</mat-icon>
17
+ }
18
+ </button>
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+ @use '@angular/material' as mat;
7
+
8
+ // Compact density themes — Material's canonical heights (36 / 32 / 28px).
9
+ $-lg: mat.define-theme(
10
+ (
11
+ density: (
12
+ scale: -1,
13
+ ),
14
+ )
15
+ );
16
+ $-md: mat.define-theme(
17
+ (
18
+ density: (
19
+ scale: -2,
20
+ ),
21
+ )
22
+ );
23
+ $-sm: mat.define-theme(
24
+ (
25
+ density: (
26
+ scale: -3,
27
+ ),
28
+ )
29
+ );
30
+
31
+ @mixin -height($h) {
32
+ --mat-button-filled-container-height: #{$h};
33
+ --mat-button-outlined-container-height: #{$h};
34
+ --mat-button-text-container-height: #{$h};
35
+ --mat-button-tonal-container-height: #{$h};
36
+ --mat-button-protected-container-height: #{$h};
37
+ }
38
+
39
+ @mixin -label-size($s) {
40
+ --mat-button-filled-label-text-size: #{$s};
41
+ --mat-button-outlined-label-text-size: #{$s};
42
+ --mat-button-text-label-text-size: #{$s};
43
+ --mat-button-tonal-label-text-size: #{$s};
44
+ --mat-button-protected-label-text-size: #{$s};
45
+ }
46
+
47
+ :host {
48
+ display: inline-flex;
49
+ }
50
+
51
+ .mat-mdc-button-base {
52
+ width: 100%;
53
+ font-weight: 500;
54
+ --mat-button-filled-container-shape: var(--radius-md);
55
+ --mat-button-outlined-container-shape: var(--radius-md);
56
+ --mat-button-text-container-shape: var(--radius-md);
57
+ --mat-button-tonal-container-shape: var(--radius-md);
58
+ --mat-button-protected-container-shape: var(--radius-md);
59
+ }
60
+
61
+ // Heights via Material's density scale; 24px (xs) sits below the button
62
+ // density floor (-3 = 28px), so it sets the height token directly.
63
+ .size-default,
64
+ .size-icon {
65
+ @include mat.button-density($-md);
66
+ }
67
+ .size-sm,
68
+ .size-icon-sm {
69
+ @include mat.button-density($-sm);
70
+ }
71
+ .size-lg,
72
+ .size-icon-lg {
73
+ @include mat.button-density($-lg);
74
+ }
75
+ .size-xs,
76
+ .size-icon-xs {
77
+ @include -height(1.5rem);
78
+ }
79
+
80
+ // Font-size isn't a density concern, so it stays a label token.
81
+ .size-default,
82
+ .size-lg {
83
+ @include -label-size(0.875rem);
84
+ }
85
+ .size-sm {
86
+ @include -label-size(0.8rem);
87
+ }
88
+ .size-xs {
89
+ @include -label-size(0.75rem);
90
+ }
91
+
92
+ // Icon-only: square, no min-width or horizontal padding. Material's leading-icon
93
+ // margins assume a text label, so zero them to keep the icon centred.
94
+ .size-icon,
95
+ .size-icon-xs,
96
+ .size-icon-sm,
97
+ .size-icon-lg {
98
+ width: auto;
99
+ min-width: 0;
100
+ padding: 0;
101
+ aspect-ratio: 1;
102
+
103
+ .mat-icon {
104
+ margin: 0;
105
+ }
106
+ }
107
+
108
+ // Destructive: subtle red tint + red text, matching React's bg-destructive/10.
109
+ .destructive {
110
+ --mat-button-filled-container-color: color-mix(in oklch, var(--destructive) 10%, transparent);
111
+ --mat-button-filled-label-text-color: var(--destructive);
112
+ }
@@ -0,0 +1,57 @@
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, computed, input, output } from '@angular/core';
7
+ import { MatButtonModule, type MatButtonAppearance } from '@angular/material/button';
8
+ import { MatIconModule } from '@angular/material/icon';
9
+
10
+ /** Material's appearances plus `destructive`, which Material doesn't provide. */
11
+ export type AppButtonAppearance = MatButtonAppearance | 'destructive';
12
+
13
+ /** Button size variants. */
14
+ export type AppButtonSize =
15
+ | 'default'
16
+ | 'xs'
17
+ | 'sm'
18
+ | 'lg'
19
+ | 'icon'
20
+ | 'icon-xs'
21
+ | 'icon-sm'
22
+ | 'icon-lg';
23
+
24
+ /**
25
+ * Thin wrapper over `matButton`. Adds a `destructive` appearance and a `size`
26
+ * scale Material lacks; inputs drive the inner button (a host class/aria attr
27
+ * would land on `<app-button>`, not the real `<button>`).
28
+ */
29
+ @Component({
30
+ selector: 'app-button',
31
+ changeDetection: ChangeDetectionStrategy.OnPush,
32
+ imports: [MatButtonModule, MatIconModule],
33
+ templateUrl: './button.html',
34
+ styleUrl: './button.scss',
35
+ })
36
+ export class ButtonComponent {
37
+ readonly appearance = input<AppButtonAppearance>('filled');
38
+ readonly size = input<AppButtonSize>('default');
39
+ readonly type = input<'button' | 'submit' | 'reset'>('button');
40
+ readonly disabled = input<boolean>(false);
41
+ readonly ariaLabel = input<string>();
42
+ readonly ariaExpanded = input<boolean>();
43
+ /** Extra classes for the inner button — `class` on the host forwards here. */
44
+ readonly classes = input<string>('', { alias: 'class' });
45
+ /** Leading / trailing Material icon ligature names, e.g. `search`. */
46
+ readonly icon = input<string>('');
47
+ readonly iconEnd = input<string>('');
48
+ readonly clicked = output<MouseEvent>();
49
+
50
+ /** `destructive` renders as a filled button carrying the destructive class. */
51
+ protected readonly matAppearance = computed<MatButtonAppearance>(() =>
52
+ this.appearance() === 'destructive' ? 'filled' : (this.appearance() as MatButtonAppearance),
53
+ );
54
+ protected readonly isDestructive = computed(() => this.appearance() === 'destructive');
55
+ /** Size class merged with any caller-supplied classes, applied to the button. */
56
+ protected readonly buttonClass = computed(() => `size-${this.size()} ${this.classes()}`.trim());
57
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Copyright (c) 2026, Salesforce, Inc.,
3
+ * All rights reserved.
4
+ * For full license text, see the LICENSE.txt file
5
+ */
6
+
7
+ // `size="sm"` — compact padding. Material hardcodes the card's 16px padding
8
+ // (there is no padding design token to override), so the compact size tightens
9
+ // the real Material padding classes. `::ng-deep` is required because the slot
10
+ // content (`mat-card-header/content/actions`) is projected — it lives in the
11
+ // consumer's view, not this wrapper's — so a plain scoped selector can't reach
12
+ // it. The rules are anchored under `.app-card-sm`, a class only this component
13
+ // applies, so the deep selector stays contained to compact cards.
14
+ .app-card-sm {
15
+ ::ng-deep .mat-mdc-card-header {
16
+ padding: 0.75rem 0.75rem 0;
17
+ }
18
+
19
+ ::ng-deep .mat-mdc-card-content {
20
+ padding: 0 0.75rem;
21
+
22
+ &:first-child {
23
+ padding-top: 0.75rem;
24
+ }
25
+
26
+ &:last-child {
27
+ padding-bottom: 0.75rem;
28
+ }
29
+ }
30
+
31
+ ::ng-deep .mat-mdc-card-actions {
32
+ padding: 0.75rem;
33
+ }
34
+ }
@@ -0,0 +1,110 @@
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
+ import {
8
+ MatCard,
9
+ MatCardActions,
10
+ MatCardContent,
11
+ MatCardHeader,
12
+ MatCardSubtitle,
13
+ MatCardTitle,
14
+ } from '@angular/material/card';
15
+
16
+ /** Card container density. */
17
+ export type AppCardSize = 'default' | 'sm';
18
+
19
+ /**
20
+ * Thin wrapper over `mat-card`. Preserves the `app-card` / `app-card-*` slot API
21
+ * while Material drives the visual. `size="sm"` maps to a compact-padding class.
22
+ */
23
+ @Component({
24
+ selector: 'app-card',
25
+ changeDetection: ChangeDetectionStrategy.OnPush,
26
+ imports: [MatCard],
27
+ template:
28
+ '<mat-card appearance="outlined" [class]="classes()" [class.app-card-sm]="size() === \'sm\'"><ng-content /></mat-card>',
29
+ styleUrl: './card.scss',
30
+ })
31
+ export class CardComponent {
32
+ readonly size = input<AppCardSize>('default');
33
+ /** Extra classes forwarded to the inner `mat-card` (host `class` lands here). */
34
+ readonly classes = input<string>('', { alias: 'class' });
35
+ }
36
+
37
+ /**
38
+ * Header slot — wraps `mat-card-header` and recreates its title/subtitle stack
39
+ * so the slots project by element selector (Material's static
40
+ * `[mat-card-title]` projection can't see the runtime attribute across this
41
+ * boundary, and would otherwise render title + subtitle side by side).
42
+ */
43
+ @Component({
44
+ selector: 'app-card-header',
45
+ changeDetection: ChangeDetectionStrategy.OnPush,
46
+ imports: [MatCardHeader],
47
+ template: `<mat-card-header [class]="classes()">
48
+ <ng-content select="[mat-card-avatar]" />
49
+ <div class="app-card-header-text">
50
+ <ng-content select="app-card-title" />
51
+ <ng-content select="app-card-description" />
52
+ </div>
53
+ <ng-content />
54
+ </mat-card-header>`,
55
+ styles: '.app-card-header-text { display: flex; flex-direction: column; gap: 0.25rem; }',
56
+ })
57
+ export class CardHeaderComponent {
58
+ /** Extra classes forwarded to the inner `mat-card-header`. */
59
+ readonly classes = input<string>('', { alias: 'class' });
60
+ }
61
+
62
+ /** Title slot — Material's `MatCardTitle` styling. */
63
+ @Component({
64
+ selector: 'app-card-title',
65
+ changeDetection: ChangeDetectionStrategy.OnPush,
66
+ hostDirectives: [MatCardTitle],
67
+ template: '<ng-content />',
68
+ })
69
+ export class CardTitleComponent {}
70
+
71
+ /** Description slot — Material's `mat-card-subtitle` styling. */
72
+ @Component({
73
+ selector: 'app-card-description',
74
+ changeDetection: ChangeDetectionStrategy.OnPush,
75
+ hostDirectives: [MatCardSubtitle],
76
+ template: '<ng-content />',
77
+ })
78
+ export class CardDescriptionComponent {}
79
+
80
+ /** Action slot — pinned to the trailing edge of `app-card-header`. */
81
+ @Component({
82
+ selector: 'app-card-action',
83
+ changeDetection: ChangeDetectionStrategy.OnPush,
84
+ host: { style: 'margin-inline-start: auto; align-self: flex-start;' },
85
+ template: '<ng-content />',
86
+ })
87
+ export class CardActionComponent {}
88
+
89
+ /** Body slot — Material's `mat-card-content`. */
90
+ @Component({
91
+ selector: 'app-card-content',
92
+ changeDetection: ChangeDetectionStrategy.OnPush,
93
+ hostDirectives: [MatCardContent],
94
+ template: '<ng-content />',
95
+ })
96
+ export class CardContentComponent {}
97
+
98
+ /**
99
+ * Footer slot — Material's `mat-card-actions` (a flex-row action bar).
100
+ * Material ships no inter-button spacing, so `:host` (the actions element)
101
+ * sets a `gap`.
102
+ */
103
+ @Component({
104
+ selector: 'app-card-footer',
105
+ changeDetection: ChangeDetectionStrategy.OnPush,
106
+ hostDirectives: [MatCardActions],
107
+ styles: ':host { gap: 0.5rem; }',
108
+ template: '<ng-content />',
109
+ })
110
+ export class CardFooterComponent {}
@@ -0,0 +1,10 @@
1
+ <mat-expansion-panel [expanded]="open()" (expandedChange)="open.set($event)">
2
+ <mat-expansion-panel-header>
3
+ @if (title()) {
4
+ <mat-panel-title>{{ title() }}</mat-panel-title>
5
+ } @else {
6
+ <ng-content select="[collapsibleHeader]" />
7
+ }
8
+ </mat-expansion-panel-header>
9
+ <ng-content />
10
+ </mat-expansion-panel>
@@ -0,0 +1,26 @@
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 { MatExpansionModule } from '@angular/material/expansion';
8
+
9
+ /**
10
+ * Thin wrapper over Material's `mat-expansion-panel`. Two-way bindable `open`
11
+ * and a `title`; body via `<ng-content>`. For custom header content, omit
12
+ * `title` and project `[collapsibleHeader]`.
13
+ */
14
+ @Component({
15
+ selector: 'app-collapsible',
16
+ changeDetection: ChangeDetectionStrategy.OnPush,
17
+ imports: [MatExpansionModule],
18
+ templateUrl: './collapsible.html',
19
+ })
20
+ export class CollapsibleComponent {
21
+ /** Two-way bindable expanded state. Supports `[(open)]`. */
22
+ readonly open = model<boolean>(false);
23
+
24
+ /** Header title text. Omit and project `[collapsibleHeader]` for custom content. */
25
+ readonly title = input<string>('');
26
+ }
@@ -0,0 +1,25 @@
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
+ [matDatepicker]="picker"
13
+ [min]="min()"
14
+ [max]="max()"
15
+ [placeholder]="placeholder()"
16
+ [disabled]="disabled()"
17
+ [readonly]="readonly()"
18
+ [(ngModel)]="value"
19
+ (click)="readonly() && picker.open()"
20
+ (keydown.enter)="readonly() && picker.open()"
21
+ (keydown.space)="readonly() && picker.open()"
22
+ />
23
+ <mat-datepicker-toggle matIconSuffix [for]="picker" />
24
+ <mat-datepicker #picker />
25
+ </mat-form-field>
@@ -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
+
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 pickers in a date-range filter,
22
+ * or a picker beside an operator select). Without this, the default
23
+ * `min-width: auto` on a flex item keeps each field at its content width and
24
+ * the row overflows its container.
25
+ */
26
+ min-width: 0;
27
+ }
28
+
29
+ .mat-mdc-form-field {
30
+ --mdc-outlined-text-field-container-shape: var(--radius-md);
31
+ font-size: 0.875rem; /* text-sm, matches the React inputs */
32
+ }
33
+
34
+ .mat-mdc-form-field-subscript-wrapper {
35
+ display: none;
36
+ }