@memberjunction/ng-dashboards 5.22.0 → 5.23.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 (204) hide show
  1. package/README.md +51 -0
  2. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  3. package/dist/AI/components/agents/agent-configuration.component.js +364 -362
  4. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  5. package/dist/AI/components/agents/agent-editor.component.js +2 -2
  6. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +275 -64
  7. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  8. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +2645 -436
  9. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  10. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts +240 -6
  11. package/dist/AI/components/duplicates/duplicate-detection-resource.component.d.ts.map +1 -1
  12. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +2166 -256
  13. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  14. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  15. package/dist/AI/components/execution-monitoring.component.js +191 -197
  16. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  17. package/dist/AI/components/models/model-management.component.js +9 -8
  18. package/dist/AI/components/models/model-management.component.js.map +1 -1
  19. package/dist/AI/components/prompts/prompt-management.component.js +305 -299
  20. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  21. package/dist/AI/components/system/system-configuration.component.js +319 -313
  22. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  23. package/dist/AI/components/vectors/vector-management-resource.component.d.ts +1 -2
  24. package/dist/AI/components/vectors/vector-management-resource.component.d.ts.map +1 -1
  25. package/dist/AI/components/vectors/vector-management-resource.component.js +12 -27
  26. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  27. package/dist/APIKeys/api-applications-panel.component.js +10 -12
  28. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  29. package/dist/APIKeys/api-key-create-dialog.component.js +13 -19
  30. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  31. package/dist/APIKeys/api-key-edit-panel.component.js +12 -14
  32. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  33. package/dist/APIKeys/api-scopes-panel.component.js +61 -68
  34. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  35. package/dist/APIKeys/api-usage-panel.component.js +10 -11
  36. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  37. package/dist/Actions/components/actions-list-view.component.js +82 -96
  38. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  39. package/dist/Actions/components/actions-overview.component.js +130 -134
  40. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  41. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  42. package/dist/Actions/components/categories-list-view.component.js +40 -46
  43. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  44. package/dist/Actions/components/code-management.component.js +2 -2
  45. package/dist/Actions/components/code-management.component.js.map +1 -1
  46. package/dist/Actions/components/entity-integration.component.js +2 -2
  47. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  48. package/dist/Actions/components/execution-monitoring.component.js +127 -132
  49. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  50. package/dist/Actions/components/executions-list-view.component.js +2 -2
  51. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  52. package/dist/Actions/components/explorer/action-card.component.js +11 -17
  53. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  54. package/dist/Actions/components/explorer/action-explorer.component.js +5 -11
  55. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  56. package/dist/Actions/components/explorer/action-list-item.component.js +8 -10
  57. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  58. package/dist/Actions/components/explorer/action-toolbar.component.js +112 -133
  59. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  60. package/dist/Actions/components/explorer/action-tree-panel.component.js +63 -83
  61. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  62. package/dist/Actions/components/explorer/new-action-panel.component.js +17 -21
  63. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  64. package/dist/Actions/components/explorer/new-category-panel.component.js +17 -21
  65. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  66. package/dist/Actions/components/scheduled-actions.component.js +2 -2
  67. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  68. package/dist/Actions/components/security-permissions.component.js +2 -2
  69. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  70. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +13 -5
  71. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  72. package/dist/ComponentStudio/component-studio-dashboard.component.js +168 -145
  73. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  74. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts +4 -5
  75. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  76. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +197 -200
  77. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  78. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts +5 -7
  79. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  80. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +142 -148
  81. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  82. package/dist/ComponentStudio/components/browser/component-browser.component.js +153 -166
  83. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  84. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +15 -20
  85. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  86. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +16 -21
  87. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  88. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +18 -23
  89. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  90. package/dist/ComponentStudio/components/editors/spec-editor.component.js +25 -30
  91. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  92. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +10 -11
  93. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  94. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  95. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +24 -35
  96. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  97. package/dist/ComponentStudio/components/text-import-dialog.component.js +15 -17
  98. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  99. package/dist/Credentials/components/credentials-categories-resource.component.js +7 -6
  100. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  101. package/dist/Credentials/components/credentials-list-resource.component.js +6 -5
  102. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  103. package/dist/Credentials/components/credentials-types-resource.component.js +7 -6
  104. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  105. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +9 -9
  106. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  107. package/dist/Home/home-dashboard.component.js +4 -4
  108. package/dist/Home/home-dashboard.component.js.map +1 -1
  109. package/dist/Integration/components/connections/connections.component.js +4 -4
  110. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  111. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +246 -259
  112. package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
  113. package/dist/Integration/components/widgets/integration-card.component.js +7 -9
  114. package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
  115. package/dist/Integration/integration.module.d.ts +6 -10
  116. package/dist/Integration/integration.module.d.ts.map +1 -1
  117. package/dist/Integration/integration.module.js +12 -20
  118. package/dist/Integration/integration.module.js.map +1 -1
  119. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts +106 -0
  120. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.d.ts.map +1 -0
  121. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +607 -0
  122. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -0
  123. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts +7 -2
  124. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.d.ts.map +1 -1
  125. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +59 -31
  126. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  127. package/dist/KnowledgeHub/index.d.ts +1 -0
  128. package/dist/KnowledgeHub/index.d.ts.map +1 -1
  129. package/dist/KnowledgeHub/index.js +1 -0
  130. package/dist/KnowledgeHub/index.js.map +1 -1
  131. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  132. package/dist/Lists/components/lists-browse-resource.component.js +9 -7
  133. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  134. package/dist/Lists/components/lists-my-lists-resource.component.js +5 -4
  135. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  136. package/dist/Lists/components/lists-operations-resource.component.js +10 -9
  137. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  138. package/dist/MCP/components/mcp-connection-dialog.component.js +141 -132
  139. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  140. package/dist/MCP/components/mcp-log-detail-panel.component.js +4 -4
  141. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  142. package/dist/MCP/components/mcp-server-dialog.component.js +141 -128
  143. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  144. package/dist/MCP/components/mcp-test-tool-dialog.component.js +210 -218
  145. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  146. package/dist/MCP/mcp-dashboard.component.js +2 -2
  147. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  148. package/dist/MCP/mcp.module.d.ts +6 -9
  149. package/dist/MCP/mcp.module.d.ts.map +1 -1
  150. package/dist/MCP/mcp.module.js +20 -22
  151. package/dist/MCP/mcp.module.js.map +1 -1
  152. package/dist/Scheduling/components/scheduling-activity.component.js +5 -4
  153. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  154. package/dist/Scheduling/components/scheduling-jobs.component.js +6 -5
  155. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  156. package/dist/Scheduling/components/scheduling-overview.component.js +93 -92
  157. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  158. package/dist/Testing/testing-dashboard.component.js +9 -10
  159. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  160. package/dist/actions-dashboards.module.d.ts +8 -13
  161. package/dist/actions-dashboards.module.d.ts.map +1 -1
  162. package/dist/actions-dashboards.module.js +6 -27
  163. package/dist/actions-dashboards.module.js.map +1 -1
  164. package/dist/ai-dashboards.module.d.ts +16 -20
  165. package/dist/ai-dashboards.module.d.ts.map +1 -1
  166. package/dist/ai-dashboards.module.js +23 -44
  167. package/dist/ai-dashboards.module.js.map +1 -1
  168. package/dist/communication-dashboards.module.d.ts +4 -8
  169. package/dist/communication-dashboards.module.d.ts.map +1 -1
  170. package/dist/communication-dashboards.module.js +0 -19
  171. package/dist/communication-dashboards.module.js.map +1 -1
  172. package/dist/component-studio-dashboards.module.d.ts +7 -11
  173. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  174. package/dist/component-studio-dashboards.module.js +22 -34
  175. package/dist/component-studio-dashboards.module.js.map +1 -1
  176. package/dist/core-dashboards.module.d.ts +12 -18
  177. package/dist/core-dashboards.module.d.ts.map +1 -1
  178. package/dist/core-dashboards.module.js +15 -31
  179. package/dist/core-dashboards.module.js.map +1 -1
  180. package/dist/credentials-dashboards.module.d.ts +5 -8
  181. package/dist/credentials-dashboards.module.d.ts.map +1 -1
  182. package/dist/credentials-dashboards.module.js +3 -19
  183. package/dist/credentials-dashboards.module.js.map +1 -1
  184. package/dist/data-explorer-dashboards.module.d.ts +7 -13
  185. package/dist/data-explorer-dashboards.module.d.ts.map +1 -1
  186. package/dist/data-explorer-dashboards.module.js +0 -27
  187. package/dist/data-explorer-dashboards.module.js.map +1 -1
  188. package/dist/lists-dashboards.module.d.ts +5 -8
  189. package/dist/lists-dashboards.module.d.ts.map +1 -1
  190. package/dist/lists-dashboards.module.js +3 -19
  191. package/dist/lists-dashboards.module.js.map +1 -1
  192. package/dist/public-api.d.ts +1 -0
  193. package/dist/public-api.d.ts.map +1 -1
  194. package/dist/public-api.js +1 -0
  195. package/dist/public-api.js.map +1 -1
  196. package/dist/scheduling-dashboards.module.d.ts +6 -10
  197. package/dist/scheduling-dashboards.module.d.ts.map +1 -1
  198. package/dist/scheduling-dashboards.module.js +3 -23
  199. package/dist/scheduling-dashboards.module.js.map +1 -1
  200. package/dist/testing-dashboards.module.d.ts +7 -13
  201. package/dist/testing-dashboards.module.d.ts.map +1 -1
  202. package/dist/testing-dashboards.module.js +0 -27
  203. package/dist/testing-dashboards.module.js.map +1 -1
  204. package/package.json +47 -55
@@ -12,7 +12,7 @@ import { BaseResourceComponent } from '@memberjunction/ng-shared';
12
12
  import * as i0 from "@angular/core";
13
13
  import * as i1 from "@memberjunction/ng-shared";
14
14
  import * as i2 from "@angular/common";
15
- import * as i3 from "@progress/kendo-angular-layout";
15
+ import * as i3 from "angular-split";
16
16
  import * as i4 from "@memberjunction/ng-shared-generic";
17
17
  import * as i5 from "./system-config-filter-panel.component";
18
18
  const _forTrack0 = ($index, $item) => $item.ID;
@@ -22,23 +22,34 @@ function SystemConfigurationComponent_Conditional_8_Template(rf, ctx) { if (rf &
22
22
  function SystemConfigurationComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
23
23
  i0.ɵɵtext(0, " Show Filters ");
24
24
  } }
25
- function SystemConfigurationComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
26
- i0.ɵɵelementStart(0, "div", 22);
27
- i0.ɵɵelement(1, "mj-loading", 26);
25
+ function SystemConfigurationComponent_Conditional_23_Template(rf, ctx) { if (rf & 1) {
26
+ const _r1 = i0.ɵɵgetCurrentView();
27
+ i0.ɵɵelementStart(0, "as-split-area", 18)(1, "mj-system-config-filter-panel", 24);
28
+ i0.ɵɵlistener("filtersChange", function SystemConfigurationComponent_Conditional_23_Template_mj_system_config_filter_panel_filtersChange_1_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFiltersChange($event)); })("filterChange", function SystemConfigurationComponent_Conditional_23_Template_mj_system_config_filter_panel_filterChange_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFilterChange()); })("resetFilters", function SystemConfigurationComponent_Conditional_23_Template_mj_system_config_filter_panel_resetFilters_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onResetFilters()); })("closePanel", function SystemConfigurationComponent_Conditional_23_Template_mj_system_config_filter_panel_closePanel_1_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.toggleFilterPanel()); });
29
+ i0.ɵɵelementEnd()();
30
+ } if (rf & 2) {
31
+ const ctx_r1 = i0.ɵɵnextContext();
32
+ i0.ɵɵproperty("size", 20)("minSize", 15)("maxSize", 30);
33
+ i0.ɵɵadvance();
34
+ i0.ɵɵproperty("configurations", ctx_r1.configurations)("filteredConfigurations", ctx_r1.filteredConfigurations)("filters", ctx_r1.currentFilters);
35
+ } }
36
+ function SystemConfigurationComponent_Conditional_26_Template(rf, ctx) { if (rf & 1) {
37
+ i0.ɵɵelementStart(0, "div", 20);
38
+ i0.ɵɵelement(1, "mj-loading", 25);
28
39
  i0.ɵɵelementEnd();
29
40
  } }
30
- function SystemConfigurationComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
31
- i0.ɵɵelementStart(0, "div", 23)(1, "p", 27);
32
- i0.ɵɵelement(2, "i", 28);
41
+ function SystemConfigurationComponent_Conditional_27_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div", 21)(1, "p", 26);
43
+ i0.ɵɵelement(2, "i", 27);
33
44
  i0.ɵɵtext(3);
34
45
  i0.ɵɵelementEnd()();
35
46
  } if (rf & 2) {
36
- const ctx_r0 = i0.ɵɵnextContext();
47
+ const ctx_r1 = i0.ɵɵnextContext();
37
48
  i0.ɵɵadvance(3);
38
- i0.ɵɵtextInterpolate1(" ", ctx_r0.error, " ");
49
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.error, " ");
39
50
  } }
40
- function SystemConfigurationComponent_Conditional_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
41
- i0.ɵɵelementStart(0, "div", 29);
51
+ function SystemConfigurationComponent_Conditional_28_Conditional_0_Template(rf, ctx) { if (rf & 1) {
52
+ i0.ɵɵelementStart(0, "div", 28);
42
53
  i0.ɵɵelement(1, "i", 4);
43
54
  i0.ɵɵelementStart(2, "h3");
44
55
  i0.ɵɵtext(3, "No configurations found");
@@ -47,262 +58,262 @@ function SystemConfigurationComponent_Conditional_29_Conditional_0_Template(rf,
47
58
  i0.ɵɵtext(5, "No AI configurations match your current filters. Try adjusting your search criteria or create a new configuration.");
48
59
  i0.ɵɵelementEnd()();
49
60
  } }
50
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
51
- i0.ɵɵelementStart(0, "span", 40);
52
- i0.ɵɵelement(1, "i", 52);
61
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_9_Template(rf, ctx) { if (rf & 1) {
62
+ i0.ɵɵelementStart(0, "span", 39);
63
+ i0.ɵɵelement(1, "i", 51);
53
64
  i0.ɵɵtext(2, " Default ");
54
65
  i0.ɵɵelementEnd();
55
66
  } }
56
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
57
- i0.ɵɵelementStart(0, "p", 44);
67
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
68
+ i0.ɵɵelementStart(0, "p", 43);
58
69
  i0.ɵɵtext(1);
59
70
  i0.ɵɵelementEnd();
60
71
  } if (rf & 2) {
61
- const config_r3 = i0.ɵɵnextContext().$implicit;
72
+ const config_r4 = i0.ɵɵnextContext().$implicit;
62
73
  i0.ɵɵadvance();
63
- i0.ɵɵtextInterpolate(config_r3.Description);
74
+ i0.ɵɵtextInterpolate(config_r4.Description);
64
75
  } }
65
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
66
- i0.ɵɵelementStart(0, "p", 45);
76
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_16_Template(rf, ctx) { if (rf & 1) {
77
+ i0.ɵɵelementStart(0, "p", 44);
67
78
  i0.ɵɵtext(1, "No description provided");
68
79
  i0.ɵɵelementEnd();
69
80
  } }
70
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_22_Template(rf, ctx) { if (rf & 1) {
71
- const _r4 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "div", 64);
73
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const config_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); ctx_r0.onOpenPrompt(config_r3.DefaultPromptForContextCompressionID); return i0.ɵɵresetView($event.stopPropagation()); });
74
- i0.ɵɵelementStart(1, "div", 65)(2, "div", 66);
75
- i0.ɵɵelement(3, "i", 67);
81
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_22_Template(rf, ctx) { if (rf & 1) {
82
+ const _r5 = i0.ɵɵgetCurrentView();
83
+ i0.ɵɵelementStart(0, "div", 63);
84
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_22_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const config_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.onOpenPrompt(config_r4.DefaultPromptForContextCompressionID); return i0.ɵɵresetView($event.stopPropagation()); });
85
+ i0.ɵɵelementStart(1, "div", 64)(2, "div", 65);
86
+ i0.ɵɵelement(3, "i", 66);
76
87
  i0.ɵɵelementEnd();
77
- i0.ɵɵelementStart(4, "div", 68)(5, "span", 69);
88
+ i0.ɵɵelementStart(4, "div", 67)(5, "span", 68);
78
89
  i0.ɵɵtext(6, "Context Compression");
79
90
  i0.ɵɵelementEnd();
80
- i0.ɵɵelementStart(7, "span", 70);
91
+ i0.ɵɵelementStart(7, "span", 69);
81
92
  i0.ɵɵtext(8);
82
93
  i0.ɵɵelementEnd()()();
83
- i0.ɵɵelement(9, "i", 71);
94
+ i0.ɵɵelement(9, "i", 70);
84
95
  i0.ɵɵelementEnd();
85
96
  } if (rf & 2) {
86
- const config_r3 = i0.ɵɵnextContext(2).$implicit;
97
+ const config_r4 = i0.ɵɵnextContext(2).$implicit;
87
98
  i0.ɵɵadvance(8);
88
- i0.ɵɵtextInterpolate(config_r3.compressionPrompt.Name);
99
+ i0.ɵɵtextInterpolate(config_r4.compressionPrompt.Name);
89
100
  } }
90
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_23_Template(rf, ctx) { if (rf & 1) {
91
- i0.ɵɵelementStart(0, "div", 62);
101
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_23_Template(rf, ctx) { if (rf & 1) {
102
+ i0.ɵɵelementStart(0, "div", 61);
92
103
  i0.ɵɵtext(1, "No compression prompt configured");
93
104
  i0.ɵɵelementEnd();
94
105
  } }
95
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_24_Template(rf, ctx) { if (rf & 1) {
96
- const _r5 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "div", 64);
98
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_24_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r5); const config_r3 = i0.ɵɵnextContext(2).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); ctx_r0.onOpenPrompt(config_r3.DefaultPromptForContextSummarizationID); return i0.ɵɵresetView($event.stopPropagation()); });
99
- i0.ɵɵelementStart(1, "div", 65)(2, "div", 66);
100
- i0.ɵɵelement(3, "i", 72);
106
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_24_Template(rf, ctx) { if (rf & 1) {
107
+ const _r6 = i0.ɵɵgetCurrentView();
108
+ i0.ɵɵelementStart(0, "div", 63);
109
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_24_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r6); const config_r4 = i0.ɵɵnextContext(2).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); ctx_r1.onOpenPrompt(config_r4.DefaultPromptForContextSummarizationID); return i0.ɵɵresetView($event.stopPropagation()); });
110
+ i0.ɵɵelementStart(1, "div", 64)(2, "div", 65);
111
+ i0.ɵɵelement(3, "i", 71);
101
112
  i0.ɵɵelementEnd();
102
- i0.ɵɵelementStart(4, "div", 68)(5, "span", 69);
113
+ i0.ɵɵelementStart(4, "div", 67)(5, "span", 68);
103
114
  i0.ɵɵtext(6, "Context Summarization");
104
115
  i0.ɵɵelementEnd();
105
- i0.ɵɵelementStart(7, "span", 70);
116
+ i0.ɵɵelementStart(7, "span", 69);
106
117
  i0.ɵɵtext(8);
107
118
  i0.ɵɵelementEnd()()();
108
- i0.ɵɵelement(9, "i", 71);
119
+ i0.ɵɵelement(9, "i", 70);
109
120
  i0.ɵɵelementEnd();
110
121
  } if (rf & 2) {
111
- const config_r3 = i0.ɵɵnextContext(2).$implicit;
122
+ const config_r4 = i0.ɵɵnextContext(2).$implicit;
112
123
  i0.ɵɵadvance(8);
113
- i0.ɵɵtextInterpolate(config_r3.summarizationPrompt.Name);
124
+ i0.ɵɵtextInterpolate(config_r4.summarizationPrompt.Name);
114
125
  } }
115
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_25_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelementStart(0, "div", 62);
126
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_25_Template(rf, ctx) { if (rf & 1) {
127
+ i0.ɵɵelementStart(0, "div", 61);
117
128
  i0.ɵɵtext(1, "No summarization prompt configured");
118
129
  i0.ɵɵelementEnd();
119
130
  } }
120
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_For_6_Template(rf, ctx) { if (rf & 1) {
121
- const _r6 = i0.ɵɵgetCurrentView();
122
- i0.ɵɵelementStart(0, "div", 76);
123
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_For_6_Template_div_click_0_listener($event) { const param_r7 = i0.ɵɵrestoreView(_r6).$implicit; const ctx_r0 = i0.ɵɵnextContext(7); ctx_r0.onOpenParam(param_r7); return i0.ɵɵresetView($event.stopPropagation()); });
124
- i0.ɵɵelementStart(1, "div", 77)(2, "div", 78);
131
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_For_6_Template(rf, ctx) { if (rf & 1) {
132
+ const _r7 = i0.ɵɵgetCurrentView();
133
+ i0.ɵɵelementStart(0, "div", 75);
134
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_For_6_Template_div_click_0_listener($event) { const param_r8 = i0.ɵɵrestoreView(_r7).$implicit; const ctx_r1 = i0.ɵɵnextContext(7); ctx_r1.onOpenParam(param_r8); return i0.ɵɵresetView($event.stopPropagation()); });
135
+ i0.ɵɵelementStart(1, "div", 76)(2, "div", 77);
125
136
  i0.ɵɵelement(3, "i");
126
137
  i0.ɵɵelementEnd();
127
- i0.ɵɵelementStart(4, "div", 79)(5, "span", 80);
138
+ i0.ɵɵelementStart(4, "div", 78)(5, "span", 79);
128
139
  i0.ɵɵtext(6);
129
140
  i0.ɵɵelementEnd();
130
- i0.ɵɵelementStart(7, "span", 81);
141
+ i0.ɵɵelementStart(7, "span", 80);
131
142
  i0.ɵɵtext(8);
132
143
  i0.ɵɵelementEnd()()();
133
- i0.ɵɵelementStart(9, "span", 82);
144
+ i0.ɵɵelementStart(9, "span", 81);
134
145
  i0.ɵɵtext(10);
135
146
  i0.ɵɵelementEnd()();
136
147
  } if (rf & 2) {
137
- const param_r7 = ctx.$implicit;
138
- const ctx_r0 = i0.ɵɵnextContext(7);
148
+ const param_r8 = ctx.$implicit;
149
+ const ctx_r1 = i0.ɵɵnextContext(7);
139
150
  i0.ɵɵadvance(3);
140
- i0.ɵɵclassMap(ctx_r0.getParamTypeIcon(param_r7.Type));
151
+ i0.ɵɵclassMap(ctx_r1.getParamTypeIcon(param_r8.Type));
141
152
  i0.ɵɵadvance(3);
142
- i0.ɵɵtextInterpolate(param_r7.Name);
153
+ i0.ɵɵtextInterpolate(param_r8.Name);
143
154
  i0.ɵɵadvance(2);
144
- i0.ɵɵtextInterpolate(param_r7.Type);
155
+ i0.ɵɵtextInterpolate(param_r8.Type);
145
156
  i0.ɵɵadvance(2);
146
- i0.ɵɵtextInterpolate(ctx_r0.formatParamValue(param_r7));
157
+ i0.ɵɵtextInterpolate(ctx_r1.formatParamValue(param_r8));
147
158
  } }
148
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "div", 63)(1, "h5", 58);
150
- i0.ɵɵelement(2, "i", 73);
159
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_Template(rf, ctx) { if (rf & 1) {
160
+ i0.ɵɵelementStart(0, "div", 62)(1, "h5", 57);
161
+ i0.ɵɵelement(2, "i", 72);
151
162
  i0.ɵɵtext(3, " Configuration Parameters ");
152
163
  i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(4, "div", 74);
154
- i0.ɵɵrepeaterCreate(5, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_For_6_Template, 11, 5, "div", 75, _forTrack0);
164
+ i0.ɵɵelementStart(4, "div", 73);
165
+ i0.ɵɵrepeaterCreate(5, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_For_6_Template, 11, 5, "div", 74, _forTrack0);
155
166
  i0.ɵɵelementEnd()();
156
167
  } if (rf & 2) {
157
- const config_r3 = i0.ɵɵnextContext(2).$implicit;
168
+ const config_r4 = i0.ɵɵnextContext(2).$implicit;
158
169
  i0.ɵɵadvance(5);
159
- i0.ɵɵrepeater(config_r3.params);
170
+ i0.ɵɵrepeater(config_r4.params);
160
171
  } }
161
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_27_Template(rf, ctx) { if (rf & 1) {
162
- i0.ɵɵelementStart(0, "div", 63)(1, "h5", 58);
163
- i0.ɵɵelement(2, "i", 73);
172
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_27_Template(rf, ctx) { if (rf & 1) {
173
+ i0.ɵɵelementStart(0, "div", 62)(1, "h5", 57);
174
+ i0.ɵɵelement(2, "i", 72);
164
175
  i0.ɵɵtext(3, " Configuration Parameters ");
165
176
  i0.ɵɵelementEnd();
166
- i0.ɵɵelementStart(4, "div", 83);
177
+ i0.ɵɵelementStart(4, "div", 82);
167
178
  i0.ɵɵtext(5, "No parameters configured");
168
179
  i0.ɵɵelementEnd()();
169
180
  } }
170
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
171
- i0.ɵɵelementStart(0, "div", 46)(1, "div", 53)(2, "div", 54)(3, "span", 55);
181
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Template(rf, ctx) { if (rf & 1) {
182
+ i0.ɵɵelementStart(0, "div", 45)(1, "div", 52)(2, "div", 53)(3, "span", 54);
172
183
  i0.ɵɵtext(4, "Parameters");
173
184
  i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(5, "span", 56);
185
+ i0.ɵɵelementStart(5, "span", 55);
175
186
  i0.ɵɵtext(6);
176
187
  i0.ɵɵelementEnd()();
177
- i0.ɵɵelementStart(7, "div", 54)(8, "span", 55);
188
+ i0.ɵɵelementStart(7, "div", 53)(8, "span", 54);
178
189
  i0.ɵɵtext(9, "Created");
179
190
  i0.ɵɵelementEnd();
180
- i0.ɵɵelementStart(10, "span", 56);
191
+ i0.ɵɵelementStart(10, "span", 55);
181
192
  i0.ɵɵtext(11);
182
193
  i0.ɵɵelementEnd()();
183
- i0.ɵɵelementStart(12, "div", 54)(13, "span", 55);
194
+ i0.ɵɵelementStart(12, "div", 53)(13, "span", 54);
184
195
  i0.ɵɵtext(14, "Updated");
185
196
  i0.ɵɵelementEnd();
186
- i0.ɵɵelementStart(15, "span", 56);
197
+ i0.ɵɵelementStart(15, "span", 55);
187
198
  i0.ɵɵtext(16);
188
199
  i0.ɵɵelementEnd()()();
189
- i0.ɵɵelementStart(17, "div", 57)(18, "h5", 58);
190
- i0.ɵɵelement(19, "i", 59);
200
+ i0.ɵɵelementStart(17, "div", 56)(18, "h5", 57);
201
+ i0.ɵɵelement(19, "i", 58);
191
202
  i0.ɵɵtext(20, " Linked Prompts ");
192
203
  i0.ɵɵelementEnd();
193
- i0.ɵɵelementStart(21, "div", 60);
194
- i0.ɵɵconditionalCreate(22, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_22_Template, 10, 1, "div", 61)(23, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_23_Template, 2, 0, "div", 62);
195
- i0.ɵɵconditionalCreate(24, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_24_Template, 10, 1, "div", 61)(25, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_25_Template, 2, 0, "div", 62);
204
+ i0.ɵɵelementStart(21, "div", 59);
205
+ i0.ɵɵconditionalCreate(22, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_22_Template, 10, 1, "div", 60)(23, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_23_Template, 2, 0, "div", 61);
206
+ i0.ɵɵconditionalCreate(24, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_24_Template, 10, 1, "div", 60)(25, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_25_Template, 2, 0, "div", 61);
196
207
  i0.ɵɵelementEnd()();
197
- i0.ɵɵconditionalCreate(26, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_Template, 7, 0, "div", 63)(27, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_27_Template, 6, 0, "div", 63);
208
+ i0.ɵɵconditionalCreate(26, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_26_Template, 7, 0, "div", 62)(27, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Conditional_27_Template, 6, 0, "div", 62);
198
209
  i0.ɵɵelementEnd();
199
210
  } if (rf & 2) {
200
- const config_r3 = i0.ɵɵnextContext().$implicit;
201
- const ctx_r0 = i0.ɵɵnextContext(4);
211
+ const config_r4 = i0.ɵɵnextContext().$implicit;
212
+ const ctx_r1 = i0.ɵɵnextContext(4);
202
213
  i0.ɵɵadvance(6);
203
- i0.ɵɵtextInterpolate((config_r3.params == null ? null : config_r3.params.length) || 0);
214
+ i0.ɵɵtextInterpolate((config_r4.params == null ? null : config_r4.params.length) || 0);
204
215
  i0.ɵɵadvance(5);
205
- i0.ɵɵtextInterpolate(ctx_r0.formatDate(config_r3.__mj_CreatedAt));
216
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(config_r4.__mj_CreatedAt));
206
217
  i0.ɵɵadvance(5);
207
- i0.ɵɵtextInterpolate(ctx_r0.formatDate(config_r3.__mj_UpdatedAt));
218
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(config_r4.__mj_UpdatedAt));
208
219
  i0.ɵɵadvance(6);
209
- i0.ɵɵconditional(config_r3.compressionPrompt ? 22 : 23);
220
+ i0.ɵɵconditional(config_r4.compressionPrompt ? 22 : 23);
210
221
  i0.ɵɵadvance(2);
211
- i0.ɵɵconditional(config_r3.summarizationPrompt ? 24 : 25);
222
+ i0.ɵɵconditional(config_r4.summarizationPrompt ? 24 : 25);
212
223
  i0.ɵɵadvance(2);
213
- i0.ɵɵconditional(config_r3.params && config_r3.params.length > 0 ? 26 : 27);
224
+ i0.ɵɵconditional(config_r4.params && config_r4.params.length > 0 ? 26 : 27);
214
225
  } }
215
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
216
- const _r2 = i0.ɵɵgetCurrentView();
217
- i0.ɵɵelementStart(0, "div", 33)(1, "div", 34);
218
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template_div_click_1_listener() { const config_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.toggleExpanded(config_r3)); });
219
- i0.ɵɵelementStart(2, "div", 35)(3, "div", 36);
226
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Template(rf, ctx) { if (rf & 1) {
227
+ const _r3 = i0.ɵɵgetCurrentView();
228
+ i0.ɵɵelementStart(0, "div", 32)(1, "div", 33);
229
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Template_div_click_1_listener() { const config_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleExpanded(config_r4)); });
230
+ i0.ɵɵelementStart(2, "div", 34)(3, "div", 35);
220
231
  i0.ɵɵelement(4, "i", 4);
221
232
  i0.ɵɵelementEnd();
222
- i0.ɵɵelementStart(5, "div", 37)(6, "h4", 38);
233
+ i0.ɵɵelementStart(5, "div", 36)(6, "h4", 37);
223
234
  i0.ɵɵtext(7);
224
235
  i0.ɵɵelementEnd();
225
- i0.ɵɵelementStart(8, "div", 39);
226
- i0.ɵɵconditionalCreate(9, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_9_Template, 3, 0, "span", 40);
227
- i0.ɵɵelementStart(10, "span", 41);
236
+ i0.ɵɵelementStart(8, "div", 38);
237
+ i0.ɵɵconditionalCreate(9, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_9_Template, 3, 0, "span", 39);
238
+ i0.ɵɵelementStart(10, "span", 40);
228
239
  i0.ɵɵelement(11, "i");
229
240
  i0.ɵɵtext(12);
230
241
  i0.ɵɵelementEnd()()()();
231
- i0.ɵɵelement(13, "i", 42);
242
+ i0.ɵɵelement(13, "i", 41);
232
243
  i0.ɵɵelementEnd();
233
- i0.ɵɵelementStart(14, "div", 43);
234
- i0.ɵɵconditionalCreate(15, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_15_Template, 2, 1, "p", 44)(16, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 0, "p", 45);
235
- i0.ɵɵconditionalCreate(17, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Conditional_17_Template, 28, 6, "div", 46);
244
+ i0.ɵɵelementStart(14, "div", 42);
245
+ i0.ɵɵconditionalCreate(15, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_15_Template, 2, 1, "p", 43)(16, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_16_Template, 2, 0, "p", 44);
246
+ i0.ɵɵconditionalCreate(17, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Conditional_17_Template, 28, 6, "div", 45);
236
247
  i0.ɵɵelementEnd();
237
- i0.ɵɵelementStart(18, "div", 47);
238
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template_div_click_18_listener($event) { i0.ɵɵrestoreView(_r2); return i0.ɵɵresetView($event.stopPropagation()); });
239
- i0.ɵɵelementStart(19, "button", 48);
240
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template_button_click_19_listener($event) { const config_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.showConfigDetails(config_r3, $event)); });
241
- i0.ɵɵelement(20, "i", 49);
248
+ i0.ɵɵelementStart(18, "div", 46);
249
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Template_div_click_18_listener($event) { i0.ɵɵrestoreView(_r3); return i0.ɵɵresetView($event.stopPropagation()); });
250
+ i0.ɵɵelementStart(19, "button", 47);
251
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Template_button_click_19_listener($event) { const config_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showConfigDetails(config_r4, $event)); });
252
+ i0.ɵɵelement(20, "i", 48);
242
253
  i0.ɵɵtext(21, " Details ");
243
254
  i0.ɵɵelementEnd();
244
- i0.ɵɵelementStart(22, "button", 50);
245
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template_button_click_22_listener() { const config_r3 = i0.ɵɵrestoreView(_r2).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onOpenConfiguration(config_r3)); });
246
- i0.ɵɵelement(23, "i", 51);
255
+ i0.ɵɵelementStart(22, "button", 49);
256
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Template_button_click_22_listener() { const config_r4 = i0.ɵɵrestoreView(_r3).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onOpenConfiguration(config_r4)); });
257
+ i0.ɵɵelement(23, "i", 50);
247
258
  i0.ɵɵtext(24, " Configure ");
248
259
  i0.ɵɵelementEnd()()();
249
260
  } if (rf & 2) {
250
- const config_r3 = ctx.$implicit;
251
- const ctx_r0 = i0.ɵɵnextContext(4);
252
- i0.ɵɵclassProp("expanded", config_r3.isExpanded);
261
+ const config_r4 = ctx.$implicit;
262
+ const ctx_r1 = i0.ɵɵnextContext(4);
263
+ i0.ɵɵclassProp("expanded", config_r4.isExpanded);
253
264
  i0.ɵɵadvance(7);
254
- i0.ɵɵtextInterpolate(config_r3.Name);
265
+ i0.ɵɵtextInterpolate(config_r4.Name);
255
266
  i0.ɵɵadvance(2);
256
- i0.ɵɵconditional(config_r3.IsDefault ? 9 : -1);
267
+ i0.ɵɵconditional(config_r4.IsDefault ? 9 : -1);
257
268
  i0.ɵɵadvance();
258
- i0.ɵɵproperty("ngClass", ctx_r0.getStatusClass(config_r3.Status));
269
+ i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass(config_r4.Status));
259
270
  i0.ɵɵadvance();
260
- i0.ɵɵclassMap(ctx_r0.getStatusIcon(config_r3.Status));
271
+ i0.ɵɵclassMap(ctx_r1.getStatusIcon(config_r4.Status));
261
272
  i0.ɵɵadvance();
262
- i0.ɵɵtextInterpolate1(" ", config_r3.Status, " ");
273
+ i0.ɵɵtextInterpolate1(" ", config_r4.Status, " ");
263
274
  i0.ɵɵadvance();
264
- i0.ɵɵclassProp("rotated", config_r3.isExpanded);
275
+ i0.ɵɵclassProp("rotated", config_r4.isExpanded);
265
276
  i0.ɵɵadvance(2);
266
- i0.ɵɵconditional(config_r3.Description ? 15 : 16);
277
+ i0.ɵɵconditional(config_r4.Description ? 15 : 16);
267
278
  i0.ɵɵadvance(2);
268
- i0.ɵɵconditional(config_r3.isExpanded ? 17 : -1);
279
+ i0.ɵɵconditional(config_r4.isExpanded ? 17 : -1);
269
280
  } }
270
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
271
- i0.ɵɵelementStart(0, "div", 30);
272
- i0.ɵɵrepeaterCreate(1, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_For_2_Template, 25, 12, "div", 32, _forTrack0);
281
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
282
+ i0.ɵɵelementStart(0, "div", 29);
283
+ i0.ɵɵrepeaterCreate(1, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_For_2_Template, 25, 12, "div", 31, _forTrack0);
273
284
  i0.ɵɵelementEnd();
274
285
  } if (rf & 2) {
275
- const ctx_r0 = i0.ɵɵnextContext(3);
286
+ const ctx_r1 = i0.ɵɵnextContext(3);
276
287
  i0.ɵɵadvance();
277
- i0.ɵɵrepeater(ctx_r0.filteredConfigurations);
288
+ i0.ɵɵrepeater(ctx_r1.filteredConfigurations);
278
289
  } }
279
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Conditional_8_Template(rf, ctx) { if (rf & 1) {
280
- i0.ɵɵelementStart(0, "span", 91);
281
- i0.ɵɵelement(1, "i", 52);
290
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Conditional_8_Template(rf, ctx) { if (rf & 1) {
291
+ i0.ɵɵelementStart(0, "span", 90);
292
+ i0.ɵɵelement(1, "i", 51);
282
293
  i0.ɵɵtext(2, " Default ");
283
294
  i0.ɵɵelementEnd();
284
295
  } }
285
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
286
- i0.ɵɵelementStart(0, "div", 92);
296
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Conditional_9_Template(rf, ctx) { if (rf & 1) {
297
+ i0.ɵɵelementStart(0, "div", 91);
287
298
  i0.ɵɵtext(1);
288
299
  i0.ɵɵelementEnd();
289
300
  } if (rf & 2) {
290
- const config_r10 = i0.ɵɵnextContext().$implicit;
301
+ const config_r11 = i0.ɵɵnextContext().$implicit;
291
302
  i0.ɵɵadvance();
292
- i0.ɵɵtextInterpolate(config_r10.Description);
303
+ i0.ɵɵtextInterpolate(config_r11.Description);
293
304
  } }
294
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Template(rf, ctx) { if (rf & 1) {
295
- const _r9 = i0.ɵɵgetCurrentView();
296
- i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 88)(3, "div", 89);
305
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Template(rf, ctx) { if (rf & 1) {
306
+ const _r10 = i0.ɵɵgetCurrentView();
307
+ i0.ɵɵelementStart(0, "tr")(1, "td")(2, "div", 87)(3, "div", 88);
297
308
  i0.ɵɵelement(4, "i", 4);
298
309
  i0.ɵɵelementEnd();
299
- i0.ɵɵelementStart(5, "div")(6, "div", 90);
310
+ i0.ɵɵelementStart(5, "div")(6, "div", 89);
300
311
  i0.ɵɵtext(7);
301
- i0.ɵɵconditionalCreate(8, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Conditional_8_Template, 3, 0, "span", 91);
312
+ i0.ɵɵconditionalCreate(8, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Conditional_8_Template, 3, 0, "span", 90);
302
313
  i0.ɵɵelementEnd();
303
- i0.ɵɵconditionalCreate(9, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Conditional_9_Template, 2, 1, "div", 92);
314
+ i0.ɵɵconditionalCreate(9, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Conditional_9_Template, 2, 1, "div", 91);
304
315
  i0.ɵɵelementEnd()()();
305
- i0.ɵɵelementStart(10, "td")(11, "span", 41);
316
+ i0.ɵɵelementStart(10, "td")(11, "span", 40);
306
317
  i0.ɵɵelement(12, "i");
307
318
  i0.ɵɵtext(13);
308
319
  i0.ɵɵelementEnd()();
@@ -312,291 +323,291 @@ function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1
312
323
  i0.ɵɵelementStart(16, "td");
313
324
  i0.ɵɵtext(17);
314
325
  i0.ɵɵelementEnd();
315
- i0.ɵɵelementStart(18, "td")(19, "div", 93)(20, "button", 94);
316
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Template_button_click_20_listener() { const config_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.showConfigDetails(config_r10)); });
317
- i0.ɵɵelement(21, "i", 49);
326
+ i0.ɵɵelementStart(18, "td")(19, "div", 92)(20, "button", 93);
327
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Template_button_click_20_listener() { const config_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.showConfigDetails(config_r11)); });
328
+ i0.ɵɵelement(21, "i", 48);
318
329
  i0.ɵɵelementEnd();
319
- i0.ɵɵelementStart(22, "button", 95);
320
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Template_button_click_22_listener() { const config_r10 = i0.ɵɵrestoreView(_r9).$implicit; const ctx_r0 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r0.onOpenConfiguration(config_r10)); });
321
- i0.ɵɵelement(23, "i", 51);
330
+ i0.ɵɵelementStart(22, "button", 94);
331
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Template_button_click_22_listener() { const config_r11 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.onOpenConfiguration(config_r11)); });
332
+ i0.ɵɵelement(23, "i", 50);
322
333
  i0.ɵɵelementEnd()()()();
323
334
  } if (rf & 2) {
324
- const config_r10 = ctx.$implicit;
325
- const ctx_r0 = i0.ɵɵnextContext(4);
335
+ const config_r11 = ctx.$implicit;
336
+ const ctx_r1 = i0.ɵɵnextContext(4);
326
337
  i0.ɵɵadvance(7);
327
- i0.ɵɵtextInterpolate1(" ", config_r10.Name, " ");
338
+ i0.ɵɵtextInterpolate1(" ", config_r11.Name, " ");
328
339
  i0.ɵɵadvance();
329
- i0.ɵɵconditional(config_r10.IsDefault ? 8 : -1);
340
+ i0.ɵɵconditional(config_r11.IsDefault ? 8 : -1);
330
341
  i0.ɵɵadvance();
331
- i0.ɵɵconditional(config_r10.Description ? 9 : -1);
342
+ i0.ɵɵconditional(config_r11.Description ? 9 : -1);
332
343
  i0.ɵɵadvance(2);
333
- i0.ɵɵproperty("ngClass", ctx_r0.getStatusClass(config_r10.Status));
344
+ i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass(config_r11.Status));
334
345
  i0.ɵɵadvance();
335
- i0.ɵɵclassMap(ctx_r0.getStatusIcon(config_r10.Status));
346
+ i0.ɵɵclassMap(ctx_r1.getStatusIcon(config_r11.Status));
336
347
  i0.ɵɵadvance();
337
- i0.ɵɵtextInterpolate1(" ", config_r10.Status, " ");
348
+ i0.ɵɵtextInterpolate1(" ", config_r11.Status, " ");
338
349
  i0.ɵɵadvance(2);
339
- i0.ɵɵtextInterpolate((config_r10.params == null ? null : config_r10.params.length) || 0);
350
+ i0.ɵɵtextInterpolate((config_r11.params == null ? null : config_r11.params.length) || 0);
340
351
  i0.ɵɵadvance(2);
341
- i0.ɵɵtextInterpolate(ctx_r0.formatDate(config_r10.__mj_UpdatedAt));
352
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(config_r11.__mj_UpdatedAt));
342
353
  } }
343
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
344
- const _r8 = i0.ɵɵgetCurrentView();
345
- i0.ɵɵelementStart(0, "div", 31)(1, "table", 84)(2, "thead")(3, "tr")(4, "th", 85);
346
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortBy("Name")); });
347
- i0.ɵɵelementStart(5, "span", 86);
354
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
355
+ const _r9 = i0.ɵɵgetCurrentView();
356
+ i0.ɵɵelementStart(0, "div", 30)(1, "table", 83)(2, "thead")(3, "tr")(4, "th", 84);
357
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_Template_th_click_4_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Name")); });
358
+ i0.ɵɵelementStart(5, "span", 85);
348
359
  i0.ɵɵtext(6, " Configuration ");
349
- i0.ɵɵelement(7, "i", 87);
360
+ i0.ɵɵelement(7, "i", 86);
350
361
  i0.ɵɵelementEnd()();
351
- i0.ɵɵelementStart(8, "th", 85);
352
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template_th_click_8_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortBy("Status")); });
353
- i0.ɵɵelementStart(9, "span", 86);
362
+ i0.ɵɵelementStart(8, "th", 84);
363
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_Template_th_click_8_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Status")); });
364
+ i0.ɵɵelementStart(9, "span", 85);
354
365
  i0.ɵɵtext(10, " Status ");
355
- i0.ɵɵelement(11, "i", 87);
366
+ i0.ɵɵelement(11, "i", 86);
356
367
  i0.ɵɵelementEnd()();
357
- i0.ɵɵelementStart(12, "th", 85);
358
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template_th_click_12_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortBy("Parameters")); });
359
- i0.ɵɵelementStart(13, "span", 86);
368
+ i0.ɵɵelementStart(12, "th", 84);
369
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_Template_th_click_12_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Parameters")); });
370
+ i0.ɵɵelementStart(13, "span", 85);
360
371
  i0.ɵɵtext(14, " Parameters ");
361
- i0.ɵɵelement(15, "i", 87);
372
+ i0.ɵɵelement(15, "i", 86);
362
373
  i0.ɵɵelementEnd()();
363
- i0.ɵɵelementStart(16, "th", 85);
364
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r8); const ctx_r0 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r0.sortBy("Updated")); });
365
- i0.ɵɵelementStart(17, "span", 86);
374
+ i0.ɵɵelementStart(16, "th", 84);
375
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_Template_th_click_16_listener() { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.sortBy("Updated")); });
376
+ i0.ɵɵelementStart(17, "span", 85);
366
377
  i0.ɵɵtext(18, " Updated ");
367
- i0.ɵɵelement(19, "i", 87);
378
+ i0.ɵɵelement(19, "i", 86);
368
379
  i0.ɵɵelementEnd()();
369
380
  i0.ɵɵelementStart(20, "th");
370
381
  i0.ɵɵtext(21, "Actions");
371
382
  i0.ɵɵelementEnd()()();
372
383
  i0.ɵɵelementStart(22, "tbody");
373
- i0.ɵɵrepeaterCreate(23, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_For_24_Template, 24, 9, "tr", null, _forTrack0);
384
+ i0.ɵɵrepeaterCreate(23, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_For_24_Template, 24, 9, "tr", null, _forTrack0);
374
385
  i0.ɵɵelementEnd()()();
375
386
  } if (rf & 2) {
376
- const ctx_r0 = i0.ɵɵnextContext(3);
387
+ const ctx_r1 = i0.ɵɵnextContext(3);
377
388
  i0.ɵɵadvance(4);
378
- i0.ɵɵclassProp("sorted", ctx_r0.sortColumn === "Name")("desc", ctx_r0.sortColumn === "Name" && ctx_r0.sortDirection === "desc");
389
+ i0.ɵɵclassProp("sorted", ctx_r1.sortColumn === "Name")("desc", ctx_r1.sortColumn === "Name" && ctx_r1.sortDirection === "desc");
379
390
  i0.ɵɵadvance(4);
380
- i0.ɵɵclassProp("sorted", ctx_r0.sortColumn === "Status")("desc", ctx_r0.sortColumn === "Status" && ctx_r0.sortDirection === "desc");
391
+ i0.ɵɵclassProp("sorted", ctx_r1.sortColumn === "Status")("desc", ctx_r1.sortColumn === "Status" && ctx_r1.sortDirection === "desc");
381
392
  i0.ɵɵadvance(4);
382
- i0.ɵɵclassProp("sorted", ctx_r0.sortColumn === "Parameters")("desc", ctx_r0.sortColumn === "Parameters" && ctx_r0.sortDirection === "desc");
393
+ i0.ɵɵclassProp("sorted", ctx_r1.sortColumn === "Parameters")("desc", ctx_r1.sortColumn === "Parameters" && ctx_r1.sortDirection === "desc");
383
394
  i0.ɵɵadvance(4);
384
- i0.ɵɵclassProp("sorted", ctx_r0.sortColumn === "Updated")("desc", ctx_r0.sortColumn === "Updated" && ctx_r0.sortDirection === "desc");
395
+ i0.ɵɵclassProp("sorted", ctx_r1.sortColumn === "Updated")("desc", ctx_r1.sortColumn === "Updated" && ctx_r1.sortDirection === "desc");
385
396
  i0.ɵɵadvance(7);
386
- i0.ɵɵrepeater(ctx_r0.filteredConfigurations);
397
+ i0.ɵɵrepeater(ctx_r1.filteredConfigurations);
387
398
  } }
388
- function SystemConfigurationComponent_Conditional_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
389
- i0.ɵɵconditionalCreate(0, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_0_Template, 3, 0, "div", 30);
390
- i0.ɵɵconditionalCreate(1, SystemConfigurationComponent_Conditional_29_Conditional_1_Conditional_1_Template, 25, 16, "div", 31);
399
+ function SystemConfigurationComponent_Conditional_28_Conditional_1_Template(rf, ctx) { if (rf & 1) {
400
+ i0.ɵɵconditionalCreate(0, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_0_Template, 3, 0, "div", 29);
401
+ i0.ɵɵconditionalCreate(1, SystemConfigurationComponent_Conditional_28_Conditional_1_Conditional_1_Template, 25, 16, "div", 30);
391
402
  } if (rf & 2) {
392
- const ctx_r0 = i0.ɵɵnextContext(2);
393
- i0.ɵɵconditional(ctx_r0.viewMode === "grid" ? 0 : -1);
403
+ const ctx_r1 = i0.ɵɵnextContext(2);
404
+ i0.ɵɵconditional(ctx_r1.viewMode === "grid" ? 0 : -1);
394
405
  i0.ɵɵadvance();
395
- i0.ɵɵconditional(ctx_r0.viewMode === "list" ? 1 : -1);
406
+ i0.ɵɵconditional(ctx_r1.viewMode === "list" ? 1 : -1);
396
407
  } }
397
- function SystemConfigurationComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
398
- i0.ɵɵconditionalCreate(0, SystemConfigurationComponent_Conditional_29_Conditional_0_Template, 6, 0, "div", 29)(1, SystemConfigurationComponent_Conditional_29_Conditional_1_Template, 2, 2);
408
+ function SystemConfigurationComponent_Conditional_28_Template(rf, ctx) { if (rf & 1) {
409
+ i0.ɵɵconditionalCreate(0, SystemConfigurationComponent_Conditional_28_Conditional_0_Template, 6, 0, "div", 28)(1, SystemConfigurationComponent_Conditional_28_Conditional_1_Template, 2, 2);
399
410
  } if (rf & 2) {
400
- const ctx_r0 = i0.ɵɵnextContext();
401
- i0.ɵɵconditional(ctx_r0.filteredConfigurations.length === 0 ? 0 : 1);
411
+ const ctx_r1 = i0.ɵɵnextContext();
412
+ i0.ɵɵconditional(ctx_r1.filteredConfigurations.length === 0 ? 0 : 1);
402
413
  } }
403
- function SystemConfigurationComponent_Conditional_30_Template(rf, ctx) { if (rf & 1) {
404
- const _r11 = i0.ɵɵgetCurrentView();
405
- i0.ɵɵelementStart(0, "div", 96);
406
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_30_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeDetailPanel()); });
414
+ function SystemConfigurationComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
415
+ const _r12 = i0.ɵɵgetCurrentView();
416
+ i0.ɵɵelementStart(0, "div", 95);
417
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_29_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
407
418
  i0.ɵɵelementEnd();
408
419
  } }
409
- function SystemConfigurationComponent_Conditional_32_Conditional_17_Template(rf, ctx) { if (rf & 1) {
410
- i0.ɵɵelementStart(0, "span", 107);
411
- i0.ɵɵelement(1, "i", 52);
420
+ function SystemConfigurationComponent_Conditional_31_Conditional_17_Template(rf, ctx) { if (rf & 1) {
421
+ i0.ɵɵelementStart(0, "span", 106);
422
+ i0.ɵɵelement(1, "i", 51);
412
423
  i0.ɵɵtext(2, " Default Configuration ");
413
424
  i0.ɵɵelementEnd();
414
425
  } }
415
- function SystemConfigurationComponent_Conditional_32_Conditional_18_Template(rf, ctx) { if (rf & 1) {
416
- i0.ɵɵelementStart(0, "div", 105)(1, "h4", 108);
417
- i0.ɵɵelement(2, "i", 119);
426
+ function SystemConfigurationComponent_Conditional_31_Conditional_18_Template(rf, ctx) { if (rf & 1) {
427
+ i0.ɵɵelementStart(0, "div", 104)(1, "h4", 107);
428
+ i0.ɵɵelement(2, "i", 118);
418
429
  i0.ɵɵtext(3, " Description ");
419
430
  i0.ɵɵelementEnd();
420
- i0.ɵɵelementStart(4, "p", 120);
431
+ i0.ɵɵelementStart(4, "p", 119);
421
432
  i0.ɵɵtext(5);
422
433
  i0.ɵɵelementEnd()();
423
434
  } if (rf & 2) {
424
- const ctx_r0 = i0.ɵɵnextContext(2);
435
+ const ctx_r1 = i0.ɵɵnextContext(2);
425
436
  i0.ɵɵadvance(5);
426
- i0.ɵɵtextInterpolate(ctx_r0.selectedConfig.Description);
437
+ i0.ɵɵtextInterpolate(ctx_r1.selectedConfig.Description);
427
438
  } }
428
- function SystemConfigurationComponent_Conditional_32_Conditional_43_Template(rf, ctx) { if (rf & 1) {
439
+ function SystemConfigurationComponent_Conditional_31_Conditional_43_Template(rf, ctx) { if (rf & 1) {
429
440
  i0.ɵɵtext(0);
430
441
  } if (rf & 2) {
431
- const ctx_r0 = i0.ɵɵnextContext(2);
432
- i0.ɵɵtextInterpolate1(" ", ctx_r0.selectedConfig.compressionPrompt.Name, " ");
442
+ const ctx_r1 = i0.ɵɵnextContext(2);
443
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedConfig.compressionPrompt.Name, " ");
433
444
  } }
434
- function SystemConfigurationComponent_Conditional_32_Conditional_44_Template(rf, ctx) { if (rf & 1) {
435
- i0.ɵɵelementStart(0, "span", 115);
445
+ function SystemConfigurationComponent_Conditional_31_Conditional_44_Template(rf, ctx) { if (rf & 1) {
446
+ i0.ɵɵelementStart(0, "span", 114);
436
447
  i0.ɵɵtext(1, "Not configured");
437
448
  i0.ɵɵelementEnd();
438
449
  } }
439
- function SystemConfigurationComponent_Conditional_32_Conditional_49_Template(rf, ctx) { if (rf & 1) {
450
+ function SystemConfigurationComponent_Conditional_31_Conditional_49_Template(rf, ctx) { if (rf & 1) {
440
451
  i0.ɵɵtext(0);
441
452
  } if (rf & 2) {
442
- const ctx_r0 = i0.ɵɵnextContext(2);
443
- i0.ɵɵtextInterpolate1(" ", ctx_r0.selectedConfig.summarizationPrompt.Name, " ");
453
+ const ctx_r1 = i0.ɵɵnextContext(2);
454
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedConfig.summarizationPrompt.Name, " ");
444
455
  } }
445
- function SystemConfigurationComponent_Conditional_32_Conditional_50_Template(rf, ctx) { if (rf & 1) {
446
- i0.ɵɵelementStart(0, "span", 115);
456
+ function SystemConfigurationComponent_Conditional_31_Conditional_50_Template(rf, ctx) { if (rf & 1) {
457
+ i0.ɵɵelementStart(0, "span", 114);
447
458
  i0.ɵɵtext(1, "Not configured");
448
459
  i0.ɵɵelementEnd();
449
460
  } }
450
- function SystemConfigurationComponent_Conditional_32_Conditional_51_For_6_Template(rf, ctx) { if (rf & 1) {
451
- i0.ɵɵelementStart(0, "div", 122)(1, "div", 77);
461
+ function SystemConfigurationComponent_Conditional_31_Conditional_51_For_6_Template(rf, ctx) { if (rf & 1) {
462
+ i0.ɵɵelementStart(0, "div", 121)(1, "div", 76);
452
463
  i0.ɵɵelement(2, "i");
453
- i0.ɵɵelementStart(3, "span", 80);
464
+ i0.ɵɵelementStart(3, "span", 79);
454
465
  i0.ɵɵtext(4);
455
466
  i0.ɵɵelementEnd()();
456
- i0.ɵɵelementStart(5, "span", 82);
467
+ i0.ɵɵelementStart(5, "span", 81);
457
468
  i0.ɵɵtext(6);
458
469
  i0.ɵɵelementEnd()();
459
470
  } if (rf & 2) {
460
- const param_r13 = ctx.$implicit;
461
- const ctx_r0 = i0.ɵɵnextContext(3);
471
+ const param_r14 = ctx.$implicit;
472
+ const ctx_r1 = i0.ɵɵnextContext(3);
462
473
  i0.ɵɵadvance(2);
463
- i0.ɵɵclassMap(ctx_r0.getParamTypeIcon(param_r13.Type));
474
+ i0.ɵɵclassMap(ctx_r1.getParamTypeIcon(param_r14.Type));
464
475
  i0.ɵɵadvance(2);
465
- i0.ɵɵtextInterpolate(param_r13.Name);
476
+ i0.ɵɵtextInterpolate(param_r14.Name);
466
477
  i0.ɵɵadvance(2);
467
- i0.ɵɵtextInterpolate(ctx_r0.formatParamValue(param_r13));
478
+ i0.ɵɵtextInterpolate(ctx_r1.formatParamValue(param_r14));
468
479
  } }
469
- function SystemConfigurationComponent_Conditional_32_Conditional_51_Conditional_7_Template(rf, ctx) { if (rf & 1) {
470
- i0.ɵɵelementStart(0, "div", 123);
480
+ function SystemConfigurationComponent_Conditional_31_Conditional_51_Conditional_7_Template(rf, ctx) { if (rf & 1) {
481
+ i0.ɵɵelementStart(0, "div", 122);
471
482
  i0.ɵɵtext(1);
472
483
  i0.ɵɵelementEnd();
473
484
  } if (rf & 2) {
474
- const ctx_r0 = i0.ɵɵnextContext(3);
485
+ const ctx_r1 = i0.ɵɵnextContext(3);
475
486
  i0.ɵɵadvance();
476
- i0.ɵɵtextInterpolate1(" +", ctx_r0.selectedConfig.params.length - 5, " more parameters ");
487
+ i0.ɵɵtextInterpolate1(" +", ctx_r1.selectedConfig.params.length - 5, " more parameters ");
477
488
  } }
478
- function SystemConfigurationComponent_Conditional_32_Conditional_51_Template(rf, ctx) { if (rf & 1) {
479
- i0.ɵɵelementStart(0, "div", 105)(1, "h4", 108);
480
- i0.ɵɵelement(2, "i", 73);
489
+ function SystemConfigurationComponent_Conditional_31_Conditional_51_Template(rf, ctx) { if (rf & 1) {
490
+ i0.ɵɵelementStart(0, "div", 104)(1, "h4", 107);
491
+ i0.ɵɵelement(2, "i", 72);
481
492
  i0.ɵɵtext(3);
482
493
  i0.ɵɵelementEnd();
483
- i0.ɵɵelementStart(4, "div", 121);
484
- i0.ɵɵrepeaterCreate(5, SystemConfigurationComponent_Conditional_32_Conditional_51_For_6_Template, 7, 4, "div", 122, _forTrack0);
485
- i0.ɵɵconditionalCreate(7, SystemConfigurationComponent_Conditional_32_Conditional_51_Conditional_7_Template, 2, 1, "div", 123);
494
+ i0.ɵɵelementStart(4, "div", 120);
495
+ i0.ɵɵrepeaterCreate(5, SystemConfigurationComponent_Conditional_31_Conditional_51_For_6_Template, 7, 4, "div", 121, _forTrack0);
496
+ i0.ɵɵconditionalCreate(7, SystemConfigurationComponent_Conditional_31_Conditional_51_Conditional_7_Template, 2, 1, "div", 122);
486
497
  i0.ɵɵelementEnd()();
487
498
  } if (rf & 2) {
488
- const ctx_r0 = i0.ɵɵnextContext(2);
499
+ const ctx_r1 = i0.ɵɵnextContext(2);
489
500
  i0.ɵɵadvance(3);
490
- i0.ɵɵtextInterpolate1(" Parameters (", ctx_r0.selectedConfig.params.length, ") ");
501
+ i0.ɵɵtextInterpolate1(" Parameters (", ctx_r1.selectedConfig.params.length, ") ");
491
502
  i0.ɵɵadvance(2);
492
- i0.ɵɵrepeater(ctx_r0.selectedConfig.params.slice(0, 5));
503
+ i0.ɵɵrepeater(ctx_r1.selectedConfig.params.slice(0, 5));
493
504
  i0.ɵɵadvance(2);
494
- i0.ɵɵconditional(ctx_r0.selectedConfig.params.length > 5 ? 7 : -1);
505
+ i0.ɵɵconditional(ctx_r1.selectedConfig.params.length > 5 ? 7 : -1);
495
506
  } }
496
- function SystemConfigurationComponent_Conditional_32_Template(rf, ctx) { if (rf & 1) {
497
- const _r12 = i0.ɵɵgetCurrentView();
498
- i0.ɵɵelementStart(0, "div", 97)(1, "div", 98)(2, "div", 99);
507
+ function SystemConfigurationComponent_Conditional_31_Template(rf, ctx) { if (rf & 1) {
508
+ const _r13 = i0.ɵɵgetCurrentView();
509
+ i0.ɵɵelementStart(0, "div", 96)(1, "div", 97)(2, "div", 98);
499
510
  i0.ɵɵelement(3, "i", 4);
500
511
  i0.ɵɵelementEnd();
501
- i0.ɵɵelementStart(4, "div", 100)(5, "h3");
512
+ i0.ɵɵelementStart(4, "div", 99)(5, "h3");
502
513
  i0.ɵɵtext(6);
503
514
  i0.ɵɵelementEnd();
504
- i0.ɵɵelementStart(7, "span", 101);
515
+ i0.ɵɵelementStart(7, "span", 100);
505
516
  i0.ɵɵtext(8, "AI Configuration");
506
517
  i0.ɵɵelementEnd()()();
507
- i0.ɵɵelementStart(9, "button", 102);
508
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_32_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.closeDetailPanel()); });
509
- i0.ɵɵelement(10, "i", 103);
518
+ i0.ɵɵelementStart(9, "button", 101);
519
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_31_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeDetailPanel()); });
520
+ i0.ɵɵelement(10, "i", 102);
510
521
  i0.ɵɵelementEnd()();
511
- i0.ɵɵelementStart(11, "div", 104)(12, "div", 105)(13, "div", 106)(14, "span", 41);
522
+ i0.ɵɵelementStart(11, "div", 103)(12, "div", 104)(13, "div", 105)(14, "span", 40);
512
523
  i0.ɵɵelement(15, "i");
513
524
  i0.ɵɵtext(16);
514
525
  i0.ɵɵelementEnd();
515
- i0.ɵɵconditionalCreate(17, SystemConfigurationComponent_Conditional_32_Conditional_17_Template, 3, 0, "span", 107);
526
+ i0.ɵɵconditionalCreate(17, SystemConfigurationComponent_Conditional_31_Conditional_17_Template, 3, 0, "span", 106);
516
527
  i0.ɵɵelementEnd()();
517
- i0.ɵɵconditionalCreate(18, SystemConfigurationComponent_Conditional_32_Conditional_18_Template, 6, 1, "div", 105);
518
- i0.ɵɵelementStart(19, "div", 105)(20, "h4", 108);
519
- i0.ɵɵelement(21, "i", 109);
528
+ i0.ɵɵconditionalCreate(18, SystemConfigurationComponent_Conditional_31_Conditional_18_Template, 6, 1, "div", 104);
529
+ i0.ɵɵelementStart(19, "div", 104)(20, "h4", 107);
530
+ i0.ɵɵelement(21, "i", 108);
520
531
  i0.ɵɵtext(22, " Overview ");
521
532
  i0.ɵɵelementEnd();
522
- i0.ɵɵelementStart(23, "div", 110)(24, "div", 111)(25, "span", 112);
533
+ i0.ɵɵelementStart(23, "div", 109)(24, "div", 110)(25, "span", 111);
523
534
  i0.ɵɵtext(26, "Parameters");
524
535
  i0.ɵɵelementEnd();
525
- i0.ɵɵelementStart(27, "span", 113);
536
+ i0.ɵɵelementStart(27, "span", 112);
526
537
  i0.ɵɵtext(28);
527
538
  i0.ɵɵelementEnd()();
528
- i0.ɵɵelementStart(29, "div", 111)(30, "span", 112);
539
+ i0.ɵɵelementStart(29, "div", 110)(30, "span", 111);
529
540
  i0.ɵɵtext(31, "Status");
530
541
  i0.ɵɵelementEnd();
531
- i0.ɵɵelementStart(32, "span", 113);
542
+ i0.ɵɵelementStart(32, "span", 112);
532
543
  i0.ɵɵtext(33);
533
544
  i0.ɵɵelementEnd()()()();
534
- i0.ɵɵelementStart(34, "div", 105)(35, "h4", 108);
535
- i0.ɵɵelement(36, "i", 59);
545
+ i0.ɵɵelementStart(34, "div", 104)(35, "h4", 107);
546
+ i0.ɵɵelement(36, "i", 58);
536
547
  i0.ɵɵtext(37, " Linked Prompts ");
537
548
  i0.ɵɵelementEnd();
538
- i0.ɵɵelementStart(38, "div", 114)(39, "div", 111)(40, "span", 112);
549
+ i0.ɵɵelementStart(38, "div", 113)(39, "div", 110)(40, "span", 111);
539
550
  i0.ɵɵtext(41, "Context Compression");
540
551
  i0.ɵɵelementEnd();
541
- i0.ɵɵelementStart(42, "span", 113);
542
- i0.ɵɵconditionalCreate(43, SystemConfigurationComponent_Conditional_32_Conditional_43_Template, 1, 1)(44, SystemConfigurationComponent_Conditional_32_Conditional_44_Template, 2, 0, "span", 115);
552
+ i0.ɵɵelementStart(42, "span", 112);
553
+ i0.ɵɵconditionalCreate(43, SystemConfigurationComponent_Conditional_31_Conditional_43_Template, 1, 1)(44, SystemConfigurationComponent_Conditional_31_Conditional_44_Template, 2, 0, "span", 114);
543
554
  i0.ɵɵelementEnd()();
544
- i0.ɵɵelementStart(45, "div", 111)(46, "span", 112);
555
+ i0.ɵɵelementStart(45, "div", 110)(46, "span", 111);
545
556
  i0.ɵɵtext(47, "Context Summarization");
546
557
  i0.ɵɵelementEnd();
547
- i0.ɵɵelementStart(48, "span", 113);
548
- i0.ɵɵconditionalCreate(49, SystemConfigurationComponent_Conditional_32_Conditional_49_Template, 1, 1)(50, SystemConfigurationComponent_Conditional_32_Conditional_50_Template, 2, 0, "span", 115);
558
+ i0.ɵɵelementStart(48, "span", 112);
559
+ i0.ɵɵconditionalCreate(49, SystemConfigurationComponent_Conditional_31_Conditional_49_Template, 1, 1)(50, SystemConfigurationComponent_Conditional_31_Conditional_50_Template, 2, 0, "span", 114);
549
560
  i0.ɵɵelementEnd()()()();
550
- i0.ɵɵconditionalCreate(51, SystemConfigurationComponent_Conditional_32_Conditional_51_Template, 8, 2, "div", 105);
551
- i0.ɵɵelementStart(52, "div", 105)(53, "h4", 108);
552
- i0.ɵɵelement(54, "i", 116);
561
+ i0.ɵɵconditionalCreate(51, SystemConfigurationComponent_Conditional_31_Conditional_51_Template, 8, 2, "div", 104);
562
+ i0.ɵɵelementStart(52, "div", 104)(53, "h4", 107);
563
+ i0.ɵɵelement(54, "i", 115);
553
564
  i0.ɵɵtext(55, " Timestamps ");
554
565
  i0.ɵɵelementEnd();
555
- i0.ɵɵelementStart(56, "div", 110)(57, "div", 111)(58, "span", 112);
566
+ i0.ɵɵelementStart(56, "div", 109)(57, "div", 110)(58, "span", 111);
556
567
  i0.ɵɵtext(59, "Created");
557
568
  i0.ɵɵelementEnd();
558
- i0.ɵɵelementStart(60, "span", 113);
569
+ i0.ɵɵelementStart(60, "span", 112);
559
570
  i0.ɵɵtext(61);
560
571
  i0.ɵɵelementEnd()();
561
- i0.ɵɵelementStart(62, "div", 111)(63, "span", 112);
572
+ i0.ɵɵelementStart(62, "div", 110)(63, "span", 111);
562
573
  i0.ɵɵtext(64, "Updated");
563
574
  i0.ɵɵelementEnd();
564
- i0.ɵɵelementStart(65, "span", 113);
575
+ i0.ɵɵelementStart(65, "span", 112);
565
576
  i0.ɵɵtext(66);
566
577
  i0.ɵɵelementEnd()()()()();
567
- i0.ɵɵelementStart(67, "div", 117)(68, "button", 118);
568
- i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_32_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r12); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.openConfigFromPanel()); });
569
- i0.ɵɵelement(69, "i", 51);
578
+ i0.ɵɵelementStart(67, "div", 116)(68, "button", 117);
579
+ i0.ɵɵlistener("click", function SystemConfigurationComponent_Conditional_31_Template_button_click_68_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openConfigFromPanel()); });
580
+ i0.ɵɵelement(69, "i", 50);
570
581
  i0.ɵɵtext(70, " Open Full Record ");
571
582
  i0.ɵɵelementEnd()();
572
583
  } if (rf & 2) {
573
- const ctx_r0 = i0.ɵɵnextContext();
584
+ const ctx_r1 = i0.ɵɵnextContext();
574
585
  i0.ɵɵadvance(6);
575
- i0.ɵɵtextInterpolate(ctx_r0.selectedConfig.Name);
586
+ i0.ɵɵtextInterpolate(ctx_r1.selectedConfig.Name);
576
587
  i0.ɵɵadvance(8);
577
- i0.ɵɵproperty("ngClass", ctx_r0.getStatusClass(ctx_r0.selectedConfig.Status));
588
+ i0.ɵɵproperty("ngClass", ctx_r1.getStatusClass(ctx_r1.selectedConfig.Status));
578
589
  i0.ɵɵadvance();
579
- i0.ɵɵclassMap(ctx_r0.getStatusIcon(ctx_r0.selectedConfig.Status));
590
+ i0.ɵɵclassMap(ctx_r1.getStatusIcon(ctx_r1.selectedConfig.Status));
580
591
  i0.ɵɵadvance();
581
- i0.ɵɵtextInterpolate1(" ", ctx_r0.selectedConfig.Status, " ");
592
+ i0.ɵɵtextInterpolate1(" ", ctx_r1.selectedConfig.Status, " ");
582
593
  i0.ɵɵadvance();
583
- i0.ɵɵconditional(ctx_r0.selectedConfig.IsDefault ? 17 : -1);
594
+ i0.ɵɵconditional(ctx_r1.selectedConfig.IsDefault ? 17 : -1);
584
595
  i0.ɵɵadvance();
585
- i0.ɵɵconditional(ctx_r0.selectedConfig.Description ? 18 : -1);
596
+ i0.ɵɵconditional(ctx_r1.selectedConfig.Description ? 18 : -1);
586
597
  i0.ɵɵadvance(10);
587
- i0.ɵɵtextInterpolate((ctx_r0.selectedConfig.params == null ? null : ctx_r0.selectedConfig.params.length) || 0);
598
+ i0.ɵɵtextInterpolate((ctx_r1.selectedConfig.params == null ? null : ctx_r1.selectedConfig.params.length) || 0);
588
599
  i0.ɵɵadvance(5);
589
- i0.ɵɵtextInterpolate(ctx_r0.selectedConfig.Status);
600
+ i0.ɵɵtextInterpolate(ctx_r1.selectedConfig.Status);
590
601
  i0.ɵɵadvance(10);
591
- i0.ɵɵconditional(ctx_r0.selectedConfig.compressionPrompt ? 43 : 44);
602
+ i0.ɵɵconditional(ctx_r1.selectedConfig.compressionPrompt ? 43 : 44);
592
603
  i0.ɵɵadvance(6);
593
- i0.ɵɵconditional(ctx_r0.selectedConfig.summarizationPrompt ? 49 : 50);
604
+ i0.ɵɵconditional(ctx_r1.selectedConfig.summarizationPrompt ? 49 : 50);
594
605
  i0.ɵɵadvance(2);
595
- i0.ɵɵconditional(ctx_r0.selectedConfig.params && ctx_r0.selectedConfig.params.length > 0 ? 51 : -1);
606
+ i0.ɵɵconditional(ctx_r1.selectedConfig.params && ctx_r1.selectedConfig.params.length > 0 ? 51 : -1);
596
607
  i0.ɵɵadvance(10);
597
- i0.ɵɵtextInterpolate(ctx_r0.formatDate(ctx_r0.selectedConfig.__mj_CreatedAt));
608
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.selectedConfig.__mj_CreatedAt));
598
609
  i0.ɵɵadvance(5);
599
- i0.ɵɵtextInterpolate(ctx_r0.formatDate(ctx_r0.selectedConfig.__mj_UpdatedAt));
610
+ i0.ɵɵtextInterpolate(ctx_r1.formatDate(ctx_r1.selectedConfig.__mj_UpdatedAt));
600
611
  } }
601
612
  /**
602
613
  * AI Configuration Resource - displays AI system configuration management
@@ -888,7 +899,7 @@ let SystemConfigurationComponent = class SystemConfigurationComponent extends Ba
888
899
  return 'fa-solid fa-sliders';
889
900
  }
890
901
  static ɵfac = function SystemConfigurationComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || SystemConfigurationComponent)(i0.ɵɵdirectiveInject(i1.NavigationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
891
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SystemConfigurationComponent, selectors: [["app-system-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 33, vars: 27, consts: [[1, "system-configuration-container"], [1, "dashboard-header"], [1, "header-info"], [1, "dashboard-title"], [1, "fa-solid", "fa-sliders"], ["type", "button", "title", "Toggle Filters", 1, "filter-toggle-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "config-count"], [1, "header-controls"], [1, "view-toggle"], ["type", "button", "title", "Grid View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-grid-2"], ["type", "button", "title", "List View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-list"], ["type", "button", "title", "Refresh", 1, "control-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "main-content"], ["orientation", "horizontal", 1, "main-splitter"], [3, "size", "collapsible", "resizable", "scrollable", "hidden"], [3, "filtersChange", "filterChange", "resetFilters", "closePanel", "configurations", "filteredConfigurations", "filters"], [3, "resizable", "scrollable"], [1, "configurations-content"], [1, "loading-container"], [1, "error-container"], [1, "detail-panel-overlay"], [1, "detail-panel"], ["text", "Loading AI configurations...", "size", "large"], [1, "error-message"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "empty-state"], [1, "configurations-grid"], [1, "configurations-list"], [1, "config-card", 3, "expanded"], [1, "config-card"], [1, "card-header", 3, "click"], [1, "config-info"], [1, "config-icon"], [1, "config-details"], [1, "config-name"], [1, "config-meta"], [1, "default-badge"], [1, "status-badge", 3, "ngClass"], [1, "fa-solid", "fa-chevron-down", "expand-icon"], [1, "card-body"], [1, "config-description"], [1, "config-description", "text-muted"], [1, "expanded-content"], [1, "card-actions", 3, "click"], ["type", "button", "title", "View Details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["type", "button", 1, "action-btn", "action-btn-primary", 3, "click"], [1, "fa-solid", "fa-edit"], [1, "fa-solid", "fa-star"], [1, "config-stats"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "prompts-section"], [1, "section-title"], [1, "fa-solid", "fa-message-lines"], [1, "prompt-links"], [1, "prompt-link"], [1, "no-prompt"], [1, "params-section"], [1, "prompt-link", 3, "click"], [1, "prompt-link-info"], [1, "prompt-link-icon"], [1, "fa-solid", "fa-compress"], [1, "prompt-link-details"], [1, "prompt-link-label"], [1, "prompt-link-name"], [1, "fa-solid", "fa-arrow-right", "prompt-link-arrow"], [1, "fa-solid", "fa-file-lines"], [1, "fa-solid", "fa-gear"], [1, "params-grid"], [1, "param-item"], [1, "param-item", 3, "click"], [1, "param-info"], [1, "param-type-icon"], [1, "param-details"], [1, "param-name"], [1, "param-type"], [1, "param-value"], [1, "no-params"], [1, "configurations-table"], [3, "click"], [1, "sort-header"], [1, "fa-solid", "fa-chevron-up", "sort-icon"], [1, "config-name-cell"], [1, "config-icon-small"], [1, "config-name-text"], [1, "default-badge", 2, "margin-left", "8px"], [1, "config-description-small"], [1, "table-actions"], ["type", "button", "title", "View Details", 1, "action-btn-small", 3, "click"], ["type", "button", 1, "action-btn-small", "primary", 3, "click"], [1, "detail-panel-overlay", 3, "click"], [1, "detail-panel-header"], [1, "detail-panel-title"], [1, "detail-icon"], [1, "detail-title-info"], [1, "detail-subtitle"], [1, "detail-panel-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-panel-content"], [1, "detail-section"], [1, "detail-badges"], [1, "feature-badge", "default"], [1, "detail-section-title"], [1, "fa-solid", "fa-chart-bar"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "detail-grid", "single-column"], [1, "muted"], [1, "fa-solid", "fa-clock"], [1, "detail-panel-actions"], ["type", "button", 1, "detail-action-btn", "primary", 3, "click"], [1, "fa-solid", "fa-align-left"], [1, "detail-description"], [1, "detail-params-list"], [1, "detail-param-item"], [1, "params-more"]], template: function SystemConfigurationComponent_Template(rf, ctx) { if (rf & 1) {
902
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SystemConfigurationComponent, selectors: [["app-system-configuration"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 32, vars: 18, consts: [[1, "system-configuration-container"], [1, "dashboard-header"], [1, "header-info"], [1, "dashboard-title"], [1, "fa-solid", "fa-sliders"], ["type", "button", "title", "Toggle Filters", 1, "filter-toggle-btn", 3, "click"], [1, "fa-solid", "fa-filter"], [1, "config-count"], [1, "header-controls"], [1, "view-toggle"], ["type", "button", "title", "Grid View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-grid-2"], ["type", "button", "title", "List View", 1, "view-btn", 3, "click"], [1, "fa-solid", "fa-list"], ["type", "button", "title", "Refresh", 1, "control-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-refresh"], [1, "main-content"], ["direction", "horizontal", 1, "main-splitter"], [3, "size", "minSize", "maxSize"], [1, "configurations-content"], [1, "loading-container"], [1, "error-container"], [1, "detail-panel-overlay"], [1, "detail-panel"], [3, "filtersChange", "filterChange", "resetFilters", "closePanel", "configurations", "filteredConfigurations", "filters"], ["text", "Loading AI configurations...", "size", "large"], [1, "error-message"], [1, "fa-solid", "fa-exclamation-triangle"], [1, "empty-state"], [1, "configurations-grid"], [1, "configurations-list"], [1, "config-card", 3, "expanded"], [1, "config-card"], [1, "card-header", 3, "click"], [1, "config-info"], [1, "config-icon"], [1, "config-details"], [1, "config-name"], [1, "config-meta"], [1, "default-badge"], [1, "status-badge", 3, "ngClass"], [1, "fa-solid", "fa-chevron-down", "expand-icon"], [1, "card-body"], [1, "config-description"], [1, "config-description", "text-muted"], [1, "expanded-content"], [1, "card-actions", 3, "click"], ["type", "button", "title", "View Details", 1, "action-btn", 3, "click"], [1, "fa-solid", "fa-eye"], ["type", "button", 1, "action-btn", "action-btn-primary", 3, "click"], [1, "fa-solid", "fa-edit"], [1, "fa-solid", "fa-star"], [1, "config-stats"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "prompts-section"], [1, "section-title"], [1, "fa-solid", "fa-message-lines"], [1, "prompt-links"], [1, "prompt-link"], [1, "no-prompt"], [1, "params-section"], [1, "prompt-link", 3, "click"], [1, "prompt-link-info"], [1, "prompt-link-icon"], [1, "fa-solid", "fa-compress"], [1, "prompt-link-details"], [1, "prompt-link-label"], [1, "prompt-link-name"], [1, "fa-solid", "fa-arrow-right", "prompt-link-arrow"], [1, "fa-solid", "fa-file-lines"], [1, "fa-solid", "fa-gear"], [1, "params-grid"], [1, "param-item"], [1, "param-item", 3, "click"], [1, "param-info"], [1, "param-type-icon"], [1, "param-details"], [1, "param-name"], [1, "param-type"], [1, "param-value"], [1, "no-params"], [1, "configurations-table"], [3, "click"], [1, "sort-header"], [1, "fa-solid", "fa-chevron-up", "sort-icon"], [1, "config-name-cell"], [1, "config-icon-small"], [1, "config-name-text"], [1, "default-badge", 2, "margin-left", "8px"], [1, "config-description-small"], [1, "table-actions"], ["type", "button", "title", "View Details", 1, "action-btn-small", 3, "click"], ["type", "button", 1, "action-btn-small", "primary", 3, "click"], [1, "detail-panel-overlay", 3, "click"], [1, "detail-panel-header"], [1, "detail-panel-title"], [1, "detail-icon"], [1, "detail-title-info"], [1, "detail-subtitle"], [1, "detail-panel-close", 3, "click"], [1, "fa-solid", "fa-times"], [1, "detail-panel-content"], [1, "detail-section"], [1, "detail-badges"], [1, "feature-badge", "default"], [1, "detail-section-title"], [1, "fa-solid", "fa-chart-bar"], [1, "detail-grid"], [1, "detail-item"], [1, "detail-label"], [1, "detail-value"], [1, "detail-grid", "single-column"], [1, "muted"], [1, "fa-solid", "fa-clock"], [1, "detail-panel-actions"], ["type", "button", 1, "detail-action-btn", "primary", 3, "click"], [1, "fa-solid", "fa-align-left"], [1, "detail-description"], [1, "detail-params-list"], [1, "detail-param-item"], [1, "params-more"]], template: function SystemConfigurationComponent_Template(rf, ctx) { if (rf & 1) {
892
903
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h2", 3);
893
904
  i0.ɵɵelement(4, "i", 4);
894
905
  i0.ɵɵtext(5, " AI Configuration ");
@@ -914,17 +925,16 @@ let SystemConfigurationComponent = class SystemConfigurationComponent extends Ba
914
925
  i0.ɵɵelement(19, "i", 15);
915
926
  i0.ɵɵtext(20, " Refresh ");
916
927
  i0.ɵɵelementEnd()()();
917
- i0.ɵɵelementStart(21, "div", 16)(22, "kendo-splitter", 17)(23, "kendo-splitter-pane", 18)(24, "mj-system-config-filter-panel", 19);
918
- i0.ɵɵlistener("filtersChange", function SystemConfigurationComponent_Template_mj_system_config_filter_panel_filtersChange_24_listener($event) { return ctx.onFiltersChange($event); })("filterChange", function SystemConfigurationComponent_Template_mj_system_config_filter_panel_filterChange_24_listener() { return ctx.onFilterChange(); })("resetFilters", function SystemConfigurationComponent_Template_mj_system_config_filter_panel_resetFilters_24_listener() { return ctx.onResetFilters(); })("closePanel", function SystemConfigurationComponent_Template_mj_system_config_filter_panel_closePanel_24_listener() { return ctx.toggleFilterPanel(); });
919
- i0.ɵɵelementEnd()();
920
- i0.ɵɵelementStart(25, "kendo-splitter-pane", 20)(26, "div", 21);
921
- i0.ɵɵconditionalCreate(27, SystemConfigurationComponent_Conditional_27_Template, 2, 0, "div", 22);
922
- i0.ɵɵconditionalCreate(28, SystemConfigurationComponent_Conditional_28_Template, 4, 1, "div", 23);
923
- i0.ɵɵconditionalCreate(29, SystemConfigurationComponent_Conditional_29_Template, 2, 1);
928
+ i0.ɵɵelementStart(21, "div", 16)(22, "as-split", 17);
929
+ i0.ɵɵconditionalCreate(23, SystemConfigurationComponent_Conditional_23_Template, 2, 6, "as-split-area", 18);
930
+ i0.ɵɵelementStart(24, "as-split-area")(25, "div", 19);
931
+ i0.ɵɵconditionalCreate(26, SystemConfigurationComponent_Conditional_26_Template, 2, 0, "div", 20);
932
+ i0.ɵɵconditionalCreate(27, SystemConfigurationComponent_Conditional_27_Template, 4, 1, "div", 21);
933
+ i0.ɵɵconditionalCreate(28, SystemConfigurationComponent_Conditional_28_Template, 2, 1);
924
934
  i0.ɵɵelementEnd()()()();
925
- i0.ɵɵconditionalCreate(30, SystemConfigurationComponent_Conditional_30_Template, 1, 0, "div", 24);
926
- i0.ɵɵelementStart(31, "div", 25);
927
- i0.ɵɵconditionalCreate(32, SystemConfigurationComponent_Conditional_32_Template, 71, 14);
935
+ i0.ɵɵconditionalCreate(29, SystemConfigurationComponent_Conditional_29_Template, 1, 0, "div", 22);
936
+ i0.ɵɵelementStart(30, "div", 23);
937
+ i0.ɵɵconditionalCreate(31, SystemConfigurationComponent_Conditional_31_Template, 71, 14);
928
938
  i0.ɵɵelementEnd()();
929
939
  } if (rf & 2) {
930
940
  i0.ɵɵadvance(8);
@@ -940,24 +950,20 @@ let SystemConfigurationComponent = class SystemConfigurationComponent extends Ba
940
950
  i0.ɵɵadvance();
941
951
  i0.ɵɵclassProp("fa-spin", ctx.isLoading);
942
952
  i0.ɵɵadvance(4);
943
- i0.ɵɵproperty("size", ctx.filterPanelVisible ? "320px" : "0px")("collapsible", false)("resizable", ctx.filterPanelVisible)("scrollable", false)("hidden", !ctx.filterPanelVisible);
944
- i0.ɵɵadvance();
945
- i0.ɵɵproperty("configurations", ctx.configurations)("filteredConfigurations", ctx.filteredConfigurations)("filters", ctx.currentFilters);
946
- i0.ɵɵadvance();
947
- i0.ɵɵproperty("resizable", true)("scrollable", false);
948
- i0.ɵɵadvance(2);
949
- i0.ɵɵconditional(ctx.isLoading ? 27 : -1);
953
+ i0.ɵɵconditional(ctx.filterPanelVisible ? 23 : -1);
954
+ i0.ɵɵadvance(3);
955
+ i0.ɵɵconditional(ctx.isLoading ? 26 : -1);
950
956
  i0.ɵɵadvance();
951
- i0.ɵɵconditional(ctx.error && !ctx.isLoading ? 28 : -1);
957
+ i0.ɵɵconditional(ctx.error && !ctx.isLoading ? 27 : -1);
952
958
  i0.ɵɵadvance();
953
- i0.ɵɵconditional(!ctx.isLoading && !ctx.error ? 29 : -1);
959
+ i0.ɵɵconditional(!ctx.isLoading && !ctx.error ? 28 : -1);
954
960
  i0.ɵɵadvance();
955
- i0.ɵɵconditional(ctx.detailPanelVisible ? 30 : -1);
961
+ i0.ɵɵconditional(ctx.detailPanelVisible ? 29 : -1);
956
962
  i0.ɵɵadvance();
957
963
  i0.ɵɵclassProp("visible", ctx.detailPanelVisible);
958
964
  i0.ɵɵadvance();
959
- i0.ɵɵconditional(ctx.selectedConfig ? 32 : -1);
960
- } }, dependencies: [i2.NgClass, i3.SplitterComponent, i3.SplitterPaneComponent, i4.LoadingComponent, i5.SystemConfigFilterPanelComponent], styles: ["\n\n\n\n\n\n\n.system-configuration-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n\n\n\n\n.dashboard-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.config-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.control-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n.configurations-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 24px;\n background: transparent;\n}\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 400px;\n}\n\n\n\n\n\n.error-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.error-message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 24px;\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 12px;\n color: var(--mj-status-error);\n font-size: 15px;\n font-weight: 500;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 80px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 72px;\n color: var(--mj-border-strong);\n margin-bottom: 24px;\n display: block;\n opacity: 0.8;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 22px;\n font-weight: 600;\n margin: 0 0 12px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 28px;\n color: var(--mj-text-muted);\n}\n\n\n\n\n\n.configurations-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));\n gap: 24px;\n}\n\n\n\n\n\n.config-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.config-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.config-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.config-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.config-card.expanded[_ngcontent-%COMP%] {\n box-shadow: 0 12px 40px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.expanded[_ngcontent-%COMP%]::before {\n opacity: 1;\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-border-default);\n transition: background 0.2s ease;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.config-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.config-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.config-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.config-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.config-name[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: -0.02em;\n}\n\n.config-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n align-items: center;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n transition: all 0.2s ease;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-preview[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, black);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-inactive[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-strong);\n}\n\n.status-badge.status-deprecated[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, var(--mj-bg-surface));\n}\n\n\n\n.default-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-accent);\n}\n\n.default-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s ease;\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 24px 20px 24px;\n}\n\n.config-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.config-description.text-muted[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n\n\n.config-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n\n\n.prompts-section[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.prompt-links[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.prompt-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.prompt-link[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n transform: translateX(4px);\n}\n\n.prompt-link-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\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 color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.prompt-link-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.prompt-link-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.prompt-link-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.prompt-link-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.prompt-link[_ngcontent-%COMP%]:hover .prompt-link-arrow[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n transform: translateX(4px);\n}\n\n.no-prompt[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n}\n\n\n\n.params-section[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n.params-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.param-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.param-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.param-type-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.param-type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.param-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-type[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.param-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.no-params[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n text-align: center;\n}\n\n\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n padding: 16px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 10px;\n justify-content: flex-end;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.action-btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.action-btn-warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 80%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n color: color-mix(in srgb, var(--mj-status-warning) 60%, black);\n}\n\n.action-btn-warning[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-warning);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n.action-btn-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n}\n\n.action-btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n}\n\n\n\n\n\n.configurations-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.configurations-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.configurations-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 14px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:last-child {\n cursor: default;\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:last-child:hover {\n background: transparent;\n color: var(--mj-text-secondary);\n}\n\n.configurations-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.configurations-table[_ngcontent-%COMP%] th.sorted.desc[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n.configurations-table[_ngcontent-%COMP%] .sort-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.configurations-table[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0;\n transition: all 0.2s ease;\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n opacity: 0.5;\n}\n\n.configurations-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n.configurations-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background 0.2s ease;\n}\n\n.configurations-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.configurations-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.configurations-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.config-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.config-icon-small[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.config-icon-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.config-name-text[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-description-small[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n max-width: 300px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.table-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.action-btn-small[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.action-btn-small[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .configurations-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n }\n}\n\n@media (max-width: 768px) {\n .dashboard-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-info[_ngcontent-%COMP%] {\n justify-content: space-between;\n flex-wrap: wrap;\n }\n\n .header-controls[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n\n .configurations-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .config-stats[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .config-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n }\n\n .config-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\nkendo-splitter[_ngcontent-%COMP%] {\n background: transparent;\n}\n\n[_nghost-%COMP%] .k-splitter {\n border: none;\n background: transparent;\n}\n\n[_nghost-%COMP%] .k-splitbar {\n background: var(--mj-border-default);\n width: 6px;\n}\n\n[_nghost-%COMP%] .k-splitbar:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n[_nghost-%COMP%] .k-pane {\n overflow: hidden;\n}\n\n\n\n\n\n\n.detail-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.25s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n}\n\n\n\n.detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-title-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge.default[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.feature-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-grid.single-column[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n font-weight: 500;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.detail-params-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-param-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface);\n padding: 4px 10px;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.params-more[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n text-align: center;\n padding: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n\n\n.detail-panel-actions[_ngcontent-%COMP%] {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n@media (max-width: 520px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n right: -100%;\n }\n\n .detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] });
965
+ i0.ɵɵconditional(ctx.selectedConfig ? 31 : -1);
966
+ } }, dependencies: [i2.NgClass, i3.SplitComponent, i3.SplitAreaComponent, i4.LoadingComponent, i5.SystemConfigFilterPanelComponent], styles: ["\n\n\n\n\n\n\n.system-configuration-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n\n\n\n\n.dashboard-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.config-count[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n\n\n.view-toggle[_ngcontent-%COMP%] {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn[_ngcontent-%COMP%]:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.control-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n\n\n\n\n.main-content[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter[_ngcontent-%COMP%] {\n flex: 1;\n min-height: 0;\n}\n\n.configurations-content[_ngcontent-%COMP%] {\n height: 100%;\n overflow-y: auto;\n padding: 24px;\n background: transparent;\n}\n\n\n\n\n\n.loading-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 400px;\n}\n\n\n\n\n\n.error-container[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.error-message[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 24px;\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 12px;\n color: var(--mj-status-error);\n font-size: 15px;\n font-weight: 500;\n}\n\n.error-message[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n}\n\n\n\n\n\n.empty-state[_ngcontent-%COMP%] {\n text-align: center;\n padding: 80px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 72px;\n color: var(--mj-border-strong);\n margin-bottom: 24px;\n display: block;\n opacity: 0.8;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 22px;\n font-weight: 600;\n margin: 0 0 12px 0;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 28px;\n color: var(--mj-text-muted);\n}\n\n\n\n\n\n.configurations-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));\n gap: 24px;\n}\n\n\n\n\n\n.config-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.config-card[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.config-card[_ngcontent-%COMP%]:hover {\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.config-card[_ngcontent-%COMP%]:hover::before {\n opacity: 1;\n}\n\n.config-card.expanded[_ngcontent-%COMP%] {\n box-shadow: 0 12px 40px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.expanded[_ngcontent-%COMP%]::before {\n opacity: 1;\n}\n\n\n\n.card-header[_ngcontent-%COMP%] {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-border-default);\n transition: background 0.2s ease;\n}\n\n.card-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.config-info[_ngcontent-%COMP%] {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.config-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.config-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.config-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.config-name[_ngcontent-%COMP%] {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: -0.02em;\n}\n\n.config-meta[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n align-items: center;\n}\n\n\n\n.status-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n transition: all 0.2s ease;\n}\n\n.status-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.status-badge.status-active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-preview[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, black);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-inactive[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-strong);\n}\n\n.status-badge.status-deprecated[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, var(--mj-bg-surface));\n}\n\n\n\n.default-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-accent);\n}\n\n.default-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n\n\n.expand-icon[_ngcontent-%COMP%] {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s ease;\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon[_ngcontent-%COMP%]:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.expand-icon.rotated[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n\n\n.card-body[_ngcontent-%COMP%] {\n padding: 0 24px 20px 24px;\n}\n\n.config-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.config-description.text-muted[_ngcontent-%COMP%] {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n\n\n\n\n.expanded-content[_ngcontent-%COMP%] {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: _ngcontent-%COMP%_slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes _ngcontent-%COMP%_slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n\n\n.config-stats[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n\n\n.prompts-section[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.prompt-links[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.prompt-link[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.prompt-link[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n transform: translateX(4px);\n}\n\n.prompt-link-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 8px;\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 color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.prompt-link-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 14px;\n}\n\n.prompt-link-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.prompt-link-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.prompt-link-arrow[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.prompt-link[_ngcontent-%COMP%]:hover .prompt-link-arrow[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n transform: translateX(4px);\n}\n\n.no-prompt[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n}\n\n\n\n.params-section[_ngcontent-%COMP%] {\n margin-top: 20px;\n}\n\n.params-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.param-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.param-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.param-type-icon[_ngcontent-%COMP%] {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.param-type-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n.param-details[_ngcontent-%COMP%] {\n flex: 1;\n min-width: 0;\n}\n\n.param-name[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-type[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.param-value[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.no-params[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n text-align: center;\n}\n\n\n\n\n\n.card-actions[_ngcontent-%COMP%] {\n padding: 16px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 10px;\n justify-content: flex-end;\n}\n\n.action-btn[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.action-btn-primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.action-btn-warning[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 80%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n color: color-mix(in srgb, var(--mj-status-warning) 60%, black);\n}\n\n.action-btn-warning[_ngcontent-%COMP%]:hover {\n background: var(--mj-status-warning);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n.action-btn-danger[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n}\n\n.action-btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n}\n\n\n\n\n\n.configurations-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.configurations-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.configurations-table[_ngcontent-%COMP%] thead[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n padding: 14px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:last-child {\n cursor: default;\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:last-child:hover {\n background: transparent;\n color: var(--mj-text-secondary);\n}\n\n.configurations-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.configurations-table[_ngcontent-%COMP%] th.sorted.desc[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n transform: rotate(180deg);\n}\n\n.configurations-table[_ngcontent-%COMP%] .sort-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.configurations-table[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n font-size: 10px;\n opacity: 0;\n transition: all 0.2s ease;\n}\n\n.configurations-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%]:hover .sort-icon[_ngcontent-%COMP%] {\n opacity: 0.5;\n}\n\n.configurations-table[_ngcontent-%COMP%] th.sorted[_ngcontent-%COMP%] .sort-icon[_ngcontent-%COMP%] {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n.configurations-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%] {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background 0.2s ease;\n}\n\n.configurations-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.configurations-table[_ngcontent-%COMP%] tbody[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.configurations-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.config-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.config-icon-small[_ngcontent-%COMP%] {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.config-icon-small[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.config-name-text[_ngcontent-%COMP%] {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-description-small[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n max-width: 300px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.table-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.action-btn-small[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.action-btn-small[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-small.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n\n\n\n\n@media (max-width: 1024px) {\n .configurations-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n }\n}\n\n@media (max-width: 768px) {\n .dashboard-header[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-info[_ngcontent-%COMP%] {\n justify-content: space-between;\n flex-wrap: wrap;\n }\n\n .header-controls[_ngcontent-%COMP%] {\n justify-content: space-between;\n }\n\n .configurations-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .config-stats[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .card-header[_ngcontent-%COMP%] {\n padding: 20px;\n }\n\n .config-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n }\n\n .config-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n }\n\n .card-actions[_ngcontent-%COMP%] {\n flex-wrap: wrap;\n }\n}\n\n\n\n\n\nas-split[_ngcontent-%COMP%] {\n background: transparent;\n}\n\n\n\n\n\n\n.detail-panel-overlay[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: _ngcontent-%COMP%_fadeIn 0.25s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel[_ngcontent-%COMP%] {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n}\n\n\n\n.detail-panel-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-title-info[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n\n\n.detail-panel-content[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.detail-section[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge.default[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.feature-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 11px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-grid.single-column[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n}\n\n.detail-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value[_ngcontent-%COMP%] .muted[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-style: italic;\n font-weight: 500;\n}\n\n.detail-value[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 13px;\n}\n\n\n\n.detail-params-list[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-param-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-info[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-info[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.detail-param-item[_ngcontent-%COMP%] .param-value[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface);\n padding: 4px 10px;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.params-more[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n text-align: center;\n padding: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n\n\n.detail-panel-actions[_ngcontent-%COMP%] {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn[_ngcontent-%COMP%] {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary[_ngcontent-%COMP%]:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n\n\n@media (max-width: 520px) {\n .detail-panel[_ngcontent-%COMP%] {\n width: 100%;\n right: -100%;\n }\n\n .detail-panel.visible[_ngcontent-%COMP%] {\n right: 0;\n }\n\n .detail-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"] });
961
967
  };
962
968
  SystemConfigurationComponent = __decorate([
963
969
  RegisterClass(BaseResourceComponent, 'AIConfigResource')
@@ -965,7 +971,7 @@ SystemConfigurationComponent = __decorate([
965
971
  export { SystemConfigurationComponent };
966
972
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(SystemConfigurationComponent, [{
967
973
  type: Component,
968
- args: [{ standalone: false, selector: 'app-system-configuration', template: "<div class=\"system-configuration-container\">\n <!-- Header -->\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <h2 class=\"dashboard-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n AI Configuration\n </h2>\n <button\n type=\"button\"\n class=\"filter-toggle-btn\"\n (click)=\"toggleFilterPanel()\"\n title=\"Toggle Filters\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (filterPanelVisible) {\n Hide Filters\n } @else {\n Show Filters\n }\n </button>\n <span class=\"config-count\">\n {{ filteredConfigurations.length }} of {{ configurations.length }} configurations\n </span>\n </div>\n\n <div class=\"header-controls\">\n <!-- View Toggle -->\n <div class=\"view-toggle\">\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-grid-2\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"setViewMode('list')\"\n title=\"List View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"control-btn\"\n (click)=\"loadData()\"\n [disabled]=\"isLoading\"\n title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\"></i>\n Refresh\n </button>\n </div>\n </div>\n\n <!-- Main Content with Splitter -->\n <div class=\"main-content\">\n <kendo-splitter\n class=\"main-splitter\"\n orientation=\"horizontal\">\n\n <!-- Filter Panel (Left) -->\n <kendo-splitter-pane\n [size]=\"filterPanelVisible ? '320px' : '0px'\"\n [collapsible]=\"false\"\n [resizable]=\"filterPanelVisible\"\n [scrollable]=\"false\"\n [hidden]=\"!filterPanelVisible\">\n <mj-system-config-filter-panel\n [configurations]=\"configurations\"\n [filteredConfigurations]=\"filteredConfigurations\"\n [filters]=\"currentFilters\"\n (filtersChange)=\"onFiltersChange($event)\"\n (filterChange)=\"onFilterChange()\"\n (resetFilters)=\"onResetFilters()\"\n (closePanel)=\"toggleFilterPanel()\">\n </mj-system-config-filter-panel>\n </kendo-splitter-pane>\n\n <!-- Configurations List Panel -->\n <kendo-splitter-pane\n [resizable]=\"true\"\n [scrollable]=\"false\">\n <div class=\"configurations-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading AI configurations...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\">\n <p class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </p>\n </div>\n }\n\n <!-- Configurations Content -->\n @if (!isLoading && !error) {\n @if (filteredConfigurations.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h3>No configurations found</h3>\n <p>No AI configurations match your current filters. Try adjusting your search criteria or create a new configuration.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"configurations-grid\">\n @for (config of filteredConfigurations; track config.ID) {\n <div class=\"config-card\" [class.expanded]=\"config.isExpanded\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleExpanded(config)\">\n <div class=\"config-info\">\n <div class=\"config-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"config-details\">\n <h4 class=\"config-name\">{{ config.Name }}</h4>\n <div class=\"config-meta\">\n @if (config.IsDefault) {\n <span class=\"default-badge\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </div>\n </div>\n </div>\n\n <i class=\"fa-solid fa-chevron-down expand-icon\"\n [class.rotated]=\"config.isExpanded\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (config.Description) {\n <p class=\"config-description\">{{ config.Description }}</p>\n } @else {\n <p class=\"config-description text-muted\">No description provided</p>\n }\n\n <!-- Expanded Content -->\n @if (config.isExpanded) {\n <div class=\"expanded-content\">\n <!-- Stats Grid -->\n <div class=\"config-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parameters</span>\n <span class=\"stat-value\">{{ config.params?.length || 0 }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Created</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Updated</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"prompts-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h5>\n <div class=\"prompt-links\">\n @if (config.compressionPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextCompressionID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-compress\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Compression</span>\n <span class=\"prompt-link-name\">{{ config.compressionPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No compression prompt configured</div>\n }\n\n @if (config.summarizationPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextSummarizationID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-file-lines\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Summarization</span>\n <span class=\"prompt-link-name\">{{ config.summarizationPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No summarization prompt configured</div>\n }\n </div>\n </div>\n\n <!-- Configuration Parameters -->\n @if (config.params && config.params.length > 0) {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"params-grid\">\n @for (param of config.params; track param.ID) {\n <div class=\"param-item\" (click)=\"onOpenParam(param); $event.stopPropagation()\">\n <div class=\"param-info\">\n <div class=\"param-type-icon\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n </div>\n <div class=\"param-details\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <span class=\"param-type\">{{ param.Type }}</span>\n </div>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"no-params\">No parameters configured</div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showConfigDetails(config, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n Configure\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"configurations-list\">\n <table class=\"configurations-table\">\n <thead>\n <tr>\n <th (click)=\"sortBy('Name')\"\n [class.sorted]=\"sortColumn === 'Name'\"\n [class.desc]=\"sortColumn === 'Name' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Configuration\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Status')\"\n [class.sorted]=\"sortColumn === 'Status'\"\n [class.desc]=\"sortColumn === 'Status' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Status\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Parameters')\"\n [class.sorted]=\"sortColumn === 'Parameters'\"\n [class.desc]=\"sortColumn === 'Parameters' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Parameters\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Updated')\"\n [class.sorted]=\"sortColumn === 'Updated'\"\n [class.desc]=\"sortColumn === 'Updated' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Updated\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (config of filteredConfigurations; track config.ID) {\n <tr>\n <td>\n <div class=\"config-name-cell\">\n <div class=\"config-icon-small\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div>\n <div class=\"config-name-text\">\n {{ config.Name }}\n @if (config.IsDefault) {\n <span class=\"default-badge\" style=\"margin-left: 8px;\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n </div>\n @if (config.Description) {\n <div class=\"config-description-small\">{{ config.Description }}</div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </td>\n <td>{{ config.params?.length || 0 }}</td>\n <td>{{ formatDate(config.__mj_UpdatedAt) }}</td>\n <td>\n <div class=\"table-actions\">\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showConfigDetails(config)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n }\n }\n </div>\n </kendo-splitter-pane>\n </kendo-splitter>\n </div>\n\n <!-- Detail Panel Overlay -->\n @if (detailPanelVisible) {\n <div class=\"detail-panel-overlay\" (click)=\"closeDetailPanel()\"></div>\n }\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" [class.visible]=\"detailPanelVisible\">\n @if (selectedConfig) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedConfig.Name }}</h3>\n <span class=\"detail-subtitle\">AI Configuration</span>\n </div>\n </div>\n <button class=\"detail-panel-close\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Panel Content -->\n <div class=\"detail-panel-content\">\n <!-- Status Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(selectedConfig.Status)\">\n <i [class]=\"getStatusIcon(selectedConfig.Status)\"></i>\n {{ selectedConfig.Status }}\n </span>\n @if (selectedConfig.IsDefault) {\n <span class=\"feature-badge default\">\n <i class=\"fa-solid fa-star\"></i>\n Default Configuration\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedConfig.Description) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h4>\n <p class=\"detail-description\">{{ selectedConfig.Description }}</p>\n </div>\n }\n\n <!-- Configuration Stats -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n Overview\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parameters</span>\n <span class=\"detail-value\">{{ selectedConfig.params?.length || 0 }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\">{{ selectedConfig.Status }}</span>\n </div>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h4>\n <div class=\"detail-grid single-column\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedConfig.compressionPrompt) {\n {{ selectedConfig.compressionPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Summarization</span>\n <span class=\"detail-value\">\n @if (selectedConfig.summarizationPrompt) {\n {{ selectedConfig.summarizationPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n </div>\n </div>\n\n <!-- Parameters Preview -->\n @if (selectedConfig.params && selectedConfig.params.length > 0) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Parameters ({{ selectedConfig.params.length }})\n </h4>\n <div class=\"detail-params-list\">\n @for (param of selectedConfig.params.slice(0, 5); track param.ID) {\n <div class=\"detail-param-item\">\n <div class=\"param-info\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n <span class=\"param-name\">{{ param.Name }}</span>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n @if (selectedConfig.params.length > 5) {\n <div class=\"params-more\">\n +{{ selectedConfig.params.length - 5 }} more parameters\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Timestamps -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-clock\"></i>\n Timestamps\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openConfigFromPanel()\">\n <i class=\"fa-solid fa-edit\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</div>\n", styles: ["/* AI Configuration Dashboard - World-Class Design */\n\n/* ============================================================================\n CONTAINER & LAYOUT\n ============================================================================ */\n.system-configuration-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n/* ============================================================================\n HEADER\n ============================================================================ */\n.dashboard-header {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title i {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.config-count {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn i {\n font-size: 14px;\n}\n\n.control-btn.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* ============================================================================\n MAIN CONTENT AREA\n ============================================================================ */\n.main-content {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter {\n flex: 1;\n min-height: 0;\n}\n\n.configurations-content {\n height: 100%;\n overflow-y: auto;\n padding: 24px;\n background: transparent;\n}\n\n/* ============================================================================\n LOADING STATE\n ============================================================================ */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 400px;\n}\n\n/* ============================================================================\n ERROR STATE\n ============================================================================ */\n.error-container {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.error-message {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 24px;\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 12px;\n color: var(--mj-status-error);\n font-size: 15px;\n font-weight: 500;\n}\n\n.error-message i {\n font-size: 20px;\n}\n\n/* ============================================================================\n EMPTY STATE\n ============================================================================ */\n.empty-state {\n text-align: center;\n padding: 80px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 72px;\n color: var(--mj-border-strong);\n margin-bottom: 24px;\n display: block;\n opacity: 0.8;\n}\n\n.empty-state h3 {\n color: var(--mj-text-secondary);\n font-size: 22px;\n font-weight: 600;\n margin: 0 0 12px 0;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 28px;\n color: var(--mj-text-muted);\n}\n\n/* ============================================================================\n CONFIGURATION GRID\n ============================================================================ */\n.configurations-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));\n gap: 24px;\n}\n\n/* ============================================================================\n CONFIGURATION CARD\n ============================================================================ */\n.config-card {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.config-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.config-card:hover {\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.config-card:hover::before {\n opacity: 1;\n}\n\n.config-card.expanded {\n box-shadow: 0 12px 40px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.expanded::before {\n opacity: 1;\n}\n\n/* Card Header */\n.card-header {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-border-default);\n transition: background 0.2s ease;\n}\n\n.card-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.config-info {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.config-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.config-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.config-details {\n flex: 1;\n min-width: 0;\n}\n\n.config-name {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: -0.02em;\n}\n\n.config-meta {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n align-items: center;\n}\n\n/* Status Badge */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n transition: all 0.2s ease;\n}\n\n.status-badge i {\n font-size: 11px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-preview {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, black);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-inactive {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-strong);\n}\n\n.status-badge.status-deprecated {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, var(--mj-bg-surface));\n}\n\n/* Default Badge */\n.default-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-accent);\n}\n\n.default-badge i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n/* Expand Icon */\n.expand-icon {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s ease;\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.expand-icon.rotated {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 24px 20px 24px;\n}\n\n.config-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.config-description.text-muted {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n/* ============================================================================\n EXPANDED CONTENT\n ============================================================================ */\n.expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Stats Grid */\n.config-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.stat-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n/* Prompts Section */\n.prompts-section {\n margin-top: 20px;\n}\n\n.section-title {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.prompt-links {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.prompt-link {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.prompt-link:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n transform: translateX(4px);\n}\n\n.prompt-link-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\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 color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.prompt-link-icon i {\n font-size: 14px;\n}\n\n.prompt-link-details {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.prompt-link-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.prompt-link-arrow {\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.prompt-link:hover .prompt-link-arrow {\n color: var(--mj-brand-primary);\n transform: translateX(4px);\n}\n\n.no-prompt {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n}\n\n/* Parameters Section */\n.params-section {\n margin-top: 20px;\n}\n\n.params-grid {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.param-item:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.param-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.param-type-icon {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.param-type-icon i {\n font-size: 13px;\n}\n\n.param-details {\n flex: 1;\n min-width: 0;\n}\n\n.param-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-type {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.param-value {\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.no-params {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n text-align: center;\n}\n\n/* ============================================================================\n CARD ACTIONS\n ============================================================================ */\n.card-actions {\n padding: 16px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 10px;\n justify-content: flex-end;\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n.action-btn-primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.action-btn-warning {\n background: color-mix(in srgb, var(--mj-status-warning) 80%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n color: color-mix(in srgb, var(--mj-status-warning) 60%, black);\n}\n\n.action-btn-warning:hover {\n background: var(--mj-status-warning);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n.action-btn-danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n}\n\n.action-btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n}\n\n/* ============================================================================\n LIST VIEW\n ============================================================================ */\n.configurations-list {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.configurations-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.configurations-table thead {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.configurations-table th {\n padding: 14px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.configurations-table th:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.configurations-table th:last-child {\n cursor: default;\n}\n\n.configurations-table th:last-child:hover {\n background: transparent;\n color: var(--mj-text-secondary);\n}\n\n.configurations-table th.sorted {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.configurations-table th.sorted.desc .sort-icon {\n transform: rotate(180deg);\n}\n\n.configurations-table .sort-header {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.configurations-table .sort-icon {\n font-size: 10px;\n opacity: 0;\n transition: all 0.2s ease;\n}\n\n.configurations-table th:hover .sort-icon {\n opacity: 0.5;\n}\n\n.configurations-table th.sorted .sort-icon {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n.configurations-table tbody tr {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background 0.2s ease;\n}\n\n.configurations-table tbody tr:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.configurations-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.configurations-table td {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.config-name-cell {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.config-icon-small {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.config-icon-small i {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.config-name-text {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-description-small {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n max-width: 300px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.table-actions {\n display: flex;\n gap: 8px;\n}\n\n.action-btn-small {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.action-btn-small:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn-small.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-small.primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* ============================================================================\n RESPONSIVE DESIGN\n ============================================================================ */\n@media (max-width: 1024px) {\n .configurations-grid {\n grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n }\n}\n\n@media (max-width: 768px) {\n .dashboard-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-info {\n justify-content: space-between;\n flex-wrap: wrap;\n }\n\n .header-controls {\n justify-content: space-between;\n }\n\n .configurations-grid {\n grid-template-columns: 1fr;\n }\n\n .config-stats {\n grid-template-columns: 1fr;\n }\n\n .card-header {\n padding: 20px;\n }\n\n .config-icon {\n width: 48px;\n height: 48px;\n }\n\n .config-icon i {\n font-size: 20px;\n }\n\n .card-actions {\n flex-wrap: wrap;\n }\n}\n\n/* ============================================================================\n SPLITTER CUSTOMIZATION\n ============================================================================ */\nkendo-splitter {\n background: transparent;\n}\n\n:host ::ng-deep .k-splitter {\n border: none;\n background: transparent;\n}\n\n:host ::ng-deep .k-splitbar {\n background: var(--mj-border-default);\n width: 6px;\n}\n\n:host ::ng-deep .k-splitbar:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n:host ::ng-deep .k-pane {\n overflow: hidden;\n}\n\n/* ============================================================================\n DETAIL PANEL - SLIDE-IN OVERLAY\n ============================================================================ */\n\n.detail-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: fadeIn 0.25s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible {\n right: 0;\n}\n\n/* Detail Panel Header */\n.detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-title-info h3 {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n/* Detail Panel Content */\n.detail-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section {\n margin-bottom: 28px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge.default {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.feature-badge i {\n font-size: 11px;\n}\n\n.detail-section-title {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-grid.single-column {\n grid-template-columns: 1fr;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value .muted {\n color: var(--mj-text-disabled);\n font-style: italic;\n font-weight: 500;\n}\n\n.detail-value i {\n font-size: 13px;\n}\n\n/* Detail Params List */\n.detail-params-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-param-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-param-item .param-info {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.detail-param-item .param-info i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-param-item .param-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.detail-param-item .param-value {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface);\n padding: 4px 10px;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.params-more {\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n text-align: center;\n padding: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n/* Detail Panel Actions */\n.detail-panel-actions {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.detail-action-btn.primary {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail Panel Responsive */\n@media (max-width: 520px) {\n .detail-panel {\n width: 100%;\n right: -100%;\n }\n\n .detail-panel.visible {\n right: 0;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n}\n"] }]
974
+ args: [{ standalone: false, selector: 'app-system-configuration', template: "<div class=\"system-configuration-container\">\n <!-- Header -->\n <div class=\"dashboard-header\">\n <div class=\"header-info\">\n <h2 class=\"dashboard-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n AI Configuration\n </h2>\n <button\n type=\"button\"\n class=\"filter-toggle-btn\"\n (click)=\"toggleFilterPanel()\"\n title=\"Toggle Filters\">\n <i class=\"fa-solid fa-filter\"></i>\n @if (filterPanelVisible) {\n Hide Filters\n } @else {\n Show Filters\n }\n </button>\n <span class=\"config-count\">\n {{ filteredConfigurations.length }} of {{ configurations.length }} configurations\n </span>\n </div>\n\n <div class=\"header-controls\">\n <!-- View Toggle -->\n <div class=\"view-toggle\">\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'grid'\"\n (click)=\"setViewMode('grid')\"\n title=\"Grid View\">\n <i class=\"fa-solid fa-grid-2\"></i>\n </button>\n <button\n type=\"button\"\n class=\"view-btn\"\n [class.active]=\"viewMode === 'list'\"\n (click)=\"setViewMode('list')\"\n title=\"List View\">\n <i class=\"fa-solid fa-list\"></i>\n </button>\n </div>\n\n <button\n type=\"button\"\n class=\"control-btn\"\n (click)=\"loadData()\"\n [disabled]=\"isLoading\"\n title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\" [class.fa-spin]=\"isLoading\"></i>\n Refresh\n </button>\n </div>\n </div>\n\n <!-- Main Content with Splitter -->\n <div class=\"main-content\">\n <as-split direction=\"horizontal\" class=\"main-splitter\">\n\n <!-- Filter Panel (Left) -->\n @if (filterPanelVisible) {\n <as-split-area [size]=\"20\" [minSize]=\"15\" [maxSize]=\"30\">\n <mj-system-config-filter-panel\n [configurations]=\"configurations\"\n [filteredConfigurations]=\"filteredConfigurations\"\n [filters]=\"currentFilters\"\n (filtersChange)=\"onFiltersChange($event)\"\n (filterChange)=\"onFilterChange()\"\n (resetFilters)=\"onResetFilters()\"\n (closePanel)=\"toggleFilterPanel()\">\n </mj-system-config-filter-panel>\n </as-split-area>\n }\n\n <!-- Configurations List Panel -->\n <as-split-area>\n <div class=\"configurations-content\">\n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-container\">\n <mj-loading text=\"Loading AI configurations...\" size=\"large\"></mj-loading>\n </div>\n }\n\n <!-- Error State -->\n @if (error && !isLoading) {\n <div class=\"error-container\">\n <p class=\"error-message\">\n <i class=\"fa-solid fa-exclamation-triangle\"></i>\n {{ error }}\n </p>\n </div>\n }\n\n <!-- Configurations Content -->\n @if (!isLoading && !error) {\n @if (filteredConfigurations.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-sliders\"></i>\n <h3>No configurations found</h3>\n <p>No AI configurations match your current filters. Try adjusting your search criteria or create a new configuration.</p>\n </div>\n } @else {\n <!-- Grid View -->\n @if (viewMode === 'grid') {\n <div class=\"configurations-grid\">\n @for (config of filteredConfigurations; track config.ID) {\n <div class=\"config-card\" [class.expanded]=\"config.isExpanded\">\n <!-- Card Header -->\n <div class=\"card-header\" (click)=\"toggleExpanded(config)\">\n <div class=\"config-info\">\n <div class=\"config-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"config-details\">\n <h4 class=\"config-name\">{{ config.Name }}</h4>\n <div class=\"config-meta\">\n @if (config.IsDefault) {\n <span class=\"default-badge\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </div>\n </div>\n </div>\n\n <i class=\"fa-solid fa-chevron-down expand-icon\"\n [class.rotated]=\"config.isExpanded\"></i>\n </div>\n\n <!-- Card Body -->\n <div class=\"card-body\">\n @if (config.Description) {\n <p class=\"config-description\">{{ config.Description }}</p>\n } @else {\n <p class=\"config-description text-muted\">No description provided</p>\n }\n\n <!-- Expanded Content -->\n @if (config.isExpanded) {\n <div class=\"expanded-content\">\n <!-- Stats Grid -->\n <div class=\"config-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Parameters</span>\n <span class=\"stat-value\">{{ config.params?.length || 0 }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Created</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Updated</span>\n <span class=\"stat-value\">{{ formatDate(config.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"prompts-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h5>\n <div class=\"prompt-links\">\n @if (config.compressionPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextCompressionID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-compress\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Compression</span>\n <span class=\"prompt-link-name\">{{ config.compressionPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No compression prompt configured</div>\n }\n\n @if (config.summarizationPrompt) {\n <div class=\"prompt-link\" (click)=\"onOpenPrompt(config.DefaultPromptForContextSummarizationID!); $event.stopPropagation()\">\n <div class=\"prompt-link-info\">\n <div class=\"prompt-link-icon\">\n <i class=\"fa-solid fa-file-lines\"></i>\n </div>\n <div class=\"prompt-link-details\">\n <span class=\"prompt-link-label\">Context Summarization</span>\n <span class=\"prompt-link-name\">{{ config.summarizationPrompt.Name }}</span>\n </div>\n </div>\n <i class=\"fa-solid fa-arrow-right prompt-link-arrow\"></i>\n </div>\n } @else {\n <div class=\"no-prompt\">No summarization prompt configured</div>\n }\n </div>\n </div>\n\n <!-- Configuration Parameters -->\n @if (config.params && config.params.length > 0) {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"params-grid\">\n @for (param of config.params; track param.ID) {\n <div class=\"param-item\" (click)=\"onOpenParam(param); $event.stopPropagation()\">\n <div class=\"param-info\">\n <div class=\"param-type-icon\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n </div>\n <div class=\"param-details\">\n <span class=\"param-name\">{{ param.Name }}</span>\n <span class=\"param-type\">{{ param.Type }}</span>\n </div>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n </div>\n </div>\n } @else {\n <div class=\"params-section\">\n <h5 class=\"section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Configuration Parameters\n </h5>\n <div class=\"no-params\">No parameters configured</div>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Card Actions -->\n <div class=\"card-actions\" (click)=\"$event.stopPropagation()\">\n <button\n type=\"button\"\n class=\"action-btn\"\n (click)=\"showConfigDetails(config, $event)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n Details\n </button>\n\n <button\n type=\"button\"\n class=\"action-btn action-btn-primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n Configure\n </button>\n </div>\n </div>\n }\n </div>\n }\n\n <!-- List View -->\n @if (viewMode === 'list') {\n <div class=\"configurations-list\">\n <table class=\"configurations-table\">\n <thead>\n <tr>\n <th (click)=\"sortBy('Name')\"\n [class.sorted]=\"sortColumn === 'Name'\"\n [class.desc]=\"sortColumn === 'Name' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Configuration\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Status')\"\n [class.sorted]=\"sortColumn === 'Status'\"\n [class.desc]=\"sortColumn === 'Status' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Status\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Parameters')\"\n [class.sorted]=\"sortColumn === 'Parameters'\"\n [class.desc]=\"sortColumn === 'Parameters' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Parameters\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th (click)=\"sortBy('Updated')\"\n [class.sorted]=\"sortColumn === 'Updated'\"\n [class.desc]=\"sortColumn === 'Updated' && sortDirection === 'desc'\">\n <span class=\"sort-header\">\n Updated\n <i class=\"fa-solid fa-chevron-up sort-icon\"></i>\n </span>\n </th>\n <th>Actions</th>\n </tr>\n </thead>\n <tbody>\n @for (config of filteredConfigurations; track config.ID) {\n <tr>\n <td>\n <div class=\"config-name-cell\">\n <div class=\"config-icon-small\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div>\n <div class=\"config-name-text\">\n {{ config.Name }}\n @if (config.IsDefault) {\n <span class=\"default-badge\" style=\"margin-left: 8px;\">\n <i class=\"fa-solid fa-star\"></i>\n Default\n </span>\n }\n </div>\n @if (config.Description) {\n <div class=\"config-description-small\">{{ config.Description }}</div>\n }\n </div>\n </div>\n </td>\n <td>\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(config.Status)\">\n <i [class]=\"getStatusIcon(config.Status)\"></i>\n {{ config.Status }}\n </span>\n </td>\n <td>{{ config.params?.length || 0 }}</td>\n <td>{{ formatDate(config.__mj_UpdatedAt) }}</td>\n <td>\n <div class=\"table-actions\">\n <button\n type=\"button\"\n class=\"action-btn-small\"\n (click)=\"showConfigDetails(config)\"\n title=\"View Details\">\n <i class=\"fa-solid fa-eye\"></i>\n </button>\n <button\n type=\"button\"\n class=\"action-btn-small primary\"\n (click)=\"onOpenConfiguration(config)\">\n <i class=\"fa-solid fa-edit\"></i>\n </button>\n </div>\n </td>\n </tr>\n }\n </tbody>\n </table>\n </div>\n }\n }\n }\n </div>\n </as-split-area>\n </as-split>\n </div>\n\n <!-- Detail Panel Overlay -->\n @if (detailPanelVisible) {\n <div class=\"detail-panel-overlay\" (click)=\"closeDetailPanel()\"></div>\n }\n\n <!-- Detail Panel -->\n <div class=\"detail-panel\" [class.visible]=\"detailPanelVisible\">\n @if (selectedConfig) {\n <!-- Panel Header -->\n <div class=\"detail-panel-header\">\n <div class=\"detail-panel-title\">\n <div class=\"detail-icon\">\n <i class=\"fa-solid fa-sliders\"></i>\n </div>\n <div class=\"detail-title-info\">\n <h3>{{ selectedConfig.Name }}</h3>\n <span class=\"detail-subtitle\">AI Configuration</span>\n </div>\n </div>\n <button class=\"detail-panel-close\" (click)=\"closeDetailPanel()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n </div>\n\n <!-- Panel Content -->\n <div class=\"detail-panel-content\">\n <!-- Status Section -->\n <div class=\"detail-section\">\n <div class=\"detail-badges\">\n <span class=\"status-badge\" [ngClass]=\"getStatusClass(selectedConfig.Status)\">\n <i [class]=\"getStatusIcon(selectedConfig.Status)\"></i>\n {{ selectedConfig.Status }}\n </span>\n @if (selectedConfig.IsDefault) {\n <span class=\"feature-badge default\">\n <i class=\"fa-solid fa-star\"></i>\n Default Configuration\n </span>\n }\n </div>\n </div>\n\n <!-- Description -->\n @if (selectedConfig.Description) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-align-left\"></i>\n Description\n </h4>\n <p class=\"detail-description\">{{ selectedConfig.Description }}</p>\n </div>\n }\n\n <!-- Configuration Stats -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-chart-bar\"></i>\n Overview\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Parameters</span>\n <span class=\"detail-value\">{{ selectedConfig.params?.length || 0 }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Status</span>\n <span class=\"detail-value\">{{ selectedConfig.Status }}</span>\n </div>\n </div>\n </div>\n\n <!-- Linked Prompts -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-message-lines\"></i>\n Linked Prompts\n </h4>\n <div class=\"detail-grid single-column\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Compression</span>\n <span class=\"detail-value\">\n @if (selectedConfig.compressionPrompt) {\n {{ selectedConfig.compressionPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Context Summarization</span>\n <span class=\"detail-value\">\n @if (selectedConfig.summarizationPrompt) {\n {{ selectedConfig.summarizationPrompt.Name }}\n } @else {\n <span class=\"muted\">Not configured</span>\n }\n </span>\n </div>\n </div>\n </div>\n\n <!-- Parameters Preview -->\n @if (selectedConfig.params && selectedConfig.params.length > 0) {\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-gear\"></i>\n Parameters ({{ selectedConfig.params.length }})\n </h4>\n <div class=\"detail-params-list\">\n @for (param of selectedConfig.params.slice(0, 5); track param.ID) {\n <div class=\"detail-param-item\">\n <div class=\"param-info\">\n <i [class]=\"getParamTypeIcon(param.Type)\"></i>\n <span class=\"param-name\">{{ param.Name }}</span>\n </div>\n <span class=\"param-value\">{{ formatParamValue(param) }}</span>\n </div>\n }\n @if (selectedConfig.params.length > 5) {\n <div class=\"params-more\">\n +{{ selectedConfig.params.length - 5 }} more parameters\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Timestamps -->\n <div class=\"detail-section\">\n <h4 class=\"detail-section-title\">\n <i class=\"fa-solid fa-clock\"></i>\n Timestamps\n </h4>\n <div class=\"detail-grid\">\n <div class=\"detail-item\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_CreatedAt) }}</span>\n </div>\n <div class=\"detail-item\">\n <span class=\"detail-label\">Updated</span>\n <span class=\"detail-value\">{{ formatDate(selectedConfig.__mj_UpdatedAt) }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Panel Actions -->\n <div class=\"detail-panel-actions\">\n <button\n type=\"button\"\n class=\"detail-action-btn primary\"\n (click)=\"openConfigFromPanel()\">\n <i class=\"fa-solid fa-edit\"></i>\n Open Full Record\n </button>\n </div>\n }\n </div>\n</div>\n", styles: ["/* AI Configuration Dashboard - World-Class Design */\n\n/* ============================================================================\n CONTAINER & LAYOUT\n ============================================================================ */\n.system-configuration-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface-card);\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;\n}\n\n/* ============================================================================\n HEADER\n ============================================================================ */\n.dashboard-header {\n background: var(--mj-bg-surface);\n padding: 16px 24px;\n border-bottom: 1px solid var(--mj-border-default);\n display: flex;\n justify-content: space-between;\n align-items: center;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 10;\n}\n\n.header-info {\n display: flex;\n align-items: center;\n gap: 20px;\n}\n\n.dashboard-title {\n margin: 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.dashboard-title i {\n color: var(--mj-brand-primary);\n font-size: 22px;\n}\n\n.filter-toggle-btn {\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.filter-toggle-btn:hover {\n background: var(--mj-border-default);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);\n}\n\n.filter-toggle-btn i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.config-count {\n color: var(--mj-text-muted);\n font-size: 14px;\n font-weight: 500;\n padding: 6px 12px;\n background: var(--mj-bg-surface-card);\n border-radius: 20px;\n border: 1px solid var(--mj-border-default);\n}\n\n.header-controls {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n/* View Toggle */\n.view-toggle {\n display: flex;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n padding: 3px;\n border: 1px solid var(--mj-border-default);\n}\n\n.view-btn {\n background: transparent;\n border: none;\n padding: 8px 14px;\n border-radius: 6px;\n color: var(--mj-text-muted);\n cursor: pointer;\n transition: all 0.2s ease;\n font-size: 15px;\n}\n\n.view-btn:hover {\n color: var(--mj-text-secondary);\n}\n\n.view-btn.active {\n background: var(--mj-bg-surface);\n color: var(--mj-brand-primary);\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 10px 18px;\n border-radius: 8px;\n font-size: 14px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.control-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.control-btn i {\n font-size: 14px;\n}\n\n.control-btn.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.control-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n/* ============================================================================\n MAIN CONTENT AREA\n ============================================================================ */\n.main-content {\n flex: 1;\n min-height: 0;\n display: flex;\n flex-direction: column;\n}\n\n.main-splitter {\n flex: 1;\n min-height: 0;\n}\n\n.configurations-content {\n height: 100%;\n overflow-y: auto;\n padding: 24px;\n background: transparent;\n}\n\n/* ============================================================================\n LOADING STATE\n ============================================================================ */\n.loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n min-height: 400px;\n}\n\n/* ============================================================================\n ERROR STATE\n ============================================================================ */\n.error-container {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.error-message {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 16px 24px;\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n border-radius: 12px;\n color: var(--mj-status-error);\n font-size: 15px;\n font-weight: 500;\n}\n\n.error-message i {\n font-size: 20px;\n}\n\n/* ============================================================================\n EMPTY STATE\n ============================================================================ */\n.empty-state {\n text-align: center;\n padding: 80px 20px;\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 72px;\n color: var(--mj-border-strong);\n margin-bottom: 24px;\n display: block;\n opacity: 0.8;\n}\n\n.empty-state h3 {\n color: var(--mj-text-secondary);\n font-size: 22px;\n font-weight: 600;\n margin: 0 0 12px 0;\n}\n\n.empty-state p {\n font-size: 15px;\n line-height: 1.6;\n max-width: 400px;\n margin: 0 auto 28px;\n color: var(--mj-text-muted);\n}\n\n/* ============================================================================\n CONFIGURATION GRID\n ============================================================================ */\n.configurations-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(420px, 1fr));\n gap: 24px;\n}\n\n/* ============================================================================\n CONFIGURATION CARD\n ============================================================================ */\n.config-card {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n transition: all 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n position: relative;\n}\n\n.config-card::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n height: 4px;\n background: var(--mj-brand-primary);\n opacity: 0;\n transition: opacity 0.3s ease;\n}\n\n.config-card:hover {\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.12);\n transform: translateY(-4px);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.config-card:hover::before {\n opacity: 1;\n}\n\n.config-card.expanded {\n box-shadow: 0 12px 40px color-mix(in srgb, var(--mj-brand-primary) 15%, transparent);\n}\n\n.config-card.expanded::before {\n opacity: 1;\n}\n\n/* Card Header */\n.card-header {\n padding: 24px;\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n cursor: pointer;\n user-select: none;\n border-bottom: 1px solid var(--mj-border-default);\n transition: background 0.2s ease;\n}\n\n.card-header:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.config-info {\n display: flex;\n gap: 18px;\n flex: 1;\n}\n\n.config-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.config-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.config-details {\n flex: 1;\n min-width: 0;\n}\n\n.config-name {\n margin: 0 0 8px 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: -0.02em;\n}\n\n.config-meta {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n align-items: center;\n}\n\n/* Status Badge */\n.status-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n transition: all 0.2s ease;\n}\n\n.status-badge i {\n font-size: 11px;\n}\n\n.status-badge.status-active {\n background: color-mix(in srgb, var(--mj-status-success) 12%, var(--mj-bg-surface));\n color: var(--mj-color-success-700);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-preview {\n background: color-mix(in srgb, var(--mj-status-warning) 12%, var(--mj-bg-surface));\n color: color-mix(in srgb, var(--mj-status-warning) 70%, black);\n border: 1px solid color-mix(in srgb, var(--mj-status-warning) 40%, var(--mj-bg-surface));\n}\n\n.status-badge.status-inactive {\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-strong);\n}\n\n.status-badge.status-deprecated {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n color: var(--mj-status-error);\n border: 1px solid color-mix(in srgb, var(--mj-status-error) 35%, var(--mj-bg-surface));\n}\n\n/* Default Badge */\n.default-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 12px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border: 1px solid var(--mj-brand-accent);\n}\n\n.default-badge i {\n font-size: 11px;\n color: var(--mj-brand-primary);\n}\n\n/* Expand Icon */\n.expand-icon {\n font-size: 16px;\n color: var(--mj-text-disabled);\n transition: all 0.3s ease;\n padding: 8px;\n border-radius: 8px;\n}\n\n.expand-icon:hover {\n color: var(--mj-brand-primary);\n background: var(--mj-bg-surface-card);\n}\n\n.expand-icon.rotated {\n transform: rotate(180deg);\n color: var(--mj-brand-primary);\n}\n\n/* Card Body */\n.card-body {\n padding: 0 24px 20px 24px;\n}\n\n.config-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-muted);\n}\n\n.config-description.text-muted {\n font-style: italic;\n color: var(--mj-text-disabled);\n}\n\n/* ============================================================================\n EXPANDED CONTENT\n ============================================================================ */\n.expanded-content {\n margin-top: 20px;\n padding-top: 20px;\n border-top: 1px solid var(--mj-border-default);\n animation: slideDown 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-12px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* Stats Grid */\n.config-stats {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));\n gap: 16px;\n margin-bottom: 20px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.stat-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n}\n\n.stat-value {\n font-size: 14px;\n color: var(--mj-text-secondary);\n font-weight: 600;\n}\n\n/* Prompts Section */\n.prompts-section {\n margin-top: 20px;\n}\n\n.section-title {\n font-size: 13px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.75px;\n margin: 0 0 12px 0;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.prompt-links {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.prompt-link {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.prompt-link:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n transform: translateX(4px);\n}\n\n.prompt-link-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-icon {\n width: 36px;\n height: 36px;\n border-radius: 8px;\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 color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.prompt-link-icon i {\n font-size: 14px;\n}\n\n.prompt-link-details {\n flex: 1;\n min-width: 0;\n}\n\n.prompt-link-label {\n font-size: 11px;\n font-weight: 600;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin-bottom: 2px;\n}\n\n.prompt-link-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.prompt-link-arrow {\n color: var(--mj-text-disabled);\n font-size: 14px;\n transition: all 0.2s ease;\n}\n\n.prompt-link:hover .prompt-link-arrow {\n color: var(--mj-brand-primary);\n transform: translateX(4px);\n}\n\n.no-prompt {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n}\n\n/* Parameters Section */\n.params-section {\n margin-top: 20px;\n}\n\n.params-grid {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.param-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n border-radius: 10px;\n cursor: pointer;\n transition: all 0.2s ease;\n}\n\n.param-item:hover {\n background: var(--mj-bg-surface-card);\n border-color: color-mix(in srgb, var(--mj-brand-primary) 25%, var(--mj-bg-surface));\n}\n\n.param-info {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n min-width: 0;\n}\n\n.param-type-icon {\n width: 32px;\n height: 32px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.param-type-icon i {\n font-size: 13px;\n}\n\n.param-details {\n flex: 1;\n min-width: 0;\n}\n\n.param-name {\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.param-type {\n font-size: 12px;\n color: var(--mj-text-muted);\n margin-top: 2px;\n}\n\n.param-value {\n font-size: 13px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface-sunken);\n padding: 4px 10px;\n border-radius: 6px;\n max-width: 200px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.no-params {\n font-size: 13px;\n color: var(--mj-text-disabled);\n font-style: italic;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px dashed var(--mj-border-default);\n text-align: center;\n}\n\n/* ============================================================================\n CARD ACTIONS\n ============================================================================ */\n.card-actions {\n padding: 16px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 10px;\n justify-content: flex-end;\n}\n\n.action-btn {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 8px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.action-btn:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n transform: translateY(-1px);\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.action-btn i {\n font-size: 12px;\n}\n\n.action-btn-primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-primary:hover {\n background: var(--mj-brand-primary-hover);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 35%, transparent);\n}\n\n.action-btn-warning {\n background: color-mix(in srgb, var(--mj-status-warning) 80%, var(--mj-bg-surface));\n border-color: var(--mj-status-warning);\n color: color-mix(in srgb, var(--mj-status-warning) 60%, black);\n}\n\n.action-btn-warning:hover {\n background: var(--mj-status-warning);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-status-warning) 35%, transparent);\n}\n\n.action-btn-danger {\n color: var(--mj-status-error);\n border-color: color-mix(in srgb, var(--mj-status-error) 30%, var(--mj-bg-surface));\n}\n\n.action-btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 5%, var(--mj-bg-surface));\n border-color: var(--mj-status-error);\n}\n\n/* ============================================================================\n LIST VIEW\n ============================================================================ */\n.configurations-list {\n background: var(--mj-bg-surface);\n border-radius: 16px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);\n border: 1px solid var(--mj-border-default);\n overflow: hidden;\n}\n\n.configurations-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.configurations-table thead {\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.configurations-table th {\n padding: 14px 20px;\n text-align: left;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n cursor: pointer;\n user-select: none;\n transition: all 0.2s ease;\n}\n\n.configurations-table th:hover {\n background: var(--mj-border-default);\n color: var(--mj-brand-primary);\n}\n\n.configurations-table th:last-child {\n cursor: default;\n}\n\n.configurations-table th:last-child:hover {\n background: transparent;\n color: var(--mj-text-secondary);\n}\n\n.configurations-table th.sorted {\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.configurations-table th.sorted.desc .sort-icon {\n transform: rotate(180deg);\n}\n\n.configurations-table .sort-header {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.configurations-table .sort-icon {\n font-size: 10px;\n opacity: 0;\n transition: all 0.2s ease;\n}\n\n.configurations-table th:hover .sort-icon {\n opacity: 0.5;\n}\n\n.configurations-table th.sorted .sort-icon {\n opacity: 1;\n color: var(--mj-brand-primary);\n}\n\n.configurations-table tbody tr {\n border-bottom: 1px solid var(--mj-bg-surface-sunken);\n transition: background 0.2s ease;\n}\n\n.configurations-table tbody tr:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.configurations-table tbody tr:last-child {\n border-bottom: none;\n}\n\n.configurations-table td {\n padding: 18px 20px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n}\n\n.config-name-cell {\n display: flex;\n align-items: center;\n gap: 14px;\n}\n\n.config-icon-small {\n width: 42px;\n height: 42px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.config-icon-small i {\n color: var(--mj-text-inverse);\n font-size: 16px;\n}\n\n.config-name-text {\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.config-description-small {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-top: 4px;\n max-width: 300px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.table-actions {\n display: flex;\n gap: 8px;\n}\n\n.action-btn-small {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n padding: 6px 12px;\n border-radius: 6px;\n font-size: 12px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n\n.action-btn-small:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn-small.primary {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary-hover);\n color: var(--mj-text-inverse);\n}\n\n.action-btn-small.primary:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* ============================================================================\n RESPONSIVE DESIGN\n ============================================================================ */\n@media (max-width: 1024px) {\n .configurations-grid {\n grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));\n }\n}\n\n@media (max-width: 768px) {\n .dashboard-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-info {\n justify-content: space-between;\n flex-wrap: wrap;\n }\n\n .header-controls {\n justify-content: space-between;\n }\n\n .configurations-grid {\n grid-template-columns: 1fr;\n }\n\n .config-stats {\n grid-template-columns: 1fr;\n }\n\n .card-header {\n padding: 20px;\n }\n\n .config-icon {\n width: 48px;\n height: 48px;\n }\n\n .config-icon i {\n font-size: 20px;\n }\n\n .card-actions {\n flex-wrap: wrap;\n }\n}\n\n/* ============================================================================\n SPLITTER CUSTOMIZATION\n ============================================================================ */\nas-split {\n background: transparent;\n}\n\n/* ============================================================================\n DETAIL PANEL - SLIDE-IN OVERLAY\n ============================================================================ */\n\n.detail-panel-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 1000;\n animation: fadeIn 0.25s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n.detail-panel {\n position: fixed;\n top: 0;\n right: -480px;\n width: 480px;\n height: 100vh;\n background: var(--mj-bg-surface);\n box-shadow: -8px 0 32px rgba(0, 0, 0, 0.15);\n z-index: 1001;\n display: flex;\n flex-direction: column;\n transition: right 0.35s cubic-bezier(0.4, 0, 0.2, 1);\n overflow: hidden;\n}\n\n.detail-panel.visible {\n right: 0;\n}\n\n/* Detail Panel Header */\n.detail-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n\n.detail-panel-title {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.detail-icon {\n width: 56px;\n height: 56px;\n border-radius: 14px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n background: var(--mj-brand-primary);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-icon i {\n color: var(--mj-text-inverse);\n font-size: 24px;\n}\n\n.detail-title-info h3 {\n margin: 0 0 4px 0;\n font-size: 20px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.detail-subtitle {\n font-size: 13px;\n color: var(--mj-text-muted);\n font-weight: 500;\n}\n\n.detail-panel-close {\n background: var(--mj-bg-surface);\n border: 1px solid var(--mj-border-default);\n width: 40px;\n height: 40px;\n border-radius: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: all 0.2s ease;\n color: var(--mj-text-muted);\n}\n\n.detail-panel-close:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n color: var(--mj-text-primary);\n}\n\n/* Detail Panel Content */\n.detail-panel-content {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.detail-section {\n margin-bottom: 28px;\n}\n\n.detail-section:last-child {\n margin-bottom: 0;\n}\n\n.detail-badges {\n display: flex;\n gap: 10px;\n flex-wrap: wrap;\n}\n\n.feature-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 6px 14px;\n border-radius: 20px;\n font-size: 12px;\n font-weight: 600;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n color: var(--mj-brand-primary-hover);\n}\n\n.feature-badge.default {\n background: color-mix(in srgb, var(--mj-brand-primary) 12%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n}\n\n.feature-badge i {\n font-size: 11px;\n}\n\n.detail-section-title {\n margin: 0 0 16px 0;\n font-size: 12px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-section-title i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-description {\n margin: 0;\n font-size: 14px;\n line-height: 1.7;\n color: var(--mj-text-secondary);\n}\n\n.detail-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 16px;\n}\n\n.detail-grid.single-column {\n grid-template-columns: 1fr;\n}\n\n.detail-item {\n display: flex;\n flex-direction: column;\n gap: 6px;\n padding: 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-label {\n font-size: 11px;\n font-weight: 700;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n.detail-value .muted {\n color: var(--mj-text-disabled);\n font-style: italic;\n font-weight: 500;\n}\n\n.detail-value i {\n font-size: 13px;\n}\n\n/* Detail Params List */\n.detail-params-list {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.detail-param-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n background: var(--mj-bg-surface-card);\n border-radius: 10px;\n border: 1px solid var(--mj-border-default);\n}\n\n.detail-param-item .param-info {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.detail-param-item .param-info i {\n color: var(--mj-brand-primary);\n font-size: 14px;\n}\n\n.detail-param-item .param-name {\n font-size: 13px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.detail-param-item .param-value {\n font-size: 12px;\n color: var(--mj-text-secondary);\n font-family: 'SF Mono', Monaco, 'Consolas', monospace;\n background: var(--mj-bg-surface);\n padding: 4px 10px;\n border-radius: 6px;\n border: 1px solid var(--mj-border-default);\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.params-more {\n font-size: 12px;\n color: var(--mj-brand-primary);\n font-weight: 600;\n text-align: center;\n padding: 10px;\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n border-radius: 8px;\n}\n\n/* Detail Panel Actions */\n.detail-panel-actions {\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 12px;\n flex-shrink: 0;\n}\n\n.detail-action-btn {\n flex: 1;\n padding: 14px 20px;\n border-radius: 12px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.detail-action-btn.secondary {\n background: var(--mj-bg-surface);\n border: 2px solid var(--mj-border-default);\n color: var(--mj-text-secondary);\n}\n\n.detail-action-btn.secondary:hover {\n border-color: var(--mj-brand-primary);\n color: var(--mj-brand-primary);\n background: color-mix(in srgb, var(--mj-brand-primary) 8%, var(--mj-bg-surface));\n}\n\n.detail-action-btn.primary {\n background: var(--mj-brand-primary);\n border: 2px solid transparent;\n color: var(--mj-text-inverse);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n}\n\n.detail-action-btn.primary:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 6px 16px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n}\n\n/* Detail Panel Responsive */\n@media (max-width: 520px) {\n .detail-panel {\n width: 100%;\n right: -100%;\n }\n\n .detail-panel.visible {\n right: 0;\n }\n\n .detail-grid {\n grid-template-columns: 1fr;\n }\n}\n"] }]
969
975
  }], () => [{ type: i1.NavigationService }, { type: i0.ChangeDetectorRef }], null); })();
970
976
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SystemConfigurationComponent, { className: "SystemConfigurationComponent", filePath: "src/AI/components/system/system-configuration.component.ts", lineNumber: 32 }); })();
971
977
  //# sourceMappingURL=system-configuration.component.js.map