@memberjunction/ng-dashboards 5.34.1 → 5.35.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 (346) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
  235. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  236. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  237. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  239. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  241. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.js +420 -393
  243. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  244. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  245. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  249. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  251. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  252. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  253. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  255. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  256. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  257. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.js +587 -608
  259. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  260. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  261. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  263. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  264. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  265. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  266. package/dist/Testing/components/testing-review.component.js +310 -274
  267. package/dist/Testing/components/testing-review.component.js.map +1 -1
  268. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  269. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  271. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  272. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  273. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.js +307 -273
  275. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  276. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  277. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.js +107 -93
  279. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  280. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  281. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  282. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  283. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  285. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  287. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  288. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  289. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  290. package/dist/actions-dashboards.module.d.ts +15 -16
  291. package/dist/actions-dashboards.module.d.ts.map +1 -1
  292. package/dist/actions-dashboards.module.js +34 -11
  293. package/dist/actions-dashboards.module.js.map +1 -1
  294. package/dist/ai-dashboards.module.d.ts +45 -48
  295. package/dist/ai-dashboards.module.d.ts.map +1 -1
  296. package/dist/ai-dashboards.module.js +36 -10
  297. package/dist/ai-dashboards.module.js.map +1 -1
  298. package/dist/archiving-dashboards.module.d.ts +2 -1
  299. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  300. package/dist/archiving-dashboards.module.js +12 -2
  301. package/dist/archiving-dashboards.module.js.map +1 -1
  302. package/dist/communication-dashboards.module.d.ts +2 -1
  303. package/dist/communication-dashboards.module.d.ts.map +1 -1
  304. package/dist/communication-dashboards.module.js +24 -3
  305. package/dist/communication-dashboards.module.js.map +1 -1
  306. package/dist/core-dashboards.module.d.ts +1 -1
  307. package/dist/core-dashboards.module.d.ts.map +1 -1
  308. package/dist/core-dashboards.module.js +31 -1
  309. package/dist/core-dashboards.module.js.map +1 -1
  310. package/dist/credentials-dashboards.module.d.ts +1 -1
  311. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  312. package/dist/credentials-dashboards.module.js +28 -1
  313. package/dist/credentials-dashboards.module.js.map +1 -1
  314. package/dist/lists-dashboards.module.d.ts +1 -1
  315. package/dist/lists-dashboards.module.d.ts.map +1 -1
  316. package/dist/lists-dashboards.module.js +28 -1
  317. package/dist/lists-dashboards.module.js.map +1 -1
  318. package/dist/public-api.d.ts +2 -2
  319. package/dist/public-api.d.ts.map +1 -1
  320. package/dist/public-api.js +3 -3
  321. package/dist/public-api.js.map +1 -1
  322. package/dist/scheduling-dashboards.module.d.ts +1 -1
  323. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  324. package/dist/scheduling-dashboards.module.js +31 -1
  325. package/dist/scheduling-dashboards.module.js.map +1 -1
  326. package/dist/testing-dashboards.module.d.ts +8 -7
  327. package/dist/testing-dashboards.module.d.ts.map +1 -1
  328. package/dist/testing-dashboards.module.js +30 -0
  329. package/dist/testing-dashboards.module.js.map +1 -1
  330. package/package.json +52 -52
  331. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  332. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  333. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  334. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  335. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  336. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  339. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  340. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  342. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  343. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  344. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  346. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -1,285 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import { AIEngineBase } from '@memberjunction/ai-engine-base';
3
- import * as i0 from "@angular/core";
4
- import * as i1 from "@angular/forms";
5
- import * as i2 from "@memberjunction/ng-trees";
6
- const _forTrack0 = ($index, $item) => $item.value;
7
- function AgentFilterPanelComponent_For_28_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelementStart(0, "option", 16);
9
- i0.ɵɵtext(1);
10
- i0.ɵɵelementEnd();
11
- } if (rf & 2) {
12
- const option_r1 = ctx.$implicit;
13
- i0.ɵɵproperty("value", option_r1.value);
14
- i0.ɵɵadvance();
15
- i0.ɵɵtextInterpolate(option_r1.text);
16
- } }
17
- function AgentFilterPanelComponent_For_35_Template(rf, ctx) { if (rf & 1) {
18
- i0.ɵɵelementStart(0, "option", 16);
19
- i0.ɵɵtext(1);
20
- i0.ɵɵelementEnd();
21
- } if (rf & 2) {
22
- const option_r2 = ctx.$implicit;
23
- i0.ɵɵproperty("value", option_r2.value);
24
- i0.ɵɵadvance();
25
- i0.ɵɵtextInterpolate(option_r2.text);
26
- } }
27
- function AgentFilterPanelComponent_For_42_Template(rf, ctx) { if (rf & 1) {
28
- i0.ɵɵelementStart(0, "option", 16);
29
- i0.ɵɵtext(1);
30
- i0.ɵɵelementEnd();
31
- } if (rf & 2) {
32
- const option_r3 = ctx.$implicit;
33
- i0.ɵɵproperty("value", option_r3.value);
34
- i0.ɵɵadvance();
35
- i0.ɵɵtextInterpolate(option_r3.text);
36
- } }
37
- function AgentFilterPanelComponent_For_49_Template(rf, ctx) { if (rf & 1) {
38
- i0.ɵɵelementStart(0, "option", 16);
39
- i0.ɵɵtext(1);
40
- i0.ɵɵelementEnd();
41
- } if (rf & 2) {
42
- const option_r4 = ctx.$implicit;
43
- i0.ɵɵproperty("value", option_r4.value);
44
- i0.ɵɵadvance();
45
- i0.ɵɵtextInterpolate(option_r4.text);
46
- } }
47
- function AgentFilterPanelComponent_For_56_Template(rf, ctx) { if (rf & 1) {
48
- i0.ɵɵelementStart(0, "option", 16);
49
- i0.ɵɵtext(1);
50
- i0.ɵɵelementEnd();
51
- } if (rf & 2) {
52
- const option_r5 = ctx.$implicit;
53
- i0.ɵɵproperty("value", option_r5.value);
54
- i0.ɵɵadvance();
55
- i0.ɵɵtextInterpolate(option_r5.text);
56
- } }
57
- export class AgentFilterPanelComponent {
58
- agents = [];
59
- filteredAgents = [];
60
- filters = {
61
- searchTerm: '',
62
- agentType: 'all',
63
- parentAgent: 'all',
64
- status: 'all',
65
- executionMode: 'all',
66
- exposeAsAction: 'all',
67
- categoryId: 'all'
68
- };
69
- filtersChange = new EventEmitter();
70
- filterChange = new EventEmitter();
71
- resetFilters = new EventEmitter();
72
- closePanel = new EventEmitter();
73
- agentTypeOptions = [
74
- { text: 'All Types', value: 'all' }
75
- ];
76
- parentAgentOptions = [
77
- { text: 'All Agents', value: 'all' },
78
- { text: 'No Parent', value: 'none' }
79
- ];
80
- statusOptions = [
81
- { text: 'All Statuses', value: 'all' },
82
- { text: 'Active', value: 'active' },
83
- { text: 'Inactive', value: 'inactive' }
84
- ];
85
- executionModeOptions = [
86
- { text: 'All Execution Modes', value: 'all' },
87
- { text: 'Sequential', value: 'Sequential' },
88
- { text: 'Parallel', value: 'Parallel' }
89
- ];
90
- exposeAsActionOptions = [
91
- { text: 'All Agents', value: 'all' },
92
- { text: 'Exposed as Action', value: 'true' },
93
- { text: 'Not Exposed', value: 'false' }
94
- ];
95
- /** TreeDropdown configuration for agent categories */
96
- CategoryBranchConfig = {
97
- EntityName: 'MJ: AI Agent Categories',
98
- DisplayField: 'Name',
99
- ParentIDField: 'ParentID',
100
- DefaultIcon: 'fa-solid fa-folder',
101
- OrderBy: 'Name ASC',
102
- DescriptionField: 'Description'
103
- };
104
- /** Current category selection for the tree dropdown */
105
- SelectedCategoryKey = null;
106
- async ngOnInit() {
107
- // Load agent types from AIEngineBase
108
- try {
109
- const aiEngine = AIEngineBase.Instance;
110
- if (!aiEngine.Loaded) {
111
- await aiEngine.Config();
112
- }
113
- // Add agent types to options
114
- const agentTypes = aiEngine.AgentTypes;
115
- agentTypes.forEach((type) => {
116
- this.agentTypeOptions.push({
117
- text: type.Name,
118
- value: type.ID
119
- });
120
- });
121
- // Add parent agents to options (only those without parents themselves)
122
- const parentAgents = this.agents.filter(agent => !agent.ParentID);
123
- parentAgents.forEach(agent => {
124
- this.parentAgentOptions.push({
125
- text: agent.Name || 'Unnamed Agent',
126
- value: agent.ID
127
- });
128
- });
129
- }
130
- catch (error) {
131
- console.error('Error loading agent metadata:', error);
132
- }
133
- }
134
- onFilterChange() {
135
- this.filtersChange.emit(this.filters);
136
- this.filterChange.emit();
137
- }
138
- onCategoryChange(value) {
139
- if (value && !Array.isArray(value)) {
140
- const idValue = value.KeyValuePairs?.find(kv => kv.FieldName === 'ID')?.Value;
141
- this.filters.categoryId = idValue ?? 'all';
142
- }
143
- else {
144
- this.filters.categoryId = 'all';
145
- }
146
- this.SelectedCategoryKey = Array.isArray(value) ? null : value;
147
- this.onFilterChange();
148
- }
149
- resetAllFilters() {
150
- this.resetFilters.emit();
151
- }
152
- toggleFilterPanel() {
153
- this.closePanel.emit();
154
- }
155
- static ɵfac = function AgentFilterPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || AgentFilterPanelComponent)(); };
156
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AgentFilterPanelComponent, selectors: [["mj-agent-filter-panel"]], inputs: { agents: "agents", filteredAgents: "filteredAgents", filters: "filters" }, outputs: { filtersChange: "filtersChange", filterChange: "filterChange", resetFilters: "resetFilters", closePanel: "closePanel" }, standalone: false, decls: 61, vars: 12, consts: [[1, "filter-panel"], [1, "filter-panel-header"], [1, "filter-summary-inline"], [1, "summary-value"], [1, "summary-label"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "filter-content"], [1, "filter-group"], [1, "filter-label"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search agents...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "fa-solid", "fa-folder-tree"], ["SelectionMode", "single", "SelectableTypes", "branch", "Placeholder", "All Categories", 3, "ValueChange", "BranchConfig", "Value", "Clearable", "EnableSearch"], [1, "fa-solid", "fa-robot"], [1, "filter-select", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "fa-solid", "fa-sitemap"], [1, "fa-solid", "fa-toggle-on"], [1, "fa-solid", "fa-list-ol"], [1, "fa-solid", "fa-share"], [1, "filter-actions"], ["title", "Reset all filters", 1, "reset-btn", 3, "click"], [1, "fa-solid", "fa-undo"]], template: function AgentFilterPanelComponent_Template(rf, ctx) { if (rf & 1) {
157
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h3");
158
- i0.ɵɵtext(3, "Agent Filters");
159
- i0.ɵɵelementEnd();
160
- i0.ɵɵelementStart(4, "div", 2)(5, "span", 3);
161
- i0.ɵɵtext(6);
162
- i0.ɵɵelementEnd();
163
- i0.ɵɵelementStart(7, "span", 4);
164
- i0.ɵɵtext(8);
165
- i0.ɵɵelementEnd()();
166
- i0.ɵɵelementStart(9, "button", 5);
167
- i0.ɵɵlistener("click", function AgentFilterPanelComponent_Template_button_click_9_listener() { return ctx.toggleFilterPanel(); });
168
- i0.ɵɵelement(10, "span", 6);
169
- i0.ɵɵelementEnd()();
170
- i0.ɵɵelementStart(11, "div", 7)(12, "div", 8)(13, "label", 9);
171
- i0.ɵɵelement(14, "span", 10);
172
- i0.ɵɵtext(15, " Name ");
173
- i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(16, "input", 11);
175
- i0.ɵɵtwoWayListener("ngModelChange", function AgentFilterPanelComponent_Template_input_ngModelChange_16_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.searchTerm, $event) || (ctx.filters.searchTerm = $event); return $event; });
176
- i0.ɵɵlistener("ngModelChange", function AgentFilterPanelComponent_Template_input_ngModelChange_16_listener() { return ctx.onFilterChange(); })("input", function AgentFilterPanelComponent_Template_input_input_16_listener() { return ctx.onFilterChange(); });
177
- i0.ɵɵelementEnd()();
178
- i0.ɵɵelementStart(17, "div", 8)(18, "label", 9);
179
- i0.ɵɵelement(19, "span", 12);
180
- i0.ɵɵtext(20, " Category ");
181
- i0.ɵɵelementEnd();
182
- i0.ɵɵelementStart(21, "mj-tree-dropdown", 13);
183
- i0.ɵɵlistener("ValueChange", function AgentFilterPanelComponent_Template_mj_tree_dropdown_ValueChange_21_listener($event) { return ctx.onCategoryChange($event); });
184
- i0.ɵɵelementEnd()();
185
- i0.ɵɵelementStart(22, "div", 8)(23, "label", 9);
186
- i0.ɵɵelement(24, "span", 14);
187
- i0.ɵɵtext(25, " Type ");
188
- i0.ɵɵelementEnd();
189
- i0.ɵɵelementStart(26, "select", 15);
190
- i0.ɵɵtwoWayListener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_26_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.agentType, $event) || (ctx.filters.agentType = $event); return $event; });
191
- i0.ɵɵlistener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_26_listener() { return ctx.onFilterChange(); });
192
- i0.ɵɵrepeaterCreate(27, AgentFilterPanelComponent_For_28_Template, 2, 2, "option", 16, _forTrack0);
193
- i0.ɵɵelementEnd()();
194
- i0.ɵɵelementStart(29, "div", 8)(30, "label", 9);
195
- i0.ɵɵelement(31, "span", 17);
196
- i0.ɵɵtext(32, " Parent ");
197
- i0.ɵɵelementEnd();
198
- i0.ɵɵelementStart(33, "select", 15);
199
- i0.ɵɵtwoWayListener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_33_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.parentAgent, $event) || (ctx.filters.parentAgent = $event); return $event; });
200
- i0.ɵɵlistener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_33_listener() { return ctx.onFilterChange(); });
201
- i0.ɵɵrepeaterCreate(34, AgentFilterPanelComponent_For_35_Template, 2, 2, "option", 16, _forTrack0);
202
- i0.ɵɵelementEnd()();
203
- i0.ɵɵelementStart(36, "div", 8)(37, "label", 9);
204
- i0.ɵɵelement(38, "span", 18);
205
- i0.ɵɵtext(39, " Status ");
206
- i0.ɵɵelementEnd();
207
- i0.ɵɵelementStart(40, "select", 15);
208
- i0.ɵɵtwoWayListener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_40_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.status, $event) || (ctx.filters.status = $event); return $event; });
209
- i0.ɵɵlistener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_40_listener() { return ctx.onFilterChange(); });
210
- i0.ɵɵrepeaterCreate(41, AgentFilterPanelComponent_For_42_Template, 2, 2, "option", 16, _forTrack0);
211
- i0.ɵɵelementEnd()();
212
- i0.ɵɵelementStart(43, "div", 8)(44, "label", 9);
213
- i0.ɵɵelement(45, "span", 19);
214
- i0.ɵɵtext(46, " Execution Mode ");
215
- i0.ɵɵelementEnd();
216
- i0.ɵɵelementStart(47, "select", 15);
217
- i0.ɵɵtwoWayListener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_47_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.executionMode, $event) || (ctx.filters.executionMode = $event); return $event; });
218
- i0.ɵɵlistener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_47_listener() { return ctx.onFilterChange(); });
219
- i0.ɵɵrepeaterCreate(48, AgentFilterPanelComponent_For_49_Template, 2, 2, "option", 16, _forTrack0);
220
- i0.ɵɵelementEnd()();
221
- i0.ɵɵelementStart(50, "div", 8)(51, "label", 9);
222
- i0.ɵɵelement(52, "span", 20);
223
- i0.ɵɵtext(53, " Action Exposure ");
224
- i0.ɵɵelementEnd();
225
- i0.ɵɵelementStart(54, "select", 15);
226
- i0.ɵɵtwoWayListener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_54_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.exposeAsAction, $event) || (ctx.filters.exposeAsAction = $event); return $event; });
227
- i0.ɵɵlistener("ngModelChange", function AgentFilterPanelComponent_Template_select_ngModelChange_54_listener() { return ctx.onFilterChange(); });
228
- i0.ɵɵrepeaterCreate(55, AgentFilterPanelComponent_For_56_Template, 2, 2, "option", 16, _forTrack0);
229
- i0.ɵɵelementEnd()();
230
- i0.ɵɵelementStart(57, "div", 21)(58, "button", 22);
231
- i0.ɵɵlistener("click", function AgentFilterPanelComponent_Template_button_click_58_listener() { return ctx.resetAllFilters(); });
232
- i0.ɵɵelement(59, "span", 23);
233
- i0.ɵɵtext(60, " Reset Filters ");
234
- i0.ɵɵelementEnd()()()();
235
- } if (rf & 2) {
236
- i0.ɵɵadvance(6);
237
- i0.ɵɵtextInterpolate(ctx.filteredAgents.length);
238
- i0.ɵɵadvance(2);
239
- i0.ɵɵtextInterpolate1("of ", ctx.agents.length);
240
- i0.ɵɵadvance(8);
241
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.searchTerm);
242
- i0.ɵɵadvance(5);
243
- i0.ɵɵproperty("BranchConfig", ctx.CategoryBranchConfig)("Value", ctx.SelectedCategoryKey)("Clearable", true)("EnableSearch", true);
244
- i0.ɵɵadvance(5);
245
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.agentType);
246
- i0.ɵɵadvance();
247
- i0.ɵɵrepeater(ctx.agentTypeOptions);
248
- i0.ɵɵadvance(6);
249
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.parentAgent);
250
- i0.ɵɵadvance();
251
- i0.ɵɵrepeater(ctx.parentAgentOptions);
252
- i0.ɵɵadvance(6);
253
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.status);
254
- i0.ɵɵadvance();
255
- i0.ɵɵrepeater(ctx.statusOptions);
256
- i0.ɵɵadvance(6);
257
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.executionMode);
258
- i0.ɵɵadvance();
259
- i0.ɵɵrepeater(ctx.executionModeOptions);
260
- i0.ɵɵadvance(6);
261
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.exposeAsAction);
262
- i0.ɵɵadvance();
263
- i0.ɵɵrepeater(ctx.exposeAsActionOptions);
264
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.TreeDropdownComponent], styles: ["\n\n\n.filter-panel[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n\n\n.filter-panel-header[_ngcontent-%COMP%] {\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n background: var(--mj-bg-surface-card);\n}\n\n.filter-panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n flex: 1;\n letter-spacing: -0.02em;\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .filter-summary-inline[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: 4px;\n margin-right: 16px;\n font-size: 13px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-radius: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .filter-summary-inline[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .filter-summary-inline[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n font-weight: 500;\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 8px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.filter-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 20px;\n}\n\n\n\n.filter-group[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 10px;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-label[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-brand-primary);\n width: 16px;\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%], \n.filter-group[_ngcontent-%COMP%] .filter-select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n color: var(--mj-text-secondary);\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]:focus, \n.filter-group[_ngcontent-%COMP%] .filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-select[_ngcontent-%COMP%] {\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 14px center;\n padding-right: 36px;\n}\n\n\n\n.filter-actions[_ngcontent-%COMP%] {\n margin-top: 28px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.filter-actions[_ngcontent-%COMP%] .reset-btn[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n}\n\n.filter-actions[_ngcontent-%COMP%] .reset-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.filter-actions[_ngcontent-%COMP%] .reset-btn[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}"] });
265
- }
266
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AgentFilterPanelComponent, [{
267
- type: Component,
268
- args: [{ standalone: false, selector: 'mj-agent-filter-panel', template: "<div class=\"filter-panel\">\n <div class=\"filter-panel-header\">\n <h3>Agent Filters</h3>\n <div class=\"filter-summary-inline\">\n <span class=\"summary-value\">{{ filteredAgents.length }}</span>\n <span class=\"summary-label\">of {{ agents.length }}</span>\n </div>\n <button class=\"close-btn\" (click)=\"toggleFilterPanel()\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n \n <div class=\"filter-content\">\n <!-- Search Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-search\"></span>\n Name\n </label>\n <input \n type=\"text\"\n class=\"filter-input\"\n [(ngModel)]=\"filters.searchTerm\"\n (ngModelChange)=\"onFilterChange()\"\n (input)=\"onFilterChange()\"\n placeholder=\"Search agents...\">\n </div>\n \n <!-- Category Filter (TreeDropdown) -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-folder-tree\"></span>\n Category\n </label>\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"All Categories\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"onCategoryChange($event)\">\n </mj-tree-dropdown>\n </div>\n\n <!-- Agent Type Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-robot\"></span>\n Type\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.agentType\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of agentTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Parent Agent Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-sitemap\"></span>\n Parent\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.parentAgent\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of parentAgentOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Status Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-toggle-on\"></span>\n Status\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.status\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of statusOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Execution Mode Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-list-ol\"></span>\n Execution Mode\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.executionMode\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of executionModeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Expose As Action Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-share\"></span>\n Action Exposure\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.exposeAsAction\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of exposeAsActionOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Reset Button -->\n <div class=\"filter-actions\">\n <button class=\"reset-btn\" (click)=\"resetAllFilters()\" title=\"Reset all filters\">\n <span class=\"fa-solid fa-undo\"></span>\n Reset Filters\n </button>\n </div>\n </div>\n</div>", styles: ["/* Agent Filter Panel - World-Class Design */\n\n.filter-panel {\n height: 100%;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Header */\n.filter-panel-header {\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n background: var(--mj-bg-surface-card);\n}\n\n.filter-panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n flex: 1;\n letter-spacing: -0.02em;\n}\n\n.filter-panel-header .filter-summary-inline {\n display: flex;\n align-items: baseline;\n gap: 4px;\n margin-right: 16px;\n font-size: 13px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-radius: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.filter-panel-header .filter-summary-inline .summary-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n.filter-panel-header .filter-summary-inline .summary-label {\n color: var(--mj-brand-primary-hover);\n font-weight: 500;\n}\n\n.filter-panel-header .close-btn {\n background: transparent;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 8px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.filter-panel-header .close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.filter-panel-header .close-btn .fa-solid {\n font-size: 14px;\n}\n\n/* Content Area */\n.filter-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 20px;\n}\n\n/* Filter Groups */\n.filter-group {\n margin-bottom: 24px;\n}\n\n.filter-group .filter-label {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 10px;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.filter-group .filter-label .fa-solid {\n font-size: 13px;\n color: var(--mj-brand-primary);\n width: 16px;\n}\n\n.filter-group .filter-input,\n.filter-group .filter-select {\n width: 100%;\n padding: 12px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n color: var(--mj-text-secondary);\n}\n\n.filter-group .filter-input:focus,\n.filter-group .filter-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.filter-group .filter-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.filter-group .filter-select {\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 14px center;\n padding-right: 36px;\n}\n\n/* Filter Actions */\n.filter-actions {\n margin-top: 28px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.filter-actions .reset-btn {\n width: 100%;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n}\n\n.filter-actions .reset-btn:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.filter-actions .reset-btn .fa-solid {\n font-size: 13px;\n}\n\n/* Scrollbar Styling */\n.filter-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.filter-content::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.filter-content::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.filter-content::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n"] }]
269
- }], null, { agents: [{
270
- type: Input
271
- }], filteredAgents: [{
272
- type: Input
273
- }], filters: [{
274
- type: Input
275
- }], filtersChange: [{
276
- type: Output
277
- }], filterChange: [{
278
- type: Output
279
- }], resetFilters: [{
280
- type: Output
281
- }], closePanel: [{
282
- type: Output
283
- }] }); })();
284
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(AgentFilterPanelComponent, { className: "AgentFilterPanelComponent", filePath: "src/AI/components/agents/agent-filter-panel.component.ts", lineNumber: 24 }); })();
285
- //# sourceMappingURL=agent-filter-panel.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-filter-panel.component.js","sourceRoot":"","sources":["../../../../src/AI/components/agents/agent-filter-panel.component.ts","../../../../src/AI/components/agents/agent-filter-panel.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { CompositeKey } from '@memberjunction/core';\nimport { MJAIAgentTypeEntity } from '@memberjunction/core-entities';\nimport { AIEngineBase } from '@memberjunction/ai-engine-base';\nimport { MJAIAgentEntityExtended } from '@memberjunction/ai-core-plus';\nimport { TreeBranchConfig } from '@memberjunction/ng-trees';\n\ninterface AgentFilter {\n searchTerm: string;\n agentType: string;\n parentAgent: string;\n status: string;\n executionMode: string;\n exposeAsAction: string;\n categoryId: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-agent-filter-panel',\n templateUrl: './agent-filter-panel.component.html',\n styleUrls: ['./agent-filter-panel.component.css']\n})\nexport class AgentFilterPanelComponent implements OnInit {\n @Input() agents: MJAIAgentEntityExtended[] = [];\n @Input() filteredAgents: MJAIAgentEntityExtended[] = [];\n @Input() filters: AgentFilter = {\n searchTerm: '',\n agentType: 'all',\n parentAgent: 'all',\n status: 'all',\n executionMode: 'all',\n exposeAsAction: 'all',\n categoryId: 'all'\n };\n\n @Output() filtersChange = new EventEmitter<AgentFilter>();\n @Output() filterChange = new EventEmitter<void>();\n @Output() resetFilters = new EventEmitter<void>();\n @Output() closePanel = new EventEmitter<void>();\n\n public agentTypeOptions: { text: string; value: string }[] = [\n { text: 'All Types', value: 'all' }\n ];\n\n public parentAgentOptions: { text: string; value: string }[] = [\n { text: 'All Agents', value: 'all' },\n { text: 'No Parent', value: 'none' }\n ];\n\n public statusOptions = [\n { text: 'All Statuses', value: 'all' },\n { text: 'Active', value: 'active' },\n { text: 'Inactive', value: 'inactive' }\n ];\n\n public executionModeOptions = [\n { text: 'All Execution Modes', value: 'all' },\n { text: 'Sequential', value: 'Sequential' },\n { text: 'Parallel', value: 'Parallel' }\n ];\n\n public exposeAsActionOptions = [\n { text: 'All Agents', value: 'all' },\n { text: 'Exposed as Action', value: 'true' },\n { text: 'Not Exposed', value: 'false' }\n ];\n\n /** TreeDropdown configuration for agent categories */\n public CategoryBranchConfig: TreeBranchConfig = {\n EntityName: 'MJ: AI Agent Categories',\n DisplayField: 'Name',\n ParentIDField: 'ParentID',\n DefaultIcon: 'fa-solid fa-folder',\n OrderBy: 'Name ASC',\n DescriptionField: 'Description'\n };\n\n /** Current category selection for the tree dropdown */\n public SelectedCategoryKey: CompositeKey | null = null;\n\n async ngOnInit(): Promise<void> {\n // Load agent types from AIEngineBase\n try {\n const aiEngine = AIEngineBase.Instance;\n if (!aiEngine.Loaded) {\n await aiEngine.Config();\n }\n \n // Add agent types to options\n const agentTypes = aiEngine.AgentTypes;\n agentTypes.forEach((type: MJAIAgentTypeEntity) => {\n this.agentTypeOptions.push({\n text: type.Name,\n value: type.ID\n });\n });\n\n // Add parent agents to options (only those without parents themselves)\n const parentAgents = this.agents.filter(agent => !agent.ParentID);\n parentAgents.forEach(agent => {\n this.parentAgentOptions.push({\n text: agent.Name || 'Unnamed Agent',\n value: agent.ID\n });\n });\n } catch (error) {\n console.error('Error loading agent metadata:', error);\n }\n }\n\n public onFilterChange(): void {\n this.filtersChange.emit(this.filters);\n this.filterChange.emit();\n }\n\n public onCategoryChange(value: CompositeKey | CompositeKey[] | null): void {\n if (value && !Array.isArray(value)) {\n const idValue = value.KeyValuePairs?.find(kv => kv.FieldName === 'ID')?.Value;\n this.filters.categoryId = idValue ?? 'all';\n } else {\n this.filters.categoryId = 'all';\n }\n this.SelectedCategoryKey = Array.isArray(value) ? null : value;\n this.onFilterChange();\n }\n\n public resetAllFilters(): void {\n this.resetFilters.emit();\n }\n\n public toggleFilterPanel(): void {\n this.closePanel.emit();\n }\n}","<div class=\"filter-panel\">\n <div class=\"filter-panel-header\">\n <h3>Agent Filters</h3>\n <div class=\"filter-summary-inline\">\n <span class=\"summary-value\">{{ filteredAgents.length }}</span>\n <span class=\"summary-label\">of {{ agents.length }}</span>\n </div>\n <button class=\"close-btn\" (click)=\"toggleFilterPanel()\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n \n <div class=\"filter-content\">\n <!-- Search Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-search\"></span>\n Name\n </label>\n <input \n type=\"text\"\n class=\"filter-input\"\n [(ngModel)]=\"filters.searchTerm\"\n (ngModelChange)=\"onFilterChange()\"\n (input)=\"onFilterChange()\"\n placeholder=\"Search agents...\">\n </div>\n \n <!-- Category Filter (TreeDropdown) -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-folder-tree\"></span>\n Category\n </label>\n <mj-tree-dropdown\n [BranchConfig]=\"CategoryBranchConfig\"\n [Value]=\"SelectedCategoryKey\"\n SelectionMode=\"single\"\n SelectableTypes=\"branch\"\n Placeholder=\"All Categories\"\n [Clearable]=\"true\"\n [EnableSearch]=\"true\"\n (ValueChange)=\"onCategoryChange($event)\">\n </mj-tree-dropdown>\n </div>\n\n <!-- Agent Type Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-robot\"></span>\n Type\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.agentType\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of agentTypeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Parent Agent Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-sitemap\"></span>\n Parent\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.parentAgent\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of parentAgentOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Status Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-toggle-on\"></span>\n Status\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.status\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of statusOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Execution Mode Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-list-ol\"></span>\n Execution Mode\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.executionMode\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of executionModeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Expose As Action Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-share\"></span>\n Action Exposure\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.exposeAsAction\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of exposeAsActionOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Reset Button -->\n <div class=\"filter-actions\">\n <button class=\"reset-btn\" (click)=\"resetAllFilters()\" title=\"Reset all filters\">\n <span class=\"fa-solid fa-undo\"></span>\n Reset Filters\n </button>\n </div>\n </div>\n</div>"]}
@@ -1,49 +0,0 @@
1
- import { EventEmitter, OnInit } from '@angular/core';
2
- import { MJAIPromptCategoryEntity, MJAIPromptTypeEntity } from '@memberjunction/core-entities';
3
- import * as i0 from "@angular/core";
4
- interface PromptFilter {
5
- searchTerm: string;
6
- categoryId: string;
7
- typeId: string;
8
- status: string;
9
- }
10
- interface PromptWithTemplate {
11
- prompt: any;
12
- template: any;
13
- templateContent: any;
14
- category: any;
15
- type: any;
16
- }
17
- export declare class PromptFilterPanelComponent implements OnInit {
18
- prompts: PromptWithTemplate[];
19
- filteredPrompts: PromptWithTemplate[];
20
- categories: MJAIPromptCategoryEntity[];
21
- types: MJAIPromptTypeEntity[];
22
- filters: PromptFilter;
23
- filtersChange: EventEmitter<PromptFilter>;
24
- filterChange: EventEmitter<void>;
25
- resetFilters: EventEmitter<void>;
26
- closePanel: EventEmitter<void>;
27
- categoryOptions: Array<{
28
- text: string;
29
- value: string;
30
- }>;
31
- typeOptions: Array<{
32
- text: string;
33
- value: string;
34
- }>;
35
- statusOptions: {
36
- text: string;
37
- value: string;
38
- }[];
39
- ngOnInit(): void;
40
- private buildFilterOptions;
41
- onFilterChange(): void;
42
- resetAllFilters(): void;
43
- toggleFilterPanel(): void;
44
- updateCategories(categories: MJAIPromptCategoryEntity[]): void;
45
- static ɵfac: i0.ɵɵFactoryDeclaration<PromptFilterPanelComponent, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<PromptFilterPanelComponent, "mj-prompt-filter-panel", never, { "prompts": { "alias": "prompts"; "required": false; }; "filteredPrompts": { "alias": "filteredPrompts"; "required": false; }; "categories": { "alias": "categories"; "required": false; }; "types": { "alias": "types"; "required": false; }; "filters": { "alias": "filters"; "required": false; }; }, { "filtersChange": "filtersChange"; "filterChange": "filterChange"; "resetFilters": "resetFilters"; "closePanel": "closePanel"; }, never, never, false, never>;
47
- }
48
- export {};
49
- //# sourceMappingURL=prompt-filter-panel.component.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-filter-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/AI/components/prompts/prompt-filter-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,YAAY,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;;AAE/F,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,GAAG,CAAC;IACd,eAAe,EAAE,GAAG,CAAC;IACrB,QAAQ,EAAE,GAAG,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACX;AAED,qBAMa,0BAA2B,YAAW,MAAM;IAC9C,OAAO,EAAE,kBAAkB,EAAE,CAAM;IACnC,eAAe,EAAE,kBAAkB,EAAE,CAAM;IAC3C,UAAU,EAAE,wBAAwB,EAAE,CAAM;IAC5C,KAAK,EAAE,oBAAoB,EAAE,CAAM;IACnC,OAAO,EAAE,YAAY,CAK5B;IAEQ,aAAa,6BAAoC;IACjD,YAAY,qBAA4B;IACxC,YAAY,qBAA4B;IACxC,UAAU,qBAA4B;IAEzC,eAAe,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAM;IAC3D,WAAW,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAC,CAAC,CAAM;IACvD,aAAa;;;QAKlB;IAEF,QAAQ,IAAI,IAAI;IAIhB,OAAO,CAAC,kBAAkB;IAYnB,cAAc,IAAI,IAAI;IAKtB,eAAe,IAAI,IAAI;IAIvB,iBAAiB,IAAI,IAAI;IAIzB,gBAAgB,CAAC,UAAU,EAAE,wBAAwB,EAAE,GAAG,IAAI;yCAvD1D,0BAA0B;2CAA1B,0BAA0B;CA2DtC"}
@@ -1,184 +0,0 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- import * as i1 from "@angular/forms";
4
- const _forTrack0 = ($index, $item) => $item.value;
5
- function PromptFilterPanelComponent_For_23_Template(rf, ctx) { if (rf & 1) {
6
- i0.ɵɵelementStart(0, "option", 14);
7
- i0.ɵɵtext(1);
8
- i0.ɵɵelementEnd();
9
- } if (rf & 2) {
10
- const option_r1 = ctx.$implicit;
11
- i0.ɵɵproperty("value", option_r1.value);
12
- i0.ɵɵadvance();
13
- i0.ɵɵtextInterpolate(option_r1.text);
14
- } }
15
- function PromptFilterPanelComponent_For_30_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelementStart(0, "option", 14);
17
- i0.ɵɵtext(1);
18
- i0.ɵɵelementEnd();
19
- } if (rf & 2) {
20
- const option_r2 = ctx.$implicit;
21
- i0.ɵɵproperty("value", option_r2.value);
22
- i0.ɵɵadvance();
23
- i0.ɵɵtextInterpolate(option_r2.text);
24
- } }
25
- function PromptFilterPanelComponent_For_37_Template(rf, ctx) { if (rf & 1) {
26
- i0.ɵɵelementStart(0, "option", 14);
27
- i0.ɵɵtext(1);
28
- i0.ɵɵelementEnd();
29
- } if (rf & 2) {
30
- const option_r3 = ctx.$implicit;
31
- i0.ɵɵproperty("value", option_r3.value);
32
- i0.ɵɵadvance();
33
- i0.ɵɵtextInterpolate(option_r3.text);
34
- } }
35
- export class PromptFilterPanelComponent {
36
- prompts = [];
37
- filteredPrompts = [];
38
- categories = [];
39
- types = [];
40
- filters = {
41
- searchTerm: '',
42
- categoryId: 'all',
43
- typeId: 'all',
44
- status: 'all'
45
- };
46
- filtersChange = new EventEmitter();
47
- filterChange = new EventEmitter();
48
- resetFilters = new EventEmitter();
49
- closePanel = new EventEmitter();
50
- categoryOptions = [];
51
- typeOptions = [];
52
- statusOptions = [
53
- { text: 'All Statuses', value: 'all' },
54
- { text: 'Active', value: 'Active' },
55
- { text: 'Pending', value: 'Pending' },
56
- { text: 'Disabled', value: 'Disabled' }
57
- ];
58
- ngOnInit() {
59
- this.buildFilterOptions();
60
- }
61
- buildFilterOptions() {
62
- this.categoryOptions = [
63
- { text: 'All Categories', value: 'all' },
64
- ...this.categories.map(cat => ({ text: cat.Name, value: cat.ID }))
65
- ];
66
- this.typeOptions = [
67
- { text: 'All Types', value: 'all' },
68
- ...this.types.map(type => ({ text: type.Name, value: type.ID }))
69
- ];
70
- }
71
- onFilterChange() {
72
- this.filtersChange.emit(this.filters);
73
- this.filterChange.emit();
74
- }
75
- resetAllFilters() {
76
- this.resetFilters.emit();
77
- }
78
- toggleFilterPanel() {
79
- this.closePanel.emit();
80
- }
81
- updateCategories(categories) {
82
- this.categories = categories;
83
- this.buildFilterOptions();
84
- }
85
- static ɵfac = function PromptFilterPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || PromptFilterPanelComponent)(); };
86
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PromptFilterPanelComponent, selectors: [["mj-prompt-filter-panel"]], inputs: { prompts: "prompts", filteredPrompts: "filteredPrompts", categories: "categories", types: "types", filters: "filters" }, outputs: { filtersChange: "filtersChange", filterChange: "filterChange", resetFilters: "resetFilters", closePanel: "closePanel" }, standalone: false, decls: 42, vars: 6, consts: [[1, "filter-panel"], [1, "filter-panel-header"], [1, "filter-summary-inline"], [1, "summary-value"], [1, "summary-label"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "filter-content"], [1, "filter-group"], [1, "filter-label"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search prompts...", 1, "filter-input", 3, "ngModelChange", "input", "ngModel"], [1, "fa-solid", "fa-folder"], [1, "filter-select", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "fa-solid", "fa-tag"], [1, "fa-solid", "fa-check-circle"], [1, "filter-actions"], ["title", "Reset all filters", 1, "reset-btn", 3, "click"], [1, "fa-solid", "fa-undo"]], template: function PromptFilterPanelComponent_Template(rf, ctx) { if (rf & 1) {
87
- i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "h3");
88
- i0.ɵɵtext(3, "Prompt Filters");
89
- i0.ɵɵelementEnd();
90
- i0.ɵɵelementStart(4, "div", 2)(5, "span", 3);
91
- i0.ɵɵtext(6);
92
- i0.ɵɵelementEnd();
93
- i0.ɵɵelementStart(7, "span", 4);
94
- i0.ɵɵtext(8);
95
- i0.ɵɵelementEnd()();
96
- i0.ɵɵelementStart(9, "button", 5);
97
- i0.ɵɵlistener("click", function PromptFilterPanelComponent_Template_button_click_9_listener() { return ctx.toggleFilterPanel(); });
98
- i0.ɵɵelement(10, "span", 6);
99
- i0.ɵɵelementEnd()();
100
- i0.ɵɵelementStart(11, "div", 7)(12, "div", 8)(13, "label", 9);
101
- i0.ɵɵelement(14, "span", 10);
102
- i0.ɵɵtext(15, " Search ");
103
- i0.ɵɵelementEnd();
104
- i0.ɵɵelementStart(16, "input", 11);
105
- i0.ɵɵtwoWayListener("ngModelChange", function PromptFilterPanelComponent_Template_input_ngModelChange_16_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.searchTerm, $event) || (ctx.filters.searchTerm = $event); return $event; });
106
- i0.ɵɵlistener("ngModelChange", function PromptFilterPanelComponent_Template_input_ngModelChange_16_listener() { return ctx.onFilterChange(); })("input", function PromptFilterPanelComponent_Template_input_input_16_listener() { return ctx.onFilterChange(); });
107
- i0.ɵɵelementEnd()();
108
- i0.ɵɵelementStart(17, "div", 8)(18, "label", 9);
109
- i0.ɵɵelement(19, "span", 12);
110
- i0.ɵɵtext(20, " Category ");
111
- i0.ɵɵelementEnd();
112
- i0.ɵɵelementStart(21, "select", 13);
113
- i0.ɵɵtwoWayListener("ngModelChange", function PromptFilterPanelComponent_Template_select_ngModelChange_21_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.categoryId, $event) || (ctx.filters.categoryId = $event); return $event; });
114
- i0.ɵɵlistener("ngModelChange", function PromptFilterPanelComponent_Template_select_ngModelChange_21_listener() { return ctx.onFilterChange(); });
115
- i0.ɵɵrepeaterCreate(22, PromptFilterPanelComponent_For_23_Template, 2, 2, "option", 14, _forTrack0);
116
- i0.ɵɵelementEnd()();
117
- i0.ɵɵelementStart(24, "div", 8)(25, "label", 9);
118
- i0.ɵɵelement(26, "span", 15);
119
- i0.ɵɵtext(27, " Type ");
120
- i0.ɵɵelementEnd();
121
- i0.ɵɵelementStart(28, "select", 13);
122
- i0.ɵɵtwoWayListener("ngModelChange", function PromptFilterPanelComponent_Template_select_ngModelChange_28_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.typeId, $event) || (ctx.filters.typeId = $event); return $event; });
123
- i0.ɵɵlistener("ngModelChange", function PromptFilterPanelComponent_Template_select_ngModelChange_28_listener() { return ctx.onFilterChange(); });
124
- i0.ɵɵrepeaterCreate(29, PromptFilterPanelComponent_For_30_Template, 2, 2, "option", 14, _forTrack0);
125
- i0.ɵɵelementEnd()();
126
- i0.ɵɵelementStart(31, "div", 8)(32, "label", 9);
127
- i0.ɵɵelement(33, "span", 16);
128
- i0.ɵɵtext(34, " Status ");
129
- i0.ɵɵelementEnd();
130
- i0.ɵɵelementStart(35, "select", 13);
131
- i0.ɵɵtwoWayListener("ngModelChange", function PromptFilterPanelComponent_Template_select_ngModelChange_35_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.filters.status, $event) || (ctx.filters.status = $event); return $event; });
132
- i0.ɵɵlistener("ngModelChange", function PromptFilterPanelComponent_Template_select_ngModelChange_35_listener() { return ctx.onFilterChange(); });
133
- i0.ɵɵrepeaterCreate(36, PromptFilterPanelComponent_For_37_Template, 2, 2, "option", 14, _forTrack0);
134
- i0.ɵɵelementEnd()();
135
- i0.ɵɵelementStart(38, "div", 17)(39, "button", 18);
136
- i0.ɵɵlistener("click", function PromptFilterPanelComponent_Template_button_click_39_listener() { return ctx.resetAllFilters(); });
137
- i0.ɵɵelement(40, "span", 19);
138
- i0.ɵɵtext(41, " Reset Filters ");
139
- i0.ɵɵelementEnd()()()();
140
- } if (rf & 2) {
141
- i0.ɵɵadvance(6);
142
- i0.ɵɵtextInterpolate(ctx.filteredPrompts.length);
143
- i0.ɵɵadvance(2);
144
- i0.ɵɵtextInterpolate1("of ", ctx.prompts.length);
145
- i0.ɵɵadvance(8);
146
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.searchTerm);
147
- i0.ɵɵadvance(5);
148
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.categoryId);
149
- i0.ɵɵadvance();
150
- i0.ɵɵrepeater(ctx.categoryOptions);
151
- i0.ɵɵadvance(6);
152
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.typeId);
153
- i0.ɵɵadvance();
154
- i0.ɵɵrepeater(ctx.typeOptions);
155
- i0.ɵɵadvance(6);
156
- i0.ɵɵtwoWayProperty("ngModel", ctx.filters.status);
157
- i0.ɵɵadvance();
158
- i0.ɵɵrepeater(ctx.statusOptions);
159
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel], styles: ["\n\n\n.filter-panel[_ngcontent-%COMP%] {\n height: 100%;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n\n\n.filter-panel-header[_ngcontent-%COMP%] {\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n background: var(--mj-bg-surface-card);\n}\n\n.filter-panel-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n flex: 1;\n letter-spacing: -0.02em;\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .filter-summary-inline[_ngcontent-%COMP%] {\n display: flex;\n align-items: baseline;\n gap: 4px;\n margin-right: 16px;\n font-size: 13px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-radius: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .filter-summary-inline[_ngcontent-%COMP%] .summary-value[_ngcontent-%COMP%] {\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .filter-summary-inline[_ngcontent-%COMP%] .summary-label[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary-hover);\n font-weight: 500;\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 8px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.filter-panel-header[_ngcontent-%COMP%] .close-btn[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n\n\n.filter-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 20px;\n}\n\n\n\n.filter-group[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 10px;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-label[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-brand-primary);\n width: 16px;\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%], \n.filter-group[_ngcontent-%COMP%] .filter-select[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n color: var(--mj-text-secondary);\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]:focus, \n.filter-group[_ngcontent-%COMP%] .filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.filter-group[_ngcontent-%COMP%] .filter-select[_ngcontent-%COMP%] {\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 14px center;\n padding-right: 36px;\n}\n\n\n\n.filter-actions[_ngcontent-%COMP%] {\n margin-top: 28px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.filter-actions[_ngcontent-%COMP%] .reset-btn[_ngcontent-%COMP%] {\n width: 100%;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n}\n\n.filter-actions[_ngcontent-%COMP%] .reset-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.filter-actions[_ngcontent-%COMP%] .reset-btn[_ngcontent-%COMP%] .fa-solid[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar {\n width: 6px;\n}\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.filter-content[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}"] });
160
- }
161
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PromptFilterPanelComponent, [{
162
- type: Component,
163
- args: [{ standalone: false, selector: 'mj-prompt-filter-panel', template: "<div class=\"filter-panel\">\n <div class=\"filter-panel-header\">\n <h3>Prompt Filters</h3>\n <div class=\"filter-summary-inline\">\n <span class=\"summary-value\">{{ filteredPrompts.length }}</span>\n <span class=\"summary-label\">of {{ prompts.length }}</span>\n </div>\n <button class=\"close-btn\" (click)=\"toggleFilterPanel()\">\n <span class=\"fa-solid fa-times\"></span>\n </button>\n </div>\n \n <div class=\"filter-content\">\n <!-- Search Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-search\"></span>\n Search\n </label>\n <input \n type=\"text\"\n class=\"filter-input\"\n [(ngModel)]=\"filters.searchTerm\"\n (ngModelChange)=\"onFilterChange()\"\n (input)=\"onFilterChange()\"\n placeholder=\"Search prompts...\">\n </div>\n \n <!-- Category Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-folder\"></span>\n Category\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.categoryId\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of categoryOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Type Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-tag\"></span>\n Type\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.typeId\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of typeOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Status Filter -->\n <div class=\"filter-group\">\n <label class=\"filter-label\">\n <span class=\"fa-solid fa-check-circle\"></span>\n Status\n </label>\n <select \n class=\"filter-select\"\n [(ngModel)]=\"filters.status\"\n (ngModelChange)=\"onFilterChange()\">\n @for (option of statusOptions; track option.value) {\n <option [value]=\"option.value\">{{ option.text }}</option>\n }\n </select>\n </div>\n \n <!-- Reset Button -->\n <div class=\"filter-actions\">\n <button class=\"reset-btn\" (click)=\"resetAllFilters()\" title=\"Reset all filters\">\n <span class=\"fa-solid fa-undo\"></span>\n Reset Filters\n </button>\n </div>\n </div>\n</div>", styles: ["/* Prompt Filter Panel - World-Class Design */\n\n.filter-panel {\n height: 100%;\n background: var(--mj-bg-surface);\n border-right: 1px solid var(--mj-border-default);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Header */\n.filter-panel-header {\n padding: 20px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-shrink: 0;\n background: var(--mj-bg-surface-card);\n}\n\n.filter-panel-header h3 {\n margin: 0;\n font-size: 16px;\n font-weight: 700;\n color: var(--mj-text-primary);\n flex: 1;\n letter-spacing: -0.02em;\n}\n\n.filter-panel-header .filter-summary-inline {\n display: flex;\n align-items: baseline;\n gap: 4px;\n margin-right: 16px;\n font-size: 13px;\n padding: 6px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n border-radius: 20px;\n border: 1px solid color-mix(in srgb, var(--mj-brand-primary) 30%, var(--mj-bg-surface));\n}\n\n.filter-panel-header .filter-summary-inline .summary-value {\n font-weight: 700;\n color: var(--mj-brand-primary);\n}\n\n.filter-panel-header .filter-summary-inline .summary-label {\n color: var(--mj-brand-primary-hover);\n font-weight: 500;\n}\n\n.filter-panel-header .close-btn {\n background: transparent;\n border: none;\n padding: 8px;\n cursor: pointer;\n color: var(--mj-text-disabled);\n border-radius: 8px;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n.filter-panel-header .close-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.filter-panel-header .close-btn .fa-solid {\n font-size: 14px;\n}\n\n/* Content Area */\n.filter-content {\n flex: 1;\n overflow-y: auto;\n overflow-x: hidden;\n padding: 20px;\n}\n\n/* Filter Groups */\n.filter-group {\n margin-bottom: 24px;\n}\n\n.filter-group .filter-label {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 10px;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.filter-group .filter-label .fa-solid {\n font-size: 13px;\n color: var(--mj-brand-primary);\n width: 16px;\n}\n\n.filter-group .filter-input,\n.filter-group .filter-select {\n width: 100%;\n padding: 12px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n color: var(--mj-text-secondary);\n}\n\n.filter-group .filter-input:focus,\n.filter-group .filter-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.filter-group .filter-input::placeholder {\n color: var(--mj-text-disabled);\n}\n\n.filter-group .filter-select {\n cursor: pointer;\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M2.5 4.5L6 8l3.5-3.5'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 14px center;\n padding-right: 36px;\n}\n\n/* Filter Actions */\n.filter-actions {\n margin-top: 28px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.filter-actions .reset-btn {\n width: 100%;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n box-sizing: border-box;\n}\n\n.filter-actions .reset-btn:hover {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-secondary);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.filter-actions .reset-btn .fa-solid {\n font-size: 13px;\n}\n\n/* Scrollbar Styling */\n.filter-content::-webkit-scrollbar {\n width: 6px;\n}\n\n.filter-content::-webkit-scrollbar-track {\n background: var(--mj-bg-surface-card);\n border-radius: 3px;\n}\n\n.filter-content::-webkit-scrollbar-thumb {\n background: var(--mj-border-strong);\n border-radius: 3px;\n}\n\n.filter-content::-webkit-scrollbar-thumb:hover {\n background: var(--mj-text-disabled);\n}\n"] }]
164
- }], null, { prompts: [{
165
- type: Input
166
- }], filteredPrompts: [{
167
- type: Input
168
- }], categories: [{
169
- type: Input
170
- }], types: [{
171
- type: Input
172
- }], filters: [{
173
- type: Input
174
- }], filtersChange: [{
175
- type: Output
176
- }], filterChange: [{
177
- type: Output
178
- }], resetFilters: [{
179
- type: Output
180
- }], closePanel: [{
181
- type: Output
182
- }] }); })();
183
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PromptFilterPanelComponent, { className: "PromptFilterPanelComponent", filePath: "src/AI/components/prompts/prompt-filter-panel.component.ts", lineNumber: 25 }); })();
184
- //# sourceMappingURL=prompt-filter-panel.component.js.map