@memberjunction/ng-dashboards 5.38.0 → 5.40.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 (321) hide show
  1. package/README.md +14 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +217 -860
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1717 -7802
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts +56 -0
  31. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js +423 -0
  33. package/dist/AI/components/autotagging/components/classify-item-drilldown.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts +70 -0
  35. package/dist/AI/components/autotagging/components/classify-item-grid.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/components/classify-item-grid.component.js +308 -0
  37. package/dist/AI/components/autotagging/components/classify-item-grid.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts +29 -0
  39. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js +186 -0
  41. package/dist/AI/components/autotagging/components/classify-org-context-editor.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts +69 -0
  43. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js +278 -0
  45. package/dist/AI/components/autotagging/components/classify-overview-analytics.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts +73 -0
  47. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js +393 -0
  49. package/dist/AI/components/autotagging/components/classify-seed-taxonomy.component.js.map +1 -0
  50. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts +122 -0
  51. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js +908 -0
  53. package/dist/AI/components/autotagging/dialogs/classify-setup-wizard.component.js.map +1 -0
  54. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  55. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  57. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  58. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  59. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  61. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  63. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  65. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +333 -0
  67. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +2125 -0
  69. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  71. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  73. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  74. package/dist/AI/components/autotagging/shared/classify.format.d.ts +58 -0
  75. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/shared/classify.format.js +260 -0
  77. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  78. package/dist/AI/components/autotagging/shared/classify.types.d.ts +319 -0
  79. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  81. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  83. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  85. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +77 -0
  87. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/history-tab.component.js +519 -0
  89. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  90. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  91. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  92. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  93. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  94. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +131 -0
  95. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  96. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +813 -0
  97. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  98. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +177 -0
  99. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  100. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1465 -0
  101. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  102. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +78 -0
  103. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  104. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +492 -0
  105. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  106. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  107. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  108. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  109. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  110. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +56 -0
  111. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  112. package/dist/AI/components/autotagging/tabs/types-tab.component.js +271 -0
  113. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  114. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +3 -0
  115. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  116. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +306 -290
  117. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  118. package/dist/AI/components/execution-monitoring.component.js +1 -1
  119. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  120. package/dist/AI/components/models/model-management.component.js +209 -208
  121. package/dist/AI/components/models/model-management.component.js.map +1 -1
  122. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  123. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  124. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  125. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  126. package/dist/AI/components/system/system-configuration.component.js +17 -17
  127. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  128. package/dist/AI/components/tags/tags-resource.component.d.ts +1 -0
  129. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  130. package/dist/AI/components/tags/tags-resource.component.js +578 -538
  131. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  132. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +3 -0
  133. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  134. package/dist/AI/components/vectors/vector-management-resource.component.js +331 -303
  135. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  136. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  137. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  138. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  139. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  140. package/dist/AI/services/cache-metrics.d.ts +50 -0
  141. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  142. package/dist/AI/services/cache-metrics.js +43 -0
  143. package/dist/AI/services/cache-metrics.js.map +1 -0
  144. package/dist/APIKeys/api-applications-panel.component.js +2 -2
  145. package/dist/APIKeys/api-key-create-dialog.component.js +2 -2
  146. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  147. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  148. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  149. package/dist/Actions/components/actions-overview.component.js +141 -141
  150. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  151. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  152. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  153. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  154. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  155. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  156. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  157. package/dist/Admin/admin-data-schema.component.js +2 -2
  158. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  159. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  160. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  161. package/dist/Admin/admin-identity-access.component.js +2 -2
  162. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  163. package/dist/Admin/admin-monitoring.component.js +2 -2
  164. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  165. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  166. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  167. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  168. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  169. package/dist/Communication/communication-logs-resource.component.js +72 -50
  170. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  171. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  172. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  173. package/dist/Communication/communication-providers-resource.component.js +52 -51
  174. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  175. package/dist/Communication/communication-runs-resource.component.js +39 -38
  176. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  177. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  178. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  179. package/dist/Communication/communication-templates-resource.component.js +92 -89
  180. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  181. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  182. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  183. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  184. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  185. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  186. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  187. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  188. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  189. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  190. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  191. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +31 -340
  192. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  193. package/dist/DataExplorer/data-explorer-dashboard.component.js +468 -1958
  194. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  195. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  196. package/dist/DataExplorer/data-explorer-resource.component.js +10 -0
  197. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  198. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  199. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  200. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  201. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  202. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  203. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  204. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  205. package/dist/DevTools/app-state-inspector.component.js +18 -17
  206. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  207. package/dist/DevTools/class-registry.component.js +88 -85
  208. package/dist/DevTools/class-registry.component.js.map +1 -1
  209. package/dist/DevTools/event-monitor.component.js +155 -150
  210. package/dist/DevTools/event-monitor.component.js.map +1 -1
  211. package/dist/DevTools/graphql-console.component.js +245 -243
  212. package/dist/DevTools/graphql-console.component.js.map +1 -1
  213. package/dist/DevTools/layout-inspector.component.js +18 -17
  214. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  215. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  216. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  217. package/dist/Home/home-dashboard.component.js +2 -2
  218. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  219. package/dist/Integration/components/activity/activity.component.js +236 -229
  220. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  221. package/dist/Integration/components/connections/connections.component.js +390 -389
  222. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  223. package/dist/Integration/components/overview/overview.component.js +2 -2
  224. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  225. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +14 -11
  226. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  227. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +27 -2
  228. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -1
  229. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +244 -119
  230. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  231. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  232. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  233. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  234. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  235. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts +65 -0
  236. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.d.ts.map +1 -0
  237. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js +176 -0
  238. package/dist/KnowledgeHub/components/visualize/record-drilldown/record-drilldown.component.js.map +1 -0
  239. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts +81 -0
  240. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.d.ts.map +1 -0
  241. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js +308 -0
  242. package/dist/KnowledgeHub/components/visualize/tag-cloud/tag-cloud.component.js.map +1 -0
  243. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts +85 -0
  244. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.d.ts.map +1 -0
  245. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js +362 -0
  246. package/dist/KnowledgeHub/components/visualize/visualize-resource.component.js.map +1 -0
  247. package/dist/KnowledgeHub/index.d.ts +3 -0
  248. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  249. package/dist/KnowledgeHub/index.js +3 -0
  250. package/dist/KnowledgeHub/index.js.map +1 -1
  251. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  252. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  253. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  254. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  255. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  256. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  257. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  258. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  259. package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
  260. package/dist/MCP/mcp-dashboard.component.js +443 -438
  261. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  262. package/dist/QueryBrowser/query-browser-resource.component.js +1 -1
  263. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  264. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  265. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  266. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  267. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  268. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  269. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  270. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  271. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  272. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  273. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  274. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  275. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  276. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  277. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  278. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  279. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  280. package/dist/Testing/components/testing-explorer.component.js +436 -427
  281. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  282. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  283. package/dist/Testing/components/testing-runs.component.js +116 -115
  284. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  285. package/dist/Testing/testing-dashboard.component.js +6 -7
  286. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  287. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  288. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  289. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  290. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  291. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  292. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  293. package/dist/ai-dashboards.module.d.ts +57 -35
  294. package/dist/ai-dashboards.module.d.ts.map +1 -1
  295. package/dist/ai-dashboards.module.js +80 -1
  296. package/dist/ai-dashboards.module.js.map +1 -1
  297. package/dist/communication-dashboards.module.d.ts +1 -1
  298. package/dist/communication-dashboards.module.d.ts.map +1 -1
  299. package/dist/communication-dashboards.module.js +7 -1
  300. package/dist/communication-dashboards.module.js.map +1 -1
  301. package/dist/data-explorer-dashboards.module.d.ts +12 -14
  302. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  303. package/dist/data-explorer-dashboards.module.js +5 -14
  304. package/dist/data-explorer-dashboards.module.js.map +1 -1
  305. package/dist/public-api.d.ts +3 -0
  306. package/dist/public-api.d.ts.map +1 -1
  307. package/dist/public-api.js +3 -0
  308. package/dist/public-api.js.map +1 -1
  309. package/dist/testing-dashboards.module.d.ts +4 -5
  310. package/dist/testing-dashboards.module.d.ts.map +1 -1
  311. package/dist/testing-dashboards.module.js +7 -5
  312. package/dist/testing-dashboards.module.js.map +1 -1
  313. package/package.json +57 -54
  314. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts +0 -79
  315. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +0 -1
  316. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +0 -195
  317. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +0 -1
  318. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts +0 -226
  319. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +0 -1
  320. package/dist/DataExplorer/components/view-selector/view-selector.component.js +0 -861
  321. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +0 -1
@@ -15,19 +15,20 @@ import * as i2 from "@memberjunction/ng-shared-generic";
15
15
  import * as i3 from "@memberjunction/ng-credentials";
16
16
  import * as i4 from "@angular/common";
17
17
  const _c0 = ["typeEditPanel"];
18
- function CredentialsTypesResourceComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
18
+ function CredentialsTypesResourceComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
19
19
  const _r2 = i0.ɵɵgetCurrentView();
20
20
  i0.ɵɵelementStart(0, "button", 15);
21
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_8_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createNewType()); });
21
+ i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createNewType()); });
22
22
  i0.ɵɵelement(1, "i", 16);
23
- i0.ɵɵtext(2, " New Type ");
24
- i0.ɵɵelementEnd();
23
+ i0.ɵɵelementStart(2, "span", 17);
24
+ i0.ɵɵtext(3, "New Type");
25
+ i0.ɵɵelementEnd()();
25
26
  } }
26
27
  function CredentialsTypesResourceComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
27
28
  i0.ɵɵelement(0, "mj-loading", 12);
28
29
  } }
29
30
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "div", 31);
31
+ i0.ɵɵelementStart(0, "div", 32);
31
32
  i0.ɵɵtext(1);
32
33
  i0.ɵɵpipe(2, "slice");
33
34
  i0.ɵɵelementEnd();
@@ -37,8 +38,8 @@ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditiona
37
38
  i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2, type_r5.Description, 0, 60), "", type_r5.Description.length > 60 ? "..." : "", " ");
38
39
  } }
39
40
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "span", 33);
41
- i0.ɵɵelement(1, "i", 41);
41
+ i0.ɵɵelementStart(0, "span", 34);
42
+ i0.ɵɵelement(1, "i", 42);
42
43
  i0.ɵɵtext(2);
43
44
  i0.ɵɵelementEnd();
44
45
  } if (rf & 2) {
@@ -47,8 +48,8 @@ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditiona
47
48
  i0.ɵɵtextInterpolate1(" ", type_r5.credentialCount, " ");
48
49
  } }
49
50
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "span", 34);
51
- i0.ɵɵelement(1, "i", 42);
51
+ i0.ɵɵelementStart(0, "span", 35);
52
+ i0.ɵɵelement(1, "i", 43);
52
53
  i0.ɵɵtext(2);
53
54
  i0.ɵɵelementEnd();
54
55
  } if (rf & 2) {
@@ -57,8 +58,8 @@ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditiona
57
58
  i0.ɵɵtextInterpolate1(" ", type_r5.activeCount, " active ");
58
59
  } }
59
60
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "span", 35);
61
- i0.ɵɵelement(1, "i", 43);
61
+ i0.ɵɵelementStart(0, "span", 36);
62
+ i0.ɵɵelement(1, "i", 44);
62
63
  i0.ɵɵtext(2);
63
64
  i0.ɵɵelementEnd();
64
65
  } if (rf & 2) {
@@ -68,47 +69,47 @@ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditiona
68
69
  } }
69
70
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
70
71
  const _r6 = i0.ɵɵgetCurrentView();
71
- i0.ɵɵelementStart(0, "button", 44);
72
+ i0.ɵɵelementStart(0, "button", 45);
72
73
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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
74
  i0.ɵɵelement(1, "i", 16);
74
75
  i0.ɵɵelementEnd();
75
76
  } }
76
77
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
77
78
  const _r7 = i0.ɵɵgetCurrentView();
78
- i0.ɵɵelementStart(0, "button", 45);
79
+ i0.ɵɵelementStart(0, "button", 46);
79
80
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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", 46);
81
+ i0.ɵɵelement(1, "i", 47);
81
82
  i0.ɵɵelementEnd();
82
83
  } }
83
84
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
84
85
  const _r8 = i0.ɵɵgetCurrentView();
85
- i0.ɵɵelementStart(0, "button", 47);
86
+ i0.ɵɵelementStart(0, "button", 48);
86
87
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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", 48);
88
+ i0.ɵɵelement(1, "i", 49);
88
89
  i0.ɵɵelementEnd();
89
90
  } }
90
91
  function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Template(rf, ctx) { if (rf & 1) {
91
92
  const _r4 = i0.ɵɵgetCurrentView();
92
- i0.ɵɵelementStart(0, "div", 27);
93
+ i0.ɵɵelementStart(0, "div", 28);
93
94
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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", 28);
95
+ i0.ɵɵelementStart(1, "div", 29);
95
96
  i0.ɵɵelement(2, "i");
96
97
  i0.ɵɵelementEnd();
97
- i0.ɵɵelementStart(3, "div", 29)(4, "div", 30);
98
+ i0.ɵɵelementStart(3, "div", 30)(4, "div", 31);
98
99
  i0.ɵɵtext(5);
99
100
  i0.ɵɵelementEnd();
100
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_6_Template, 3, 6, "div", 31);
101
- i0.ɵɵelementStart(7, "div", 32);
102
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_8_Template, 3, 1, "span", 33);
103
- i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_9_Template, 3, 1, "span", 34);
104
- i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_10_Template, 3, 1, "span", 35);
101
+ i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_6_Template, 3, 6, "div", 32);
102
+ i0.ɵɵelementStart(7, "div", 33);
103
+ i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_8_Template, 3, 1, "span", 34);
104
+ i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_9_Template, 3, 1, "span", 35);
105
+ i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_10_Template, 3, 1, "span", 36);
105
106
  i0.ɵɵelementEnd()();
106
- i0.ɵɵelementStart(11, "div", 36);
107
- i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_12_Template, 2, 0, "button", 37);
108
- i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_13_Template, 2, 0, "button", 38);
109
- i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_14_Template, 2, 0, "button", 39);
107
+ i0.ɵɵelementStart(11, "div", 37);
108
+ i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_12_Template, 2, 0, "button", 38);
109
+ i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_13_Template, 2, 0, "button", 39);
110
+ i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_14_Template, 2, 0, "button", 40);
110
111
  i0.ɵɵelementEnd();
111
- i0.ɵɵelement(15, "i", 40);
112
+ i0.ɵɵelement(15, "i", 41);
112
113
  i0.ɵɵelementEnd();
113
114
  } if (rf & 2) {
114
115
  const type_r5 = ctx.$implicit;
@@ -136,16 +137,16 @@ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Template(r
136
137
  i0.ɵɵconditional(ctx_r2.UserCanDelete && type_r5.credentialCount === 0 ? 14 : -1);
137
138
  } }
138
139
  function CredentialsTypesResourceComponent_Conditional_13_For_3_Template(rf, ctx) { if (rf & 1) {
139
- i0.ɵɵelementStart(0, "div", 18)(1, "div", 22);
140
+ i0.ɵɵelementStart(0, "div", 19)(1, "div", 23);
140
141
  i0.ɵɵelement(2, "i");
141
- i0.ɵɵelementStart(3, "span", 23);
142
+ i0.ɵɵelementStart(3, "span", 24);
142
143
  i0.ɵɵtext(4);
143
144
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(5, "span", 24);
145
+ i0.ɵɵelementStart(5, "span", 25);
145
146
  i0.ɵɵtext(6);
146
147
  i0.ɵɵelementEnd()();
147
- i0.ɵɵelementStart(7, "div", 25);
148
- i0.ɵɵrepeaterCreate(8, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Template, 16, 16, "div", 26, i0.ɵɵrepeaterTrackByIdentity);
148
+ i0.ɵɵelementStart(7, "div", 26);
149
+ i0.ɵɵrepeaterCreate(8, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Template, 16, 16, "div", 27, i0.ɵɵrepeaterTrackByIdentity);
149
150
  i0.ɵɵelementEnd()();
150
151
  } if (rf & 2) {
151
152
  const entry_r9 = ctx.$implicit;
@@ -166,7 +167,7 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditio
166
167
  const _r10 = i0.ɵɵgetCurrentView();
167
168
  i0.ɵɵelementStart(0, "p");
168
169
  i0.ɵɵtext(1, " No types match your current filters. ");
169
- i0.ɵɵelementStart(2, "button", 52);
170
+ i0.ɵɵelementStart(2, "button", 53);
170
171
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.clearFilters()); });
171
172
  i0.ɵɵtext(3, "Clear filters");
172
173
  i0.ɵɵelementEnd()();
@@ -178,22 +179,22 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditio
178
179
  } }
179
180
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
180
181
  const _r11 = i0.ɵɵgetCurrentView();
181
- i0.ɵɵelementStart(0, "button", 53);
182
+ i0.ɵɵelementStart(0, "button", 54);
182
183
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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
184
  i0.ɵɵelement(1, "i", 16);
184
185
  i0.ɵɵtext(2, " Create Type ");
185
186
  i0.ɵɵelementEnd();
186
187
  } }
187
188
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Template(rf, ctx) { if (rf & 1) {
188
- i0.ɵɵelementStart(0, "div", 19)(1, "div", 49);
189
- i0.ɵɵelement(2, "i", 50);
189
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 50);
190
+ i0.ɵɵelement(2, "i", 51);
190
191
  i0.ɵɵelementEnd();
191
192
  i0.ɵɵelementStart(3, "h3");
192
193
  i0.ɵɵtext(4, "No Credential Types Found");
193
194
  i0.ɵɵelementEnd();
194
195
  i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_5_Template, 4, 0, "p");
195
196
  i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_6_Template, 2, 0, "p");
196
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 51);
197
+ i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_7_Template, 3, 0, "button", 52);
197
198
  i0.ɵɵelementEnd();
198
199
  } if (rf & 2) {
199
200
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -206,16 +207,16 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Template
206
207
  } }
207
208
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
208
209
  const _r13 = i0.ɵɵgetCurrentView();
209
- i0.ɵɵelementStart(0, "button", 76);
210
+ i0.ɵɵelementStart(0, "button", 77);
210
211
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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", 46);
212
+ i0.ɵɵelement(1, "i", 47);
212
213
  i0.ɵɵelementEnd();
213
214
  } }
214
215
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_26_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "div", 68)(1, "div", 65);
216
+ i0.ɵɵelementStart(0, "div", 69)(1, "div", 66);
216
217
  i0.ɵɵtext(2);
217
218
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(3, "div", 66);
219
+ i0.ɵɵelementStart(3, "div", 67);
219
220
  i0.ɵɵtext(4, "Expiring");
220
221
  i0.ɵɵelementEnd()();
221
222
  } if (rf & 2) {
@@ -224,7 +225,7 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
224
225
  i0.ɵɵtextInterpolate(ctx_r2.selectedType.expiringCount);
225
226
  } }
226
227
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_27_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "p", 69);
228
+ i0.ɵɵelementStart(0, "p", 70);
228
229
  i0.ɵɵtext(1);
229
230
  i0.ɵɵelementEnd();
230
231
  } if (rf & 2) {
@@ -233,18 +234,18 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
233
234
  i0.ɵɵtextInterpolate1(" ", ctx_r2.selectedType.Description, " ");
234
235
  } }
235
236
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
236
- i0.ɵɵelementStart(0, "span", 82);
237
- i0.ɵɵelement(1, "i", 85);
237
+ i0.ɵɵelementStart(0, "span", 83);
238
+ i0.ɵɵelement(1, "i", 86);
238
239
  i0.ɵɵtext(2, " Secret ");
239
240
  i0.ɵɵelementEnd();
240
241
  } }
241
242
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
242
- i0.ɵɵelementStart(0, "span", 83);
243
+ i0.ɵɵelementStart(0, "span", 84);
243
244
  i0.ɵɵtext(1, "Required");
244
245
  i0.ɵɵelementEnd();
245
246
  } }
246
247
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
247
- i0.ɵɵelementStart(0, "p", 84);
248
+ i0.ɵɵelementStart(0, "p", 85);
248
249
  i0.ɵɵtext(1);
249
250
  i0.ɵɵelementEnd();
250
251
  } if (rf & 2) {
@@ -253,16 +254,16 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
253
254
  i0.ɵɵtextInterpolate1(" ", prop_r14.description, " ");
254
255
  } }
255
256
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Template(rf, ctx) { if (rf & 1) {
256
- i0.ɵɵelementStart(0, "div", 77)(1, "div", 78)(2, "span", 79);
257
+ i0.ɵɵelementStart(0, "div", 78)(1, "div", 79)(2, "span", 80);
257
258
  i0.ɵɵtext(3);
258
259
  i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(4, "span", 80)(5, "span", 81);
260
+ i0.ɵɵelementStart(4, "span", 81)(5, "span", 82);
260
261
  i0.ɵɵtext(6);
261
262
  i0.ɵɵelementEnd();
262
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_7_Template, 3, 0, "span", 82);
263
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_8_Template, 2, 0, "span", 83);
263
+ i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_7_Template, 3, 0, "span", 83);
264
+ i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_8_Template, 2, 0, "span", 84);
264
265
  i0.ɵɵelementEnd()();
265
- i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_9_Template, 2, 1, "p", 84);
266
+ i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_9_Template, 2, 1, "p", 85);
266
267
  i0.ɵɵelementEnd();
267
268
  } if (rf & 2) {
268
269
  const prop_r14 = ctx.$implicit;
@@ -278,8 +279,8 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
278
279
  i0.ɵɵconditional(prop_r14.description ? 9 : -1);
279
280
  } }
280
281
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵelementStart(0, "div", 72);
282
- i0.ɵɵrepeaterCreate(1, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Template, 10, 5, "div", 77, i0.ɵɵrepeaterTrackByIdentity);
282
+ i0.ɵɵelementStart(0, "div", 73);
283
+ i0.ɵɵrepeaterCreate(1, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Template, 10, 5, "div", 78, i0.ɵɵrepeaterTrackByIdentity);
283
284
  i0.ɵɵelementEnd();
284
285
  } if (rf & 2) {
285
286
  const ctx_r2 = i0.ɵɵnextContext(3);
@@ -287,19 +288,19 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
287
288
  i0.ɵɵrepeater(ctx_r2.schemaProperties);
288
289
  } }
289
290
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_33_Template(rf, ctx) { if (rf & 1) {
290
- i0.ɵɵelementStart(0, "div", 73);
291
- i0.ɵɵelement(1, "i", 86);
291
+ i0.ɵɵelementStart(0, "div", 74);
292
+ i0.ɵɵelement(1, "i", 87);
292
293
  i0.ɵɵelementStart(2, "span");
293
294
  i0.ɵɵtext(3, "No fields defined in schema");
294
295
  i0.ɵɵelementEnd()();
295
296
  } }
296
297
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_34_Template(rf, ctx) { if (rf & 1) {
297
- i0.ɵɵelementStart(0, "div", 74)(1, "h3");
298
- i0.ɵɵelement(2, "i", 87);
298
+ i0.ɵɵelementStart(0, "div", 75)(1, "h3");
299
+ i0.ɵɵelement(2, "i", 88);
299
300
  i0.ɵɵtext(3, " Validation ");
300
301
  i0.ɵɵelementEnd();
301
- i0.ɵɵelementStart(4, "div", 88);
302
- i0.ɵɵelement(5, "i", 89);
302
+ i0.ɵɵelementStart(4, "div", 89);
303
+ i0.ɵɵelement(5, "i", 90);
303
304
  i0.ɵɵelementStart(6, "span");
304
305
  i0.ɵɵtext(7);
305
306
  i0.ɵɵelementEnd()()();
@@ -310,7 +311,7 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
310
311
  } }
311
312
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_35_Template(rf, ctx) { if (rf & 1) {
312
313
  const _r15 = i0.ɵɵgetCurrentView();
313
- i0.ɵɵelementStart(0, "div", 75)(1, "button", 53);
314
+ i0.ɵɵelementStart(0, "div", 76)(1, "button", 54);
314
315
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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
316
  i0.ɵɵelement(2, "i", 16);
316
317
  i0.ɵɵtext(3, " Create Credential ");
@@ -318,46 +319,46 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditio
318
319
  } }
319
320
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
320
321
  const _r12 = i0.ɵɵgetCurrentView();
321
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 54)(2, "div", 55);
322
+ i0.ɵɵelementStart(0, "div", 21)(1, "div", 55)(2, "div", 56);
322
323
  i0.ɵɵelement(3, "i");
323
324
  i0.ɵɵelementEnd();
324
- i0.ɵɵelementStart(4, "div", 56)(5, "h2");
325
+ i0.ɵɵelementStart(4, "div", 57)(5, "h2");
325
326
  i0.ɵɵtext(6);
326
327
  i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(7, "span", 57);
328
+ i0.ɵɵelementStart(7, "span", 58);
328
329
  i0.ɵɵelement(8, "i");
329
330
  i0.ɵɵtext(9);
330
331
  i0.ɵɵelementEnd()();
331
- i0.ɵɵelementStart(10, "div", 58);
332
- i0.ɵɵconditionalCreate(11, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_11_Template, 2, 0, "button", 59);
333
- i0.ɵɵelementStart(12, "button", 60);
332
+ i0.ɵɵelementStart(10, "div", 59);
333
+ i0.ɵɵconditionalCreate(11, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_11_Template, 2, 0, "button", 60);
334
+ i0.ɵɵelementStart(12, "button", 61);
334
335
  i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_13_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", 61);
336
+ i0.ɵɵelement(13, "i", 62);
336
337
  i0.ɵɵelementEnd()()();
337
- i0.ɵɵelementStart(14, "div", 62)(15, "div", 63)(16, "div", 64)(17, "div", 65);
338
+ i0.ɵɵelementStart(14, "div", 63)(15, "div", 64)(16, "div", 65)(17, "div", 66);
338
339
  i0.ɵɵtext(18);
339
340
  i0.ɵɵelementEnd();
340
- i0.ɵɵelementStart(19, "div", 66);
341
+ i0.ɵɵelementStart(19, "div", 67);
341
342
  i0.ɵɵtext(20, "Credentials");
342
343
  i0.ɵɵelementEnd()();
343
- i0.ɵɵelementStart(21, "div", 67)(22, "div", 65);
344
+ i0.ɵɵelementStart(21, "div", 68)(22, "div", 66);
344
345
  i0.ɵɵtext(23);
345
346
  i0.ɵɵelementEnd();
346
- i0.ɵɵelementStart(24, "div", 66);
347
+ i0.ɵɵelementStart(24, "div", 67);
347
348
  i0.ɵɵtext(25, "Active");
348
349
  i0.ɵɵelementEnd()();
349
- i0.ɵɵconditionalCreate(26, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_26_Template, 5, 1, "div", 68);
350
+ i0.ɵɵconditionalCreate(26, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_26_Template, 5, 1, "div", 69);
350
351
  i0.ɵɵelementEnd();
351
- i0.ɵɵconditionalCreate(27, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_27_Template, 2, 1, "p", 69);
352
- i0.ɵɵelementStart(28, "div", 70)(29, "h3");
353
- i0.ɵɵelement(30, "i", 71);
352
+ i0.ɵɵconditionalCreate(27, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_27_Template, 2, 1, "p", 70);
353
+ i0.ɵɵelementStart(28, "div", 71)(29, "h3");
354
+ i0.ɵɵelement(30, "i", 72);
354
355
  i0.ɵɵtext(31, " Field Schema ");
355
356
  i0.ɵɵelementEnd();
356
- i0.ɵɵconditionalCreate(32, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_Template, 3, 0, "div", 72);
357
- i0.ɵɵconditionalCreate(33, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_33_Template, 4, 0, "div", 73);
357
+ i0.ɵɵconditionalCreate(32, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_Template, 3, 0, "div", 73);
358
+ i0.ɵɵconditionalCreate(33, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_33_Template, 4, 0, "div", 74);
358
359
  i0.ɵɵelementEnd();
359
- i0.ɵɵconditionalCreate(34, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_34_Template, 8, 1, "div", 74);
360
- i0.ɵɵconditionalCreate(35, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_35_Template, 4, 0, "div", 75);
360
+ i0.ɵɵconditionalCreate(34, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_34_Template, 8, 1, "div", 75);
361
+ i0.ɵɵconditionalCreate(35, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_35_Template, 4, 0, "div", 76);
361
362
  i0.ɵɵelementEnd()();
362
363
  } if (rf & 2) {
363
364
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -393,8 +394,8 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Template
393
394
  i0.ɵɵconditional(ctx_r2.UserCanCreateCredential ? 35 : -1);
394
395
  } }
395
396
  function CredentialsTypesResourceComponent_Conditional_13_Conditional_7_Template(rf, ctx) { if (rf & 1) {
396
- i0.ɵɵelementStart(0, "div", 21)(1, "div", 90);
397
- i0.ɵɵelement(2, "i", 91);
397
+ i0.ɵɵelementStart(0, "div", 22)(1, "div", 91);
398
+ i0.ɵɵelement(2, "i", 92);
398
399
  i0.ɵɵelementEnd();
399
400
  i0.ɵɵelementStart(3, "h3");
400
401
  i0.ɵɵtext(4, "Select a Credential Type");
@@ -404,13 +405,13 @@ function CredentialsTypesResourceComponent_Conditional_13_Conditional_7_Template
404
405
  i0.ɵɵelementEnd()();
405
406
  } }
406
407
  function CredentialsTypesResourceComponent_Conditional_13_Template(rf, ctx) { if (rf & 1) {
407
- i0.ɵɵelementStart(0, "div", 13)(1, "div", 17);
408
- i0.ɵɵrepeaterCreate(2, CredentialsTypesResourceComponent_Conditional_13_For_3_Template, 10, 8, "div", 18, i0.ɵɵrepeaterTrackByIdentity);
408
+ i0.ɵɵelementStart(0, "div", 13)(1, "div", 18);
409
+ i0.ɵɵrepeaterCreate(2, CredentialsTypesResourceComponent_Conditional_13_For_3_Template, 10, 8, "div", 19, i0.ɵɵrepeaterTrackByIdentity);
409
410
  i0.ɵɵpipe(4, "keyvalue");
410
- i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Template, 8, 3, "div", 19);
411
+ i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Template, 8, 3, "div", 20);
411
412
  i0.ɵɵelementEnd();
412
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Template, 36, 23, "div", 20);
413
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_13_Conditional_7_Template, 7, 0, "div", 21);
413
+ i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Template, 36, 23, "div", 21);
414
+ i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_13_Conditional_7_Template, 7, 0, "div", 22);
414
415
  i0.ɵɵelementEnd();
415
416
  } if (rf & 2) {
416
417
  const ctx_r2 = i0.ɵɵnextContext();
@@ -800,24 +801,24 @@ let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent
800
801
  } if (rf & 2) {
801
802
  let _t;
802
803
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.typeEditPanel = _t.first);
803
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 16, vars: 12, consts: [["typeEditPanel", ""], ["Title", "Credential Types", "Icon", "fa-solid fa-shapes"], ["meta", ""], ["Label", "types", 3, "Count", "Total"], ["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) {
804
+ } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 16, vars: 12, consts: [["typeEditPanel", ""], ["Title", "Credential Types", "Icon", "fa-solid fa-shapes"], ["meta", ""], ["Label", "types", 3, "Count", "Total"], ["actions", ""], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], ["toolbar", ""], ["Placeholder", "Search types...", 3, "ValueChange", "Value"], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [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, "action-btn-label"], [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) {
804
805
  const _r1 = i0.ɵɵgetCurrentView();
805
806
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2);
806
807
  i0.ɵɵelement(3, "mj-stat-badge", 3);
807
808
  i0.ɵɵelementEnd();
808
- i0.ɵɵelementStart(4, "div", 4)(5, "mj-filter-popover", 5);
809
- i0.ɵɵlistener("ClearAllRequested", function CredentialsTypesResourceComponent_Template_mj_filter_popover_ClearAllRequested_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
810
- i0.ɵɵelementStart(6, "mj-filter-panel", 6);
811
- i0.ɵɵlistener("ValuesChange", function CredentialsTypesResourceComponent_Template_mj_filter_panel_ValuesChange_6_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFilterValuesChange($event)); })("Reset", function CredentialsTypesResourceComponent_Template_mj_filter_panel_Reset_6_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
812
- i0.ɵɵelementEnd()();
813
- i0.ɵɵelementStart(7, "mj-refresh-button", 7);
814
- i0.ɵɵlistener("Clicked", function CredentialsTypesResourceComponent_Template_mj_refresh_button_Clicked_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
809
+ i0.ɵɵelementStart(4, "div", 4)(5, "mj-refresh-button", 5);
810
+ i0.ɵɵlistener("Clicked", function CredentialsTypesResourceComponent_Template_mj_refresh_button_Clicked_5_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
811
+ i0.ɵɵelementEnd();
812
+ i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_6_Template, 4, 0, "button", 6);
815
813
  i0.ɵɵelementEnd();
816
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_8_Template, 3, 0, "button", 8);
814
+ i0.ɵɵelementStart(7, "div", 7)(8, "mj-page-search", 8);
815
+ i0.ɵɵlistener("ValueChange", function CredentialsTypesResourceComponent_Template_mj_page_search_ValueChange_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchChange($event)); });
817
816
  i0.ɵɵelementEnd();
818
- i0.ɵɵelementStart(9, "div", 9)(10, "mj-page-search", 10);
819
- i0.ɵɵlistener("ValueChange", function CredentialsTypesResourceComponent_Template_mj_page_search_ValueChange_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchChange($event)); });
820
- i0.ɵɵelementEnd()()();
817
+ i0.ɵɵelementStart(9, "mj-filter-popover", 9);
818
+ i0.ɵɵlistener("ClearAllRequested", function CredentialsTypesResourceComponent_Template_mj_filter_popover_ClearAllRequested_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
819
+ i0.ɵɵelementStart(10, "mj-filter-panel", 10);
820
+ i0.ɵɵlistener("ValuesChange", function CredentialsTypesResourceComponent_Template_mj_filter_panel_ValuesChange_10_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFilterValuesChange($event)); })("Reset", function CredentialsTypesResourceComponent_Template_mj_filter_panel_Reset_10_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
821
+ i0.ɵɵelementEnd()()()();
821
822
  i0.ɵɵelementStart(11, "mj-page-body", 11);
822
823
  i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_12_Template, 1, 0, "mj-loading", 12);
823
824
  i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_13_Template, 8, 5, "div", 13);
@@ -829,16 +830,16 @@ let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent
829
830
  i0.ɵɵadvance(3);
830
831
  i0.ɵɵproperty("Count", ctx.filteredTypes.length)("Total", ctx.types.length);
831
832
  i0.ɵɵadvance(2);
832
- i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
833
- i0.ɵɵadvance();
834
- i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues);
835
- i0.ɵɵadvance();
836
833
  i0.ɵɵproperty("Loading", ctx.isLoading);
837
834
  i0.ɵɵadvance();
838
- i0.ɵɵconditional(ctx.UserCanCreate ? 8 : -1);
835
+ i0.ɵɵconditional(ctx.UserCanCreate ? 6 : -1);
839
836
  i0.ɵɵadvance(2);
840
837
  i0.ɵɵproperty("Value", ctx.searchText);
841
838
  i0.ɵɵadvance();
839
+ i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
840
+ i0.ɵɵadvance();
841
+ i0.ɵɵproperty("Fields", ctx.FilterFields)("Values", ctx.FilterValues);
842
+ i0.ɵɵadvance();
842
843
  i0.ɵɵproperty("Flex", true);
843
844
  i0.ɵɵadvance();
844
845
  i0.ɵɵconditional(ctx.isLoading ? 12 : -1);
@@ -852,7 +853,7 @@ CredentialsTypesResourceComponent = __decorate([
852
853
  export { CredentialsTypesResourceComponent };
853
854
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsTypesResourceComponent, [{
854
855
  type: Component,
855
- 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 <!-- Result-count of the filtered Types list \u2014 passes the meta rule\n (filtered/total is signal about how the filter narrowed the data,\n not visible by glancing at the list). Cross-entity reference\n counts (categories, credentials) dropped per chrome slot\n discipline audit Task B \u2014 those belong on their own pages. -->\n <mj-stat-badge\n [Count]=\"filteredTypes.length\"\n [Total]=\"types.length\"\n Label=\"types\">\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"] }]
856
+ 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 <!-- Result-count of the filtered Types list \u2014 passes the meta rule\n (filtered/total is signal about how the filter narrowed the data,\n not visible by glancing at the list). Cross-entity reference\n counts (categories, credentials) dropped per chrome slot\n discipline audit Task B \u2014 those belong on their own pages. -->\n <mj-stat-badge\n [Count]=\"filteredTypes.length\"\n [Total]=\"types.length\"\n Label=\"types\">\n </mj-stat-badge>\n </div>\n <div actions>\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> <span class=\"action-btn-label\">New Type</span>\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 <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 </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"] }]
856
857
  }], () => [{ type: i0.ChangeDetectorRef }], { typeEditPanel: [{
857
858
  type: ViewChild,
858
859
  args: ['typeEditPanel']