@memberjunction/ng-dashboards 5.34.1 → 5.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (346) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.d.ts +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +399 -292
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts +8 -2
  6. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.d.ts.map +1 -1
  7. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js +87 -85
  8. package/dist/AI/components/analytics/agent-runs/agent-run-analysis.component.js.map +1 -1
  9. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +75 -0
  10. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  11. package/dist/AI/components/analytics/ai-analytics-resource.component.js +400 -89
  12. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  13. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts +5 -0
  14. package/dist/AI/components/analytics/analytics-filter-bar.component.d.ts.map +1 -1
  15. package/dist/AI/components/analytics/analytics-filter-bar.component.js +184 -135
  16. package/dist/AI/components/analytics/analytics-filter-bar.component.js.map +1 -1
  17. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +8 -2
  18. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  19. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +104 -103
  20. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  21. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts +8 -2
  22. package/dist/AI/components/analytics/error-analysis/error-analysis.component.d.ts.map +1 -1
  23. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js +76 -74
  24. package/dist/AI/components/analytics/error-analysis/error-analysis.component.js.map +1 -1
  25. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  26. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +67 -87
  27. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  28. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +12 -19
  29. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  30. package/dist/AI/components/analytics/model-performance/model-performance.component.js +96 -203
  31. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  32. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  33. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +110 -126
  34. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  35. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  36. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +61 -77
  37. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  38. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +990 -992
  39. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  40. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +6 -3
  41. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  42. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +493 -490
  43. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  44. package/dist/AI/components/models/model-management.component.d.ts +17 -0
  45. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/models/model-management.component.js +370 -425
  47. package/dist/AI/components/models/model-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-management.component.d.ts +17 -0
  49. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  50. package/dist/AI/components/prompts/prompt-management.component.js +317 -357
  51. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  52. package/dist/AI/components/requests/agent-requests-resource.component.d.ts +11 -0
  53. package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -1
  54. package/dist/AI/components/requests/agent-requests-resource.component.js +170 -175
  55. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.d.ts +19 -0
  57. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  58. package/dist/AI/components/system/system-configuration.component.js +403 -362
  59. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  60. package/dist/AI/components/tags/tags-resource.component.js +781 -783
  61. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  62. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +8 -3
  63. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  64. package/dist/AI/components/vectors/vector-management-resource.component.js +547 -521
  65. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  66. package/dist/Actions/components/actions-overview.component.d.ts +6 -0
  67. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  68. package/dist/Actions/components/actions-overview.component.js +79 -30
  69. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  70. package/dist/Actions/components/execution-monitoring.component.d.ts +9 -3
  71. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  72. package/dist/Actions/components/execution-monitoring.component.js +196 -142
  73. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  74. package/dist/Actions/components/explorer/action-explorer.component.d.ts +41 -1
  75. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  76. package/dist/Actions/components/explorer/action-explorer.component.js +388 -94
  77. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  78. package/dist/Actions/components/explorer/index.d.ts +0 -1
  79. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  80. package/dist/Actions/components/explorer/index.js +0 -1
  81. package/dist/Actions/components/explorer/index.js.map +1 -1
  82. package/dist/Admin/admin-data-schema.component.js +32 -40
  83. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  84. package/dist/Admin/admin-dev-tools-resource.component.js +32 -40
  85. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  86. package/dist/Admin/admin-identity-access.component.js +32 -40
  87. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  88. package/dist/Admin/admin-monitoring.component.js +32 -40
  89. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  90. package/dist/ApplicationRoles/application-roles-resource.component.js +76 -82
  91. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  92. package/dist/Archiving/components/archive-config-resource.component.d.ts.map +1 -1
  93. package/dist/Archiving/components/archive-config-resource.component.js +24 -5
  94. package/dist/Archiving/components/archive-config-resource.component.js.map +1 -1
  95. package/dist/Archiving/components/archive-runs-resource.component.d.ts.map +1 -1
  96. package/dist/Archiving/components/archive-runs-resource.component.js +24 -5
  97. package/dist/Archiving/components/archive-runs-resource.component.js.map +1 -1
  98. package/dist/Communication/communication-logs-resource.component.d.ts +1 -1
  99. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  100. package/dist/Communication/communication-logs-resource.component.js +80 -99
  101. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  102. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  103. package/dist/Communication/communication-monitor-resource.component.js +127 -106
  104. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  105. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  106. package/dist/Communication/communication-providers-resource.component.js +44 -45
  107. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  108. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  109. package/dist/Communication/communication-runs-resource.component.js +60 -58
  110. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  111. package/dist/Communication/communication-templates-resource.component.d.ts +1 -1
  112. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  113. package/dist/Communication/communication-templates-resource.component.js +139 -162
  114. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  115. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +7 -0
  116. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  117. package/dist/Credentials/components/credentials-audit-resource.component.js +310 -297
  118. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  119. package/dist/Credentials/components/credentials-categories-resource.component.js +245 -266
  120. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  121. package/dist/Credentials/components/credentials-list-resource.component.d.ts +7 -0
  122. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  123. package/dist/Credentials/components/credentials-list-resource.component.js +381 -399
  124. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  125. package/dist/Credentials/components/credentials-overview-resource.component.js +222 -228
  126. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  127. package/dist/Credentials/components/credentials-types-resource.component.d.ts +6 -0
  128. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  129. package/dist/Credentials/components/credentials-types-resource.component.js +294 -305
  130. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  131. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts +8 -0
  132. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.d.ts.map +1 -1
  133. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +21 -0
  134. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  135. package/dist/DatabaseDesigner/components/entity-list.component.js +147 -160
  136. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  137. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  138. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  139. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +19 -1
  140. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  141. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -16
  142. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  143. package/dist/Home/home-dashboard.component.d.ts +6 -0
  144. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  145. package/dist/Home/home-dashboard.component.js +521 -485
  146. package/dist/Home/home-dashboard.component.js.map +1 -1
  147. package/dist/Integration/components/activity/activity.component.d.ts +8 -0
  148. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  149. package/dist/Integration/components/activity/activity.component.js +309 -318
  150. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  151. package/dist/Integration/components/connections/connections.component.js +866 -847
  152. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  153. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +234 -233
  154. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  155. package/dist/Integration/components/overview/overview.component.js +182 -163
  156. package/dist/Integration/components/overview/overview.component.js.map +1 -1
  157. package/dist/Integration/components/pipelines/pipelines.component.d.ts +2 -0
  158. package/dist/Integration/components/pipelines/pipelines.component.d.ts.map +1 -1
  159. package/dist/Integration/components/pipelines/pipelines.component.js +610 -606
  160. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  161. package/dist/Integration/components/schedules/schedules.component.js +241 -241
  162. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  163. package/dist/Integration/integration.module.d.ts +1 -1
  164. package/dist/Integration/integration.module.d.ts.map +1 -1
  165. package/dist/Integration/integration.module.js +28 -1
  166. package/dist/Integration/integration.module.js.map +1 -1
  167. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +673 -674
  168. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  169. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +54 -51
  170. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  171. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +745 -703
  172. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  173. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts +12 -1
  174. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.d.ts.map +1 -1
  175. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +191 -120
  176. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  177. package/dist/Lists/components/lists-browse-resource.component.d.ts +18 -1
  178. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  179. package/dist/Lists/components/lists-browse-resource.component.js +486 -532
  180. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  181. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  182. package/dist/Lists/components/lists-categories-resource.component.js +152 -160
  183. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  184. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  185. package/dist/Lists/components/lists-my-lists-resource.component.js +302 -319
  186. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  187. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  188. package/dist/Lists/components/lists-operations-resource.component.js +234 -246
  189. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  190. package/dist/MCP/mcp-dashboard.component.d.ts +20 -0
  191. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  192. package/dist/MCP/mcp-dashboard.component.js +1248 -1338
  193. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  194. package/dist/MCP/mcp.module.d.ts +1 -1
  195. package/dist/MCP/mcp.module.d.ts.map +1 -1
  196. package/dist/MCP/mcp.module.js +34 -1
  197. package/dist/MCP/mcp.module.js.map +1 -1
  198. package/dist/Permissions/audit-log-resource.component.js +76 -85
  199. package/dist/Permissions/audit-log-resource.component.js.map +1 -1
  200. package/dist/Permissions/resource-access-resource.component.js +64 -69
  201. package/dist/Permissions/resource-access-resource.component.js.map +1 -1
  202. package/dist/Permissions/user-access-resource.component.js +63 -74
  203. package/dist/Permissions/user-access-resource.component.js.map +1 -1
  204. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  205. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  206. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +2 -1
  207. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  208. package/dist/Scheduling/components/scheduling-activity-resource.component.js +11 -12
  209. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  210. package/dist/Scheduling/components/scheduling-activity.component.d.ts +9 -1
  211. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  212. package/dist/Scheduling/components/scheduling-activity.component.js +250 -197
  213. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  214. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +2 -1
  215. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  216. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +11 -12
  217. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  218. package/dist/Scheduling/components/scheduling-jobs.component.d.ts +9 -1
  219. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  220. package/dist/Scheduling/components/scheduling-jobs.component.js +203 -147
  221. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  222. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +2 -1
  223. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  224. package/dist/Scheduling/components/scheduling-overview-resource.component.js +11 -12
  225. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  226. package/dist/Scheduling/components/scheduling-overview.component.d.ts +3 -1
  227. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  228. package/dist/Scheduling/components/scheduling-overview.component.js +224 -190
  229. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  230. package/dist/Scheduling/scheduling-dashboard.component.d.ts +19 -6
  231. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  232. package/dist/Scheduling/scheduling-dashboard.component.js +262 -104
  233. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  234. package/dist/SystemDiagnostics/system-diagnostics.component.js +773 -783
  235. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  236. package/dist/Testing/components/testing-analytics-resource.component.d.ts +2 -1
  237. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  238. package/dist/Testing/components/testing-analytics-resource.component.js +7 -14
  239. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  240. package/dist/Testing/components/testing-analytics.component.d.ts +3 -1
  241. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  242. package/dist/Testing/components/testing-analytics.component.js +420 -393
  243. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  244. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts +2 -1
  245. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  246. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +16 -19
  247. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  248. package/dist/Testing/components/testing-dashboard-tab.component.d.ts +3 -1
  249. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  250. package/dist/Testing/components/testing-dashboard-tab.component.js +157 -122
  251. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  252. package/dist/Testing/components/testing-explorer-resource.component.d.ts +2 -1
  253. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  254. package/dist/Testing/components/testing-explorer-resource.component.js +7 -12
  255. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  256. package/dist/Testing/components/testing-explorer.component.d.ts +8 -1
  257. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  258. package/dist/Testing/components/testing-explorer.component.js +587 -608
  259. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  260. package/dist/Testing/components/testing-review-resource.component.d.ts +4 -1
  261. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  262. package/dist/Testing/components/testing-review-resource.component.js +9 -12
  263. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  264. package/dist/Testing/components/testing-review.component.d.ts +3 -1
  265. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  266. package/dist/Testing/components/testing-review.component.js +310 -274
  267. package/dist/Testing/components/testing-review.component.js.map +1 -1
  268. package/dist/Testing/components/testing-runs-resource.component.d.ts +2 -1
  269. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  270. package/dist/Testing/components/testing-runs-resource.component.js +16 -19
  271. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  272. package/dist/Testing/components/testing-runs.component.d.ts +3 -1
  273. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  274. package/dist/Testing/components/testing-runs.component.js +307 -273
  275. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  276. package/dist/Testing/testing-dashboard.component.d.ts +2 -0
  277. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  278. package/dist/Testing/testing-dashboard.component.js +107 -93
  279. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  280. package/dist/VersionHistory/components/diff-resource.component.js +185 -188
  281. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -1
  282. package/dist/VersionHistory/components/graph-resource.component.js +154 -184
  283. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -1
  284. package/dist/VersionHistory/components/labels-resource.component.d.ts +7 -0
  285. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -1
  286. package/dist/VersionHistory/components/labels-resource.component.js +350 -354
  287. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  288. package/dist/VersionHistory/components/restore-resource.component.js +163 -169
  289. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  290. package/dist/actions-dashboards.module.d.ts +15 -16
  291. package/dist/actions-dashboards.module.d.ts.map +1 -1
  292. package/dist/actions-dashboards.module.js +34 -11
  293. package/dist/actions-dashboards.module.js.map +1 -1
  294. package/dist/ai-dashboards.module.d.ts +45 -48
  295. package/dist/ai-dashboards.module.d.ts.map +1 -1
  296. package/dist/ai-dashboards.module.js +36 -10
  297. package/dist/ai-dashboards.module.js.map +1 -1
  298. package/dist/archiving-dashboards.module.d.ts +2 -1
  299. package/dist/archiving-dashboards.module.d.ts.map +1 -1
  300. package/dist/archiving-dashboards.module.js +12 -2
  301. package/dist/archiving-dashboards.module.js.map +1 -1
  302. package/dist/communication-dashboards.module.d.ts +2 -1
  303. package/dist/communication-dashboards.module.d.ts.map +1 -1
  304. package/dist/communication-dashboards.module.js +24 -3
  305. package/dist/communication-dashboards.module.js.map +1 -1
  306. package/dist/core-dashboards.module.d.ts +1 -1
  307. package/dist/core-dashboards.module.d.ts.map +1 -1
  308. package/dist/core-dashboards.module.js +31 -1
  309. package/dist/core-dashboards.module.js.map +1 -1
  310. package/dist/credentials-dashboards.module.d.ts +1 -1
  311. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  312. package/dist/credentials-dashboards.module.js +28 -1
  313. package/dist/credentials-dashboards.module.js.map +1 -1
  314. package/dist/lists-dashboards.module.d.ts +1 -1
  315. package/dist/lists-dashboards.module.d.ts.map +1 -1
  316. package/dist/lists-dashboards.module.js +28 -1
  317. package/dist/lists-dashboards.module.js.map +1 -1
  318. package/dist/public-api.d.ts +2 -2
  319. package/dist/public-api.d.ts.map +1 -1
  320. package/dist/public-api.js +3 -3
  321. package/dist/public-api.js.map +1 -1
  322. package/dist/scheduling-dashboards.module.d.ts +1 -1
  323. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  324. package/dist/scheduling-dashboards.module.js +31 -1
  325. package/dist/scheduling-dashboards.module.js.map +1 -1
  326. package/dist/testing-dashboards.module.d.ts +8 -7
  327. package/dist/testing-dashboards.module.d.ts.map +1 -1
  328. package/dist/testing-dashboards.module.js +30 -0
  329. package/dist/testing-dashboards.module.js.map +1 -1
  330. package/package.json +52 -52
  331. package/dist/AI/components/agents/agent-filter-panel.component.d.ts +0 -56
  332. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +0 -1
  333. package/dist/AI/components/agents/agent-filter-panel.component.js +0 -285
  334. package/dist/AI/components/agents/agent-filter-panel.component.js.map +0 -1
  335. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts +0 -49
  336. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +0 -1
  337. package/dist/AI/components/prompts/prompt-filter-panel.component.js +0 -184
  338. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +0 -1
  339. package/dist/AI/components/system/system-config-filter-panel.component.d.ts +0 -33
  340. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +0 -1
  341. package/dist/AI/components/system/system-config-filter-panel.component.js +0 -144
  342. package/dist/AI/components/system/system-config-filter-panel.component.js.map +0 -1
  343. package/dist/Actions/components/explorer/action-toolbar.component.d.ts +0 -63
  344. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +0 -1
  345. package/dist/Actions/components/explorer/action-toolbar.component.js +0 -463
  346. package/dist/Actions/components/explorer/action-toolbar.component.js.map +0 -1
@@ -10,410 +10,391 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
10
10
  import { RunView } from '@memberjunction/core';
11
11
  import { MJNotificationService } from '@memberjunction/ng-notifications';
12
12
  import * as i0 from "@angular/core";
13
- import * as i1 from "@angular/forms";
14
- import * as i2 from "@memberjunction/ng-ui-components";
15
- import * as i3 from "@memberjunction/ng-shared-generic";
16
- import * as i4 from "@memberjunction/ng-credentials";
17
- import * as i5 from "@angular/common";
13
+ import * as i1 from "@memberjunction/ng-ui-components";
14
+ import * as i2 from "@memberjunction/ng-shared-generic";
15
+ import * as i3 from "@memberjunction/ng-credentials";
16
+ import * as i4 from "@angular/common";
18
17
  const _c0 = ["typeEditPanel"];
19
- function CredentialsTypesResourceComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
20
- i0.ɵɵelement(0, "mj-loading", 2);
21
- } }
22
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
23
- const _r3 = i0.ɵɵgetCurrentView();
24
- i0.ɵɵelementStart(0, "button", 33);
25
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_15_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.createNewType()); });
26
- i0.ɵɵelement(1, "i", 34);
27
- i0.ɵɵelementStart(2, "span");
28
- i0.ɵɵtext(3, "New Type");
29
- i0.ɵɵelementEnd()();
30
- } }
31
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_21_Template(rf, ctx) { if (rf & 1) {
32
- const _r5 = i0.ɵɵgetCurrentView();
33
- i0.ɵɵelementStart(0, "button", 35);
34
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_21_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r5); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.onSearchChange("")); });
35
- i0.ɵɵelement(1, "i", 36);
18
+ function CredentialsTypesResourceComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
19
+ const _r2 = i0.ɵɵgetCurrentView();
20
+ i0.ɵɵelementStart(0, "button", 17);
21
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createNewType()); });
22
+ i0.ɵɵelement(1, "i", 18);
23
+ i0.ɵɵtext(2, " New Type ");
36
24
  i0.ɵɵelementEnd();
37
25
  } }
38
- function CredentialsTypesResourceComponent_Conditional_2_For_26_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "option", 22);
40
- i0.ɵɵtext(1);
41
- i0.ɵɵelementEnd();
42
- } if (rf & 2) {
43
- const cat_r6 = ctx.$implicit;
44
- i0.ɵɵproperty("value", cat_r6);
45
- i0.ɵɵadvance();
46
- i0.ɵɵtextInterpolate(cat_r6);
26
+ function CredentialsTypesResourceComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelement(0, "mj-loading", 14);
47
28
  } }
48
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelementStart(0, "div", 46);
29
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "div", 33);
50
31
  i0.ɵɵtext(1);
51
32
  i0.ɵɵpipe(2, "slice");
52
33
  i0.ɵɵelementEnd();
53
34
  } if (rf & 2) {
54
- const type_r8 = i0.ɵɵnextContext().$implicit;
35
+ const type_r5 = i0.ɵɵnextContext().$implicit;
55
36
  i0.ɵɵadvance();
56
- i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2, type_r8.Description, 0, 60), "", type_r8.Description.length > 60 ? "..." : "", " ");
37
+ i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2, type_r5.Description, 0, 60), "", type_r5.Description.length > 60 ? "..." : "", " ");
57
38
  } }
58
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
59
- i0.ɵɵelementStart(0, "span", 48);
60
- i0.ɵɵelement(1, "i", 11);
39
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
40
+ i0.ɵɵelementStart(0, "span", 35);
41
+ i0.ɵɵelement(1, "i", 43);
61
42
  i0.ɵɵtext(2);
62
43
  i0.ɵɵelementEnd();
63
44
  } if (rf & 2) {
64
- const type_r8 = i0.ɵɵnextContext().$implicit;
45
+ const type_r5 = i0.ɵɵnextContext().$implicit;
65
46
  i0.ɵɵadvance(2);
66
- i0.ɵɵtextInterpolate1(" ", type_r8.credentialCount, " ");
47
+ i0.ɵɵtextInterpolate1(" ", type_r5.credentialCount, " ");
67
48
  } }
68
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
69
- i0.ɵɵelementStart(0, "span", 49);
70
- i0.ɵɵelement(1, "i", 56);
49
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "span", 36);
51
+ i0.ɵɵelement(1, "i", 44);
71
52
  i0.ɵɵtext(2);
72
53
  i0.ɵɵelementEnd();
73
54
  } if (rf & 2) {
74
- const type_r8 = i0.ɵɵnextContext().$implicit;
55
+ const type_r5 = i0.ɵɵnextContext().$implicit;
75
56
  i0.ɵɵadvance(2);
76
- i0.ɵɵtextInterpolate1(" ", type_r8.activeCount, " active ");
57
+ i0.ɵɵtextInterpolate1(" ", type_r5.activeCount, " active ");
77
58
  } }
78
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
79
- i0.ɵɵelementStart(0, "span", 50);
80
- i0.ɵɵelement(1, "i", 57);
59
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
60
+ i0.ɵɵelementStart(0, "span", 37);
61
+ i0.ɵɵelement(1, "i", 45);
81
62
  i0.ɵɵtext(2);
82
63
  i0.ɵɵelementEnd();
83
64
  } if (rf & 2) {
84
- const type_r8 = i0.ɵɵnextContext().$implicit;
65
+ const type_r5 = i0.ɵɵnextContext().$implicit;
85
66
  i0.ɵɵadvance(2);
86
- i0.ɵɵtextInterpolate1(" ", type_r8.expiringCount, " expiring ");
67
+ i0.ɵɵtextInterpolate1(" ", type_r5.expiringCount, " expiring ");
87
68
  } }
88
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
89
- const _r9 = i0.ɵɵgetCurrentView();
90
- i0.ɵɵelementStart(0, "button", 58);
91
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_12_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r9); const type_r8 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.createCredentialForType(type_r8, $event)); });
92
- i0.ɵɵelement(1, "i", 34);
69
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
70
+ const _r6 = i0.ɵɵgetCurrentView();
71
+ i0.ɵɵelementStart(0, "button", 46);
72
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_12_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const type_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCredentialForType(type_r5, $event)); });
73
+ i0.ɵɵelement(1, "i", 18);
93
74
  i0.ɵɵelementEnd();
94
75
  } }
95
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
96
- const _r10 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "button", 59);
98
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const type_r8 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.editType(type_r8, $event)); });
99
- i0.ɵɵelement(1, "i", 60);
76
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
77
+ const _r7 = i0.ɵɵgetCurrentView();
78
+ i0.ɵɵelementStart(0, "button", 47);
79
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const type_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editType(type_r5, $event)); });
80
+ i0.ɵɵelement(1, "i", 48);
100
81
  i0.ɵɵelementEnd();
101
82
  } }
102
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
103
- const _r11 = i0.ɵɵgetCurrentView();
104
- i0.ɵɵelementStart(0, "button", 61);
105
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_14_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r11); const type_r8 = i0.ɵɵnextContext().$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.deleteType(type_r8, $event)); });
106
- i0.ɵɵelement(1, "i", 62);
83
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
84
+ const _r8 = i0.ɵɵgetCurrentView();
85
+ i0.ɵɵelementStart(0, "button", 49);
86
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_14_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const type_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteType(type_r5, $event)); });
87
+ i0.ɵɵelement(1, "i", 50);
107
88
  i0.ɵɵelementEnd();
108
89
  } }
109
- function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Template(rf, ctx) { if (rf & 1) {
110
- const _r7 = i0.ɵɵgetCurrentView();
111
- i0.ɵɵelementStart(0, "div", 42);
112
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Template_div_click_0_listener() { const type_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.selectType(type_r8)); });
113
- i0.ɵɵelementStart(1, "div", 43);
90
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template(rf, ctx) { if (rf & 1) {
91
+ const _r4 = i0.ɵɵgetCurrentView();
92
+ i0.ɵɵelementStart(0, "div", 29);
93
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template_div_click_0_listener() { const type_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectType(type_r5)); });
94
+ i0.ɵɵelementStart(1, "div", 30);
114
95
  i0.ɵɵelement(2, "i");
115
96
  i0.ɵɵelementEnd();
116
- i0.ɵɵelementStart(3, "div", 44)(4, "div", 45);
97
+ i0.ɵɵelementStart(3, "div", 31)(4, "div", 32);
117
98
  i0.ɵɵtext(5);
118
99
  i0.ɵɵelementEnd();
119
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_6_Template, 3, 6, "div", 46);
120
- i0.ɵɵelementStart(7, "div", 47);
121
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_8_Template, 3, 1, "span", 48);
122
- i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_9_Template, 3, 1, "span", 49);
123
- i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_10_Template, 3, 1, "span", 50);
100
+ i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_6_Template, 3, 6, "div", 33);
101
+ i0.ɵɵelementStart(7, "div", 34);
102
+ i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_8_Template, 3, 1, "span", 35);
103
+ i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_9_Template, 3, 1, "span", 36);
104
+ i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_10_Template, 3, 1, "span", 37);
124
105
  i0.ɵɵelementEnd()();
125
- i0.ɵɵelementStart(11, "div", 51);
126
- i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_12_Template, 2, 0, "button", 52);
127
- i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_13_Template, 2, 0, "button", 53);
128
- i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Conditional_14_Template, 2, 0, "button", 54);
106
+ i0.ɵɵelementStart(11, "div", 38);
107
+ i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_12_Template, 2, 0, "button", 39);
108
+ i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_13_Template, 2, 0, "button", 40);
109
+ i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_14_Template, 2, 0, "button", 41);
129
110
  i0.ɵɵelementEnd();
130
- i0.ɵɵelement(15, "i", 55);
111
+ i0.ɵɵelement(15, "i", 42);
131
112
  i0.ɵɵelementEnd();
132
113
  } if (rf & 2) {
133
- const type_r8 = ctx.$implicit;
134
- const ctx_r3 = i0.ɵɵnextContext(3);
135
- i0.ɵɵclassProp("selected", ctx_r3.IsTypeSelected(type_r8));
114
+ const type_r5 = ctx.$implicit;
115
+ const ctx_r2 = i0.ɵɵnextContext(3);
116
+ i0.ɵɵclassProp("selected", ctx_r2.IsTypeSelected(type_r5));
136
117
  i0.ɵɵadvance();
137
- i0.ɵɵstyleProp("background-color", ctx_r3.getCategoryColor(type_r8.Category) + "15")("color", ctx_r3.getCategoryColor(type_r8.Category));
118
+ i0.ɵɵstyleProp("background-color", ctx_r2.getCategoryColor(type_r5.Category) + "15")("color", ctx_r2.getCategoryColor(type_r5.Category));
138
119
  i0.ɵɵadvance();
139
- i0.ɵɵclassMap(type_r8.IconClass || "fa-solid fa-key");
120
+ i0.ɵɵclassMap(type_r5.IconClass || "fa-solid fa-key");
140
121
  i0.ɵɵadvance(3);
141
- i0.ɵɵtextInterpolate(type_r8.Name);
122
+ i0.ɵɵtextInterpolate(type_r5.Name);
142
123
  i0.ɵɵadvance();
143
- i0.ɵɵconditional(type_r8.Description ? 6 : -1);
124
+ i0.ɵɵconditional(type_r5.Description ? 6 : -1);
144
125
  i0.ɵɵadvance(2);
145
- i0.ɵɵconditional(type_r8.credentialCount > 0 ? 8 : -1);
126
+ i0.ɵɵconditional(type_r5.credentialCount > 0 ? 8 : -1);
146
127
  i0.ɵɵadvance();
147
- i0.ɵɵconditional(type_r8.activeCount > 0 ? 9 : -1);
128
+ i0.ɵɵconditional(type_r5.activeCount > 0 ? 9 : -1);
148
129
  i0.ɵɵadvance();
149
- i0.ɵɵconditional(type_r8.expiringCount > 0 ? 10 : -1);
130
+ i0.ɵɵconditional(type_r5.expiringCount > 0 ? 10 : -1);
150
131
  i0.ɵɵadvance(2);
151
- i0.ɵɵconditional(ctx_r3.UserCanCreateCredential ? 12 : -1);
132
+ i0.ɵɵconditional(ctx_r2.UserCanCreateCredential ? 12 : -1);
152
133
  i0.ɵɵadvance();
153
- i0.ɵɵconditional(ctx_r3.UserCanUpdate ? 13 : -1);
134
+ i0.ɵɵconditional(ctx_r2.UserCanUpdate ? 13 : -1);
154
135
  i0.ɵɵadvance();
155
- i0.ɵɵconditional(ctx_r3.UserCanDelete && type_r8.credentialCount === 0 ? 14 : -1);
136
+ i0.ɵɵconditional(ctx_r2.UserCanDelete && type_r5.credentialCount === 0 ? 14 : -1);
156
137
  } }
157
- function CredentialsTypesResourceComponent_Conditional_2_For_35_Template(rf, ctx) { if (rf & 1) {
158
- i0.ɵɵelementStart(0, "div", 29)(1, "div", 37);
138
+ function CredentialsTypesResourceComponent_Conditional_15_For_3_Template(rf, ctx) { if (rf & 1) {
139
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 24);
159
140
  i0.ɵɵelement(2, "i");
160
- i0.ɵɵelementStart(3, "span", 38);
141
+ i0.ɵɵelementStart(3, "span", 25);
161
142
  i0.ɵɵtext(4);
162
143
  i0.ɵɵelementEnd();
163
- i0.ɵɵelementStart(5, "span", 39);
144
+ i0.ɵɵelementStart(5, "span", 26);
164
145
  i0.ɵɵtext(6);
165
146
  i0.ɵɵelementEnd()();
166
- i0.ɵɵelementStart(7, "div", 40);
167
- i0.ɵɵrepeaterCreate(8, CredentialsTypesResourceComponent_Conditional_2_For_35_For_9_Template, 16, 16, "div", 41, i0.ɵɵrepeaterTrackByIdentity);
147
+ i0.ɵɵelementStart(7, "div", 27);
148
+ i0.ɵɵrepeaterCreate(8, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template, 16, 16, "div", 28, i0.ɵɵrepeaterTrackByIdentity);
168
149
  i0.ɵɵelementEnd()();
169
150
  } if (rf & 2) {
170
- const entry_r12 = ctx.$implicit;
171
- const ctx_r3 = i0.ɵɵnextContext(2);
151
+ const entry_r9 = ctx.$implicit;
152
+ const ctx_r2 = i0.ɵɵnextContext(2);
172
153
  i0.ɵɵadvance();
173
- i0.ɵɵstyleProp("border-left-color", ctx_r3.getCategoryColor(entry_r12.key));
154
+ i0.ɵɵstyleProp("border-left-color", ctx_r2.getCategoryColor(entry_r9.key));
174
155
  i0.ɵɵadvance();
175
- i0.ɵɵclassMap(ctx_r3.getCategoryIcon(entry_r12.key));
176
- i0.ɵɵstyleProp("color", ctx_r3.getCategoryColor(entry_r12.key));
156
+ i0.ɵɵclassMap(ctx_r2.getCategoryIcon(entry_r9.key));
157
+ i0.ɵɵstyleProp("color", ctx_r2.getCategoryColor(entry_r9.key));
177
158
  i0.ɵɵadvance(2);
178
- i0.ɵɵtextInterpolate(entry_r12.key);
159
+ i0.ɵɵtextInterpolate(entry_r9.key);
179
160
  i0.ɵɵadvance(2);
180
- i0.ɵɵtextInterpolate(entry_r12.value.length);
161
+ i0.ɵɵtextInterpolate(entry_r9.value.length);
181
162
  i0.ɵɵadvance(2);
182
- i0.ɵɵrepeater(entry_r12.value);
163
+ i0.ɵɵrepeater(entry_r9.value);
183
164
  } }
184
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_5_Template(rf, ctx) { if (rf & 1) {
185
- const _r13 = i0.ɵɵgetCurrentView();
165
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
166
+ const _r10 = i0.ɵɵgetCurrentView();
186
167
  i0.ɵɵelementStart(0, "p");
187
168
  i0.ɵɵtext(1, " No types match your current filters. ");
188
- i0.ɵɵelementStart(2, "button", 65);
189
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r13); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.clearFilters()); });
169
+ i0.ɵɵelementStart(2, "button", 54);
170
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.clearFilters()); });
190
171
  i0.ɵɵtext(3, "Clear filters");
191
172
  i0.ɵɵelementEnd()();
192
173
  } }
193
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_6_Template(rf, ctx) { if (rf & 1) {
174
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
194
175
  i0.ɵɵelementStart(0, "p");
195
176
  i0.ɵɵtext(1, " Get started by creating your first credential type. ");
196
177
  i0.ɵɵelementEnd();
197
178
  } }
198
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_7_Template(rf, ctx) { if (rf & 1) {
199
- const _r14 = i0.ɵɵgetCurrentView();
200
- i0.ɵɵelementStart(0, "button", 33);
201
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.createNewType()); });
202
- i0.ɵɵelement(1, "i", 34);
179
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
180
+ const _r11 = i0.ɵɵgetCurrentView();
181
+ i0.ɵɵelementStart(0, "button", 55);
182
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createNewType()); });
183
+ i0.ɵɵelement(1, "i", 18);
203
184
  i0.ɵɵtext(2, " Create Type ");
204
185
  i0.ɵɵelementEnd();
205
186
  } }
206
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Template(rf, ctx) { if (rf & 1) {
207
- i0.ɵɵelementStart(0, "div", 30)(1, "div", 63);
208
- i0.ɵɵelement(2, "i", 64);
187
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
188
+ i0.ɵɵelementStart(0, "div", 21)(1, "div", 51);
189
+ i0.ɵɵelement(2, "i", 52);
209
190
  i0.ɵɵelementEnd();
210
191
  i0.ɵɵelementStart(3, "h3");
211
192
  i0.ɵɵtext(4, "No Credential Types Found");
212
193
  i0.ɵɵelementEnd();
213
- i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_5_Template, 4, 0, "p");
214
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_6_Template, 2, 0, "p");
215
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Conditional_7_Template, 3, 0, "button", 13);
194
+ i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_5_Template, 4, 0, "p");
195
+ i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_6_Template, 2, 0, "p");
196
+ i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_7_Template, 3, 0, "button", 53);
216
197
  i0.ɵɵelementEnd();
217
198
  } if (rf & 2) {
218
- const ctx_r3 = i0.ɵɵnextContext(2);
199
+ const ctx_r2 = i0.ɵɵnextContext(2);
219
200
  i0.ɵɵadvance(5);
220
- i0.ɵɵconditional(ctx_r3.searchText || ctx_r3.selectedCategoryFilter ? 5 : -1);
201
+ i0.ɵɵconditional(ctx_r2.searchText || ctx_r2.selectedCategoryFilter ? 5 : -1);
221
202
  i0.ɵɵadvance();
222
- i0.ɵɵconditional(!ctx_r3.searchText && !ctx_r3.selectedCategoryFilter ? 6 : -1);
203
+ i0.ɵɵconditional(!ctx_r2.searchText && !ctx_r2.selectedCategoryFilter ? 6 : -1);
223
204
  i0.ɵɵadvance();
224
- i0.ɵɵconditional(ctx_r3.UserCanCreate && !ctx_r3.searchText && !ctx_r3.selectedCategoryFilter ? 7 : -1);
205
+ i0.ɵɵconditional(ctx_r2.UserCanCreate && !ctx_r2.searchText && !ctx_r2.selectedCategoryFilter ? 7 : -1);
225
206
  } }
226
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_11_Template(rf, ctx) { if (rf & 1) {
227
- const _r16 = i0.ɵɵgetCurrentView();
228
- i0.ɵɵelementStart(0, "button", 87);
229
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.editType(ctx_r3.selectedType)); });
230
- i0.ɵɵelement(1, "i", 60);
207
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
208
+ const _r13 = i0.ɵɵgetCurrentView();
209
+ i0.ɵɵelementStart(0, "button", 78);
210
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editType(ctx_r2.selectedType)); });
211
+ i0.ɵɵelement(1, "i", 48);
231
212
  i0.ɵɵelementEnd();
232
213
  } }
233
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_26_Template(rf, ctx) { if (rf & 1) {
234
- i0.ɵɵelementStart(0, "div", 79)(1, "div", 76);
214
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_26_Template(rf, ctx) { if (rf & 1) {
215
+ i0.ɵɵelementStart(0, "div", 70)(1, "div", 67);
235
216
  i0.ɵɵtext(2);
236
217
  i0.ɵɵelementEnd();
237
- i0.ɵɵelementStart(3, "div", 77);
218
+ i0.ɵɵelementStart(3, "div", 68);
238
219
  i0.ɵɵtext(4, "Expiring");
239
220
  i0.ɵɵelementEnd()();
240
221
  } if (rf & 2) {
241
- const ctx_r3 = i0.ɵɵnextContext(3);
222
+ const ctx_r2 = i0.ɵɵnextContext(3);
242
223
  i0.ɵɵadvance(2);
243
- i0.ɵɵtextInterpolate(ctx_r3.selectedType.expiringCount);
224
+ i0.ɵɵtextInterpolate(ctx_r2.selectedType.expiringCount);
244
225
  } }
245
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_27_Template(rf, ctx) { if (rf & 1) {
246
- i0.ɵɵelementStart(0, "p", 80);
226
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_27_Template(rf, ctx) { if (rf & 1) {
227
+ i0.ɵɵelementStart(0, "p", 71);
247
228
  i0.ɵɵtext(1);
248
229
  i0.ɵɵelementEnd();
249
230
  } if (rf & 2) {
250
- const ctx_r3 = i0.ɵɵnextContext(3);
231
+ const ctx_r2 = i0.ɵɵnextContext(3);
251
232
  i0.ɵɵadvance();
252
- i0.ɵɵtextInterpolate1(" ", ctx_r3.selectedType.Description, " ");
233
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.selectedType.Description, " ");
253
234
  } }
254
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
255
- i0.ɵɵelementStart(0, "span", 93);
256
- i0.ɵɵelement(1, "i", 96);
235
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
236
+ i0.ɵɵelementStart(0, "span", 84);
237
+ i0.ɵɵelement(1, "i", 87);
257
238
  i0.ɵɵtext(2, " Secret ");
258
239
  i0.ɵɵelementEnd();
259
240
  } }
260
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
261
- i0.ɵɵelementStart(0, "span", 94);
241
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
242
+ i0.ɵɵelementStart(0, "span", 85);
262
243
  i0.ɵɵtext(1, "Required");
263
244
  i0.ɵɵelementEnd();
264
245
  } }
265
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
266
- i0.ɵɵelementStart(0, "p", 95);
246
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
247
+ i0.ɵɵelementStart(0, "p", 86);
267
248
  i0.ɵɵtext(1);
268
249
  i0.ɵɵelementEnd();
269
250
  } if (rf & 2) {
270
- const prop_r17 = i0.ɵɵnextContext().$implicit;
251
+ const prop_r14 = i0.ɵɵnextContext().$implicit;
271
252
  i0.ɵɵadvance();
272
- i0.ɵɵtextInterpolate1(" ", prop_r17.description, " ");
253
+ i0.ɵɵtextInterpolate1(" ", prop_r14.description, " ");
273
254
  } }
274
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Template(rf, ctx) { if (rf & 1) {
275
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 89)(2, "span", 90);
255
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Template(rf, ctx) { if (rf & 1) {
256
+ i0.ɵɵelementStart(0, "div", 79)(1, "div", 80)(2, "span", 81);
276
257
  i0.ɵɵtext(3);
277
258
  i0.ɵɵelementEnd();
278
- i0.ɵɵelementStart(4, "span", 91)(5, "span", 92);
259
+ i0.ɵɵelementStart(4, "span", 82)(5, "span", 83);
279
260
  i0.ɵɵtext(6);
280
261
  i0.ɵɵelementEnd();
281
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Conditional_7_Template, 3, 0, "span", 93);
282
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Conditional_8_Template, 2, 0, "span", 94);
262
+ i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_7_Template, 3, 0, "span", 84);
263
+ i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_8_Template, 2, 0, "span", 85);
283
264
  i0.ɵɵelementEnd()();
284
- i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Conditional_9_Template, 2, 1, "p", 95);
265
+ i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_9_Template, 2, 1, "p", 86);
285
266
  i0.ɵɵelementEnd();
286
267
  } if (rf & 2) {
287
- const prop_r17 = ctx.$implicit;
268
+ const prop_r14 = ctx.$implicit;
288
269
  i0.ɵɵadvance(3);
289
- i0.ɵɵtextInterpolate(prop_r17.title);
270
+ i0.ɵɵtextInterpolate(prop_r14.title);
290
271
  i0.ɵɵadvance(3);
291
- i0.ɵɵtextInterpolate(prop_r17.type);
272
+ i0.ɵɵtextInterpolate(prop_r14.type);
292
273
  i0.ɵɵadvance();
293
- i0.ɵɵconditional(prop_r17.isSecret ? 7 : -1);
274
+ i0.ɵɵconditional(prop_r14.isSecret ? 7 : -1);
294
275
  i0.ɵɵadvance();
295
- i0.ɵɵconditional(prop_r17.required ? 8 : -1);
276
+ i0.ɵɵconditional(prop_r14.required ? 8 : -1);
296
277
  i0.ɵɵadvance();
297
- i0.ɵɵconditional(prop_r17.description ? 9 : -1);
278
+ i0.ɵɵconditional(prop_r14.description ? 9 : -1);
298
279
  } }
299
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_Template(rf, ctx) { if (rf & 1) {
300
- i0.ɵɵelementStart(0, "div", 83);
301
- i0.ɵɵrepeaterCreate(1, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_For_2_Template, 10, 5, "div", 88, i0.ɵɵrepeaterTrackByIdentity);
280
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_Template(rf, ctx) { if (rf & 1) {
281
+ i0.ɵɵelementStart(0, "div", 74);
282
+ i0.ɵɵrepeaterCreate(1, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Template, 10, 5, "div", 79, i0.ɵɵrepeaterTrackByIdentity);
302
283
  i0.ɵɵelementEnd();
303
284
  } if (rf & 2) {
304
- const ctx_r3 = i0.ɵɵnextContext(3);
285
+ const ctx_r2 = i0.ɵɵnextContext(3);
305
286
  i0.ɵɵadvance();
306
- i0.ɵɵrepeater(ctx_r3.schemaProperties);
287
+ i0.ɵɵrepeater(ctx_r2.schemaProperties);
307
288
  } }
308
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_33_Template(rf, ctx) { if (rf & 1) {
309
- i0.ɵɵelementStart(0, "div", 84);
310
- i0.ɵɵelement(1, "i", 97);
289
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_33_Template(rf, ctx) { if (rf & 1) {
290
+ i0.ɵɵelementStart(0, "div", 75);
291
+ i0.ɵɵelement(1, "i", 88);
311
292
  i0.ɵɵelementStart(2, "span");
312
293
  i0.ɵɵtext(3, "No fields defined in schema");
313
294
  i0.ɵɵelementEnd()();
314
295
  } }
315
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_34_Template(rf, ctx) { if (rf & 1) {
316
- i0.ɵɵelementStart(0, "div", 85)(1, "h3");
317
- i0.ɵɵelement(2, "i", 98);
296
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_34_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "div", 76)(1, "h3");
298
+ i0.ɵɵelement(2, "i", 89);
318
299
  i0.ɵɵtext(3, " Validation ");
319
300
  i0.ɵɵelementEnd();
320
- i0.ɵɵelementStart(4, "div", 99);
321
- i0.ɵɵelement(5, "i", 100);
301
+ i0.ɵɵelementStart(4, "div", 90);
302
+ i0.ɵɵelement(5, "i", 91);
322
303
  i0.ɵɵelementStart(6, "span");
323
304
  i0.ɵɵtext(7);
324
305
  i0.ɵɵelementEnd()()();
325
306
  } if (rf & 2) {
326
- const ctx_r3 = i0.ɵɵnextContext(3);
307
+ const ctx_r2 = i0.ɵɵnextContext(3);
327
308
  i0.ɵɵadvance(7);
328
- i0.ɵɵtextInterpolate(ctx_r3.selectedType.ValidationEndpoint);
309
+ i0.ɵɵtextInterpolate(ctx_r2.selectedType.ValidationEndpoint);
329
310
  } }
330
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_35_Template(rf, ctx) { if (rf & 1) {
331
- const _r18 = i0.ɵɵgetCurrentView();
332
- i0.ɵɵelementStart(0, "div", 86)(1, "button", 33);
333
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_35_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r18); const ctx_r3 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r3.createCredentialForType(ctx_r3.selectedType)); });
334
- i0.ɵɵelement(2, "i", 34);
311
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_35_Template(rf, ctx) { if (rf & 1) {
312
+ const _r15 = i0.ɵɵgetCurrentView();
313
+ i0.ɵɵelementStart(0, "div", 77)(1, "button", 55);
314
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_35_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCredentialForType(ctx_r2.selectedType)); });
315
+ i0.ɵɵelement(2, "i", 18);
335
316
  i0.ɵɵtext(3, " Create Credential ");
336
317
  i0.ɵɵelementEnd()();
337
318
  } }
338
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Template(rf, ctx) { if (rf & 1) {
339
- const _r15 = i0.ɵɵgetCurrentView();
340
- i0.ɵɵelementStart(0, "div", 31)(1, "div", 66)(2, "div", 67);
319
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
320
+ const _r12 = i0.ɵɵgetCurrentView();
321
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 56)(2, "div", 57);
341
322
  i0.ɵɵelement(3, "i");
342
323
  i0.ɵɵelementEnd();
343
- i0.ɵɵelementStart(4, "div", 68)(5, "h2");
324
+ i0.ɵɵelementStart(4, "div", 58)(5, "h2");
344
325
  i0.ɵɵtext(6);
345
326
  i0.ɵɵelementEnd();
346
- i0.ɵɵelementStart(7, "span", 69);
327
+ i0.ɵɵelementStart(7, "span", 59);
347
328
  i0.ɵɵelement(8, "i");
348
329
  i0.ɵɵtext(9);
349
330
  i0.ɵɵelementEnd()();
350
- i0.ɵɵelementStart(10, "div", 70);
351
- i0.ɵɵconditionalCreate(11, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_11_Template, 2, 0, "button", 71);
352
- i0.ɵɵelementStart(12, "button", 72);
353
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r15); const ctx_r3 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r3.closeDetail()); });
354
- i0.ɵɵelement(13, "i", 36);
331
+ i0.ɵɵelementStart(10, "div", 60);
332
+ i0.ɵɵconditionalCreate(11, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_11_Template, 2, 0, "button", 61);
333
+ i0.ɵɵelementStart(12, "button", 62);
334
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.closeDetail()); });
335
+ i0.ɵɵelement(13, "i", 63);
355
336
  i0.ɵɵelementEnd()()();
356
- i0.ɵɵelementStart(14, "div", 73)(15, "div", 74)(16, "div", 75)(17, "div", 76);
337
+ i0.ɵɵelementStart(14, "div", 64)(15, "div", 65)(16, "div", 66)(17, "div", 67);
357
338
  i0.ɵɵtext(18);
358
339
  i0.ɵɵelementEnd();
359
- i0.ɵɵelementStart(19, "div", 77);
340
+ i0.ɵɵelementStart(19, "div", 68);
360
341
  i0.ɵɵtext(20, "Credentials");
361
342
  i0.ɵɵelementEnd()();
362
- i0.ɵɵelementStart(21, "div", 78)(22, "div", 76);
343
+ i0.ɵɵelementStart(21, "div", 69)(22, "div", 67);
363
344
  i0.ɵɵtext(23);
364
345
  i0.ɵɵelementEnd();
365
- i0.ɵɵelementStart(24, "div", 77);
346
+ i0.ɵɵelementStart(24, "div", 68);
366
347
  i0.ɵɵtext(25, "Active");
367
348
  i0.ɵɵelementEnd()();
368
- i0.ɵɵconditionalCreate(26, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_26_Template, 5, 1, "div", 79);
349
+ i0.ɵɵconditionalCreate(26, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_26_Template, 5, 1, "div", 70);
369
350
  i0.ɵɵelementEnd();
370
- i0.ɵɵconditionalCreate(27, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_27_Template, 2, 1, "p", 80);
371
- i0.ɵɵelementStart(28, "div", 81)(29, "h3");
372
- i0.ɵɵelement(30, "i", 82);
351
+ i0.ɵɵconditionalCreate(27, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_27_Template, 2, 1, "p", 71);
352
+ i0.ɵɵelementStart(28, "div", 72)(29, "h3");
353
+ i0.ɵɵelement(30, "i", 73);
373
354
  i0.ɵɵtext(31, " Field Schema ");
374
355
  i0.ɵɵelementEnd();
375
- i0.ɵɵconditionalCreate(32, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_32_Template, 3, 0, "div", 83);
376
- i0.ɵɵconditionalCreate(33, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_33_Template, 4, 0, "div", 84);
356
+ i0.ɵɵconditionalCreate(32, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_Template, 3, 0, "div", 74);
357
+ i0.ɵɵconditionalCreate(33, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_33_Template, 4, 0, "div", 75);
377
358
  i0.ɵɵelementEnd();
378
- i0.ɵɵconditionalCreate(34, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_34_Template, 8, 1, "div", 85);
379
- i0.ɵɵconditionalCreate(35, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Conditional_35_Template, 4, 0, "div", 86);
359
+ i0.ɵɵconditionalCreate(34, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_34_Template, 8, 1, "div", 76);
360
+ i0.ɵɵconditionalCreate(35, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_35_Template, 4, 0, "div", 77);
380
361
  i0.ɵɵelementEnd()();
381
362
  } if (rf & 2) {
382
- const ctx_r3 = i0.ɵɵnextContext(2);
363
+ const ctx_r2 = i0.ɵɵnextContext(2);
383
364
  i0.ɵɵadvance(2);
384
- i0.ɵɵstyleProp("background-color", ctx_r3.getCategoryColor(ctx_r3.selectedType.Category) + "15")("color", ctx_r3.getCategoryColor(ctx_r3.selectedType.Category));
365
+ i0.ɵɵstyleProp("background-color", ctx_r2.getCategoryColor(ctx_r2.selectedType.Category) + "15")("color", ctx_r2.getCategoryColor(ctx_r2.selectedType.Category));
385
366
  i0.ɵɵadvance();
386
- i0.ɵɵclassMap(ctx_r3.selectedType.IconClass || "fa-solid fa-key");
367
+ i0.ɵɵclassMap(ctx_r2.selectedType.IconClass || "fa-solid fa-key");
387
368
  i0.ɵɵadvance(3);
388
- i0.ɵɵtextInterpolate(ctx_r3.selectedType.Name);
369
+ i0.ɵɵtextInterpolate(ctx_r2.selectedType.Name);
389
370
  i0.ɵɵadvance();
390
- i0.ɵɵstyleProp("background-color", ctx_r3.getCategoryColor(ctx_r3.selectedType.Category) + "20")("color", ctx_r3.getCategoryColor(ctx_r3.selectedType.Category));
371
+ i0.ɵɵstyleProp("background-color", ctx_r2.getCategoryColor(ctx_r2.selectedType.Category) + "20")("color", ctx_r2.getCategoryColor(ctx_r2.selectedType.Category));
391
372
  i0.ɵɵadvance();
392
- i0.ɵɵclassMap(ctx_r3.getCategoryIcon(ctx_r3.selectedType.Category));
373
+ i0.ɵɵclassMap(ctx_r2.getCategoryIcon(ctx_r2.selectedType.Category));
393
374
  i0.ɵɵadvance();
394
- i0.ɵɵtextInterpolate1(" ", ctx_r3.selectedType.Category, " ");
375
+ i0.ɵɵtextInterpolate1(" ", ctx_r2.selectedType.Category, " ");
395
376
  i0.ɵɵadvance(2);
396
- i0.ɵɵconditional(ctx_r3.UserCanUpdate ? 11 : -1);
377
+ i0.ɵɵconditional(ctx_r2.UserCanUpdate ? 11 : -1);
397
378
  i0.ɵɵadvance(7);
398
- i0.ɵɵtextInterpolate(ctx_r3.selectedType.credentialCount);
379
+ i0.ɵɵtextInterpolate(ctx_r2.selectedType.credentialCount);
399
380
  i0.ɵɵadvance(5);
400
- i0.ɵɵtextInterpolate(ctx_r3.selectedType.activeCount);
381
+ i0.ɵɵtextInterpolate(ctx_r2.selectedType.activeCount);
401
382
  i0.ɵɵadvance(3);
402
- i0.ɵɵconditional(ctx_r3.selectedType.expiringCount > 0 ? 26 : -1);
383
+ i0.ɵɵconditional(ctx_r2.selectedType.expiringCount > 0 ? 26 : -1);
403
384
  i0.ɵɵadvance();
404
- i0.ɵɵconditional(ctx_r3.selectedType.Description ? 27 : -1);
385
+ i0.ɵɵconditional(ctx_r2.selectedType.Description ? 27 : -1);
405
386
  i0.ɵɵadvance(5);
406
- i0.ɵɵconditional(ctx_r3.schemaProperties.length > 0 ? 32 : -1);
387
+ i0.ɵɵconditional(ctx_r2.schemaProperties.length > 0 ? 32 : -1);
407
388
  i0.ɵɵadvance();
408
- i0.ɵɵconditional(ctx_r3.schemaProperties.length === 0 ? 33 : -1);
389
+ i0.ɵɵconditional(ctx_r2.schemaProperties.length === 0 ? 33 : -1);
409
390
  i0.ɵɵadvance();
410
- i0.ɵɵconditional(ctx_r3.selectedType.ValidationEndpoint ? 34 : -1);
391
+ i0.ɵɵconditional(ctx_r2.selectedType.ValidationEndpoint ? 34 : -1);
411
392
  i0.ɵɵadvance();
412
- i0.ɵɵconditional(ctx_r3.UserCanCreateCredential ? 35 : -1);
393
+ i0.ɵɵconditional(ctx_r2.UserCanCreateCredential ? 35 : -1);
413
394
  } }
414
- function CredentialsTypesResourceComponent_Conditional_2_Conditional_39_Template(rf, ctx) { if (rf & 1) {
415
- i0.ɵɵelementStart(0, "div", 32)(1, "div", 101);
416
- i0.ɵɵelement(2, "i", 102);
395
+ function CredentialsTypesResourceComponent_Conditional_15_Conditional_7_Template(rf, ctx) { if (rf & 1) {
396
+ i0.ɵɵelementStart(0, "div", 23)(1, "div", 92);
397
+ i0.ɵɵelement(2, "i", 93);
417
398
  i0.ɵɵelementEnd();
418
399
  i0.ɵɵelementStart(3, "h3");
419
400
  i0.ɵɵtext(4, "Select a Credential Type");
@@ -422,83 +403,25 @@ function CredentialsTypesResourceComponent_Conditional_2_Conditional_39_Template
422
403
  i0.ɵɵtext(6, "Click on a credential type to view its details and field schema");
423
404
  i0.ɵɵelementEnd()();
424
405
  } }
425
- function CredentialsTypesResourceComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
426
- const _r2 = i0.ɵɵgetCurrentView();
427
- i0.ɵɵelementStart(0, "div", 4)(1, "div", 5)(2, "h2", 6);
428
- i0.ɵɵtext(3, "Credential Types");
429
- i0.ɵɵelementEnd();
430
- i0.ɵɵelementStart(4, "div", 7)(5, "span", 8);
431
- i0.ɵɵelement(6, "i", 9);
432
- i0.ɵɵtext(7);
433
- i0.ɵɵelementEnd();
434
- i0.ɵɵelementStart(8, "span", 8);
435
- i0.ɵɵelement(9, "i", 10);
436
- i0.ɵɵtext(10);
406
+ function CredentialsTypesResourceComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
407
+ i0.ɵɵelementStart(0, "div", 15)(1, "div", 19);
408
+ i0.ɵɵrepeaterCreate(2, CredentialsTypesResourceComponent_Conditional_15_For_3_Template, 10, 8, "div", 20, i0.ɵɵrepeaterTrackByIdentity);
409
+ i0.ɵɵpipe(4, "keyvalue");
410
+ i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Template, 8, 3, "div", 21);
437
411
  i0.ɵɵelementEnd();
438
- i0.ɵɵelementStart(11, "span", 8);
439
- i0.ɵɵelement(12, "i", 11);
440
- i0.ɵɵtext(13);
441
- i0.ɵɵelementEnd()()();
442
- i0.ɵɵelementStart(14, "div", 12);
443
- i0.ɵɵconditionalCreate(15, CredentialsTypesResourceComponent_Conditional_2_Conditional_15_Template, 4, 0, "button", 13);
444
- i0.ɵɵelementEnd()();
445
- i0.ɵɵelementStart(16, "div", 14)(17, "div", 15)(18, "div", 16);
446
- i0.ɵɵelement(19, "i", 17);
447
- i0.ɵɵelementStart(20, "input", 18);
448
- i0.ɵɵlistener("input", function CredentialsTypesResourceComponent_Conditional_2_Template_input_input_20_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onSearchChange($event.target.value)); });
449
- i0.ɵɵelementEnd();
450
- i0.ɵɵconditionalCreate(21, CredentialsTypesResourceComponent_Conditional_2_Conditional_21_Template, 2, 0, "button", 19);
451
- i0.ɵɵelementEnd();
452
- i0.ɵɵelementStart(22, "select", 20);
453
- i0.ɵɵlistener("change", function CredentialsTypesResourceComponent_Conditional_2_Template_select_change_22_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onCategoryFilterChange($event.target.value)); });
454
- i0.ɵɵelementStart(23, "option", 21);
455
- i0.ɵɵtext(24, "All Categories");
456
- i0.ɵɵelementEnd();
457
- i0.ɵɵrepeaterCreate(25, CredentialsTypesResourceComponent_Conditional_2_For_26_Template, 2, 2, "option", 22, i0.ɵɵrepeaterTrackByIdentity);
458
- i0.ɵɵelementEnd()();
459
- i0.ɵɵelementStart(27, "div", 23)(28, "div", 24);
460
- i0.ɵɵtext(29);
461
- i0.ɵɵelementEnd();
462
- i0.ɵɵelementStart(30, "button", 25);
463
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_2_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.refresh()); });
464
- i0.ɵɵelement(31, "i", 26);
465
- i0.ɵɵelementEnd()()();
466
- i0.ɵɵelementStart(32, "div", 27)(33, "div", 28);
467
- i0.ɵɵrepeaterCreate(34, CredentialsTypesResourceComponent_Conditional_2_For_35_Template, 10, 8, "div", 29, i0.ɵɵrepeaterTrackByIdentity);
468
- i0.ɵɵpipe(36, "keyvalue");
469
- i0.ɵɵconditionalCreate(37, CredentialsTypesResourceComponent_Conditional_2_Conditional_37_Template, 8, 3, "div", 30);
470
- i0.ɵɵelementEnd();
471
- i0.ɵɵconditionalCreate(38, CredentialsTypesResourceComponent_Conditional_2_Conditional_38_Template, 36, 23, "div", 31);
472
- i0.ɵɵconditionalCreate(39, CredentialsTypesResourceComponent_Conditional_2_Conditional_39_Template, 7, 0, "div", 32);
412
+ i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template, 36, 23, "div", 22);
413
+ i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_15_Conditional_7_Template, 7, 0, "div", 23);
473
414
  i0.ɵɵelementEnd();
474
415
  } if (rf & 2) {
475
- const ctx_r3 = i0.ɵɵnextContext();
476
- i0.ɵɵadvance(7);
477
- i0.ɵɵtextInterpolate1(" ", ctx_r3.types.length, " types ");
478
- i0.ɵɵadvance(3);
479
- i0.ɵɵtextInterpolate1(" ", ctx_r3.categories.length, " categories ");
480
- i0.ɵɵadvance(3);
481
- i0.ɵɵtextInterpolate1(" ", ctx_r3.getTotalCredentialCount(), " credentials ");
416
+ const ctx_r2 = i0.ɵɵnextContext();
482
417
  i0.ɵɵadvance(2);
483
- i0.ɵɵconditional(ctx_r3.UserCanCreate ? 15 : -1);
484
- i0.ɵɵadvance(5);
485
- i0.ɵɵproperty("value", ctx_r3.searchText);
486
- i0.ɵɵadvance();
487
- i0.ɵɵconditional(ctx_r3.searchText ? 21 : -1);
488
- i0.ɵɵadvance();
489
- i0.ɵɵproperty("value", ctx_r3.selectedCategoryFilter);
418
+ i0.ɵɵrepeater(i0.ɵɵpipeBind1(4, 3, ctx_r2.getTypesByCategory()));
490
419
  i0.ɵɵadvance(3);
491
- i0.ɵɵrepeater(ctx_r3.categories);
492
- i0.ɵɵadvance(4);
493
- i0.ɵɵtextInterpolate2(" ", ctx_r3.filteredTypes.length, " of ", ctx_r3.types.length, " types ");
494
- i0.ɵɵadvance(5);
495
- i0.ɵɵrepeater(i0.ɵɵpipeBind1(36, 12, ctx_r3.getTypesByCategory()));
496
- i0.ɵɵadvance(3);
497
- i0.ɵɵconditional(ctx_r3.filteredTypes.length === 0 ? 37 : -1);
420
+ i0.ɵɵconditional(ctx_r2.filteredTypes.length === 0 ? 5 : -1);
498
421
  i0.ɵɵadvance();
499
- i0.ɵɵconditional(ctx_r3.selectedType ? 38 : -1);
422
+ i0.ɵɵconditional(ctx_r2.selectedType ? 6 : -1);
500
423
  i0.ɵɵadvance();
501
- i0.ɵɵconditional(!ctx_r3.selectedType && ctx_r3.filteredTypes.length > 0 ? 39 : -1);
424
+ i0.ɵɵconditional(!ctx_r2.selectedType && ctx_r2.filteredTypes.length > 0 ? 7 : -1);
502
425
  } }
503
426
  let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent extends BaseResourceComponent {
504
427
  cdr;
@@ -516,6 +439,38 @@ let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent
516
439
  _metadata = this.ProviderToUse;
517
440
  _permissionCache = new Map();
518
441
  typeEditPanel;
442
+ get FilterFields() {
443
+ return [
444
+ {
445
+ key: 'categoryFilter',
446
+ type: 'dropdown',
447
+ label: 'Category',
448
+ icon: 'fa-solid fa-folder',
449
+ placeholder: 'All Categories',
450
+ filterable: true,
451
+ options: [
452
+ { text: 'All Categories', value: '' },
453
+ ...this.categories.map(c => ({ text: c, value: c }))
454
+ ]
455
+ }
456
+ ];
457
+ }
458
+ get FilterValues() {
459
+ return { categoryFilter: this.selectedCategoryFilter };
460
+ }
461
+ get ActiveFilterCount() {
462
+ return this.selectedCategoryFilter ? 1 : 0;
463
+ }
464
+ onFilterValuesChange(v) {
465
+ const next = (v ?? {});
466
+ if ((next.categoryFilter ?? '') !== this.selectedCategoryFilter) {
467
+ this.onCategoryFilterChange(next.categoryFilter ?? '');
468
+ }
469
+ }
470
+ resetFilters() {
471
+ if (this.selectedCategoryFilter)
472
+ this.onCategoryFilterChange('');
473
+ }
519
474
  constructor(cdr) {
520
475
  super();
521
476
  this.cdr = cdr;
@@ -845,21 +800,55 @@ let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent
845
800
  } if (rf & 2) {
846
801
  let _t;
847
802
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.typeEditPanel = _t.first);
848
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 2, consts: [["typeEditPanel", ""], [1, "types-container"], ["text", "Loading credential types..."], [3, "saved", "deleted"], [1, "types-header"], [1, "header-info"], [1, "types-title"], [1, "header-stats"], [1, "stat-item"], [1, "fa-solid", "fa-shapes"], [1, "fa-solid", "fa-folder"], [1, "fa-solid", "fa-key"], [1, "header-actions"], [1, "btn-primary"], [1, "toolbar"], [1, "toolbar-left"], [1, "search-container"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search types...", 3, "input", "value"], [1, "search-clear"], [1, "filter-select", 3, "change", "value"], ["value", ""], [3, "value"], [1, "toolbar-right"], [1, "results-info"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "types-layout"], [1, "types-list"], [1, "category-section"], [1, "empty-state"], [1, "type-detail"], [1, "no-selection"], [1, "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "search-clear", 3, "click"], [1, "fa-solid", "fa-times"], [1, "category-header"], [1, "category-name"], [1, "count"], [1, "type-items"], [1, "type-item", 3, "selected"], [1, "type-item", 3, "click"], [1, "type-icon"], [1, "type-info"], [1, "type-name"], [1, "type-description"], [1, "type-meta"], [1, "meta-badge"], [1, "meta-badge", "active"], [1, "meta-badge", "warning"], [1, "type-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Credential"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit Type"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete Type"], [1, "fa-solid", "fa-chevron-right", "arrow"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-clock"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Credential", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit Type", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete Type", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "empty-icon"], [1, "fa-solid", "fa-cubes"], [1, "btn-link", 3, "click"], [1, "detail-header"], [1, "detail-icon"], [1, "detail-title"], [1, "category-badge"], [1, "detail-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit"], [1, "close-btn", 3, "click"], [1, "detail-body"], [1, "detail-stats"], [1, "detail-stat"], [1, "stat-value"], [1, "stat-label"], [1, "detail-stat", "active"], [1, "detail-stat", "warning"], [1, "description"], [1, "schema-section"], [1, "fa-solid", "fa-list-check"], [1, "field-list"], [1, "no-fields"], [1, "validation-section"], [1, "detail-quick-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "field-item"], [1, "field-header"], [1, "field-name"], [1, "field-badges"], [1, "badge", "type"], [1, "badge", "secret"], [1, "badge", "required"], [1, "field-description"], [1, "fa-solid", "fa-lock"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-check-circle"], [1, "validation-endpoint"], [1, "fa-solid", "fa-link"], [1, "no-selection-icon"], [1, "fa-solid", "fa-hand-pointer"]], template: function CredentialsTypesResourceComponent_Template(rf, ctx) { if (rf & 1) {
803
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 14, consts: [["typeEditPanel", ""], ["Title", "Credential Types", "Icon", "fa-solid fa-shapes"], ["meta", ""], ["Label", "types", 3, "Count", "Total"], ["Icon", "fa-solid fa-folder", "Label", "categories", 3, "Count"], ["Icon", "fa-solid fa-key", "Label", "credentials", 3, "Count"], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], ["toolbar", ""], ["Placeholder", "Search types...", 3, "ValueChange", "Value"], [3, "Flex"], ["text", "Loading credential types..."], [1, "types-layout"], [3, "saved", "deleted"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "types-list"], [1, "category-section"], [1, "empty-state"], [1, "type-detail"], [1, "no-selection"], [1, "category-header"], [1, "category-name"], [1, "count"], [1, "type-items"], [1, "type-item", 3, "selected"], [1, "type-item", 3, "click"], [1, "type-icon"], [1, "type-info"], [1, "type-name"], [1, "type-description"], [1, "type-meta"], [1, "meta-badge"], [1, "meta-badge", "active"], [1, "meta-badge", "warning"], [1, "type-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Credential"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit Type"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete Type"], [1, "fa-solid", "fa-chevron-right", "arrow"], [1, "fa-solid", "fa-key"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-clock"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Credential", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit Type", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete Type", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "empty-icon"], [1, "fa-solid", "fa-cubes"], [1, "btn-primary"], [1, "btn-link", 3, "click"], [1, "btn-primary", 3, "click"], [1, "detail-header"], [1, "detail-icon"], [1, "detail-title"], [1, "category-badge"], [1, "detail-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-body"], [1, "detail-stats"], [1, "detail-stat"], [1, "stat-value"], [1, "stat-label"], [1, "detail-stat", "active"], [1, "detail-stat", "warning"], [1, "description"], [1, "schema-section"], [1, "fa-solid", "fa-list-check"], [1, "field-list"], [1, "no-fields"], [1, "validation-section"], [1, "detail-quick-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "field-item"], [1, "field-header"], [1, "field-name"], [1, "field-badges"], [1, "badge", "type"], [1, "badge", "secret"], [1, "badge", "required"], [1, "field-description"], [1, "fa-solid", "fa-lock"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-check-circle"], [1, "validation-endpoint"], [1, "fa-solid", "fa-link"], [1, "no-selection-icon"], [1, "fa-solid", "fa-hand-pointer"]], template: function CredentialsTypesResourceComponent_Template(rf, ctx) { if (rf & 1) {
849
804
  const _r1 = i0.ɵɵgetCurrentView();
850
- i0.ɵɵelementStart(0, "div", 1);
851
- i0.ɵɵconditionalCreate(1, CredentialsTypesResourceComponent_Conditional_1_Template, 1, 0, "mj-loading", 2);
852
- i0.ɵɵconditionalCreate(2, CredentialsTypesResourceComponent_Conditional_2_Template, 40, 14);
805
+ i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2);
806
+ i0.ɵɵelement(3, "mj-stat-badge", 3)(4, "mj-stat-badge", 4)(5, "mj-stat-badge", 5);
807
+ i0.ɵɵelementEnd();
808
+ i0.ɵɵelementStart(6, "div", 6)(7, "mj-filter-popover", 7);
809
+ i0.ɵɵlistener("ClearAllRequested", function CredentialsTypesResourceComponent_Template_mj_filter_popover_ClearAllRequested_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
810
+ i0.ɵɵelementStart(8, "mj-filter-panel", 8);
811
+ i0.ɵɵlistener("ValuesChange", function CredentialsTypesResourceComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFilterValuesChange($event)); })("Reset", function CredentialsTypesResourceComponent_Template_mj_filter_panel_Reset_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
812
+ i0.ɵɵelementEnd()();
813
+ i0.ɵɵelementStart(9, "mj-refresh-button", 9);
814
+ i0.ɵɵlistener("Clicked", function CredentialsTypesResourceComponent_Template_mj_refresh_button_Clicked_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
815
+ i0.ɵɵelementEnd();
816
+ i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_10_Template, 3, 0, "button", 10);
853
817
  i0.ɵɵelementEnd();
854
- i0.ɵɵelementStart(3, "mj-credential-type-edit-panel", 3, 0);
855
- i0.ɵɵlistener("saved", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_saved_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeSaved($event)); })("deleted", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_deleted_3_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeDeleted($event)); });
818
+ i0.ɵɵelementStart(11, "div", 11)(12, "mj-page-search", 12);
819
+ i0.ɵɵlistener("ValueChange", function CredentialsTypesResourceComponent_Template_mj_page_search_ValueChange_12_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchChange($event)); });
820
+ i0.ɵɵelementEnd()()();
821
+ i0.ɵɵelementStart(13, "mj-page-body", 13);
822
+ i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_14_Template, 1, 0, "mj-loading", 14);
823
+ i0.ɵɵconditionalCreate(15, CredentialsTypesResourceComponent_Conditional_15_Template, 8, 5, "div", 15);
856
824
  i0.ɵɵelementEnd();
825
+ i0.ɵɵelementStart(16, "mj-credential-type-edit-panel", 16, 0);
826
+ i0.ɵɵlistener("saved", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_saved_16_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeSaved($event)); })("deleted", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_deleted_16_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeDeleted($event)); });
827
+ i0.ɵɵelementEnd()();
857
828
  } if (rf & 2) {
829
+ i0.ɵɵadvance(3);
830
+ i0.ɵɵproperty("Count", ctx.filteredTypes.length)("Total", ctx.types.length);
831
+ i0.ɵɵadvance();
832
+ i0.ɵɵproperty("Count", ctx.categories.length);
833
+ i0.ɵɵadvance();
834
+ i0.ɵɵproperty("Count", ctx.getTotalCredentialCount());
835
+ i0.ɵɵadvance(2);
836
+ i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
837
+ i0.ɵɵadvance();
838
+ i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues);
839
+ i0.ɵɵadvance();
840
+ i0.ɵɵproperty("Loading", ctx.isLoading);
841
+ i0.ɵɵadvance();
842
+ i0.ɵɵconditional(ctx.UserCanCreate ? 10 : -1);
843
+ i0.ɵɵadvance(2);
844
+ i0.ɵɵproperty("Value", ctx.searchText);
845
+ i0.ɵɵadvance();
846
+ i0.ɵɵproperty("Flex", true);
858
847
  i0.ɵɵadvance();
859
- i0.ɵɵconditional(ctx.isLoading ? 1 : -1);
848
+ i0.ɵɵconditional(ctx.isLoading ? 14 : -1);
860
849
  i0.ɵɵadvance();
861
- i0.ɵɵconditional(!ctx.isLoading ? 2 : -1);
862
- } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i2.MJButtonDirective, i3.LoadingComponent, i4.CredentialTypeEditPanelComponent, i5.SlicePipe, i5.KeyValuePipe], styles: [".types-container[_ngcontent-%COMP%] {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 24px;\n background: var(--mj-bg-page);\n}\n\n\n\n.types-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 24px;\n flex-wrap: wrap;\n gap: 16px;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.types-title[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n.btn-primary[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n background: var(--mj-bg-surface);\n padding: 16px;\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n flex: 1;\n}\n\n.toolbar-right[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.search-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 8px 12px;\n min-width: 240px;\n position: relative;\n}\n\n.search-container[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n margin-right: 8px;\n}\n\n.search-container[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n border: none;\n background: transparent;\n outline: none;\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\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 background: var(--mj-border-default);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 10px;\n}\n\n.search-clear[_ngcontent-%COMP%]:hover {\n background: var(--mj-text-secondary);\n color: var(--mj-text-inverse);\n}\n\n.filter-select[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n min-width: 160px;\n}\n\n.results-info[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n\n\n.types-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 420px 1fr;\n flex: 1;\n min-height: 0;\n gap: 20px;\n}\n\n\n\n.types-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n padding: 16px;\n}\n\n.category-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.category-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-secondary);\n letter-spacing: 0.5px;\n border-left: 3px solid var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n border-radius: 0 8px 8px 0;\n margin-bottom: 8px;\n}\n\n.category-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.category-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.type-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n position: relative;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n border-color: var(--mj-border-default);\n}\n\n.type-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.type-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n\n.meta-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.meta-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.meta-badge.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.meta-badge.warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.type-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n margin-right: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover .type-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n}\n\n.arrow[_ngcontent-%COMP%] {\n color: var(--mj-border-strong);\n font-size: 12px;\n}\n\n\n\n.type-detail[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 60px;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 14px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 26px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.category-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.category-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n cursor: pointer;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n flex: 1;\n text-align: center;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.detail-stat.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.active[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-stat.warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.warning[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0 0 24px 0;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n}\n\n.schema-section[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.schema-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n\n.schema-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.field-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.field-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n transition: all 0.2s ease;\n}\n\n.field-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.field-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.badge.type[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.badge.secret[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.secret[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 3px;\n}\n\n.badge.required[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 10px 0 0 0;\n line-height: 1.5;\n}\n\n.no-fields[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.no-fields[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.validation-endpoint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;\n border: 1px solid var(--mj-border-default);\n}\n\n.validation-endpoint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 48px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 18px;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n@media (max-width: 1024px) {\n .types-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .types-list[_ngcontent-%COMP%] {\n max-height: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .types-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .types-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\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 min-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-stats[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"], changeDetection: 0 });
850
+ i0.ɵɵconditional(!ctx.isLoading ? 15 : -1);
851
+ } }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJStatBadgeComponent, i1.MJRefreshButtonComponent, i2.LoadingComponent, i3.CredentialTypeEditPanelComponent, i4.SlicePipe, i4.KeyValuePipe], styles: ["\n\n.types-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 420px 1fr;\n flex: 1;\n min-height: 0;\n gap: 20px;\n}\n\n\n\n.types-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n padding: 16px;\n}\n\n.category-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.category-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-secondary);\n letter-spacing: 0.5px;\n border-left: 3px solid var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n border-radius: 0 8px 8px 0;\n margin-bottom: 8px;\n}\n\n.category-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.category-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.type-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n position: relative;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n border-color: var(--mj-border-default);\n}\n\n.type-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.type-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n\n.meta-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.meta-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.meta-badge.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.meta-badge.warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.type-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n margin-right: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover .type-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n}\n\n.arrow[_ngcontent-%COMP%] {\n color: var(--mj-border-strong);\n font-size: 12px;\n}\n\n\n\n.type-detail[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 60px;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 14px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 26px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.category-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.category-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n cursor: pointer;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n flex: 1;\n text-align: center;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.detail-stat.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.active[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-stat.warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.warning[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0 0 24px 0;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n}\n\n.schema-section[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.schema-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n\n.schema-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.field-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.field-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n transition: all 0.2s ease;\n}\n\n.field-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.field-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.badge.type[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.badge.secret[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.secret[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 3px;\n}\n\n.badge.required[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 10px 0 0 0;\n line-height: 1.5;\n}\n\n.no-fields[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.no-fields[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.validation-endpoint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;\n border: 1px solid var(--mj-border-default);\n}\n\n.validation-endpoint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 48px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 18px;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n@media (max-width: 1024px) {\n .types-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .types-list[_ngcontent-%COMP%] {\n max-height: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .types-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .types-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\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 min-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-stats[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"], changeDetection: 0 });
863
852
  };
864
853
  CredentialsTypesResourceComponent = __decorate([
865
854
  RegisterClass(BaseResourceComponent, 'CredentialsTypesResource')
@@ -867,10 +856,10 @@ CredentialsTypesResourceComponent = __decorate([
867
856
  export { CredentialsTypesResourceComponent };
868
857
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsTypesResourceComponent, [{
869
858
  type: Component,
870
- args: [{ standalone: false, selector: 'mj-credentials-types-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"types-container\">\n @if (isLoading) {\n <mj-loading text=\"Loading credential types...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <!-- Header -->\n <div class=\"types-header\">\n <div class=\"header-info\">\n <h2 class=\"types-title\">Credential Types</h2>\n <div class=\"header-stats\">\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-shapes\"></i>\n {{types.length}} types\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-folder\"></i>\n {{categories.length}} categories\n </span>\n <span class=\"stat-item\">\n <i class=\"fa-solid fa-key\"></i>\n {{getTotalCredentialCount()}} credentials\n </span>\n </div>\n </div>\n <div class=\"header-actions\">\n @if (UserCanCreate) {\n <button class=\"btn-primary\" (click)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i>\n <span>New Type</span>\n </button>\n }\n </div>\n </div>\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 types...\"\n [value]=\"searchText\"\n (input)=\"onSearchChange($any($event.target).value)\"\n />\n @if (searchText) {\n <button class=\"search-clear\" (click)=\"onSearchChange('')\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <select\n class=\"filter-select\"\n [value]=\"selectedCategoryFilter\"\n (change)=\"onCategoryFilterChange($any($event.target).value)\"\n >\n <option value=\"\">All Categories</option>\n @for (cat of categories; track cat) {\n <option [value]=\"cat\">{{cat}}</option>\n }\n </select>\n </div>\n <div class=\"toolbar-right\">\n <div class=\"results-info\">\n {{filteredTypes.length}} of {{types.length}} types\n </div>\n <button class=\"btn-icon\" (click)=\"refresh()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <div class=\"types-layout\">\n <!-- Types List -->\n <div class=\"types-list\">\n @for (entry of getTypesByCategory() | keyvalue; track entry) {\n <div class=\"category-section\">\n <div class=\"category-header\" [style.borderLeftColor]=\"getCategoryColor(entry.key)\">\n <i [class]=\"getCategoryIcon(entry.key)\" [style.color]=\"getCategoryColor(entry.key)\"></i>\n <span class=\"category-name\">{{entry.key}}</span>\n <span class=\"count\">{{entry.value.length}}</span>\n </div>\n <div class=\"type-items\">\n @for (type of entry.value; track type) {\n <div\n class=\"type-item\"\n [class.selected]=\"IsTypeSelected(type)\"\n (click)=\"selectType(type)\"\n >\n <div class=\"type-icon\" [style.backgroundColor]=\"getCategoryColor(type.Category) + '15'\" [style.color]=\"getCategoryColor(type.Category)\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-description\">\n {{type.Description | slice:0:60}}{{type.Description.length > 60 ? '...' : ''}}\n </div>\n }\n <div class=\"type-meta\">\n @if (type.credentialCount > 0) {\n <span class=\"meta-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{type.credentialCount}}\n </span>\n }\n @if (type.activeCount > 0) {\n <span class=\"meta-badge active\">\n <i class=\"fa-solid fa-check\"></i>\n {{type.activeCount}} active\n </span>\n }\n @if (type.expiringCount > 0) {\n <span class=\"meta-badge warning\">\n <i class=\"fa-solid fa-clock\"></i>\n {{type.expiringCount}} expiring\n </span>\n }\n </div>\n </div>\n <div class=\"type-actions\">\n @if (UserCanCreateCredential) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"createCredentialForType(type, $event)\"\n title=\"Add Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editType(type, $event)\"\n title=\"Edit Type\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && type.credentialCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteType(type, $event)\"\n title=\"Delete Type\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTypes.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <h3>No Credential Types Found</h3>\n @if (searchText || selectedCategoryFilter) {\n <p>\n No types match your current filters.\n <button class=\"btn-link\" (click)=\"clearFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedCategoryFilter) {\n <p>\n Get started by creating your first credential type.\n </p>\n }\n @if (UserCanCreate && !searchText && !selectedCategoryFilter) {\n <button class=\"btn-primary\" (click)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Type\n </button>\n }\n </div>\n }\n </div>\n <!-- Type Detail -->\n @if (selectedType) {\n <div class=\"type-detail\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '15'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"selectedType.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedType.Name}}</h2>\n <span class=\"category-badge\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '20'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"getCategoryIcon(selectedType.Category)\"></i>\n {{selectedType.Category}}\n </span>\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editType(selectedType)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"closeDetail()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats Row -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedType.credentialCount}}</div>\n <div class=\"stat-label\">Credentials</div>\n </div>\n <div class=\"detail-stat active\">\n <div class=\"stat-value\">{{selectedType.activeCount}}</div>\n <div class=\"stat-label\">Active</div>\n </div>\n @if (selectedType.expiringCount > 0) {\n <div class=\"detail-stat warning\">\n <div class=\"stat-value\">{{selectedType.expiringCount}}</div>\n <div class=\"stat-label\">Expiring</div>\n </div>\n }\n </div>\n @if (selectedType.Description) {\n <p class=\"description\">\n {{selectedType.Description}}\n </p>\n }\n <div class=\"schema-section\">\n <h3>\n <i class=\"fa-solid fa-list-check\"></i>\n Field Schema\n </h3>\n @if (schemaProperties.length > 0) {\n <div class=\"field-list\">\n @for (prop of schemaProperties; track prop) {\n <div class=\"field-item\">\n <div class=\"field-header\">\n <span class=\"field-name\">{{prop.title}}</span>\n <span class=\"field-badges\">\n <span class=\"badge type\">{{prop.type}}</span>\n @if (prop.isSecret) {\n <span class=\"badge secret\">\n <i class=\"fa-solid fa-lock\"></i> Secret\n </span>\n }\n @if (prop.required) {\n <span class=\"badge required\">Required</span>\n }\n </span>\n </div>\n @if (prop.description) {\n <p class=\"field-description\">\n {{prop.description}}\n </p>\n }\n </div>\n }\n </div>\n }\n @if (schemaProperties.length === 0) {\n <div class=\"no-fields\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No fields defined in schema</span>\n </div>\n }\n </div>\n @if (selectedType.ValidationEndpoint) {\n <div class=\"validation-section\">\n <h3>\n <i class=\"fa-solid fa-check-circle\"></i>\n Validation\n </h3>\n <div class=\"validation-endpoint\">\n <i class=\"fa-solid fa-link\"></i>\n <span>{{selectedType.ValidationEndpoint}}</span>\n </div>\n </div>\n }\n <!-- Quick Actions -->\n @if (UserCanCreateCredential) {\n <div class=\"detail-quick-actions\">\n <button class=\"btn-primary\" (click)=\"createCredentialForType(selectedType)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n }\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedType && filteredTypes.length > 0) {\n <div class=\"no-selection\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Credential Type</h3>\n <p>Click on a credential type to view its details and field schema</p>\n </div>\n }\n </div>\n }\n</div>\n\n<!-- Type Edit Panel -->\n<mj-credential-type-edit-panel\n #typeEditPanel\n (saved)=\"onTypeSaved($any($event))\"\n (deleted)=\"onTypeDeleted($any($event))\"\n></mj-credential-type-edit-panel>\n", styles: [".types-container {\n height: 100%;\n overflow: hidden;\n display: flex;\n flex-direction: column;\n padding: 24px;\n background: var(--mj-bg-page);\n}\n\n/* Header */\n.types-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 24px;\n flex-wrap: wrap;\n gap: 16px;\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.types-title {\n font-size: 24px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0;\n}\n\n.header-stats {\n display: flex;\n align-items: center;\n gap: 16px;\n flex-wrap: wrap;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.stat-item i {\n font-size: 12px;\n}\n\n.header-actions {\n display: flex;\n gap: 12px;\n}\n\n.btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 10px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.2s ease;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.btn-primary:hover {\n transform: translateY(-1px);\n box-shadow: 0 4px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n.btn-primary i {\n font-size: 13px;\n}\n\n/* Toolbar */\n.toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n margin-bottom: 16px;\n flex-wrap: wrap;\n background: var(--mj-bg-surface);\n padding: 16px;\n border-radius: 12px;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.toolbar-left {\n display: flex;\n align-items: center;\n gap: 12px;\n flex-wrap: wrap;\n flex: 1;\n}\n\n.toolbar-right {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.search-container {\n display: flex;\n align-items: center;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n padding: 8px 12px;\n min-width: 240px;\n position: relative;\n}\n\n.search-container i {\n color: var(--mj-text-secondary);\n margin-right: 8px;\n}\n\n.search-container input {\n border: none;\n background: transparent;\n outline: none;\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\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 background: var(--mj-border-default);\n border: none;\n border-radius: 50%;\n cursor: pointer;\n color: var(--mj-text-secondary);\n font-size: 10px;\n}\n\n.search-clear:hover {\n background: var(--mj-text-secondary);\n color: var(--mj-text-inverse);\n}\n\n.filter-select {\n padding: 8px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n min-width: 160px;\n}\n\n.results-info {\n font-size: 13px;\n color: var(--mj-text-secondary);\n white-space: nowrap;\n}\n\n.btn-icon {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-brand-primary);\n}\n\n/* Layout */\n.types-layout {\n display: grid;\n grid-template-columns: 420px 1fr;\n flex: 1;\n min-height: 0;\n gap: 20px;\n}\n\n/* Types List */\n.types-list {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n padding: 16px;\n}\n\n.category-section {\n margin-bottom: 20px;\n}\n\n.category-section:last-child {\n margin-bottom: 0;\n}\n\n.category-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-secondary);\n letter-spacing: 0.5px;\n border-left: 3px solid var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n border-radius: 0 8px 8px 0;\n margin-bottom: 8px;\n}\n\n.category-header i {\n font-size: 14px;\n}\n\n.category-name {\n flex: 1;\n}\n\n.category-header .count {\n background: var(--mj-bg-surface);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.type-items {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n position: relative;\n}\n\n.type-item:hover {\n background: var(--mj-bg-page);\n border-color: var(--mj-border-default);\n}\n\n.type-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.type-icon {\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 16px;\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.type-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-meta {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n\n.meta-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.meta-badge i {\n font-size: 9px;\n}\n\n.meta-badge.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.meta-badge.warning {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.type-actions {\n display: flex;\n gap: 4px;\n margin-right: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.type-item:hover .type-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n.arrow {\n color: var(--mj-border-strong);\n font-size: 12px;\n}\n\n/* Type Detail */\n.type-detail {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n padding: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon {\n width: 60px;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 14px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 26px;\n}\n\n.detail-title {\n flex: 1;\n}\n\n.detail-title h2 {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.category-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.category-badge i {\n font-size: 11px;\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n}\n\n.close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n cursor: pointer;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.detail-body {\n padding: 24px;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-stat {\n flex: 1;\n text-align: center;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.detail-stat.active {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.active .stat-value {\n color: var(--mj-status-success);\n}\n\n.detail-stat.warning {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.warning .stat-value {\n color: var(--mj-status-warning);\n}\n\n.description {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0 0 24px 0;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n}\n\n.schema-section,\n.validation-section {\n margin-bottom: 24px;\n}\n\n.schema-section h3,\n.validation-section h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n\n.schema-section h3 i,\n.validation-section h3 i {\n color: var(--mj-brand-primary);\n}\n\n.field-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.field-item {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n transition: all 0.2s ease;\n}\n\n.field-item:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.field-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.field-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.badge {\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.badge.type {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.badge.secret {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.secret i {\n margin-right: 3px;\n}\n\n.badge.required {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.field-description {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 10px 0 0 0;\n line-height: 1.5;\n}\n\n.no-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.no-fields i {\n color: var(--mj-brand-primary);\n}\n\n.validation-endpoint {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;\n border: 1px solid var(--mj-border-default);\n}\n\n.validation-endpoint i {\n color: var(--mj-brand-primary);\n}\n\n.detail-quick-actions {\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n/* No Selection */\n.no-selection {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 48px;\n}\n\n.no-selection-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.no-selection-icon i {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.no-selection h3 {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n}\n\n.empty-icon {\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 18px;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .types-layout {\n grid-template-columns: 1fr;\n }\n\n .types-list {\n max-height: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .types-container {\n padding: 16px;\n }\n\n .types-header {\n flex-direction: column;\n align-items: flex-start;\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 min-width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .detail-stats {\n flex-direction: column;\n }\n}\n"] }]
859
+ args: [{ standalone: false, selector: 'mj-credentials-types-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Credential Types\"\n Icon=\"fa-solid fa-shapes\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredTypes.length\"\n [Total]=\"types.length\"\n Label=\"types\">\n </mj-stat-badge>\n <mj-stat-badge\n Icon=\"fa-solid fa-folder\"\n [Count]=\"categories.length\"\n Label=\"categories\">\n </mj-stat-badge>\n <mj-stat-badge\n Icon=\"fa-solid fa-key\"\n [Count]=\"getTotalCredentialCount()\"\n Label=\"credentials\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i> New Type\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search types...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <mj-loading text=\"Loading credential types...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <div class=\"types-layout\">\n <!-- Types List -->\n <div class=\"types-list\">\n @for (entry of getTypesByCategory() | keyvalue; track entry) {\n <div class=\"category-section\">\n <div class=\"category-header\" [style.borderLeftColor]=\"getCategoryColor(entry.key)\">\n <i [class]=\"getCategoryIcon(entry.key)\" [style.color]=\"getCategoryColor(entry.key)\"></i>\n <span class=\"category-name\">{{entry.key}}</span>\n <span class=\"count\">{{entry.value.length}}</span>\n </div>\n <div class=\"type-items\">\n @for (type of entry.value; track type) {\n <div\n class=\"type-item\"\n [class.selected]=\"IsTypeSelected(type)\"\n (click)=\"selectType(type)\"\n >\n <div class=\"type-icon\" [style.backgroundColor]=\"getCategoryColor(type.Category) + '15'\" [style.color]=\"getCategoryColor(type.Category)\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-description\">\n {{type.Description | slice:0:60}}{{type.Description.length > 60 ? '...' : ''}}\n </div>\n }\n <div class=\"type-meta\">\n @if (type.credentialCount > 0) {\n <span class=\"meta-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{type.credentialCount}}\n </span>\n }\n @if (type.activeCount > 0) {\n <span class=\"meta-badge active\">\n <i class=\"fa-solid fa-check\"></i>\n {{type.activeCount}} active\n </span>\n }\n @if (type.expiringCount > 0) {\n <span class=\"meta-badge warning\">\n <i class=\"fa-solid fa-clock\"></i>\n {{type.expiringCount}} expiring\n </span>\n }\n </div>\n </div>\n <div class=\"type-actions\">\n @if (UserCanCreateCredential) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"createCredentialForType(type, $event)\"\n title=\"Add Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editType(type, $event)\"\n title=\"Edit Type\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && type.credentialCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteType(type, $event)\"\n title=\"Delete Type\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTypes.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <h3>No Credential Types Found</h3>\n @if (searchText || selectedCategoryFilter) {\n <p>\n No types match your current filters.\n <button class=\"btn-link\" (click)=\"clearFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedCategoryFilter) {\n <p>\n Get started by creating your first credential type.\n </p>\n }\n @if (UserCanCreate && !searchText && !selectedCategoryFilter) {\n <button class=\"btn-primary\" (click)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Type\n </button>\n }\n </div>\n }\n </div>\n <!-- Type Detail -->\n @if (selectedType) {\n <div class=\"type-detail\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '15'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"selectedType.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedType.Name}}</h2>\n <span class=\"category-badge\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '20'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"getCategoryIcon(selectedType.Category)\"></i>\n {{selectedType.Category}}\n </span>\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editType(selectedType)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"closeDetail()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats Row -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedType.credentialCount}}</div>\n <div class=\"stat-label\">Credentials</div>\n </div>\n <div class=\"detail-stat active\">\n <div class=\"stat-value\">{{selectedType.activeCount}}</div>\n <div class=\"stat-label\">Active</div>\n </div>\n @if (selectedType.expiringCount > 0) {\n <div class=\"detail-stat warning\">\n <div class=\"stat-value\">{{selectedType.expiringCount}}</div>\n <div class=\"stat-label\">Expiring</div>\n </div>\n }\n </div>\n @if (selectedType.Description) {\n <p class=\"description\">\n {{selectedType.Description}}\n </p>\n }\n <div class=\"schema-section\">\n <h3>\n <i class=\"fa-solid fa-list-check\"></i>\n Field Schema\n </h3>\n @if (schemaProperties.length > 0) {\n <div class=\"field-list\">\n @for (prop of schemaProperties; track prop) {\n <div class=\"field-item\">\n <div class=\"field-header\">\n <span class=\"field-name\">{{prop.title}}</span>\n <span class=\"field-badges\">\n <span class=\"badge type\">{{prop.type}}</span>\n @if (prop.isSecret) {\n <span class=\"badge secret\">\n <i class=\"fa-solid fa-lock\"></i> Secret\n </span>\n }\n @if (prop.required) {\n <span class=\"badge required\">Required</span>\n }\n </span>\n </div>\n @if (prop.description) {\n <p class=\"field-description\">\n {{prop.description}}\n </p>\n }\n </div>\n }\n </div>\n }\n @if (schemaProperties.length === 0) {\n <div class=\"no-fields\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No fields defined in schema</span>\n </div>\n }\n </div>\n @if (selectedType.ValidationEndpoint) {\n <div class=\"validation-section\">\n <h3>\n <i class=\"fa-solid fa-check-circle\"></i>\n Validation\n </h3>\n <div class=\"validation-endpoint\">\n <i class=\"fa-solid fa-link\"></i>\n <span>{{selectedType.ValidationEndpoint}}</span>\n </div>\n </div>\n }\n <!-- Quick Actions -->\n @if (UserCanCreateCredential) {\n <div class=\"detail-quick-actions\">\n <button class=\"btn-primary\" (click)=\"createCredentialForType(selectedType)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n }\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedType && filteredTypes.length > 0) {\n <div class=\"no-selection\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Credential Type</h3>\n <p>Click on a credential type to view its details and field schema</p>\n </div>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Type Edit Panel -->\n <mj-credential-type-edit-panel\n #typeEditPanel\n (saved)=\"onTypeSaved($any($event))\"\n (deleted)=\"onTypeDeleted($any($event))\"\n ></mj-credential-type-edit-panel>\n</mj-page-layout>\n", styles: ["/* Layout */\n.types-layout {\n display: grid;\n grid-template-columns: 420px 1fr;\n flex: 1;\n min-height: 0;\n gap: 20px;\n}\n\n/* Types List */\n.types-list {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n padding: 16px;\n}\n\n.category-section {\n margin-bottom: 20px;\n}\n\n.category-section:last-child {\n margin-bottom: 0;\n}\n\n.category-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-secondary);\n letter-spacing: 0.5px;\n border-left: 3px solid var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n border-radius: 0 8px 8px 0;\n margin-bottom: 8px;\n}\n\n.category-header i {\n font-size: 14px;\n}\n\n.category-name {\n flex: 1;\n}\n\n.category-header .count {\n background: var(--mj-bg-surface);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.type-items {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n position: relative;\n}\n\n.type-item:hover {\n background: var(--mj-bg-page);\n border-color: var(--mj-border-default);\n}\n\n.type-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.type-icon {\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 16px;\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.type-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-meta {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n\n.meta-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.meta-badge i {\n font-size: 9px;\n}\n\n.meta-badge.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.meta-badge.warning {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.type-actions {\n display: flex;\n gap: 4px;\n margin-right: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.type-item:hover .type-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n.arrow {\n color: var(--mj-border-strong);\n font-size: 12px;\n}\n\n/* Type Detail */\n.type-detail {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n padding: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon {\n width: 60px;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 14px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 26px;\n}\n\n.detail-title {\n flex: 1;\n}\n\n.detail-title h2 {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.category-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.category-badge i {\n font-size: 11px;\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n}\n\n.close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n cursor: pointer;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.detail-body {\n padding: 24px;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-stat {\n flex: 1;\n text-align: center;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.detail-stat.active {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.active .stat-value {\n color: var(--mj-status-success);\n}\n\n.detail-stat.warning {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.warning .stat-value {\n color: var(--mj-status-warning);\n}\n\n.description {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0 0 24px 0;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n}\n\n.schema-section,\n.validation-section {\n margin-bottom: 24px;\n}\n\n.schema-section h3,\n.validation-section h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n\n.schema-section h3 i,\n.validation-section h3 i {\n color: var(--mj-brand-primary);\n}\n\n.field-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.field-item {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n transition: all 0.2s ease;\n}\n\n.field-item:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.field-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.field-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.badge {\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.badge.type {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.badge.secret {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.secret i {\n margin-right: 3px;\n}\n\n.badge.required {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.field-description {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 10px 0 0 0;\n line-height: 1.5;\n}\n\n.no-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.no-fields i {\n color: var(--mj-brand-primary);\n}\n\n.validation-endpoint {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;\n border: 1px solid var(--mj-border-default);\n}\n\n.validation-endpoint i {\n color: var(--mj-brand-primary);\n}\n\n.detail-quick-actions {\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n/* No Selection */\n.no-selection {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 48px;\n}\n\n.no-selection-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.no-selection-icon i {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.no-selection h3 {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n}\n\n.empty-icon {\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 18px;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .types-layout {\n grid-template-columns: 1fr;\n }\n\n .types-list {\n max-height: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .types-container {\n padding: 16px;\n }\n\n .types-header {\n flex-direction: column;\n align-items: flex-start;\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 min-width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .detail-stats {\n flex-direction: column;\n }\n}\n"] }]
871
860
  }], () => [{ type: i0.ChangeDetectorRef }], { typeEditPanel: [{
872
861
  type: ViewChild,
873
862
  args: ['typeEditPanel']
874
863
  }] }); })();
875
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsTypesResourceComponent, { className: "CredentialsTypesResourceComponent", filePath: "src/Credentials/components/credentials-types-resource.component.ts", lineNumber: 31 }); })();
864
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CredentialsTypesResourceComponent, { className: "CredentialsTypesResourceComponent", filePath: "src/Credentials/components/credentials-types-resource.component.ts", lineNumber: 32 }); })();
876
865
  //# sourceMappingURL=credentials-types-resource.component.js.map