@memberjunction/ng-dashboards 5.35.0 → 5.36.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 (159) hide show
  1. package/dist/AI/components/agents/agent-configuration.component.js +3 -3
  2. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  3. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts +22 -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 +157 -137
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +28 -0
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2075 -2068
  10. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  11. package/dist/AI/components/models/model-management.component.js +4 -4
  12. package/dist/AI/components/models/model-management.component.js.map +1 -1
  13. package/dist/AI/components/prompts/prompt-management.component.js +3 -3
  14. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  15. package/dist/AI/components/tags/tags-resource.component.d.ts +15 -0
  16. package/dist/AI/components/tags/tags-resource.component.d.ts.map +1 -1
  17. package/dist/AI/components/tags/tags-resource.component.js +1411 -1424
  18. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  19. package/dist/APIKeys/api-keys-resource.component.d.ts +12 -8
  20. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  21. package/dist/APIKeys/api-keys-resource.component.js +329 -371
  22. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  23. package/dist/Actions/components/actions-overview.component.js +137 -142
  24. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  25. package/dist/Actions/components/execution-monitoring.component.js +111 -116
  26. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  27. package/dist/Admin/admin-data-schema.component.js +13 -65
  28. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  29. package/dist/Admin/admin-dev-tools-resource.component.js +13 -65
  30. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  31. package/dist/Admin/admin-identity-access.component.js +13 -65
  32. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  33. package/dist/Admin/admin-monitoring.component.js +13 -65
  34. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  35. package/dist/Admin/base-admin-container.component.d.ts +9 -7
  36. package/dist/Admin/base-admin-container.component.d.ts.map +1 -1
  37. package/dist/Admin/base-admin-container.component.js +26 -17
  38. package/dist/Admin/base-admin-container.component.js.map +1 -1
  39. package/dist/ApplicationRoles/application-roles-resource.component.js +74 -67
  40. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  41. package/dist/Communication/communication-new-message-resource.component.d.ts +93 -0
  42. package/dist/Communication/communication-new-message-resource.component.d.ts.map +1 -0
  43. package/dist/Communication/communication-new-message-resource.component.js +661 -0
  44. package/dist/Communication/communication-new-message-resource.component.js.map +1 -0
  45. package/dist/Credentials/components/credentials-categories-resource.component.js +152 -159
  46. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  47. package/dist/Credentials/components/credentials-types-resource.component.js +151 -155
  48. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  49. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +20 -21
  50. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js.map +1 -1
  51. package/dist/DatabaseDesigner/components/entity-list.component.d.ts +2 -0
  52. package/dist/DatabaseDesigner/components/entity-list.component.d.ts.map +1 -1
  53. package/dist/DatabaseDesigner/components/entity-list.component.js +131 -125
  54. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  55. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +1 -1
  56. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  57. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +7 -1
  58. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  59. package/dist/DevTools/app-state-inspector.component.d.ts +5 -0
  60. package/dist/DevTools/app-state-inspector.component.d.ts.map +1 -1
  61. package/dist/DevTools/app-state-inspector.component.js +46 -72
  62. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  63. package/dist/DevTools/class-registry.component.js +88 -100
  64. package/dist/DevTools/class-registry.component.js.map +1 -1
  65. package/dist/DevTools/event-monitor.component.js +158 -168
  66. package/dist/DevTools/event-monitor.component.js.map +1 -1
  67. package/dist/DevTools/graphql-console.component.js +257 -264
  68. package/dist/DevTools/graphql-console.component.js.map +1 -1
  69. package/dist/DevTools/layout-inspector.component.d.ts +5 -0
  70. package/dist/DevTools/layout-inspector.component.d.ts.map +1 -1
  71. package/dist/DevTools/layout-inspector.component.js +46 -64
  72. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  73. package/dist/DevTools/lazy-module-status.component.js +75 -84
  74. package/dist/DevTools/lazy-module-status.component.js.map +1 -1
  75. package/dist/DevTools/settings-explorer.component.js +76 -85
  76. package/dist/DevTools/settings-explorer.component.js.map +1 -1
  77. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +2 -0
  78. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  79. package/dist/EntityAdmin/entity-admin-dashboard.component.js +7 -3
  80. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  81. package/dist/Integration/components/activity/activity.component.js +97 -99
  82. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  83. package/dist/Integration/components/connections/connections.component.js +842 -855
  84. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  85. package/dist/Integration/components/pipelines/pipelines.component.js +502 -517
  86. package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
  87. package/dist/Integration/components/schedules/schedules.component.js +78 -89
  88. package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
  89. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts +5 -0
  90. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.d.ts.map +1 -1
  91. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +1120 -1128
  92. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  93. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +11 -0
  94. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  95. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +606 -661
  96. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  97. package/dist/Lists/components/lists-browse-resource.component.d.ts +102 -0
  98. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  99. package/dist/Lists/components/lists-browse-resource.component.js +1179 -504
  100. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  101. package/dist/Lists/components/lists-operations-resource.component.d.ts +133 -3
  102. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  103. package/dist/Lists/components/lists-operations-resource.component.js +1527 -327
  104. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  105. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts +29 -0
  106. package/dist/Lists/components/lists-shared-with-me-resource.component.d.ts.map +1 -0
  107. package/dist/Lists/components/lists-shared-with-me-resource.component.js +77 -0
  108. package/dist/Lists/components/lists-shared-with-me-resource.component.js.map +1 -0
  109. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts +6 -0
  110. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  111. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +35 -7
  112. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  113. package/dist/Lists/index.d.ts +1 -0
  114. package/dist/Lists/index.d.ts.map +1 -1
  115. package/dist/Lists/index.js +1 -0
  116. package/dist/Lists/index.js.map +1 -1
  117. package/dist/Lists/services/list-set-operations.service.d.ts +93 -2
  118. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  119. package/dist/Lists/services/list-set-operations.service.js +236 -10
  120. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  121. package/dist/MCP/mcp-dashboard.component.js +19 -19
  122. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  123. package/dist/Scheduling/scheduling-dashboard.component.js +58 -60
  124. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  125. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +13 -3
  126. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  127. package/dist/SystemDiagnostics/system-diagnostics.component.js +1007 -1252
  128. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  129. package/dist/Testing/components/testing-explorer.component.d.ts +31 -6
  130. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  131. package/dist/Testing/components/testing-explorer.component.js +543 -629
  132. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  133. package/dist/Testing/testing-dashboard.component.js +50 -49
  134. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  135. package/dist/ai-dashboards.module.d.ts +1 -1
  136. package/dist/ai-dashboards.module.d.ts.map +1 -1
  137. package/dist/ai-dashboards.module.js +16 -1
  138. package/dist/ai-dashboards.module.js.map +1 -1
  139. package/dist/communication-dashboards.module.d.ts +9 -7
  140. package/dist/communication-dashboards.module.d.ts.map +1 -1
  141. package/dist/communication-dashboards.module.js +13 -4
  142. package/dist/communication-dashboards.module.js.map +1 -1
  143. package/dist/core-dashboards.module.d.ts +1 -1
  144. package/dist/core-dashboards.module.d.ts.map +1 -1
  145. package/dist/core-dashboards.module.js +16 -1
  146. package/dist/core-dashboards.module.js.map +1 -1
  147. package/dist/lists-dashboards.module.d.ts +10 -9
  148. package/dist/lists-dashboards.module.d.ts.map +1 -1
  149. package/dist/lists-dashboards.module.js +13 -2
  150. package/dist/lists-dashboards.module.js.map +1 -1
  151. package/dist/public-api.d.ts +1 -0
  152. package/dist/public-api.d.ts.map +1 -1
  153. package/dist/public-api.js +1 -0
  154. package/dist/public-api.js.map +1 -1
  155. package/dist/testing-dashboards.module.d.ts +1 -1
  156. package/dist/testing-dashboards.module.d.ts.map +1 -1
  157. package/dist/testing-dashboards.module.js +13 -1
  158. package/dist/testing-dashboards.module.js.map +1 -1
  159. package/package.json +53 -52
@@ -15,19 +15,19 @@ 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_10_Template(rf, ctx) { if (rf & 1) {
18
+ function CredentialsTypesResourceComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
19
19
  const _r2 = i0.ɵɵgetCurrentView();
20
- i0.ɵɵelementStart(0, "button", 17);
21
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createNewType()); });
22
- i0.ɵɵelement(1, "i", 18);
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()); });
22
+ i0.ɵɵelement(1, "i", 16);
23
23
  i0.ɵɵtext(2, " New Type ");
24
24
  i0.ɵɵelementEnd();
25
25
  } }
26
- function CredentialsTypesResourceComponent_Conditional_14_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelement(0, "mj-loading", 14);
26
+ function CredentialsTypesResourceComponent_Conditional_12_Template(rf, ctx) { if (rf & 1) {
27
+ i0.ɵɵelement(0, "mj-loading", 12);
28
28
  } }
29
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
30
- i0.ɵɵelementStart(0, "div", 33);
29
+ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
30
+ i0.ɵɵelementStart(0, "div", 31);
31
31
  i0.ɵɵtext(1);
32
32
  i0.ɵɵpipe(2, "slice");
33
33
  i0.ɵɵelementEnd();
@@ -36,9 +36,9 @@ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditiona
36
36
  i0.ɵɵadvance();
37
37
  i0.ɵɵtextInterpolate2(" ", i0.ɵɵpipeBind3(2, 2, type_r5.Description, 0, 60), "", type_r5.Description.length > 60 ? "..." : "", " ");
38
38
  } }
39
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_8_Template(rf, ctx) { if (rf & 1) {
40
- i0.ɵɵelementStart(0, "span", 35);
41
- i0.ɵɵelement(1, "i", 43);
39
+ 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);
42
42
  i0.ɵɵtext(2);
43
43
  i0.ɵɵelementEnd();
44
44
  } if (rf & 2) {
@@ -46,9 +46,9 @@ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditiona
46
46
  i0.ɵɵadvance(2);
47
47
  i0.ɵɵtextInterpolate1(" ", type_r5.credentialCount, " ");
48
48
  } }
49
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_9_Template(rf, ctx) { if (rf & 1) {
50
- i0.ɵɵelementStart(0, "span", 36);
51
- i0.ɵɵelement(1, "i", 44);
49
+ 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);
52
52
  i0.ɵɵtext(2);
53
53
  i0.ɵɵelementEnd();
54
54
  } if (rf & 2) {
@@ -56,9 +56,9 @@ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditiona
56
56
  i0.ɵɵadvance(2);
57
57
  i0.ɵɵtextInterpolate1(" ", type_r5.activeCount, " active ");
58
58
  } }
59
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_10_Template(rf, ctx) { if (rf & 1) {
60
- i0.ɵɵelementStart(0, "span", 37);
61
- i0.ɵɵelement(1, "i", 45);
59
+ 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);
62
62
  i0.ɵɵtext(2);
63
63
  i0.ɵɵelementEnd();
64
64
  } if (rf & 2) {
@@ -66,49 +66,49 @@ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditiona
66
66
  i0.ɵɵadvance(2);
67
67
  i0.ɵɵtextInterpolate1(" ", type_r5.expiringCount, " expiring ");
68
68
  } }
69
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
69
+ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
70
70
  const _r6 = i0.ɵɵgetCurrentView();
71
- i0.ɵɵelementStart(0, "button", 46);
72
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_12_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const type_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCredentialForType(type_r5, $event)); });
73
- i0.ɵɵelement(1, "i", 18);
71
+ i0.ɵɵelementStart(0, "button", 44);
72
+ 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
+ i0.ɵɵelement(1, "i", 16);
74
74
  i0.ɵɵelementEnd();
75
75
  } }
76
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
76
+ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_13_Template(rf, ctx) { if (rf & 1) {
77
77
  const _r7 = i0.ɵɵgetCurrentView();
78
- i0.ɵɵelementStart(0, "button", 47);
79
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_13_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r7); const type_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editType(type_r5, $event)); });
80
- i0.ɵɵelement(1, "i", 48);
78
+ i0.ɵɵelementStart(0, "button", 45);
79
+ 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
81
  i0.ɵɵelementEnd();
82
82
  } }
83
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
83
+ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Conditional_14_Template(rf, ctx) { if (rf & 1) {
84
84
  const _r8 = i0.ɵɵgetCurrentView();
85
- i0.ɵɵelementStart(0, "button", 49);
86
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_14_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r8); const type_r5 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteType(type_r5, $event)); });
87
- i0.ɵɵelement(1, "i", 50);
85
+ i0.ɵɵelementStart(0, "button", 47);
86
+ 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
88
  i0.ɵɵelementEnd();
89
89
  } }
90
- function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template(rf, ctx) { if (rf & 1) {
90
+ function CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Template(rf, ctx) { if (rf & 1) {
91
91
  const _r4 = i0.ɵɵgetCurrentView();
92
- i0.ɵɵelementStart(0, "div", 29);
93
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template_div_click_0_listener() { const type_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectType(type_r5)); });
94
- i0.ɵɵelementStart(1, "div", 30);
92
+ i0.ɵɵelementStart(0, "div", 27);
93
+ 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
95
  i0.ɵɵelement(2, "i");
96
96
  i0.ɵɵelementEnd();
97
- i0.ɵɵelementStart(3, "div", 31)(4, "div", 32);
97
+ i0.ɵɵelementStart(3, "div", 29)(4, "div", 30);
98
98
  i0.ɵɵtext(5);
99
99
  i0.ɵɵelementEnd();
100
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_6_Template, 3, 6, "div", 33);
101
- i0.ɵɵelementStart(7, "div", 34);
102
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_8_Template, 3, 1, "span", 35);
103
- i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_9_Template, 3, 1, "span", 36);
104
- i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_10_Template, 3, 1, "span", 37);
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);
105
105
  i0.ɵɵelementEnd()();
106
- i0.ɵɵelementStart(11, "div", 38);
107
- i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_12_Template, 2, 0, "button", 39);
108
- i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_13_Template, 2, 0, "button", 40);
109
- i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Conditional_14_Template, 2, 0, "button", 41);
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);
110
110
  i0.ɵɵelementEnd();
111
- i0.ɵɵelement(15, "i", 42);
111
+ i0.ɵɵelement(15, "i", 40);
112
112
  i0.ɵɵelementEnd();
113
113
  } if (rf & 2) {
114
114
  const type_r5 = ctx.$implicit;
@@ -135,17 +135,17 @@ function CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template(r
135
135
  i0.ɵɵadvance();
136
136
  i0.ɵɵconditional(ctx_r2.UserCanDelete && type_r5.credentialCount === 0 ? 14 : -1);
137
137
  } }
138
- function CredentialsTypesResourceComponent_Conditional_15_For_3_Template(rf, ctx) { if (rf & 1) {
139
- i0.ɵɵelementStart(0, "div", 20)(1, "div", 24);
138
+ function CredentialsTypesResourceComponent_Conditional_13_For_3_Template(rf, ctx) { if (rf & 1) {
139
+ i0.ɵɵelementStart(0, "div", 18)(1, "div", 22);
140
140
  i0.ɵɵelement(2, "i");
141
- i0.ɵɵelementStart(3, "span", 25);
141
+ i0.ɵɵelementStart(3, "span", 23);
142
142
  i0.ɵɵtext(4);
143
143
  i0.ɵɵelementEnd();
144
- i0.ɵɵelementStart(5, "span", 26);
144
+ i0.ɵɵelementStart(5, "span", 24);
145
145
  i0.ɵɵtext(6);
146
146
  i0.ɵɵelementEnd()();
147
- i0.ɵɵelementStart(7, "div", 27);
148
- i0.ɵɵrepeaterCreate(8, CredentialsTypesResourceComponent_Conditional_15_For_3_For_9_Template, 16, 16, "div", 28, i0.ɵɵrepeaterTrackByIdentity);
147
+ i0.ɵɵelementStart(7, "div", 25);
148
+ i0.ɵɵrepeaterCreate(8, CredentialsTypesResourceComponent_Conditional_13_For_3_For_9_Template, 16, 16, "div", 26, i0.ɵɵrepeaterTrackByIdentity);
149
149
  i0.ɵɵelementEnd()();
150
150
  } if (rf & 2) {
151
151
  const entry_r9 = ctx.$implicit;
@@ -162,38 +162,38 @@ function CredentialsTypesResourceComponent_Conditional_15_For_3_Template(rf, ctx
162
162
  i0.ɵɵadvance(2);
163
163
  i0.ɵɵrepeater(entry_r9.value);
164
164
  } }
165
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
165
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_5_Template(rf, ctx) { if (rf & 1) {
166
166
  const _r10 = i0.ɵɵgetCurrentView();
167
167
  i0.ɵɵelementStart(0, "p");
168
168
  i0.ɵɵtext(1, " No types match your current filters. ");
169
- i0.ɵɵelementStart(2, "button", 54);
170
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_5_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.clearFilters()); });
169
+ i0.ɵɵelementStart(2, "button", 52);
170
+ 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
171
  i0.ɵɵtext(3, "Clear filters");
172
172
  i0.ɵɵelementEnd()();
173
173
  } }
174
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
174
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_6_Template(rf, ctx) { if (rf & 1) {
175
175
  i0.ɵɵelementStart(0, "p");
176
176
  i0.ɵɵtext(1, " Get started by creating your first credential type. ");
177
177
  i0.ɵɵelementEnd();
178
178
  } }
179
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
179
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_7_Template(rf, ctx) { if (rf & 1) {
180
180
  const _r11 = i0.ɵɵgetCurrentView();
181
- i0.ɵɵelementStart(0, "button", 55);
182
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createNewType()); });
183
- i0.ɵɵelement(1, "i", 18);
181
+ i0.ɵɵelementStart(0, "button", 53);
182
+ 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
+ i0.ɵɵelement(1, "i", 16);
184
184
  i0.ɵɵtext(2, " Create Type ");
185
185
  i0.ɵɵelementEnd();
186
186
  } }
187
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Template(rf, ctx) { if (rf & 1) {
188
- i0.ɵɵelementStart(0, "div", 21)(1, "div", 51);
189
- i0.ɵɵelement(2, "i", 52);
187
+ 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);
190
190
  i0.ɵɵelementEnd();
191
191
  i0.ɵɵelementStart(3, "h3");
192
192
  i0.ɵɵtext(4, "No Credential Types Found");
193
193
  i0.ɵɵelementEnd();
194
- i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_5_Template, 4, 0, "p");
195
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_6_Template, 2, 0, "p");
196
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Conditional_7_Template, 3, 0, "button", 53);
194
+ i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Conditional_5_Template, 4, 0, "p");
195
+ 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
197
  i0.ɵɵelementEnd();
198
198
  } if (rf & 2) {
199
199
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -204,18 +204,18 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Template
204
204
  i0.ɵɵadvance();
205
205
  i0.ɵɵconditional(ctx_r2.UserCanCreate && !ctx_r2.searchText && !ctx_r2.selectedCategoryFilter ? 7 : -1);
206
206
  } }
207
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
207
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_11_Template(rf, ctx) { if (rf & 1) {
208
208
  const _r13 = i0.ɵɵgetCurrentView();
209
- i0.ɵɵelementStart(0, "button", 78);
210
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_11_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editType(ctx_r2.selectedType)); });
211
- i0.ɵɵelement(1, "i", 48);
209
+ i0.ɵɵelementStart(0, "button", 76);
210
+ 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
212
  i0.ɵɵelementEnd();
213
213
  } }
214
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_26_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "div", 70)(1, "div", 67);
214
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_26_Template(rf, ctx) { if (rf & 1) {
215
+ i0.ɵɵelementStart(0, "div", 68)(1, "div", 65);
216
216
  i0.ɵɵtext(2);
217
217
  i0.ɵɵelementEnd();
218
- i0.ɵɵelementStart(3, "div", 68);
218
+ i0.ɵɵelementStart(3, "div", 66);
219
219
  i0.ɵɵtext(4, "Expiring");
220
220
  i0.ɵɵelementEnd()();
221
221
  } if (rf & 2) {
@@ -223,8 +223,8 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditio
223
223
  i0.ɵɵadvance(2);
224
224
  i0.ɵɵtextInterpolate(ctx_r2.selectedType.expiringCount);
225
225
  } }
226
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_27_Template(rf, ctx) { if (rf & 1) {
227
- i0.ɵɵelementStart(0, "p", 71);
226
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_27_Template(rf, ctx) { if (rf & 1) {
227
+ i0.ɵɵelementStart(0, "p", 69);
228
228
  i0.ɵɵtext(1);
229
229
  i0.ɵɵelementEnd();
230
230
  } if (rf & 2) {
@@ -232,19 +232,19 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditio
232
232
  i0.ɵɵadvance();
233
233
  i0.ɵɵtextInterpolate1(" ", ctx_r2.selectedType.Description, " ");
234
234
  } }
235
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
236
- i0.ɵɵelementStart(0, "span", 84);
237
- i0.ɵɵelement(1, "i", 87);
235
+ 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);
238
238
  i0.ɵɵtext(2, " Secret ");
239
239
  i0.ɵɵelementEnd();
240
240
  } }
241
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
242
- i0.ɵɵelementStart(0, "span", 85);
241
+ 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
243
  i0.ɵɵtext(1, "Required");
244
244
  i0.ɵɵelementEnd();
245
245
  } }
246
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
247
- i0.ɵɵelementStart(0, "p", 86);
246
+ 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
248
  i0.ɵɵtext(1);
249
249
  i0.ɵɵelementEnd();
250
250
  } if (rf & 2) {
@@ -252,17 +252,17 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditio
252
252
  i0.ɵɵadvance();
253
253
  i0.ɵɵtextInterpolate1(" ", prop_r14.description, " ");
254
254
  } }
255
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Template(rf, ctx) { if (rf & 1) {
256
- i0.ɵɵelementStart(0, "div", 79)(1, "div", 80)(2, "span", 81);
255
+ 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
257
  i0.ɵɵtext(3);
258
258
  i0.ɵɵelementEnd();
259
- i0.ɵɵelementStart(4, "span", 82)(5, "span", 83);
259
+ i0.ɵɵelementStart(4, "span", 80)(5, "span", 81);
260
260
  i0.ɵɵtext(6);
261
261
  i0.ɵɵelementEnd();
262
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_7_Template, 3, 0, "span", 84);
263
- i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_8_Template, 2, 0, "span", 85);
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);
264
264
  i0.ɵɵelementEnd()();
265
- i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Conditional_9_Template, 2, 1, "p", 86);
265
+ i0.ɵɵconditionalCreate(9, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_32_For_2_Conditional_9_Template, 2, 1, "p", 84);
266
266
  i0.ɵɵelementEnd();
267
267
  } if (rf & 2) {
268
268
  const prop_r14 = ctx.$implicit;
@@ -277,29 +277,29 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditio
277
277
  i0.ɵɵadvance();
278
278
  i0.ɵɵconditional(prop_r14.description ? 9 : -1);
279
279
  } }
280
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_Template(rf, ctx) { if (rf & 1) {
281
- i0.ɵɵelementStart(0, "div", 74);
282
- i0.ɵɵrepeaterCreate(1, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_For_2_Template, 10, 5, "div", 79, i0.ɵɵrepeaterTrackByIdentity);
280
+ 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);
283
283
  i0.ɵɵelementEnd();
284
284
  } if (rf & 2) {
285
285
  const ctx_r2 = i0.ɵɵnextContext(3);
286
286
  i0.ɵɵadvance();
287
287
  i0.ɵɵrepeater(ctx_r2.schemaProperties);
288
288
  } }
289
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_33_Template(rf, ctx) { if (rf & 1) {
290
- i0.ɵɵelementStart(0, "div", 75);
291
- i0.ɵɵelement(1, "i", 88);
289
+ 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);
292
292
  i0.ɵɵelementStart(2, "span");
293
293
  i0.ɵɵtext(3, "No fields defined in schema");
294
294
  i0.ɵɵelementEnd()();
295
295
  } }
296
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_34_Template(rf, ctx) { if (rf & 1) {
297
- i0.ɵɵelementStart(0, "div", 76)(1, "h3");
298
- i0.ɵɵelement(2, "i", 89);
296
+ 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);
299
299
  i0.ɵɵtext(3, " Validation ");
300
300
  i0.ɵɵelementEnd();
301
- i0.ɵɵelementStart(4, "div", 90);
302
- i0.ɵɵelement(5, "i", 91);
301
+ i0.ɵɵelementStart(4, "div", 88);
302
+ i0.ɵɵelement(5, "i", 89);
303
303
  i0.ɵɵelementStart(6, "span");
304
304
  i0.ɵɵtext(7);
305
305
  i0.ɵɵelementEnd()()();
@@ -308,56 +308,56 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditio
308
308
  i0.ɵɵadvance(7);
309
309
  i0.ɵɵtextInterpolate(ctx_r2.selectedType.ValidationEndpoint);
310
310
  } }
311
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_35_Template(rf, ctx) { if (rf & 1) {
311
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_35_Template(rf, ctx) { if (rf & 1) {
312
312
  const _r15 = i0.ɵɵgetCurrentView();
313
- i0.ɵɵelementStart(0, "div", 77)(1, "button", 55);
314
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_35_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.createCredentialForType(ctx_r2.selectedType)); });
315
- i0.ɵɵelement(2, "i", 18);
313
+ i0.ɵɵelementStart(0, "div", 75)(1, "button", 53);
314
+ 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
+ i0.ɵɵelement(2, "i", 16);
316
316
  i0.ɵɵtext(3, " Create Credential ");
317
317
  i0.ɵɵelementEnd()();
318
318
  } }
319
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template(rf, ctx) { if (rf & 1) {
319
+ function CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Template(rf, ctx) { if (rf & 1) {
320
320
  const _r12 = i0.ɵɵgetCurrentView();
321
- i0.ɵɵelementStart(0, "div", 22)(1, "div", 56)(2, "div", 57);
321
+ i0.ɵɵelementStart(0, "div", 20)(1, "div", 54)(2, "div", 55);
322
322
  i0.ɵɵelement(3, "i");
323
323
  i0.ɵɵelementEnd();
324
- i0.ɵɵelementStart(4, "div", 58)(5, "h2");
324
+ i0.ɵɵelementStart(4, "div", 56)(5, "h2");
325
325
  i0.ɵɵtext(6);
326
326
  i0.ɵɵelementEnd();
327
- i0.ɵɵelementStart(7, "span", 59);
327
+ i0.ɵɵelementStart(7, "span", 57);
328
328
  i0.ɵɵelement(8, "i");
329
329
  i0.ɵɵtext(9);
330
330
  i0.ɵɵelementEnd()();
331
- i0.ɵɵelementStart(10, "div", 60);
332
- i0.ɵɵconditionalCreate(11, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_11_Template, 2, 0, "button", 61);
333
- i0.ɵɵelementStart(12, "button", 62);
334
- i0.ɵɵlistener("click", function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.closeDetail()); });
335
- i0.ɵɵelement(13, "i", 63);
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);
334
+ 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
336
  i0.ɵɵelementEnd()()();
337
- i0.ɵɵelementStart(14, "div", 64)(15, "div", 65)(16, "div", 66)(17, "div", 67);
337
+ i0.ɵɵelementStart(14, "div", 62)(15, "div", 63)(16, "div", 64)(17, "div", 65);
338
338
  i0.ɵɵtext(18);
339
339
  i0.ɵɵelementEnd();
340
- i0.ɵɵelementStart(19, "div", 68);
340
+ i0.ɵɵelementStart(19, "div", 66);
341
341
  i0.ɵɵtext(20, "Credentials");
342
342
  i0.ɵɵelementEnd()();
343
- i0.ɵɵelementStart(21, "div", 69)(22, "div", 67);
343
+ i0.ɵɵelementStart(21, "div", 67)(22, "div", 65);
344
344
  i0.ɵɵtext(23);
345
345
  i0.ɵɵelementEnd();
346
- i0.ɵɵelementStart(24, "div", 68);
346
+ i0.ɵɵelementStart(24, "div", 66);
347
347
  i0.ɵɵtext(25, "Active");
348
348
  i0.ɵɵelementEnd()();
349
- i0.ɵɵconditionalCreate(26, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_26_Template, 5, 1, "div", 70);
349
+ i0.ɵɵconditionalCreate(26, CredentialsTypesResourceComponent_Conditional_13_Conditional_6_Conditional_26_Template, 5, 1, "div", 68);
350
350
  i0.ɵɵelementEnd();
351
- i0.ɵɵconditionalCreate(27, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_27_Template, 2, 1, "p", 71);
352
- i0.ɵɵelementStart(28, "div", 72)(29, "h3");
353
- i0.ɵɵelement(30, "i", 73);
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);
354
354
  i0.ɵɵtext(31, " Field Schema ");
355
355
  i0.ɵɵelementEnd();
356
- i0.ɵɵconditionalCreate(32, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_32_Template, 3, 0, "div", 74);
357
- i0.ɵɵconditionalCreate(33, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_33_Template, 4, 0, "div", 75);
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);
358
358
  i0.ɵɵelementEnd();
359
- i0.ɵɵconditionalCreate(34, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_34_Template, 8, 1, "div", 76);
360
- i0.ɵɵconditionalCreate(35, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Conditional_35_Template, 4, 0, "div", 77);
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);
361
361
  i0.ɵɵelementEnd()();
362
362
  } if (rf & 2) {
363
363
  const ctx_r2 = i0.ɵɵnextContext(2);
@@ -392,9 +392,9 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template
392
392
  i0.ɵɵadvance();
393
393
  i0.ɵɵconditional(ctx_r2.UserCanCreateCredential ? 35 : -1);
394
394
  } }
395
- function CredentialsTypesResourceComponent_Conditional_15_Conditional_7_Template(rf, ctx) { if (rf & 1) {
396
- i0.ɵɵelementStart(0, "div", 23)(1, "div", 92);
397
- i0.ɵɵelement(2, "i", 93);
395
+ 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);
398
398
  i0.ɵɵelementEnd();
399
399
  i0.ɵɵelementStart(3, "h3");
400
400
  i0.ɵɵtext(4, "Select a Credential Type");
@@ -403,14 +403,14 @@ function CredentialsTypesResourceComponent_Conditional_15_Conditional_7_Template
403
403
  i0.ɵɵtext(6, "Click on a credential type to view its details and field schema");
404
404
  i0.ɵɵelementEnd()();
405
405
  } }
406
- function CredentialsTypesResourceComponent_Conditional_15_Template(rf, ctx) { if (rf & 1) {
407
- i0.ɵɵelementStart(0, "div", 15)(1, "div", 19);
408
- i0.ɵɵrepeaterCreate(2, CredentialsTypesResourceComponent_Conditional_15_For_3_Template, 10, 8, "div", 20, i0.ɵɵrepeaterTrackByIdentity);
406
+ 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);
409
409
  i0.ɵɵpipe(4, "keyvalue");
410
- i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_15_Conditional_5_Template, 8, 3, "div", 21);
410
+ i0.ɵɵconditionalCreate(5, CredentialsTypesResourceComponent_Conditional_13_Conditional_5_Template, 8, 3, "div", 19);
411
411
  i0.ɵɵelementEnd();
412
- i0.ɵɵconditionalCreate(6, CredentialsTypesResourceComponent_Conditional_15_Conditional_6_Template, 36, 23, "div", 22);
413
- i0.ɵɵconditionalCreate(7, CredentialsTypesResourceComponent_Conditional_15_Conditional_7_Template, 7, 0, "div", 23);
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);
414
414
  i0.ɵɵelementEnd();
415
415
  } if (rf & 2) {
416
416
  const ctx_r2 = i0.ɵɵnextContext();
@@ -800,38 +800,34 @@ let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent
800
800
  } if (rf & 2) {
801
801
  let _t;
802
802
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.typeEditPanel = _t.first);
803
- } }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 18, vars: 14, consts: [["typeEditPanel", ""], ["Title", "Credential Types", "Icon", "fa-solid fa-shapes"], ["meta", ""], ["Label", "types", 3, "Count", "Total"], ["Icon", "fa-solid fa-folder", "Label", "categories", 3, "Count"], ["Icon", "fa-solid fa-key", "Label", "credentials", 3, "Count"], ["actions", ""], [3, "ClearAllRequested", "ActiveCount", "ShowClearAll"], [3, "ValuesChange", "Reset", "Fields", "Values"], [3, "Clicked", "Loading"], ["mjButton", "", "variant", "primary", "size", "sm"], ["toolbar", ""], ["Placeholder", "Search types...", 3, "ValueChange", "Value"], [3, "Flex"], ["text", "Loading credential types..."], [1, "types-layout"], [3, "saved", "deleted"], ["mjButton", "", "variant", "primary", "size", "sm", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "types-list"], [1, "category-section"], [1, "empty-state"], [1, "type-detail"], [1, "no-selection"], [1, "category-header"], [1, "category-name"], [1, "count"], [1, "type-items"], [1, "type-item", 3, "selected"], [1, "type-item", 3, "click"], [1, "type-icon"], [1, "type-info"], [1, "type-name"], [1, "type-description"], [1, "type-meta"], [1, "meta-badge"], [1, "meta-badge", "active"], [1, "meta-badge", "warning"], [1, "type-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Credential"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit Type"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete Type"], [1, "fa-solid", "fa-chevron-right", "arrow"], [1, "fa-solid", "fa-key"], [1, "fa-solid", "fa-check"], [1, "fa-solid", "fa-clock"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Add Credential", 3, "click"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit Type", 3, "click"], [1, "fa-solid", "fa-pen"], ["mjButton", "", "variant", "danger", "size", "sm", "title", "Delete Type", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "empty-icon"], [1, "fa-solid", "fa-cubes"], [1, "btn-primary"], [1, "btn-link", 3, "click"], [1, "btn-primary", 3, "click"], [1, "detail-header"], [1, "detail-icon"], [1, "detail-title"], [1, "category-badge"], [1, "detail-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-body"], [1, "detail-stats"], [1, "detail-stat"], [1, "stat-value"], [1, "stat-label"], [1, "detail-stat", "active"], [1, "detail-stat", "warning"], [1, "description"], [1, "schema-section"], [1, "fa-solid", "fa-list-check"], [1, "field-list"], [1, "no-fields"], [1, "validation-section"], [1, "detail-quick-actions"], ["mjButton", "", "variant", "flat", "size", "sm", "title", "Edit", 3, "click"], [1, "field-item"], [1, "field-header"], [1, "field-name"], [1, "field-badges"], [1, "badge", "type"], [1, "badge", "secret"], [1, "badge", "required"], [1, "field-description"], [1, "fa-solid", "fa-lock"], [1, "fa-solid", "fa-info-circle"], [1, "fa-solid", "fa-check-circle"], [1, "validation-endpoint"], [1, "fa-solid", "fa-link"], [1, "no-selection-icon"], [1, "fa-solid", "fa-hand-pointer"]], template: function CredentialsTypesResourceComponent_Template(rf, ctx) { if (rf & 1) {
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
804
  const _r1 = i0.ɵɵgetCurrentView();
805
805
  i0.ɵɵelementStart(0, "mj-page-layout")(1, "mj-page-header", 1)(2, "div", 2);
806
- i0.ɵɵelement(3, "mj-stat-badge", 3)(4, "mj-stat-badge", 4)(5, "mj-stat-badge", 5);
806
+ i0.ɵɵelement(3, "mj-stat-badge", 3);
807
807
  i0.ɵɵelementEnd();
808
- i0.ɵɵelementStart(6, "div", 6)(7, "mj-filter-popover", 7);
809
- i0.ɵɵlistener("ClearAllRequested", function CredentialsTypesResourceComponent_Template_mj_filter_popover_ClearAllRequested_7_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
810
- i0.ɵɵelementStart(8, "mj-filter-panel", 8);
811
- i0.ɵɵlistener("ValuesChange", function CredentialsTypesResourceComponent_Template_mj_filter_panel_ValuesChange_8_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onFilterValuesChange($event)); })("Reset", function CredentialsTypesResourceComponent_Template_mj_filter_panel_Reset_8_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.resetFilters()); });
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
812
  i0.ɵɵelementEnd()();
813
- i0.ɵɵelementStart(9, "mj-refresh-button", 9);
814
- i0.ɵɵlistener("Clicked", function CredentialsTypesResourceComponent_Template_mj_refresh_button_Clicked_9_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.refresh()); });
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()); });
815
815
  i0.ɵɵelementEnd();
816
- i0.ɵɵconditionalCreate(10, CredentialsTypesResourceComponent_Conditional_10_Template, 3, 0, "button", 10);
816
+ i0.ɵɵconditionalCreate(8, CredentialsTypesResourceComponent_Conditional_8_Template, 3, 0, "button", 8);
817
817
  i0.ɵɵelementEnd();
818
- i0.ɵɵelementStart(11, "div", 11)(12, "mj-page-search", 12);
819
- i0.ɵɵlistener("ValueChange", function CredentialsTypesResourceComponent_Template_mj_page_search_ValueChange_12_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSearchChange($event)); });
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
820
  i0.ɵɵelementEnd()()();
821
- i0.ɵɵelementStart(13, "mj-page-body", 13);
822
- i0.ɵɵconditionalCreate(14, CredentialsTypesResourceComponent_Conditional_14_Template, 1, 0, "mj-loading", 14);
823
- i0.ɵɵconditionalCreate(15, CredentialsTypesResourceComponent_Conditional_15_Template, 8, 5, "div", 15);
821
+ i0.ɵɵelementStart(11, "mj-page-body", 11);
822
+ i0.ɵɵconditionalCreate(12, CredentialsTypesResourceComponent_Conditional_12_Template, 1, 0, "mj-loading", 12);
823
+ i0.ɵɵconditionalCreate(13, CredentialsTypesResourceComponent_Conditional_13_Template, 8, 5, "div", 13);
824
824
  i0.ɵɵelementEnd();
825
- i0.ɵɵelementStart(16, "mj-credential-type-edit-panel", 16, 0);
826
- i0.ɵɵlistener("saved", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_saved_16_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeSaved($event)); })("deleted", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_deleted_16_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeDeleted($event)); });
825
+ i0.ɵɵelementStart(14, "mj-credential-type-edit-panel", 14, 0);
826
+ i0.ɵɵlistener("saved", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_saved_14_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeSaved($event)); })("deleted", function CredentialsTypesResourceComponent_Template_mj_credential_type_edit_panel_deleted_14_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onTypeDeleted($event)); });
827
827
  i0.ɵɵelementEnd()();
828
828
  } if (rf & 2) {
829
829
  i0.ɵɵadvance(3);
830
830
  i0.ɵɵproperty("Count", ctx.filteredTypes.length)("Total", ctx.types.length);
831
- i0.ɵɵadvance();
832
- i0.ɵɵproperty("Count", ctx.categories.length);
833
- i0.ɵɵadvance();
834
- i0.ɵɵproperty("Count", ctx.getTotalCredentialCount());
835
831
  i0.ɵɵadvance(2);
836
832
  i0.ɵɵproperty("ActiveCount", ctx.ActiveFilterCount)("ShowClearAll", ctx.ActiveFilterCount > 0);
837
833
  i0.ɵɵadvance();
@@ -839,15 +835,15 @@ let CredentialsTypesResourceComponent = class CredentialsTypesResourceComponent
839
835
  i0.ɵɵadvance();
840
836
  i0.ɵɵproperty("Loading", ctx.isLoading);
841
837
  i0.ɵɵadvance();
842
- i0.ɵɵconditional(ctx.UserCanCreate ? 10 : -1);
838
+ i0.ɵɵconditional(ctx.UserCanCreate ? 8 : -1);
843
839
  i0.ɵɵadvance(2);
844
840
  i0.ɵɵproperty("Value", ctx.searchText);
845
841
  i0.ɵɵadvance();
846
842
  i0.ɵɵproperty("Flex", true);
847
843
  i0.ɵɵadvance();
848
- i0.ɵɵconditional(ctx.isLoading ? 14 : -1);
844
+ i0.ɵɵconditional(ctx.isLoading ? 12 : -1);
849
845
  i0.ɵɵadvance();
850
- i0.ɵɵconditional(!ctx.isLoading ? 15 : -1);
846
+ i0.ɵɵconditional(!ctx.isLoading ? 13 : -1);
851
847
  } }, dependencies: [i1.MJButtonDirective, i1.MJPageHeaderComponent, i1.MJPageLayoutComponent, i1.MJPageBodyComponent, i1.MJPageSearchComponent, i1.MJFilterPopoverComponent, i1.MJFilterPanelComponent, i1.MJStatBadgeComponent, i1.MJRefreshButtonComponent, i2.LoadingComponent, i3.CredentialTypeEditPanelComponent, i4.SlicePipe, i4.KeyValuePipe], styles: ["\n\n.types-layout[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 420px 1fr;\n flex: 1;\n min-height: 0;\n gap: 20px;\n}\n\n\n\n.types-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n padding: 16px;\n}\n\n.category-section[_ngcontent-%COMP%] {\n margin-bottom: 20px;\n}\n\n.category-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.category-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-secondary);\n letter-spacing: 0.5px;\n border-left: 3px solid var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n border-radius: 0 8px 8px 0;\n margin-bottom: 8px;\n}\n\n.category-header[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.category-name[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.category-header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.type-items[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.type-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n position: relative;\n}\n\n.type-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-page);\n border-color: var(--mj-border-default);\n}\n\n.type-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.type-icon[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 16px;\n}\n\n.type-info[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.type-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.type-description[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n\n.meta-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.meta-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 9px;\n}\n\n.meta-badge.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.meta-badge.warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.type-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 4px;\n margin-right: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.type-item[_ngcontent-%COMP%]:hover .type-actions[_ngcontent-%COMP%] {\n opacity: 1;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-error);\n}\n\n.arrow[_ngcontent-%COMP%] {\n color: var(--mj-border-strong);\n font-size: 12px;\n}\n\n\n\n.type-detail[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n}\n\n.detail-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n padding: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 60px;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 14px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 26px;\n}\n\n.detail-title[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.detail-title[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.category-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.category-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n cursor: pointer;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.detail-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.detail-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-stat[_ngcontent-%COMP%] {\n flex: 1;\n text-align: center;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-stat[_ngcontent-%COMP%] .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.detail-stat.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.active[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.detail-stat.warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.warning[_ngcontent-%COMP%] .stat-value[_ngcontent-%COMP%] {\n color: var(--mj-status-warning);\n}\n\n.description[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0 0 24px 0;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n}\n\n.schema-section[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] {\n margin-bottom: 24px;\n}\n\n.schema-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n\n.schema-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%], \n.validation-section[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.field-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.field-item[_ngcontent-%COMP%] {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n transition: all 0.2s ease;\n}\n\n.field-item[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.field-name[_ngcontent-%COMP%] {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.field-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.badge[_ngcontent-%COMP%] {\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.badge.type[_ngcontent-%COMP%] {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.badge.secret[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.secret[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 3px;\n}\n\n.badge.required[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.field-description[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 10px 0 0 0;\n line-height: 1.5;\n}\n\n.no-fields[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.no-fields[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.validation-endpoint[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;\n border: 1px solid var(--mj-border-default);\n}\n\n.validation-endpoint[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.detail-quick-actions[_ngcontent-%COMP%] {\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n\n\n.no-selection[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 48px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.no-selection-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.no-selection[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 18px;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link[_ngcontent-%COMP%] {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n\n\n@media (max-width: 1024px) {\n .types-layout[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .types-list[_ngcontent-%COMP%] {\n max-height: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .types-container[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .types-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .toolbar[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n\n .search-container[_ngcontent-%COMP%] {\n min-width: 100%;\n }\n\n .filter-select[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .toolbar-right[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n\n .detail-stats[_ngcontent-%COMP%] {\n flex-direction: column;\n }\n}"], changeDetection: 0 });
852
848
  };
853
849
  CredentialsTypesResourceComponent = __decorate([
@@ -856,7 +852,7 @@ CredentialsTypesResourceComponent = __decorate([
856
852
  export { CredentialsTypesResourceComponent };
857
853
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CredentialsTypesResourceComponent, [{
858
854
  type: Component,
859
- args: [{ standalone: false, selector: 'mj-credentials-types-resource', changeDetection: ChangeDetectionStrategy.OnPush, template: "<mj-page-layout>\n <mj-page-header\n Title=\"Credential Types\"\n Icon=\"fa-solid fa-shapes\">\n <div meta>\n <mj-stat-badge\n [Count]=\"filteredTypes.length\"\n [Total]=\"types.length\"\n Label=\"types\">\n </mj-stat-badge>\n <mj-stat-badge\n Icon=\"fa-solid fa-folder\"\n [Count]=\"categories.length\"\n Label=\"categories\">\n </mj-stat-badge>\n <mj-stat-badge\n Icon=\"fa-solid fa-key\"\n [Count]=\"getTotalCredentialCount()\"\n Label=\"credentials\">\n </mj-stat-badge>\n </div>\n <div actions>\n <mj-filter-popover\n [ActiveCount]=\"ActiveFilterCount\"\n [ShowClearAll]=\"ActiveFilterCount > 0\"\n (ClearAllRequested)=\"resetFilters()\">\n <mj-filter-panel\n [Fields]=\"FilterFields\"\n [Values]=\"FilterValues\"\n (ValuesChange)=\"onFilterValuesChange($event)\"\n (Reset)=\"resetFilters()\">\n </mj-filter-panel>\n </mj-filter-popover>\n <mj-refresh-button [Loading]=\"isLoading\" (Clicked)=\"refresh()\"></mj-refresh-button>\n @if (UserCanCreate) {\n <button mjButton variant=\"primary\" size=\"sm\" (click)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i> New Type\n </button>\n }\n </div>\n <div toolbar>\n <mj-page-search\n Placeholder=\"Search types...\"\n [Value]=\"searchText\"\n (ValueChange)=\"onSearchChange($event)\">\n </mj-page-search>\n </div>\n </mj-page-header>\n\n <mj-page-body [Flex]=\"true\">\n @if (isLoading) {\n <mj-loading text=\"Loading credential types...\"></mj-loading>\n }\n\n @if (!isLoading) {\n <div class=\"types-layout\">\n <!-- Types List -->\n <div class=\"types-list\">\n @for (entry of getTypesByCategory() | keyvalue; track entry) {\n <div class=\"category-section\">\n <div class=\"category-header\" [style.borderLeftColor]=\"getCategoryColor(entry.key)\">\n <i [class]=\"getCategoryIcon(entry.key)\" [style.color]=\"getCategoryColor(entry.key)\"></i>\n <span class=\"category-name\">{{entry.key}}</span>\n <span class=\"count\">{{entry.value.length}}</span>\n </div>\n <div class=\"type-items\">\n @for (type of entry.value; track type) {\n <div\n class=\"type-item\"\n [class.selected]=\"IsTypeSelected(type)\"\n (click)=\"selectType(type)\"\n >\n <div class=\"type-icon\" [style.backgroundColor]=\"getCategoryColor(type.Category) + '15'\" [style.color]=\"getCategoryColor(type.Category)\">\n <i [class]=\"type.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"type-info\">\n <div class=\"type-name\">{{type.Name}}</div>\n @if (type.Description) {\n <div class=\"type-description\">\n {{type.Description | slice:0:60}}{{type.Description.length > 60 ? '...' : ''}}\n </div>\n }\n <div class=\"type-meta\">\n @if (type.credentialCount > 0) {\n <span class=\"meta-badge\">\n <i class=\"fa-solid fa-key\"></i>\n {{type.credentialCount}}\n </span>\n }\n @if (type.activeCount > 0) {\n <span class=\"meta-badge active\">\n <i class=\"fa-solid fa-check\"></i>\n {{type.activeCount}} active\n </span>\n }\n @if (type.expiringCount > 0) {\n <span class=\"meta-badge warning\">\n <i class=\"fa-solid fa-clock\"></i>\n {{type.expiringCount}} expiring\n </span>\n }\n </div>\n </div>\n <div class=\"type-actions\">\n @if (UserCanCreateCredential) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"createCredentialForType(type, $event)\"\n title=\"Add Credential\">\n <i class=\"fa-solid fa-plus\"></i>\n </button>\n }\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\"\n (click)=\"editType(type, $event)\"\n title=\"Edit Type\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n @if (UserCanDelete && type.credentialCount === 0) {\n <button mjButton variant=\"danger\" size=\"sm\"\n (click)=\"deleteType(type, $event)\"\n title=\"Delete Type\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n }\n </div>\n <i class=\"fa-solid fa-chevron-right arrow\"></i>\n </div>\n }\n </div>\n </div>\n }\n @if (filteredTypes.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-cubes\"></i>\n </div>\n <h3>No Credential Types Found</h3>\n @if (searchText || selectedCategoryFilter) {\n <p>\n No types match your current filters.\n <button class=\"btn-link\" (click)=\"clearFilters()\">Clear filters</button>\n </p>\n }\n @if (!searchText && !selectedCategoryFilter) {\n <p>\n Get started by creating your first credential type.\n </p>\n }\n @if (UserCanCreate && !searchText && !selectedCategoryFilter) {\n <button class=\"btn-primary\" (click)=\"createNewType()\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Type\n </button>\n }\n </div>\n }\n </div>\n <!-- Type Detail -->\n @if (selectedType) {\n <div class=\"type-detail\">\n <div class=\"detail-header\">\n <div class=\"detail-icon\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '15'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"selectedType.IconClass || 'fa-solid fa-key'\"></i>\n </div>\n <div class=\"detail-title\">\n <h2>{{selectedType.Name}}</h2>\n <span class=\"category-badge\" [style.backgroundColor]=\"getCategoryColor(selectedType.Category) + '20'\" [style.color]=\"getCategoryColor(selectedType.Category)\">\n <i [class]=\"getCategoryIcon(selectedType.Category)\"></i>\n {{selectedType.Category}}\n </span>\n </div>\n <div class=\"detail-actions\">\n @if (UserCanUpdate) {\n <button mjButton variant=\"flat\" size=\"sm\" (click)=\"editType(selectedType)\" title=\"Edit\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n <button class=\"close-btn\" (click)=\"closeDetail()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n </div>\n <div class=\"detail-body\">\n <!-- Stats Row -->\n <div class=\"detail-stats\">\n <div class=\"detail-stat\">\n <div class=\"stat-value\">{{selectedType.credentialCount}}</div>\n <div class=\"stat-label\">Credentials</div>\n </div>\n <div class=\"detail-stat active\">\n <div class=\"stat-value\">{{selectedType.activeCount}}</div>\n <div class=\"stat-label\">Active</div>\n </div>\n @if (selectedType.expiringCount > 0) {\n <div class=\"detail-stat warning\">\n <div class=\"stat-value\">{{selectedType.expiringCount}}</div>\n <div class=\"stat-label\">Expiring</div>\n </div>\n }\n </div>\n @if (selectedType.Description) {\n <p class=\"description\">\n {{selectedType.Description}}\n </p>\n }\n <div class=\"schema-section\">\n <h3>\n <i class=\"fa-solid fa-list-check\"></i>\n Field Schema\n </h3>\n @if (schemaProperties.length > 0) {\n <div class=\"field-list\">\n @for (prop of schemaProperties; track prop) {\n <div class=\"field-item\">\n <div class=\"field-header\">\n <span class=\"field-name\">{{prop.title}}</span>\n <span class=\"field-badges\">\n <span class=\"badge type\">{{prop.type}}</span>\n @if (prop.isSecret) {\n <span class=\"badge secret\">\n <i class=\"fa-solid fa-lock\"></i> Secret\n </span>\n }\n @if (prop.required) {\n <span class=\"badge required\">Required</span>\n }\n </span>\n </div>\n @if (prop.description) {\n <p class=\"field-description\">\n {{prop.description}}\n </p>\n }\n </div>\n }\n </div>\n }\n @if (schemaProperties.length === 0) {\n <div class=\"no-fields\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>No fields defined in schema</span>\n </div>\n }\n </div>\n @if (selectedType.ValidationEndpoint) {\n <div class=\"validation-section\">\n <h3>\n <i class=\"fa-solid fa-check-circle\"></i>\n Validation\n </h3>\n <div class=\"validation-endpoint\">\n <i class=\"fa-solid fa-link\"></i>\n <span>{{selectedType.ValidationEndpoint}}</span>\n </div>\n </div>\n }\n <!-- Quick Actions -->\n @if (UserCanCreateCredential) {\n <div class=\"detail-quick-actions\">\n <button class=\"btn-primary\" (click)=\"createCredentialForType(selectedType)\">\n <i class=\"fa-solid fa-plus\"></i>\n Create Credential\n </button>\n </div>\n }\n </div>\n </div>\n }\n <!-- No Selection -->\n @if (!selectedType && filteredTypes.length > 0) {\n <div class=\"no-selection\">\n <div class=\"no-selection-icon\">\n <i class=\"fa-solid fa-hand-pointer\"></i>\n </div>\n <h3>Select a Credential Type</h3>\n <p>Click on a credential type to view its details and field schema</p>\n </div>\n }\n </div>\n }\n </mj-page-body>\n\n <!-- Type Edit Panel -->\n <mj-credential-type-edit-panel\n #typeEditPanel\n (saved)=\"onTypeSaved($any($event))\"\n (deleted)=\"onTypeDeleted($any($event))\"\n ></mj-credential-type-edit-panel>\n</mj-page-layout>\n", styles: ["/* Layout */\n.types-layout {\n display: grid;\n grid-template-columns: 420px 1fr;\n flex: 1;\n min-height: 0;\n gap: 20px;\n}\n\n/* Types List */\n.types-list {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n padding: 16px;\n}\n\n.category-section {\n margin-bottom: 20px;\n}\n\n.category-section:last-child {\n margin-bottom: 0;\n}\n\n.category-header {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 10px 12px;\n font-size: 12px;\n font-weight: 700;\n text-transform: uppercase;\n color: var(--mj-text-secondary);\n letter-spacing: 0.5px;\n border-left: 3px solid var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n border-radius: 0 8px 8px 0;\n margin-bottom: 8px;\n}\n\n.category-header i {\n font-size: 14px;\n}\n\n.category-name {\n flex: 1;\n}\n\n.category-header .count {\n background: var(--mj-bg-surface);\n padding: 2px 10px;\n border-radius: 12px;\n font-size: 11px;\n font-weight: 600;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);\n}\n\n.type-items {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n\n.type-item {\n display: flex;\n align-items: center;\n padding: 12px 14px;\n background: var(--mj-bg-surface);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n border: 2px solid transparent;\n position: relative;\n}\n\n.type-item:hover {\n background: var(--mj-bg-page);\n border-color: var(--mj-border-default);\n}\n\n.type-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 5%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n}\n\n.type-icon {\n width: 42px;\n height: 42px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 10px;\n margin-right: 12px;\n flex-shrink: 0;\n}\n\n.type-icon i {\n font-size: 16px;\n}\n\n.type-info {\n flex: 1;\n min-width: 0;\n}\n\n.type-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.type-description {\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 2px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.type-meta {\n display: flex;\n gap: 8px;\n margin-top: 6px;\n}\n\n.meta-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 8px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 10px;\n font-size: 11px;\n color: var(--mj-text-secondary);\n}\n\n.meta-badge i {\n font-size: 9px;\n}\n\n.meta-badge.active {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.meta-badge.warning {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.type-actions {\n display: flex;\n gap: 4px;\n margin-right: 8px;\n opacity: 0;\n transition: opacity 0.2s ease;\n}\n\n.type-item:hover .type-actions {\n opacity: 1;\n}\n\n.action-btn {\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 12px;\n}\n\n.action-btn:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n.action-btn.danger:hover {\n background: var(--mj-status-error);\n}\n\n.arrow {\n color: var(--mj-border-strong);\n font-size: 12px;\n}\n\n/* Type Detail */\n.type-detail {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow-y: auto;\n}\n\n.detail-header {\n display: flex;\n align-items: center;\n padding: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-icon {\n width: 60px;\n height: 60px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 14px;\n margin-right: 16px;\n flex-shrink: 0;\n}\n\n.detail-icon i {\n font-size: 26px;\n}\n\n.detail-title {\n flex: 1;\n}\n\n.detail-title h2 {\n font-size: 22px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.category-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n border-radius: 8px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.category-badge i {\n font-size: 11px;\n}\n\n.detail-actions {\n display: flex;\n gap: 8px;\n}\n\n.close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n border: none;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n cursor: pointer;\n color: var(--mj-text-secondary);\n transition: all 0.2s ease;\n}\n\n.close-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-primary);\n}\n\n.detail-body {\n padding: 24px;\n}\n\n/* Detail Stats */\n.detail-stats {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n}\n\n.detail-stat {\n flex: 1;\n text-align: center;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n}\n\n.detail-stat .stat-value {\n font-size: 28px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-stat .stat-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.detail-stat.active {\n background: color-mix(in srgb, var(--mj-status-success) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.active .stat-value {\n color: var(--mj-status-success);\n}\n\n.detail-stat.warning {\n background: color-mix(in srgb, var(--mj-status-warning) 8%, var(--mj-bg-surface));\n}\n\n.detail-stat.warning .stat-value {\n color: var(--mj-status-warning);\n}\n\n.description {\n font-size: 14px;\n color: var(--mj-text-secondary);\n line-height: 1.6;\n margin: 0 0 24px 0;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n}\n\n.schema-section,\n.validation-section {\n margin-bottom: 24px;\n}\n\n.schema-section h3,\n.validation-section h3 {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 16px 0;\n}\n\n.schema-section h3 i,\n.validation-section h3 i {\n color: var(--mj-brand-primary);\n}\n\n.field-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.field-item {\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n transition: all 0.2s ease;\n}\n\n.field-item:hover {\n border-color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-sunken);\n}\n\n.field-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n flex-wrap: wrap;\n gap: 8px;\n}\n\n.field-name {\n font-weight: 600;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.field-badges {\n display: flex;\n gap: 6px;\n flex-wrap: wrap;\n}\n\n.badge {\n padding: 3px 10px;\n border-radius: 6px;\n font-size: 10px;\n font-weight: 600;\n text-transform: uppercase;\n}\n\n.badge.type {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.badge.secret {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.badge.secret i {\n margin-right: 3px;\n}\n\n.badge.required {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n}\n\n.field-description {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin: 10px 0 0 0;\n line-height: 1.5;\n}\n\n.no-fields {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n color: var(--mj-text-disabled);\n font-size: 13px;\n}\n\n.no-fields i {\n color: var(--mj-brand-primary);\n}\n\n.validation-endpoint {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;\n border: 1px solid var(--mj-border-default);\n}\n\n.validation-endpoint i {\n color: var(--mj-brand-primary);\n}\n\n.detail-quick-actions {\n margin-top: 24px;\n padding-top: 24px;\n border-top: 1px solid var(--mj-bg-surface-sunken);\n}\n\n/* No Selection */\n.no-selection {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n text-align: center;\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n padding: 48px;\n}\n\n.no-selection-icon {\n width: 80px;\n height: 80px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 20px;\n margin-bottom: 24px;\n}\n\n.no-selection-icon i {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.no-selection h3 {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.no-selection p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0;\n}\n\n/* Empty State */\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 24px;\n text-align: center;\n}\n\n.empty-icon {\n width: 72px;\n height: 72px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n border-radius: 18px;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 32px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n margin: 0 0 8px 0;\n}\n\n.empty-state p {\n font-size: 14px;\n color: var(--mj-text-secondary);\n margin: 0 0 20px 0;\n}\n\n.btn-link {\n background: none;\n border: none;\n color: var(--mj-brand-primary);\n font-size: 14px;\n cursor: pointer;\n text-decoration: underline;\n padding: 0;\n}\n\n.btn-link:hover {\n color: var(--mj-brand-primary-hover);\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .types-layout {\n grid-template-columns: 1fr;\n }\n\n .types-list {\n max-height: 400px;\n }\n}\n\n@media (max-width: 768px) {\n .types-container {\n padding: 16px;\n }\n\n .types-header {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .toolbar {\n flex-direction: column;\n align-items: stretch;\n }\n\n .toolbar-left {\n flex-direction: column;\n }\n\n .search-container {\n min-width: 100%;\n }\n\n .filter-select {\n width: 100%;\n }\n\n .toolbar-right {\n justify-content: space-between;\n }\n\n .detail-stats {\n flex-direction: column;\n }\n}\n"] }]
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"] }]
860
856
  }], () => [{ type: i0.ChangeDetectorRef }], { typeEditPanel: [{
861
857
  type: ViewChild,
862
858
  args: ['typeEditPanel']