@memberjunction/ng-dashboards 5.34.0 → 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 (348) 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.d.ts +4 -0
  235. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  236. package/dist/SystemDiagnostics/system-diagnostics.component.js +812 -784
  237. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  239. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  240. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  241. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  243. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  244. package/dist/Testing/components/testing-analytics.component.js +420 -393
  245. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  249. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  251. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  252. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  253. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  255. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  256. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  257. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  259. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  260. package/dist/Testing/components/testing-explorer.component.js +587 -608
  261. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  263. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  264. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  265. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  266. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  267. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  268. package/dist/Testing/components/testing-review.component.js +310 -274
  269. package/dist/Testing/components/testing-review.component.js.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  271. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  272. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  273. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  275. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  276. package/dist/Testing/components/testing-runs.component.js +307 -273
  277. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  279. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  280. package/dist/Testing/testing-dashboard.component.js +107 -93
  281. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  282. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  283. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  285. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  287. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  288. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  289. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  290. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  291. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  292. package/dist/actions-dashboards.module.d.ts +15 -16
  293. package/dist/actions-dashboards.module.d.ts.map +1 -1
  294. package/dist/actions-dashboards.module.js +34 -11
  295. package/dist/actions-dashboards.module.js.map +1 -1
  296. package/dist/ai-dashboards.module.d.ts +45 -48
  297. package/dist/ai-dashboards.module.d.ts.map +1 -1
  298. package/dist/ai-dashboards.module.js +36 -10
  299. package/dist/ai-dashboards.module.js.map +1 -1
  300. package/dist/archiving-dashboards.module.d.ts +2 -1
  301. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  302. package/dist/archiving-dashboards.module.js +12 -2
  303. package/dist/archiving-dashboards.module.js.map +1 -1
  304. package/dist/communication-dashboards.module.d.ts +2 -1
  305. package/dist/communication-dashboards.module.d.ts.map +1 -1
  306. package/dist/communication-dashboards.module.js +24 -3
  307. package/dist/communication-dashboards.module.js.map +1 -1
  308. package/dist/core-dashboards.module.d.ts +1 -1
  309. package/dist/core-dashboards.module.d.ts.map +1 -1
  310. package/dist/core-dashboards.module.js +31 -1
  311. package/dist/core-dashboards.module.js.map +1 -1
  312. package/dist/credentials-dashboards.module.d.ts +1 -1
  313. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  314. package/dist/credentials-dashboards.module.js +28 -1
  315. package/dist/credentials-dashboards.module.js.map +1 -1
  316. package/dist/lists-dashboards.module.d.ts +1 -1
  317. package/dist/lists-dashboards.module.d.ts.map +1 -1
  318. package/dist/lists-dashboards.module.js +28 -1
  319. package/dist/lists-dashboards.module.js.map +1 -1
  320. package/dist/public-api.d.ts +2 -2
  321. package/dist/public-api.d.ts.map +1 -1
  322. package/dist/public-api.js +3 -3
  323. package/dist/public-api.js.map +1 -1
  324. package/dist/scheduling-dashboards.module.d.ts +1 -1
  325. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  326. package/dist/scheduling-dashboards.module.js +31 -1
  327. package/dist/scheduling-dashboards.module.js.map +1 -1
  328. package/dist/testing-dashboards.module.d.ts +8 -7
  329. package/dist/testing-dashboards.module.d.ts.map +1 -1
  330. package/dist/testing-dashboards.module.js +30 -0
  331. package/dist/testing-dashboards.module.js.map +1 -1
  332. package/package.json +52 -52
  333. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  334. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  335. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  336. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  339. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  340. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  342. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  343. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  344. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  346. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  347. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  348. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -15,6 +15,17 @@ import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-sha
15
15
  import { ScheduledJobDialogResult } from '@memberjunction/ng-scheduling';
16
16
  import * as i0 from "@angular/core";
17
17
  export declare class SchedulingResourceComponent extends BaseResourceComponent implements AfterViewInit, OnDestroy {
18
+ /**
19
+ * When true, renders only the body content (no <mj-page-layout> + <mj-page-header>
20
+ * chrome). Used when embedded inside another resource page (e.g. KH Configuration's
21
+ * Scheduling section) so we don't get nested page-layouts that trap click events.
22
+ *
23
+ * Named `HideToolbar` for cross-section consistency with Scheduling/Testing inner
24
+ * components — see plans/explorer-chrome-conventions.md Section 5. The name is
25
+ * narrower than its actual behavior (suppresses entire chrome, not just the toolbar)
26
+ * but matches the documented convention.
27
+ */
28
+ HideToolbar: boolean;
18
29
  private cdr;
19
30
  protected navigationService: NavigationService;
20
31
  private scheduledJobService;
@@ -69,7 +80,7 @@ export declare class SchedulingResourceComponent extends BaseResourceComponent i
69
80
  private formatDurationShort;
70
81
  private formatNumber;
71
82
  static ɵfac: i0.ɵɵFactoryDeclaration<SchedulingResourceComponent, never>;
72
- static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingResourceComponent, "app-scheduling-resource", never, {}, {}, never, never, false, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<SchedulingResourceComponent, "app-scheduling-resource", never, { "HideToolbar": { "alias": "HideToolbar"; "required": false; }; }, {}, never, never, false, never>;
73
84
  }
74
85
  /** Tree-shaking prevention */
75
86
  export declare function LoadSchedulingResource(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"scheduling-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/scheduling/scheduling-resource.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAgC,SAAS,EAAE,aAAa,EAAU,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE5G,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAuB,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAY9F,qBAOa,2BAA4B,SAAQ,qBAAsB,YAAW,aAAa,EAAE,SAAS;IACtG,OAAO,CAAC,GAAG,CAA6B;IACxC,UAAmB,iBAAiB,oBAA6B;IACjE,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,UAAmB,QAAQ,gBAAuB;IAM5C,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzD,SAAS,UAAQ;IACjB,OAAO,EAAE,oBAAoB,EAAE,CAAM;IACrC,YAAY,EAAE,oBAAoB,EAAE,CAAM;IAC1C,UAAU,EAAE,uBAAuB,EAAE,CAAM;IAC3C,YAAY,SAAM;IAClB,WAAW,SAAM;IAExB,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAA+B;IAG9C,cAAc,UAAS;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAM1C,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAMK,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC,WAAW,IAAI,IAAI;IAUZ,aAAa,IAAI,IAAI;IAMrB,eAAe,IAAI,IAAI;IAKvB,eAAe,IAAI,IAAI;IASvB,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI;IAMpC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD,cAAc,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5E,kDAAkD;IAC3C,iBAAiB,IAAI,IAAI;IAiBzB,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAIpD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOxC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAIrC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IAQrC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IASvC,cAAc,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAKjD,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAQtD,WAAW,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM;IAQjD,iBAAiB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM;YAsBhD,QAAQ;IA8CtB,OAAO,CAAC,YAAY;IAkBpB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;yCAtbX,2BAA2B;2CAA3B,2BAA2B;CAybvC;AAED,8BAA8B;AAC9B,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
1
+ {"version":3,"file":"scheduling-resource.component.d.ts","sourceRoot":"","sources":["../../../../src/KnowledgeHub/components/scheduling/scheduling-resource.component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAuC,SAAS,EAAE,aAAa,EAAU,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAE5G,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAErF,OAAO,EAAuB,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;;AAY9F,qBAOa,2BAA4B,SAAQ,qBAAsB,YAAW,aAAa,EAAE,SAAS;IACtG;;;;;;;;;OASG;IACM,WAAW,UAAS;IAE7B,OAAO,CAAC,GAAG,CAA6B;IACxC,UAAmB,iBAAiB,oBAA6B;IACjE,OAAO,CAAC,mBAAmB,CAA+B;IAC1D,UAAmB,QAAQ,gBAAuB;IAM5C,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5D,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzD,SAAS,UAAQ;IACjB,OAAO,EAAE,oBAAoB,EAAE,CAAM;IACrC,YAAY,EAAE,oBAAoB,EAAE,CAAM;IAC1C,UAAU,EAAE,uBAAuB,EAAE,CAAM;IAC3C,YAAY,SAAM;IAClB,WAAW,SAAM;IAExB,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAA+B;IAG9C,cAAc,UAAS;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAM1C,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAMK,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtC,WAAW,IAAI,IAAI;IAUZ,aAAa,IAAI,IAAI;IAMrB,eAAe,IAAI,IAAI;IAKvB,eAAe,IAAI,IAAI;IASvB,SAAS,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI;IAMpC,QAAQ,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWlD,cAAc,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5E,kDAAkD;IAC3C,iBAAiB,IAAI,IAAI;IAiBzB,iBAAiB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAIpD,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAOxC,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAIrC,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IAQrC,YAAY,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM;IASvC,cAAc,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAKjD,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM;IAQtD,WAAW,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM;IAQjD,iBAAiB,CAAC,GAAG,EAAE,uBAAuB,GAAG,MAAM;YAsBhD,QAAQ;IA8CtB,OAAO,CAAC,YAAY;IAkBpB;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,SAAS;IA0BjB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,aAAa;IAgBrB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,YAAY;yCAlcX,2BAA2B;2CAA3B,2BAA2B;CAqcvC;AAED,8BAA8B;AAC9B,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -14,7 +14,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
14
14
  *
15
15
  * Registered as BaseResourceComponent for the Knowledge Hub application.
16
16
  */
17
- import { Component, ChangeDetectorRef, inject } from '@angular/core';
17
+ import { Component, Input, ChangeDetectorRef, inject } from '@angular/core';
18
18
  import { Subject } from 'rxjs';
19
19
  import { RunView } from '@memberjunction/core';
20
20
  import { RegisterClass } from '@memberjunction/global';
@@ -22,108 +22,197 @@ import { BaseResourceComponent, NavigationService } from '@memberjunction/ng-sha
22
22
  import { MJNotificationService } from '@memberjunction/ng-notifications';
23
23
  import { ScheduledJobService } from '@memberjunction/ng-scheduling';
24
24
  import * as i0 from "@angular/core";
25
- import * as i1 from "@angular/forms";
26
- import * as i2 from "@memberjunction/ng-shared-generic";
27
- import * as i3 from "@memberjunction/ng-scheduling";
25
+ import * as i1 from "@angular/common";
26
+ import * as i2 from "@angular/forms";
27
+ import * as i3 from "@memberjunction/ng-shared-generic";
28
+ import * as i4 from "@memberjunction/ng-ui-components";
29
+ import * as i5 from "@memberjunction/ng-scheduling";
28
30
  const _forTrack0 = ($index, $item) => $item.ID;
31
+ function SchedulingResourceComponent_Conditional_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelement(0, "mj-stat-badge", 3);
33
+ } if (rf & 2) {
34
+ const ctx_r1 = i0.ɵɵnextContext(2);
35
+ i0.ɵɵproperty("Count", ctx_r1.ActiveCount);
36
+ } }
37
+ function SchedulingResourceComponent_Conditional_0_Conditional_4_Template(rf, ctx) { if (rf & 1) {
38
+ i0.ɵɵelement(0, "mj-stat-badge", 4);
39
+ } if (rf & 2) {
40
+ const ctx_r1 = i0.ɵɵnextContext(2);
41
+ i0.ɵɵproperty("Count", ctx_r1.PausedCount);
42
+ } }
43
+ function SchedulingResourceComponent_Conditional_0_ng_container_23_Template(rf, ctx) { if (rf & 1) {
44
+ i0.ɵɵelementContainer(0);
45
+ } }
29
46
  function SchedulingResourceComponent_Conditional_0_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "div", 0);
31
- i0.ɵɵelement(1, "mj-loading", 1);
47
+ const _r1 = i0.ɵɵgetCurrentView();
48
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2);
49
+ i0.ɵɵconditionalCreate(3, SchedulingResourceComponent_Conditional_0_Conditional_3_Template, 1, 1, "mj-stat-badge", 3);
50
+ i0.ɵɵconditionalCreate(4, SchedulingResourceComponent_Conditional_0_Conditional_4_Template, 1, 1, "mj-stat-badge", 4);
32
51
  i0.ɵɵelementEnd();
33
- } }
34
- function SchedulingResourceComponent_Conditional_1_Conditional_18_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵelementStart(0, "strong");
36
- i0.ɵɵtext(1);
52
+ i0.ɵɵelementStart(5, "div", 5)(6, "button", 6);
53
+ i0.ɵɵlistener("click", function SchedulingResourceComponent_Conditional_0_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnNewSchedule()); });
54
+ i0.ɵɵelement(7, "i", 7);
55
+ i0.ɵɵtext(8, " New Schedule ");
56
+ i0.ɵɵelementEnd()();
57
+ i0.ɵɵelementStart(9, "div", 8)(10, "mj-page-search", 9);
58
+ i0.ɵɵlistener("ValueChange", function SchedulingResourceComponent_Conditional_0_Template_mj_page_search_ValueChange_10_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); ctx_r1.SearchQuery = $event; return i0.ɵɵresetView(ctx_r1.OnSearchChanged()); });
59
+ i0.ɵɵelementEnd();
60
+ i0.ɵɵelementStart(11, "select", 10);
61
+ i0.ɵɵtwoWayListener("ngModelChange", function SchedulingResourceComponent_Conditional_0_Template_select_ngModelChange_11_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.StatusFilter, $event) || (ctx_r1.StatusFilter = $event); return i0.ɵɵresetView($event); });
62
+ i0.ɵɵlistener("ngModelChange", function SchedulingResourceComponent_Conditional_0_Template_select_ngModelChange_11_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFilterChanged()); });
63
+ i0.ɵɵelementStart(12, "option", 11);
64
+ i0.ɵɵtext(13, "All Statuses");
65
+ i0.ɵɵelementEnd();
66
+ i0.ɵɵelementStart(14, "option", 12);
67
+ i0.ɵɵtext(15, "Active");
68
+ i0.ɵɵelementEnd();
69
+ i0.ɵɵelementStart(16, "option", 13);
70
+ i0.ɵɵtext(17, "Paused");
37
71
  i0.ɵɵelementEnd();
38
- i0.ɵɵtext(2, " active ");
72
+ i0.ɵɵelementStart(18, "option", 14);
73
+ i0.ɵɵtext(19, "Disabled");
74
+ i0.ɵɵelementEnd();
75
+ i0.ɵɵelementStart(20, "option", 15);
76
+ i0.ɵɵtext(21, "Pending");
77
+ i0.ɵɵelementEnd()()()();
78
+ i0.ɵɵelementStart(22, "mj-page-body");
79
+ i0.ɵɵtemplate(23, SchedulingResourceComponent_Conditional_0_ng_container_23_Template, 1, 0, "ng-container", 16);
80
+ i0.ɵɵelementEnd()();
39
81
  } if (rf & 2) {
40
- const ctx_r1 = i0.ɵɵnextContext(2);
82
+ const ctx_r1 = i0.ɵɵnextContext();
83
+ const schedulingBody_r3 = i0.ɵɵreference(3);
84
+ i0.ɵɵadvance(3);
85
+ i0.ɵɵconditional(ctx_r1.ActiveCount > 0 ? 3 : -1);
41
86
  i0.ɵɵadvance();
42
- i0.ɵɵtextInterpolate(ctx_r1.ActiveCount);
87
+ i0.ɵɵconditional(ctx_r1.PausedCount > 0 ? 4 : -1);
88
+ i0.ɵɵadvance(6);
89
+ i0.ɵɵproperty("Value", ctx_r1.SearchQuery);
90
+ i0.ɵɵadvance();
91
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.StatusFilter);
92
+ i0.ɵɵadvance(12);
93
+ i0.ɵɵproperty("ngTemplateOutlet", schedulingBody_r3);
43
94
  } }
44
- function SchedulingResourceComponent_Conditional_1_Conditional_19_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵtext(0, " \u00B7 ");
46
- i0.ɵɵelementStart(1, "strong");
47
- i0.ɵɵtext(2);
95
+ function SchedulingResourceComponent_Conditional_1_ng_container_17_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelementContainer(0);
97
+ } }
98
+ function SchedulingResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
99
+ const _r4 = i0.ɵɵgetCurrentView();
100
+ i0.ɵɵelementStart(0, "div", 17)(1, "input", 18);
101
+ i0.ɵɵtwoWayListener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
102
+ i0.ɵɵlistener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_input_ngModelChange_1_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSearchChanged()); });
103
+ i0.ɵɵelementEnd();
104
+ i0.ɵɵelementStart(2, "select", 10);
105
+ i0.ɵɵtwoWayListener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_select_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.StatusFilter, $event) || (ctx_r1.StatusFilter = $event); return i0.ɵɵresetView($event); });
106
+ i0.ɵɵlistener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_select_ngModelChange_2_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFilterChanged()); });
107
+ i0.ɵɵelementStart(3, "option", 11);
108
+ i0.ɵɵtext(4, "All Statuses");
109
+ i0.ɵɵelementEnd();
110
+ i0.ɵɵelementStart(5, "option", 12);
111
+ i0.ɵɵtext(6, "Active");
48
112
  i0.ɵɵelementEnd();
49
- i0.ɵɵtext(3, " paused ");
113
+ i0.ɵɵelementStart(7, "option", 13);
114
+ i0.ɵɵtext(8, "Paused");
115
+ i0.ɵɵelementEnd();
116
+ i0.ɵɵelementStart(9, "option", 14);
117
+ i0.ɵɵtext(10, "Disabled");
118
+ i0.ɵɵelementEnd();
119
+ i0.ɵɵelementStart(11, "option", 15);
120
+ i0.ɵɵtext(12, "Pending");
121
+ i0.ɵɵelementEnd()();
122
+ i0.ɵɵelement(13, "span", 19);
123
+ i0.ɵɵelementStart(14, "button", 6);
124
+ i0.ɵɵlistener("click", function SchedulingResourceComponent_Conditional_1_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnNewSchedule()); });
125
+ i0.ɵɵelement(15, "i", 7);
126
+ i0.ɵɵtext(16, " New Schedule ");
127
+ i0.ɵɵelementEnd()();
128
+ i0.ɵɵtemplate(17, SchedulingResourceComponent_Conditional_1_ng_container_17_Template, 1, 0, "ng-container", 16);
50
129
  } if (rf & 2) {
51
- const ctx_r1 = i0.ɵɵnextContext(2);
52
- i0.ɵɵadvance(2);
53
- i0.ɵɵtextInterpolate(ctx_r1.PausedCount);
130
+ const ctx_r1 = i0.ɵɵnextContext();
131
+ const schedulingBody_r3 = i0.ɵɵreference(3);
132
+ i0.ɵɵadvance();
133
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SearchQuery);
134
+ i0.ɵɵadvance();
135
+ i0.ɵɵtwoWayProperty("ngModel", ctx_r1.StatusFilter);
136
+ i0.ɵɵadvance(15);
137
+ i0.ɵɵproperty("ngTemplateOutlet", schedulingBody_r3);
138
+ } }
139
+ function SchedulingResourceComponent_ng_template_2_Conditional_0_Template(rf, ctx) { if (rf & 1) {
140
+ i0.ɵɵelementStart(0, "div", 20);
141
+ i0.ɵɵelement(1, "mj-loading", 21);
142
+ i0.ɵɵelementEnd();
54
143
  } }
55
- function SchedulingResourceComponent_Conditional_1_Conditional_20_For_2_For_11_Template(rf, ctx) { if (rf & 1) {
56
- i0.ɵɵelement(0, "span", 36);
144
+ function SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_For_2_For_11_Template(rf, ctx) { if (rf & 1) {
145
+ i0.ɵɵelement(0, "span", 44);
57
146
  } if (rf & 2) {
58
- const dotClass_r5 = ctx.$implicit;
59
- i0.ɵɵclassMap(dotClass_r5);
147
+ const dotClass_r8 = ctx.$implicit;
148
+ i0.ɵɵclassMap(dotClass_r8);
60
149
  } }
61
- function SchedulingResourceComponent_Conditional_1_Conditional_20_For_2_Template(rf, ctx) { if (rf & 1) {
62
- const _r3 = i0.ɵɵgetCurrentView();
63
- i0.ɵɵelementStart(0, "div", 22);
64
- i0.ɵɵlistener("click", function SchedulingResourceComponent_Conditional_1_Conditional_20_For_2_Template_div_click_0_listener() { const job_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.OnEditJob(job_r4)); });
65
- i0.ɵɵelementStart(1, "div", 23);
66
- i0.ɵɵelement(2, "span", 24);
67
- i0.ɵɵelementStart(3, "div", 25)(4, "div", 26);
150
+ function SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
151
+ const _r6 = i0.ɵɵgetCurrentView();
152
+ i0.ɵɵelementStart(0, "div", 30);
153
+ i0.ɵɵlistener("click", function SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_For_2_Template_div_click_0_listener() { const job_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.OnEditJob(job_r7)); });
154
+ i0.ɵɵelementStart(1, "div", 31);
155
+ i0.ɵɵelement(2, "span", 32);
156
+ i0.ɵɵelementStart(3, "div", 33)(4, "div", 34);
68
157
  i0.ɵɵtext(5);
69
158
  i0.ɵɵelementEnd();
70
- i0.ɵɵelementStart(6, "div", 27);
71
- i0.ɵɵelement(7, "i", 28);
159
+ i0.ɵɵelementStart(6, "div", 35);
160
+ i0.ɵɵelement(7, "i", 36);
72
161
  i0.ɵɵtext(8);
73
162
  i0.ɵɵelementEnd()()();
74
- i0.ɵɵelementStart(9, "div", 29);
75
- i0.ɵɵrepeaterCreate(10, SchedulingResourceComponent_Conditional_1_Conditional_20_For_2_For_11_Template, 1, 2, "span", 30, i0.ɵɵrepeaterTrackByIndex);
76
- i0.ɵɵelementStart(12, "span", 31);
163
+ i0.ɵɵelementStart(9, "div", 37);
164
+ i0.ɵɵrepeaterCreate(10, SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_For_2_For_11_Template, 1, 2, "span", 38, i0.ɵɵrepeaterTrackByIndex);
165
+ i0.ɵɵelementStart(12, "span", 39);
77
166
  i0.ɵɵtext(13, "last 7 runs");
78
167
  i0.ɵɵelementEnd()();
79
- i0.ɵɵelementStart(14, "div", 32)(15, "span", 33);
80
- i0.ɵɵelement(16, "i", 28);
168
+ i0.ɵɵelementStart(14, "div", 40)(15, "span", 41);
169
+ i0.ɵɵelement(16, "i", 36);
81
170
  i0.ɵɵtext(17, " Last: ");
82
171
  i0.ɵɵelementStart(18, "strong");
83
172
  i0.ɵɵtext(19);
84
173
  i0.ɵɵelementEnd()();
85
- i0.ɵɵelementStart(20, "span", 33);
86
- i0.ɵɵelement(21, "i", 34);
174
+ i0.ɵɵelementStart(20, "span", 41);
175
+ i0.ɵɵelement(21, "i", 42);
87
176
  i0.ɵɵelementStart(22, "strong");
88
177
  i0.ɵɵtext(23);
89
178
  i0.ɵɵelementEnd()();
90
- i0.ɵɵelementStart(24, "span", 33);
91
- i0.ɵɵelement(25, "i", 35);
179
+ i0.ɵɵelementStart(24, "span", 41);
180
+ i0.ɵɵelement(25, "i", 43);
92
181
  i0.ɵɵtext(26, " Next: ");
93
182
  i0.ɵɵelementStart(27, "strong");
94
183
  i0.ɵɵtext(28);
95
184
  i0.ɵɵelementEnd()()()();
96
185
  } if (rf & 2) {
97
- const job_r4 = ctx.$implicit;
98
- const ctx_r1 = i0.ɵɵnextContext(3);
99
- i0.ɵɵclassProp("paused", job_r4.Status === "Paused")("disabled", job_r4.Status === "Disabled");
186
+ const job_r7 = ctx.$implicit;
187
+ const ctx_r1 = i0.ɵɵnextContext(4);
188
+ i0.ɵɵclassProp("paused", job_r7.Status === "Paused")("disabled", job_r7.Status === "Disabled");
100
189
  i0.ɵɵadvance(2);
101
- i0.ɵɵclassProp("dot-active", job_r4.Status === "Active")("dot-paused", job_r4.Status === "Paused")("dot-disabled", job_r4.Status === "Disabled");
190
+ i0.ɵɵclassProp("dot-active", job_r7.Status === "Active")("dot-paused", job_r7.Status === "Paused")("dot-disabled", job_r7.Status === "Disabled");
102
191
  i0.ɵɵadvance(3);
103
- i0.ɵɵtextInterpolate(job_r4.Name);
192
+ i0.ɵɵtextInterpolate(job_r7.Name);
104
193
  i0.ɵɵadvance(3);
105
- i0.ɵɵtextInterpolate1(" ", ctx_r1.GetCronDescription(job_r4.CronExpression), " ");
194
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.GetCronDescription(job_r7.CronExpression), " ");
106
195
  i0.ɵɵadvance(2);
107
- i0.ɵɵrepeater(ctx_r1.GetSparkline(job_r4.ID));
196
+ i0.ɵɵrepeater(ctx_r1.GetSparkline(job_r7.ID));
108
197
  i0.ɵɵadvance(9);
109
- i0.ɵɵtextInterpolate(ctx_r1.GetTimeAgo(job_r4.LastRunAt));
198
+ i0.ɵɵtextInterpolate(ctx_r1.GetTimeAgo(job_r7.LastRunAt));
110
199
  i0.ɵɵadvance(4);
111
- i0.ɵɵtextInterpolate(ctx_r1.GetSuccessRate(job_r4));
200
+ i0.ɵɵtextInterpolate(ctx_r1.GetSuccessRate(job_r7));
112
201
  i0.ɵɵadvance(5);
113
- i0.ɵɵtextInterpolate(ctx_r1.GetTimeUntil(job_r4.NextRunAt));
202
+ i0.ɵɵtextInterpolate(ctx_r1.GetTimeUntil(job_r7.NextRunAt));
114
203
  } }
115
- function SchedulingResourceComponent_Conditional_1_Conditional_20_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 14);
117
- i0.ɵɵrepeaterCreate(1, SchedulingResourceComponent_Conditional_1_Conditional_20_For_2_Template, 29, 15, "div", 21, _forTrack0);
204
+ function SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
205
+ i0.ɵɵelementStart(0, "div", 22);
206
+ i0.ɵɵrepeaterCreate(1, SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_For_2_Template, 29, 15, "div", 29, _forTrack0);
118
207
  i0.ɵɵelementEnd();
119
208
  } if (rf & 2) {
120
- const ctx_r1 = i0.ɵɵnextContext(2);
209
+ const ctx_r1 = i0.ɵɵnextContext(3);
121
210
  i0.ɵɵadvance();
122
211
  i0.ɵɵrepeater(ctx_r1.FilteredJobs);
123
212
  } }
124
- function SchedulingResourceComponent_Conditional_1_Conditional_21_Template(rf, ctx) { if (rf & 1) {
125
- i0.ɵɵelementStart(0, "div", 15);
126
- i0.ɵɵelement(1, "i", 37);
213
+ function SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
214
+ i0.ɵɵelementStart(0, "div", 23);
215
+ i0.ɵɵelement(1, "i", 45);
127
216
  i0.ɵɵelementStart(2, "p");
128
217
  i0.ɵɵtext(3, "No Knowledge Hub schedules found");
129
218
  i0.ɵɵelementEnd();
@@ -131,68 +220,44 @@ function SchedulingResourceComponent_Conditional_1_Conditional_21_Template(rf, c
131
220
  i0.ɵɵtext(5, "Create a new schedule to automate classification and vector sync");
132
221
  i0.ɵɵelementEnd()();
133
222
  } }
134
- function SchedulingResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
135
- const _r1 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "div", 2)(1, "button", 3);
137
- i0.ɵɵlistener("click", function SchedulingResourceComponent_Conditional_1_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnNewSchedule()); });
138
- i0.ɵɵelement(2, "i", 4);
139
- i0.ɵɵtext(3, " New Schedule ");
140
- i0.ɵɵelementEnd();
141
- i0.ɵɵelementStart(4, "select", 5);
142
- i0.ɵɵtwoWayListener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_select_ngModelChange_4_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.StatusFilter, $event) || (ctx_r1.StatusFilter = $event); return i0.ɵɵresetView($event); });
143
- i0.ɵɵlistener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_select_ngModelChange_4_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnFilterChanged()); });
144
- i0.ɵɵelementStart(5, "option", 6);
145
- i0.ɵɵtext(6, "All Statuses");
223
+ function SchedulingResourceComponent_ng_template_2_Conditional_1_Template(rf, ctx) { if (rf & 1) {
224
+ const _r5 = i0.ɵɵgetCurrentView();
225
+ i0.ɵɵconditionalCreate(0, SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_0_Template, 3, 0, "div", 22)(1, SchedulingResourceComponent_ng_template_2_Conditional_1_Conditional_1_Template, 6, 0, "div", 23);
226
+ i0.ɵɵelementStart(2, "div", 24)(3, "button", 25);
227
+ i0.ɵɵlistener("click", function SchedulingResourceComponent_ng_template_2_Conditional_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.GoToSchedulingApp()); });
228
+ i0.ɵɵelement(4, "i", 26);
229
+ i0.ɵɵtext(5, " Open Scheduling App ");
146
230
  i0.ɵɵelementEnd();
147
- i0.ɵɵelementStart(7, "option", 7);
148
- i0.ɵɵtext(8, "Active");
149
- i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(9, "option", 8);
151
- i0.ɵɵtext(10, "Paused");
152
- i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(11, "option", 9);
154
- i0.ɵɵtext(12, "Disabled");
155
- i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(13, "option", 10);
157
- i0.ɵɵtext(14, "Pending");
231
+ i0.ɵɵelementStart(6, "span", 27);
232
+ i0.ɵɵtext(7, "Manage all scheduled jobs across the system");
158
233
  i0.ɵɵelementEnd()();
159
- i0.ɵɵelementStart(15, "input", 11);
160
- i0.ɵɵtwoWayListener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_input_ngModelChange_15_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.SearchQuery, $event) || (ctx_r1.SearchQuery = $event); return i0.ɵɵresetView($event); });
161
- i0.ɵɵlistener("ngModelChange", function SchedulingResourceComponent_Conditional_1_Template_input_ngModelChange_15_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSearchChanged()); });
162
- i0.ɵɵelementEnd();
163
- i0.ɵɵelement(16, "div", 12);
164
- i0.ɵɵelementStart(17, "span", 13);
165
- i0.ɵɵconditionalCreate(18, SchedulingResourceComponent_Conditional_1_Conditional_18_Template, 3, 1);
166
- i0.ɵɵconditionalCreate(19, SchedulingResourceComponent_Conditional_1_Conditional_19_Template, 4, 1);
167
- i0.ɵɵelementEnd()();
168
- i0.ɵɵconditionalCreate(20, SchedulingResourceComponent_Conditional_1_Conditional_20_Template, 3, 0, "div", 14)(21, SchedulingResourceComponent_Conditional_1_Conditional_21_Template, 6, 0, "div", 15);
169
- i0.ɵɵelementStart(22, "div", 16)(23, "button", 17);
170
- i0.ɵɵlistener("click", function SchedulingResourceComponent_Conditional_1_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.GoToSchedulingApp()); });
171
- i0.ɵɵelement(24, "i", 18);
172
- i0.ɵɵtext(25, " Open Scheduling App ");
173
- i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(26, "span", 19);
175
- i0.ɵɵtext(27, "Manage all scheduled jobs across the system");
176
- i0.ɵɵelementEnd()();
177
- i0.ɵɵelementStart(28, "mj-scheduled-job-dialog", 20);
178
- i0.ɵɵlistener("Close", function SchedulingResourceComponent_Conditional_1_Template_mj_scheduled_job_dialog_Close_28_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDialogClosed($event)); });
234
+ i0.ɵɵelementStart(8, "mj-scheduled-job-dialog", 28);
235
+ i0.ɵɵlistener("Close", function SchedulingResourceComponent_ng_template_2_Conditional_1_Template_mj_scheduled_job_dialog_Close_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnDialogClosed($event)); });
179
236
  i0.ɵɵelementEnd();
180
237
  } if (rf & 2) {
181
- const ctx_r1 = i0.ɵɵnextContext();
182
- i0.ɵɵadvance(4);
183
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.StatusFilter);
184
- i0.ɵɵadvance(11);
185
- i0.ɵɵtwoWayProperty("ngModel", ctx_r1.SearchQuery);
186
- i0.ɵɵadvance(3);
187
- i0.ɵɵconditional(ctx_r1.ActiveCount > 0 ? 18 : -1);
188
- i0.ɵɵadvance();
189
- i0.ɵɵconditional(ctx_r1.PausedCount > 0 ? 19 : -1);
190
- i0.ɵɵadvance();
191
- i0.ɵɵconditional(ctx_r1.FilteredJobs.length > 0 ? 20 : 21);
238
+ const ctx_r1 = i0.ɵɵnextContext(2);
239
+ i0.ɵɵconditional(ctx_r1.FilteredJobs.length > 0 ? 0 : 1);
192
240
  i0.ɵɵadvance(8);
193
241
  i0.ɵɵproperty("Visible", ctx_r1.ShowEditDialog)("ScheduledJobID", ctx_r1.EditingJobID);
194
242
  } }
243
+ function SchedulingResourceComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
244
+ i0.ɵɵconditionalCreate(0, SchedulingResourceComponent_ng_template_2_Conditional_0_Template, 2, 0, "div", 20)(1, SchedulingResourceComponent_ng_template_2_Conditional_1_Template, 9, 3);
245
+ } if (rf & 2) {
246
+ const ctx_r1 = i0.ɵɵnextContext();
247
+ i0.ɵɵconditional(ctx_r1.IsLoading ? 0 : 1);
248
+ } }
195
249
  let SchedulingResourceComponent = class SchedulingResourceComponent extends BaseResourceComponent {
250
+ /**
251
+ * When true, renders only the body content (no <mj-page-layout> + <mj-page-header>
252
+ * chrome). Used when embedded inside another resource page (e.g. KH Configuration's
253
+ * Scheduling section) so we don't get nested page-layouts that trap click events.
254
+ *
255
+ * Named `HideToolbar` for cross-section consistency with Scheduling/Testing inner
256
+ * components — see plans/explorer-chrome-conventions.md Section 5. The name is
257
+ * narrower than its actual behavior (suppresses entire chrome, not just the toolbar)
258
+ * but matches the documented convention.
259
+ */
260
+ HideToolbar = false;
196
261
  cdr = inject(ChangeDetectorRef);
197
262
  navigationService = inject(NavigationService);
198
263
  scheduledJobService = inject(ScheduledJobService);
@@ -580,11 +645,15 @@ let SchedulingResourceComponent = class SchedulingResourceComponent extends Base
580
645
  return n.toLocaleString();
581
646
  }
582
647
  static ɵfac = /*@__PURE__*/ (() => { let ɵSchedulingResourceComponent_BaseFactory; return function SchedulingResourceComponent_Factory(__ngFactoryType__) { return (ɵSchedulingResourceComponent_BaseFactory || (ɵSchedulingResourceComponent_BaseFactory = i0.ɵɵgetInheritedFactory(SchedulingResourceComponent)))(__ngFactoryType__ || SchedulingResourceComponent); }; })();
583
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingResourceComponent, selectors: [["app-scheduling-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 2, vars: 1, consts: [[1, "loading-container"], ["text", "Loading scheduled pipelines..."], [1, "toolbar"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "filter-select", 3, "ngModelChange", "ngModel"], ["value", ""], ["value", "Active"], ["value", "Paused"], ["value", "Disabled"], ["value", "Pending"], ["type", "text", "placeholder", "Search pipelines...", 1, "search-input", 3, "ngModelChange", "ngModel"], [1, "toolbar-spacer"], [1, "toolbar-stat"], [1, "cards-grid"], [1, "empty-state"], [1, "scheduling-app-link"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "link-hint"], [3, "Close", "Visible", "ScheduledJobID"], [1, "job-card", 3, "paused", "disabled"], [1, "job-card", 3, "click"], [1, "card-top"], [1, "status-dot"], [1, "card-title-area"], [1, "card-name"], [1, "card-cron"], [1, "fa-regular", "fa-clock"], [1, "sparkline"], [1, "spark-dot", 3, "class"], [1, "sparkline-label"], [1, "card-stats"], [1, "stat"], [1, "fa-solid", "fa-chart-simple"], [1, "fa-regular", "fa-calendar"], [1, "spark-dot"], [1, "fa-regular", "fa-calendar-xmark"]], template: function SchedulingResourceComponent_Template(rf, ctx) { if (rf & 1) {
584
- i0.ɵɵconditionalCreate(0, SchedulingResourceComponent_Conditional_0_Template, 2, 0, "div", 0)(1, SchedulingResourceComponent_Conditional_1_Template, 29, 7);
648
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SchedulingResourceComponent, selectors: [["app-scheduling-resource"]], inputs: { HideToolbar: "HideToolbar" }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 4, vars: 2, consts: [["schedulingBody", ""], ["Title", "Knowledge Pipelines", "Icon", "fa-solid fa-calendar-check", "Subtitle", "Scheduled knowledge ingestion, autotagging, and embedding pipelines"], ["meta", ""], ["Label", "active", "Variant", "success", 3, "Count"], ["Label", "paused", "Variant", "warning", 3, "Count"], ["actions", ""], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], ["toolbar", ""], ["Placeholder", "Search pipelines...", 3, "ValueChange", "Value"], [1, "mj-input", "kh-toolbar-select", 3, "ngModelChange", "ngModel"], ["value", ""], ["value", "Active"], ["value", "Paused"], ["value", "Disabled"], ["value", "Pending"], [4, "ngTemplateOutlet"], [1, "embedded-controls"], ["type", "text", "placeholder", "Search pipelines...", 1, "mj-input", "embedded-search", 3, "ngModelChange", "ngModel"], [1, "embedded-spacer"], [1, "loading-container"], ["text", "Loading scheduled pipelines..."], [1, "cards-grid"], [1, "empty-state"], [1, "scheduling-app-link"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "link-hint"], [3, "Close", "Visible", "ScheduledJobID"], [1, "job-card", 3, "paused", "disabled"], [1, "job-card", 3, "click"], [1, "card-top"], [1, "status-dot"], [1, "card-title-area"], [1, "card-name"], [1, "card-cron"], [1, "fa-regular", "fa-clock"], [1, "sparkline"], [1, "spark-dot", 3, "class"], [1, "sparkline-label"], [1, "card-stats"], [1, "stat"], [1, "fa-solid", "fa-chart-simple"], [1, "fa-regular", "fa-calendar"], [1, "spark-dot"], [1, "fa-regular", "fa-calendar-xmark"]], template: function SchedulingResourceComponent_Template(rf, ctx) { if (rf & 1) {
649
+ i0.ɵɵconditionalCreate(0, SchedulingResourceComponent_Conditional_0_Template, 24, 5, "mj-page-layout");
650
+ i0.ɵɵconditionalCreate(1, SchedulingResourceComponent_Conditional_1_Template, 18, 3);
651
+ i0.ɵɵtemplate(2, SchedulingResourceComponent_ng_template_2_Template, 2, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
585
652
  } if (rf & 2) {
586
- i0.ɵɵconditional(ctx.IsLoading ? 0 : 1);
587
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.LoadingComponent, i3.ScheduledJobDialogComponent], styles: ["\n\n[_nghost-%COMP%] {\n display: block;\n padding: 28px 32px 40px;\n max-width: 1200px;\n min-width: 0;\n}\n\n\n\n.page-header[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n.page-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s;\n white-space: nowrap;\n}\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n.filter-select[_ngcontent-%COMP%] {\n padding: 7px 32px 7px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 10px center;\n cursor: pointer;\n}\n.search-input[_ngcontent-%COMP%] {\n padding: 7px 12px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n width: 220px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%2394a3b8'%3E%3Cpath d='M10 6.5a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm-.3 3.9a5.5 5.5 0 111.1-1.1l3.1 3.1a.75.75 0 01-1.1 1.1L9.7 10.4z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: 10px center;\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n.toolbar-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n.toolbar-stat[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n.toolbar-stat[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 14px;\n margin-bottom: 32px;\n}\n@media (max-width: 1024px) {\n .card-grid[_ngcontent-%COMP%] { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 640px) {\n .card-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n}\n\n\n\n.job-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 14px 16px;\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n position: relative;\n cursor: pointer;\n transition: box-shadow 0.2s, border-color 0.2s;\n height: 132px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.job-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-card-hover, 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04));\n border-color: var(--mj-border-strong);\n}\n.job-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n.job-card.disabled-card[_ngcontent-%COMP%] {\n opacity: 0.65;\n}\n\n.card-top[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n.status-dot[_ngcontent-%COMP%] {\n width: 9px;\n height: 9px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n}\n.status-dot.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 18%, transparent);\n}\n.status-dot.paused[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-warning) 18%, transparent);\n}\n.status-dot.disabled[_ngcontent-%COMP%], \n.status-dot.pending[_ngcontent-%COMP%], \n.status-dot.expired[_ngcontent-%COMP%] {\n background: var(--mj-border-strong);\n}\n\n.card-title-area[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n.card-title[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 650;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.3;\n}\n.card-cron[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 1px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.card-cron[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n\n\n.card-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n.card-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n.card-stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.success-rate[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n.success-rate.high[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n.success-rate.mid[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n\n\n.sparkline[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 3px;\n margin-top: 8px;\n}\n.spark-dot[_ngcontent-%COMP%] {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n.spark-dot.ok[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 65%, transparent);\n}\n.spark-dot.fail[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 65%, transparent);\n}\n.spark-dot.skip[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n}\n.sparkline-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-left: 4px;\n}\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 6px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.card-action-btn[_ngcontent-%COMP%] {\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n border-radius: 4px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.12s;\n box-shadow: 0 1px 2px rgba(0,0,0,0.06);\n}\n.card-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.card-action-btn.run-now[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n}\n.card-action-btn.run-now[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, var(--mj-bg-surface));\n}\n\n\n\n.card-status-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 11.5px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-status-label.paused[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n.card-status-label.disabled[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 14px;\n}\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 650;\n color: var(--mj-text-primary);\n}\n.section-header[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n\n\n.activity-table[_ngcontent-%COMP%] {\n width: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n overflow: hidden;\n}\n.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n.activity-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 11.5px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n border-bottom: 1px solid var(--mj-border-default);\n}\n.activity-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 9px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n}\n.activity-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n.activity-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.activity-table[_ngcontent-%COMP%] .job-name-cell[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.activity-table[_ngcontent-%COMP%] .time-cell[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 12.5px;\n}\n.items-cell[_ngcontent-%COMP%] {\n text-align: right;\n font-weight: 600;\n}\n.items-cell.failed[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 10px;\n border-radius: 10px;\n font-size: 11.5px;\n font-weight: 600;\n}\n.status-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n.status-badge.failed[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n.status-badge.running[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info);\n}\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n text-align: center;\n}\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 12px;\n}\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-bottom: 4px;\n}\n.empty-state[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.scheduling-app-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.link-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}"] });
653
+ i0.ɵɵconditional(!ctx.HideToolbar ? 0 : -1);
654
+ i0.ɵɵadvance();
655
+ i0.ɵɵconditional(ctx.HideToolbar ? 1 : -1);
656
+ } }, dependencies: [i1.NgTemplateOutlet, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.LoadingComponent, i4.MJButtonDirective, i4.MJPageHeaderComponent, i4.MJPageLayoutComponent, i4.MJPageBodyComponent, i4.MJPageSearchComponent, i4.MJStatBadgeComponent, i5.ScheduledJobDialogComponent], styles: ["\n\n[_nghost-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 0;\n}\n\n\n\n.embedded-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.embedded-search[_ngcontent-%COMP%] {\n flex: 1;\n max-width: 320px;\n}\n\n.embedded-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n\n\n.kh-toolbar-select[_ngcontent-%COMP%] {\n width: auto;\n min-width: 140px;\n min-height: 32px;\n padding: 4px 28px 4px 12px;\n font-size: 0.8125rem;\n}\n\n\n\n.page-header[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n.page-header[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n.page-header[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n.btn-primary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s;\n white-space: nowrap;\n}\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n.filter-select[_ngcontent-%COMP%] {\n padding: 7px 32px 7px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 10px center;\n cursor: pointer;\n}\n.search-input[_ngcontent-%COMP%] {\n padding: 7px 12px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n width: 220px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%2394a3b8'%3E%3Cpath d='M10 6.5a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm-.3 3.9a5.5 5.5 0 111.1-1.1l3.1 3.1a.75.75 0 01-1.1 1.1L9.7 10.4z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: 10px center;\n}\n.search-input[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n}\n.toolbar-spacer[_ngcontent-%COMP%] {\n flex: 1;\n}\n.toolbar-stat[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n.toolbar-stat[_ngcontent-%COMP%] strong[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n\n\n.card-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 14px;\n margin-bottom: 32px;\n}\n@media (max-width: 1024px) {\n .card-grid[_ngcontent-%COMP%] { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 640px) {\n .card-grid[_ngcontent-%COMP%] { grid-template-columns: 1fr; }\n}\n\n\n\n.job-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 14px 16px;\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n position: relative;\n cursor: pointer;\n transition: box-shadow 0.2s, border-color 0.2s;\n height: 132px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.job-card[_ngcontent-%COMP%]:hover {\n box-shadow: var(--mj-shadow-card-hover, 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04));\n border-color: var(--mj-border-strong);\n}\n.job-card[_ngcontent-%COMP%]:hover .card-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n.job-card.disabled-card[_ngcontent-%COMP%] {\n opacity: 0.65;\n}\n\n.card-top[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n.status-dot[_ngcontent-%COMP%] {\n width: 9px;\n height: 9px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n}\n.status-dot.active[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 18%, transparent);\n}\n.status-dot.paused[_ngcontent-%COMP%] {\n background: var(--mj-status-warning);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-warning) 18%, transparent);\n}\n.status-dot.disabled[_ngcontent-%COMP%], \n.status-dot.pending[_ngcontent-%COMP%], \n.status-dot.expired[_ngcontent-%COMP%] {\n background: var(--mj-border-strong);\n}\n\n.card-title-area[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n.card-title[_ngcontent-%COMP%] {\n font-size: 13.5px;\n font-weight: 650;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.3;\n}\n.card-cron[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 1px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.card-cron[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n\n\n.card-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n.card-stat[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-stat[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n.card-stat[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.success-rate[_ngcontent-%COMP%] {\n font-weight: 700;\n}\n.success-rate.high[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n.success-rate.mid[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n\n\n.sparkline[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 3px;\n margin-top: 8px;\n}\n.spark-dot[_ngcontent-%COMP%] {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n.spark-dot.ok[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 65%, transparent);\n}\n.spark-dot.fail[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 65%, transparent);\n}\n.spark-dot.skip[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n}\n.sparkline-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-left: 4px;\n}\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 6px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.card-action-btn[_ngcontent-%COMP%] {\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n border-radius: 4px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.12s;\n box-shadow: 0 1px 2px rgba(0,0,0,0.06);\n}\n.card-action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.card-action-btn.run-now[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n}\n.card-action-btn.run-now[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, var(--mj-bg-surface));\n}\n\n\n\n.card-status-label[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 11.5px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-status-label.paused[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n.card-status-label.disabled[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n}\n\n\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 14px;\n}\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 650;\n color: var(--mj-text-primary);\n}\n.section-header[_ngcontent-%COMP%] .badge[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n\n\n.activity-table[_ngcontent-%COMP%] {\n width: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n overflow: hidden;\n}\n.activity-table[_ngcontent-%COMP%] table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n.activity-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 11.5px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n border-bottom: 1px solid var(--mj-border-default);\n}\n.activity-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 9px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n}\n.activity-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n.activity-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n}\n.activity-table[_ngcontent-%COMP%] .job-name-cell[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.activity-table[_ngcontent-%COMP%] .time-cell[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 12.5px;\n}\n.items-cell[_ngcontent-%COMP%] {\n text-align: right;\n font-weight: 600;\n}\n.items-cell.failed[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 10px;\n border-radius: 10px;\n font-size: 11.5px;\n font-weight: 600;\n}\n.status-badge.success[_ngcontent-%COMP%] {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n.status-badge.failed[_ngcontent-%COMP%] {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n.status-badge.running[_ngcontent-%COMP%] {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info);\n}\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n text-align: center;\n}\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 40px;\n margin-bottom: 12px;\n}\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-bottom: 4px;\n}\n.empty-state[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n\n\n.scheduling-app-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.link-hint[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n}"] });
588
657
  };
589
658
  SchedulingResourceComponent = __decorate([
590
659
  RegisterClass(BaseResourceComponent, 'SchedulingResource')
@@ -592,8 +661,10 @@ SchedulingResourceComponent = __decorate([
592
661
  export { SchedulingResourceComponent };
593
662
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SchedulingResourceComponent, [{
594
663
  type: Component,
595
- args: [{ standalone: false, selector: 'app-scheduling-resource', template: "@if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading scheduled pipelines...\"></mj-loading>\n </div>\n} @else {\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <button class=\"btn-primary\" (click)=\"OnNewSchedule()\">\n <i class=\"fa-solid fa-plus\"></i> New Schedule\n </button>\n <select class=\"filter-select\" [(ngModel)]=\"StatusFilter\" (ngModelChange)=\"OnFilterChanged()\">\n <option value=\"\">All Statuses</option>\n <option value=\"Active\">Active</option>\n <option value=\"Paused\">Paused</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n <input type=\"text\"\n class=\"search-input\"\n placeholder=\"Search pipelines...\"\n [(ngModel)]=\"SearchQuery\"\n (ngModelChange)=\"OnSearchChanged()\" />\n <div class=\"toolbar-spacer\"></div>\n <span class=\"toolbar-stat\">\n @if (ActiveCount > 0) { <strong>{{ ActiveCount }}</strong> active }\n @if (PausedCount > 0) { &middot; <strong>{{ PausedCount }}</strong> paused }\n </span>\n </div>\n\n <!-- Job Cards Grid -->\n @if (FilteredJobs.length > 0) {\n <div class=\"cards-grid\">\n @for (job of FilteredJobs; track job.ID) {\n <div class=\"job-card\"\n [class.paused]=\"job.Status === 'Paused'\"\n [class.disabled]=\"job.Status === 'Disabled'\"\n (click)=\"OnEditJob(job)\">\n <div class=\"card-top\">\n <span class=\"status-dot\"\n [class.dot-active]=\"job.Status === 'Active'\"\n [class.dot-paused]=\"job.Status === 'Paused'\"\n [class.dot-disabled]=\"job.Status === 'Disabled'\"></span>\n <div class=\"card-title-area\">\n <div class=\"card-name\">{{ job.Name }}</div>\n <div class=\"card-cron\">\n <i class=\"fa-regular fa-clock\"></i>\n {{ GetCronDescription(job.CronExpression) }}\n </div>\n </div>\n </div>\n <div class=\"sparkline\">\n @for (dotClass of GetSparkline(job.ID); track $index) {\n <span class=\"spark-dot\" [class]=\"dotClass\"></span>\n }\n <span class=\"sparkline-label\">last 7 runs</span>\n </div>\n <div class=\"card-stats\">\n <span class=\"stat\">\n <i class=\"fa-regular fa-clock\"></i>\n Last: <strong>{{ GetTimeAgo(job.LastRunAt) }}</strong>\n </span>\n <span class=\"stat\">\n <i class=\"fa-solid fa-chart-simple\"></i>\n <strong>{{ GetSuccessRate(job) }}</strong>\n </span>\n <span class=\"stat\">\n <i class=\"fa-regular fa-calendar\"></i>\n Next: <strong>{{ GetTimeUntil(job.NextRunAt) }}</strong>\n </span>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-regular fa-calendar-xmark\"></i>\n <p>No Knowledge Hub schedules found</p>\n <span>Create a new schedule to automate classification and vector sync</span>\n </div>\n }\n\n <!-- Link to full Scheduling App -->\n <div class=\"scheduling-app-link\">\n <button class=\"btn-secondary\" (click)=\"GoToSchedulingApp()\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Scheduling App\n </button>\n <span class=\"link-hint\">Manage all scheduled jobs across the system</span>\n </div>\n\n <!-- Edit Dialog -->\n <mj-scheduled-job-dialog\n [Visible]=\"ShowEditDialog\"\n [ScheduledJobID]=\"EditingJobID\"\n (Close)=\"OnDialogClosed($event)\">\n </mj-scheduled-job-dialog>\n}\n", styles: ["/* \u2500\u2500 Host \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n:host {\n display: block;\n padding: 28px 32px 40px;\n max-width: 1200px;\n min-width: 0;\n}\n\n/* \u2500\u2500 Page Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.page-header {\n margin-bottom: 24px;\n}\n.page-header h1 {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n.page-header p {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* \u2500\u2500 Toolbar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s;\n white-space: nowrap;\n}\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n.filter-select {\n padding: 7px 32px 7px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 10px center;\n cursor: pointer;\n}\n.search-input {\n padding: 7px 12px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n width: 220px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%2394a3b8'%3E%3Cpath d='M10 6.5a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm-.3 3.9a5.5 5.5 0 111.1-1.1l3.1 3.1a.75.75 0 01-1.1 1.1L9.7 10.4z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: 10px center;\n}\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n.toolbar-spacer {\n flex: 1;\n}\n.toolbar-stat {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n.toolbar-stat strong {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n/* \u2500\u2500 Card Grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.card-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 14px;\n margin-bottom: 32px;\n}\n@media (max-width: 1024px) {\n .card-grid { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 640px) {\n .card-grid { grid-template-columns: 1fr; }\n}\n\n/* \u2500\u2500 Job Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.job-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 14px 16px;\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n position: relative;\n cursor: pointer;\n transition: box-shadow 0.2s, border-color 0.2s;\n height: 132px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.job-card:hover {\n box-shadow: var(--mj-shadow-card-hover, 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04));\n border-color: var(--mj-border-strong);\n}\n.job-card:hover .card-actions {\n opacity: 1;\n}\n.job-card.disabled-card {\n opacity: 0.65;\n}\n\n.card-top {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n.status-dot {\n width: 9px;\n height: 9px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n}\n.status-dot.active {\n background: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 18%, transparent);\n}\n.status-dot.paused {\n background: var(--mj-status-warning);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-warning) 18%, transparent);\n}\n.status-dot.disabled,\n.status-dot.pending,\n.status-dot.expired {\n background: var(--mj-border-strong);\n}\n\n.card-title-area {\n flex: 1;\n min-width: 0;\n}\n.card-title {\n font-size: 13.5px;\n font-weight: 650;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.3;\n}\n.card-cron {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 1px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.card-cron i {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* Stats row */\n.card-stats {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n.card-stat {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-stat i {\n font-size: 10px;\n}\n.card-stat .value {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.success-rate {\n font-weight: 700;\n}\n.success-rate.high {\n color: var(--mj-status-success);\n}\n.success-rate.mid {\n color: var(--mj-status-warning);\n}\n\n/* Sparkline */\n.sparkline {\n display: flex;\n align-items: center;\n gap: 3px;\n margin-top: 8px;\n}\n.spark-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n.spark-dot.ok {\n background: color-mix(in srgb, var(--mj-status-success) 65%, transparent);\n}\n.spark-dot.fail {\n background: color-mix(in srgb, var(--mj-status-error) 65%, transparent);\n}\n.spark-dot.skip {\n background: var(--mj-border-default);\n}\n.sparkline-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-left: 4px;\n}\n\n/* Hover actions */\n.card-actions {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 6px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.card-action-btn {\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n border-radius: 4px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.12s;\n box-shadow: 0 1px 2px rgba(0,0,0,0.06);\n}\n.card-action-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.card-action-btn.run-now {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n}\n.card-action-btn.run-now:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, var(--mj-bg-surface));\n}\n\n/* Paused/disabled status on card */\n.card-status-label {\n font-weight: 600;\n font-size: 11.5px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-status-label.paused {\n color: var(--mj-status-warning);\n}\n.card-status-label.disabled {\n color: var(--mj-text-muted);\n}\n\n/* \u2500\u2500 Section Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 14px;\n}\n.section-header h2 {\n font-size: 15px;\n font-weight: 650;\n color: var(--mj-text-primary);\n}\n.section-header .badge {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n/* \u2500\u2500 Activity Table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.activity-table {\n width: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n overflow: hidden;\n}\n.activity-table table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n.activity-table thead th {\n background: var(--mj-bg-surface-card);\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 11.5px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n border-bottom: 1px solid var(--mj-border-default);\n}\n.activity-table tbody td {\n padding: 9px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n}\n.activity-table tbody tr:last-child td {\n border-bottom: none;\n}\n.activity-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n.activity-table .job-name-cell {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.activity-table .time-cell {\n color: var(--mj-text-secondary);\n font-size: 12.5px;\n}\n.items-cell {\n text-align: right;\n font-weight: 600;\n}\n.items-cell.failed {\n color: var(--mj-status-error);\n}\n\n/* Status badges */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 10px;\n border-radius: 10px;\n font-size: 11.5px;\n font-weight: 600;\n}\n.status-badge.success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n.status-badge.failed {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n.status-badge.running {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info);\n}\n.status-badge i {\n font-size: 9px;\n}\n\n/* \u2500\u2500 Loading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px;\n}\n\n/* \u2500\u2500 Empty state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n text-align: center;\n}\n.empty-state i {\n font-size: 40px;\n margin-bottom: 12px;\n}\n.empty-state p {\n font-size: 14px;\n margin-bottom: 4px;\n}\n.empty-state span {\n font-size: 12px;\n}\n\n/* Scheduling App Link */\n.scheduling-app-link {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.link-hint {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n"] }]
596
- }], null, null); })();
664
+ args: [{ standalone: false, selector: 'app-scheduling-resource', template: "@if (!HideToolbar) {\n<mj-page-layout>\n <mj-page-header\n Title=\"Knowledge Pipelines\"\n Icon=\"fa-solid fa-calendar-check\"\n Subtitle=\"Scheduled knowledge ingestion, autotagging, and embedding pipelines\">\n <div meta>\n @if (ActiveCount > 0) {\n <mj-stat-badge [Count]=\"ActiveCount\" Label=\"active\" Variant=\"success\"></mj-stat-badge>\n }\n @if (PausedCount > 0) {\n <mj-stat-badge [Count]=\"PausedCount\" Label=\"paused\" Variant=\"warning\"></mj-stat-badge>\n }\n </div>\n <div actions>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"OnNewSchedule()\">\n <i class=\"fa-solid fa-plus\"></i> New Schedule\n </button>\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search pipelines...\"\n [Value]=\"SearchQuery\"\n (ValueChange)=\"SearchQuery = $event; OnSearchChanged()\">\n </mj-page-search>\n <select class=\"mj-input kh-toolbar-select\" [(ngModel)]=\"StatusFilter\" (ngModelChange)=\"OnFilterChanged()\">\n <option value=\"\">All Statuses</option>\n <option value=\"Active\">Active</option>\n <option value=\"Paused\">Paused</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n <ng-container *ngTemplateOutlet=\"schedulingBody\"></ng-container>\n </mj-page-body>\n</mj-page-layout>\n}\n@if (HideToolbar) {\n <div class=\"embedded-controls\">\n <input\n type=\"text\"\n class=\"mj-input embedded-search\"\n placeholder=\"Search pipelines...\"\n [(ngModel)]=\"SearchQuery\"\n (ngModelChange)=\"OnSearchChanged()\" />\n <select class=\"mj-input kh-toolbar-select\" [(ngModel)]=\"StatusFilter\" (ngModelChange)=\"OnFilterChanged()\">\n <option value=\"\">All Statuses</option>\n <option value=\"Active\">Active</option>\n <option value=\"Paused\">Paused</option>\n <option value=\"Disabled\">Disabled</option>\n <option value=\"Pending\">Pending</option>\n </select>\n <span class=\"embedded-spacer\"></span>\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"OnNewSchedule()\">\n <i class=\"fa-solid fa-plus\"></i> New Schedule\n </button>\n </div>\n <ng-container *ngTemplateOutlet=\"schedulingBody\"></ng-container>\n}\n\n<ng-template #schedulingBody>\n@if (IsLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading scheduled pipelines...\"></mj-loading>\n </div>\n} @else {\n <!-- Job Cards Grid -->\n @if (FilteredJobs.length > 0) {\n <div class=\"cards-grid\">\n @for (job of FilteredJobs; track job.ID) {\n <div class=\"job-card\"\n [class.paused]=\"job.Status === 'Paused'\"\n [class.disabled]=\"job.Status === 'Disabled'\"\n (click)=\"OnEditJob(job)\">\n <div class=\"card-top\">\n <span class=\"status-dot\"\n [class.dot-active]=\"job.Status === 'Active'\"\n [class.dot-paused]=\"job.Status === 'Paused'\"\n [class.dot-disabled]=\"job.Status === 'Disabled'\"></span>\n <div class=\"card-title-area\">\n <div class=\"card-name\">{{ job.Name }}</div>\n <div class=\"card-cron\">\n <i class=\"fa-regular fa-clock\"></i>\n {{ GetCronDescription(job.CronExpression) }}\n </div>\n </div>\n </div>\n <div class=\"sparkline\">\n @for (dotClass of GetSparkline(job.ID); track $index) {\n <span class=\"spark-dot\" [class]=\"dotClass\"></span>\n }\n <span class=\"sparkline-label\">last 7 runs</span>\n </div>\n <div class=\"card-stats\">\n <span class=\"stat\">\n <i class=\"fa-regular fa-clock\"></i>\n Last: <strong>{{ GetTimeAgo(job.LastRunAt) }}</strong>\n </span>\n <span class=\"stat\">\n <i class=\"fa-solid fa-chart-simple\"></i>\n <strong>{{ GetSuccessRate(job) }}</strong>\n </span>\n <span class=\"stat\">\n <i class=\"fa-regular fa-calendar\"></i>\n Next: <strong>{{ GetTimeUntil(job.NextRunAt) }}</strong>\n </span>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"empty-state\">\n <i class=\"fa-regular fa-calendar-xmark\"></i>\n <p>No Knowledge Hub schedules found</p>\n <span>Create a new schedule to automate classification and vector sync</span>\n </div>\n }\n\n <!-- Link to full Scheduling App -->\n <div class=\"scheduling-app-link\">\n <button class=\"btn-secondary\" (click)=\"GoToSchedulingApp()\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i> Open Scheduling App\n </button>\n <span class=\"link-hint\">Manage all scheduled jobs across the system</span>\n </div>\n\n <!-- Edit Dialog -->\n <mj-scheduled-job-dialog\n [Visible]=\"ShowEditDialog\"\n [ScheduledJobID]=\"EditingJobID\"\n (Close)=\"OnDialogClosed($event)\">\n </mj-scheduled-job-dialog>\n}\n</ng-template>\n", styles: ["/* \u2500\u2500 Host \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n:host {\n display: flex;\n flex-direction: column;\n height: 100%;\n min-width: 0;\n}\n\n/* Embedded mode: inline controls row instead of <mj-page-header>. */\n.embedded-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n}\n\n.embedded-search {\n flex: 1;\n max-width: 320px;\n}\n\n.embedded-spacer {\n flex: 1;\n}\n\n/* Status select used in the [toolbar] slot. */\n.kh-toolbar-select {\n width: auto;\n min-width: 140px;\n min-height: 32px;\n padding: 4px 28px 4px 12px;\n font-size: 0.8125rem;\n}\n\n/* \u2500\u2500 Page Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.page-header {\n margin-bottom: 24px;\n}\n.page-header h1 {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n}\n.page-header p {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* \u2500\u2500 Toolbar \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 20px;\n flex-wrap: wrap;\n}\n.btn-primary {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: background 0.15s;\n white-space: nowrap;\n}\n.btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n.filter-select {\n padding: 7px 32px 7px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%2394a3b8'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: right 10px center;\n cursor: pointer;\n}\n.search-input {\n padding: 7px 12px 7px 32px;\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-sm, 6px);\n font-size: 13px;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface);\n width: 220px;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' fill='%2394a3b8'%3E%3Cpath d='M10 6.5a3.5 3.5 0 11-7 0 3.5 3.5 0 017 0zm-.3 3.9a5.5 5.5 0 111.1-1.1l3.1 3.1a.75.75 0 01-1.1 1.1L9.7 10.4z'/%3E%3C/svg%3E\");\n background-repeat: no-repeat;\n background-position: 10px center;\n}\n.search-input::placeholder {\n color: var(--mj-text-muted);\n}\n.toolbar-spacer {\n flex: 1;\n}\n.toolbar-stat {\n font-size: 12px;\n color: var(--mj-text-muted);\n}\n.toolbar-stat strong {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n/* \u2500\u2500 Card Grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.card-grid {\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 14px;\n margin-bottom: 32px;\n}\n@media (max-width: 1024px) {\n .card-grid { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 640px) {\n .card-grid { grid-template-columns: 1fr; }\n}\n\n/* \u2500\u2500 Job Card \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.job-card {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n padding: 14px 16px;\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n position: relative;\n cursor: pointer;\n transition: box-shadow 0.2s, border-color 0.2s;\n height: 132px;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n}\n.job-card:hover {\n box-shadow: var(--mj-shadow-card-hover, 0 4px 12px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.04));\n border-color: var(--mj-border-strong);\n}\n.job-card:hover .card-actions {\n opacity: 1;\n}\n.job-card.disabled-card {\n opacity: 0.65;\n}\n\n.card-top {\n display: flex;\n align-items: flex-start;\n gap: 8px;\n}\n.status-dot {\n width: 9px;\n height: 9px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-top: 4px;\n}\n.status-dot.active {\n background: var(--mj-status-success);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-success) 18%, transparent);\n}\n.status-dot.paused {\n background: var(--mj-status-warning);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-status-warning) 18%, transparent);\n}\n.status-dot.disabled,\n.status-dot.pending,\n.status-dot.expired {\n background: var(--mj-border-strong);\n}\n\n.card-title-area {\n flex: 1;\n min-width: 0;\n}\n.card-title {\n font-size: 13.5px;\n font-weight: 650;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n line-height: 1.3;\n}\n.card-cron {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 1px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.card-cron i {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n\n/* Stats row */\n.card-stats {\n display: flex;\n align-items: center;\n gap: 16px;\n font-size: 11.5px;\n color: var(--mj-text-muted);\n}\n.card-stat {\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-stat i {\n font-size: 10px;\n}\n.card-stat .value {\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n.success-rate {\n font-weight: 700;\n}\n.success-rate.high {\n color: var(--mj-status-success);\n}\n.success-rate.mid {\n color: var(--mj-status-warning);\n}\n\n/* Sparkline */\n.sparkline {\n display: flex;\n align-items: center;\n gap: 3px;\n margin-top: 8px;\n}\n.spark-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n}\n.spark-dot.ok {\n background: color-mix(in srgb, var(--mj-status-success) 65%, transparent);\n}\n.spark-dot.fail {\n background: color-mix(in srgb, var(--mj-status-error) 65%, transparent);\n}\n.spark-dot.skip {\n background: var(--mj-border-default);\n}\n.sparkline-label {\n font-size: 10px;\n color: var(--mj-text-muted);\n margin-left: 4px;\n}\n\n/* Hover actions */\n.card-actions {\n position: absolute;\n top: 10px;\n right: 10px;\n display: flex;\n gap: 6px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.card-action-btn {\n padding: 4px 10px;\n font-size: 11px;\n font-weight: 600;\n border-radius: 4px;\n border: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.12s;\n box-shadow: 0 1px 2px rgba(0,0,0,0.06);\n}\n.card-action-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-text-primary);\n border-color: var(--mj-border-strong);\n}\n.card-action-btn.run-now {\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-border-default));\n}\n.card-action-btn.run-now:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 14%, var(--mj-bg-surface));\n}\n\n/* Paused/disabled status on card */\n.card-status-label {\n font-weight: 600;\n font-size: 11.5px;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.card-status-label.paused {\n color: var(--mj-status-warning);\n}\n.card-status-label.disabled {\n color: var(--mj-text-muted);\n}\n\n/* \u2500\u2500 Section Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.section-header {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 14px;\n}\n.section-header h2 {\n font-size: 15px;\n font-weight: 650;\n color: var(--mj-text-primary);\n}\n.section-header .badge {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n}\n\n/* \u2500\u2500 Activity Table \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.activity-table {\n width: 100%;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md, 8px);\n box-shadow: var(--mj-shadow-card, 0 1px 3px rgba(0,0,0,0.06), 0 1px 2px rgba(0,0,0,0.04));\n overflow: hidden;\n}\n.activity-table table {\n width: 100%;\n border-collapse: collapse;\n font-size: 13px;\n}\n.activity-table thead th {\n background: var(--mj-bg-surface-card);\n padding: 10px 14px;\n text-align: left;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 11.5px;\n text-transform: uppercase;\n letter-spacing: 0.04em;\n border-bottom: 1px solid var(--mj-border-default);\n}\n.activity-table tbody td {\n padding: 9px 14px;\n border-bottom: 1px solid var(--mj-border-subtle);\n color: var(--mj-text-primary);\n}\n.activity-table tbody tr:last-child td {\n border-bottom: none;\n}\n.activity-table tbody tr:hover {\n background: var(--mj-bg-surface-hover);\n}\n.activity-table .job-name-cell {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n.activity-table .time-cell {\n color: var(--mj-text-secondary);\n font-size: 12.5px;\n}\n.items-cell {\n text-align: right;\n font-weight: 600;\n}\n.items-cell.failed {\n color: var(--mj-status-error);\n}\n\n/* Status badges */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 10px;\n border-radius: 10px;\n font-size: 11.5px;\n font-weight: 600;\n}\n.status-badge.success {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success);\n}\n.status-badge.failed {\n background: var(--mj-status-error-bg);\n color: var(--mj-status-error);\n}\n.status-badge.running {\n background: var(--mj-status-info-bg);\n color: var(--mj-status-info);\n}\n.status-badge i {\n font-size: 9px;\n}\n\n/* \u2500\u2500 Loading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.loading-container {\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 60px;\n}\n\n/* \u2500\u2500 Empty state \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n color: var(--mj-text-muted);\n text-align: center;\n}\n.empty-state i {\n font-size: 40px;\n margin-bottom: 12px;\n}\n.empty-state p {\n font-size: 14px;\n margin-bottom: 4px;\n}\n.empty-state span {\n font-size: 12px;\n}\n\n/* Scheduling App Link */\n.scheduling-app-link {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-top: 20px;\n padding-top: 16px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.btn-secondary {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 7px 14px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n font-size: 12px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n\n.btn-secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n}\n\n.link-hint {\n font-size: 11px;\n color: var(--mj-text-muted);\n}\n"] }]
665
+ }], null, { HideToolbar: [{
666
+ type: Input
667
+ }] }); })();
597
668
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SchedulingResourceComponent, { className: "SchedulingResourceComponent", filePath: "src/KnowledgeHub/components/scheduling/scheduling-resource.component.ts", lineNumber: 38 }); })();
598
669
  /** Tree-shaking prevention */
599
670
  export function LoadSchedulingResource() {