@salesforce/templates 66.13.6 → 66.13.8

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 (747) hide show
  1. package/lib/templates/project/angularextapp/CHANGELOG.md +232 -0
  2. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/angular.json +2 -7
  3. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/components.json +6 -0
  4. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/eslint.config.js +9 -1
  5. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package-lock.json +19493 -9455
  6. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/package.json +17 -11
  7. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.config.ts +4 -6
  8. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/app.routes.ts +2 -2
  9. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.html +9 -13
  10. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.ts +16 -28
  11. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.html +19 -10
  12. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.ts +34 -25
  13. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.ts +40 -50
  14. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.html +38 -10
  15. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.ts +6 -11
  16. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.html +17 -22
  17. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.ts +29 -21
  18. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.html +16 -30
  19. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.ts +39 -36
  20. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.html +13 -30
  21. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.ts +6 -21
  22. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dropdown-menu/dropdown-menu.html +20 -0
  23. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/dropdown-menu/dropdown-menu.ts +100 -0
  24. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.html +5 -11
  25. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.ts +10 -18
  26. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/field-appearance.ts +8 -0
  27. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/icon/icon.ts +62 -0
  28. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.html +32 -17
  29. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.ts +57 -14
  30. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.ts +8 -4
  31. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.html +74 -10
  32. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.ts +74 -18
  33. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/types.ts +13 -0
  34. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.html +10 -38
  35. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.ts +12 -15
  36. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.html +34 -22
  37. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.ts +25 -34
  38. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.ts +11 -36
  39. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.ts +5 -9
  40. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/spinner/spinner.ts +14 -21
  41. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/auth-form/auth-form.html +2 -3
  42. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/menu/auth-menu/auth-menu.html +31 -21
  43. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/menu/auth-menu/auth-menu.ts +6 -18
  44. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/session/session.html +2 -2
  45. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/submit-button/submit-button.html +8 -4
  46. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/submit-button/submit-button.ts +4 -16
  47. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.html +4 -24
  48. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.ts +3 -16
  49. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-filter.ts +1 -1
  50. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.html +2 -1
  51. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.ts +6 -15
  52. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.html +2 -0
  53. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.ts +2 -17
  54. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/multi-select-filter.html +2 -1
  55. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/numeric-range-filter.ts +3 -21
  56. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.html +3 -3
  57. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.ts +9 -13
  58. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.html +2 -5
  59. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.ts +1 -15
  60. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.html +2 -5
  61. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.ts +3 -17
  62. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/pagination/pagination.ts +4 -20
  63. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.html +10 -59
  64. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.ts +13 -93
  65. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.html +3 -29
  66. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.ts +5 -12
  67. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.html +1 -23
  68. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.ts +3 -23
  69. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.html +1 -19
  70. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.ts +8 -36
  71. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.html +15 -4
  72. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.spec.ts +8 -6
  73. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.ts +56 -4
  74. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert-action.ts +14 -0
  75. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert-description.ts +17 -0
  76. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert-title.ts +17 -0
  77. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert.ts +35 -0
  78. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/alert/index.ts +16 -0
  79. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/button/hlm-button.token.ts +22 -0
  80. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/button/hlm-button.ts +72 -0
  81. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/button/index.ts +6 -0
  82. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-calendar-multi.ts +195 -0
  83. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-calendar-range.ts +194 -0
  84. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-calendar.ts +189 -0
  85. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-month-year-calendar.ts +119 -0
  86. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/index.ts +16 -0
  87. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-action.ts +12 -0
  88. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-avatar.ts +14 -0
  89. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-content.ts +12 -0
  90. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-description.ts +12 -0
  91. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-footer.ts +12 -0
  92. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-header.ts +15 -0
  93. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-title.ts +12 -0
  94. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card.token.ts +19 -0
  95. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card.ts +22 -0
  96. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/card/index.ts +28 -0
  97. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/hlm-collapsible-content.ts +14 -0
  98. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/hlm-collapsible-trigger.ts +9 -0
  99. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/hlm-collapsible.ts +15 -0
  100. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/index.ts +13 -0
  101. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-multi-input.ts +104 -0
  102. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-anchor.ts +23 -0
  103. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-input.ts +118 -0
  104. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-multi.token.ts +109 -0
  105. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-multi.ts +220 -0
  106. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-trigger.ts +104 -0
  107. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker.token.ts +69 -0
  108. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker.ts +203 -0
  109. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-range-input.ts +120 -0
  110. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-range-picker.token.ts +86 -0
  111. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-range-picker.ts +252 -0
  112. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-month-year-input.ts +105 -0
  113. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-month-year-picker.token.ts +89 -0
  114. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-month-year-picker.ts +196 -0
  115. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/index.ts +38 -0
  116. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-close.ts +9 -0
  117. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-content.ts +74 -0
  118. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-description.ts +17 -0
  119. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-footer.ts +15 -0
  120. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-header.ts +12 -0
  121. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-overlay.ts +27 -0
  122. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-portal.ts +8 -0
  123. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-title.ts +14 -0
  124. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-trigger.ts +14 -0
  125. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog.service.ts +46 -0
  126. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog.ts +24 -0
  127. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/index.ts +35 -0
  128. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-checkbox-indicator.ts +21 -0
  129. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-checkbox.ts +54 -0
  130. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-focus-on-hover.ts +35 -0
  131. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-group.ts +14 -0
  132. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-item-sub-indicator.ts +19 -0
  133. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-item.ts +42 -0
  134. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-label.ts +20 -0
  135. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-radio-indicator.ts +21 -0
  136. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-radio.ts +49 -0
  137. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-separator.ts +12 -0
  138. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-shortcut.ts +15 -0
  139. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-sub-trigger.ts +52 -0
  140. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-sub.ts +53 -0
  141. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-token.ts +26 -0
  142. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-trigger.ts +46 -0
  143. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu.ts +57 -0
  144. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/index.ts +49 -0
  145. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-content.ts +12 -0
  146. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-description.ts +53 -0
  147. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-error.ts +100 -0
  148. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-group.ts +15 -0
  149. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-label.ts +17 -0
  150. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-legend.ts +19 -0
  151. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-separator.ts +24 -0
  152. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-set.ts +15 -0
  153. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-title.ts +15 -0
  154. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field.ts +47 -0
  155. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/field/index.ts +34 -0
  156. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input/hlm-input.ts +21 -0
  157. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input/index.ts +5 -0
  158. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-addon.ts +40 -0
  159. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-button.ts +47 -0
  160. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-input.ts +17 -0
  161. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-text.ts +14 -0
  162. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group.ts +18 -0
  163. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/index.ts +19 -0
  164. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/label/hlm-label.ts +17 -0
  165. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/label/index.ts +5 -0
  166. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/label/label.html +11 -0
  167. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-numbered-pagination-query-params.ts +191 -0
  168. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-numbered-pagination.ts +290 -0
  169. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-content.ts +12 -0
  170. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-ellipsis.ts +27 -0
  171. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-item.ts +7 -0
  172. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-link.ts +51 -0
  173. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-next.ts +65 -0
  174. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-previous.ts +65 -0
  175. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination.ts +19 -0
  176. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/index.ts +31 -0
  177. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-content.ts +25 -0
  178. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-description.ts +12 -0
  179. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-header.ts +12 -0
  180. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-portal.ts +8 -0
  181. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-title.ts +12 -0
  182. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-trigger.ts +14 -0
  183. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover.ts +23 -0
  184. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/popover/index.ts +25 -0
  185. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-content.ts +44 -0
  186. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-group.ts +14 -0
  187. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-item.ts +36 -0
  188. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-label.ts +14 -0
  189. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-multiple.ts +37 -0
  190. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-placeholder.ts +17 -0
  191. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-portal.ts +8 -0
  192. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-scroll-down.ts +22 -0
  193. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-scroll-up.ts +22 -0
  194. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-separator.ts +14 -0
  195. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-trigger.ts +59 -0
  196. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-value-template.ts +5 -0
  197. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-value.ts +18 -0
  198. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-values-content.ts +9 -0
  199. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-values.ts +5 -0
  200. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select.ts +37 -0
  201. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/select/index.ts +52 -0
  202. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/separator/hlm-separator.ts +19 -0
  203. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/separator/index.ts +5 -0
  204. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/skeleton/hlm-skeleton.ts +14 -0
  205. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/skeleton/index.ts +5 -0
  206. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/spinner/hlm-spinner.ts +26 -0
  207. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/spinner/index.ts +5 -0
  208. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/utils/hlm.ts +313 -0
  209. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/utils/index.ts +2 -0
  210. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/shared/utils/provide-spartan-hlm.ts +34 -0
  211. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/index.html +0 -1
  212. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/{styles.scss → styles.css} +7 -38
  213. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/tsconfig.json +4 -1
  214. package/lib/templates/project/angularextapp/package.json +1 -1
  215. package/lib/templates/project/angularintapp/CHANGELOG.md +224 -0
  216. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/angular.json +2 -7
  217. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/components.json +6 -0
  218. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/eslint.config.js +9 -1
  219. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package-lock.json +19509 -9471
  220. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/package.json +18 -12
  221. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.config.ts +4 -6
  222. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/app.routes.ts +3 -2
  223. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.html +9 -13
  224. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/alert/alert.ts +16 -28
  225. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.html +19 -10
  226. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.ts +34 -25
  227. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.ts +40 -50
  228. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.html +38 -10
  229. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/collapsible/collapsible.ts +6 -11
  230. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.html +17 -22
  231. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.ts +29 -21
  232. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.html +16 -30
  233. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.ts +39 -36
  234. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.html +13 -30
  235. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/dialog/dialog.ts +6 -21
  236. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/dropdown-menu/dropdown-menu.html +20 -0
  237. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/dropdown-menu/dropdown-menu.ts +100 -0
  238. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.html +5 -11
  239. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/field/field.ts +10 -18
  240. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/field-appearance.ts +8 -0
  241. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/icon/icon.ts +62 -0
  242. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.html +32 -17
  243. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.ts +57 -14
  244. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.ts +8 -4
  245. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.html +74 -10
  246. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/paginator.ts +74 -18
  247. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/paginator/types.ts +13 -0
  248. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.html +10 -38
  249. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/popover/popover.ts +12 -15
  250. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.html +34 -22
  251. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.ts +25 -34
  252. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.ts +11 -36
  253. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.ts +5 -9
  254. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/spinner/spinner.ts +14 -21
  255. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/agentforce/agentforce-embed.service.ts +13 -141
  256. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/agentforce/conversation.html +1 -1
  257. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/agentforce/conversation.ts +0 -3
  258. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.html +4 -24
  259. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/breadcrumb/breadcrumb.ts +3 -16
  260. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-filter.ts +1 -1
  261. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.html +2 -1
  262. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/date-range-filter.ts +6 -15
  263. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.html +2 -0
  264. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/filter-field-wrapper.ts +2 -17
  265. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/multi-select-filter.html +2 -1
  266. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/numeric-range-filter.ts +3 -21
  267. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.html +3 -3
  268. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/search-filter.ts +9 -13
  269. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.html +2 -5
  270. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/select-filter.ts +1 -15
  271. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.html +2 -5
  272. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/filters/text-filter.ts +3 -17
  273. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/pagination/pagination.ts +4 -20
  274. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.html +10 -59
  275. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/search-bar/search-bar.ts +13 -93
  276. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.html +3 -29
  277. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/features/object-search/sort-control/sort-control.ts +5 -12
  278. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.html +1 -23
  279. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.ts +3 -23
  280. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.html +1 -19
  281. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-search/account-search-page.ts +8 -36
  282. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.html +15 -4
  283. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.spec.ts +8 -6
  284. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home.ts +56 -4
  285. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert-action.ts +14 -0
  286. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert-description.ts +17 -0
  287. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert-title.ts +17 -0
  288. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/alert/hlm-alert.ts +35 -0
  289. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/alert/index.ts +16 -0
  290. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/button/hlm-button.token.ts +22 -0
  291. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/button/hlm-button.ts +72 -0
  292. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/button/index.ts +6 -0
  293. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-calendar-multi.ts +195 -0
  294. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-calendar-range.ts +194 -0
  295. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-calendar.ts +189 -0
  296. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/hlm-month-year-calendar.ts +119 -0
  297. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/calendar/index.ts +16 -0
  298. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-action.ts +12 -0
  299. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-avatar.ts +14 -0
  300. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-content.ts +12 -0
  301. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-description.ts +12 -0
  302. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-footer.ts +12 -0
  303. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-header.ts +15 -0
  304. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card-title.ts +12 -0
  305. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card.token.ts +19 -0
  306. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/hlm-card.ts +22 -0
  307. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/card/index.ts +28 -0
  308. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/hlm-collapsible-content.ts +14 -0
  309. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/hlm-collapsible-trigger.ts +9 -0
  310. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/hlm-collapsible.ts +15 -0
  311. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/collapsible/index.ts +13 -0
  312. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-multi-input.ts +104 -0
  313. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-anchor.ts +23 -0
  314. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-input.ts +118 -0
  315. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-multi.token.ts +109 -0
  316. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-multi.ts +220 -0
  317. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker-trigger.ts +104 -0
  318. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker.token.ts +69 -0
  319. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-picker.ts +203 -0
  320. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-range-input.ts +120 -0
  321. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-range-picker.token.ts +86 -0
  322. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-date-range-picker.ts +252 -0
  323. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-month-year-input.ts +105 -0
  324. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-month-year-picker.token.ts +89 -0
  325. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/hlm-month-year-picker.ts +196 -0
  326. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/date-picker/index.ts +38 -0
  327. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-close.ts +9 -0
  328. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-content.ts +74 -0
  329. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-description.ts +17 -0
  330. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-footer.ts +15 -0
  331. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-header.ts +12 -0
  332. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-overlay.ts +27 -0
  333. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-portal.ts +8 -0
  334. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-title.ts +14 -0
  335. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog-trigger.ts +14 -0
  336. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog.service.ts +46 -0
  337. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/hlm-dialog.ts +24 -0
  338. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dialog/index.ts +35 -0
  339. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-checkbox-indicator.ts +21 -0
  340. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-checkbox.ts +54 -0
  341. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-focus-on-hover.ts +35 -0
  342. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-group.ts +14 -0
  343. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-item-sub-indicator.ts +19 -0
  344. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-item.ts +42 -0
  345. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-label.ts +20 -0
  346. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-radio-indicator.ts +21 -0
  347. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-radio.ts +49 -0
  348. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-separator.ts +12 -0
  349. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-shortcut.ts +15 -0
  350. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-sub-trigger.ts +52 -0
  351. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-sub.ts +53 -0
  352. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-token.ts +26 -0
  353. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu-trigger.ts +46 -0
  354. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/hlm-dropdown-menu.ts +57 -0
  355. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/dropdown-menu/index.ts +49 -0
  356. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-content.ts +12 -0
  357. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-description.ts +53 -0
  358. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-error.ts +100 -0
  359. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-group.ts +15 -0
  360. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-label.ts +17 -0
  361. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-legend.ts +19 -0
  362. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-separator.ts +24 -0
  363. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-set.ts +15 -0
  364. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field-title.ts +15 -0
  365. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/hlm-field.ts +47 -0
  366. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/field/index.ts +34 -0
  367. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input/hlm-input.ts +21 -0
  368. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input/index.ts +5 -0
  369. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-addon.ts +40 -0
  370. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-button.ts +47 -0
  371. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-input.ts +17 -0
  372. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group-text.ts +14 -0
  373. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/hlm-input-group.ts +18 -0
  374. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/input-group/index.ts +19 -0
  375. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/label/hlm-label.ts +17 -0
  376. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/label/index.ts +5 -0
  377. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/label/label.html +11 -0
  378. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-numbered-pagination-query-params.ts +191 -0
  379. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-numbered-pagination.ts +290 -0
  380. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-content.ts +12 -0
  381. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-ellipsis.ts +27 -0
  382. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-item.ts +7 -0
  383. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-link.ts +51 -0
  384. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-next.ts +65 -0
  385. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination-previous.ts +65 -0
  386. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/hlm-pagination.ts +19 -0
  387. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/pagination/index.ts +31 -0
  388. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-content.ts +25 -0
  389. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-description.ts +12 -0
  390. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-header.ts +12 -0
  391. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-portal.ts +8 -0
  392. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-title.ts +12 -0
  393. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover-trigger.ts +14 -0
  394. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/hlm-popover.ts +23 -0
  395. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/popover/index.ts +25 -0
  396. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-content.ts +44 -0
  397. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-group.ts +14 -0
  398. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-item.ts +36 -0
  399. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-label.ts +14 -0
  400. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-multiple.ts +37 -0
  401. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-placeholder.ts +17 -0
  402. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-portal.ts +8 -0
  403. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-scroll-down.ts +22 -0
  404. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-scroll-up.ts +22 -0
  405. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-separator.ts +14 -0
  406. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-trigger.ts +59 -0
  407. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-value-template.ts +5 -0
  408. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-value.ts +18 -0
  409. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-values-content.ts +9 -0
  410. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select-values.ts +5 -0
  411. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/hlm-select.ts +37 -0
  412. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/select/index.ts +52 -0
  413. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/separator/hlm-separator.ts +19 -0
  414. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/separator/index.ts +5 -0
  415. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/skeleton/hlm-skeleton.ts +14 -0
  416. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/skeleton/index.ts +5 -0
  417. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/spinner/hlm-spinner.ts +26 -0
  418. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/spinner/index.ts +5 -0
  419. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/utils/hlm.ts +313 -0
  420. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/utils/index.ts +2 -0
  421. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/shared/utils/provide-spartan-hlm.ts +34 -0
  422. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/index.html +0 -1
  423. package/lib/templates/{uiBundles/angularbasic/src/styles.scss → project/angularintapp/_p_/_m_/_w_/_a_/src/styles.css} +7 -38
  424. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/tsconfig.json +4 -1
  425. package/lib/templates/project/angularintapp/package.json +1 -1
  426. package/lib/templates/project/reactexternalapp/CHANGELOG.md +96 -0
  427. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package-lock.json +419 -141
  428. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/package.json +4 -4
  429. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_ls_/LanguageSwitcher.tsx +116 -0
  430. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_ls_/__examples__/language-switcher-example.tsx +36 -0
  431. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_ls_/__examples__/vite-config-site-example.ts +44 -0
  432. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_ls_/buildLanguageUrl.ts +158 -0
  433. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_ls_/index.ts +28 -0
  434. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/_ls_/languages.ts +46 -0
  435. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/README.md +246 -0
  436. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/api/apiUtils.ts +56 -0
  437. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/api/orgApiVersionService.ts +37 -0
  438. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/api/searchableContentTypesService.ts +116 -0
  439. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/channelResolver.ts +40 -0
  440. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/cmsQueryFragment.ts +97 -0
  441. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/contentTypeSessionCache.ts +134 -0
  442. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/contentTypeUtils.ts +38 -0
  443. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/hooks/useSearchableContentTypes.ts +128 -0
  444. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/index.ts +54 -0
  445. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/parseResponse.ts +65 -0
  446. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/searchChannel.ts +15 -0
  447. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/types.ts +66 -0
  448. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/registry.ts +38 -0
  449. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/index.ts +19 -0
  450. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/parseResponse.ts +56 -0
  451. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/queryFragment.ts +141 -0
  452. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/types.ts +101 -0
  453. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/api/searchService.ts +110 -45
  454. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/GlobalSearchBox.tsx +98 -0
  455. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/MergedSearchResults.tsx +34 -17
  456. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/Search.tsx +31 -13
  457. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/SearchResults.tsx +22 -11
  458. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/SourceSection.tsx +9 -4
  459. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/controls/ScopeSelector.tsx +58 -6
  460. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/CmsResultRow.tsx +101 -0
  461. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/resolveResultRenderer.ts +49 -0
  462. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/config.json +7 -2
  463. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/constants.ts +8 -0
  464. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/hooks/useSearch.ts +313 -50
  465. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/index.ts +26 -1
  466. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/queryBuilder.ts +62 -118
  467. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/_f_/search/types.ts +74 -5
  468. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/index.ts +5 -3
  469. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/pages/AccountObjectDetailPage.tsx +4 -2
  470. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/pages/Home.tsx +3 -42
  471. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/routes.tsx +12 -5
  472. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/types/globals.d.ts +23 -0
  473. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/tsconfig.tsbuildinfo +1 -1
  474. package/lib/templates/project/reactexternalapp/package.json +1 -1
  475. package/lib/templates/project/reactinternalapp/CHANGELOG.md +96 -0
  476. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package-lock.json +430 -152
  477. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/package.json +5 -5
  478. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/README.md +246 -0
  479. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/api/apiUtils.ts +56 -0
  480. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/api/orgApiVersionService.ts +37 -0
  481. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/api/searchableContentTypesService.ts +116 -0
  482. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/channelResolver.ts +40 -0
  483. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/cmsQueryFragment.ts +97 -0
  484. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/contentTypeSessionCache.ts +134 -0
  485. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/contentTypeUtils.ts +38 -0
  486. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/hooks/useSearchableContentTypes.ts +128 -0
  487. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/index.ts +54 -0
  488. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/parseResponse.ts +65 -0
  489. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/searchChannel.ts +15 -0
  490. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/cms/types.ts +66 -0
  491. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/registry.ts +38 -0
  492. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/index.ts +19 -0
  493. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/parseResponse.ts +56 -0
  494. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/sobject/queryFragment.ts +141 -0
  495. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/adapters/types.ts +101 -0
  496. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/api/searchService.ts +110 -45
  497. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/GlobalSearchBox.tsx +98 -0
  498. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/MergedSearchResults.tsx +34 -17
  499. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/Search.tsx +31 -13
  500. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/SearchResults.tsx +22 -11
  501. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/SourceSection.tsx +9 -4
  502. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/controls/ScopeSelector.tsx +58 -6
  503. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/CmsResultRow.tsx +101 -0
  504. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/components/results/resolveResultRenderer.ts +49 -0
  505. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/config.json +7 -2
  506. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/constants.ts +8 -0
  507. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/hooks/useSearch.ts +313 -50
  508. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/index.ts +26 -1
  509. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/queryBuilder.ts +62 -118
  510. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/_f_/search/types.ts +74 -5
  511. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/pages/Home.tsx +3 -42
  512. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/routes.tsx +12 -5
  513. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/tsconfig.tsbuildinfo +1 -1
  514. package/lib/templates/project/reactinternalapp/package.json +1 -1
  515. package/lib/templates/uiBundles/angularbasic/angular.json +2 -7
  516. package/lib/templates/uiBundles/angularbasic/components.json +6 -0
  517. package/lib/templates/uiBundles/angularbasic/eslint.config.js +9 -1
  518. package/lib/templates/uiBundles/angularbasic/package-lock.json +19493 -9455
  519. package/lib/templates/uiBundles/angularbasic/package.json +17 -11
  520. package/lib/templates/uiBundles/angularbasic/src/app/app.config.ts +4 -6
  521. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/alert/alert.html +9 -13
  522. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/alert/alert.ts +16 -28
  523. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/button/button.html +19 -10
  524. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/button/button.ts +34 -25
  525. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/card/card.ts +40 -50
  526. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/collapsible/collapsible.html +38 -10
  527. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/collapsible/collapsible.ts +6 -11
  528. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/date-picker/date-picker.html +17 -22
  529. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/date-picker/date-picker.ts +29 -21
  530. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/date-range-picker/date-range-picker.html +16 -30
  531. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/date-range-picker/date-range-picker.ts +39 -36
  532. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/dialog/dialog.html +13 -30
  533. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/dialog/dialog.ts +6 -21
  534. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/dropdown-menu/dropdown-menu.html +20 -0
  535. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/dropdown-menu/dropdown-menu.ts +100 -0
  536. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/field/field.html +5 -11
  537. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/field/field.ts +10 -18
  538. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/field-appearance.ts +8 -0
  539. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/icon/icon.ts +62 -0
  540. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/input/input.html +32 -17
  541. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/input/input.ts +57 -14
  542. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/label/label.ts +8 -4
  543. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/paginator/paginator.html +74 -10
  544. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/paginator/paginator.ts +74 -18
  545. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/paginator/types.ts +13 -0
  546. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/popover/popover.html +10 -38
  547. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/popover/popover.ts +12 -15
  548. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/select/select.html +34 -22
  549. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/select/select.ts +25 -34
  550. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/separator/separator.ts +11 -36
  551. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/skeleton/skeleton.ts +5 -9
  552. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/spinner/spinner.ts +14 -21
  553. package/lib/templates/uiBundles/angularbasic/src/app/shared/alert/hlm-alert-action.ts +14 -0
  554. package/lib/templates/uiBundles/angularbasic/src/app/shared/alert/hlm-alert-description.ts +17 -0
  555. package/lib/templates/uiBundles/angularbasic/src/app/shared/alert/hlm-alert-title.ts +17 -0
  556. package/lib/templates/uiBundles/angularbasic/src/app/shared/alert/hlm-alert.ts +35 -0
  557. package/lib/templates/uiBundles/angularbasic/src/app/shared/alert/index.ts +16 -0
  558. package/lib/templates/uiBundles/angularbasic/src/app/shared/button/hlm-button.token.ts +22 -0
  559. package/lib/templates/uiBundles/angularbasic/src/app/shared/button/hlm-button.ts +72 -0
  560. package/lib/templates/uiBundles/angularbasic/src/app/shared/button/index.ts +6 -0
  561. package/lib/templates/uiBundles/angularbasic/src/app/shared/calendar/hlm-calendar-multi.ts +195 -0
  562. package/lib/templates/uiBundles/angularbasic/src/app/shared/calendar/hlm-calendar-range.ts +194 -0
  563. package/lib/templates/uiBundles/angularbasic/src/app/shared/calendar/hlm-calendar.ts +189 -0
  564. package/lib/templates/uiBundles/angularbasic/src/app/shared/calendar/hlm-month-year-calendar.ts +119 -0
  565. package/lib/templates/uiBundles/angularbasic/src/app/shared/calendar/index.ts +16 -0
  566. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-action.ts +12 -0
  567. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-avatar.ts +14 -0
  568. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-content.ts +12 -0
  569. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-description.ts +12 -0
  570. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-footer.ts +12 -0
  571. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-header.ts +15 -0
  572. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card-title.ts +12 -0
  573. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card.token.ts +19 -0
  574. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/hlm-card.ts +22 -0
  575. package/lib/templates/uiBundles/angularbasic/src/app/shared/card/index.ts +28 -0
  576. package/lib/templates/uiBundles/angularbasic/src/app/shared/collapsible/hlm-collapsible-content.ts +14 -0
  577. package/lib/templates/uiBundles/angularbasic/src/app/shared/collapsible/hlm-collapsible-trigger.ts +9 -0
  578. package/lib/templates/uiBundles/angularbasic/src/app/shared/collapsible/hlm-collapsible.ts +15 -0
  579. package/lib/templates/uiBundles/angularbasic/src/app/shared/collapsible/index.ts +13 -0
  580. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-multi-input.ts +104 -0
  581. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker-anchor.ts +23 -0
  582. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker-input.ts +118 -0
  583. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker-multi.token.ts +109 -0
  584. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker-multi.ts +220 -0
  585. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker-trigger.ts +104 -0
  586. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker.token.ts +69 -0
  587. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-picker.ts +203 -0
  588. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-range-input.ts +120 -0
  589. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-range-picker.token.ts +86 -0
  590. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-date-range-picker.ts +252 -0
  591. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-month-year-input.ts +105 -0
  592. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-month-year-picker.token.ts +89 -0
  593. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/hlm-month-year-picker.ts +196 -0
  594. package/lib/templates/uiBundles/angularbasic/src/app/shared/date-picker/index.ts +38 -0
  595. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-close.ts +9 -0
  596. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-content.ts +74 -0
  597. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-description.ts +17 -0
  598. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-footer.ts +15 -0
  599. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-header.ts +12 -0
  600. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-overlay.ts +27 -0
  601. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-portal.ts +8 -0
  602. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-title.ts +14 -0
  603. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog-trigger.ts +14 -0
  604. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog.service.ts +46 -0
  605. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/hlm-dialog.ts +24 -0
  606. package/lib/templates/uiBundles/angularbasic/src/app/shared/dialog/index.ts +35 -0
  607. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-checkbox-indicator.ts +21 -0
  608. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-checkbox.ts +54 -0
  609. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-focus-on-hover.ts +35 -0
  610. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-group.ts +14 -0
  611. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-item-sub-indicator.ts +19 -0
  612. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-item.ts +42 -0
  613. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-label.ts +20 -0
  614. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-radio-indicator.ts +21 -0
  615. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-radio.ts +49 -0
  616. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-separator.ts +12 -0
  617. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-shortcut.ts +15 -0
  618. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-sub-trigger.ts +52 -0
  619. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-sub.ts +53 -0
  620. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-token.ts +26 -0
  621. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu-trigger.ts +46 -0
  622. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/hlm-dropdown-menu.ts +57 -0
  623. package/lib/templates/uiBundles/angularbasic/src/app/shared/dropdown-menu/index.ts +49 -0
  624. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-content.ts +12 -0
  625. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-description.ts +53 -0
  626. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-error.ts +100 -0
  627. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-group.ts +15 -0
  628. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-label.ts +17 -0
  629. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-legend.ts +19 -0
  630. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-separator.ts +24 -0
  631. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-set.ts +15 -0
  632. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field-title.ts +15 -0
  633. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/hlm-field.ts +47 -0
  634. package/lib/templates/uiBundles/angularbasic/src/app/shared/field/index.ts +34 -0
  635. package/lib/templates/uiBundles/angularbasic/src/app/shared/input/hlm-input.ts +21 -0
  636. package/lib/templates/uiBundles/angularbasic/src/app/shared/input/index.ts +5 -0
  637. package/lib/templates/uiBundles/angularbasic/src/app/shared/input-group/hlm-input-group-addon.ts +40 -0
  638. package/lib/templates/uiBundles/angularbasic/src/app/shared/input-group/hlm-input-group-button.ts +47 -0
  639. package/lib/templates/uiBundles/angularbasic/src/app/shared/input-group/hlm-input-group-input.ts +17 -0
  640. package/lib/templates/uiBundles/angularbasic/src/app/shared/input-group/hlm-input-group-text.ts +14 -0
  641. package/lib/templates/uiBundles/angularbasic/src/app/shared/input-group/hlm-input-group.ts +18 -0
  642. package/lib/templates/uiBundles/angularbasic/src/app/shared/input-group/index.ts +19 -0
  643. package/lib/templates/uiBundles/angularbasic/src/app/shared/label/hlm-label.ts +17 -0
  644. package/lib/templates/uiBundles/angularbasic/src/app/shared/label/index.ts +5 -0
  645. package/lib/templates/uiBundles/angularbasic/src/app/shared/label/label.html +11 -0
  646. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-numbered-pagination-query-params.ts +191 -0
  647. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-numbered-pagination.ts +290 -0
  648. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination-content.ts +12 -0
  649. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination-ellipsis.ts +27 -0
  650. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination-item.ts +7 -0
  651. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination-link.ts +51 -0
  652. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination-next.ts +65 -0
  653. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination-previous.ts +65 -0
  654. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/hlm-pagination.ts +19 -0
  655. package/lib/templates/uiBundles/angularbasic/src/app/shared/pagination/index.ts +31 -0
  656. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover-content.ts +25 -0
  657. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover-description.ts +12 -0
  658. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover-header.ts +12 -0
  659. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover-portal.ts +8 -0
  660. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover-title.ts +12 -0
  661. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover-trigger.ts +14 -0
  662. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/hlm-popover.ts +23 -0
  663. package/lib/templates/uiBundles/angularbasic/src/app/shared/popover/index.ts +25 -0
  664. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-content.ts +44 -0
  665. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-group.ts +14 -0
  666. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-item.ts +36 -0
  667. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-label.ts +14 -0
  668. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-multiple.ts +37 -0
  669. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-placeholder.ts +17 -0
  670. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-portal.ts +8 -0
  671. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-scroll-down.ts +22 -0
  672. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-scroll-up.ts +22 -0
  673. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-separator.ts +14 -0
  674. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-trigger.ts +59 -0
  675. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-value-template.ts +5 -0
  676. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-value.ts +18 -0
  677. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-values-content.ts +9 -0
  678. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select-values.ts +5 -0
  679. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/hlm-select.ts +37 -0
  680. package/lib/templates/uiBundles/angularbasic/src/app/shared/select/index.ts +52 -0
  681. package/lib/templates/uiBundles/angularbasic/src/app/shared/separator/hlm-separator.ts +19 -0
  682. package/lib/templates/uiBundles/angularbasic/src/app/shared/separator/index.ts +5 -0
  683. package/lib/templates/uiBundles/angularbasic/src/app/shared/skeleton/hlm-skeleton.ts +14 -0
  684. package/lib/templates/uiBundles/angularbasic/src/app/shared/skeleton/index.ts +5 -0
  685. package/lib/templates/uiBundles/angularbasic/src/app/shared/spinner/hlm-spinner.ts +26 -0
  686. package/lib/templates/uiBundles/angularbasic/src/app/shared/spinner/index.ts +5 -0
  687. package/lib/templates/uiBundles/angularbasic/src/app/shared/utils/hlm.ts +313 -0
  688. package/lib/templates/uiBundles/angularbasic/src/app/shared/utils/index.ts +2 -0
  689. package/lib/templates/uiBundles/angularbasic/src/app/shared/utils/provide-spartan-hlm.ts +34 -0
  690. package/lib/templates/uiBundles/angularbasic/src/index.html +0 -1
  691. package/lib/templates/{project/angularintapp/_p_/_m_/_w_/_a_/src/styles.scss → uiBundles/angularbasic/src/styles.css} +7 -38
  692. package/lib/templates/uiBundles/angularbasic/tsconfig.json +4 -1
  693. package/lib/templates/uiBundles/reactbasic/package-lock.json +393 -115
  694. package/lib/utils/template-placeholders.js +7 -0
  695. package/lib/utils/template-placeholders.js.map +1 -1
  696. package/lib/utils/uiBundleTemplateUtils.d.ts +3 -1
  697. package/lib/utils/uiBundleTemplateUtils.js +4 -1
  698. package/lib/utils/uiBundleTemplateUtils.js.map +1 -1
  699. package/package.json +7 -7
  700. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/_field-size.scss +0 -42
  701. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.scss +0 -112
  702. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.scss +0 -34
  703. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.scss +0 -36
  704. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.scss +0 -33
  705. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.scss +0 -35
  706. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.html +0 -3
  707. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.scss +0 -35
  708. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.html +0 -1
  709. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.scss +0 -23
  710. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.html +0 -1
  711. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.scss +0 -28
  712. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/features/authentication/submit-button/submit-button.scss +0 -17
  713. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.scss +0 -7
  714. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.html +0 -18
  715. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.ts +0 -47
  716. package/lib/templates/project/angularextapp/_p_/_m_/_w_/_a_/src/theme.scss +0 -39
  717. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/_field-size.scss +0 -42
  718. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/button/button.scss +0 -112
  719. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/card/card.scss +0 -34
  720. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-picker/date-picker.scss +0 -36
  721. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/date-range-picker/date-range-picker.scss +0 -33
  722. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/input/input.scss +0 -35
  723. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/label/label.html +0 -3
  724. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/select/select.scss +0 -35
  725. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.html +0 -1
  726. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/separator/separator.scss +0 -23
  727. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.html +0 -1
  728. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/components/ui/skeleton/skeleton.scss +0 -28
  729. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/account-detail/account-detail-page.scss +0 -7
  730. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.html +0 -18
  731. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/app/pages/home/home-page.ts +0 -47
  732. package/lib/templates/project/angularintapp/_p_/_m_/_w_/_a_/src/theme.scss +0 -39
  733. package/lib/templates/project/reactexternalapp/_p_/_m_/_w_/_a_/src/pages/AccountSearch.tsx +0 -25
  734. package/lib/templates/project/reactinternalapp/_p_/_m_/_w_/_a_/src/pages/AccountSearch.tsx +0 -25
  735. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/_field-size.scss +0 -42
  736. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/button/button.scss +0 -112
  737. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/card/card.scss +0 -34
  738. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/date-picker/date-picker.scss +0 -36
  739. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/date-range-picker/date-range-picker.scss +0 -33
  740. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/input/input.scss +0 -35
  741. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/label/label.html +0 -3
  742. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/select/select.scss +0 -35
  743. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/separator/separator.html +0 -1
  744. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/separator/separator.scss +0 -23
  745. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/skeleton/skeleton.html +0 -1
  746. package/lib/templates/uiBundles/angularbasic/src/app/components/ui/skeleton/skeleton.scss +0 -28
  747. package/lib/templates/uiBundles/angularbasic/src/theme.scss +0 -39
@@ -0,0 +1,141 @@
1
+ /**
2
+ * SObject fragment builder.
3
+ *
4
+ * Extracted verbatim from `queryBuilder.ts`: `buildSelectionBody`,
5
+ * `renderField`, `buildSourceWhere`, `assertValidKey`, `KEY_PATTERN`, and the
6
+ * per-source variable/selection assembly. Emits one `QueryFragmentContribution`
7
+ * with `placement: "uiapi.query"` — the `${key}: ${objectName}(...) { … }`
8
+ * selection, its 4 per-source variable declarations, and their 4 values.
9
+ *
10
+ * Behaviour is byte-for-byte equivalent to the original inline logic; this is a
11
+ * move, not a rewrite.
12
+ *
13
+ * Selection sets are generated from `displayFields`:
14
+ * - string `"Name"` → `Name @optional { value displayValue }`
15
+ * - `{ name, raw: true }` → `Name`
16
+ * - `{ name, subfields }` → nested `Name @optional { ... }`
17
+ *
18
+ * The `idField` (default "Id") is always emitted; it is **not** wrapped
19
+ * because uiapi's Id is a scalar.
20
+ */
21
+
22
+ import {
23
+ buildFilter,
24
+ buildGlobalQueryClause,
25
+ type ActiveFilterValue,
26
+ } from "../../utils/filterUtils";
27
+ import { buildOrderBy } from "../../utils/sortUtils";
28
+ import type { DisplayField, SObjectSourceConfig } from "../../types";
29
+ import type { QueryFragmentContribution, SourceRequest } from "../types";
30
+
31
+ const KEY_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
32
+
33
+ function assertValidKey(key: string): void {
34
+ if (!KEY_PATTERN.test(key)) {
35
+ throw new Error(
36
+ `Invalid source key "${key}". Must match /^[A-Za-z_][A-Za-z0-9_]*$/ to be a valid GraphQL alias and variable prefix.`,
37
+ );
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Combines a per-source structured-filter clause with the global-q `or` clause.
43
+ * Returns `undefined` when neither side has any constraints.
44
+ */
45
+ function buildSourceWhere(
46
+ source: SObjectSourceConfig,
47
+ q: string,
48
+ filters: ActiveFilterValue[],
49
+ ): unknown {
50
+ const clauses: unknown[] = [];
51
+ const globalClause = buildGlobalQueryClause(q, source.searchableFields);
52
+ if (globalClause) clauses.push(globalClause);
53
+ const structured = buildFilter(filters, source.filterBy ?? []);
54
+ if (structured) clauses.push(structured);
55
+ if (clauses.length === 0) return undefined;
56
+ if (clauses.length === 1) return clauses[0];
57
+ return { and: clauses };
58
+ }
59
+
60
+ function buildSelectionBody(source: SObjectSourceConfig): string {
61
+ const idField = source.idField ?? "Id";
62
+ const fieldLines = [` ${idField}`];
63
+ for (const field of source.displayFields) {
64
+ fieldLines.push(...renderField(field, " "));
65
+ }
66
+ return [
67
+ ` edges { node {`,
68
+ ...fieldLines,
69
+ ` } }`,
70
+ ` pageInfo { hasNextPage hasPreviousPage startCursor endCursor }`,
71
+ ` totalCount`,
72
+ ].join("\n");
73
+ }
74
+
75
+ function renderField(field: DisplayField, indentStr: string): string[] {
76
+ if (typeof field === "string") {
77
+ return [`${indentStr}${field} @optional { value displayValue }`];
78
+ }
79
+ if ("raw" in field) {
80
+ return [`${indentStr}${field.name}`];
81
+ }
82
+ const lines = [`${indentStr}${field.name} @optional {`];
83
+ for (const sub of field.subfields) {
84
+ lines.push(...renderField(sub, indentStr + " "));
85
+ }
86
+ lines.push(`${indentStr}}`);
87
+ return lines;
88
+ }
89
+
90
+ /**
91
+ * Builds one SObject source's `QueryFragmentContribution`.
92
+ *
93
+ * The fragment is the `${key}: ${objectName}(...) { … }` selection that lives
94
+ * inside `uiapi.query`; the 4 declarations/values are the per-source
95
+ * `first / after / where / orderBy` variables. Output matches the original
96
+ * inline builder exactly.
97
+ */
98
+ export function buildSObjectFragment(
99
+ request: SourceRequest<SObjectSourceConfig>,
100
+ ): QueryFragmentContribution {
101
+ const { source } = request;
102
+ assertValidKey(source.key);
103
+
104
+ const firstVar = `${source.key}_first`;
105
+ const afterVar = `${source.key}_after`;
106
+ const whereVar = `${source.key}_where`;
107
+ const orderByVar = `${source.key}_orderBy`;
108
+ const whereType = source.whereTypeName ?? `${source.objectName}_Filter`;
109
+ const orderByType = source.orderByTypeName ?? `${source.objectName}_OrderBy`;
110
+
111
+ const variableDeclarations = [
112
+ `$${firstVar}: Int`,
113
+ `$${afterVar}: String`,
114
+ `$${whereVar}: ${whereType}`,
115
+ `$${orderByVar}: ${orderByType}`,
116
+ ];
117
+
118
+ const fragment =
119
+ `${source.key}: ${source.objectName}(` +
120
+ `first: $${firstVar}, ` +
121
+ `after: $${afterVar}, ` +
122
+ `where: $${whereVar}, ` +
123
+ `orderBy: $${orderByVar}` +
124
+ `) {\n` +
125
+ buildSelectionBody(source) +
126
+ `\n}`;
127
+
128
+ const variables: Record<string, unknown> = {
129
+ [firstVar]: request.pageSize,
130
+ [afterVar]: request.afterCursor ?? null,
131
+ [whereVar]: buildSourceWhere(source, request.q, request.filters) ?? null,
132
+ [orderByVar]: buildOrderBy(request.sort) ?? null,
133
+ };
134
+
135
+ return {
136
+ variableDeclarations,
137
+ variables,
138
+ placement: "uiapi.query",
139
+ fragment,
140
+ };
141
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * Kind-agnostic adapter contracts for unified (multi-source) search.
3
+ *
4
+ * Every searchable backend ("sobject", "cms", …) is fronted by a
5
+ * {@link SourceAdapter}. The core query builder and result parser are
6
+ * completely kind-agnostic: they dispatch to the adapter registered for a
7
+ * source's `kind`, so a new backend plugs in by adding a `kind` + an adapter,
8
+ * never by touching the common builder/parser or any consumer.
9
+ *
10
+ * - {@link SourceAdapter.buildRequest} contributes a {@link QueryFragmentContribution}
11
+ * (its GraphQL fragment, variable declarations, and variable values) that the
12
+ * builder assembles into one combined document.
13
+ * - {@link SourceAdapter.parseResponse} receives the full response `data` root
14
+ * and extracts this source's `SourceResult`, returning `null` (never
15
+ * throwing) when its own subtree is absent or errored — this is what lets
16
+ * sources fail independently (partial-failure resilience).
17
+ */
18
+
19
+ import type { SourceConfig, SourceResult } from "../types";
20
+ import type { ActiveFilterValue } from "../utils/filterUtils";
21
+ import type { SortState } from "../utils/sortUtils";
22
+
23
+ /**
24
+ * One source's contribution to the combined GraphQL document.
25
+ *
26
+ * The builder concatenates every source's `variableDeclarations` into the
27
+ * `query Search(...)` header and merges every source's `variables` into one
28
+ * flat map. Fragments are placed by `placement`:
29
+ * - `"uiapi.query"` → inside the shared `uiapi { query { … } }` block.
30
+ * - `"root"` → a sibling of `uiapi` at the document root (e.g. the CMS
31
+ * `managed_content { … }` block).
32
+ *
33
+ * A contribution MAY declare zero extra variables (e.g. the CMS bootstrap call
34
+ * omits `$cmsContentTypeFQNs` entirely). The builder handles declaration lists of
35
+ * differing lengths, so an unused/undeclared variable is never emitted.
36
+ */
37
+ export interface QueryFragmentContribution {
38
+ /** Namespaced GraphQL variable declarations, e.g. `"$cmsKeyword: String!"`. */
39
+ variableDeclarations: string[];
40
+ /** Values for the declared variables, keyed by (unprefixed) variable name. */
41
+ variables: Record<string, unknown>;
42
+ /** Where the `fragment` is spliced into the combined document. */
43
+ placement: "uiapi.query" | "root";
44
+ /** The GraphQL selection fragment (unindented; the builder indents it). */
45
+ fragment: string;
46
+ }
47
+
48
+ /**
49
+ * A per-source search request. Generic over the source config so an adapter can
50
+ * narrow to its own config kind (e.g. `SourceRequest<CmsSourceConfig>`).
51
+ *
52
+ * The base fields (`source`/`q`/`filters`/`sort`/`pageSize`/`afterCursor`) are
53
+ * kind-agnostic. The trailing fields are optional and only populated for the
54
+ * kinds that need them; the sync query builder never resolves async values, so
55
+ * anything async (e.g. the CMS UIBundle id) is resolved by the caller and
56
+ * threaded in here.
57
+ */
58
+ export interface SourceRequest<T extends SourceConfig = SourceConfig> {
59
+ /** The config for the source this request targets. */
60
+ source: T;
61
+ /** The global search term, broadcast to every source. */
62
+ q: string;
63
+ /** Active structured filters (SObject-relevant; other kinds may ignore). */
64
+ filters: ActiveFilterValue[];
65
+ /** Active sort (SObject-relevant; other kinds may ignore). */
66
+ sort: SortState | null;
67
+ /** Page size for this fetch (validated against `pageSizeOptions` upstream). */
68
+ pageSize: number;
69
+ /** Opaque forward cursor for this fetch (CMS decodes it to an offset). */
70
+ afterCursor: string | undefined;
71
+ /**
72
+ * CMS-only, optional. Present (non-null, non-empty) only when content types
73
+ * are known/selected; absent on the bootstrap call so the CMS adapter omits
74
+ * `$cmsContentTypeFQNs` entirely.
75
+ */
76
+ contentTypes?: string[] | null;
77
+ /**
78
+ * CMS-only, optional. The resolved UIBundle id fed into the CMS search
79
+ * query. Resolved by the caller (async `getUIBundleId()`) BEFORE the sync
80
+ * query builder runs, then threaded in here so `buildRequest` stays
81
+ * synchronous. Ignored by non-CMS adapters.
82
+ */
83
+ uiBundleId?: string;
84
+ }
85
+
86
+ /**
87
+ * Runtime adapter for one source `kind`. Bridges a kind-agnostic
88
+ * {@link SourceRequest} to a GraphQL fragment and back to a {@link SourceResult}.
89
+ */
90
+ export interface SourceAdapter<T extends SourceConfig = SourceConfig> {
91
+ /** The `kind` discriminator this adapter handles. */
92
+ readonly kind: T["kind"];
93
+ /** Build this source's fragment/variables contribution for the combined doc. */
94
+ buildRequest(request: SourceRequest<T>): QueryFragmentContribution;
95
+ /**
96
+ * Extract this source's result from the full response `data` root. Returns
97
+ * `null` when the source's own subtree is absent or errored — never throws
98
+ * for a partial failure.
99
+ */
100
+ parseResponse(root: Record<string, unknown>, request: SourceRequest<T>): SourceResult | null;
101
+ }
@@ -1,35 +1,91 @@
1
1
  /**
2
- * Executes a search request and parses results into a per-source map.
2
+ * Executes a combined search request and parses each source's subtree via its
3
+ * adapter, with partial-failure resilience.
3
4
  *
4
- * Today there's only one adapter — SObjects via the platform-sdk uiapi GraphQL
5
- * bridge. Future adapters (CMS, REST, etc.) can run alongside this one and
6
- * have their results merged into the same `Record<sourceKey, SourceResult>`
7
- * by the hook.
5
+ * The combined GraphQL response can carry BOTH partial `data` AND `errors`
6
+ * (`uiapi` and CMS `managed_content` are independent roots). Rather than
7
+ * throwing on `response.errors`, we parse each source through
8
+ * `getAdapter(kind).parseResponse(root, req)`:
9
+ * - a `SourceResult` → recorded in `results[key]`.
10
+ * - `null` (subtree absent/errored) → the source produced no data; if the
11
+ * request as a whole reported GraphQL errors, an attributed message is
12
+ * recorded in `errors[key]` so the UI can show a per-source error while
13
+ * sibling sources still render.
14
+ *
15
+ * Only a whole-request failure — the SDK call rejecting, or a response with no
16
+ * `data` at all — throws, so `useSearch` surfaces it as a page-level error
17
+ * (preserving the original network-failure behaviour).
8
18
  */
9
19
 
10
20
  import { createDataSDK } from "@salesforce/platform-sdk";
11
- import { buildSearchQuery, type SourceRequest } from "../queryBuilder";
21
+ import { buildSearchQuery } from "../queryBuilder";
22
+ import { getAdapter } from "../adapters/registry";
23
+ import type { SourceRequest } from "../adapters/types";
12
24
  import type { SourceResult } from "../types";
13
25
 
14
- interface RawSourceResult {
15
- edges?: Array<{ node?: unknown }> | null;
16
- pageInfo?: {
17
- hasNextPage?: boolean | null;
18
- hasPreviousPage?: boolean | null;
19
- startCursor?: string | null;
20
- endCursor?: string | null;
21
- } | null;
22
- totalCount?: number | null;
26
+ /**
27
+ * The outcome of a combined `runSearch`: successfully-parsed results plus a
28
+ * per-source error map. `errors` is keyed by `source.key` and only carries an
29
+ * entry for a source that failed to produce data (its subtree was absent or
30
+ * errored). A source appears in at most one of `results` / `errors`.
31
+ */
32
+ export interface RunSearchOutcome {
33
+ results: Record<string, SourceResult>;
34
+ errors: Record<string, string>;
35
+ }
36
+
37
+ /** Minimal shape of a GraphQL error we can attribute to a source by path. */
38
+ interface GraphQLErrorLike {
39
+ message?: string | null;
40
+ path?: Array<string | number> | null;
23
41
  }
24
42
 
25
43
  /**
26
- * Runs a single multi-aliased GraphQL request against uiapi.query.
44
+ * Attributes GraphQL errors to a source by matching the error `path` against
45
+ * the source's location in the document:
46
+ * - SObject aliases live under `uiapi.query.<key>`.
47
+ * - CMS lives under the root `managed_content` block.
27
48
  *
28
- * Returns a plain object keyed by source.key. A source whose alias is missing
29
- * from the response (e.g. due to a partial GraphQL error) is omitted; the
30
- * caller can detect this by `result[sourceKey] == null`.
49
+ * Returns the joined messages whose `path` matches `request`. When NO path
50
+ * matches (or paths are absent), returns a GENERIC per-source message rather
51
+ * than echoing unrelated sources' messages — otherwise one source could display
52
+ * another's error text (over-broad cross-attribution). The whole-request
53
+ * (`data == null`) path still joins ALL error messages; that lives in
54
+ * `runSearch` and is unaffected.
31
55
  */
32
- export async function runSearch(requests: SourceRequest[]): Promise<Record<string, SourceResult>> {
56
+ function attributeError(request: SourceRequest, errors: GraphQLErrorLike[]): string {
57
+ const kind = request.source.kind;
58
+ const key = request.source.key;
59
+
60
+ const matched = errors.filter((e) => {
61
+ const path = e.path;
62
+ if (!path || path.length === 0) return false;
63
+ if (kind === "cms") {
64
+ return path[0] === "managed_content";
65
+ }
66
+ // SObject: uiapi -> query -> <key>
67
+ return path[0] === "uiapi" && path[1] === "query" && path[2] === key;
68
+ });
69
+
70
+ // No path matched this source: don't leak sibling sources' messages — fall
71
+ // back to a generic per-source explanation.
72
+ if (matched.length === 0) {
73
+ return "Search failed for this source.";
74
+ }
75
+
76
+ const message = matched
77
+ .map((e) => e.message)
78
+ .filter((m): m is string => !!m)
79
+ .join("; ");
80
+ return message || "Search failed for this source.";
81
+ }
82
+
83
+ /**
84
+ * Runs one combined multi-source GraphQL request. Returns `{ results, errors }`
85
+ * (never throws on partial GraphQL errors); throws only on a whole-request /
86
+ * network failure.
87
+ */
88
+ export async function runSearch(requests: SourceRequest[]): Promise<RunSearchOutcome> {
33
89
  const { document, variables } = buildSearchQuery(requests);
34
90
 
35
91
  const data = await createDataSDK();
@@ -38,34 +94,43 @@ export async function runSearch(requests: SourceRequest[]): Promise<Record<strin
38
94
  variables,
39
95
  });
40
96
 
41
- if (response.errors?.length) {
42
- throw new Error(response.errors.map((e) => e.message).join("; "));
97
+ const root = response.data as Record<string, unknown> | undefined;
98
+ const gqlErrors = (response.errors ?? []) as GraphQLErrorLike[];
99
+
100
+ // Whole-request failure: no data at all. Surface as a page-level error
101
+ // (preserves the original network-failure behaviour).
102
+ if (root == null) {
103
+ const message = gqlErrors
104
+ .map((e) => e.message)
105
+ .filter((m): m is string => !!m)
106
+ .join("; ");
107
+ throw new Error(message || "Unified search failed");
43
108
  }
44
109
 
45
- const root = response.data as Record<string, unknown> | undefined;
46
- const queryRoot = (root?.uiapi as Record<string, unknown> | undefined)?.query as
47
- | Record<string, RawSourceResult | null | undefined>
48
- | undefined;
110
+ const results: Record<string, SourceResult> = {};
111
+ const errors: Record<string, string> = {};
49
112
 
50
- const out: Record<string, SourceResult> = {};
51
113
  for (const request of requests) {
52
- const raw = queryRoot?.[request.source.key];
53
- if (raw == null) continue;
54
- const nodes = (raw.edges ?? [])
55
- .map((edge) => edge?.node)
56
- .filter((node): node is unknown => node != null);
57
- out[request.source.key] = {
58
- nodes,
59
- pageInfo: raw.pageInfo
60
- ? {
61
- hasNextPage: raw.pageInfo.hasNextPage ?? false,
62
- hasPreviousPage: raw.pageInfo.hasPreviousPage ?? false,
63
- startCursor: raw.pageInfo.startCursor ?? null,
64
- endCursor: raw.pageInfo.endCursor ?? null,
65
- }
66
- : null,
67
- totalCount: raw.totalCount ?? null,
68
- };
114
+ const key = request.source.key;
115
+ let parsed: SourceResult | null = null;
116
+ try {
117
+ parsed = getAdapter(request.source.kind).parseResponse(root, request);
118
+ } catch {
119
+ // An adapter that throws while parsing its own subtree is a
120
+ // per-source failure, not a page-level one.
121
+ parsed = null;
122
+ }
123
+
124
+ if (parsed != null) {
125
+ results[key] = parsed;
126
+ } else if (gqlErrors.length > 0) {
127
+ // No data for this source AND the request reported errors — attribute
128
+ // a message so the UI can show a per-source error.
129
+ errors[key] = attributeError(request, gqlErrors);
130
+ }
131
+ // else: no data and no errors — the source simply returned nothing;
132
+ // leave it absent from both maps (empty result, no error).
69
133
  }
70
- return out;
134
+
135
+ return { results, errors };
71
136
  }
@@ -0,0 +1,98 @@
1
+ /**
2
+ * GlobalSearchBox — pure launcher component for global search.
3
+ *
4
+ * A self-contained search input + button that navigates to `/search?q=...`
5
+ * when the user submits a query of at least MIN_QUERY_LENGTH characters.
6
+ *
7
+ * Props are purely cosmetic (className, placeholder, autoFocus) — all behavior
8
+ * (the gate, the route, the query key) is owned by this component, not the caller.
9
+ *
10
+ * Usage:
11
+ * ```tsx
12
+ * import { GlobalSearchBox } from "../features/search";
13
+ * <GlobalSearchBox className="mb-8" placeholder="Search everything..." />
14
+ * ```
15
+ */
16
+
17
+ import { Search } from "lucide-react";
18
+ import { useId, useState } from "react";
19
+ import { useNavigate } from "react-router";
20
+ import { Input } from "../../../components/ui/input";
21
+ import { Button } from "../../../components/ui/button";
22
+ import { GLOBAL_QUERY_KEY } from "../utils/filterUtils";
23
+ import { MIN_QUERY_LENGTH } from "../constants";
24
+
25
+ export interface GlobalSearchBoxProps {
26
+ /** Optional CSS class for container styling/placement. */
27
+ className?: string;
28
+ /** Placeholder text for the search input. */
29
+ placeholder?: string;
30
+ /** Whether the input should autofocus on mount. */
31
+ autoFocus?: boolean;
32
+ /**
33
+ * Accessible (screen-reader) label for the input. Exposed as a prop so
34
+ * callers can localize it; defaults to English. */
35
+ label?: string;
36
+ /** Visible text for the submit button. Exposed for localization. */
37
+ submitLabel?: string;
38
+ /**
39
+ * Minimum length of keyword required by search. `{min}` is replaced with
40
+ * {@link MIN_QUERY_LENGTH}. Exposed for localization. */
41
+ minLengthHint?: string;
42
+ }
43
+
44
+ export function GlobalSearchBox({
45
+ className,
46
+ placeholder = "Search…",
47
+ autoFocus,
48
+ label = "Search",
49
+ submitLabel = "Search",
50
+ minLengthHint = "Enter at least {min} characters to search.",
51
+ }: GlobalSearchBoxProps) {
52
+ const navigate = useNavigate();
53
+ const [text, setText] = useState("");
54
+ const inputId = useId();
55
+ const hintId = useId();
56
+
57
+ const canSearch = text.trim().length >= MIN_QUERY_LENGTH;
58
+ const hintText = minLengthHint.replace("{min}", String(MIN_QUERY_LENGTH));
59
+
60
+ const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {
61
+ e.preventDefault();
62
+ if (!canSearch) return;
63
+ const params = `?${GLOBAL_QUERY_KEY}=${encodeURIComponent(text.trim())}`;
64
+ navigate(`/search${params}`);
65
+ };
66
+
67
+ return (
68
+ <form onSubmit={handleSubmit} className={className} role="search">
69
+ <label htmlFor={inputId} className="sr-only">
70
+ {label}
71
+ </label>
72
+ <div className="flex gap-2">
73
+ <div className="relative flex-1">
74
+ <Search
75
+ aria-hidden="true"
76
+ className="absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground"
77
+ />
78
+ <Input
79
+ id={inputId}
80
+ type="text"
81
+ value={text}
82
+ onChange={(e) => setText(e.target.value)}
83
+ placeholder={placeholder}
84
+ autoFocus={autoFocus}
85
+ className="pl-9"
86
+ aria-describedby={hintId}
87
+ />
88
+ </div>
89
+ <Button type="submit" disabled={!canSearch}>
90
+ {submitLabel}
91
+ </Button>
92
+ </div>
93
+ <p id={hintId} className="sr-only">
94
+ {hintText}
95
+ </p>
96
+ </form>
97
+ );
98
+ }
@@ -31,7 +31,6 @@
31
31
  * - **Global pager** — one {@link PaginationControls} over the cumulative set.
32
32
  */
33
33
 
34
- import type { ReactNode } from "react";
35
34
  import { AlertCircle } from "lucide-react";
36
35
  import { Alert, AlertDescription, AlertTitle } from "../../../components/ui/alert";
37
36
  import { Skeleton } from "../../../components/ui/skeleton";
@@ -40,11 +39,9 @@ import { DefaultFilterPanel } from "./filters/DefaultFilterPanel";
40
39
  import { FilterProvider, FilterResetButton } from "./filters/FilterContext";
41
40
  import { PaginationControls } from "./controls/PaginationControls";
42
41
  import { SortControl } from "./controls/SortControl";
43
- import { DefaultResultRow } from "./results/DefaultResultRow";
42
+ import { resolveResultRenderer, type ResultRenderer } from "./results/resolveResultRenderer";
44
43
  import { ALL_SCOPE, type SearchHandle, type SourceController } from "../types";
45
44
 
46
- type ResultRenderer = ((node: unknown) => ReactNode) | false;
47
-
48
45
  export interface MergedSearchResultsProps {
49
46
  handle: SearchHandle;
50
47
  /**
@@ -126,6 +123,8 @@ export function MergedSearchResults({
126
123
 
127
124
  {soleController && <SingleSourceChrome controller={soleController} />}
128
125
 
126
+ {/* Page-level error — set only when every in-scope source failed (or a
127
+ whole-request/network failure). Shown once, above the grid. */}
129
128
  {error && (
130
129
  <Alert variant="destructive" role="alert">
131
130
  <AlertCircle />
@@ -134,6 +133,20 @@ export function MergedSearchResults({
134
133
  </Alert>
135
134
  )}
136
135
 
136
+ {/* Per-source errors — a source that failed while a sibling succeeded
137
+ surfaces its own banner without blanking the shared grid. Suppressed
138
+ when the page-level error already covers the all-failed case. */}
139
+ {!error &&
140
+ handle.inScopeSources
141
+ .filter((c) => !!c.error)
142
+ .map((c) => (
143
+ <Alert key={c.config.key} variant="destructive" role="alert">
144
+ <AlertCircle />
145
+ <AlertTitle>Failed to load {c.config.label}</AlertTitle>
146
+ <AlertDescription>{c.error}</AlertDescription>
147
+ </Alert>
148
+ ))}
149
+
137
150
  {/* Results count — its own row, directly above the grid, in every scope.
138
151
  Hidden when there are none (the empty state covers that case). */}
139
152
  {!loading && !error && page.totalCount > 0 && (
@@ -155,14 +168,14 @@ export function MergedSearchResults({
155
168
  ) : (
156
169
  <ul className={gridClassName}>
157
170
  {mergedResults.map(({ sourceKey, node }, i) => {
158
- const override = renderResult?.[sourceKey];
159
- if (override === false) return null;
160
171
  const source = handle.sources[sourceKey]?.config;
161
- const rendered = override ? (
162
- override(node)
163
- ) : source ? (
164
- <DefaultResultRow node={node} source={source} />
165
- ) : null;
172
+ if (!source) return null;
173
+ // Resolve via the shared helper so CMS nodes render through
174
+ // CmsResultRow (never DefaultResultRow) in the merged grid too;
175
+ // a `renderResult[key]` override — including `false` — still wins.
176
+ const renderer = resolveResultRenderer(source, renderResult);
177
+ if (renderer === false) return null;
178
+ const rendered = renderer(node);
166
179
  const badge =
167
180
  showSourceBadges && source ? (
168
181
  <SourceBadge
@@ -237,15 +250,19 @@ interface SingleSourceChromeProps {
237
250
  */
238
251
  function SingleSourceChrome({ controller }: SingleSourceChromeProps) {
239
252
  const { config: source, filters, sort } = controller;
240
- const showFilterPanel = (source.filterBy?.length ?? 0) > 0;
241
- const showSortControl = (source.sortBy?.length ?? 0) > 0;
253
+ // Filter/sort chrome is SObject-only — narrow on `kind` so the union widening
254
+ // doesn't regress SObject behavior. CMS sources render no filter/sort chrome.
255
+ const sObjectSource = source.kind === "sobject" ? source : null;
256
+ const sortBy = sObjectSource?.sortBy;
257
+ const showFilterPanel = (sObjectSource?.filterBy?.length ?? 0) > 0;
258
+ const showSortControl = (sortBy?.length ?? 0) > 0;
242
259
  const showActiveChips = filters.active.length > 0;
243
260
 
244
261
  if (!showFilterPanel && !showSortControl && !showActiveChips) return null;
245
262
 
246
263
  return (
247
264
  <div className="flex flex-col gap-4">
248
- {showFilterPanel && (
265
+ {showFilterPanel && sObjectSource && (
249
266
  <FilterProvider
250
267
  filters={filters.active}
251
268
  onFilterChange={filters.set}
@@ -258,7 +275,7 @@ function SingleSourceChrome({ controller }: SingleSourceChromeProps) {
258
275
  <FilterResetButton size="sm" />
259
276
  </div>
260
277
  <div className="grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3">
261
- <DefaultFilterPanel source={source} />
278
+ <DefaultFilterPanel source={sObjectSource} />
262
279
  </div>
263
280
  </div>
264
281
  </FilterProvider>
@@ -266,8 +283,8 @@ function SingleSourceChrome({ controller }: SingleSourceChromeProps) {
266
283
 
267
284
  {(showSortControl || showActiveChips) && (
268
285
  <div className="flex flex-wrap items-center gap-2">
269
- {showSortControl && source.sortBy && (
270
- <SortControl configs={source.sortBy} sort={sort.current} onSortChange={sort.set} />
286
+ {showSortControl && sortBy && (
287
+ <SortControl configs={sortBy} sort={sort.current} onSortChange={sort.set} />
271
288
  )}
272
289
  {showActiveChips && <ActiveFilters filters={filters.active} onRemove={filters.remove} />}
273
290
  </div>