@memberjunction/ng-dashboards 5.37.0 → 5.39.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 (328) hide show
  1. package/README.md +46 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +89 -842
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1353 -7683
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  31. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  33. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  35. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  37. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  39. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  41. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +235 -0
  43. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1735 -0
  45. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  47. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  49. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  50. package/dist/AI/components/autotagging/shared/classify.format.d.ts +43 -0
  51. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/shared/classify.format.js +209 -0
  53. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  54. package/dist/AI/components/autotagging/shared/classify.types.d.ts +276 -0
  55. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  57. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  58. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  59. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  61. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +40 -0
  63. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/tabs/history-tab.component.js +402 -0
  65. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  67. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  69. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +122 -0
  71. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +752 -0
  73. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  74. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +166 -0
  75. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1384 -0
  77. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  78. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +70 -0
  79. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +448 -0
  81. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  83. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  85. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +47 -0
  87. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/types-tab.component.js +220 -0
  89. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  90. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +293 -289
  91. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  92. package/dist/AI/components/models/model-management.component.js +209 -208
  93. package/dist/AI/components/models/model-management.component.js.map +1 -1
  94. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  95. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  96. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  97. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  98. package/dist/AI/components/system/system-configuration.component.js +17 -17
  99. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  100. package/dist/AI/components/tags/tags-resource.component.js +550 -532
  101. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  102. package/dist/AI/components/vectors/vector-management-resource.component.js +1 -1
  103. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  104. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  105. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  106. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  107. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  108. package/dist/AI/services/cache-metrics.d.ts +50 -0
  109. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  110. package/dist/AI/services/cache-metrics.js +43 -0
  111. package/dist/AI/services/cache-metrics.js.map +1 -0
  112. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  113. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  114. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  115. package/dist/Actions/components/actions-overview.component.js +141 -141
  116. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  117. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  118. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  120. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  122. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  123. package/dist/Admin/admin-data-schema.component.js +2 -2
  124. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  125. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  126. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  127. package/dist/Admin/admin-identity-access.component.js +2 -2
  128. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  129. package/dist/Admin/admin-monitoring.component.js +2 -2
  130. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  131. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  132. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  134. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  135. package/dist/Communication/communication-logs-resource.component.js +72 -50
  136. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  138. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  139. package/dist/Communication/communication-providers-resource.component.js +52 -51
  140. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  141. package/dist/Communication/communication-runs-resource.component.js +39 -38
  142. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  143. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  144. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  145. package/dist/Communication/communication-templates-resource.component.js +92 -89
  146. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  147. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +73 -1
  148. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/component-studio-dashboard.component.js +512 -127
  150. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  151. package/dist/ComponentStudio/component-studio-resource.component.d.ts +22 -0
  152. package/dist/ComponentStudio/component-studio-resource.component.d.ts.map +1 -0
  153. package/dist/ComponentStudio/component-studio-resource.component.js +55 -0
  154. package/dist/ComponentStudio/component-studio-resource.component.js.map +1 -0
  155. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +104 -45
  156. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +234 -331
  158. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts +54 -0
  160. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts.map +1 -0
  161. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js +339 -0
  162. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js.map +1 -0
  163. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts +65 -0
  164. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts.map +1 -0
  165. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js +492 -0
  166. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js.map +1 -0
  167. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts +88 -0
  168. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts.map +1 -0
  169. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js +457 -0
  170. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js.map +1 -0
  171. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +106 -0
  172. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -0
  173. package/dist/ComponentStudio/components/form-override-dialog.component.js +478 -0
  174. package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -0
  175. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +54 -0
  176. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  177. package/dist/ComponentStudio/components/workspace/component-preview.component.js +361 -50
  178. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  179. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +10 -0
  180. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  181. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +114 -45
  182. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  183. package/dist/ComponentStudio/services/canvas-to-code.d.ts +32 -0
  184. package/dist/ComponentStudio/services/canvas-to-code.d.ts.map +1 -0
  185. package/dist/ComponentStudio/services/canvas-to-code.js +347 -0
  186. package/dist/ComponentStudio/services/canvas-to-code.js.map +1 -0
  187. package/dist/ComponentStudio/services/code-to-canvas.d.ts +32 -0
  188. package/dist/ComponentStudio/services/code-to-canvas.d.ts.map +1 -0
  189. package/dist/ComponentStudio/services/code-to-canvas.js +92 -0
  190. package/dist/ComponentStudio/services/code-to-canvas.js.map +1 -0
  191. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +29 -0
  192. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  193. package/dist/ComponentStudio/services/component-studio-state.service.js +76 -0
  194. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  195. package/dist/ComponentStudio/services/entity-form-override.service.d.ts +86 -0
  196. package/dist/ComponentStudio/services/entity-form-override.service.d.ts.map +1 -0
  197. package/dist/ComponentStudio/services/entity-form-override.service.js +246 -0
  198. package/dist/ComponentStudio/services/entity-form-override.service.js.map +1 -0
  199. package/dist/ComponentStudio/services/field-binding-scanner.d.ts +29 -0
  200. package/dist/ComponentStudio/services/field-binding-scanner.d.ts.map +1 -0
  201. package/dist/ComponentStudio/services/field-binding-scanner.js +110 -0
  202. package/dist/ComponentStudio/services/field-binding-scanner.js.map +1 -0
  203. package/dist/ComponentStudio/services/form-canvas-model.d.ts +56 -0
  204. package/dist/ComponentStudio/services/form-canvas-model.d.ts.map +1 -0
  205. package/dist/ComponentStudio/services/form-canvas-model.js +35 -0
  206. package/dist/ComponentStudio/services/form-canvas-model.js.map +1 -0
  207. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts +10 -0
  208. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts.map +1 -0
  209. package/dist/ComponentStudio/services/form-host-props-fixture.js +10 -0
  210. package/dist/ComponentStudio/services/form-host-props-fixture.js.map +1 -0
  211. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  212. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  213. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  214. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  215. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  216. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  217. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  218. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  219. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  220. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  221. package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
  222. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  223. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  224. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  225. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  226. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  227. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  228. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  229. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  230. package/dist/DevTools/app-state-inspector.component.js +18 -17
  231. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  232. package/dist/DevTools/class-registry.component.js +88 -85
  233. package/dist/DevTools/class-registry.component.js.map +1 -1
  234. package/dist/DevTools/event-monitor.component.js +155 -150
  235. package/dist/DevTools/event-monitor.component.js.map +1 -1
  236. package/dist/DevTools/graphql-console.component.js +245 -243
  237. package/dist/DevTools/graphql-console.component.js.map +1 -1
  238. package/dist/DevTools/layout-inspector.component.js +18 -17
  239. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  240. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  241. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  242. package/dist/FormBuilder/form-builder-resource.component.d.ts +964 -0
  243. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -0
  244. package/dist/FormBuilder/form-builder-resource.component.js +4487 -0
  245. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -0
  246. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts +55 -0
  247. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts.map +1 -0
  248. package/dist/FormBuilder/form-builder-version-rail.helpers.js +73 -0
  249. package/dist/FormBuilder/form-builder-version-rail.helpers.js.map +1 -0
  250. package/dist/Home/home-application.d.ts +21 -1
  251. package/dist/Home/home-application.d.ts.map +1 -1
  252. package/dist/Home/home-application.js +60 -8
  253. package/dist/Home/home-application.js.map +1 -1
  254. package/dist/Home/home-dashboard.component.js +2 -2
  255. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  256. package/dist/Integration/components/activity/activity.component.js +236 -229
  257. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  258. package/dist/Integration/components/connections/connections.component.js +390 -389
  259. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  260. package/dist/Integration/components/overview/overview.component.js +2 -2
  261. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +2 -2
  262. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  263. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +45 -44
  264. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  265. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  266. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  267. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  268. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  269. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  270. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  271. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  272. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  273. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  274. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  275. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  276. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  277. package/dist/MCP/mcp-dashboard.component.js +443 -438
  278. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  279. package/dist/QueryBrowser/query-browser-resource.component.d.ts +14 -14
  280. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  281. package/dist/QueryBrowser/query-browser-resource.component.js +11 -10
  282. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  283. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  284. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  285. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  286. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  287. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  288. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  289. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  290. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  291. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  292. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  293. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  294. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  295. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  296. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  297. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  298. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-explorer.component.js +436 -427
  300. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  301. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  302. package/dist/Testing/components/testing-runs.component.js +116 -115
  303. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  304. package/dist/Testing/testing-dashboard.component.js +6 -7
  305. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  306. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  307. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  308. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  309. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  310. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  311. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  312. package/dist/ai-dashboards.module.d.ts +47 -35
  313. package/dist/ai-dashboards.module.d.ts.map +1 -1
  314. package/dist/ai-dashboards.module.js +40 -1
  315. package/dist/ai-dashboards.module.js.map +1 -1
  316. package/dist/communication-dashboards.module.d.ts +1 -1
  317. package/dist/communication-dashboards.module.d.ts.map +1 -1
  318. package/dist/communication-dashboards.module.js +7 -1
  319. package/dist/communication-dashboards.module.js.map +1 -1
  320. package/dist/component-studio-dashboards.module.d.ts +34 -22
  321. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  322. package/dist/component-studio-dashboards.module.js +65 -9
  323. package/dist/component-studio-dashboards.module.js.map +1 -1
  324. package/dist/testing-dashboards.module.d.ts +4 -5
  325. package/dist/testing-dashboards.module.d.ts.map +1 -1
  326. package/dist/testing-dashboards.module.js +7 -5
  327. package/dist/testing-dashboards.module.js.map +1 -1
  328. package/package.json +55 -53
@@ -16,11 +16,11 @@ import * as i1 from "@angular/common";
16
16
  import * as i2 from "@memberjunction/ng-ui-components";
17
17
  import * as i3 from "@memberjunction/ng-shared-generic";
18
18
  const _c0 = a0 => ({ "expanded": a0 });
19
- function VersionHistoryRestoreResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelement(0, "mj-loading", 9);
19
+ function VersionHistoryRestoreResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
20
+ i0.ɵɵelement(0, "mj-loading", 8);
21
21
  } }
22
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
23
- i0.ɵɵelementStart(0, "div", 31);
22
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "div", 30);
24
24
  i0.ɵɵtext(1);
25
25
  i0.ɵɵelementEnd();
26
26
  } if (rf & 2) {
@@ -29,11 +29,11 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
29
29
  i0.ɵɵadvance();
30
30
  i0.ɵɵtextInterpolate(ctx_r2.FormatDate(restore_r2.StartedAt));
31
31
  } }
32
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelementStart(0, "div", 39)(1, "span", 40);
32
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_17_Template(rf, ctx) { if (rf & 1) {
33
+ i0.ɵɵelementStart(0, "div", 38)(1, "span", 39);
34
34
  i0.ɵɵtext(2, "Restored By");
35
35
  i0.ɵɵelementEnd();
36
- i0.ɵɵelementStart(3, "span", 42);
36
+ i0.ɵɵelementStart(3, "span", 41);
37
37
  i0.ɵɵtext(4);
38
38
  i0.ɵɵelementEnd()();
39
39
  } if (rf & 2) {
@@ -41,8 +41,8 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
41
41
  i0.ɵɵadvance(4);
42
42
  i0.ɵɵtextInterpolate(restore_r2.User);
43
43
  } }
44
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
45
- i0.ɵɵelementStart(0, "span", 44);
44
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelementStart(0, "span", 43);
46
46
  i0.ɵɵtext(1);
47
47
  i0.ɵɵelementEnd();
48
48
  } if (rf & 2) {
@@ -50,8 +50,8 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
50
50
  i0.ɵɵadvance();
51
51
  i0.ɵɵtextInterpolate1(" ", restore_r2.PreRestoreLabel, " ");
52
52
  } }
53
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
54
- i0.ɵɵelementStart(0, "span", 44);
53
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template(rf, ctx) { if (rf & 1) {
54
+ i0.ɵɵelementStart(0, "span", 43);
55
55
  i0.ɵɵtext(1);
56
56
  i0.ɵɵpipe(2, "slice");
57
57
  i0.ɵɵelementEnd();
@@ -60,12 +60,12 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
60
60
  i0.ɵɵadvance();
61
61
  i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind3(2, 1, restore_r2.PreRestoreLabelID, 0, 20), "... ");
62
62
  } }
63
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Template(rf, ctx) { if (rf & 1) {
64
- i0.ɵɵelementStart(0, "div", 39)(1, "span", 40);
63
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Template(rf, ctx) { if (rf & 1) {
64
+ i0.ɵɵelementStart(0, "div", 38)(1, "span", 39);
65
65
  i0.ɵɵtext(2, "Pre-Restore Label");
66
66
  i0.ɵɵelementEnd();
67
- i0.ɵɵconditionalCreate(3, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template, 2, 1, "span", 44);
68
- i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template, 3, 5, "span", 44);
67
+ i0.ɵɵconditionalCreate(3, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_3_Template, 2, 1, "span", 43);
68
+ i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Conditional_4_Template, 3, 5, "span", 43);
69
69
  i0.ɵɵelementEnd();
70
70
  } if (rf & 2) {
71
71
  const restore_r2 = i0.ɵɵnextContext(2).$implicit;
@@ -74,12 +74,12 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
74
74
  i0.ɵɵadvance();
75
75
  i0.ɵɵconditional(!restore_r2.PreRestoreLabel ? 4 : -1);
76
76
  } }
77
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_19_Template(rf, ctx) { if (rf & 1) {
78
- i0.ɵɵelementStart(0, "div", 43)(1, "div", 45);
79
- i0.ɵɵelement(2, "i", 46);
77
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_19_Template(rf, ctx) { if (rf & 1) {
78
+ i0.ɵɵelementStart(0, "div", 42)(1, "div", 44);
79
+ i0.ɵɵelement(2, "i", 45);
80
80
  i0.ɵɵtext(3, " Error Log ");
81
81
  i0.ɵɵelementEnd();
82
- i0.ɵɵelementStart(4, "pre", 47);
82
+ i0.ɵɵelementStart(4, "pre", 46);
83
83
  i0.ɵɵtext(5);
84
84
  i0.ɵɵelementEnd()();
85
85
  } if (rf & 2) {
@@ -87,29 +87,29 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
87
87
  i0.ɵɵadvance(5);
88
88
  i0.ɵɵtextInterpolate(restore_r2.ErrorLog);
89
89
  } }
90
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "div", 37)(1, "div", 38)(2, "div", 39)(3, "span", 40);
90
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
91
+ i0.ɵɵelementStart(0, "div", 36)(1, "div", 37)(2, "div", 38)(3, "span", 39);
92
92
  i0.ɵɵtext(4, "Status");
93
93
  i0.ɵɵelementEnd();
94
- i0.ɵɵelementStart(5, "span", 41);
94
+ i0.ɵɵelementStart(5, "span", 40);
95
95
  i0.ɵɵtext(6);
96
96
  i0.ɵɵelementEnd()();
97
- i0.ɵɵelementStart(7, "div", 39)(8, "span", 40);
97
+ i0.ɵɵelementStart(7, "div", 38)(8, "span", 39);
98
98
  i0.ɵɵtext(9, "Items Completed");
99
99
  i0.ɵɵelementEnd();
100
- i0.ɵɵelementStart(10, "span", 42);
100
+ i0.ɵɵelementStart(10, "span", 41);
101
101
  i0.ɵɵtext(11);
102
102
  i0.ɵɵelementEnd()();
103
- i0.ɵɵelementStart(12, "div", 39)(13, "span", 40);
103
+ i0.ɵɵelementStart(12, "div", 38)(13, "span", 39);
104
104
  i0.ɵɵtext(14, "Items Failed");
105
105
  i0.ɵɵelementEnd();
106
- i0.ɵɵelementStart(15, "span", 42);
106
+ i0.ɵɵelementStart(15, "span", 41);
107
107
  i0.ɵɵtext(16);
108
108
  i0.ɵɵelementEnd()();
109
- i0.ɵɵconditionalCreate(17, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_17_Template, 5, 1, "div", 39);
110
- i0.ɵɵconditionalCreate(18, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_18_Template, 5, 2, "div", 39);
109
+ i0.ɵɵconditionalCreate(17, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_17_Template, 5, 1, "div", 38);
110
+ i0.ɵɵconditionalCreate(18, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_18_Template, 5, 2, "div", 38);
111
111
  i0.ɵɵelementEnd();
112
- i0.ɵɵconditionalCreate(19, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Conditional_19_Template, 6, 1, "div", 43);
112
+ i0.ɵɵconditionalCreate(19, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Conditional_19_Template, 6, 1, "div", 42);
113
113
  i0.ɵɵelementEnd();
114
114
  } if (rf & 2) {
115
115
  const restore_r2 = i0.ɵɵnextContext().$implicit;
@@ -131,26 +131,26 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
131
131
  i0.ɵɵadvance();
132
132
  i0.ɵɵconditional(restore_r2.ErrorLog ? 19 : -1);
133
133
  } }
134
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
134
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Template(rf, ctx) { if (rf & 1) {
135
135
  const _r1 = i0.ɵɵgetCurrentView();
136
- i0.ɵɵelementStart(0, "div", 25)(1, "div", 26);
137
- i0.ɵɵlistener("click", function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Template_div_click_1_listener() { const restore_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ToggleExpand(restore_r2.ID)); });
138
- i0.ɵɵelementStart(2, "div", 27);
139
- i0.ɵɵelement(3, "i", 28);
140
- i0.ɵɵelementStart(4, "div", 29)(5, "div", 30);
136
+ i0.ɵɵelementStart(0, "div", 24)(1, "div", 25);
137
+ i0.ɵɵlistener("click", function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Template_div_click_1_listener() { const restore_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.ToggleExpand(restore_r2.ID)); });
138
+ i0.ɵɵelementStart(2, "div", 26);
139
+ i0.ɵɵelement(3, "i", 27);
140
+ i0.ɵɵelementStart(4, "div", 28)(5, "div", 29);
141
141
  i0.ɵɵtext(6);
142
142
  i0.ɵɵelementEnd();
143
- i0.ɵɵconditionalCreate(7, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_7_Template, 2, 1, "div", 31);
143
+ i0.ɵɵconditionalCreate(7, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_7_Template, 2, 1, "div", 30);
144
144
  i0.ɵɵelementEnd()();
145
- i0.ɵɵelementStart(8, "div", 32)(9, "div", 33);
146
- i0.ɵɵelement(10, "div", 34);
145
+ i0.ɵɵelementStart(8, "div", 31)(9, "div", 32);
146
+ i0.ɵɵelement(10, "div", 33);
147
147
  i0.ɵɵelementEnd();
148
- i0.ɵɵelementStart(11, "span", 35);
148
+ i0.ɵɵelementStart(11, "span", 34);
149
149
  i0.ɵɵtext(12);
150
150
  i0.ɵɵelementEnd();
151
- i0.ɵɵelement(13, "i", 36);
151
+ i0.ɵɵelement(13, "i", 35);
152
152
  i0.ɵɵelementEnd()();
153
- i0.ɵɵconditionalCreate(14, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Conditional_14_Template, 20, 9, "div", 37);
153
+ i0.ɵɵconditionalCreate(14, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Conditional_14_Template, 20, 9, "div", 36);
154
154
  i0.ɵɵelementEnd();
155
155
  } if (rf & 2) {
156
156
  const restore_r2 = ctx.$implicit;
@@ -173,33 +173,33 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Fo
173
173
  i0.ɵɵadvance();
174
174
  i0.ɵɵconditional(ctx_r2.IsExpanded(restore_r2.ID) ? 14 : -1);
175
175
  } }
176
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Template(rf, ctx) { if (rf & 1) {
177
- i0.ɵɵelementStart(0, "div", 23);
178
- i0.ɵɵrepeaterCreate(1, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_For_2_Template, 15, 15, "div", 25, i0.ɵɵrepeaterTrackByIdentity);
176
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_Template(rf, ctx) { if (rf & 1) {
177
+ i0.ɵɵelementStart(0, "div", 22);
178
+ i0.ɵɵrepeaterCreate(1, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_For_2_Template, 15, 15, "div", 24, i0.ɵɵrepeaterTrackByIdentity);
179
179
  i0.ɵɵelementEnd();
180
180
  } if (rf & 2) {
181
181
  const ctx_r2 = i0.ɵɵnextContext(2);
182
182
  i0.ɵɵadvance();
183
183
  i0.ɵɵrepeater(ctx_r2.FilteredRestores);
184
184
  } }
185
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_4_Template(rf, ctx) { if (rf & 1) {
185
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_4_Template(rf, ctx) { if (rf & 1) {
186
186
  i0.ɵɵelementStart(0, "p");
187
187
  i0.ɵɵtext(1, " Try adjusting your filters. ");
188
188
  i0.ɵɵelementEnd();
189
189
  } }
190
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_5_Template(rf, ctx) { if (rf & 1) {
190
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_5_Template(rf, ctx) { if (rf & 1) {
191
191
  i0.ɵɵelementStart(0, "p");
192
192
  i0.ɵɵtext(1, " No restores have been performed yet. Use the VersionHistoryEngine to restore records to a labeled state. ");
193
193
  i0.ɵɵelementEnd();
194
194
  } }
195
- function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Template(rf, ctx) { if (rf & 1) {
196
- i0.ɵɵelementStart(0, "div", 24);
197
- i0.ɵɵelement(1, "i", 48);
195
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Template(rf, ctx) { if (rf & 1) {
196
+ i0.ɵɵelementStart(0, "div", 23);
197
+ i0.ɵɵelement(1, "i", 47);
198
198
  i0.ɵɵelementStart(2, "h3");
199
199
  i0.ɵɵtext(3, "No restore operations found");
200
200
  i0.ɵɵelementEnd();
201
- i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_4_Template, 2, 0, "p");
202
- i0.ɵɵconditionalCreate(5, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Conditional_5_Template, 2, 0, "p");
201
+ i0.ɵɵconditionalCreate(4, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_4_Template, 2, 0, "p");
202
+ i0.ɵɵconditionalCreate(5, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Conditional_5_Template, 2, 0, "p");
203
203
  i0.ɵɵelementEnd();
204
204
  } if (rf & 2) {
205
205
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -208,45 +208,45 @@ function VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Te
208
208
  i0.ɵɵadvance();
209
209
  i0.ɵɵconditional(!ctx_r2.StatusFilter ? 5 : -1);
210
210
  } }
211
- function VersionHistoryRestoreResourceComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
212
- i0.ɵɵelementStart(0, "div", 10)(1, "div", 11)(2, "div", 12);
213
- i0.ɵɵelement(3, "i", 13);
211
+ function VersionHistoryRestoreResourceComponent_Conditional_11_Template(rf, ctx) { if (rf & 1) {
212
+ i0.ɵɵelementStart(0, "div", 9)(1, "div", 10)(2, "div", 11);
213
+ i0.ɵɵelement(3, "i", 12);
214
214
  i0.ɵɵelementEnd();
215
- i0.ɵɵelementStart(4, "div", 14)(5, "div", 15);
215
+ i0.ɵɵelementStart(4, "div", 13)(5, "div", 14);
216
216
  i0.ɵɵtext(6);
217
217
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(7, "div", 16);
218
+ i0.ɵɵelementStart(7, "div", 15);
219
219
  i0.ɵɵtext(8, "Total Restores");
220
220
  i0.ɵɵelementEnd()()();
221
- i0.ɵɵelementStart(9, "div", 11)(10, "div", 17);
222
- i0.ɵɵelement(11, "i", 18);
221
+ i0.ɵɵelementStart(9, "div", 10)(10, "div", 16);
222
+ i0.ɵɵelement(11, "i", 17);
223
223
  i0.ɵɵelementEnd();
224
- i0.ɵɵelementStart(12, "div", 14)(13, "div", 15);
224
+ i0.ɵɵelementStart(12, "div", 13)(13, "div", 14);
225
225
  i0.ɵɵtext(14);
226
226
  i0.ɵɵelementEnd();
227
- i0.ɵɵelementStart(15, "div", 16);
227
+ i0.ɵɵelementStart(15, "div", 15);
228
228
  i0.ɵɵtext(16, "Successful");
229
229
  i0.ɵɵelementEnd()()();
230
- i0.ɵɵelementStart(17, "div", 11)(18, "div", 19);
231
- i0.ɵɵelement(19, "i", 20);
230
+ i0.ɵɵelementStart(17, "div", 10)(18, "div", 18);
231
+ i0.ɵɵelement(19, "i", 19);
232
232
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(20, "div", 14)(21, "div", 15);
233
+ i0.ɵɵelementStart(20, "div", 13)(21, "div", 14);
234
234
  i0.ɵɵtext(22);
235
235
  i0.ɵɵelementEnd();
236
- i0.ɵɵelementStart(23, "div", 16);
236
+ i0.ɵɵelementStart(23, "div", 15);
237
237
  i0.ɵɵtext(24, "Failed");
238
238
  i0.ɵɵelementEnd()()();
239
- i0.ɵɵelementStart(25, "div", 11)(26, "div", 21);
240
- i0.ɵɵelement(27, "i", 22);
239
+ i0.ɵɵelementStart(25, "div", 10)(26, "div", 20);
240
+ i0.ɵɵelement(27, "i", 21);
241
241
  i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(28, "div", 14)(29, "div", 15);
242
+ i0.ɵɵelementStart(28, "div", 13)(29, "div", 14);
243
243
  i0.ɵɵtext(30);
244
244
  i0.ɵɵelementEnd();
245
- i0.ɵɵelementStart(31, "div", 16);
245
+ i0.ɵɵelementStart(31, "div", 15);
246
246
  i0.ɵɵtext(32, "Partial");
247
247
  i0.ɵɵelementEnd()()()();
248
- i0.ɵɵconditionalCreate(33, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_33_Template, 3, 0, "div", 23);
249
- i0.ɵɵconditionalCreate(34, VersionHistoryRestoreResourceComponent_Conditional_12_Conditional_34_Template, 6, 2, "div", 24);
248
+ i0.ɵɵconditionalCreate(33, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_33_Template, 3, 0, "div", 22);
249
+ i0.ɵɵconditionalCreate(34, VersionHistoryRestoreResourceComponent_Conditional_11_Conditional_34_Template, 6, 2, "div", 23);
250
250
  } if (rf & 2) {
251
251
  const ctx_r2 = i0.ɵɵnextContext();
252
252
  i0.ɵɵadvance(6);
@@ -346,6 +346,36 @@ let VersionHistoryRestoreResourceComponent = class VersionHistoryRestoreResource
346
346
  this.applyFilters();
347
347
  this.persistPreferences();
348
348
  }
349
+ // -- Concise chrome: Status lives behind the one Filter popover ------------
350
+ get statusFilterFields() {
351
+ return [{
352
+ key: 'status',
353
+ type: 'chips',
354
+ label: 'Status',
355
+ chipOptions: [
356
+ { text: 'All', value: '' },
357
+ { text: 'Complete', value: 'Complete', icon: 'fa-solid fa-circle-check' },
358
+ { text: 'Error', value: 'Error', icon: 'fa-solid fa-circle-xmark' },
359
+ { text: 'Partial', value: 'Partial', icon: 'fa-solid fa-circle-half-stroke' },
360
+ ],
361
+ }];
362
+ }
363
+ get statusFilterValues() {
364
+ return { status: this.StatusFilter };
365
+ }
366
+ get ActiveFilterCount() {
367
+ return this.StatusFilter ? 1 : 0;
368
+ }
369
+ onFilterValuesChange(values) {
370
+ this.StatusFilter = values['status'] ?? '';
371
+ this.applyFilters();
372
+ this.persistPreferences();
373
+ }
374
+ resetStatusFilter() {
375
+ this.StatusFilter = '';
376
+ this.applyFilters();
377
+ this.persistPreferences();
378
+ }
349
379
  loadUserPreferences() {
350
380
  try {
351
381
  const raw = UserInfoEngine.Instance.GetSetting(VersionHistoryRestoreResourceComponent_1.PREFS_KEY);
@@ -419,25 +449,21 @@ let VersionHistoryRestoreResourceComponent = class VersionHistoryRestoreResource
419
449
  this.LoadData();
420
450
  }
421
451
  static ɵfac = function VersionHistoryRestoreResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || VersionHistoryRestoreResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
422
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryRestoreResourceComponent, selectors: [["mj-version-history-restore-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 13, vars: 8, consts: [["Title", "Restore History", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Track all restore operations and their outcomes"], ["meta", ""], ["Label", "restores", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["toolbar", ""], ["Label", "Complete", "Icon", "fa-solid fa-circle-check", 3, "Clicked", "Active"], ["Label", "Error", "Icon", "fa-solid fa-circle-xmark", 3, "Clicked", "Active"], ["Label", "Partial", "Icon", "fa-solid fa-circle-half-stroke", 3, "Clicked", "Active"], ["text", "Loading restore history..."], [1, "kpi-row"], [1, "kpi-card"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-success) 10%, transparent)", "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-circle-check"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-error) 10%, transparent)", "color", "var(--mj-status-error)"], [1, "fa-solid", "fa-circle-xmark"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-warning) 10%, transparent)", "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-circle-half-stroke"], [1, "restore-list"], [1, "empty-state"], [1, "restore-card", 3, "ngClass"], [1, "restore-header", 3, "click"], [1, "restore-header-left"], [1, "status-icon", 3, "ngClass"], [1, "restore-info"], [1, "restore-label-name"], [1, "restore-date"], [1, "restore-header-right"], [1, "restore-progress-bar"], [1, "progress-fill", 3, "ngClass"], [1, "restore-count"], [1, "expand-icon", 3, "ngClass"], [1, "restore-details"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value", 3, "ngClass"], [1, "detail-value"], [1, "error-log"], [1, "detail-value", "detail-mono"], [1, "error-log-header"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-log-content"], [1, "fa-solid", "fa-clock-rotate-left", "empty-icon"]], template: function VersionHistoryRestoreResourceComponent_Template(rf, ctx) { if (rf & 1) {
452
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: VersionHistoryRestoreResourceComponent, selectors: [["mj-version-history-restore-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 12, vars: 9, consts: [["Title", "Restore History", "Icon", "fa-solid fa-clock-rotate-left", "Subtitle", "Track all restore operations and their outcomes"], ["meta", ""], ["Label", "restores", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["toolbar", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], ["text", "Loading restore history..."], [1, "kpi-row"], [1, "kpi-card"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-brand-primary) 10%, transparent)", "color", "var(--mj-brand-primary)"], [1, "fa-solid", "fa-clock-rotate-left"], [1, "kpi-content"], [1, "kpi-value"], [1, "kpi-label"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-success) 10%, transparent)", "color", "var(--mj-status-success)"], [1, "fa-solid", "fa-circle-check"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-error) 10%, transparent)", "color", "var(--mj-status-error)"], [1, "fa-solid", "fa-circle-xmark"], [1, "kpi-icon", 2, "background", "color-mix(in srgb, var(--mj-status-warning) 10%, transparent)", "color", "var(--mj-status-warning)"], [1, "fa-solid", "fa-circle-half-stroke"], [1, "restore-list"], [1, "empty-state"], [1, "restore-card", 3, "ngClass"], [1, "restore-header", 3, "click"], [1, "restore-header-left"], [1, "status-icon", 3, "ngClass"], [1, "restore-info"], [1, "restore-label-name"], [1, "restore-date"], [1, "restore-header-right"], [1, "restore-progress-bar"], [1, "progress-fill", 3, "ngClass"], [1, "restore-count"], [1, "expand-icon", 3, "ngClass"], [1, "restore-details"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value", 3, "ngClass"], [1, "detail-value"], [1, "error-log"], [1, "detail-value", "detail-mono"], [1, "error-log-header"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "error-log-content"], [1, "fa-solid", "fa-clock-rotate-left", "empty-icon"]], template: function VersionHistoryRestoreResourceComponent_Template(rf, ctx) { if (rf & 1) {
423
453
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 0)(2, "div", 1);
424
454
  i0.ɵɵelement(3, "mj-stat-badge", 2);
425
455
  i0.ɵɵelementEnd();
426
456
  i0.ɵɵelementStart(4, "div", 3)(5, "mj-refresh-button", 4);
427
457
  i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_refresh_button_Clicked_5_listener() { return ctx.Refresh(); });
428
458
  i0.ɵɵelementEnd()();
429
- i0.ɵɵelementStart(6, "div", 5)(7, "mj-filter-chip", 6);
430
- i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_filter_chip_Clicked_7_listener() { return ctx.OnStatusFilterChange("Complete"); });
431
- i0.ɵɵelementEnd();
432
- i0.ɵɵelementStart(8, "mj-filter-chip", 7);
433
- i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_filter_chip_Clicked_8_listener() { return ctx.OnStatusFilterChange("Error"); });
434
- i0.ɵɵelementEnd();
435
- i0.ɵɵelementStart(9, "mj-filter-chip", 8);
436
- i0.ɵɵlistener("Clicked", function VersionHistoryRestoreResourceComponent_Template_mj_filter_chip_Clicked_9_listener() { return ctx.OnStatusFilterChange("Partial"); });
437
- i0.ɵɵelementEnd()()();
438
- i0.ɵɵelementStart(10, "mj-page-body");
439
- i0.ɵɵconditionalCreate(11, VersionHistoryRestoreResourceComponent_Conditional_11_Template, 1, 0, "mj-loading", 9);
440
- i0.ɵɵconditionalCreate(12, VersionHistoryRestoreResourceComponent_Conditional_12_Template, 35, 6);
459
+ i0.ɵɵelementStart(6, "div", 5)(7, "mj-filter-popover", 6);
460
+ i0.ɵɵlistener("ClearAllRequested", function VersionHistoryRestoreResourceComponent_Template_mj_filter_popover_ClearAllRequested_7_listener() { return ctx.resetStatusFilter(); });
461
+ i0.ɵɵelementStart(8, "mj-filter-panel", 7);
462
+ i0.ɵɵlistener("ValuesChange", function VersionHistoryRestoreResourceComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { return ctx.onFilterValuesChange($event); })("Reset", function VersionHistoryRestoreResourceComponent_Template_mj_filter_panel_Reset_8_listener() { return ctx.resetStatusFilter(); });
463
+ i0.ɵɵelementEnd()()()();
464
+ i0.ɵɵelementStart(9, "mj-page-body");
465
+ i0.ɵɵconditionalCreate(10, VersionHistoryRestoreResourceComponent_Conditional_10_Template, 1, 0, "mj-loading", 8);
466
+ i0.ɵɵconditionalCreate(11, VersionHistoryRestoreResourceComponent_Conditional_11_Template, 35, 6);
441
467
  i0.ɵɵelementEnd()();
442
468
  } if (rf & 2) {
443
469
  i0.ɵɵadvance(3);
@@ -445,16 +471,14 @@ let VersionHistoryRestoreResourceComponent = class VersionHistoryRestoreResource
445
471
  i0.ɵɵadvance(2);
446
472
  i0.ɵɵproperty("Loading", ctx.IsLoading);
447
473
  i0.ɵɵadvance(2);
448
- i0.ɵɵproperty("Active", ctx.StatusFilter === "Complete");
449
- i0.ɵɵadvance();
450
- i0.ɵɵproperty("Active", ctx.StatusFilter === "Error");
474
+ i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
451
475
  i0.ɵɵadvance();
452
- i0.ɵɵproperty("Active", ctx.StatusFilter === "Partial");
476
+ i0.ɵɵproperty("Fields", ctx.statusFilterFields)("Values", ctx.statusFilterValues);
453
477
  i0.ɵɵadvance(2);
454
- i0.ɵɵconditional(ctx.IsLoading ? 11 : -1);
478
+ i0.ɵɵconditional(ctx.IsLoading ? 10 : -1);
455
479
  i0.ɵɵadvance();
456
- i0.ɵɵconditional(!ctx.IsLoading ? 12 : -1);
457
- } }, dependencies: [i1.NgClass, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i2.MJFilterChipComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i1.SlicePipe], styles: ["\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.restore-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded[_ngcontent-%COMP%] {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.status-success[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.status-failed[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.status-progress[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.status-pending[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n\n.restore-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar[_ngcontent-%COMP%] {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n.progress-fill.status-failed[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n.progress-fill.status-progress[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.progress-fill.status-pending[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n\n.restore-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n\n\n.restore-details[_ngcontent-%COMP%] {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.error-log[_ngcontent-%COMP%] {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\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 text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row[_ngcontent-%COMP%] { grid-template-columns: repeat(2, 1fr); }\n}"], changeDetection: 0 });
480
+ i0.ɵɵconditional(!ctx.IsLoading ? 11 : -1);
481
+ } }, dependencies: [i1.NgClass, i2.MJPageHeaderComponent, i2.MJPageLayoutComponent, i2.MJPageBodyComponent, i2.MJFilterPopoverComponent, i2.MJFilterPanelComponent, i2.MJStatBadgeComponent, i2.MJRefreshButtonComponent, i3.LoadingComponent, i1.SlicePipe], styles: ["\n\n.kpi-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n\n\n.restore-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded[_ngcontent-%COMP%] {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.status-success[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.status-failed[_ngcontent-%COMP%] { color: var(--mj-status-error); }\n.status-progress[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.status-pending[_ngcontent-%COMP%] { color: var(--mj-status-warning); }\n\n.restore-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name[_ngcontent-%COMP%] {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge[_ngcontent-%COMP%] {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar[_ngcontent-%COMP%] {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill[_ngcontent-%COMP%] {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success[_ngcontent-%COMP%] { background: var(--mj-status-success); }\n.progress-fill.status-failed[_ngcontent-%COMP%] { background: var(--mj-status-error); }\n.progress-fill.status-progress[_ngcontent-%COMP%] { background: var(--mj-brand-primary); }\n.progress-fill.status-pending[_ngcontent-%COMP%] { background: var(--mj-status-warning); }\n\n.restore-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n\n\n.restore-details[_ngcontent-%COMP%] {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono[_ngcontent-%COMP%] {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n\n\n.error-log[_ngcontent-%COMP%] {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content[_ngcontent-%COMP%] {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\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 text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row[_ngcontent-%COMP%] { grid-template-columns: repeat(2, 1fr); }\n}"], changeDetection: 0 });
458
482
  };
459
483
  VersionHistoryRestoreResourceComponent = VersionHistoryRestoreResourceComponent_1 = __decorate([
460
484
  RegisterClass(BaseResourceComponent, 'VersionHistoryRestoreResource')
@@ -462,7 +486,7 @@ VersionHistoryRestoreResourceComponent = VersionHistoryRestoreResourceComponent_
462
486
  export { VersionHistoryRestoreResourceComponent };
463
487
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(VersionHistoryRestoreResourceComponent, [{
464
488
  type: Component,
465
- args: [{ standalone: false, selector: 'mj-version-history-restore-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Restore History\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Track all restore operations and their outcomes\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredRestores.length\"\n [Total]=\"Restores.length\"\n Label=\"restores\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-filter-chip\n Label=\"Complete\"\n Icon=\"fa-solid fa-circle-check\"\n [Active]=\"StatusFilter === 'Complete'\"\n (Clicked)=\"OnStatusFilterChange('Complete')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Error\"\n Icon=\"fa-solid fa-circle-xmark\"\n [Active]=\"StatusFilter === 'Error'\"\n (Clicked)=\"OnStatusFilterChange('Error')\">\n </mj-filter-chip>\n <mj-filter-chip\n Label=\"Partial\"\n Icon=\"fa-solid fa-circle-half-stroke\"\n [Active]=\"StatusFilter === 'Partial'\"\n (Clicked)=\"OnStatusFilterChange('Partial')\">\n </mj-filter-chip>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (IsLoading) {\n <mj-loading text=\"Loading restore history...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{TotalRestores}}</div>\n <div class=\"kpi-label\">Total Restores</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success);\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{SuccessfulRestores}}</div>\n <div class=\"kpi-label\">Successful</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-error) 10%, transparent); color: var(--mj-status-error);\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FailedRestores}}</div>\n <div class=\"kpi-label\">Failed</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning);\">\n <i class=\"fa-solid fa-circle-half-stroke\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{PartialRestores}}</div>\n <div class=\"kpi-label\">Partial</div>\n </div>\n </div>\n </div>\n <!-- Restore List -->\n @if (FilteredRestores.length > 0) {\n <div class=\"restore-list\">\n @for (restore of FilteredRestores; track restore) {\n <div class=\"restore-card\"\n [ngClass]=\"{'expanded': IsExpanded(restore.ID)}\">\n <div class=\"restore-header\" (click)=\"ToggleExpand(restore.ID)\">\n <div class=\"restore-header-left\">\n <i [class]=\"GetStatusIcon(restore.Status)\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n class=\"status-icon\"></i>\n <div class=\"restore-info\">\n <div class=\"restore-label-name\">\n {{restore.VersionLabel}}\n </div>\n @if (restore.StartedAt) {\n <div class=\"restore-date\">{{FormatDate(restore.StartedAt)}}</div>\n }\n </div>\n </div>\n <div class=\"restore-header-right\">\n <div class=\"restore-progress-bar\">\n <div class=\"progress-fill\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n [style.width.%]=\"GetProgressPercent(restore)\">\n </div>\n </div>\n <span class=\"restore-count\">\n {{restore.CompletedItems ?? 0}} / {{restore.TotalItems ?? 0}} items\n </span>\n <i class=\"fa-solid\"\n [ngClass]=\"IsExpanded(restore.ID) ? 'fa-chevron-up' : 'fa-chevron-down'\"\n class=\"expand-icon\">\n </i>\n </div>\n </div>\n <!-- Expanded Details -->\n @if (IsExpanded(restore.ID)) {\n <div class=\"restore-details\">\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\" [ngClass]=\"GetStatusClass(restore.Status)\">\n {{restore.Status}}\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Completed</span>\n <span class=\"detail-value\">{{restore.CompletedItems ?? 0}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Failed</span>\n <span class=\"detail-value\" [class.text-error]=\"(restore.FailedItems ?? 0) > 0\">\n {{restore.FailedItems ?? 0}}\n </span>\n </div>\n @if (restore.User) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Restored By</span>\n <span class=\"detail-value\">{{restore.User}}</span>\n </div>\n }\n @if (restore.PreRestoreLabelID) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Pre-Restore Label</span>\n @if (restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabel}}\n </span>\n }\n @if (!restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabelID | slice:0:20}}...\n </span>\n }\n </div>\n }\n </div>\n @if (restore.ErrorLog) {\n <div class=\"error-log\">\n <div class=\"error-log-header\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n Error Log\n </div>\n <pre class=\"error-log-content\">{{restore.ErrorLog}}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (FilteredRestores.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-clock-rotate-left empty-icon\"></i>\n <h3>No restore operations found</h3>\n @if (StatusFilter) {\n <p>\n Try adjusting your filters.\n </p>\n }\n @if (!StatusFilter) {\n <p>\n No restores have been performed yet. Use the VersionHistoryEngine to restore records to a labeled state.\n </p>\n }\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* KPI Row */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Restore List */\n.restore-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon {\n font-size: 20px;\n}\n\n.status-success { color: var(--mj-status-success); }\n.status-failed { color: var(--mj-status-error); }\n.status-progress { color: var(--mj-brand-primary); }\n.status-pending { color: var(--mj-status-warning); }\n\n.restore-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success { background: var(--mj-status-success); }\n.progress-fill.status-failed { background: var(--mj-status-error); }\n.progress-fill.status-progress { background: var(--mj-brand-primary); }\n.progress-fill.status-pending { background: var(--mj-status-warning); }\n\n.restore-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n/* Expanded Details */\n.restore-details {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error {\n color: var(--mj-status-error);\n}\n\n/* Error Log */\n.error-log {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row { grid-template-columns: repeat(2, 1fr); }\n}\n"] }]
489
+ args: [{ standalone: false, selector: 'mj-version-history-restore-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Restore History\"\n Icon=\"fa-solid fa-clock-rotate-left\"\n Subtitle=\"Track all restore operations and their outcomes\">\n <div meta>\n <mj-stat-badge\n [Count]=\"FilteredRestores.length\"\n [Total]=\"Restores.length\"\n Label=\"restores\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-refresh-button [Loading]=\"IsLoading\" (Clicked)=\"Refresh()\"></mj-refresh-button>\n </div>\n <div toolbar>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetStatusFilter()\">\n <mj-filter-panel\n [Fields]=\"statusFilterFields\"\n [Values]=\"statusFilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetStatusFilter()\">\n </mj-filter-panel>\n </mj-filter-popover>\n </div>\n </mj-page-header>\n\n <mj-page-body>\n @if (IsLoading) {\n <mj-loading text=\"Loading restore history...\"></mj-loading>\n }\n\n @if (!IsLoading) {\n <!-- KPI Cards -->\n <div class=\"kpi-row\">\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); color: var(--mj-brand-primary);\">\n <i class=\"fa-solid fa-clock-rotate-left\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{TotalRestores}}</div>\n <div class=\"kpi-label\">Total Restores</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-success) 10%, transparent); color: var(--mj-status-success);\">\n <i class=\"fa-solid fa-circle-check\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{SuccessfulRestores}}</div>\n <div class=\"kpi-label\">Successful</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-error) 10%, transparent); color: var(--mj-status-error);\">\n <i class=\"fa-solid fa-circle-xmark\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{FailedRestores}}</div>\n <div class=\"kpi-label\">Failed</div>\n </div>\n </div>\n <div class=\"kpi-card\">\n <div class=\"kpi-icon\" style=\"background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent); color: var(--mj-status-warning);\">\n <i class=\"fa-solid fa-circle-half-stroke\"></i>\n </div>\n <div class=\"kpi-content\">\n <div class=\"kpi-value\">{{PartialRestores}}</div>\n <div class=\"kpi-label\">Partial</div>\n </div>\n </div>\n </div>\n <!-- Restore List -->\n @if (FilteredRestores.length > 0) {\n <div class=\"restore-list\">\n @for (restore of FilteredRestores; track restore) {\n <div class=\"restore-card\"\n [ngClass]=\"{'expanded': IsExpanded(restore.ID)}\">\n <div class=\"restore-header\" (click)=\"ToggleExpand(restore.ID)\">\n <div class=\"restore-header-left\">\n <i [class]=\"GetStatusIcon(restore.Status)\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n class=\"status-icon\"></i>\n <div class=\"restore-info\">\n <div class=\"restore-label-name\">\n {{restore.VersionLabel}}\n </div>\n @if (restore.StartedAt) {\n <div class=\"restore-date\">{{FormatDate(restore.StartedAt)}}</div>\n }\n </div>\n </div>\n <div class=\"restore-header-right\">\n <div class=\"restore-progress-bar\">\n <div class=\"progress-fill\"\n [ngClass]=\"GetStatusClass(restore.Status)\"\n [style.width.%]=\"GetProgressPercent(restore)\">\n </div>\n </div>\n <span class=\"restore-count\">\n {{restore.CompletedItems ?? 0}} / {{restore.TotalItems ?? 0}} items\n </span>\n <i class=\"fa-solid\"\n [ngClass]=\"IsExpanded(restore.ID) ? 'fa-chevron-up' : 'fa-chevron-down'\"\n class=\"expand-icon\">\n </i>\n </div>\n </div>\n <!-- Expanded Details -->\n @if (IsExpanded(restore.ID)) {\n <div class=\"restore-details\">\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\" [ngClass]=\"GetStatusClass(restore.Status)\">\n {{restore.Status}}\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Completed</span>\n <span class=\"detail-value\">{{restore.CompletedItems ?? 0}}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Items Failed</span>\n <span class=\"detail-value\" [class.text-error]=\"(restore.FailedItems ?? 0) > 0\">\n {{restore.FailedItems ?? 0}}\n </span>\n </div>\n @if (restore.User) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Restored By</span>\n <span class=\"detail-value\">{{restore.User}}</span>\n </div>\n }\n @if (restore.PreRestoreLabelID) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Pre-Restore Label</span>\n @if (restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabel}}\n </span>\n }\n @if (!restore.PreRestoreLabel) {\n <span class=\"detail-value detail-mono\">\n {{restore.PreRestoreLabelID | slice:0:20}}...\n </span>\n }\n </div>\n }\n </div>\n @if (restore.ErrorLog) {\n <div class=\"error-log\">\n <div class=\"error-log-header\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n Error Log\n </div>\n <pre class=\"error-log-content\">{{restore.ErrorLog}}</pre>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n <!-- Empty State -->\n @if (FilteredRestores.length === 0 && !IsLoading) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-clock-rotate-left empty-icon\"></i>\n <h3>No restore operations found</h3>\n @if (StatusFilter) {\n <p>\n Try adjusting your filters.\n </p>\n }\n @if (!StatusFilter) {\n <p>\n No restores have been performed yet. Use the VersionHistoryEngine to restore records to a labeled state.\n </p>\n }\n </div>\n }\n }\n </mj-page-body>\n</mj-page-layout>\n", styles: ["/* KPI Row */\n.kpi-row {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.kpi-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n}\n\n.kpi-icon {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 48px;\n height: 48px;\n border-radius: 12px;\n font-size: 20px;\n flex-shrink: 0;\n}\n\n.kpi-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.kpi-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n/* Restore List */\n.restore-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.restore-card {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n transition: all 0.2s ease;\n}\n\n.restore-card:hover {\n border-color: var(--mj-border-strong);\n}\n\n.restore-card.expanded {\n box-shadow: var(--mj-shadow-md);\n}\n\n.restore-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n cursor: pointer;\n}\n\n.restore-header-left {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.status-icon {\n font-size: 20px;\n}\n\n.status-success { color: var(--mj-status-success); }\n.status-failed { color: var(--mj-status-error); }\n.status-progress { color: var(--mj-brand-primary); }\n.status-pending { color: var(--mj-status-warning); }\n\n.restore-info {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n\n.restore-label-name {\n font-size: 15px;\n font-weight: 600;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.dry-run-badge {\n font-size: 10px;\n font-weight: 700;\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 10%, transparent);\n color: var(--mj-status-warning);\n border-radius: 8px;\n letter-spacing: 0.5px;\n}\n\n.restore-date {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.restore-header-right {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.restore-progress-bar {\n width: 80px;\n height: 6px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 3px;\n overflow: hidden;\n}\n\n.progress-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.progress-fill.status-success { background: var(--mj-status-success); }\n.progress-fill.status-failed { background: var(--mj-status-error); }\n.progress-fill.status-progress { background: var(--mj-brand-primary); }\n.progress-fill.status-pending { background: var(--mj-status-warning); }\n\n.restore-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.expand-icon {\n color: var(--mj-text-muted);\n font-size: 12px;\n}\n\n/* Expanded Details */\n.restore-details {\n padding: 0 20px 20px;\n border-top: 1px solid var(--mj-border-default);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));\n gap: 16px;\n padding-top: 16px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-label {\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.detail-value {\n font-size: 15px;\n color: var(--mj-text-primary);\n font-weight: 500;\n}\n\n.detail-mono {\n font-family: 'SF Mono', 'Fira Code', monospace;\n font-size: 13px;\n}\n\n.text-error {\n color: var(--mj-status-error);\n}\n\n/* Error Log */\n.error-log {\n margin-top: 16px;\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 20%, transparent);\n border-radius: 8px;\n overflow: hidden;\n}\n\n.error-log-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 14px;\n background: color-mix(in srgb, var(--mj-status-error) 6%, transparent);\n color: var(--mj-status-error);\n font-size: 13px;\n font-weight: 600;\n}\n\n.error-log-content {\n margin: 0;\n padding: 12px 14px;\n font-size: 12px;\n font-family: 'SF Mono', 'Fira Code', monospace;\n color: var(--mj-text-primary);\n background: var(--mj-bg-surface-card);\n overflow-x: auto;\n white-space: pre-wrap;\n word-break: break-word;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n font-size: 48px;\n color: var(--mj-text-muted);\n margin-bottom: 16px;\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n max-width: 400px;\n}\n\n@media (max-width: 768px) {\n .kpi-row { grid-template-columns: repeat(2, 1fr); }\n}\n"] }]
466
490
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
467
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryRestoreResourceComponent, { className: "VersionHistoryRestoreResourceComponent", filePath: "src/VersionHistory/components/restore-resource.component.ts", lineNumber: 19 }); })();
491
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(VersionHistoryRestoreResourceComponent, { className: "VersionHistoryRestoreResourceComponent", filePath: "src/VersionHistory/components/restore-resource.component.ts", lineNumber: 20 }); })();
468
492
  //# sourceMappingURL=restore-resource.component.js.map