@memberjunction/ng-dashboards 5.24.0 → 5.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +15 -33
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +233 -493
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.d.ts +2 -2
  6. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  7. package/dist/AI/components/agents/agent-editor.component.js +7 -7
  8. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +43 -6
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1135 -864
  12. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  13. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +4 -3
  14. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  15. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +1 -0
  16. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  17. package/dist/AI/components/execution-monitoring.component.d.ts +4 -5
  18. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  19. package/dist/AI/components/execution-monitoring.component.js +14 -15
  20. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  21. package/dist/AI/components/models/model-management.component.d.ts +4 -4
  22. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  23. package/dist/AI/components/models/model-management.component.js +5 -5
  24. package/dist/AI/components/models/model-management.component.js.map +1 -1
  25. package/dist/AI/components/prompts/prompt-management.component.d.ts +4 -4
  26. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  27. package/dist/AI/components/prompts/prompt-management.component.js +5 -5
  28. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  29. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +2 -1
  30. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  31. package/dist/AI/components/requests/agent-requests-resource.component.js +1 -0
  32. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  33. package/dist/AI/components/system/system-configuration.component.d.ts +2 -3
  34. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  35. package/dist/AI/components/system/system-configuration.component.js +9 -11
  36. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  37. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +44 -8
  38. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  39. package/dist/AI/components/vectors/vector-management-resource.component.js +648 -384
  40. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  41. package/dist/APIKeys/api-keys-resource.component.d.ts +2 -1
  42. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  43. package/dist/APIKeys/api-keys-resource.component.js +2 -0
  44. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  45. package/dist/Actions/components/actions-overview.component.d.ts +4 -5
  46. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  47. package/dist/Actions/components/actions-overview.component.js +11 -12
  48. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  49. package/dist/Actions/components/code-management.component.d.ts +2 -3
  50. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  51. package/dist/Actions/components/code-management.component.js +4 -6
  52. package/dist/Actions/components/code-management.component.js.map +1 -1
  53. package/dist/Actions/components/entity-integration.component.d.ts +2 -3
  54. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  55. package/dist/Actions/components/entity-integration.component.js +4 -6
  56. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  57. package/dist/Actions/components/execution-monitoring.component.d.ts +4 -5
  58. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  59. package/dist/Actions/components/execution-monitoring.component.js +10 -11
  60. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  61. package/dist/Actions/components/explorer/action-explorer.component.d.ts +13 -12
  62. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  63. package/dist/Actions/components/explorer/action-explorer.component.js +39 -66
  64. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  65. package/dist/Actions/components/scheduled-actions.component.d.ts +2 -3
  66. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  67. package/dist/Actions/components/scheduled-actions.component.js +4 -6
  68. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  69. package/dist/Actions/components/security-permissions.component.d.ts +2 -3
  70. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  71. package/dist/Actions/components/security-permissions.component.js +4 -6
  72. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  73. package/dist/ApplicationRoles/application-roles-resource.component.d.ts +112 -0
  74. package/dist/ApplicationRoles/application-roles-resource.component.d.ts.map +1 -0
  75. package/dist/ApplicationRoles/application-roles-resource.component.js +532 -0
  76. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -0
  77. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  78. package/dist/Communication/communication-dashboard.component.js +1 -0
  79. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  80. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  81. package/dist/Communication/communication-logs-resource.component.js +4 -1
  82. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  83. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  84. package/dist/Communication/communication-monitor-resource.component.js +4 -1
  85. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  86. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  87. package/dist/Communication/communication-providers-resource.component.js +4 -1
  88. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  89. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  90. package/dist/Communication/communication-runs-resource.component.js +4 -1
  91. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  92. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  93. package/dist/Communication/communication-templates-resource.component.js +4 -1
  94. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  95. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +2 -1
  96. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  97. package/dist/ComponentStudio/component-studio-dashboard.component.js +1 -0
  98. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  99. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  100. package/dist/Credentials/components/credentials-audit-resource.component.js +2 -0
  101. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  102. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +2 -3
  103. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  104. package/dist/Credentials/components/credentials-categories-resource.component.js +10 -11
  105. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  106. package/dist/Credentials/components/credentials-list-resource.component.d.ts +2 -1
  107. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  108. package/dist/Credentials/components/credentials-list-resource.component.js +2 -0
  109. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  110. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +4 -4
  111. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  112. package/dist/Credentials/components/credentials-overview-resource.component.js +8 -9
  113. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  114. package/dist/Credentials/components/credentials-types-resource.component.d.ts +2 -3
  115. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  116. package/dist/Credentials/components/credentials-types-resource.component.js +11 -12
  117. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  118. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  119. package/dist/Credentials/credentials-dashboard.component.js +1 -0
  120. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  121. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +2 -3
  122. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  123. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +9 -10
  124. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  125. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
  126. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts +23 -15
  127. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  128. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +167 -213
  129. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  130. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +68 -32
  131. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  132. package/dist/DataExplorer/data-explorer-dashboard.component.js +453 -420
  133. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  134. package/dist/DataExplorer/data-explorer-resource.component.d.ts +10 -3
  135. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  136. package/dist/DataExplorer/data-explorer-resource.component.js +35 -11
  137. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  138. package/dist/DataExplorer/models/explorer-state.interface.d.ts +12 -3
  139. package/dist/DataExplorer/models/explorer-state.interface.d.ts.map +1 -1
  140. package/dist/DataExplorer/models/explorer-state.interface.js +5 -1
  141. package/dist/DataExplorer/models/explorer-state.interface.js.map +1 -1
  142. package/dist/Home/home-dashboard.component.d.ts +4 -4
  143. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  144. package/dist/Home/home-dashboard.component.js +4 -5
  145. package/dist/Home/home-dashboard.component.js.map +1 -1
  146. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.js +1 -0
  148. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  149. package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
  150. package/dist/Integration/components/connections/connections.component.js +2 -0
  151. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  152. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.d.ts.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +1 -0
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
  156. package/dist/Integration/components/overview/overview.component.js +2 -0
  157. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +2 -0
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
  162. package/dist/Integration/components/schedules/schedules.component.js +2 -0
  163. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  164. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +4 -3
  165. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  166. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1 -0
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  168. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +4 -3
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +1 -0
  171. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +13 -3
  173. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  174. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +220 -138
  175. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +4 -3
  177. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  178. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +1 -0
  179. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  180. package/dist/KnowledgeHub/index.d.ts +0 -1
  181. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  182. package/dist/KnowledgeHub/index.js +0 -1
  183. package/dist/KnowledgeHub/index.js.map +1 -1
  184. package/dist/Lists/components/lists-browse-resource.component.d.ts +2 -1
  185. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  186. package/dist/Lists/components/lists-browse-resource.component.js +2 -0
  187. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  188. package/dist/Lists/components/lists-categories-resource.component.d.ts +2 -1
  189. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  190. package/dist/Lists/components/lists-categories-resource.component.js +2 -0
  191. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  192. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +2 -1
  193. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  194. package/dist/Lists/components/lists-my-lists-resource.component.js +2 -0
  195. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  196. package/dist/Lists/components/lists-operations-resource.component.d.ts +2 -1
  197. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  198. package/dist/Lists/components/lists-operations-resource.component.js +2 -0
  199. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  200. package/dist/MCP/mcp-dashboard.component.d.ts +7 -28
  201. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  202. package/dist/MCP/mcp-dashboard.component.js +25 -107
  203. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  204. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  205. package/dist/MCP/mcp-resource.component.js +1 -0
  206. package/dist/MCP/mcp-resource.component.js.map +1 -1
  207. package/dist/QueryBrowser/query-browser-resource.component.d.ts +10 -23
  208. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  209. package/dist/QueryBrowser/query-browser-resource.component.js +41 -103
  210. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  211. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity-resource.component.js +1 -0
  213. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +1 -0
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  217. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  218. package/dist/Scheduling/components/scheduling-overview-resource.component.js +1 -0
  219. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  220. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  221. package/dist/Scheduling/scheduling-dashboard.component.js +1 -0
  222. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  223. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +4 -4
  224. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  225. package/dist/SystemDiagnostics/system-diagnostics.component.js +9 -10
  226. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  227. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  228. package/dist/Testing/components/testing-analytics-resource.component.js +2 -0
  229. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  230. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  231. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  232. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +2 -0
  233. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  234. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  235. package/dist/Testing/components/testing-explorer-resource.component.js +2 -0
  236. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  237. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-review-resource.component.js +2 -0
  239. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  241. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-runs-resource.component.js +2 -0
  243. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  244. package/dist/Testing/testing-dashboard.component.d.ts +2 -1
  245. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  246. package/dist/Testing/testing-dashboard.component.js +1 -0
  247. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  248. package/dist/VersionHistory/components/diff-resource.component.d.ts +4 -4
  249. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -1
  250. package/dist/VersionHistory/components/diff-resource.component.js +9 -10
  251. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  252. package/dist/VersionHistory/components/graph-resource.component.d.ts +2 -1
  253. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -1
  254. package/dist/VersionHistory/components/graph-resource.component.js +2 -0
  255. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  256. package/dist/VersionHistory/components/labels-resource.component.d.ts +4 -4
  257. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  258. package/dist/VersionHistory/components/labels-resource.component.js +10 -11
  259. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  260. package/dist/VersionHistory/components/restore-resource.component.d.ts +2 -1
  261. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  262. package/dist/VersionHistory/components/restore-resource.component.js +2 -0
  263. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  264. package/dist/ai-dashboards.module.d.ts +19 -19
  265. package/dist/ai-dashboards.module.d.ts.map +1 -1
  266. package/dist/ai-dashboards.module.js +4 -5
  267. package/dist/ai-dashboards.module.js.map +1 -1
  268. package/dist/core-dashboards.module.d.ts +19 -18
  269. package/dist/core-dashboards.module.d.ts.map +1 -1
  270. package/dist/core-dashboards.module.js +8 -0
  271. package/dist/core-dashboards.module.js.map +1 -1
  272. package/dist/data-explorer-dashboards.module.d.ts +2 -1
  273. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  274. package/dist/data-explorer-dashboards.module.js +7 -3
  275. package/dist/data-explorer-dashboards.module.js.map +1 -1
  276. package/dist/public-api.d.ts +1 -1
  277. package/dist/public-api.d.ts.map +1 -1
  278. package/dist/public-api.js +2 -1
  279. package/dist/public-api.js.map +1 -1
  280. package/package.json +49 -48
  281. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts +0 -166
  282. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.d.ts.map +0 -1
  283. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js +0 -991
  284. package/dist/KnowledgeHub/components/search/knowledge-search-resource.component.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"knowledge-search-resource.component.js","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/search/knowledge-search-resource.component.ts","../../../../src/KnowledgeHub/components/search/knowledge-search-resource.component.html"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Knowledge Hub Search Dashboard (Task 2)\n *\n * Google-style clean search experience with centered search bar,\n * grouped results, faceted sidebar filters, and \"Ask Knowledge Agent\" CTA.\n * Registered as BaseResourceComponent for the Knowledge Hub app.\n */\n\nimport { Component, ChangeDetectorRef, OnDestroy, AfterViewInit, inject, Injector } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { CompositeKey, Metadata, RunView } from '@memberjunction/core';\nimport { MJKnowledgeHubSavedSearchEntity, ResourceData, UserInfoEngine } from '@memberjunction/core-entities';\nimport { RegisterClass, UUIDsEqual } from '@memberjunction/global';\nimport { BaseResourceComponent, NavigationService } from '@memberjunction/ng-shared';\nimport {\n SearchResultItem,\n SearchResultGroup,\n SearchFilter,\n SearchRequest,\n SearchResponse,\n SearchResultSelectedEvent,\n SearchFilterChangeEvent\n} from '@memberjunction/ng-search';\nimport { SearchService, RecentSearch } from '@memberjunction/ng-search';\nimport { ConversationBridgeService } from '@memberjunction/ng-conversations';\n\n@RegisterClass(BaseResourceComponent, 'KnowledgeSearchResource')\n@Component({\n standalone: false,\n selector: 'app-knowledge-search-resource',\n templateUrl: './knowledge-search-resource.component.html',\n styleUrls: ['./knowledge-search-resource.component.css']\n})\nexport class KnowledgeSearchResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {\n private cdr = inject(ChangeDetectorRef);\n private searchService = inject(SearchService);\n private injector = inject(Injector);\n private navigationService = inject(NavigationService);\n private destroy$ = new Subject<void>();\n\n // --- State ---\n public Query = '';\n public IsSearching = false;\n public HasSearched = false;\n public ShowFilters = false;\n public ShowResultDetail = false;\n public DetailResult: SearchResultItem | null = null;\n\n // --- Results ---\n public AllResults: SearchResultItem[] = [];\n public ResultGroups: SearchResultGroup[] = [];\n public Filters: SearchFilter[] = [];\n public ActiveFilters: Record<string, string[]> = {};\n public TotalCount = 0;\n public ElapsedMs = 0;\n /** Minimum relevance score threshold (0-1). Results below this are hidden. */\n public MinScoreThreshold = 0.35;\n\n /**\n * The minimum relevance threshold that was last sent to the server.\n * When the slider moves above this, we filter client-side.\n * When it moves below, we must re-fetch from the server.\n */\n public ServerMinRelevance = 0.35;\n\n /** Count of server-side results before any client-side filtering */\n public ServerResultCount = 0;\n\n // --- Recent & Saved ---\n public RecentSearches: RecentSearch[] = [];\n public SavedSearches: MJKnowledgeHubSavedSearchEntity[] = [];\n\n /** Popular tags for \"Filter by Tag\" preset buttons, sized by relative frequency */\n public PopularTags: { Name: string; Count: number; FontSize: number }[] = [];\n\n // --- Save Search Dialog ---\n public ShowSaveDialog = false;\n public SaveSearchName = '';\n\n async GetResourceDisplayName(_data: ResourceData): Promise<string> {\n return 'Knowledge Search';\n }\n\n async GetResourceIconClass(_data: ResourceData): Promise<string> {\n return 'fa-solid fa-magnifying-glass';\n }\n\n async ngAfterViewInit(): Promise<void> {\n await UserInfoEngine.Instance.Config(false);\n this.LoadSearchPreferences();\n this.subscribeToSearchState();\n this.parseUrlParameters();\n this.registerAgentTools();\n this.emitAgentContext();\n this.loadSavedSearches();\n this.loadPopularTags();\n this.NotifyLoadComplete();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n /** Report current search state to the agent via NavigationService */\n private emitAgentContext(): void {\n this.navigationService.SetAgentContext(this, {\n CurrentQuery: this.Query || null,\n ResultCount: this.TotalCount,\n ElapsedMs: this.ElapsedMs,\n HasSearched: this.HasSearched,\n ShowFilters: this.ShowFilters,\n MinScoreThreshold: this.MinScoreThreshold,\n ActiveFilterCount: this.GetActiveFilterCount(),\n TopResults: this.AllResults.slice(0, 5).map(r => ({\n Title: r.Title,\n EntityName: r.EntityName,\n Score: Math.round(r.Score * 100),\n })),\n });\n }\n\n /** Register client tools the agent can invoke on this dashboard */\n private registerAgentTools(): void {\n this.navigationService.SetAgentClientTools(this, [\n {\n Name: 'RunKnowledgeSearch',\n Description: 'Execute a knowledge search query across all indexed content',\n ParameterSchema: {\n type: 'object',\n properties: {\n query: { type: 'string', description: 'The search query text' },\n minScore: { type: 'number', description: 'Minimum relevance score 0-1 (default 0.35)' },\n },\n required: ['query'],\n },\n Handler: async (params: Record<string, unknown>) => {\n this.Query = String(params['query'] ?? '');\n if (params['minScore'] != null) this.MinScoreThreshold = Number(params['minScore']);\n await this.RunSearch();\n return { Success: true, Data: { ResultCount: this.TotalCount, ElapsedMs: this.ElapsedMs } };\n },\n },\n {\n Name: 'ClearKnowledgeSearch',\n Description: 'Clear the current search query and results',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n this.ClearSearch();\n return { Success: true };\n },\n },\n {\n Name: 'ToggleSearchFilters',\n Description: 'Show or hide the search filter panel',\n ParameterSchema: { type: 'object', properties: {} },\n Handler: async () => {\n this.ToggleFilters();\n return { Success: true, Data: { ShowFilters: this.ShowFilters } };\n },\n },\n ]);\n }\n\n /** Execute a search query */\n public async RunSearch(): Promise<void> {\n const query = this.Query.trim();\n if (!query) return;\n\n this.ServerMinRelevance = this.MinScoreThreshold;\n\n const request: SearchRequest = {\n Query: query,\n MaxResults: 50,\n ActiveFilters: this.ActiveFilters,\n IncludeSources: ['vector', 'fulltext', 'entity'],\n MinScore: this.MinScoreThreshold,\n };\n\n const response = await this.searchService.ExecuteSearch(request);\n this.applySearchResponse(response);\n }\n\n /** Handle pressing Enter in the search box */\n public OnSearchKeydown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.RunSearch();\n }\n }\n\n /** Handle selecting a result */\n public OnResultSelected(event: SearchResultSelectedEvent): void {\n this.DetailResult = event.Result;\n this.ShowResultDetail = true;\n this.cdr.detectChanges();\n }\n\n /** Handle \"Open Record\" — navigate to the entity record via NavigationService */\n public OnOpenRecord(event: { EntityName: string; RecordID: string }): void {\n const md = new Metadata();\n const entityInfo = md.Entities.find(e => e.Name === event.EntityName);\n const pkey = new CompositeKey();\n if (entityInfo) {\n pkey.LoadFromURLSegment(entityInfo, event.RecordID);\n } else {\n // Fallback: treat as simple single-field PK\n pkey.KeyValuePairs = [{ FieldName: 'ID', Value: event.RecordID }];\n }\n this.navigationService.OpenEntityRecord(event.EntityName, pkey);\n }\n\n /** Close the result detail view */\n public CloseResultDetail(): void {\n this.ShowResultDetail = false;\n this.DetailResult = null;\n this.cdr.detectChanges();\n }\n\n /** Toggle the filter sidebar */\n public ToggleFilters(): void {\n this.ShowFilters = !this.ShowFilters;\n this.PersistSearchPreferences();\n this.cdr.detectChanges();\n }\n\n /**\n * Handle a filter change from the filter component.\n * Uses client-side filtering on the cached full result set — no server re-query.\n */\n public OnFilterChanged(event: SearchFilterChangeEvent): void {\n this.ActiveFilters[event.Category] = event.SelectedValues;\n this.applyClientSideFilters();\n this.PersistSearchPreferences();\n }\n\n /** Handle clearing all filters */\n public OnFiltersCleared(): void {\n this.ActiveFilters = {};\n this.MinScoreThreshold = 0.35;\n this.applyClientSideFilters();\n this.PersistSearchPreferences();\n }\n\n /**\n * Handle relevance threshold slider change.\n * - Moving UP (narrowing): filter client-side from cached server results.\n * - Moving DOWN past ServerMinRelevance (widening): re-fetch from server.\n */\n public OnThresholdChanged(value: number): void {\n this.MinScoreThreshold = value;\n if (value >= this.ServerMinRelevance) {\n // Narrowing — client-side filter is sufficient\n this.applyClientSideFilters();\n } else {\n // Widening past what the server returned — need fresh data\n this.RunSearchWithThreshold(value);\n }\n }\n\n /**\n * Re-fetch from the server with a new minimum relevance threshold,\n * then update the server baseline so future narrowing stays client-side.\n */\n private async RunSearchWithThreshold(threshold: number): Promise<void> {\n const query = this.Query.trim();\n if (!query) return;\n\n const request: SearchRequest = {\n Query: query,\n MaxResults: 50,\n ActiveFilters: this.ActiveFilters,\n IncludeSources: ['vector', 'fulltext', 'entity'],\n MinScore: threshold,\n };\n\n const response = await this.searchService.ExecuteSearch(request);\n this.ServerMinRelevance = threshold;\n this.applySearchResponse(response);\n }\n\n /** Toggle select all / unselect all for a filter category (Kayak-style) */\n public ToggleSelectAll(category: string): void {\n const filter = this.Filters.find(f => f.Category === category);\n if (!filter) return;\n\n const currentSelection = this.ActiveFilters[category] ?? [];\n if (currentSelection.length === filter.Options.length) {\n // All selected → unselect all\n this.ActiveFilters[category] = [];\n } else {\n // Some or none selected → select all\n this.ActiveFilters[category] = filter.Options.map(o => o.Value);\n }\n this.applyClientSideFilters();\n }\n\n /** Check if all options in a category are selected */\n public IsAllSelected(category: string): boolean {\n const filter = this.Filters.find(f => f.Category === category);\n if (!filter) return false;\n const selection = this.ActiveFilters[category] ?? [];\n return selection.length === filter.Options.length;\n }\n\n /** Open the chat overlay with Knowledge Agent context */\n public OnAskAgent(): void {\n try {\n const bridge = this.injector.get(ConversationBridgeService, null);\n if (bridge) {\n bridge.SwitchToOverlay(null);\n } else {\n console.warn('[KnowledgeSearch] ConversationBridgeService not available');\n }\n } catch {\n console.warn('[KnowledgeSearch] ConversationBridgeService not available');\n }\n }\n\n /**\n * Handle \"See Similar Items\" — re-runs the search using the result's title as the query.\n * This provides a lightweight \"more like this\" experience without needing raw vector access.\n */\n public OnMoreLikeThis(result: SearchResultItem): void {\n this.ActiveFilters = {};\n this.Query = result.RecordName ?? result.Title;\n this.RunSearch();\n }\n\n /** Apply a recent search */\n public ApplyRecentSearch(recent: RecentSearch): void {\n this.Query = recent.Query;\n this.RunSearch();\n }\n\n // --- Saved Searches ---\n\n /** Open the save search dialog */\n public OpenSaveDialog(): void {\n this.SaveSearchName = this.Query;\n this.ShowSaveDialog = true;\n this.cdr.detectChanges();\n }\n\n /** Cancel the save dialog */\n public CancelSaveDialog(): void {\n this.ShowSaveDialog = false;\n this.SaveSearchName = '';\n this.cdr.detectChanges();\n }\n\n /**\n * Save the current search as a named saved search using MJKnowledgeHubSavedSearchEntity.\n * Persists query, active filters, min score, and max results.\n */\n public async ConfirmSaveSearch(): Promise<void> {\n const name = this.SaveSearchName.trim();\n if (!name || !this.Query.trim()) return;\n\n try {\n const md = new Metadata();\n const entity = await md.GetEntityObject<MJKnowledgeHubSavedSearchEntity>('MJ: Knowledge Hub Saved Searches');\n entity.Name = name;\n entity.Query = this.Query;\n entity.Filters = Object.keys(this.ActiveFilters).length > 0\n ? JSON.stringify(this.ActiveFilters)\n : null;\n entity.MinScore = this.MinScoreThreshold > 0 ? this.MinScoreThreshold : null;\n entity.MaxResults = 50;\n entity.NotifyOnNewResults = false;\n\n const saved = await entity.Save();\n if (saved) {\n this.SavedSearches = [entity, ...this.SavedSearches];\n }\n } catch (error) {\n console.error('[KnowledgeSearch] Failed to save search:', error);\n }\n\n this.ShowSaveDialog = false;\n this.SaveSearchName = '';\n this.cdr.detectChanges();\n }\n\n /**\n * Apply a saved search — populates query, filters, and threshold, then executes.\n */\n public ApplySavedSearch(saved: MJKnowledgeHubSavedSearchEntity): void {\n this.Query = saved.Query;\n if (saved.Filters) {\n try {\n this.ActiveFilters = JSON.parse(saved.Filters) as Record<string, string[]>;\n } catch {\n this.ActiveFilters = {};\n }\n } else {\n this.ActiveFilters = {};\n }\n if (saved.MinScore != null) {\n this.MinScoreThreshold = saved.MinScore;\n }\n this.RunSearch();\n }\n\n /**\n * Delete a saved search by ID and remove it from the local list.\n */\n public async DeleteSavedSearch(saved: MJKnowledgeHubSavedSearchEntity, event: MouseEvent): Promise<void> {\n event.stopPropagation();\n try {\n const success = await saved.Delete();\n if (success) {\n this.SavedSearches = this.SavedSearches.filter(s => !UUIDsEqual(s.ID, saved.ID));\n this.cdr.detectChanges();\n }\n } catch (error) {\n console.error('[KnowledgeSearch] Failed to delete saved search:', error);\n }\n }\n\n /**\n * Search by a popular tag: sets the query text and runs a search.\n * Does NOT add a sticky filter — just a simple text search.\n */\n public FilterByTag(tagName: string): void {\n this.Query = tagName;\n this.RunSearch();\n }\n\n /** Clear the current search */\n public ClearSearch(): void {\n this.Query = '';\n this.AllResults = [];\n this.ResultGroups = [];\n this.Filters = [];\n this.ActiveFilters = {};\n this.TotalCount = 0;\n this.ServerResultCount = 0;\n this.ServerMinRelevance = 0.35;\n this.HasSearched = false;\n this.ShowFilters = false;\n this.cdr.detectChanges();\n }\n\n /** Check if any filters are active */\n public HasActiveFilters(): boolean {\n return Object.values(this.ActiveFilters).some(v => v.length > 0);\n }\n\n public GetActiveFilterCount(): number {\n return Object.values(this.ActiveFilters).reduce((sum, v) => sum + v.length, 0);\n }\n\n // --- Private Methods ---\n\n /** Parse URL parameters for deep links (e.g., ?conversationId=xxx or ?q=search+term) */\n private parseUrlParameters(): void {\n try {\n const urlParams = new URLSearchParams(window.location.search);\n const conversationId = urlParams.get('conversationId');\n if (conversationId) {\n // Deep link to conversation - open the agent chat\n this.OnAskAgent();\n }\n\n const searchQuery = urlParams.get('q');\n if (searchQuery) {\n this.Query = searchQuery;\n this.RunSearch();\n }\n } catch {\n // Ignore URL parsing errors\n }\n }\n\n /**\n * Load saved searches for the current user from the database.\n * Runs in the background — does not block initialization.\n */\n private async loadSavedSearches(): Promise<void> {\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJKnowledgeHubSavedSearchEntity>({\n EntityName: 'MJ: Knowledge Hub Saved Searches',\n OrderBy: '__mj_CreatedAt DESC',\n MaxRows: 50,\n ResultType: 'entity_object'\n });\n if (result.Success) {\n this.SavedSearches = result.Results;\n this.cdr.detectChanges();\n }\n } catch (error) {\n console.error('[KnowledgeSearch] Failed to load saved searches:', error);\n }\n }\n\n /**\n * Load the top 10 most-used tags for the \"Filter by Tag\" preset buttons.\n * Loads TaggedItems (TagID only), aggregates counts client-side, resolves\n * display names from Tags, then sizes each tag by relative frequency.\n * Font sizes range from 0.8rem (least used in top 10) to 1.3rem (most used).\n */\n private async loadPopularTags(): Promise<void> {\n try {\n const rv = new RunView();\n const [taggedResult, tagResult] = await rv.RunViews([\n {\n EntityName: 'MJ: Tagged Items',\n Fields: ['TagID'],\n ResultType: 'simple'\n },\n {\n EntityName: 'MJ: Tags',\n Fields: ['ID', 'DisplayName'],\n ResultType: 'simple'\n }\n ]);\n\n if (!taggedResult.Success || !tagResult.Success) return;\n\n // Count occurrences per TagID\n const counts = new Map<string, number>();\n for (const row of taggedResult.Results as { TagID: string }[]) {\n counts.set(row.TagID, (counts.get(row.TagID) ?? 0) + 1);\n }\n\n // Build name lookup\n const tagNames = new Map<string, string>();\n for (const row of tagResult.Results as { ID: string; DisplayName: string }[]) {\n tagNames.set(row.ID, row.DisplayName);\n }\n\n // Sort by count descending, take top 10\n const sorted = [...counts.entries()]\n .sort((a, b) => b[1] - a[1])\n .slice(0, 10);\n\n if (sorted.length === 0) return;\n\n const maxCount = sorted[0][1];\n const minCount = sorted[sorted.length - 1][1];\n const range = maxCount - minCount || 1;\n const minFont = 0.8;\n const maxFont = 1.3;\n\n this.PopularTags = sorted\n .map(([tagID, count]) => ({\n Name: tagNames.get(tagID) ?? '',\n Count: count,\n FontSize: minFont + ((count - minCount) / range) * (maxFont - minFont)\n }))\n .filter(t => t.Name.length > 0);\n\n this.cdr.detectChanges();\n } catch {\n // Non-critical — tags are a convenience, not a blocker\n }\n }\n\n private subscribeToSearchState(): void {\n this.searchService.IsSearching$\n .pipe(takeUntil(this.destroy$))\n .subscribe((val: boolean) => {\n this.IsSearching = val;\n this.cdr.detectChanges();\n });\n\n this.searchService.RecentSearches$\n .pipe(takeUntil(this.destroy$))\n .subscribe((val: RecentSearch[]) => {\n this.RecentSearches = val;\n this.cdr.detectChanges();\n });\n }\n\n /** Full unfiltered result set from the last server query */\n private cachedFullResults: SearchResultItem[] = [];\n\n /**\n * Apply filters client-side on the cached full result set.\n * This avoids re-querying the server when entity/tag checkboxes change.\n */\n private applyClientSideFilters(): void {\n let filtered = [...this.cachedFullResults];\n\n // Apply entity filter\n const entityFilter = this.ActiveFilters['Entity'];\n if (entityFilter?.length > 0) {\n filtered = filtered.filter(r => entityFilter.includes(r.EntityName));\n }\n\n // Apply tag filter\n const tagFilter = this.ActiveFilters['Tags'];\n if (tagFilter?.length > 0) {\n filtered = filtered.filter(r =>\n r.Tags?.some(t => tagFilter.includes(t))\n );\n }\n\n // Apply score threshold\n if (this.MinScoreThreshold > 0) {\n filtered = filtered.filter(r => r.Score >= this.MinScoreThreshold);\n }\n\n // Rebuild groups and update counts\n this.AllResults = filtered;\n this.ResultGroups = this.searchService.GroupResults(filtered);\n this.TotalCount = filtered.length;\n\n // SR-3 fix: Build filters from FULL result set so options don't disappear\n // when a filter is checked. Counts reflect the filtered results for context.\n this.Filters = this.searchService.BuildFilters(this.cachedFullResults);\n // Remove Source Type filter — it confuses users\n this.Filters = this.Filters.filter(f => f.Category !== 'Source Type');\n\n this.cdr.detectChanges();\n this.emitAgentContext();\n }\n\n private static readonly PREFS_KEY = 'KH_Search_Preferences';\n\n /** Persist user search preferences via UserInfoEngine */\n private PersistSearchPreferences(): void {\n const prefs = JSON.stringify({\n ShowFilters: this.ShowFilters,\n MinScoreThreshold: this.MinScoreThreshold,\n });\n UserInfoEngine.Instance.SetSettingDebounced(KnowledgeSearchResourceComponent.PREFS_KEY, prefs);\n }\n\n /** Load persisted search preferences from UserInfoEngine */\n private LoadSearchPreferences(): void {\n const raw = UserInfoEngine.Instance.GetSetting(KnowledgeSearchResourceComponent.PREFS_KEY);\n if (raw) {\n try {\n const prefs = JSON.parse(raw);\n if (prefs.ShowFilters != null) this.ShowFilters = prefs.ShowFilters;\n if (prefs.MinScoreThreshold != null) this.MinScoreThreshold = prefs.MinScoreThreshold;\n } catch { /* ignore parse errors */ }\n }\n }\n\n private applySearchResponse(response: SearchResponse): void {\n // Cache full results (sorted by score descending) for client-side filtering\n this.cachedFullResults = response.Results.sort((a, b) => b.Score - a.Score);\n this.ServerResultCount = this.cachedFullResults.length;\n\n // Apply current threshold client-side (may be higher than server threshold)\n let filtered = this.cachedFullResults;\n if (this.MinScoreThreshold > 0) {\n filtered = filtered.filter(r => r.Score >= this.MinScoreThreshold);\n }\n\n this.AllResults = [...filtered];\n this.ResultGroups = this.searchService.GroupResults(filtered);\n // Remove Source Type filter — confuses users\n this.Filters = response.Filters.filter(f => f.Category !== 'Source Type');\n this.TotalCount = filtered.length;\n this.ElapsedMs = response.ElapsedMs;\n this.HasSearched = true;\n // Only auto-show filters on first search if user hasn't set a preference\n const savedPref = UserInfoEngine.Instance.GetSetting(KnowledgeSearchResourceComponent.PREFS_KEY);\n if (!savedPref) {\n this.ShowFilters = response.Filters.length > 0;\n }\n this.cdr.detectChanges();\n this.emitAgentContext();\n }\n}\n\n/** Tree-shaking prevention */\nexport function LoadKnowledgeSearchResource(): void {\n // Prevents tree-shaking of the component\n}\n","@if (!ShowResultDetail) {\n <div class=\"search-page\" [class.search-page-has-results]=\"HasSearched\">\n <!-- Search Hero Section -->\n <div class=\"search-hero\" [class.search-hero-compact]=\"HasSearched\">\n @if (!HasSearched) {\n <div class=\"search-logo\">\n <i class=\"fa-solid fa-brain\"></i>\n Knowledge Hub\n </div>\n <p class=\"search-subtitle\">Search across all your knowledge -- entities, documents, content, and more</p>\n }\n\n <!-- Search Bar -->\n <div class=\"search-container\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-magnifying-glass search-box-icon\"></i>\n <input\n type=\"text\"\n class=\"search-box-input\"\n placeholder=\"Search across all your knowledge...\"\n [(ngModel)]=\"Query\"\n (keydown)=\"OnSearchKeydown($event)\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n />\n @if (Query.length > 0) {\n <button class=\"search-clear-btn\" (click)=\"ClearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n <button class=\"search-submit-btn\" (click)=\"RunSearch()\" [disabled]=\"IsSearching || !Query.trim()\">\n @if (IsSearching) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n } @else {\n Search\n }\n </button>\n </div>\n\n <!-- Quick filters row -->\n @if (!HasSearched) {\n <div class=\"search-quick-actions\">\n <button class=\"quick-action-btn\" (click)=\"OnAskAgent()\">\n <i class=\"fa-solid fa-robot\"></i>\n Ask Knowledge Agent\n </button>\n </div>\n @if (PopularTags.length > 0) {\n <div class=\"search-tag-presets\">\n <span class=\"tag-presets-label\">\n <i class=\"fa-solid fa-tags\"></i> Popular tags:\n </span>\n @for (tag of PopularTags; track tag.Name) {\n <button class=\"tag-preset-btn\"\n [style.fontSize.rem]=\"tag.FontSize\"\n [title]=\"tag.Name + ' (' + tag.Count + ')'\"\n (click)=\"FilterByTag(tag.Name)\">\n {{ tag.Name }}\n </button>\n }\n </div>\n }\n }\n </div>\n </div>\n\n @if (HasSearched) {\n <!-- Results Area -->\n <div class=\"search-results-layout\">\n <!-- Sidebar Filters -->\n @if (ShowFilters && Filters.length > 0) {\n <aside class=\"search-sidebar\">\n <mj-search-filter\n [Filters]=\"Filters\"\n [ActiveFilters]=\"ActiveFilters\"\n (FilterChanged)=\"OnFilterChanged($event)\"\n (FiltersCleared)=\"OnFiltersCleared()\"\n (CloseRequested)=\"ToggleFilters()\"\n ></mj-search-filter>\n\n <!-- Relevance Threshold Slider -->\n <div class=\"threshold-section\">\n <label class=\"threshold-label\">\n Min Relevance\n <span class=\"threshold-value\">{{ (MinScoreThreshold * 100) | number:'1.0-0' }}%</span>\n </label>\n <input\n type=\"range\"\n class=\"threshold-slider\"\n [min]=\"0\"\n [max]=\"100\"\n [step]=\"5\"\n [value]=\"MinScoreThreshold * 100\"\n (input)=\"OnThresholdChanged($any($event.target).value / 100)\"\n />\n <div class=\"threshold-range-labels\">\n <span>All</span>\n <span>Strict</span>\n </div>\n <div class=\"threshold-stats\">\n <span class=\"threshold-stats-shown\">{{ TotalCount }} of {{ ServerResultCount }} results shown</span>\n <span class=\"threshold-stats-range\">Server range: {{ (ServerMinRelevance * 100) | number:'1.0-0' }}%&ndash;100%</span>\n </div>\n </div>\n </aside>\n }\n\n <!-- Results Main -->\n <div class=\"search-results-main\">\n <!-- Results Header -->\n <div class=\"search-results-header\">\n <!-- Show Filters button on left (visible when panel is hidden) -->\n @if (!ShowFilters && Filters.length > 0) {\n <button class=\"show-filters-btn\" (click)=\"ToggleFilters()\">\n <i class=\"fa-solid fa-filter\"></i>\n Filters\n @if (HasActiveFilters()) {\n <span class=\"filter-active-badge\">{{ GetActiveFilterCount() }}</span>\n }\n </button>\n }\n <span class=\"search-results-count\">\n {{ TotalCount }} results\n @if (ElapsedMs > 0) {\n <span class=\"search-results-time\">in {{ ElapsedMs }}ms</span>\n }\n </span>\n <button class=\"save-search-btn\" (click)=\"OpenSaveDialog()\" title=\"Save this search\">\n <i class=\"fa-solid fa-bookmark\"></i>\n Save Search\n </button>\n </div>\n\n <!-- Results List (flat blended list sorted by relevance) -->\n <mj-search-results\n DisplayMode=\"flat\"\n [ShowSummary]=\"false\"\n [FlatResults]=\"AllResults\"\n [ResultGroups]=\"ResultGroups\"\n [IsLoading]=\"IsSearching\"\n [TotalCount]=\"TotalCount\"\n [ElapsedMs]=\"ElapsedMs\"\n (ResultSelected)=\"OnResultSelected($event)\"\n (OpenRecordRequested)=\"OnOpenRecord($event)\"\n (MoreLikeThisRequested)=\"OnMoreLikeThis($event)\"\n ></mj-search-results>\n\n <!-- Agent CTA at bottom -->\n @if (TotalCount === 0 && !IsSearching) {\n <div class=\"search-agent-cta\">\n <i class=\"fa-solid fa-robot cta-icon\"></i>\n <div class=\"cta-text\">\n <strong>Can't find what you're looking for?</strong>\n <p>Ask the Knowledge Agent for a deeper analysis</p>\n </div>\n <button class=\"cta-btn\" (click)=\"OnAskAgent()\">\n Ask Agent\n </button>\n </div>\n }\n </div>\n </div>\n } @else if (!IsSearching) {\n <!-- Empty state: recent & saved searches -->\n <div class=\"search-recent-area\">\n @if (SavedSearches.length > 0) {\n <h3 class=\"recent-title\">Saved Searches</h3>\n <div class=\"recent-list\">\n @for (saved of SavedSearches; track saved.ID; let i = $index) {\n @if (i < 8) {\n <div class=\"recent-item saved-item\" (click)=\"ApplySavedSearch(saved)\">\n <i class=\"fa-solid fa-bookmark saved-icon\"></i>\n <span class=\"recent-query\">{{ saved.Name }}</span>\n <span class=\"saved-query-text\">{{ saved.Query }}</span>\n <button class=\"saved-delete-btn\" (click)=\"DeleteSavedSearch(saved, $event)\" title=\"Delete saved search\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n }\n }\n </div>\n }\n\n @if (RecentSearches.length > 0) {\n <h3 class=\"recent-title\">Recent Searches</h3>\n <div class=\"recent-list\">\n @for (recent of RecentSearches; track recent.Query; let i = $index) {\n @if (i < 8) {\n <div class=\"recent-item\" (click)=\"ApplyRecentSearch(recent)\">\n <i class=\"fa-solid fa-clock recent-icon\"></i>\n <span class=\"recent-query\">{{ recent.Query }}</span>\n <span class=\"recent-count\">{{ recent.ResultCount }} results</span>\n </div>\n }\n }\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Save Search Dialog Overlay -->\n @if (ShowSaveDialog) {\n <div class=\"save-dialog-overlay\" (click)=\"CancelSaveDialog()\">\n <div class=\"save-dialog\" (click)=\"$event.stopPropagation()\">\n <h3 class=\"save-dialog-title\">Save Search</h3>\n <p class=\"save-dialog-subtitle\">Save \"{{ Query }}\" for quick access later</p>\n <label class=\"save-dialog-label\">Name</label>\n <input\n type=\"text\"\n class=\"mj-input save-dialog-input\"\n [(ngModel)]=\"SaveSearchName\"\n placeholder=\"Give this search a name...\"\n (keydown.enter)=\"ConfirmSaveSearch()\"\n autofocus\n />\n <div class=\"save-dialog-actions\">\n <button class=\"save-dialog-confirm\" (click)=\"ConfirmSaveSearch()\" [disabled]=\"!SaveSearchName.trim()\">\n <i class=\"fa-solid fa-bookmark\"></i> Save\n </button>\n <button class=\"save-dialog-cancel\" (click)=\"CancelSaveDialog()\">Cancel</button>\n </div>\n </div>\n </div>\n }\n} @else {\n <!-- Result Detail View (Task 8) -->\n <app-search-result-detail\n [Result]=\"DetailResult\"\n (BackClicked)=\"CloseResultDetail()\"\n (NavigateToRecord)=\"OnOpenRecord($event)\"\n ></app-search-result-detail>\n}\n"]}