@memberjunction/ng-dashboards 3.4.0 → 4.1.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 (458) hide show
  1. package/README.md +102 -339
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
  3. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  4. package/dist/AI/components/agents/agent-configuration.component.js +103 -44
  5. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  6. package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
  7. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  8. package/dist/AI/components/agents/agent-editor.component.js +149 -211
  9. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  10. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
  11. package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
  12. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  13. package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
  14. package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
  15. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  16. package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
  17. package/dist/AI/components/charts/time-series-chart.component.js +6 -7
  18. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  19. package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
  20. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  21. package/dist/AI/components/execution-monitoring.component.js +33 -37
  22. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  23. package/dist/AI/components/models/model-management.component.d.ts +3 -6
  24. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  25. package/dist/AI/components/models/model-management.component.js +34 -27
  26. package/dist/AI/components/models/model-management.component.js.map +1 -1
  27. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  28. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
  29. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  30. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
  31. package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
  32. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  33. package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
  34. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  35. package/dist/AI/components/prompts/prompt-management.component.js +34 -32
  36. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  37. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  38. package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
  39. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  40. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
  41. package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
  42. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  43. package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
  44. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  45. package/dist/AI/components/system/system-configuration.component.js +26 -27
  46. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  47. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  48. package/dist/AI/components/widgets/kpi-card.component.js +52 -42
  49. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  50. package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
  51. package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
  52. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  53. package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
  54. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  55. package/dist/APIKeys/api-applications-panel.component.js +193 -189
  56. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  57. package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
  58. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  59. package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
  60. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  61. package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
  62. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  63. package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
  64. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  65. package/dist/APIKeys/api-key-list.component.d.ts +0 -2
  66. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  67. package/dist/APIKeys/api-key-list.component.js +113 -114
  68. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  69. package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
  70. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  71. package/dist/APIKeys/api-keys-resource.component.js +294 -302
  72. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  73. package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
  74. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  75. package/dist/APIKeys/api-scopes-panel.component.js +151 -155
  76. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  77. package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
  78. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  79. package/dist/APIKeys/api-usage-panel.component.js +237 -234
  80. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  81. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  82. package/dist/Actions/components/actions-list-view.component.js +15 -14
  83. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  84. package/dist/Actions/components/actions-overview.component.d.ts +3 -6
  85. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  86. package/dist/Actions/components/actions-overview.component.js +17 -19
  87. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  88. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  89. package/dist/Actions/components/categories-list-view.component.js +6 -6
  90. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  91. package/dist/Actions/components/code-management.component.d.ts +0 -4
  92. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  93. package/dist/Actions/components/code-management.component.js +3 -9
  94. package/dist/Actions/components/code-management.component.js.map +1 -1
  95. package/dist/Actions/components/entity-integration.component.d.ts +0 -4
  96. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  97. package/dist/Actions/components/entity-integration.component.js +3 -9
  98. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  99. package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
  100. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  101. package/dist/Actions/components/execution-monitoring.component.js +13 -16
  102. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  103. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
  104. package/dist/Actions/components/executions-list-view.component.js +3 -3
  105. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  106. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
  107. package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
  108. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  109. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  110. package/dist/Actions/components/explorer/action-card.component.js +11 -10
  111. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  112. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
  113. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  114. package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
  115. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  116. package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
  117. package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
  118. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
  120. package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
  121. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  122. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
  123. package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
  124. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  125. package/dist/Actions/components/explorer/index.d.ts +0 -1
  126. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  127. package/dist/Actions/components/explorer/index.js +0 -4
  128. package/dist/Actions/components/explorer/index.js.map +1 -1
  129. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  130. package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
  131. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  132. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  133. package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
  134. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  135. package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
  136. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  137. package/dist/Actions/components/scheduled-actions.component.js +3 -9
  138. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  139. package/dist/Actions/components/security-permissions.component.d.ts +0 -4
  140. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  141. package/dist/Actions/components/security-permissions.component.js +3 -9
  142. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  143. package/dist/Actions/index.d.ts +0 -7
  144. package/dist/Actions/index.d.ts.map +1 -1
  145. package/dist/Actions/index.js +0 -8
  146. package/dist/Actions/index.js.map +1 -1
  147. package/dist/Communication/communication-dashboard.component.d.ts +0 -1
  148. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  149. package/dist/Communication/communication-dashboard.component.js +38 -51
  150. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  151. package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
  152. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  153. package/dist/Communication/communication-logs-resource.component.js +112 -108
  154. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  155. package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
  156. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  157. package/dist/Communication/communication-monitor-resource.component.js +210 -201
  158. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  159. package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
  160. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  161. package/dist/Communication/communication-providers-resource.component.js +136 -124
  162. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  163. package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
  164. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  165. package/dist/Communication/communication-runs-resource.component.js +91 -88
  166. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
  168. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-templates-resource.component.js +139 -122
  170. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  171. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
  172. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  173. package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
  174. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  175. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  176. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
  177. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  178. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  179. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
  180. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  181. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  182. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
  183. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  184. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
  185. package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
  186. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  187. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
  188. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
  189. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  190. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  191. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
  192. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  193. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
  194. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
  195. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  196. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
  197. package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
  198. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  199. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
  200. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
  201. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  202. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  203. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
  204. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  205. package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
  206. package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
  207. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  208. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  209. package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
  210. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  211. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  212. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
  213. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  214. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
  215. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  216. package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
  217. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  218. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
  219. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  220. package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
  221. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  222. package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
  223. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  224. package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
  225. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  226. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
  227. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  228. package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
  229. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  230. package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
  231. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  232. package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
  233. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  234. package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
  235. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  236. package/dist/Credentials/credentials-dashboard.component.js +31 -44
  237. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  238. package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
  239. package/dist/Credentials/pipes/group-by.pipe.js +2 -1
  240. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  241. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
  242. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  243. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
  244. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  245. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  246. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
  247. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  248. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
  249. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
  250. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  251. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  252. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
  253. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  254. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  255. package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
  256. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  257. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +2 -4
  258. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  259. package/dist/DataExplorer/data-explorer-dashboard.component.js +83 -64
  260. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  261. package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
  262. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  263. package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
  264. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  265. package/dist/DataExplorer/index.d.ts +2 -2
  266. package/dist/DataExplorer/index.d.ts.map +1 -1
  267. package/dist/DataExplorer/index.js +2 -2
  268. package/dist/DataExplorer/index.js.map +1 -1
  269. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
  270. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  271. package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
  272. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  273. package/dist/Home/home-application.d.ts +109 -27
  274. package/dist/Home/home-application.d.ts.map +1 -1
  275. package/dist/Home/home-application.js +351 -75
  276. package/dist/Home/home-application.js.map +1 -1
  277. package/dist/Home/home-dashboard.component.d.ts +48 -12
  278. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  279. package/dist/Home/home-dashboard.component.js +267 -187
  280. package/dist/Home/home-dashboard.component.js.map +1 -1
  281. package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
  282. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  283. package/dist/Lists/components/lists-browse-resource.component.js +761 -685
  284. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  285. package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
  286. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  287. package/dist/Lists/components/lists-categories-resource.component.js +340 -316
  288. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  289. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
  290. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  291. package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
  292. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  293. package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
  294. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  295. package/dist/Lists/components/lists-operations-resource.component.js +508 -455
  296. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  297. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  298. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
  299. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  300. package/dist/Lists/index.d.ts +0 -1
  301. package/dist/Lists/index.d.ts.map +1 -1
  302. package/dist/Lists/index.js +0 -11
  303. package/dist/Lists/index.js.map +1 -1
  304. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
  305. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  306. package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
  307. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  308. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
  309. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
  310. package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
  311. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  312. package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
  313. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  314. package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
  315. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  316. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
  317. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
  318. package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
  319. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  320. package/dist/MCP/index.d.ts +5 -5
  321. package/dist/MCP/index.d.ts.map +1 -1
  322. package/dist/MCP/index.js +5 -5
  323. package/dist/MCP/index.js.map +1 -1
  324. package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
  325. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  326. package/dist/MCP/mcp-dashboard.component.js +976 -697
  327. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  328. package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
  329. package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
  330. package/dist/MCP/mcp-filter-panel.component.js +288 -0
  331. package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
  332. package/dist/MCP/mcp-resource.component.d.ts +11 -5
  333. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  334. package/dist/MCP/mcp-resource.component.js +8 -9
  335. package/dist/MCP/mcp-resource.component.js.map +1 -1
  336. package/dist/MCP/mcp.module.d.ts +16 -19
  337. package/dist/MCP/mcp.module.d.ts.map +1 -1
  338. package/dist/MCP/mcp.module.js +17 -26
  339. package/dist/MCP/mcp.module.js.map +1 -1
  340. package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
  341. package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
  342. package/dist/MCP/services/mcp-tools.service.js +5 -6
  343. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  344. package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
  345. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  346. package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
  347. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  348. package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
  349. package/dist/Scheduling/components/job-slideout.component.js +117 -116
  350. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  351. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
  352. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  353. package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
  354. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  355. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  356. package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
  357. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  358. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
  359. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  360. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
  361. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  362. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  363. package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
  364. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  365. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
  366. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  367. package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
  368. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  369. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  370. package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
  371. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  372. package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
  373. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  374. package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
  375. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  376. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
  377. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  378. package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
  379. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  380. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  381. package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
  382. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  383. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  384. package/dist/Testing/components/testing-analytics.component.js +30 -30
  385. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  386. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  387. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
  388. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  389. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  390. package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
  391. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  392. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  393. package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
  394. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  395. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  396. package/dist/Testing/components/testing-explorer.component.js +42 -35
  397. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  398. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  399. package/dist/Testing/components/testing-review-resource.component.js +3 -3
  400. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  401. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  402. package/dist/Testing/components/testing-review.component.js +16 -16
  403. package/dist/Testing/components/testing-review.component.js.map +1 -1
  404. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  405. package/dist/Testing/components/testing-runs-resource.component.js +3 -3
  406. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  407. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  408. package/dist/Testing/components/testing-runs.component.js +15 -15
  409. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  410. package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
  411. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
  412. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  413. package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
  414. package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
  415. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  416. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
  417. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
  418. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  419. package/dist/Testing/testing-dashboard.component.d.ts +0 -1
  420. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  421. package/dist/Testing/testing-dashboard.component.js +9 -8
  422. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  423. package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
  424. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
  425. package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
  426. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
  427. package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
  428. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
  429. package/dist/VersionHistory/components/graph-resource.component.js +521 -0
  430. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
  431. package/dist/VersionHistory/components/index.d.ts +5 -0
  432. package/dist/VersionHistory/components/index.d.ts.map +1 -0
  433. package/dist/VersionHistory/components/index.js +5 -0
  434. package/dist/VersionHistory/components/index.js.map +1 -0
  435. package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
  436. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
  437. package/dist/VersionHistory/components/labels-resource.component.js +968 -0
  438. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
  439. package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
  440. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
  441. package/dist/VersionHistory/components/restore-resource.component.js +472 -0
  442. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
  443. package/dist/VersionHistory/index.d.ts +2 -0
  444. package/dist/VersionHistory/index.d.ts.map +1 -0
  445. package/dist/VersionHistory/index.js +2 -0
  446. package/dist/VersionHistory/index.js.map +1 -0
  447. package/dist/module.d.ts +42 -36
  448. package/dist/module.d.ts.map +1 -1
  449. package/dist/module.js +41 -7
  450. package/dist/module.js.map +1 -1
  451. package/dist/public-api.d.ts +20 -19
  452. package/dist/public-api.d.ts.map +1 -1
  453. package/dist/public-api.js +22 -120
  454. package/dist/public-api.js.map +1 -1
  455. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
  456. package/dist/shared/pipes/highlight-search.pipe.js +2 -1
  457. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  458. package/package.json +64 -62
@@ -12,14 +12,14 @@ import * as i0 from "@angular/core";
12
12
  import * as i1 from "@angular/common";
13
13
  import * as i2 from "@angular/forms";
14
14
  import * as i3 from "@memberjunction/ng-shared-generic";
15
- function CredentialsAuditResourceComponent_mj_loading_1_Template(rf, ctx) { if (rf & 1) {
16
- i0.ɵɵelement(0, "mj-loading", 3);
15
+ function CredentialsAuditResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
16
+ i0.ɵɵelement(0, "mj-loading", 1);
17
17
  } }
18
- function CredentialsAuditResourceComponent_ng_container_2_div_49_div_7_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "div", 65)(1, "div", 66);
20
- i0.ɵɵelement(2, "div", 67)(3, "div", 68);
18
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_48_For_8_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "div", 57)(1, "div", 62);
20
+ i0.ɵɵelement(2, "div", 63)(3, "div", 64);
21
21
  i0.ɵɵelementEnd();
22
- i0.ɵɵelementStart(4, "span", 69);
22
+ i0.ɵɵelementStart(4, "span", 65);
23
23
  i0.ɵɵtext(5);
24
24
  i0.ɵɵelementEnd()();
25
25
  } if (rf & 2) {
@@ -33,36 +33,36 @@ function CredentialsAuditResourceComponent_ng_container_2_div_49_div_7_Template(
33
33
  i0.ɵɵadvance(2);
34
34
  i0.ɵɵtextInterpolate(data_r3.hour.split(":")[0]);
35
35
  } }
36
- function CredentialsAuditResourceComponent_ng_container_2_div_49_Template(rf, ctx) { if (rf & 1) {
37
- i0.ɵɵelementStart(0, "div", 55)(1, "div", 56)(2, "h3");
38
- i0.ɵɵelement(3, "i", 57);
36
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_48_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelementStart(0, "div", 27)(1, "div", 53)(2, "h3");
38
+ i0.ɵɵelement(3, "i", 54);
39
39
  i0.ɵɵtext(4, " Today's Activity ");
40
40
  i0.ɵɵelementEnd()();
41
- i0.ɵɵelementStart(5, "div", 58)(6, "div", 59);
42
- i0.ɵɵtemplate(7, CredentialsAuditResourceComponent_ng_container_2_div_49_div_7_Template, 6, 6, "div", 60);
41
+ i0.ɵɵelementStart(5, "div", 55)(6, "div", 56);
42
+ i0.ɵɵrepeaterCreate(7, CredentialsAuditResourceComponent_Conditional_2_Conditional_48_For_8_Template, 6, 6, "div", 57, i0.ɵɵrepeaterTrackByIdentity);
43
43
  i0.ɵɵelementEnd()();
44
- i0.ɵɵelementStart(8, "div", 61)(9, "span", 62);
45
- i0.ɵɵelement(10, "span", 63);
46
- i0.ɵɵtext(11, " Success ");
44
+ i0.ɵɵelementStart(9, "div", 58)(10, "span", 59);
45
+ i0.ɵɵelement(11, "span", 60);
46
+ i0.ɵɵtext(12, " Success ");
47
47
  i0.ɵɵelementEnd();
48
- i0.ɵɵelementStart(12, "span", 62);
49
- i0.ɵɵelement(13, "span", 64);
50
- i0.ɵɵtext(14, " Failed ");
48
+ i0.ɵɵelementStart(13, "span", 59);
49
+ i0.ɵɵelement(14, "span", 61);
50
+ i0.ɵɵtext(15, " Failed ");
51
51
  i0.ɵɵelementEnd()()();
52
52
  } if (rf & 2) {
53
53
  const ctx_r1 = i0.ɵɵnextContext(2);
54
54
  i0.ɵɵadvance(7);
55
- i0.ɵɵproperty("ngForOf", ctx_r1.hourlyData);
55
+ i0.ɵɵrepeater(ctx_r1.hourlyData);
56
56
  } }
57
- function CredentialsAuditResourceComponent_ng_container_2_button_55_Template(rf, ctx) { if (rf & 1) {
57
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_54_Template(rf, ctx) { if (rf & 1) {
58
58
  const _r4 = i0.ɵɵgetCurrentView();
59
- i0.ɵɵelementStart(0, "button", 70);
60
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_button_55_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
61
- i0.ɵɵelement(1, "i", 71);
59
+ i0.ɵɵelementStart(0, "button", 66);
60
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Conditional_54_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.clearSearch()); });
61
+ i0.ɵɵelement(1, "i", 67);
62
62
  i0.ɵɵelementEnd();
63
63
  } }
64
- function CredentialsAuditResourceComponent_ng_container_2_option_66_Template(rf, ctx) { if (rf & 1) {
65
- i0.ɵɵelementStart(0, "option", 72);
64
+ function CredentialsAuditResourceComponent_Conditional_2_For_66_Template(rf, ctx) { if (rf & 1) {
65
+ i0.ɵɵelementStart(0, "option", 38);
66
66
  i0.ɵɵtext(1);
67
67
  i0.ɵɵelementEnd();
68
68
  } if (rf & 2) {
@@ -71,8 +71,8 @@ function CredentialsAuditResourceComponent_ng_container_2_option_66_Template(rf,
71
71
  i0.ɵɵadvance();
72
72
  i0.ɵɵtextInterpolate(op_r5);
73
73
  } }
74
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_15_Template(rf, ctx) { if (rf & 1) {
75
- i0.ɵɵelementStart(0, "div", 99);
74
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_15_Template(rf, ctx) { if (rf & 1) {
75
+ i0.ɵɵelementStart(0, "div", 85);
76
76
  i0.ɵɵtext(1);
77
77
  i0.ɵɵelementEnd();
78
78
  } if (rf & 2) {
@@ -80,8 +80,8 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div
80
80
  i0.ɵɵadvance();
81
81
  i0.ɵɵtextInterpolate1(" ", log_r7.Description, " ");
82
82
  } }
83
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_span_20_Template(rf, ctx) { if (rf & 1) {
84
- i0.ɵɵelementStart(0, "span", 100);
83
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_20_Template(rf, ctx) { if (rf & 1) {
84
+ i0.ɵɵelementStart(0, "span", 88);
85
85
  i0.ɵɵtext(1);
86
86
  i0.ɵɵelementEnd();
87
87
  } if (rf & 2) {
@@ -90,9 +90,9 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_spa
90
90
  i0.ɵɵadvance();
91
91
  i0.ɵɵtextInterpolate1(" ", ctx_r1.getSubsystem(log_r7), " ");
92
92
  } }
93
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_span_21_Template(rf, ctx) { if (rf & 1) {
94
- i0.ɵɵelementStart(0, "span", 101);
95
- i0.ɵɵelement(1, "i", 102);
93
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_21_Template(rf, ctx) { if (rf & 1) {
94
+ i0.ɵɵelementStart(0, "span", 89);
95
+ i0.ɵɵelement(1, "i", 92);
96
96
  i0.ɵɵtext(2);
97
97
  i0.ɵɵelementEnd();
98
98
  } if (rf & 2) {
@@ -100,11 +100,11 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_spa
100
100
  i0.ɵɵadvance(2);
101
101
  i0.ɵɵtextInterpolate1(" ", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.credentialType, " ");
102
102
  } }
103
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_2_Template(rf, ctx) { if (rf & 1) {
104
- i0.ɵɵelementStart(0, "div", 107)(1, "span", 108);
103
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_2_Template(rf, ctx) { if (rf & 1) {
104
+ i0.ɵɵelementStart(0, "div", 94)(1, "span", 96);
105
105
  i0.ɵɵtext(2, "IP Address");
106
106
  i0.ɵɵelementEnd();
107
- i0.ɵɵelementStart(3, "span", 109);
107
+ i0.ɵɵelementStart(3, "span", 97);
108
108
  i0.ɵɵtext(4);
109
109
  i0.ɵɵelementEnd()();
110
110
  } if (rf & 2) {
@@ -112,11 +112,11 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div
112
112
  i0.ɵɵadvance(4);
113
113
  i0.ɵɵtextInterpolate(log_r7.parsedDetails == null ? null : log_r7.parsedDetails.ipAddress);
114
114
  } }
115
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_3_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 107)(1, "span", 108);
115
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_3_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelementStart(0, "div", 94)(1, "span", 96);
117
117
  i0.ɵɵtext(2, "Duration");
118
118
  i0.ɵɵelementEnd();
119
- i0.ɵɵelementStart(3, "span", 109);
119
+ i0.ɵɵelementStart(3, "span", 97);
120
120
  i0.ɵɵtext(4);
121
121
  i0.ɵɵelementEnd()();
122
122
  } if (rf & 2) {
@@ -125,11 +125,11 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div
125
125
  i0.ɵɵadvance(4);
126
126
  i0.ɵɵtextInterpolate(ctx_r1.formatDuration(log_r7.parsedDetails == null ? null : log_r7.parsedDetails.duration));
127
127
  } }
128
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_4_Template(rf, ctx) { if (rf & 1) {
129
- i0.ɵɵelementStart(0, "div", 107)(1, "span", 108);
128
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_4_Template(rf, ctx) { if (rf & 1) {
129
+ i0.ɵɵelementStart(0, "div", 94)(1, "span", 96);
130
130
  i0.ɵɵtext(2, "Credential ID");
131
131
  i0.ɵɵelementEnd();
132
- i0.ɵɵelementStart(3, "span", 110);
132
+ i0.ɵɵelementStart(3, "span", 98);
133
133
  i0.ɵɵtext(4);
134
134
  i0.ɵɵelementEnd()();
135
135
  } if (rf & 2) {
@@ -137,11 +137,11 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div
137
137
  i0.ɵɵadvance(4);
138
138
  i0.ɵɵtextInterpolate(log_r7.parsedDetails == null ? null : log_r7.parsedDetails.credentialId);
139
139
  } }
140
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_5_Template(rf, ctx) { if (rf & 1) {
141
- i0.ɵɵelementStart(0, "div", 111)(1, "span", 108);
140
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_5_Template(rf, ctx) { if (rf & 1) {
141
+ i0.ɵɵelementStart(0, "div", 95)(1, "span", 96);
142
142
  i0.ɵɵtext(2, "Error Message");
143
143
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(3, "span", 112);
144
+ i0.ɵɵelementStart(3, "span", 99);
145
145
  i0.ɵɵtext(4);
146
146
  i0.ɵɵelementEnd()();
147
147
  } if (rf & 2) {
@@ -149,11 +149,11 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div
149
149
  i0.ɵɵadvance(4);
150
150
  i0.ɵɵtextInterpolate(log_r7.parsedDetails == null ? null : log_r7.parsedDetails.errorMessage);
151
151
  } }
152
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_6_Template(rf, ctx) { if (rf & 1) {
153
- i0.ɵɵelementStart(0, "div", 111)(1, "span", 108);
152
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_6_Template(rf, ctx) { if (rf & 1) {
153
+ i0.ɵɵelementStart(0, "div", 95)(1, "span", 96);
154
154
  i0.ɵɵtext(2, "User Agent");
155
155
  i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(3, "span", 113);
156
+ i0.ɵɵelementStart(3, "span", 100);
157
157
  i0.ɵɵtext(4);
158
158
  i0.ɵɵelementEnd()();
159
159
  } if (rf & 2) {
@@ -161,51 +161,56 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div
161
161
  i0.ɵɵadvance(4);
162
162
  i0.ɵɵtextInterpolate(log_r7.parsedDetails == null ? null : log_r7.parsedDetails.userAgent);
163
163
  } }
164
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_Template(rf, ctx) { if (rf & 1) {
165
- i0.ɵɵelementStart(0, "div", 103)(1, "div", 104);
166
- i0.ɵɵtemplate(2, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_2_Template, 5, 1, "div", 105)(3, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_3_Template, 5, 1, "div", 105)(4, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_4_Template, 5, 1, "div", 105)(5, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_5_Template, 5, 1, "div", 106)(6, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_div_6_Template, 5, 1, "div", 106);
164
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵelementStart(0, "div", 90)(1, "div", 93);
166
+ i0.ɵɵconditionalCreate(2, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_2_Template, 5, 1, "div", 94);
167
+ i0.ɵɵconditionalCreate(3, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_3_Template, 5, 1, "div", 94);
168
+ i0.ɵɵconditionalCreate(4, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_4_Template, 5, 1, "div", 94);
169
+ i0.ɵɵconditionalCreate(5, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_5_Template, 5, 1, "div", 95);
170
+ i0.ɵɵconditionalCreate(6, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Conditional_6_Template, 5, 1, "div", 95);
167
171
  i0.ɵɵelementEnd()();
168
172
  } if (rf & 2) {
169
173
  const log_r7 = i0.ɵɵnextContext().$implicit;
170
174
  i0.ɵɵadvance(2);
171
- i0.ɵɵproperty("ngIf", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.ipAddress);
175
+ i0.ɵɵconditional((log_r7.parsedDetails == null ? null : log_r7.parsedDetails.ipAddress) ? 2 : -1);
172
176
  i0.ɵɵadvance();
173
- i0.ɵɵproperty("ngIf", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.duration);
177
+ i0.ɵɵconditional((log_r7.parsedDetails == null ? null : log_r7.parsedDetails.duration) ? 3 : -1);
174
178
  i0.ɵɵadvance();
175
- i0.ɵɵproperty("ngIf", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.credentialId);
179
+ i0.ɵɵconditional((log_r7.parsedDetails == null ? null : log_r7.parsedDetails.credentialId) ? 4 : -1);
176
180
  i0.ɵɵadvance();
177
- i0.ɵɵproperty("ngIf", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.errorMessage);
181
+ i0.ɵɵconditional((log_r7.parsedDetails == null ? null : log_r7.parsedDetails.errorMessage) ? 5 : -1);
178
182
  i0.ɵɵadvance();
179
- i0.ɵɵproperty("ngIf", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.userAgent);
183
+ i0.ɵɵconditional((log_r7.parsedDetails == null ? null : log_r7.parsedDetails.userAgent) ? 6 : -1);
180
184
  } }
181
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_Template(rf, ctx) { if (rf & 1) {
185
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Template(rf, ctx) { if (rf & 1) {
182
186
  const _r6 = i0.ɵɵgetCurrentView();
183
- i0.ɵɵelementStart(0, "div", 81)(1, "div", 82);
184
- i0.ɵɵelement(2, "div", 83);
187
+ i0.ɵɵelementStart(0, "div", 74)(1, "div", 75);
188
+ i0.ɵɵelement(2, "div", 76);
185
189
  i0.ɵɵelementEnd();
186
- i0.ɵɵelementStart(3, "div", 84);
187
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_Template_div_click_3_listener() { const log_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleLogExpand(log_r7.ID)); });
188
- i0.ɵɵelementStart(4, "div", 85)(5, "div", 86);
190
+ i0.ɵɵelementStart(3, "div", 77);
191
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Template_div_click_3_listener() { const log_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleLogExpand(log_r7.ID)); });
192
+ i0.ɵɵelementStart(4, "div", 78)(5, "div", 79);
189
193
  i0.ɵɵelement(6, "i");
190
- i0.ɵɵelementStart(7, "span", 87);
194
+ i0.ɵɵelementStart(7, "span", 80);
191
195
  i0.ɵɵtext(8);
192
196
  i0.ɵɵelementEnd()();
193
- i0.ɵɵelementStart(9, "div", 88);
197
+ i0.ɵɵelementStart(9, "div", 81);
194
198
  i0.ɵɵtext(10);
195
199
  i0.ɵɵelementEnd()();
196
- i0.ɵɵelementStart(11, "div", 89)(12, "div", 90);
197
- i0.ɵɵelement(13, "i", 91);
200
+ i0.ɵɵelementStart(11, "div", 82)(12, "div", 83);
201
+ i0.ɵɵelement(13, "i", 84);
198
202
  i0.ɵɵtext(14);
199
203
  i0.ɵɵelementEnd();
200
- i0.ɵɵtemplate(15, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_15_Template, 2, 1, "div", 92);
201
- i0.ɵɵelementStart(16, "div", 93)(17, "span", 94);
204
+ i0.ɵɵconditionalCreate(15, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_15_Template, 2, 1, "div", 85);
205
+ i0.ɵɵelementStart(16, "div", 86)(17, "span", 87);
202
206
  i0.ɵɵelement(18, "i");
203
207
  i0.ɵɵtext(19);
204
208
  i0.ɵɵelementEnd();
205
- i0.ɵɵtemplate(20, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_span_20_Template, 2, 1, "span", 95)(21, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_span_21_Template, 3, 1, "span", 96);
209
+ i0.ɵɵconditionalCreate(20, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_20_Template, 2, 1, "span", 88);
210
+ i0.ɵɵconditionalCreate(21, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_21_Template, 3, 1, "span", 89);
206
211
  i0.ɵɵelementEnd()();
207
- i0.ɵɵtemplate(22, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_div_22_Template, 7, 5, "div", 97);
208
- i0.ɵɵelementStart(23, "button", 98);
212
+ i0.ɵɵconditionalCreate(22, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Conditional_22_Template, 7, 5, "div", 90);
213
+ i0.ɵɵelementStart(23, "button", 91);
209
214
  i0.ɵɵelement(24, "i");
210
215
  i0.ɵɵelementEnd()()();
211
216
  } if (rf & 2) {
@@ -224,7 +229,7 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_Tem
224
229
  i0.ɵɵadvance(4);
225
230
  i0.ɵɵtextInterpolate1(" ", log_r7.User || "Unknown", " ");
226
231
  i0.ɵɵadvance();
227
- i0.ɵɵproperty("ngIf", log_r7.Description);
232
+ i0.ɵɵconditional(log_r7.Description ? 15 : -1);
228
233
  i0.ɵɵadvance(2);
229
234
  i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass(log_r7.Status));
230
235
  i0.ɵɵadvance();
@@ -232,23 +237,23 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_Tem
232
237
  i0.ɵɵadvance();
233
238
  i0.ɵɵtextInterpolate1(" ", log_r7.Status, " ");
234
239
  i0.ɵɵadvance();
235
- i0.ɵɵproperty("ngIf", ctx_r1.getSubsystem(log_r7));
240
+ i0.ɵɵconditional(ctx_r1.getSubsystem(log_r7) ? 20 : -1);
236
241
  i0.ɵɵadvance();
237
- i0.ɵɵproperty("ngIf", log_r7.parsedDetails == null ? null : log_r7.parsedDetails.credentialType);
242
+ i0.ɵɵconditional((log_r7.parsedDetails == null ? null : log_r7.parsedDetails.credentialType) ? 21 : -1);
238
243
  i0.ɵɵadvance();
239
- i0.ɵɵproperty("ngIf", ctx_r1.expandedLogId === log_r7.ID);
244
+ i0.ɵɵconditional(ctx_r1.expandedLogId === log_r7.ID ? 22 : -1);
240
245
  i0.ɵɵadvance(2);
241
246
  i0.ɵɵclassMap(ctx_r1.expandedLogId === log_r7.ID ? "fa-solid fa-chevron-up" : "fa-solid fa-chevron-down");
242
247
  } }
243
- function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_Template(rf, ctx) { if (rf & 1) {
244
- i0.ɵɵelementStart(0, "div", 75)(1, "div", 76)(2, "span", 77);
248
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_Template(rf, ctx) { if (rf & 1) {
249
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 69)(2, "span", 70);
245
250
  i0.ɵɵtext(3);
246
251
  i0.ɵɵelementEnd();
247
- i0.ɵɵelementStart(4, "span", 78);
252
+ i0.ɵɵelementStart(4, "span", 71);
248
253
  i0.ɵɵtext(5);
249
254
  i0.ɵɵelementEnd()();
250
- i0.ɵɵelementStart(6, "div", 79);
251
- i0.ɵɵtemplate(7, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_div_7_Template, 25, 23, "div", 80);
255
+ i0.ɵɵelementStart(6, "div", 72);
256
+ i0.ɵɵrepeaterCreate(7, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_For_8_Template, 25, 23, "div", 73, i0.ɵɵrepeaterTrackByIdentity);
252
257
  i0.ɵɵelementEnd()();
253
258
  } if (rf & 2) {
254
259
  const group_r8 = ctx.$implicit;
@@ -257,35 +262,35 @@ function CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_Template(
257
262
  i0.ɵɵadvance(2);
258
263
  i0.ɵɵtextInterpolate1("", group_r8.logs.length, " events");
259
264
  i0.ɵɵadvance(2);
260
- i0.ɵɵproperty("ngForOf", group_r8.logs);
265
+ i0.ɵɵrepeater(group_r8.logs);
261
266
  } }
262
- function CredentialsAuditResourceComponent_ng_container_2_div_84_Template(rf, ctx) { if (rf & 1) {
263
- i0.ɵɵelementStart(0, "div", 73);
264
- i0.ɵɵtemplate(1, CredentialsAuditResourceComponent_ng_container_2_div_84_div_1_Template, 8, 3, "div", 74);
267
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_84_Template(rf, ctx) { if (rf & 1) {
268
+ i0.ɵɵelementStart(0, "div", 50);
269
+ i0.ɵɵrepeaterCreate(1, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_For_2_Template, 9, 2, "div", 68, i0.ɵɵrepeaterTrackByIdentity);
265
270
  i0.ɵɵelementEnd();
266
271
  } if (rf & 2) {
267
272
  const ctx_r1 = i0.ɵɵnextContext(2);
268
273
  i0.ɵɵadvance();
269
- i0.ɵɵproperty("ngForOf", ctx_r1.timelineGroups);
274
+ i0.ɵɵrepeater(ctx_r1.timelineGroups);
270
275
  } }
271
- function CredentialsAuditResourceComponent_ng_container_2_div_85_tr_17_Template(rf, ctx) { if (rf & 1) {
272
- i0.ɵɵelementStart(0, "tr")(1, "td", 117);
276
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_85_For_18_Template(rf, ctx) { if (rf & 1) {
277
+ i0.ɵɵelementStart(0, "tr")(1, "td", 103);
273
278
  i0.ɵɵtext(2);
274
279
  i0.ɵɵelementEnd();
275
- i0.ɵɵelementStart(3, "td", 118);
280
+ i0.ɵɵelementStart(3, "td", 104);
276
281
  i0.ɵɵtext(4);
277
282
  i0.ɵɵelementEnd();
278
- i0.ɵɵelementStart(5, "td", 119)(6, "span", 120);
283
+ i0.ɵɵelementStart(5, "td", 105)(6, "span", 106);
279
284
  i0.ɵɵelement(7, "i");
280
285
  i0.ɵɵtext(8);
281
286
  i0.ɵɵelementEnd()();
282
- i0.ɵɵelementStart(9, "td", 121);
287
+ i0.ɵɵelementStart(9, "td", 107);
283
288
  i0.ɵɵtext(10);
284
289
  i0.ɵɵelementEnd();
285
- i0.ɵɵelementStart(11, "td", 122);
290
+ i0.ɵɵelementStart(11, "td", 108);
286
291
  i0.ɵɵtext(12);
287
292
  i0.ɵɵelementEnd();
288
- i0.ɵɵelementStart(13, "td", 123)(14, "span", 94);
293
+ i0.ɵɵelementStart(13, "td", 109)(14, "span", 87);
289
294
  i0.ɵɵelement(15, "i");
290
295
  i0.ɵɵtext(16);
291
296
  i0.ɵɵelementEnd()()();
@@ -314,8 +319,8 @@ function CredentialsAuditResourceComponent_ng_container_2_div_85_tr_17_Template(
314
319
  i0.ɵɵadvance();
315
320
  i0.ɵɵtextInterpolate1(" ", log_r9.Status, " ");
316
321
  } }
317
- function CredentialsAuditResourceComponent_ng_container_2_div_85_Template(rf, ctx) { if (rf & 1) {
318
- i0.ɵɵelementStart(0, "div", 114)(1, "table", 115)(2, "thead")(3, "tr")(4, "th");
322
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_85_Template(rf, ctx) { if (rf & 1) {
323
+ i0.ɵɵelementStart(0, "div", 51)(1, "table", 101)(2, "thead")(3, "tr")(4, "th");
319
324
  i0.ɵɵtext(5, "Timestamp");
320
325
  i0.ɵɵelementEnd();
321
326
  i0.ɵɵelementStart(6, "th");
@@ -334,157 +339,158 @@ function CredentialsAuditResourceComponent_ng_container_2_div_85_Template(rf, ct
334
339
  i0.ɵɵtext(15, "Status");
335
340
  i0.ɵɵelementEnd()()();
336
341
  i0.ɵɵelementStart(16, "tbody");
337
- i0.ɵɵtemplate(17, CredentialsAuditResourceComponent_ng_container_2_div_85_tr_17_Template, 17, 17, "tr", 116);
342
+ i0.ɵɵrepeaterCreate(17, CredentialsAuditResourceComponent_Conditional_2_Conditional_85_For_18_Template, 17, 17, "tr", 102, i0.ɵɵrepeaterTrackByIdentity);
338
343
  i0.ɵɵelementEnd()()();
339
344
  } if (rf & 2) {
340
345
  const ctx_r1 = i0.ɵɵnextContext(2);
341
346
  i0.ɵɵadvance(17);
342
- i0.ɵɵproperty("ngForOf", ctx_r1.filteredLogs);
347
+ i0.ɵɵrepeater(ctx_r1.filteredLogs);
343
348
  } }
344
- function CredentialsAuditResourceComponent_ng_container_2_div_86_p_5_Template(rf, ctx) { if (rf & 1) {
349
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Conditional_5_Template(rf, ctx) { if (rf & 1) {
345
350
  const _r10 = i0.ɵɵgetCurrentView();
346
351
  i0.ɵɵelementStart(0, "p");
347
352
  i0.ɵɵtext(1, " No events match your current filters. ");
348
- i0.ɵɵelementStart(2, "button", 126);
349
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_div_86_p_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.searchText = ""; ctx_r1.selectedStatus = ""; ctx_r1.selectedOperation = ""; return i0.ɵɵresetView(ctx_r1.applyFilters()); });
353
+ i0.ɵɵelementStart(2, "button", 111);
354
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r1 = i0.ɵɵnextContext(3); ctx_r1.searchText = ""; ctx_r1.selectedStatus = ""; ctx_r1.selectedOperation = ""; return i0.ɵɵresetView(ctx_r1.applyFilters()); });
350
355
  i0.ɵɵtext(3, "Clear filters");
351
356
  i0.ɵɵelementEnd()();
352
357
  } }
353
- function CredentialsAuditResourceComponent_ng_container_2_div_86_p_6_Template(rf, ctx) { if (rf & 1) {
358
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Conditional_6_Template(rf, ctx) { if (rf & 1) {
354
359
  i0.ɵɵelementStart(0, "p");
355
360
  i0.ɵɵtext(1, " No credential access events in the selected time range. ");
356
361
  i0.ɵɵelementEnd();
357
362
  } }
358
- function CredentialsAuditResourceComponent_ng_container_2_div_86_Template(rf, ctx) { if (rf & 1) {
359
- i0.ɵɵelementStart(0, "div", 124)(1, "div", 125);
360
- i0.ɵɵelement(2, "i", 16);
363
+ function CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Template(rf, ctx) { if (rf & 1) {
364
+ i0.ɵɵelementStart(0, "div", 52)(1, "div", 110);
365
+ i0.ɵɵelement(2, "i", 14);
361
366
  i0.ɵɵelementEnd();
362
367
  i0.ɵɵelementStart(3, "h3");
363
368
  i0.ɵɵtext(4, "No Audit Logs");
364
369
  i0.ɵɵelementEnd();
365
- i0.ɵɵtemplate(5, CredentialsAuditResourceComponent_ng_container_2_div_86_p_5_Template, 4, 0, "p", 2)(6, CredentialsAuditResourceComponent_ng_container_2_div_86_p_6_Template, 2, 0, "p", 2);
370
+ i0.ɵɵconditionalCreate(5, CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Conditional_5_Template, 4, 0, "p");
371
+ i0.ɵɵconditionalCreate(6, CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Conditional_6_Template, 2, 0, "p");
366
372
  i0.ɵɵelementEnd();
367
373
  } if (rf & 2) {
368
374
  const ctx_r1 = i0.ɵɵnextContext(2);
369
375
  i0.ɵɵadvance(5);
370
- i0.ɵɵproperty("ngIf", ctx_r1.searchText || ctx_r1.selectedStatus || ctx_r1.selectedOperation);
376
+ i0.ɵɵconditional(ctx_r1.searchText || ctx_r1.selectedStatus || ctx_r1.selectedOperation ? 5 : -1);
371
377
  i0.ɵɵadvance();
372
- i0.ɵɵproperty("ngIf", !ctx_r1.searchText && !ctx_r1.selectedStatus && !ctx_r1.selectedOperation);
378
+ i0.ɵɵconditional(!ctx_r1.searchText && !ctx_r1.selectedStatus && !ctx_r1.selectedOperation ? 6 : -1);
373
379
  } }
374
- function CredentialsAuditResourceComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
380
+ function CredentialsAuditResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
375
381
  const _r1 = i0.ɵɵgetCurrentView();
376
- i0.ɵɵelementContainerStart(0);
377
- i0.ɵɵelementStart(1, "div", 4)(2, "div", 5)(3, "h2", 6);
378
- i0.ɵɵtext(4, "Audit Trail");
382
+ i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "h2", 4);
383
+ i0.ɵɵtext(3, "Audit Trail");
379
384
  i0.ɵɵelementEnd();
380
- i0.ɵɵelementStart(5, "p", 7);
381
- i0.ɵɵtext(6, "Credential access and modification history");
385
+ i0.ɵɵelementStart(4, "p", 5);
386
+ i0.ɵɵtext(5, "Credential access and modification history");
382
387
  i0.ɵɵelementEnd()();
383
- i0.ɵɵelementStart(7, "div", 8)(8, "button", 9);
384
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.exportToCSV()); });
385
- i0.ɵɵelement(9, "i", 10);
386
- i0.ɵɵelementStart(10, "span");
387
- i0.ɵɵtext(11, "Export");
388
+ i0.ɵɵelementStart(6, "div", 6)(7, "button", 7);
389
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.exportToCSV()); });
390
+ i0.ɵɵelement(8, "i", 8);
391
+ i0.ɵɵelementStart(9, "span");
392
+ i0.ɵɵtext(10, "Export");
388
393
  i0.ɵɵelementEnd()();
389
- i0.ɵɵelementStart(12, "button", 11);
390
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refresh()); });
391
- i0.ɵɵelement(13, "i", 12);
394
+ i0.ɵɵelementStart(11, "button", 9);
395
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refresh()); });
396
+ i0.ɵɵelement(12, "i", 10);
392
397
  i0.ɵɵelementEnd()()();
393
- i0.ɵɵelementStart(14, "div", 13)(15, "div", 14)(16, "div", 15);
394
- i0.ɵɵelement(17, "i", 16);
398
+ i0.ɵɵelementStart(13, "div", 11)(14, "div", 12)(15, "div", 13);
399
+ i0.ɵɵelement(16, "i", 14);
395
400
  i0.ɵɵelementEnd();
396
- i0.ɵɵelementStart(18, "div", 17)(19, "div", 18);
397
- i0.ɵɵtext(20);
401
+ i0.ɵɵelementStart(17, "div", 15)(18, "div", 16);
402
+ i0.ɵɵtext(19);
398
403
  i0.ɵɵelementEnd();
399
- i0.ɵɵelementStart(21, "div", 19);
400
- i0.ɵɵtext(22, "Total Events");
404
+ i0.ɵɵelementStart(20, "div", 17);
405
+ i0.ɵɵtext(21, "Total Events");
401
406
  i0.ɵɵelementEnd()()();
402
- i0.ɵɵelementStart(23, "div", 14)(24, "div", 20);
403
- i0.ɵɵelement(25, "i", 21);
407
+ i0.ɵɵelementStart(22, "div", 12)(23, "div", 18);
408
+ i0.ɵɵelement(24, "i", 19);
404
409
  i0.ɵɵelementEnd();
405
- i0.ɵɵelementStart(26, "div", 17)(27, "div", 22);
406
- i0.ɵɵtext(28);
410
+ i0.ɵɵelementStart(25, "div", 15)(26, "div", 20);
411
+ i0.ɵɵtext(27);
407
412
  i0.ɵɵelementEnd();
408
- i0.ɵɵelementStart(29, "div", 19);
409
- i0.ɵɵtext(30, "Successful");
413
+ i0.ɵɵelementStart(28, "div", 17);
414
+ i0.ɵɵtext(29, "Successful");
410
415
  i0.ɵɵelementEnd()();
411
- i0.ɵɵelementStart(31, "div", 23);
412
- i0.ɵɵtext(32);
416
+ i0.ɵɵelementStart(30, "div", 21);
417
+ i0.ɵɵtext(31);
413
418
  i0.ɵɵelementEnd()();
414
- i0.ɵɵelementStart(33, "div", 14)(34, "div", 24);
415
- i0.ɵɵelement(35, "i", 25);
419
+ i0.ɵɵelementStart(32, "div", 12)(33, "div", 22);
420
+ i0.ɵɵelement(34, "i", 23);
416
421
  i0.ɵɵelementEnd();
417
- i0.ɵɵelementStart(36, "div", 17)(37, "div", 26);
418
- i0.ɵɵtext(38);
422
+ i0.ɵɵelementStart(35, "div", 15)(36, "div", 24);
423
+ i0.ɵɵtext(37);
419
424
  i0.ɵɵelementEnd();
420
- i0.ɵɵelementStart(39, "div", 19);
421
- i0.ɵɵtext(40, "Failed");
425
+ i0.ɵɵelementStart(38, "div", 17);
426
+ i0.ɵɵtext(39, "Failed");
422
427
  i0.ɵɵelementEnd()()();
423
- i0.ɵɵelementStart(41, "div", 14)(42, "div", 27);
424
- i0.ɵɵelement(43, "i", 28);
428
+ i0.ɵɵelementStart(40, "div", 12)(41, "div", 25);
429
+ i0.ɵɵelement(42, "i", 26);
425
430
  i0.ɵɵelementEnd();
426
- i0.ɵɵelementStart(44, "div", 17)(45, "div", 18);
427
- i0.ɵɵtext(46);
431
+ i0.ɵɵelementStart(43, "div", 15)(44, "div", 16);
432
+ i0.ɵɵtext(45);
428
433
  i0.ɵɵelementEnd();
429
- i0.ɵɵelementStart(47, "div", 19);
430
- i0.ɵɵtext(48, "Unique Users");
434
+ i0.ɵɵelementStart(46, "div", 17);
435
+ i0.ɵɵtext(47, "Unique Users");
431
436
  i0.ɵɵelementEnd()()()();
432
- i0.ɵɵtemplate(49, CredentialsAuditResourceComponent_ng_container_2_div_49_Template, 15, 1, "div", 29);
433
- i0.ɵɵelementStart(50, "div", 30)(51, "div", 31)(52, "div", 32);
434
- i0.ɵɵelement(53, "i", 33);
435
- i0.ɵɵelementStart(54, "input", 34);
436
- i0.ɵɵlistener("input", function CredentialsAuditResourceComponent_ng_container_2_Template_input_input_54_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSearchChange($event.target.value)); });
437
+ i0.ɵɵconditionalCreate(48, CredentialsAuditResourceComponent_Conditional_2_Conditional_48_Template, 16, 0, "div", 27);
438
+ i0.ɵɵelementStart(49, "div", 28)(50, "div", 29)(51, "div", 30);
439
+ i0.ɵɵelement(52, "i", 31);
440
+ i0.ɵɵelementStart(53, "input", 32);
441
+ i0.ɵɵlistener("input", function CredentialsAuditResourceComponent_Conditional_2_Template_input_input_53_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onSearchChange($event.target.value)); });
437
442
  i0.ɵɵelementEnd();
438
- i0.ɵɵtemplate(55, CredentialsAuditResourceComponent_ng_container_2_button_55_Template, 2, 0, "button", 35);
443
+ i0.ɵɵconditionalCreate(54, CredentialsAuditResourceComponent_Conditional_2_Conditional_54_Template, 2, 0, "button", 33);
439
444
  i0.ɵɵelementEnd();
440
- i0.ɵɵelementStart(56, "select", 36);
441
- i0.ɵɵlistener("change", function CredentialsAuditResourceComponent_ng_container_2_Template_select_change_56_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onStatusFilterChange($event.target.value)); });
442
- i0.ɵɵelementStart(57, "option", 37);
443
- i0.ɵɵtext(58, "All Statuses");
445
+ i0.ɵɵelementStart(55, "select", 34);
446
+ i0.ɵɵlistener("change", function CredentialsAuditResourceComponent_Conditional_2_Template_select_change_55_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onStatusFilterChange($event.target.value)); });
447
+ i0.ɵɵelementStart(56, "option", 35);
448
+ i0.ɵɵtext(57, "All Statuses");
444
449
  i0.ɵɵelementEnd();
445
- i0.ɵɵelementStart(59, "option", 38);
446
- i0.ɵɵtext(60, "Success");
450
+ i0.ɵɵelementStart(58, "option", 36);
451
+ i0.ɵɵtext(59, "Success");
447
452
  i0.ɵɵelementEnd();
448
- i0.ɵɵelementStart(61, "option", 39);
449
- i0.ɵɵtext(62, "Failed");
453
+ i0.ɵɵelementStart(60, "option", 37);
454
+ i0.ɵɵtext(61, "Failed");
450
455
  i0.ɵɵelementEnd()();
451
- i0.ɵɵelementStart(63, "select", 36);
452
- i0.ɵɵlistener("change", function CredentialsAuditResourceComponent_ng_container_2_Template_select_change_63_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOperationFilterChange($event.target.value)); });
453
- i0.ɵɵelementStart(64, "option", 37);
454
- i0.ɵɵtext(65, "All Operations");
456
+ i0.ɵɵelementStart(62, "select", 34);
457
+ i0.ɵɵlistener("change", function CredentialsAuditResourceComponent_Conditional_2_Template_select_change_62_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onOperationFilterChange($event.target.value)); });
458
+ i0.ɵɵelementStart(63, "option", 35);
459
+ i0.ɵɵtext(64, "All Operations");
455
460
  i0.ɵɵelementEnd();
456
- i0.ɵɵtemplate(66, CredentialsAuditResourceComponent_ng_container_2_option_66_Template, 2, 2, "option", 40);
461
+ i0.ɵɵrepeaterCreate(65, CredentialsAuditResourceComponent_Conditional_2_For_66_Template, 2, 2, "option", 38, i0.ɵɵrepeaterTrackByIdentity);
457
462
  i0.ɵɵelementEnd();
458
- i0.ɵɵelementStart(67, "select", 36);
459
- i0.ɵɵlistener("change", function CredentialsAuditResourceComponent_ng_container_2_Template_select_change_67_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDateRangeChange($event.target.value)); });
460
- i0.ɵɵelementStart(68, "option", 41);
463
+ i0.ɵɵelementStart(67, "select", 34);
464
+ i0.ɵɵlistener("change", function CredentialsAuditResourceComponent_Conditional_2_Template_select_change_67_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onDateRangeChange($event.target.value)); });
465
+ i0.ɵɵelementStart(68, "option", 39);
461
466
  i0.ɵɵtext(69, "Last 24 hours");
462
467
  i0.ɵɵelementEnd();
463
- i0.ɵɵelementStart(70, "option", 42);
468
+ i0.ɵɵelementStart(70, "option", 40);
464
469
  i0.ɵɵtext(71, "Last 7 days");
465
470
  i0.ɵɵelementEnd();
466
- i0.ɵɵelementStart(72, "option", 43);
471
+ i0.ɵɵelementStart(72, "option", 41);
467
472
  i0.ɵɵtext(73, "Last 30 days");
468
473
  i0.ɵɵelementEnd();
469
- i0.ɵɵelementStart(74, "option", 44);
474
+ i0.ɵɵelementStart(74, "option", 42);
470
475
  i0.ɵɵtext(75, "Last 90 days");
471
476
  i0.ɵɵelementEnd()()();
472
- i0.ɵɵelementStart(76, "div", 45)(77, "div", 46);
477
+ i0.ɵɵelementStart(76, "div", 43)(77, "div", 44);
473
478
  i0.ɵɵtext(78);
474
479
  i0.ɵɵelementEnd();
475
- i0.ɵɵelementStart(79, "div", 47)(80, "button", 48);
476
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_Template_button_click_80_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setViewMode("timeline")); });
477
- i0.ɵɵelement(81, "i", 49);
480
+ i0.ɵɵelementStart(79, "div", 45)(80, "button", 46);
481
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Template_button_click_80_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setViewMode("timeline")); });
482
+ i0.ɵɵelement(81, "i", 47);
478
483
  i0.ɵɵelementEnd();
479
- i0.ɵɵelementStart(82, "button", 50);
480
- i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_ng_container_2_Template_button_click_82_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setViewMode("table")); });
481
- i0.ɵɵelement(83, "i", 51);
484
+ i0.ɵɵelementStart(82, "button", 48);
485
+ i0.ɵɵlistener("click", function CredentialsAuditResourceComponent_Conditional_2_Template_button_click_82_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setViewMode("table")); });
486
+ i0.ɵɵelement(83, "i", 49);
482
487
  i0.ɵɵelementEnd()()()();
483
- i0.ɵɵtemplate(84, CredentialsAuditResourceComponent_ng_container_2_div_84_Template, 2, 1, "div", 52)(85, CredentialsAuditResourceComponent_ng_container_2_div_85_Template, 18, 1, "div", 53)(86, CredentialsAuditResourceComponent_ng_container_2_div_86_Template, 7, 2, "div", 54);
484
- i0.ɵɵelementContainerEnd();
488
+ i0.ɵɵconditionalCreate(84, CredentialsAuditResourceComponent_Conditional_2_Conditional_84_Template, 3, 0, "div", 50);
489
+ i0.ɵɵconditionalCreate(85, CredentialsAuditResourceComponent_Conditional_2_Conditional_85_Template, 19, 0, "div", 51);
490
+ i0.ɵɵconditionalCreate(86, CredentialsAuditResourceComponent_Conditional_2_Conditional_86_Template, 7, 2, "div", 52);
485
491
  } if (rf & 2) {
486
492
  const ctx_r1 = i0.ɵɵnextContext();
487
- i0.ɵɵadvance(20);
493
+ i0.ɵɵadvance(19);
488
494
  i0.ɵɵtextInterpolate(ctx_r1.auditLogs.length);
489
495
  i0.ɵɵadvance(8);
490
496
  i0.ɵɵtextInterpolate(ctx_r1.getSuccessCount());
@@ -495,18 +501,18 @@ function CredentialsAuditResourceComponent_ng_container_2_Template(rf, ctx) { if
495
501
  i0.ɵɵadvance(8);
496
502
  i0.ɵɵtextInterpolate(ctx_r1.getUniqueUserCount());
497
503
  i0.ɵɵadvance(3);
498
- i0.ɵɵproperty("ngIf", ctx_r1.hourlyData.length > 0);
504
+ i0.ɵɵconditional(ctx_r1.hourlyData.length > 0 ? 48 : -1);
499
505
  i0.ɵɵadvance(5);
500
506
  i0.ɵɵproperty("value", ctx_r1.searchText);
501
507
  i0.ɵɵadvance();
502
- i0.ɵɵproperty("ngIf", ctx_r1.searchText);
508
+ i0.ɵɵconditional(ctx_r1.searchText ? 54 : -1);
503
509
  i0.ɵɵadvance();
504
510
  i0.ɵɵproperty("value", ctx_r1.selectedStatus);
505
511
  i0.ɵɵadvance(7);
506
512
  i0.ɵɵproperty("value", ctx_r1.selectedOperation);
507
513
  i0.ɵɵadvance(3);
508
- i0.ɵɵproperty("ngForOf", ctx_r1.getOperationList());
509
- i0.ɵɵadvance();
514
+ i0.ɵɵrepeater(ctx_r1.getOperationList());
515
+ i0.ɵɵadvance(2);
510
516
  i0.ɵɵproperty("value", ctx_r1.dateRange);
511
517
  i0.ɵɵadvance(11);
512
518
  i0.ɵɵtextInterpolate2(" ", ctx_r1.filteredLogs.length, " of ", ctx_r1.auditLogs.length, " events ");
@@ -515,15 +521,12 @@ function CredentialsAuditResourceComponent_ng_container_2_Template(rf, ctx) { if
515
521
  i0.ɵɵadvance(2);
516
522
  i0.ɵɵclassProp("active", ctx_r1.viewMode === "table");
517
523
  i0.ɵɵadvance(2);
518
- i0.ɵɵproperty("ngIf", ctx_r1.viewMode === "timeline" && ctx_r1.timelineGroups.length > 0);
524
+ i0.ɵɵconditional(ctx_r1.viewMode === "timeline" && ctx_r1.timelineGroups.length > 0 ? 84 : -1);
519
525
  i0.ɵɵadvance();
520
- i0.ɵɵproperty("ngIf", ctx_r1.viewMode === "table" && ctx_r1.filteredLogs.length > 0);
526
+ i0.ɵɵconditional(ctx_r1.viewMode === "table" && ctx_r1.filteredLogs.length > 0 ? 85 : -1);
521
527
  i0.ɵɵadvance();
522
- i0.ɵɵproperty("ngIf", ctx_r1.filteredLogs.length === 0);
528
+ i0.ɵɵconditional(ctx_r1.filteredLogs.length === 0 ? 86 : -1);
523
529
  } }
524
- export function LoadCredentialsAuditResource() {
525
- // Prevents tree-shaking
526
- }
527
530
  // The Credential Access AuditLogType ID from metadata
528
531
  const CREDENTIAL_ACCESS_AUDIT_LOG_TYPE_ID = 'E8D4D100-E785-42D3-997F-ECFF3B0BCFC0';
529
532
  let CredentialsAuditResourceComponent = class CredentialsAuditResourceComponent extends BaseResourceComponent {
@@ -841,16 +844,17 @@ let CredentialsAuditResourceComponent = class CredentialsAuditResourceComponent
841
844
  link.click();
842
845
  }
843
846
  static ɵfac = function CredentialsAuditResourceComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || CredentialsAuditResourceComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
844
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CredentialsAuditResourceComponent, selectors: [["mj-credentials-audit-resource"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [[1, "audit-container"], ["text", "Loading audit logs...", 4, "ngIf"], [4, "ngIf"], ["text", "Loading audit logs..."], [1, "audit-header"], [1, "header-info"], [1, "audit-title"], [1, "audit-subtitle"], [1, "header-actions"], ["title", "Export to CSV", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-download"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "stats-grid"], [1, "stat-card"], [1, "stat-icon", "total"], [1, "fa-solid", "fa-clipboard-list"], [1, "stat-content"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "success"], [1, "fa-solid", "fa-check-circle"], [1, "stat-value", "success"], [1, "stat-rate"], [1, "stat-icon", "failed"], [1, "fa-solid", "fa-times-circle"], [1, "stat-value", "failed"], [1, "stat-icon", "users"], [1, "fa-solid", "fa-users"], ["class", "activity-chart", 4, "ngIf"], [1, "toolbar"], [1, "toolbar-left"], [1, "search-container"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search logs...", 3, "input", "value"], ["class", "search-clear", 3, "click", 4, "ngIf"], [1, "filter-select", 3, "change", "value"], ["value", ""], ["value", "Success"], ["value", "Failed"], [3, "value", 4, "ngFor", "ngForOf"], ["value", "1"], ["value", "7"], ["value", "30"], ["value", "90"], [1, "toolbar-right"], [1, "results-info"], [1, "view-toggle"], ["title", "Timeline View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-timeline"], ["title", "Table View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-table"], ["class", "timeline-container", 4, "ngIf"], ["class", "audit-table-container", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], [1, "activity-chart"], [1, "chart-header"], [1, "fa-solid", "fa-chart-bar"], [1, "chart-container"], [1, "chart-bars"], ["class", "chart-bar-wrapper", 3, "title", 4, "ngFor", "ngForOf"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-color", "success"], [1, "legend-color", "failed"], [1, "chart-bar-wrapper", 3, "title"], [1, "chart-bar"], [1, "bar-segment", "success"], [1, "bar-segment", "failed"], [1, "chart-label"], [1, "search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [3, "value"], [1, "timeline-container"], ["class", "timeline-group", 4, "ngFor", "ngForOf"], [1, "timeline-group"], [1, "timeline-date"], [1, "date-label"], [1, "date-count"], [1, "timeline-items"], ["class", "timeline-item", 3, "expanded", "failed", 4, "ngFor", "ngForOf"], [1, "timeline-item"], [1, "timeline-line"], [1, "timeline-dot"], [1, "timeline-content", 3, "click"], [1, "timeline-header"], [1, "timeline-operation"], [1, "operation-name"], [1, "timeline-time"], [1, "timeline-body"], [1, "timeline-user"], [1, "fa-solid", "fa-user"], ["class", "timeline-description", 4, "ngIf"], [1, "timeline-badges"], [1, "status-badge", 3, "ngClass"], ["class", "subsystem-badge", 4, "ngIf"], ["class", "type-badge", 4, "ngIf"], ["class", "timeline-details", 4, "ngIf"], [1, "expand-btn"], [1, "timeline-description"], [1, "subsystem-badge"], [1, "type-badge"], [1, "fa-solid", "fa-key"], [1, "timeline-details"], [1, "detail-grid"], ["class", "detail-item", 4, "ngIf"], ["class", "detail-item full-width", 4, "ngIf"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "detail-value", "mono"], [1, "detail-item", "full-width"], [1, "detail-value", "error"], [1, "detail-value", "mono", "small"], [1, "audit-table-container"], [1, "audit-table"], [3, "failed-row", 4, "ngFor", "ngForOf"], [1, "timestamp"], [1, "user"], [1, "operation"], [1, "operation-badge"], [1, "description"], [1, "subsystem"], [1, "status"], [1, "empty-state"], [1, "empty-icon"], [1, "btn-link", 3, "click"]], template: function CredentialsAuditResourceComponent_Template(rf, ctx) { if (rf & 1) {
847
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CredentialsAuditResourceComponent, selectors: [["mj-credentials-audit-resource"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 2, consts: [[1, "audit-container"], ["text", "Loading audit logs..."], [1, "audit-header"], [1, "header-info"], [1, "audit-title"], [1, "audit-subtitle"], [1, "header-actions"], ["title", "Export to CSV", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-download"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "stats-grid"], [1, "stat-card"], [1, "stat-icon", "total"], [1, "fa-solid", "fa-clipboard-list"], [1, "stat-content"], [1, "stat-value"], [1, "stat-label"], [1, "stat-icon", "success"], [1, "fa-solid", "fa-check-circle"], [1, "stat-value", "success"], [1, "stat-rate"], [1, "stat-icon", "failed"], [1, "fa-solid", "fa-times-circle"], [1, "stat-value", "failed"], [1, "stat-icon", "users"], [1, "fa-solid", "fa-users"], [1, "activity-chart"], [1, "toolbar"], [1, "toolbar-left"], [1, "search-container"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search logs...", 3, "input", "value"], [1, "search-clear"], [1, "filter-select", 3, "change", "value"], ["value", ""], ["value", "Success"], ["value", "Failed"], [3, "value"], ["value", "1"], ["value", "7"], ["value", "30"], ["value", "90"], [1, "toolbar-right"], [1, "results-info"], [1, "view-toggle"], ["title", "Timeline View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-timeline"], ["title", "Table View", 1, "toggle-btn", 3, "click"], [1, "fa-solid", "fa-table"], [1, "timeline-container"], [1, "audit-table-container"], [1, "empty-state"], [1, "chart-header"], [1, "fa-solid", "fa-chart-bar"], [1, "chart-container"], [1, "chart-bars"], [1, "chart-bar-wrapper", 3, "title"], [1, "chart-legend"], [1, "legend-item"], [1, "legend-color", "success"], [1, "legend-color", "failed"], [1, "chart-bar"], [1, "bar-segment", "success"], [1, "bar-segment", "failed"], [1, "chart-label"], [1, "search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "timeline-group"], [1, "timeline-date"], [1, "date-label"], [1, "date-count"], [1, "timeline-items"], [1, "timeline-item", 3, "expanded", "failed"], [1, "timeline-item"], [1, "timeline-line"], [1, "timeline-dot"], [1, "timeline-content", 3, "click"], [1, "timeline-header"], [1, "timeline-operation"], [1, "operation-name"], [1, "timeline-time"], [1, "timeline-body"], [1, "timeline-user"], [1, "fa-solid", "fa-user"], [1, "timeline-description"], [1, "timeline-badges"], [1, "status-badge", 3, "ngClass"], [1, "subsystem-badge"], [1, "type-badge"], [1, "timeline-details"], [1, "expand-btn"], [1, "fa-solid", "fa-key"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-item", "full-width"], [1, "detail-label"], [1, "detail-value"], [1, "detail-value", "mono"], [1, "detail-value", "error"], [1, "detail-value", "mono", "small"], [1, "audit-table"], [3, "failed-row"], [1, "timestamp"], [1, "user"], [1, "operation"], [1, "operation-badge"], [1, "description"], [1, "subsystem"], [1, "status"], [1, "empty-icon"], [1, "btn-link", 3, "click"]], template: function CredentialsAuditResourceComponent_Template(rf, ctx) { if (rf & 1) {
845
848
  i0.ɵɵelementStart(0, "div", 0);
846
- i0.ɵɵtemplate(1, CredentialsAuditResourceComponent_mj_loading_1_Template, 1, 0, "mj-loading", 1)(2, CredentialsAuditResourceComponent_ng_container_2_Template, 87, 21, "ng-container", 2);
849
+ i0.ɵɵconditionalCreate(1, CredentialsAuditResourceComponent_Conditional_1_Template, 1, 0, "mj-loading", 1);
850
+ i0.ɵɵconditionalCreate(2, CredentialsAuditResourceComponent_Conditional_2_Template, 87, 20);
847
851
  i0.ɵɵelementEnd();
848
852
  } if (rf & 2) {
849
853
  i0.ɵɵadvance();
850
- i0.ɵɵproperty("ngIf", ctx.isLoading);
854
+ i0.ɵɵconditional(ctx.isLoading ? 1 : -1);
851
855
  i0.ɵɵadvance();
852
- i0.ɵɵproperty("ngIf", !ctx.isLoading);
853
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i3.LoadingComponent], styles: [".audit-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n\n\n.audit-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.audit-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.audit-subtitle[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n border-color: var(--accent-color, #6366f1);\n color: var(--accent-color, #6366f1);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n color: var(--accent-color, #6366f1);\n}\n\n\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n}\n\n.stat-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.stat-icon.total[_ngcontent-%COMP%] {\n background: rgba(99, 102, 241, 0.1);\n color: #6366f1;\n}\n\n.stat-icon.success[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.1);\n color: #10b981;\n}\n\n.stat-icon.failed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.1);\n color: #ef4444;\n}\n\n.stat-icon.users[_ngcontent-%COMP%] {\n background: rgba(139, 92, 246, 0.1);\n color: #8b5cf6;\n}\n\n.stat-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.stat-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.stat-value.success[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n.stat-value.failed[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n.stat-rate[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 16px;\n font-size: 12px;\n font-weight: 600;\n color: #10b981;\n background: rgba(16, 185, 129, 0.1);\n padding: 4px 8px;\n border-radius: 8px;\n}\n\n\n\n.activity-chart[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.chart-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color, #6366f1);\n}\n\n.chart-container[_ngcontent-%COMP%] {\n height: 120px;\n padding: 0 4px;\n}\n\n.chart-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n height: 100%;\n gap: 2px;\n}\n\n.chart-bar-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n\n.chart-bar[_ngcontent-%COMP%] {\n flex: 1;\n width: 100%;\n max-width: 24px;\n display: flex;\n flex-direction: column-reverse;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n background: var(--bar-background, #f3f4f6);\n}\n\n.bar-segment[_ngcontent-%COMP%] {\n width: 100%;\n transition: height 0.3s ease;\n}\n\n.bar-segment.success[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #10b981 0%, #059669 100%);\n}\n\n.bar-segment.failed[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%);\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-secondary, #9ca3af);\n margin-top: 4px;\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 24px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-color[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n border-radius: 3px;\n}\n\n.legend-color.success[_ngcontent-%COMP%] {\n background: #10b981;\n}\n\n.legend-color.failed[_ngcontent-%COMP%] {\n background: #ef4444;\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n\n\n.search-container[_ngcontent-%COMP%] {\n position: relative;\n min-width: 200px;\n}\n\n.search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n background: var(--input-background, #f9fafb);\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n}\n\n.results-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--toggle-background, #f3f4f6);\n border-radius: 8px;\n padding: 4px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n color: var(--text-primary, #1f2937);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n color: var(--accent-color, #6366f1);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.timeline-group[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.date-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.date-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.timeline-items[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n padding: 12px 20px;\n transition: background 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.timeline-item.failed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.timeline-item.failed[_ngcontent-%COMP%]:hover {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timeline-line[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 24px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.timeline-dot[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n cursor: pointer;\n position: relative;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.operation-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: monospace;\n color: var(--text-secondary, #6b7280);\n}\n\n.timeline-body[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.timeline-user[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-bottom: 4px;\n}\n\n.timeline-user[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-primary, #374151);\n margin-bottom: 8px;\n}\n\n.timeline-badges[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.success[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.status-badge.unknown[_ngcontent-%COMP%] {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.subsystem-badge[_ngcontent-%COMP%], \n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 12px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.type-badge[_ngcontent-%COMP%] {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.timeline-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 16px;\n background: var(--detail-background, #f9fafb);\n border-radius: 8px;\n border: 1px solid var(--border-color, #e5e7eb);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.detail-value.mono[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n}\n\n.detail-value.small[_ngcontent-%COMP%] {\n font-size: 11px;\n word-break: break-all;\n}\n\n.detail-value.error[_ngcontent-%COMP%] {\n color: #dc2626;\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n right: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: var(--text-secondary, #9ca3af);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n color: var(--accent-color, #6366f1);\n}\n\n.expand-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.audit-table-container[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.audit-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.audit-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 14px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.audit-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.audit-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.audit-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] {\n background: var(--hover-background, #f9fafb);\n}\n\n.audit-table[_ngcontent-%COMP%] tr.failed-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.audit-table[_ngcontent-%COMP%] tr.failed-row[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timestamp[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n white-space: nowrap;\n}\n\n.user[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.operation-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.operation-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.description[_ngcontent-%COMP%] {\n max-width: 300px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subsystem[_ngcontent-%COMP%] {\n color: var(--text-secondary, #6b7280);\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: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n\n\n@media (max-width: 1200px) {\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .audit-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .audit-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .search-container[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .filter-select[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .chart-label[_ngcontent-%COMP%] {\n display: none;\n }\n\n .chart-label[_ngcontent-%COMP%]:nth-child(4n+1) {\n display: block;\n }\n}"], changeDetection: 0 });
856
+ i0.ɵɵconditional(!ctx.isLoading ? 2 : -1);
857
+ } }, dependencies: [i1.NgClass, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i3.LoadingComponent], styles: [".audit-container[_ngcontent-%COMP%] {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n\n\n.audit-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.audit-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.audit-subtitle[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n border-color: var(--accent-color, #6366f1);\n color: var(--accent-color, #6366f1);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n color: var(--accent-color, #6366f1);\n}\n\n\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.stat-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n}\n\n.stat-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.stat-icon.total[_ngcontent-%COMP%] {\n background: rgba(99, 102, 241, 0.1);\n color: #6366f1;\n}\n\n.stat-icon.success[_ngcontent-%COMP%] {\n background: rgba(16, 185, 129, 0.1);\n color: #10b981;\n}\n\n.stat-icon.failed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.1);\n color: #ef4444;\n}\n\n.stat-icon.users[_ngcontent-%COMP%] {\n background: rgba(139, 92, 246, 0.1);\n color: #8b5cf6;\n}\n\n.stat-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n.stat-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.stat-value.success[_ngcontent-%COMP%] {\n color: #10b981;\n}\n\n.stat-value.failed[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n.stat-rate[_ngcontent-%COMP%] {\n position: absolute;\n top: 12px;\n right: 16px;\n font-size: 12px;\n font-weight: 600;\n color: #10b981;\n background: rgba(16, 185, 129, 0.1);\n padding: 4px 8px;\n border-radius: 8px;\n}\n\n\n\n.activity-chart[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.chart-header[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.chart-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--accent-color, #6366f1);\n}\n\n.chart-container[_ngcontent-%COMP%] {\n height: 120px;\n padding: 0 4px;\n}\n\n.chart-bars[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-end;\n height: 100%;\n gap: 2px;\n}\n\n.chart-bar-wrapper[_ngcontent-%COMP%] {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n\n.chart-bar[_ngcontent-%COMP%] {\n flex: 1;\n width: 100%;\n max-width: 24px;\n display: flex;\n flex-direction: column-reverse;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n background: var(--bar-background, #f3f4f6);\n}\n\n.bar-segment[_ngcontent-%COMP%] {\n width: 100%;\n transition: height 0.3s ease;\n}\n\n.bar-segment.success[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #10b981 0%, #059669 100%);\n}\n\n.bar-segment.failed[_ngcontent-%COMP%] {\n background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%);\n}\n\n.chart-label[_ngcontent-%COMP%] {\n font-size: 10px;\n color: var(--text-secondary, #9ca3af);\n margin-top: 4px;\n}\n\n.chart-legend[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n gap: 24px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n}\n\n.legend-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-color[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n border-radius: 3px;\n}\n\n.legend-color.success[_ngcontent-%COMP%] {\n background: #10b981;\n}\n\n.legend-color.failed[_ngcontent-%COMP%] {\n background: #ef4444;\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n\n\n.search-container[_ngcontent-%COMP%] {\n position: relative;\n min-width: 200px;\n}\n\n.search-container[_ngcontent-%COMP%] i.fa-search[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-clear[_ngcontent-%COMP%] {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n background: var(--input-background, #f9fafb);\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n}\n\n.results-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--toggle-background, #f3f4f6);\n border-radius: 8px;\n padding: 4px;\n}\n\n.toggle-btn[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.toggle-btn[_ngcontent-%COMP%]:hover {\n color: var(--text-primary, #1f2937);\n}\n\n.toggle-btn.active[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n color: var(--accent-color, #6366f1);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n\n\n.timeline-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.timeline-group[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.date-label[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.date-count[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.timeline-items[_ngcontent-%COMP%] {\n padding: 8px 0;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n padding: 12px 20px;\n transition: background 0.2s ease;\n}\n\n.timeline-item[_ngcontent-%COMP%]:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.timeline-item.failed[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.timeline-item.failed[_ngcontent-%COMP%]:hover {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timeline-line[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 24px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.timeline-dot[_ngcontent-%COMP%] {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n cursor: pointer;\n position: relative;\n}\n\n.timeline-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.operation-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.timeline-time[_ngcontent-%COMP%] {\n font-size: 12px;\n font-family: monospace;\n color: var(--text-secondary, #6b7280);\n}\n\n.timeline-body[_ngcontent-%COMP%] {\n margin-bottom: 8px;\n}\n\n.timeline-user[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-bottom: 4px;\n}\n\n.timeline-user[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.timeline-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-primary, #374151);\n margin-bottom: 8px;\n}\n\n.timeline-badges[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.success[_ngcontent-%COMP%] {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.failed[_ngcontent-%COMP%] {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.status-badge.unknown[_ngcontent-%COMP%] {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.subsystem-badge[_ngcontent-%COMP%], \n.type-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 12px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.type-badge[_ngcontent-%COMP%] {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.type-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.timeline-details[_ngcontent-%COMP%] {\n margin-top: 12px;\n padding: 16px;\n background: var(--detail-background, #f9fafb);\n border-radius: 8px;\n border: 1px solid var(--border-color, #e5e7eb);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item.full-width[_ngcontent-%COMP%] {\n grid-column: 1 / -1;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.detail-value.mono[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n}\n\n.detail-value.small[_ngcontent-%COMP%] {\n font-size: 11px;\n word-break: break-all;\n}\n\n.detail-value.error[_ngcontent-%COMP%] {\n color: #dc2626;\n}\n\n.expand-btn[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n right: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: var(--text-secondary, #9ca3af);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.expand-btn[_ngcontent-%COMP%]:hover {\n color: var(--accent-color, #6366f1);\n}\n\n.expand-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n\n\n.audit-table-container[_ngcontent-%COMP%] {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.audit-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.audit-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 14px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.audit-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.audit-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.audit-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] {\n background: var(--hover-background, #f9fafb);\n}\n\n.audit-table[_ngcontent-%COMP%] tr.failed-row[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.audit-table[_ngcontent-%COMP%] tr.failed-row[_ngcontent-%COMP%]:hover td[_ngcontent-%COMP%] {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timestamp[_ngcontent-%COMP%] {\n font-family: monospace;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n white-space: nowrap;\n}\n\n.user[_ngcontent-%COMP%] {\n font-weight: 500;\n}\n\n.operation-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.operation-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 10px;\n}\n\n.description[_ngcontent-%COMP%] {\n max-width: 300px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subsystem[_ngcontent-%COMP%] {\n color: var(--text-secondary, #6b7280);\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: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n\n\n@media (max-width: 1200px) {\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .audit-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .audit-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .search-container[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .filter-select[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .chart-label[_ngcontent-%COMP%] {\n display: none;\n }\n\n .chart-label[_ngcontent-%COMP%]:nth-child(4n+1) {\n display: block;\n }\n}"], changeDetection: 0 });
854
858
  };
855
859
  CredentialsAuditResourceComponent = __decorate([
856
860
  RegisterClass(BaseResourceComponent, 'CredentialsAuditResource')
@@ -858,7 +862,7 @@ CredentialsAuditResourceComponent = __decorate([
858
862
  export { CredentialsAuditResourceComponent };
859
863
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsAuditResourceComponent, [{
860
864
  type: Component,
861
- args: [{ selector: 'mj-credentials-audit-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"audit-container\">\n <mj-loading *ngIf=\"isLoading\" text=\"Loading audit logs...\"></mj-loading>\n\n <ng-container *ngIf=\"!isLoading\">\n <!-- Header -->\n <div class=\"audit-header\">\n <div class=\"header-info\">\n <h2 class=\"audit-title\">Audit Trail</h2>\n <p class=\"audit-subtitle\">Credential access and modification history</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-secondary\" (click)=\"exportToCSV()\" title=\"Export to CSV\">\n <i class=\"fa-solid fa-download\"></i>\n <span>Export</span>\n </button>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n\n <!-- Stats Cards -->\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-icon total\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{auditLogs.length}}</div>\n <div class=\"stat-label\">Total Events</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon success\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value success\">{{getSuccessCount()}}</div>\n <div class=\"stat-label\">Successful</div>\n </div>\n <div class=\"stat-rate\">{{getSuccessRate()}}%</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon failed\">\n <i class=\"fa-solid fa-times-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value failed\">{{getFailedCount()}}</div>\n <div class=\"stat-label\">Failed</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon users\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{getUniqueUserCount()}}</div>\n <div class=\"stat-label\">Unique Users</div>\n </div>\n </div>\n </div>\n\n <!-- Activity Chart -->\n <div class=\"activity-chart\" *ngIf=\"hourlyData.length > 0\">\n <div class=\"chart-header\">\n <h3>\n <i class=\"fa-solid fa-chart-bar\"></i>\n Today's Activity\n </h3>\n </div>\n <div class=\"chart-container\">\n <div class=\"chart-bars\">\n <div\n class=\"chart-bar-wrapper\"\n *ngFor=\"let data of hourlyData\"\n [title]=\"data.hour + ': ' + (data.success + data.failed) + ' events'\"\n >\n <div class=\"chart-bar\">\n <div\n class=\"bar-segment success\"\n [style.height.%]=\"(data.success / getMaxHourlyCount()) * 100\"\n ></div>\n <div\n class=\"bar-segment failed\"\n [style.height.%]=\"(data.failed / getMaxHourlyCount()) * 100\"\n ></div>\n </div>\n <span class=\"chart-label\">{{data.hour.split(':')[0]}}</span>\n </div>\n </div>\n </div>\n <div class=\"chart-legend\">\n <span class=\"legend-item\">\n <span class=\"legend-color success\"></span>\n Success\n </span>\n <span class=\"legend-item\">\n <span class=\"legend-color failed\"></span>\n Failed\n </span>\n </div>\n </div>\n\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-container\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search logs...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n <button class=\"search-clear\" *ngIf=\"searchText\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <select\n class=\"filter-select\"\n [value]=\"selectedStatus\"\n (change)=\"onStatusFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Statuses</option>\n <option value=\"Success\">Success</option>\n <option value=\"Failed\">Failed</option>\n </select>\n\n <select\n class=\"filter-select\"\n [value]=\"selectedOperation\"\n (change)=\"onOperationFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Operations</option>\n <option *ngFor=\"let op of getOperationList()\" [value]=\"op\">{{op}}</option>\n </select>\n\n <select\n class=\"filter-select\"\n [value]=\"dateRange\"\n (change)=\"onDateRangeChange($any($event.target).value)\"\n >\n <option value=\"1\">Last 24 hours</option>\n <option value=\"7\">Last 7 days</option>\n <option value=\"30\">Last 30 days</option>\n <option value=\"90\">Last 90 days</option>\n </select>\n </div>\n\n <div class=\"toolbar-right\">\n <div class=\"results-info\">\n {{filteredLogs.length}} of {{auditLogs.length}} events\n </div>\n <div class=\"view-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"viewMode === 'timeline'\"\n (click)=\"setViewMode('timeline')\"\n title=\"Timeline View\"\n >\n <i class=\"fa-solid fa-timeline\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"viewMode === 'table'\"\n (click)=\"setViewMode('table')\"\n title=\"Table View\"\n >\n <i class=\"fa-solid fa-table\"></i>\n </button>\n </div>\n </div>\n </div>\n\n <!-- Timeline View -->\n <div class=\"timeline-container\" *ngIf=\"viewMode === 'timeline' && timelineGroups.length > 0\">\n <div class=\"timeline-group\" *ngFor=\"let group of timelineGroups\">\n <div class=\"timeline-date\">\n <span class=\"date-label\">{{group.displayDate}}</span>\n <span class=\"date-count\">{{group.logs.length}} events</span>\n </div>\n <div class=\"timeline-items\">\n <div\n class=\"timeline-item\"\n *ngFor=\"let log of group.logs\"\n [class.expanded]=\"expandedLogId === log.ID\"\n [class.failed]=\"log.Status === 'Failed'\"\n >\n <div class=\"timeline-line\">\n <div\n class=\"timeline-dot\"\n [style.backgroundColor]=\"getOperationColor(getOperationType(log))\"\n ></div>\n </div>\n <div class=\"timeline-content\" (click)=\"toggleLogExpand(log.ID)\">\n <div class=\"timeline-header\">\n <div class=\"timeline-operation\">\n <i [class]=\"getOperationIcon(getOperationType(log))\" [style.color]=\"getOperationColor(getOperationType(log))\"></i>\n <span class=\"operation-name\">{{getOperationType(log)}}</span>\n </div>\n <div class=\"timeline-time\">{{formatTime(log.__mj_CreatedAt)}}</div>\n </div>\n <div class=\"timeline-body\">\n <div class=\"timeline-user\">\n <i class=\"fa-solid fa-user\"></i>\n {{log.User || 'Unknown'}}\n </div>\n <div class=\"timeline-description\" *ngIf=\"log.Description\">\n {{log.Description}}\n </div>\n <div class=\"timeline-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n <span class=\"subsystem-badge\" *ngIf=\"getSubsystem(log)\">\n {{getSubsystem(log)}}\n </span>\n <span class=\"type-badge\" *ngIf=\"log.parsedDetails?.credentialType\">\n <i class=\"fa-solid fa-key\"></i>\n {{log.parsedDetails?.credentialType}}\n </span>\n </div>\n </div>\n <div class=\"timeline-details\" *ngIf=\"expandedLogId === log.ID\">\n <div class=\"detail-grid\">\n <div class=\"detail-item\" *ngIf=\"log.parsedDetails?.ipAddress\">\n <span class=\"detail-label\">IP Address</span>\n <span class=\"detail-value\">{{log.parsedDetails?.ipAddress}}</span>\n </div>\n <div class=\"detail-item\" *ngIf=\"log.parsedDetails?.duration\">\n <span class=\"detail-label\">Duration</span>\n <span class=\"detail-value\">{{formatDuration(log.parsedDetails?.duration)}}</span>\n </div>\n <div class=\"detail-item\" *ngIf=\"log.parsedDetails?.credentialId\">\n <span class=\"detail-label\">Credential ID</span>\n <span class=\"detail-value mono\">{{log.parsedDetails?.credentialId}}</span>\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"log.parsedDetails?.errorMessage\">\n <span class=\"detail-label\">Error Message</span>\n <span class=\"detail-value error\">{{log.parsedDetails?.errorMessage}}</span>\n </div>\n <div class=\"detail-item full-width\" *ngIf=\"log.parsedDetails?.userAgent\">\n <span class=\"detail-label\">User Agent</span>\n <span class=\"detail-value mono small\">{{log.parsedDetails?.userAgent}}</span>\n </div>\n </div>\n </div>\n <button class=\"expand-btn\">\n <i [class]=\"expandedLogId === log.ID ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Table View -->\n <div class=\"audit-table-container\" *ngIf=\"viewMode === 'table' && filteredLogs.length > 0\">\n <table class=\"audit-table\">\n <thead>\n <tr>\n <th>Timestamp</th>\n <th>User</th>\n <th>Operation</th>\n <th>Description</th>\n <th>Subsystem</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let log of filteredLogs\" [class.failed-row]=\"log.Status === 'Failed'\">\n <td class=\"timestamp\">{{formatDate(log.__mj_CreatedAt)}}</td>\n <td class=\"user\">{{log.User || 'Unknown'}}</td>\n <td class=\"operation\">\n <span class=\"operation-badge\" [style.backgroundColor]=\"getOperationColor(getOperationType(log)) + '20'\" [style.color]=\"getOperationColor(getOperationType(log))\">\n <i [class]=\"getOperationIcon(getOperationType(log))\"></i>\n {{getOperationType(log)}}\n </span>\n </td>\n <td class=\"description\">{{log.Description || '-'}}</td>\n <td class=\"subsystem\">{{getSubsystem(log) || '-'}}</td>\n <td class=\"status\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"filteredLogs.length === 0\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <h3>No Audit Logs</h3>\n <p *ngIf=\"searchText || selectedStatus || selectedOperation\">\n No events match your current filters.\n <button class=\"btn-link\" (click)=\"searchText = ''; selectedStatus = ''; selectedOperation = ''; applyFilters()\">Clear filters</button>\n </p>\n <p *ngIf=\"!searchText && !selectedStatus && !selectedOperation\">\n No credential access events in the selected time range.\n </p>\n </div>\n </ng-container>\n</div>\n", styles: [".audit-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n/* Header */\n.audit-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.audit-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.audit-subtitle {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-secondary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--hover-background, #f9fafb);\n border-color: var(--accent-color, #6366f1);\n color: var(--accent-color, #6366f1);\n}\n\n.btn-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon:hover {\n background: var(--hover-background, #f9fafb);\n color: var(--accent-color, #6366f1);\n}\n\n/* Stats Grid */\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.stat-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n}\n\n.stat-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.stat-icon.total {\n background: rgba(99, 102, 241, 0.1);\n color: #6366f1;\n}\n\n.stat-icon.success {\n background: rgba(16, 185, 129, 0.1);\n color: #10b981;\n}\n\n.stat-icon.failed {\n background: rgba(239, 68, 68, 0.1);\n color: #ef4444;\n}\n\n.stat-icon.users {\n background: rgba(139, 92, 246, 0.1);\n color: #8b5cf6;\n}\n\n.stat-icon i {\n font-size: 20px;\n}\n\n.stat-content {\n flex: 1;\n}\n\n.stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.stat-value.success {\n color: #10b981;\n}\n\n.stat-value.failed {\n color: #ef4444;\n}\n\n.stat-label {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n.stat-rate {\n position: absolute;\n top: 12px;\n right: 16px;\n font-size: 12px;\n font-weight: 600;\n color: #10b981;\n background: rgba(16, 185, 129, 0.1);\n padding: 4px 8px;\n border-radius: 8px;\n}\n\n/* Activity Chart */\n.activity-chart {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.chart-header {\n margin-bottom: 16px;\n}\n\n.chart-header h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.chart-header h3 i {\n color: var(--accent-color, #6366f1);\n}\n\n.chart-container {\n height: 120px;\n padding: 0 4px;\n}\n\n.chart-bars {\n display: flex;\n align-items: flex-end;\n height: 100%;\n gap: 2px;\n}\n\n.chart-bar-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n\n.chart-bar {\n flex: 1;\n width: 100%;\n max-width: 24px;\n display: flex;\n flex-direction: column-reverse;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n background: var(--bar-background, #f3f4f6);\n}\n\n.bar-segment {\n width: 100%;\n transition: height 0.3s ease;\n}\n\n.bar-segment.success {\n background: linear-gradient(180deg, #10b981 0%, #059669 100%);\n}\n\n.bar-segment.failed {\n background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%);\n}\n\n.chart-label {\n font-size: 10px;\n color: var(--text-secondary, #9ca3af);\n margin-top: 4px;\n}\n\n.chart-legend {\n display: flex;\n justify-content: center;\n gap: 24px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-color {\n width: 12px;\n height: 12px;\n border-radius: 3px;\n}\n\n.legend-color.success {\n background: #10b981;\n}\n\n.legend-color.failed {\n background: #ef4444;\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n/* Search */\n.search-container {\n position: relative;\n min-width: 200px;\n}\n\n.search-container i.fa-search {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container input {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container input:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n}\n\n.search-clear:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n.filter-select {\n padding: 8px 12px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n background: var(--input-background, #f9fafb);\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-select:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n}\n\n.results-info {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--toggle-background, #f3f4f6);\n border-radius: 8px;\n padding: 4px;\n}\n\n.toggle-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.toggle-btn:hover {\n color: var(--text-primary, #1f2937);\n}\n\n.toggle-btn.active {\n background: var(--card-background, #ffffff);\n color: var(--accent-color, #6366f1);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Timeline View */\n.timeline-container {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.timeline-group {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.timeline-date {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.date-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.date-count {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.timeline-items {\n padding: 8px 0;\n}\n\n.timeline-item {\n display: flex;\n padding: 12px 20px;\n transition: background 0.2s ease;\n}\n\n.timeline-item:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.timeline-item.failed {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.timeline-item.failed:hover {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timeline-line {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 24px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.timeline-dot {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n cursor: pointer;\n position: relative;\n}\n\n.timeline-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n\n.timeline-operation {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation i {\n font-size: 14px;\n}\n\n.operation-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.timeline-time {\n font-size: 12px;\n font-family: monospace;\n color: var(--text-secondary, #6b7280);\n}\n\n.timeline-body {\n margin-bottom: 8px;\n}\n\n.timeline-user {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-bottom: 4px;\n}\n\n.timeline-user i {\n font-size: 11px;\n}\n\n.timeline-description {\n font-size: 13px;\n color: var(--text-primary, #374151);\n margin-bottom: 8px;\n}\n\n.timeline-badges {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.success {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.status-badge.unknown {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n.status-badge i {\n font-size: 10px;\n}\n\n.subsystem-badge,\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 12px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.type-badge {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.type-badge i {\n font-size: 10px;\n}\n\n/* Timeline Details */\n.timeline-details {\n margin-top: 12px;\n padding: 16px;\n background: var(--detail-background, #f9fafb);\n border-radius: 8px;\n border: 1px solid var(--border-color, #e5e7eb);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-value {\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.detail-value.mono {\n font-family: monospace;\n font-size: 12px;\n}\n\n.detail-value.small {\n font-size: 11px;\n word-break: break-all;\n}\n\n.detail-value.error {\n color: #dc2626;\n}\n\n.expand-btn {\n position: absolute;\n top: 0;\n right: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: var(--text-secondary, #9ca3af);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.expand-btn:hover {\n color: var(--accent-color, #6366f1);\n}\n\n.expand-btn i {\n font-size: 10px;\n}\n\n/* Table View */\n.audit-table-container {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.audit-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.audit-table th {\n padding: 14px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.audit-table td {\n padding: 14px 16px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.audit-table tr:last-child td {\n border-bottom: none;\n}\n\n.audit-table tr:hover td {\n background: var(--hover-background, #f9fafb);\n}\n\n.audit-table tr.failed-row td {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.audit-table tr.failed-row:hover td {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timestamp {\n font-family: monospace;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n white-space: nowrap;\n}\n\n.user {\n font-weight: 500;\n}\n\n.operation-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.operation-badge i {\n font-size: 10px;\n}\n\n.description {\n max-width: 300px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subsystem {\n color: var(--text-secondary, #6b7280);\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: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n/* Responsive */\n@media (max-width: 1200px) {\n .stats-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .audit-container {\n padding: 16px;\n }\n\n .audit-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .stats-grid {\n grid-template-columns: 1fr;\n }\n\n .toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left {\n flex-direction: column;\n }\n\n .search-container {\n width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n\n .chart-label {\n display: none;\n }\n\n .chart-label:nth-child(4n+1) {\n display: block;\n }\n}\n"] }]
865
+ args: [{ standalone: false, selector: 'mj-credentials-audit-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"audit-container\">\n @if (isLoading) {\n <mj-loading text=\"Loading audit logs...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Header -->\n <div class=\"audit-header\">\n <div class=\"header-info\">\n <h2 class=\"audit-title\">Audit Trail</h2>\n <p class=\"audit-subtitle\">Credential access and modification history</p>\n </div>\n <div class=\"header-actions\">\n <button class=\"btn-secondary\" (click)=\"exportToCSV()\" title=\"Export to CSV\">\n <i class=\"fa-solid fa-download\"></i>\n <span>Export</span>\n </button>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Stats Cards -->\n <div class=\"stats-grid\">\n <div class=\"stat-card\">\n <div class=\"stat-icon total\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{auditLogs.length}}</div>\n <div class=\"stat-label\">Total Events</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon success\">\n <i class=\"fa-solid fa-check-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value success\">{{getSuccessCount()}}</div>\n <div class=\"stat-label\">Successful</div>\n </div>\n <div class=\"stat-rate\">{{getSuccessRate()}}%</div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon failed\">\n <i class=\"fa-solid fa-times-circle\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value failed\">{{getFailedCount()}}</div>\n <div class=\"stat-label\">Failed</div>\n </div>\n </div>\n <div class=\"stat-card\">\n <div class=\"stat-icon users\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"stat-content\">\n <div class=\"stat-value\">{{getUniqueUserCount()}}</div>\n <div class=\"stat-label\">Unique Users</div>\n </div>\n </div>\n </div>\n <!-- Activity Chart -->\n @if (hourlyData.length > 0) {\n <div class=\"activity-chart\">\n <div class=\"chart-header\">\n <h3>\n <i class=\"fa-solid fa-chart-bar\"></i>\n Today's Activity\n </h3>\n </div>\n <div class=\"chart-container\">\n <div class=\"chart-bars\">\n @for (data of hourlyData; track data) {\n <div\n class=\"chart-bar-wrapper\"\n [title]=\"data.hour + ': ' + (data.success + data.failed) + ' events'\"\n >\n <div class=\"chart-bar\">\n <div\n class=\"bar-segment success\"\n [style.height.%]=\"(data.success / getMaxHourlyCount()) * 100\"\n ></div>\n <div\n class=\"bar-segment failed\"\n [style.height.%]=\"(data.failed / getMaxHourlyCount()) * 100\"\n ></div>\n </div>\n <span class=\"chart-label\">{{data.hour.split(':')[0]}}</span>\n </div>\n }\n </div>\n </div>\n <div class=\"chart-legend\">\n <span class=\"legend-item\">\n <span class=\"legend-color success\"></span>\n Success\n </span>\n <span class=\"legend-item\">\n <span class=\"legend-color failed\"></span>\n Failed\n </span>\n </div>\n </div>\n }\n <!-- Toolbar -->\n <div class=\"toolbar\">\n <div class=\"toolbar-left\">\n <div class=\"search-container\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search logs...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n @if (searchText) {\n <button class=\"search-clear\" (click)=\"clearSearch()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <select\n class=\"filter-select\"\n [value]=\"selectedStatus\"\n (change)=\"onStatusFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Statuses</option>\n <option value=\"Success\">Success</option>\n <option value=\"Failed\">Failed</option>\n </select>\n <select\n class=\"filter-select\"\n [value]=\"selectedOperation\"\n (change)=\"onOperationFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Operations</option>\n @for (op of getOperationList(); track op) {\n <option [value]=\"op\">{{op}}</option>\n }\n </select>\n <select\n class=\"filter-select\"\n [value]=\"dateRange\"\n (change)=\"onDateRangeChange($any($event.target).value)\"\n >\n <option value=\"1\">Last 24 hours</option>\n <option value=\"7\">Last 7 days</option>\n <option value=\"30\">Last 30 days</option>\n <option value=\"90\">Last 90 days</option>\n </select>\n </div>\n <div class=\"toolbar-right\">\n <div class=\"results-info\">\n {{filteredLogs.length}} of {{auditLogs.length}} events\n </div>\n <div class=\"view-toggle\">\n <button\n class=\"toggle-btn\"\n [class.active]=\"viewMode === 'timeline'\"\n (click)=\"setViewMode('timeline')\"\n title=\"Timeline View\"\n >\n <i class=\"fa-solid fa-timeline\"></i>\n </button>\n <button\n class=\"toggle-btn\"\n [class.active]=\"viewMode === 'table'\"\n (click)=\"setViewMode('table')\"\n title=\"Table View\"\n >\n <i class=\"fa-solid fa-table\"></i>\n </button>\n </div>\n </div>\n </div>\n <!-- Timeline View -->\n @if (viewMode === 'timeline' && timelineGroups.length > 0) {\n <div class=\"timeline-container\">\n @for (group of timelineGroups; track group) {\n <div class=\"timeline-group\">\n <div class=\"timeline-date\">\n <span class=\"date-label\">{{group.displayDate}}</span>\n <span class=\"date-count\">{{group.logs.length}} events</span>\n </div>\n <div class=\"timeline-items\">\n @for (log of group.logs; track log) {\n <div\n class=\"timeline-item\"\n [class.expanded]=\"expandedLogId === log.ID\"\n [class.failed]=\"log.Status === 'Failed'\"\n >\n <div class=\"timeline-line\">\n <div\n class=\"timeline-dot\"\n [style.backgroundColor]=\"getOperationColor(getOperationType(log))\"\n ></div>\n </div>\n <div class=\"timeline-content\" (click)=\"toggleLogExpand(log.ID)\">\n <div class=\"timeline-header\">\n <div class=\"timeline-operation\">\n <i [class]=\"getOperationIcon(getOperationType(log))\" [style.color]=\"getOperationColor(getOperationType(log))\"></i>\n <span class=\"operation-name\">{{getOperationType(log)}}</span>\n </div>\n <div class=\"timeline-time\">{{formatTime(log.__mj_CreatedAt)}}</div>\n </div>\n <div class=\"timeline-body\">\n <div class=\"timeline-user\">\n <i class=\"fa-solid fa-user\"></i>\n {{log.User || 'Unknown'}}\n </div>\n @if (log.Description) {\n <div class=\"timeline-description\">\n {{log.Description}}\n </div>\n }\n <div class=\"timeline-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n @if (getSubsystem(log)) {\n <span class=\"subsystem-badge\">\n {{getSubsystem(log)}}\n </span>\n }\n @if (log.parsedDetails?.credentialType) {\n <span class=\"type-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{log.parsedDetails?.credentialType}}\n </span>\n }\n </div>\n </div>\n @if (expandedLogId === log.ID) {\n <div class=\"timeline-details\">\n <div class=\"detail-grid\">\n @if (log.parsedDetails?.ipAddress) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">IP Address</span>\n <span class=\"detail-value\">{{log.parsedDetails?.ipAddress}}</span>\n </div>\n }\n @if (log.parsedDetails?.duration) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Duration</span>\n <span class=\"detail-value\">{{formatDuration(log.parsedDetails?.duration)}}</span>\n </div>\n }\n @if (log.parsedDetails?.credentialId) {\n <div class=\"detail-item\">\n <span class=\"detail-label\">Credential ID</span>\n <span class=\"detail-value mono\">{{log.parsedDetails?.credentialId}}</span>\n </div>\n }\n @if (log.parsedDetails?.errorMessage) {\n <div class=\"detail-item full-width\">\n <span class=\"detail-label\">Error Message</span>\n <span class=\"detail-value error\">{{log.parsedDetails?.errorMessage}}</span>\n </div>\n }\n @if (log.parsedDetails?.userAgent) {\n <div class=\"detail-item full-width\">\n <span class=\"detail-label\">User Agent</span>\n <span class=\"detail-value mono small\">{{log.parsedDetails?.userAgent}}</span>\n </div>\n }\n </div>\n </div>\n }\n <button class=\"expand-btn\">\n <i [class]=\"expandedLogId === log.ID ? 'fa-solid fa-chevron-up' : 'fa-solid fa-chevron-down'\"></i>\n </button>\n </div>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n <!-- Table View -->\n @if (viewMode === 'table' && filteredLogs.length > 0) {\n <div class=\"audit-table-container\">\n <table class=\"audit-table\">\n <thead>\n <tr>\n <th>Timestamp</th>\n <th>User</th>\n <th>Operation</th>\n <th>Description</th>\n <th>Subsystem</th>\n <th>Status</th>\n </tr>\n </thead>\n <tbody>\n @for (log of filteredLogs; track log) {\n <tr [class.failed-row]=\"log.Status === 'Failed'\">\n <td class=\"timestamp\">{{formatDate(log.__mj_CreatedAt)}}</td>\n <td class=\"user\">{{log.User || 'Unknown'}}</td>\n <td class=\"operation\">\n <span class=\"operation-badge\" [style.backgroundColor]=\"getOperationColor(getOperationType(log)) + '20'\" [style.color]=\"getOperationColor(getOperationType(log))\">\n <i [class]=\"getOperationIcon(getOperationType(log))\"></i>\n {{getOperationType(log)}}\n </span>\n </td>\n <td class=\"description\">{{log.Description || '-'}}</td>\n <td class=\"subsystem\">{{getSubsystem(log) || '-'}}</td>\n <td class=\"status\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(log.Status)\">\n <i [class]=\"log.Status === 'Success' ? 'fa-solid fa-check' : 'fa-solid fa-times'\"></i>\n {{log.Status}}\n </span>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n <!-- Empty State -->\n @if (filteredLogs.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-clipboard-list\"></i>\n </div>\n <h3>No Audit Logs</h3>\n @if (searchText || selectedStatus || selectedOperation) {\n <p>\n No events match your current filters.\n <button class=\"btn-link\" (click)=\"searchText = ''; selectedStatus = ''; selectedOperation = ''; applyFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedStatus && !selectedOperation) {\n <p>\n No credential access events in the selected time range.\n </p>\n }\n </div>\n }\n }\n</div>\n", styles: [".audit-container {\n padding: 24px;\n height: 100%;\n overflow-y: auto;\n background: var(--background-secondary, #f8fafc);\n}\n\n/* Header */\n.audit-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 24px;\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.audit-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.audit-subtitle {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.header-actions {\n display: flex;\n gap: 8px;\n}\n\n.btn-secondary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 16px;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--text-primary, #374151);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-secondary:hover {\n background: var(--hover-background, #f9fafb);\n border-color: var(--accent-color, #6366f1);\n color: var(--accent-color, #6366f1);\n}\n\n.btn-icon {\n width: 40px;\n height: 40px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--card-background, #ffffff);\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon:hover {\n background: var(--hover-background, #f9fafb);\n color: var(--accent-color, #6366f1);\n}\n\n/* Stats Grid */\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.stat-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n}\n\n.stat-icon {\n width: 48px;\n height: 48px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 12px;\n flex-shrink: 0;\n}\n\n.stat-icon.total {\n background: rgba(99, 102, 241, 0.1);\n color: #6366f1;\n}\n\n.stat-icon.success {\n background: rgba(16, 185, 129, 0.1);\n color: #10b981;\n}\n\n.stat-icon.failed {\n background: rgba(239, 68, 68, 0.1);\n color: #ef4444;\n}\n\n.stat-icon.users {\n background: rgba(139, 92, 246, 0.1);\n color: #8b5cf6;\n}\n\n.stat-icon i {\n font-size: 20px;\n}\n\n.stat-content {\n flex: 1;\n}\n\n.stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--text-primary, #1f2937);\n line-height: 1;\n}\n\n.stat-value.success {\n color: #10b981;\n}\n\n.stat-value.failed {\n color: #ef4444;\n}\n\n.stat-label {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-top: 4px;\n}\n\n.stat-rate {\n position: absolute;\n top: 12px;\n right: 16px;\n font-size: 12px;\n font-weight: 600;\n color: #10b981;\n background: rgba(16, 185, 129, 0.1);\n padding: 4px 8px;\n border-radius: 8px;\n}\n\n/* Activity Chart */\n.activity-chart {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 20px;\n margin-bottom: 20px;\n}\n\n.chart-header {\n margin-bottom: 16px;\n}\n\n.chart-header h3 {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0;\n}\n\n.chart-header h3 i {\n color: var(--accent-color, #6366f1);\n}\n\n.chart-container {\n height: 120px;\n padding: 0 4px;\n}\n\n.chart-bars {\n display: flex;\n align-items: flex-end;\n height: 100%;\n gap: 2px;\n}\n\n.chart-bar-wrapper {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n\n.chart-bar {\n flex: 1;\n width: 100%;\n max-width: 24px;\n display: flex;\n flex-direction: column-reverse;\n border-radius: 4px 4px 0 0;\n overflow: hidden;\n background: var(--bar-background, #f3f4f6);\n}\n\n.bar-segment {\n width: 100%;\n transition: height 0.3s ease;\n}\n\n.bar-segment.success {\n background: linear-gradient(180deg, #10b981 0%, #059669 100%);\n}\n\n.bar-segment.failed {\n background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%);\n}\n\n.chart-label {\n font-size: 10px;\n color: var(--text-secondary, #9ca3af);\n margin-top: 4px;\n}\n\n.chart-legend {\n display: flex;\n justify-content: center;\n gap: 24px;\n margin-top: 12px;\n padding-top: 12px;\n border-top: 1px solid var(--border-color, #f3f4f6);\n}\n\n.legend-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n}\n\n.legend-color {\n width: 12px;\n height: 12px;\n border-radius: 3px;\n}\n\n.legend-color.success {\n background: #10b981;\n}\n\n.legend-color.failed {\n background: #ef4444;\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n margin-bottom: 20px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n flex-wrap: wrap;\n gap: 12px;\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n/* Search */\n.search-container {\n position: relative;\n min-width: 200px;\n}\n\n.search-container i.fa-search {\n position: absolute;\n left: 12px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text-secondary, #9ca3af);\n font-size: 13px;\n}\n\n.search-container input {\n width: 100%;\n padding: 8px 36px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n font-size: 13px;\n background: var(--input-background, #f9fafb);\n transition: all 0.2s ease;\n}\n\n.search-container input:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n background: white;\n box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);\n}\n\n.search-clear {\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n width: 20px;\n height: 20px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--button-hover, #e5e7eb);\n border-radius: 50%;\n cursor: pointer;\n color: var(--text-secondary, #6b7280);\n font-size: 10px;\n}\n\n.search-clear:hover {\n background: var(--text-secondary, #9ca3af);\n color: white;\n}\n\n.filter-select {\n padding: 8px 12px;\n border: 1px solid var(--border-color, #e5e7eb);\n border-radius: 8px;\n background: var(--input-background, #f9fafb);\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.filter-select:focus {\n outline: none;\n border-color: var(--accent-color, #6366f1);\n}\n\n.results-info {\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--toggle-background, #f3f4f6);\n border-radius: 8px;\n padding: 4px;\n}\n\n.toggle-btn {\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n border-radius: 6px;\n color: var(--text-secondary, #6b7280);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.toggle-btn:hover {\n color: var(--text-primary, #1f2937);\n}\n\n.toggle-btn.active {\n background: var(--card-background, #ffffff);\n color: var(--accent-color, #6366f1);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n/* Timeline View */\n.timeline-container {\n display: flex;\n flex-direction: column;\n gap: 24px;\n}\n\n.timeline-group {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.timeline-date {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 16px 20px;\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.date-label {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.date-count {\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n background: var(--badge-background, #e5e7eb);\n padding: 4px 10px;\n border-radius: 12px;\n}\n\n.timeline-items {\n padding: 8px 0;\n}\n\n.timeline-item {\n display: flex;\n padding: 12px 20px;\n transition: background 0.2s ease;\n}\n\n.timeline-item:hover {\n background: var(--hover-background, #f9fafb);\n}\n\n.timeline-item.failed {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.timeline-item.failed:hover {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timeline-line {\n display: flex;\n flex-direction: column;\n align-items: center;\n width: 24px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.timeline-dot {\n width: 12px;\n height: 12px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.timeline-content {\n flex: 1;\n min-width: 0;\n cursor: pointer;\n position: relative;\n}\n\n.timeline-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 8px;\n}\n\n.timeline-operation {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.timeline-operation i {\n font-size: 14px;\n}\n\n.operation-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n}\n\n.timeline-time {\n font-size: 12px;\n font-family: monospace;\n color: var(--text-secondary, #6b7280);\n}\n\n.timeline-body {\n margin-bottom: 8px;\n}\n\n.timeline-user {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--text-secondary, #6b7280);\n margin-bottom: 4px;\n}\n\n.timeline-user i {\n font-size: 11px;\n}\n\n.timeline-description {\n font-size: 13px;\n color: var(--text-primary, #374151);\n margin-bottom: 8px;\n}\n\n.timeline-badges {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.status-badge.success {\n background: #d1fae5;\n color: #059669;\n}\n\n.status-badge.failed {\n background: #fee2e2;\n color: #dc2626;\n}\n\n.status-badge.unknown {\n background: #f3f4f6;\n color: #6b7280;\n}\n\n.status-badge i {\n font-size: 10px;\n}\n\n.subsystem-badge,\n.type-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 4px 10px;\n background: var(--badge-background, #f3f4f6);\n border-radius: 12px;\n font-size: 11px;\n color: var(--text-secondary, #6b7280);\n}\n\n.type-badge {\n background: rgba(99, 102, 241, 0.1);\n color: var(--accent-color, #6366f1);\n}\n\n.type-badge i {\n font-size: 10px;\n}\n\n/* Timeline Details */\n.timeline-details {\n margin-top: 12px;\n padding: 16px;\n background: var(--detail-background, #f9fafb);\n border-radius: 8px;\n border: 1px solid var(--border-color, #e5e7eb);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.detail-item.full-width {\n grid-column: 1 / -1;\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n}\n\n.detail-value {\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n}\n\n.detail-value.mono {\n font-family: monospace;\n font-size: 12px;\n}\n\n.detail-value.small {\n font-size: 11px;\n word-break: break-all;\n}\n\n.detail-value.error {\n color: #dc2626;\n}\n\n.expand-btn {\n position: absolute;\n top: 0;\n right: 0;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: none;\n color: var(--text-secondary, #9ca3af);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.expand-btn:hover {\n color: var(--accent-color, #6366f1);\n}\n\n.expand-btn i {\n font-size: 10px;\n}\n\n/* Table View */\n.audit-table-container {\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.audit-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.audit-table th {\n padding: 14px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n color: var(--text-secondary, #6b7280);\n background: var(--header-background, #f9fafb);\n border-bottom: 1px solid var(--border-color, #e5e7eb);\n}\n\n.audit-table td {\n padding: 14px 16px;\n font-size: 13px;\n color: var(--text-primary, #1f2937);\n border-bottom: 1px solid var(--border-color, #f3f4f6);\n}\n\n.audit-table tr:last-child td {\n border-bottom: none;\n}\n\n.audit-table tr:hover td {\n background: var(--hover-background, #f9fafb);\n}\n\n.audit-table tr.failed-row td {\n background: rgba(239, 68, 68, 0.02);\n}\n\n.audit-table tr.failed-row:hover td {\n background: rgba(239, 68, 68, 0.05);\n}\n\n.timestamp {\n font-family: monospace;\n font-size: 12px;\n color: var(--text-secondary, #6b7280);\n white-space: nowrap;\n}\n\n.user {\n font-weight: 500;\n}\n\n.operation-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 10px;\n border-radius: 6px;\n font-size: 11px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.operation-badge i {\n font-size: 10px;\n}\n\n.description {\n max-width: 300px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.subsystem {\n color: var(--text-secondary, #6b7280);\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: 64px 24px;\n background: var(--card-background, #ffffff);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--icon-background, #f3f4f6);\n border-radius: 50%;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--text-secondary, #d1d5db);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 600;\n color: var(--text-primary, #1f2937);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--text-secondary, #6b7280);\n margin: 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--accent-color, #6366f1);\n cursor: pointer;\n font-size: inherit;\n padding: 0;\n text-decoration: underline;\n}\n\n.btn-link:hover {\n color: var(--accent-hover, #4f46e5);\n}\n\n/* Responsive */\n@media (max-width: 1200px) {\n .stats-grid {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n\n@media (max-width: 768px) {\n .audit-container {\n padding: 16px;\n }\n\n .audit-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .stats-grid {\n grid-template-columns: 1fr;\n }\n\n .toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left {\n flex-direction: column;\n }\n\n .search-container {\n width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n\n .chart-label {\n display: none;\n }\n\n .chart-label:nth-child(4n+1) {\n display: block;\n }\n}\n"] }]
862
866
  }], () => [{ type: i0.ChangeDetectorRef }], null); })();
863
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsAuditResourceComponent, { className: "CredentialsAuditResourceComponent", filePath: "src/Credentials/components/credentials-audit-resource.component.ts", lineNumber: 42 }); })();
867
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsAuditResourceComponent, { className: "CredentialsAuditResourceComponent", filePath: "src/Credentials/components/credentials-audit-resource.component.ts", lineNumber: 38 }); })();
864
868
  //# sourceMappingURL=credentials-audit-resource.component.js.map